Compare commits

...
218 Commits
Author SHA1 Message Date
mattieserver 78b8a5ae97 v3.7.0 (#371) 2023-08-31 13:48:01 +02:00
mattieserver 71e4807cb1 prepare for netbox v3.6.0 release (#366)
* prepare for netbox v3.6.0 release

* updated readme to reflect the version
2023-08-31 12:33:09 +02:00
mattieserver dfbe26318f bump version (#359) 2023-07-28 10:55:55 +02:00
mattieserver debc314714 added permissions (#358) 2023-07-28 10:52:34 +02:00
mattieserver d14d9c1414 3.6.1 (#348) 2023-07-11 15:26:01 +02:00
Mario d48d213b2c fixed coordinate import url (#346) 2023-07-11 15:17:02 +02:00
mattieserver e5e5a8a0ef release 3.6.0 (#343)
* bump version

* bump version
2023-07-10 13:30:45 +02:00
Mario 1b64f40564 Merge pull request #342 from dreng/340_migration_script
Fixes#340: Version 3.6 does not work with netbox 3.4.x because of migration dependencies
2023-06-29 21:29:48 +02:00
dreng 33a198517b delete redundant dependencies 2023-06-29 20:53:29 +02:00
mattieserver daf35c097d bump version (#334) 2023-06-22 09:19:26 +02:00
Mario 63b9775218 Merge pull request #323 from dreng/247_base_path_broken_images
Fixes #247: Using BASE_PATH results in broken image URLs
2023-06-04 19:38:59 +02:00
dreng 69cd2c431c add newline to end of images.html 2023-06-04 12:06:26 +02:00
dreng 873c757606 fixed xml-export path construction 2023-06-04 08:52:17 +02:00
dreng 8f520f9a6a fixed image path construction 2023-06-03 23:04:47 +02:00
mattieserver 0a86d2bbea prepare release 3.6.0-beta.1 (#319) 2023-05-30 16:55:58 +02:00
mattieserver 34437f1b5c fixed openapi (#318) 2023-05-30 16:35:21 +02:00
mattieserver 6ee787bfb7 fixed xml export for site + location (#317) 2023-05-30 15:05:33 +02:00
Mario 8b1d2b56f3 Add save_coords to individual options (#311) 2023-05-30 15:05:22 +02:00
Mario 73490b6c64 Merge pull request #313 from dreng/312_filter_image_filetypes
Fixes #312: Image view does not honor IMAGE_FILETYPES
2023-05-28 12:35:27 +02:00
dreng 164104919b Let TopologyImagesView honor IMAGE_FILETYPES 2023-05-28 11:31:29 +02:00
Mario d9a86966d4 Merge pull request #308 from dreng/292_remove_netbox_multiplechoicefield
Fixes #292: Replaced deprecated MultipleChoiceField
2023-05-23 22:05:54 +02:00
dreng 1adb4b2a0a Replaced deprecated MultipleChoiceField 2023-05-23 21:42:18 +02:00
Mario 252ddd4c50 Merge pull request #302 from dreng/293_location_topology_views
Closes #293: Add location topology button
2023-05-23 18:21:07 +02:00
Mario 7a60f6838d Merge pull request #297 from dreng/263_add_multiple_coordinates
Closes #263, Fixes #294: Multiple coordinates
2023-05-23 18:20:19 +02:00
Mauritz 1085389039 Update README.md (#301)
Update the README.md to prevent errors with docker
2023-05-16 17:46:49 +02:00
Remi Rampin a1f4478305 Fix typo: "locigal connection" (#305) 2023-05-16 17:45:54 +02:00
dreng aca8b31d1f newline... again 2023-05-14 22:32:45 +02:00
dreng 3b1e69f2a5 Add missing newlines 2023-05-14 22:30:31 +02:00
dreng f23f127d3b Add location topology button 2023-05-14 22:25:42 +02:00
dreng 1f9295dead Added bulk import 2023-05-13 16:15:49 +02:00
dreng c15613d7fe fix physics and icon placement 2023-05-12 13:47:15 +02:00
dreng 4ef5a95b4f Updated and improved docs 2023-05-11 08:27:27 +02:00
dreng e43ef0acf0 fix missing parameter in API call 2023-05-09 22:02:09 +02:00
dreng a0698ed888 improved views and templates 2023-05-09 19:32:50 +02:00
dreng 25380c0618 correct physics 2023-05-09 10:19:29 +02:00
dreng bef5e8479f Removed saving coords for custom field 2023-05-07 09:51:15 +02:00
dreng d478c92fc8 Housekeeping 2023-05-07 09:01:14 +02:00
dreng 334409ffa8 re-run npm bundle 2023-05-06 23:07:54 +02:00
dreng fdcaeee8ee moved default group check to model function 2023-05-06 23:01:08 +02:00
dreng dbf2d23905 rework load/save of coords; add group coords save 2023-05-06 23:01:08 +02:00
dreng 9cc1607811 add load/save values, fix filterset 2023-05-06 22:57:12 +02:00
dreng 7e2ffc575f plural to singular 2023-05-06 22:57:12 +02:00
dreng 60c272acb7 Add Coordinate models, forms, views, templates,... 2023-05-06 22:57:12 +02:00
mattieserver fe83a62615 Update README.md (#291) 2023-05-04 10:38:02 +02:00
mattieserver 4dd962f002 Prepare release v3.5.0 (#288)
* bump version

* bump version
2023-04-30 20:13:20 +02:00
Mario 5c58f2a9c2 Closes #64: Show neighbors option (#286)
* Add option to show neighbors

* Updated documentation and help text

* Added newlines at end of files where they where missing

* Updated options screenshot

* fix function vars

---------
2023-04-30 19:09:36 +02:00
Marioandmattieserver 5e9aaecf9c Closes #189, Closes #158: Add draw.io XML export (#277)
* Added export to draw.io XML

* Corrected missing newline at end of file

* init

* moved to api call

---------

Co-authored-by: mattieserver <3049868+mattieserver@users.noreply.github.com>
2023-04-30 15:22:38 +02:00
Mario 7d23cfc7eb Merge pull request #287 from dreng/285_icons_info
Fixes #285: Remove 'Icons info' from Readme
2023-04-29 15:14:44 +02:00
dreng 0af736df0e Removed 'Icons info' section 2023-04-29 13:14:15 +02:00
mattieserver 8edea468e9 bump version (#283) 2023-04-28 16:07:36 +02:00
mattieserver 2aa3317a9b fix imports for netbox v3.5 (#282) 2023-04-28 13:56:55 +02:00
Victor Gorchilov 3671bbbc78 Fixes #276: Delete RoleImages when their DeviceRole is deleted (#279)
* [fix] get only valid role images

* [up] add post delete signals for device roles

* [fix] move signal registration in `apps.py`

* [fix] register signals in plugin config & filter valid role images

* [fix] undo role image filter as it is wrong and unnecessary

* [up] revert formatting with black
2023-04-20 20:55:58 +02:00
Mario d3dc955987 Merge pull request #278 from dreng/274_power_panels_wrong_names
Fixes #274: Incorrect names displayed for power panels/feeds
2023-04-17 15:30:41 +02:00
dreng f0c1a855a1 Changed naming of circuits, power panles, power fees and devices 2023-04-16 17:14:55 +02:00
Mario 86cb967d70 Merge pull request #273 from dreng/253_remove_arrows
Fixes #253: Display device labels on top of logical connections
2023-04-02 21:38:38 +02:00
Mario f055b73b71 Merge pull request #272 from dreng/240_overhaul_icons
Closes #240: Overhaul icons
2023-04-02 21:35:58 +02:00
dreng 825a90a5ad Removed arrows for logical connections because they covered the text 2023-04-02 19:37:34 +02:00
dreng 79edb94adb Removed PNGs in favor of SVGs 2023-04-02 17:05:09 +02:00
dreng b72d572594 Merge branch '240_overhaul_icons' of github.com:dreng/netbox-topology-views into 240_overhaul_icons 2023-04-02 17:00:09 +02:00
dreng 7c08d2d517 Removed PNGs in favor of SVGs 2023-04-02 14:28:38 +02:00
Mario d12d20e9a0 Create LICENSE 2023-04-01 01:33:08 +02:00
dreng 2dec5af7f4 Removed remaining old icons 2023-03-31 23:52:02 +02:00
Mario 714fdfa054 Replaced and added icons 2023-03-31 23:41:30 +02:00
mattieserver 0004f0a6d3 bump version (#269) 2023-03-23 10:08:34 +01:00
MarioandMattijs Vanhaverbeke 5d20a7ad15 Closes #252,#78,#177,#265: Move options from config file to GUI (#262)
* Added some individual options

* Added general options

* Added show_single_cable_logical_conns and draw_default_layout

* Added ignore_cable_type to IndividualOptions

* Corrected permission, tiny improvements

* Add preselected_device_roles to IndividualOptions

* Add preselected_tags

* Updated documentation

* Update README.md

* Corrected queryset for preselected_tags

* Update README.md

* move supported_termination_types to inside the function to prevent migration issues

* removed general options

* added new migration script

---------

Co-authored-by: Mattijs Vanhaverbeke <mattijs.vanhaverbeke@ebo-enterprises.com>
2023-03-23 09:57:51 +01:00
Mario 4fbc2fd8ce Merge pull request #268 from mattieserver/dreng-patch-1
Update pull_request_template.md
2023-03-19 16:39:36 +01:00
Mario 3e90502630 Update pull_request_template.md 2023-03-19 16:39:15 +01:00
Jan Krupa c4ee38c0c9 Change menu navigation icon (#266) 2023-03-10 09:29:33 +01:00
Mario b8a1af15ef Merge pull request #255 from royvegard/254_open_trace_for_logical_connection
Closes #254: Add a url to cable trace for logical connections
2023-01-29 19:16:23 +01:00
Roy Vegard OvesenandMario 7ecd29bb5d Avoid rendering double slash
Co-authored-by: Mario <github@franzbonenkamp.de>
2023-01-29 18:57:09 +01:00
Roy Vegard Ovesen b3b94f63d9 Add a url to cable trace for logical connections
Fixes #254
2023-01-29 11:52:50 +00:00
Mario c0b36ca8d3 Merge pull request #249 from dreng/248_update_docs
Fixes #248: Update README.md
2023-01-17 10:44:31 +01:00
Mario 77b194b680 Update README.md 2023-01-17 10:31:41 +01:00
mattieserver 6fafbeb7c3 bump version (#246) 2023-01-09 13:37:06 +01:00
Mario 6f2ac1684a Added show_cables=on to HTMX-GET parameters (#242) 2023-01-08 22:08:04 +01:00
Mario 1227c87d05 Merge pull request #243 from dreng/241_bigger_site_topology_window
Closes #241: Make Site Topology window bigger
2023-01-07 12:47:55 +01:00
Mario 89b04ff0c5 Merge branch 'mattieserver:master' into 241_bigger_site_topology_window 2023-01-06 23:50:07 +01:00
dreng 47079cf27f Raised max-width 2023-01-06 23:47:24 +01:00
Mario fbf223f8bf Merge pull request #239 from mattieserver/revert-230-update-git-ignore
Revert "Update git ignore"
2023-01-06 10:18:18 +01:00
Mario b74fbb828f Revert "Update git ignore" 2023-01-06 10:09:47 +01:00
mattieserver 2e34f7435a Release v3.2.0 (#234)
* bump version

* bump version
2023-01-05 13:12:32 +01:00
Mario 3805d75dba Merge pull request #230 from dreng/update-git-ignore
Update git ignore
2022-12-28 11:48:00 +01:00
Mario b178d68338 Merge branch 'mattieserver:master' into update-git-ignore 2022-12-28 11:40:45 +01:00
mario 37c900ea4a Added VS Code project settings to .gitignore 2022-12-28 11:36:33 +01:00
Marioandmattieserver 0cb0c10dbb Closes #181: Open cable on double-click (#225)
* Closes #181: Open cable on double-click

* build js

Co-authored-by: mattieserver <3049868+mattieserver@users.noreply.github.com>
2022-12-27 14:57:32 +01:00
dfb0b532b9 Closes #151: Implement interface end to end connection view (#188)
* Added end to end interface connections, made showing cables and wireless optional

* Fixed 'Hide Unconnected' and other bugs

* rename var + extra check

* Add filter selection image for readme

* Added guidance on using the selection options

* Renaming to selection_options

* Renamed filter_selection to selection_options

* Update README.md

* Bug fix

* fix parameter order

* differentiate line type for interface connections

* allow both cables and logical connections

* Change logical connection line type

Co-authored-by: Mario <github@franzbonenkamp.de>

* Hide redundant connections, configurable options

* updated readme + removed visjs setting from settings

* Update README.md

Co-authored-by: Mario <github@franzbonenkamp.de>

* updated readme for 'Show Logical Connections'

Co-authored-by: tagrusendorf <tagrusendorf@dev-netbox.tag.kbproductions.ca>
Co-authored-by: mattieserver <3049868+mattieserver@users.noreply.github.com>
Co-authored-by: Mario <github@franzbonenkamp.de>
Co-authored-by: Mattijs Vanhaverbeke <mattijs.vanhaverbeke@ebo-enterprises.com>
2022-12-27 14:49:34 +01:00
mattieserver e0bd1d4e86 Closes #160: feature save filters (#227)
* initial saved filter support

* add filter field

* fixed model

* changed margin
2022-12-26 12:07:01 +01:00
mattieserver 683a980858 Link to netbox-docker wiki for install in docker (#229)
* Link to netbox-docker wiki for install in docker

* cleanup old docker stuff
2022-12-23 16:05:30 +01:00
mattieserver 2befe94f5d menu layout: use new class from netbox 3.4 (#215)
* new layout

* used new PluginMenu class
2022-12-21 17:03:47 +01:00
Mario 2f65614fcb Merge pull request #226 from dreng/pull_request_template
Create pull_request_template.md
2022-12-20 19:54:44 +01:00
Mario 2722dfa793 Create pull_request_template.md 2022-12-20 19:38:36 +01:00
mattieserver 41d6afc336 bump version (#222) 2022-12-18 18:50:58 +01:00
mattieserver 2901dbb5c7 add check for python3.9 (#221) 2022-12-18 18:45:49 +01:00
mattieserverandMario 37122cd76c initial update of docs (#213)
* initial update of docs

* updated docs

* Update dev_setup/README.md

Co-authored-by: Mario <github@franzbonenkamp.de>

* Update dev_setup/README.md

Co-authored-by: Mario <github@franzbonenkamp.de>

* Update dev_setup/README.md

Co-authored-by: Mario <github@franzbonenkamp.de>

* added docker / native install for psql

* Update dev_setup/README.md

Co-authored-by: Mario <github@franzbonenkamp.de>

Co-authored-by: Mario <github@franzbonenkamp.de>
2022-12-18 18:21:12 +01:00
Renato Almeida de OliveiraandMattijs Vanhaverbeke 7173564ea9 Topology button in Site View (#220)
* Topology button in Site View

* Add mdi icons to Topology and Close Buttons

* Fix buttons tag and class

* fixed drag & site filter

Co-authored-by: Mattijs Vanhaverbeke <mattijs.vanhaverbeke@ebo-enterprises.com>
2022-12-18 18:15:48 +01:00
Mario be402b1b5c Closes #210: Issue templates (#211)
* Create bug_report.yaml

* Create feature_request.yaml

* Create config.yml
2022-12-11 12:29:36 +01:00
mattieserver f187e75fff bump version (#200) 2022-12-09 13:52:44 +01:00
mattieserver c6df846bde changed api call path (#198) 2022-12-09 13:46:30 +01:00
Victor Gorchilov 52c2611e9d Feature: Add customisable icons in topology (#193)
* [up] add config for custom images, better js

* [up] use bundler to bundle js

* [fix] remove domcontentloaded since defer is used

* [fix] formatting with black

* [fix] images drf api

* [up] add support for custom icons on additional roles: power panel, power feed, circuit

* [up] optimize topology generation by using `_id` when trying to access pk of related object

* [fix] kebab case instead of slugification

* [fix] use empty queryset in api views & change coord save logic
2022-12-09 13:40:39 +01:00
Robin Schneider 5c87694b87 docs: Recommend to set custom field coordinates to hidden (#180)
Changing the coordinates manually would be very tedious. Users are not
expected to do this and to prevent them from coming up with this idea in
the first place, set the custom field to hidden.
2022-11-03 13:42:51 +01:00
Roy Vegard Ovesen 94f5314649 Filter by rack (#175)
Fixes #174
2022-10-09 19:12:59 +02:00
mattieserver 32042ff2cc added multiselect (#171) 2022-10-04 10:16:20 +02:00
Mattijs Vanhaverbeke 9ce13cd1d2 bump version 2022-09-16 16:14:42 +02:00
mattieserver b4e2f2418e added extra checks (#166) 2022-09-16 16:13:32 +02:00
mattieserver 5563e3c084 added device filter option (#165) 2022-09-16 16:07:14 +02:00
mattieserver 77a8a2c0d6 Removed print 2022-09-16 14:52:00 +02:00
mattieserver 010179742c 159 fix power filter (#164)
* fix site_ids var

* fixed power cable name + change power filter name
2022-09-16 14:50:24 +02:00
mattieserver f2bbaed317 added console cable support (#157)
* added console cable support

* removed print
2022-09-14 14:50:10 +02:00
mattieserver 8c56f21f16 Update README.md 2022-09-13 08:46:05 +02:00
mattieserver eb627bdedc Update README.md 2022-09-12 18:36:27 +02:00
mattieserver 291c033e34 Update README.md 2022-09-12 18:23:33 +02:00
mattieserver 1f389b3faa Update README.md 2022-09-12 18:20:18 +02:00
Mattijs Vanhaverbeke 3d3ddaa7c4 bump version 2022-09-08 12:29:29 +02:00
mattieserver 4ea2097429 bump version 2022-09-02 15:13:22 +02:00
mattieserver cfaba462d5 removed unused import (#149) 2022-09-02 15:12:36 +02:00
Mattijs Vanhaverbeke 5e2f1cca57 added info about new icons 2022-09-01 19:10:15 +02:00
Mattijs Vanhaverbeke b2e2a4c781 bump version 2022-09-01 18:48:22 +02:00
mattieserver 318b8495b7 Netbox v3.3 Support (#145)
* init

* added circuit (or at least part of)

* refactor circuits + fix js

* small changes

* small changes

* added power + rework settings

* small changes
2022-09-01 18:44:03 +02:00
mattieserver 5e1d5d2937 added always_save_coordinates (#144) 2022-08-24 14:07:26 +02:00
Andrea DaineseandMattijs Vanhaverbeke 0b6df3bd28 disable physics if not saving coords (#139)
* initial commit

* keeps x/y when not saving coords

Co-authored-by: Mattijs Vanhaverbeke <mattijs.vanhaverbeke@ebo-enterprises.com>
2022-08-05 17:53:15 +02:00
mattieserver af1666b3ba move to esbuild & yarn (#138)
* move to esbuild & yarn

* remove gulpfile

* cleanup unused ref

* updated gitignore
2022-08-03 17:29:15 +02:00
Mattijs Vanhaverbeke 31a8c756e2 package info 2022-08-03 14:07:51 +02:00
Mattijs Vanhaverbeke ce39c98396 bump version 2022-08-03 12:07:58 +02:00
mattieserver faf156a6b2 133 enhancement bubbletext (#136)
* added extra fields to popup

* open new tab with device info
2022-08-03 11:46:37 +02:00
mattieserver 1b36b9e7df added extra check (#135) 2022-08-03 10:59:02 +02:00
mattieserver 652a44437e Create SECURITY.md 2022-07-29 09:33:15 +02:00
mattieserver 76141e70ce update gh actions 2022-06-30 22:47:55 +02:00
mattieserver 76b4f6ac9a Create docker-publish.yml 2022-06-30 22:40:18 +02:00
mattieserver 953d7480af add dockerfile (#130) 2022-06-30 22:39:18 +02:00
Mattijs Vanhaverbeke f323278f00 bump version 2022-06-30 22:22:47 +02:00
mattieserver 56a6f22bf6 added site to device tooltip (#128) 2022-06-30 22:18:35 +02:00
Mattijs Vanhaverbeke b9d3cc3c4e bump version 2022-06-30 22:06:33 +02:00
Mattijs Vanhaverbeke d4833071df added filter on device status 2022-06-30 22:03:23 +02:00
Mattijs Vanhaverbeke 877d308574 small config change 2022-06-30 19:27:11 +02:00
pycolas 83b662eac3 End to end connections (#113)
* Add hide-device-role feature

* Add hide-device-role feature

* Remove end^Cevices not in queryset

* clean up

* Fix destination.device.id test

* Query optimization

* multiple updates
2022-06-30 19:13:04 +02:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 53a996edbc Bump minimist from 1.2.5 to 1.2.6 (#110)
Bumps [minimist](https://github.com/substack/minimist) from 1.2.5 to 1.2.6.
- [Release notes](https://github.com/substack/minimist/releases)
- [Commits](https://github.com/substack/minimist/compare/1.2.5...1.2.6)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-10 11:38:34 +02:00
Mattijs Vanhaverbeke 398deb5382 bump version 2022-05-10 09:28:21 +02:00
Alexander Ryazanov b5991a5f50 Improve visualization performance (substantially) (#109)
* fix: moved image generation to avoid severe performance issues

* fix: moved button finding code before data handling

* fix: fixed leftover invalid variable naming
2022-05-10 09:21:22 +02:00
mattieserver de92627176 add shadow to cables (#98)
* addes shadow to edge

* changed bg color in dark mode
2022-05-06 06:43:06 +02:00
mattieserver 6be028b9dc fix typo (#100) 2022-04-15 19:42:32 +02:00
Mattijs Vanhaverbeke 8997c38263 bump version 2022-04-11 13:12:04 +02:00
Mattijs Vanhaverbeke d927e40867 bump version 2022-03-25 13:16:00 +01:00
Jeremy Stretchandmattieserver 62c0dbddb2 Initial work on NetBox v3.2 support (#88)
Co-authored-by: mattieserver <3049868+mattieserver@users.noreply.github.com>
2022-03-25 13:13:33 +01:00
mattieserver e68a8a1af0 added tenants (#94) 2022-03-25 10:12:36 +01:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 68e8aa0512 Bump path-parse from 1.0.6 to 1.0.7 (#74)
Bumps [path-parse](https://github.com/jbgutierrez/path-parse) from 1.0.6 to 1.0.7.
- [Release notes](https://github.com/jbgutierrez/path-parse/releases)
- [Commits](https://github.com/jbgutierrez/path-parse/commits/v1.0.7)

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

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-18 12:15:05 +01:00
mattieserver b792128415 Fix dark mode (#90)
* fixed dark mode
2022-03-10 11:46:00 +01:00
mattieserver f5d9f589bf Fix circuit error (#87)
* fix 'Interface' object has no attribute 'circuit'
2022-03-09 21:00:55 +01:00
mattieserver 3e5b28f208 Update to support netbox v3.1 (#82)
* init for v3.1

* added coords + bump version

* fix filter + added preselected roles

* added draw_default_layout

* upgraded packages

* fixed edge/node labels

* fixed enable_circuit_terminations

* added filter for unconnected devices

* added ignore_cable_type

* fixed old settings using a string instead of array

* removed distutils

* fixed coords check

* added coor saving

* added doc img

* updated docs

* bump version

* bump version
2022-03-08 17:03:47 +01:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 3b4209223e Bump lodash from 4.17.20 to 4.17.21 (#66)
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.20 to 4.17.21.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.20...4.17.21)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-05-12 22:13:26 +02:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 6fc7cce79a Bump hosted-git-info from 2.8.8 to 2.8.9 (#67)
Bumps [hosted-git-info](https://github.com/npm/hosted-git-info) from 2.8.8 to 2.8.9.
- [Release notes](https://github.com/npm/hosted-git-info/releases)
- [Changelog](https://github.com/npm/hosted-git-info/blob/v2.8.9/CHANGELOG.md)
- [Commits](https://github.com/npm/hosted-git-info/compare/v2.8.8...v2.8.9)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-05-12 22:13:11 +02:00
mattieserver fd4a1cd0c7 Create codeql-analysis.yml 2021-05-07 16:20:55 +02:00
mattieserver 2deaed1adc Update README.md 2021-05-03 18:53:25 +02:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 55a61d4d10 Bump ini from 1.3.5 to 1.3.8 (#47)
Bumps [ini](https://github.com/isaacs/ini) from 1.3.5 to 1.3.8.
- [Release notes](https://github.com/isaacs/ini/releases)
- [Commits](https://github.com/isaacs/ini/compare/v1.3.5...v1.3.8)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-05-03 18:12:42 +02:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 3a4652543f Bump yargs-parser from 5.0.0 to 5.0.1 (#62)
Bumps [yargs-parser](https://github.com/yargs/yargs-parser) from 5.0.0 to 5.0.1.
- [Release notes](https://github.com/yargs/yargs-parser/releases)
- [Changelog](https://github.com/yargs/yargs-parser/blob/v5.0.1/CHANGELOG.md)
- [Commits](https://github.com/yargs/yargs-parser/compare/v5.0.0...v5.0.1)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-05-02 22:33:51 +02:00
mattieserver 9b4dd77943 update version 2021-05-01 19:30:18 +02:00
mattieserver 91a690f1c8 add filter by locations (#63)
* frontend for locations

* locations filter backend
2021-05-01 19:22:28 +02:00
mattieserver 5f498f9ce2 Hide unconnected (#61)
* #57 hide unconnected devices
2021-05-01 18:34:50 +02:00
mattieserver 195ac47542 added docs to setup dev (#60) 2021-05-01 17:05:32 +02:00
julianze a25be917ee Update __init__.py (#55)
fix typo toplogoy
2021-03-28 11:40:03 +02:00
mattieserver 079361b190 Update README.md 2021-02-17 11:02:58 +01:00
mattieserverandmattieserver a314d2b307 netbox v2.10 (#52)
* small changes

* removed print

* fix coords

* fix saving coords

* update readme

* fixed icons

* bump version

Co-authored-by: mattieserver <mattijs@DESKTOP-618OSU1.localdomain>
2021-02-11 19:22:41 +01:00
mattieserver 0340522f59 update jquery version to match netbox v2.9.1 (#43)
* Update full.html

* Update setup.py

* Update package.json

* Update __init__.py
2020-08-23 11:53:52 +02:00
Mattijs Vanhaverbeke 2edd597871 bump version 2020-07-20 15:49:06 +02:00
mattieserver 5f4f97c360 Merge pull request #41 from mattieserver/32
added Filter topology via URL Parameter
2020-07-20 15:00:10 +02:00
Mattijs Vanhaverbeke 17ae8b4a1d #32 2020-07-20 14:57:09 +02:00
mattieserver bb9765e011 Merge pull request #40 from mattieserver/37
add filter by region
2020-07-20 12:38:15 +02:00
Mattijs Vanhaverbeke 5bfc47775b #37 2020-07-20 12:36:38 +02:00
mattieserver 216508170f Merge pull request #39 from mattieserver/dependabot/npm_and_yarn/lodash-4.17.19
Bump lodash from 4.17.15 to 4.17.19
2020-07-20 11:07:20 +02:00
dependabot[bot] 0faa135978 Bump lodash from 4.17.15 to 4.17.19
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.15 to 4.17.19.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.15...4.17.19)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-20 07:57:54 +00:00
mattieserver 9ba61cce28 Merge pull request #28 from mattieserver/22052020_dev
22052020 dev
2020-05-24 18:31:07 +02:00
mattieserver 9824a3f659 Merge branch 'master' into 22052020_dev 2020-05-24 18:30:59 +02:00
mattieserver 4115584306 Update README.md 2020-05-23 18:20:04 +02:00
mattieserver cd239ac6ae Update README.md 2020-05-23 18:19:13 +02:00
mattieserver 030844f2fb Merge pull request #27 from ryanmerolle/rm-issue-26
Update README to include local_requirements setup
2020-05-23 18:15:56 +02:00
ryanmerolle 2e6dd7de23 Update README to include local_requirements setup 2020-05-23 12:04:19 -04:00
Mattijs Vanhaverbeke de5707ff06 PATCH instead of POST 2020-05-22 12:57:58 +02:00
Mattijs Vanhaverbeke 371c5c3502 added download button, fixed perms 2020-05-22 12:07:46 +02:00
mattieserver 26139cbb1c Merge pull request #24 from mattieserver/19052020_dev_1
19052020 dev 1
2020-05-20 08:11:04 +02:00
Mattijs Vanhaverbeke 4ea315d4b2 v0.4.8 2020-05-20 08:09:45 +02:00
Mattijs Vanhaverbeke 40ae715eb5 more NoneType checks 2020-05-19 22:35:55 +02:00
Mattijs Vanhaverbeke 204098a143 #23 check for nonetype in cable.termination 2020-05-19 22:17:13 +02:00
mattieserver 9b606643ea Update README.md 2020-05-19 19:50:56 +02:00
mattieserver f184bdf2f3 Merge pull request #20 from mattieserver/19052020_dev
#14, added circuit terminations
2020-05-19 17:20:11 +02:00
Mattijs Vanhaverbeke 370eff6b67 #14, added circuit terminations 2020-05-19 17:18:20 +02:00
Mattijs Vanhaverbeke 6d28ce2da4 v0.4.6 2020-05-18 19:12:32 +02:00
mattieserver 8a97923bb2 Merge pull request #19 from JohannesKreuzer/color-edges
color the edges
2020-05-18 19:10:10 +02:00
Johannes Kreuzer 7f0dcd97f7 color the edges
When a cable has a color set, use this color for the edge which
repesents the cable, so that a cabling type or maybe a purpose of the cable
could be seen in the topology graph.
2020-05-18 19:03:18 +02:00
Mattijs Vanhaverbeke 0d7052d83d small cleanup and v0.4.5 2020-05-18 18:52:56 +02:00
mattieserver e50945f8b5 Merge pull request #18 from JohannesKreuzer/add-dev-details
Shorter Label and more details for device
2020-05-18 18:19:57 +02:00
Johannes Kreuzer 987aab772f move device type name to title and add more device details to title 2020-05-18 18:14:23 +02:00
Mattijs Vanhaverbeke 2ef6e7cb96 v0.4.4 2020-05-17 17:08:38 +02:00
mattieserver 570d241b7f Merge pull request #17 from mattieserver/17052020_dev_3
fixed spelling of the word 'unknown'
2020-05-17 17:06:47 +02:00
Mattijs Vanhaverbeke 2025bba6a1 fixed spelling of the word 'unknown' 2020-05-17 17:05:14 +02:00
mattieserver 22ec4fb310 Merge pull request #16 from mattieserver/17052020_dev_2
17052020 dev 2
2020-05-17 16:46:36 +02:00
Mattijs Vanhaverbeke 85b27895e2 v0.4.3 2020-05-17 16:45:19 +02:00
Mattijs Vanhaverbeke 940b37428c #15 check for NoneType in cables & devices 2020-05-17 16:41:51 +02:00
mattieserver eedcf65bd8 Update README.md 2020-05-17 14:59:55 +02:00
mattieserver bf28d2d2d1 Update README.md 2020-05-17 14:59:03 +02:00
mattieserver a57e1f79ab Merge pull request #13 from mattieserver/17052020_dev_1
17052020 dev 1
2020-05-17 14:37:47 +02:00
Mattijs Vanhaverbeke 6e142bdb74 v0.4.2 2020-05-17 14:37:05 +02:00
Mattijs Vanhaverbeke 79cb8d8e2e fixes searhc (#12) 2020-05-17 14:35:23 +02:00
mattieserver 1c9d4d8a1e Merge pull request #11 from mattieserver/17052020_dev
17052020 dev
2020-05-17 14:22:34 +02:00
Mattijs Vanhaverbeke 6fc32b9bfa v0.4.1 2020-05-17 14:20:30 +02:00
Mattijs Vanhaverbeke e0624effc2 exclude "circuit termination" type for now 2020-05-17 14:14:53 +02:00
mattieserver fe94765c15 Merge pull request #9 from mattieserver/14052020_dev
14052020 dev
2020-05-16 20:03:10 +02:00
Mattijs Vanhaverbeke ffd91e2cf5 CustomFieldValue & CustomField 2020-05-16 20:00:25 +02:00
Mattijs Vanhaverbeke 44e82c0286 updated vis-network and fixed dragevent update 2020-05-16 15:48:52 +02:00
Mattijs Vanhaverbeke 33d7157b12 added search by tag (#8) 2020-05-16 14:24:38 +02:00
mattieserver 5c4c6be745 Create LICENSE 2020-05-14 22:32:14 +02:00
Mattijs Vanhaverbeke 5e53066ba7 fixed auth, added save-coords 2020-05-14 22:20:01 +02:00
mattieserver a1d155fdbc Merge pull request #7 from mattieserver/dev
bump version to 0.3
2020-05-14 18:26:48 +02:00
mattijs vanhaverbeke ab944fdcef bump version to 0.3 2020-05-14 18:19:16 +02:00
mattieserver f72ca57ac7 Merge pull request #5 from JohannesKreuzer/netbox-subdir-support
support of netbox deployments in subdirectories
2020-05-14 18:17:23 +02:00
Johannes Kreuzer 8a6f1660f0 Update for support of netbox deployments, which are not in the webserver root (e.g. /netbox/) 2020-05-14 15:52:47 +02:00
mattieserver d608d63207 Update README.md 2020-04-24 12:57:47 +02:00
mattieserver 4d161fe6ac Update README.md 2020-04-24 12:56:47 +02:00
mattieserver c6a6893c10 Update README.md 2020-04-24 12:45:49 +02:00
mattieserver b2430d1723 Update README.md 2020-04-17 11:13:10 +02:00
141 changed files with 10809 additions and 4595 deletions
+52
View File
@@ -0,0 +1,52 @@
---
name: 🐛 Bug Report
description: Report a reproducible bug in the current release of NetBox
labels: ["type: bug"]
body:
- type: markdown
attributes:
value: >
**NOTE:** This form is only for reporting _reproducible bugs_. If you're having
trouble with installation or just looking for assistance with using NetBox
Topology Views, please visit our
[discussion forum](https://github.com/mattieserver/netbox-topology-views/discussions) instead.
- type: input
attributes:
label: NetBox version
description: What version of NetBox are you currently running?
placeholder: v3.3.9
validations:
required: true
- type: input
attributes:
label: Topology Views version
description: What version of NetBox Topology Views are you currently running?
placeholder: v3.1.0
validations:
required: true
- type: textarea
attributes:
label: Steps to Reproduce
description: >
Describe in detail the exact steps that someone else can take to
reproduce this bug using the current stable release of NetBox Topology Views.
placeholder: |
1. Click on "create widget"
2. Set foo to 12 and bar to G
3. Click the "create" button
validations:
required: true
- type: textarea
attributes:
label: Expected Behavior
description: What did you expect to happen?
placeholder: A new widget should have been created with the specified attributes
validations:
required: true
- type: textarea
attributes:
label: Observed Behavior
description: What happened instead?
placeholder: A TypeError exception was raised
validations:
required: true
+5
View File
@@ -0,0 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: ❓ Discussion
url: https://github.com/mattieserver/netbox-topology-views/discussions
about: "If you're just looking for help, try starting a discussion instead"
@@ -0,0 +1,58 @@
---
name: ✨ Feature Request
description: Propose a new NetBox Topology Views feature or enhancement
labels: ["type: feature"]
body:
- type: markdown
attributes:
value: >
**NOTE:** This form is only for submitting well-formed proposals to extend or modify
NetBox Topology Views in some way. If you're trying to solve a problem but can't figure
out how, or if you still need time to work on the details of a proposed new feature,
please start a [discussion](https://github.com/mattieserver/netbox-topology-views/discussions) instead.
- type: input
attributes:
label: NetBox version
description: What version of NetBox are you currently running?
placeholder: v3.3.9
validations:
required: true
- type: input
attributes:
label: Topology Views version
description: What version of NetBox Topology Views are you currently running?
placeholder: v3.1.0
validations:
required: true
- type: dropdown
attributes:
label: Feature type
options:
- New functionality
- Change to existing functionality
validations:
required: true
- type: textarea
attributes:
label: Proposed functionality
description: >
Describe in detail the new feature or behavior you are proposing. Include any specific changes
to work flows and/or the user interface. The more detail you provide here, the
greater chance your proposal has of being discussed. Feature requests which don't include an
actionable implementation plan will be rejected.
validations:
required: true
- type: textarea
attributes:
label: Use case
description: >
Explain how adding this functionality would benefit NetBox Topology Views users. What need does it address?
validations:
required: true
- type: textarea
attributes:
label: External dependencies
description: >
List any new dependencies on external libraries or services that this new feature would
introduce. For example, does the proposal require the installation of a new Python package?
(Not all new features introduce new dependencies.)
+24
View File
@@ -0,0 +1,24 @@
<!--
IMPORTANT:
==========
Thank you for contributing to NetBox Topology Views! Please
note that our contribution guidelines require a feature
request or bug report to be labeled "status: accepted". This
helps avoid waste time and effort on a proposed change that
we might not be able to accept. If a feature request or bug
report is labeled "status: needs owner", feel free to raise
your hand if you'd like to take work on it and we will
happily assign you to the issue.
Please prefix the title of your pull request according to
it's type. You should use "Closes #FEATURE_ID: ..." for feature
requests and "Fixes #ISSUE_ID: ..." for issues. This helps
us closing issues automatically after merging.
To sum it up:
1. Create Bug Report or Feature Request
2. Wait until the issue has been labeled "status: accepted"
3. Start working on the issue in a seperate branch
3. Create a pull request and name the title with a prefix
according to the issue ID.
-->
+71
View File
@@ -0,0 +1,71 @@
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL"
on:
push:
branches: [ master ]
pull_request:
# The branches below must be a subset of the branches above
branches: [ master ]
schedule:
- cron: '16 22 * * 6'
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
language: [ 'javascript', 'python' ]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
# Learn more:
# https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
steps:
- name: Checkout repository
uses: actions/checkout@v2
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# queries: ./path/to/local/query, your-org/your-repo/queries@main
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v1
# ️ Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
# and modify them (or add more) to build your code if your project
# uses a compiled language
#- run: |
# make bootstrap
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1
+11 -11
View File
@@ -5,7 +5,7 @@ name: Upload Python Package
on:
release:
types: [created]
types: [published]
jobs:
deploy:
@@ -13,19 +13,19 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v1
uses: actions/setup-python@v3
with:
python-version: '3.x'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install setuptools wheel twine
- name: Build and publish
env:
TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }}
TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }}
run: |
python setup.py sdist bdist_wheel
twine upload dist/*
pip install build
- name: Build package
run: python -m build
- name: Publish package
uses: pypa/gh-action-pypi-publish@27b31702a0e7fc50959f5ad993c78deac1bdfc29
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}
+1
View File
@@ -129,3 +129,4 @@ dmypy.json
.pyre/
node_modules
app.js.map
+201
View File
@@ -0,0 +1,201 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
+195 -10
View File
@@ -1,17 +1,202 @@
# netbox-topology-views
# Netbox Topology Views Plugin
## preview
![Version](https://img.shields.io/pypi/v/netbox-topology-views) ![Downloads](https://img.shields.io/pypi/dm/netbox-topology-views)
![preview image](doc/img/preview.png?raw=true "preview")
Create topology views/maps from your devices in NetBox.
The connections are based on the cables you created in NetBox.
Support to filter on name, site, tag and device role.
Options to export to xml (for draw.io/diagrams.net) or png.
## install
## Preview
Add 'netbox_topology_views' to the PLUGINS array in your django configuration file.
Then run python3 manage.py collectstatic --no-input
![Topology with light mode](doc/img/topology_light.png)
![Topology with dark mode](doc/img/topology_dark.png)
There is also support for custom fiels.
If you create a custom field "coordinates" for "dcim > device" with type "text" and name "coordinates" you will see the same layout every time.
## Install
## use
**_NOTE:_** For docker please see: [Docker install](https://github.com/netbox-community/netbox-docker/wiki/Using-Netbox-Plugins)
go to /plugins/topology-views/ view your topologies
**_NOTE:_** Add `RUN mkdir -p /opt/netbox/netbox/static/netbox_topology_views/img` to the Dockerfile-Plugins file to create the image folder
The plugin is available as a Python package and can be installed with pip.
Run `pip install netbox-topology-views` in your virtual env.
To ensure NetBox Topology Views plugin is automatically re-installed during future upgrades, create a file named `local_requirements.txt` (if not already existing) in the NetBox root directory (alongside `requirements.txt`) and list the `netbox-topology-views` package:
```no-highlight
# echo netbox-topology-views >> local_requirements.txt
```
Once installed, the plugin needs to be enabled in your `configuration.py`
```python
# In your configuration.py
PLUGINS = ["netbox_topology_views"]
```
First run `source /opt/netbox/venv/bin/activate` to enter the Python virtual environment.
Then run
```bash
cd /opt/netbox/netbox
pip3 install netbox-topology-views
python3 manage.py migrate netbox_topology_views
python3 manage.py collectstatic --no-input
```
### Versions
| netbox version | netbox-topology-views version |
| -------------- | ----------------------------- |
| >= 3.6.0 | >= v3.7.X |
| >= 3.5.0 | >= v3.4.X |
| >= 3.4.0 | >= v3.X.X |
| >= 3.3.0 | >= v3.0.0 |
| >= 3.2.0 | >= v1.1.0 |
| >= 3.1.8 | >= v1.0.0 |
| >= 2.11.1 | >= v0.5.3 |
| >= 2.10.0 | >= v0.5.0 |
| < 2.10.0 | =< v0.4.10 |
### Update
Run `pip install netbox-topology-views --upgrade` in your venv.
Run `python3 manage.py migrate netbox_topology_views`
Run `python3 manage.py collectstatic --no-input`
Clear you browser cache.
## Configure
### Individual Options
All individual options can be assigned a default value per user directly in the plugin. The default value can be overridden on the filter page.
![Individual Options](doc/img/topology_individual_options.png)
The remaining options must be configured in the `PLUGINS_CONFIG` section of your `netbox/configuration.py`.
Example:
```
PLUGINS_CONFIG = {
'netbox_topology_views': {
'static_image_directory': 'netbox_topology_views/img',
'allow_coordinates_saving': True,
'always_save_coordinates': True
}
}
```
| Setting | Default value | Description |
| ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
| static_image_directory | netbox_topology_views/img | (str or pathlib.Path) Specifies the location that images will be loaded from by default. Must be within `STATIC_ROOT` |
| allow_coordinates_saving | False | (bool) Set to true if you want to enable the ability to save the coordinates. |
| always_save_coordinates | False | (bool) Set if you want to enable the option to save coordinates by default. Setting allow_coordinates_saving to true is mandatory. |
### Custom field: coordinates
There is also support for custom fields.
>**_Note:_** The custom field "coordinates" is deprecated and will be removed in the future. Please use Coordinate Groups instead.
If you create a custom field "coordinates" for "dcim > device" and "Circuits > circuit" with type "text" and name "coordinates" you will see the same layout every time. It is recommended to set this field to "UI visibility" "Hidden" and let the plugin manage it in the background.
The coordinates are stored as: "X;Y".
> Please read the "Configure" chapter to set the `allow_coordinates_saving` option to True.
You might also set the `always_save_coordinates` option to True.
### Convert custom field to Coordinate Groups
Please note that values stored in the custom field "coordinates" are not being converted to Coordinate Groups automatically. A pragmatic way to do this conversion yourself is as follows:
+ Navigate to "Topology" > "Filters".
+ Select "Show Unconnected" and "Show Cables".
+ Leave all other filter settings alone. We want all entries to be displayed!
+ Click "Search" and wait for the results to be displayed
+ Select all nodes. This can be done by holding down the Shift key and dragging a frame around all icons with the left mouse button.
+ Drag the selection a tiny bit to the side. This causes all coordinates for all devices to be stored in the "default" group.
> **_Hint_**: Don't wait too long after clicking an icon in order to drag. If you hold the mouse button for too long before dragging starts, the selection is reset._
+ Storing the values might take some time, depending on the number of devices. Please be patient and check "Coordinates" in order to make sure that everthing has been stored.
+ It is save to delete the custom field now.
### Custom Images
To change image with associated device use the `Images` page - it allows to map a device role with an image found in the NetBox static directory (defined by the plugin config `static_image_directory` which defaults to `netbox_topology_views/img`). You can also upload you own custom images to there - these images will automatically be used for a device (if it does not already have a specified image in the settings) if their name is the device role slug.
![Images](doc/img/topology_images.png)
## Use
Go to the plugins tab in the navbar and click topology or go to `$NETBOX_URL/plugins/netbox_topology_views/` to view your topologies
Select your options for the topology view:
![Filter Options](doc/img/topology_filter_options.png)
<dl>
<dt>Coordinate Group</dt>
<dd>Select Coordinate Group. These groups allow devices to be displayed in different positions depending on the group, thus providing different representations for the same topology. If nothing is selected, the group "default" is set automatically.</dd>
<dt>Save Coordinates</dt>
<dd>Save the coordinates of devices in the topology view.</dd>
<dt>Show Unconnected</dt>
<dd>Show devices that have no connections or for which no connection is displayed. This option depends on other parameters like 'Show Cables' and 'Show Logical Connections'.</dd>
<dt>Show Cables</dt>
<dd>Show connections between interfaces, front / rear ports, etc., that are connected with one or more cables. These connections are displayed as solid lines in the color of the cable.</dd>
<dt>Show Logical Connections</dt>
<dd>Show logical connections between interfaces (referred to as Interface Connections in NetBox) in the topology view. Where the path between
interfaces includes multiple cables (e.g., via patch panels), only the end interface connections are shown, not the
intermediate front / rear port connections, etc. This is similar to what was referred to as 'end-to-end' connections in previous versions. These connections are displayed as yellow dotted lines.</dd>
<dt>Show redundant Cable and Logical Connection</dt>
<dd>Shows a logical connection (in addition to a cable), even if a cable is directly connected. Leaving this option disabled prevents that redundant display. This option only has an effect if 'Show Logical Connections' is activated.</dd>
<dt>Show Neighbors</dt>
<dd>Adds neighbors to the filter result set automatically. Link peers will be added if 'Show Cables' is ticked, far-end terminations will be added if 'Show Logical Connections' is ticked.</dd>
<dt>Show Circuit Terminations</dt>
<dd>Show connections which end at a circuit termination in the topology view. These connections are displayed as blue dashed lines.</dd>
<dt>Show Power Feeds</dt>
<dd>Displays connections between power outlets and power ports. These connections are displayed as solid lines in the color of the cable. This option depends on 'Show Cables'.</dd>
<dt>Show Wireless Links</dt>
<dd>Displays wireless connections. These connections are displayed as blue dotted lines.</dd>
</dl>
### Coordinates and Coordinate Groups
Netbox Topology Views stores the position of the devices. In order to allow different representations for the topology, Coordinate Groups are supported.
> Please read the "Configure" chapter to set the `allow_coordinates_saving` option to True.
You might also set the `always_save_coordinates` option to True.
Navigate to "Coordinate Groups" in the menu and create as many groups as you like. You can select a group later in the filter pane in order to show icon positions according to this group (see chapter "Use"). You can also omit creating a group if you don't need this feature. Netbox Topology Views automatically creates a group named "default" for you and stores all coordinates in this group, even if you do not select a group in the filter.
By default, the position of the devices are calculated with a physics engine. As soon as a device icon is dragged to another location, its position is saved and excluded from the calculation by the physics engine. All saved coordinates can be viewed and edited under the menu item "Coordinates".
> **_Note:_** At the time of writing, it is not possible to store the positions of circuit terminations, power panels and power feeds, as these are not devices.
### Permissions
To view `/plugins/netbox_topology-views/topology` you need the following permissions:
+ dcim | device | can view device
+ dcim | site | can view site
+ extras | tag | can view tag
+ dcim | device role | can view device role
To save `Coordinates` when moving icons:
+ netbox_topology_views | coordinate | change
To view `/plugins/netbox_topology-views/images`:
+ dcim | site | view
+ dcim | device role | view
+ dcim | device role | add
+ dcim | device role | change
To view `/plugins/netbox_topology-views/individualoptions`:
+ netbox_topology_views | individual options | change
Set `Coordinate Groups` according to your needs:
+ netbox_topology_views | coordinate groups | view/add/change/delete
Set `Coordinates` according to your needs:
+ netbox_topology_views | coordinate | view/add/change/delete
+13
View File
@@ -0,0 +1,13 @@
# Security Policy
## Supported Versions
| Version | Supported |
| ------- | ------------------ |
| > 2.0 | :white_check_mark: |
| < 2.0 | :x: |
## Reporting a Vulnerability
Please create an issue when you encounter a Security issue.
+143
View File
@@ -0,0 +1,143 @@
# Setup Dev
We will assume that you work in the folder `~/code/netbox_plugin/`, change this if you use another folder for your projects/code.
## Setup native prerequisites
**_NOTE:_** these requirements are needed if you want install Postgresql & Redis native. Check the steps for docker & docker-compose if you don't want this.
Make sure that you have already installed Postgresql and Redis. Also make sure that the database has already been created and privileges has been granted as described in the NetBox installation instructions at https://docs.netbox.dev/en/stable/installation/.
In short:
```
sudo apt update
sudo apt install -y postgresql
sudo systemctl start postgresql
sudo systemctl enable postgresql
sudo -u postgres psql
CREATE DATABASE netbox;
CREATE USER netbox WITH PASSWORD 'J5brHrAXFLQSif0K';
GRANT ALL PRIVILEGES ON DATABASE netbox TO netbox;
sudo apt install -y redis-server
```
## Setup docker prerequisites
**_NOTE:_** if you used the 'native' prerequisites you can skip these steps below
### Docker
This depends on your OS or how you want to install docker.
See https://docs.docker.com/engine/install/ to find the install steps.
### Docker compose
This also depends on your OS, see the link below:
https://docs.docker.com/compose/install/linux/
## Create the base folder
```
mkdir ~/code/netbox_plugin/
cd ~/code/netbox_plugin/
```
## Install requirements
### Python + deps
You will need the following packages installed:
+ python3-venv
+ python3
Install them with your OS package manager (apt, yum, ...)
### NPM (with nvm)
Follow the steps on the repo below to install npm:
https://github.com/nvm-sh/nvm#installing-and-updating
## Create venv
```
python3 -m venv ~/code/netbox_plugin/.venvs/netbox
source ~/code/netbox_plugin/.venvs/netbox/bin/activate
```
## Setup netbox
### Clone netbox repo
```
cd ~/code/netbox_plugin/
git clone git@github.com:netbox-community/netbox.git netbox
```
### Install deps
```
cd netbox
python3 -m pip install -r requirements.txt
```
## Setup plugin
### Clone netbox-topology-views repo
```
cd ~/code/netbox_plugin/
git clone git@github.com:mattieserver/netbox-topology-views.git plugin
```
### Install deps
```
python3 -m pip install --upgrade build setuptools wheel
```
### Copy netbox config file
```
cd ~/code/netbox_plugin/
cp plugin/dev_setup/configuration.py netbox/netbox/netbox/configuration.py
```
## Start netbox
### Start docker compose
**_NOTE:_** if you used the 'native' prerequisites you can skip to 'Start netbox'
```
cd ~/code/netbox_plugin/
cd plugin/dev_setup
docker-compose up -d
```
### Start netbox
```
cd ~/code/netbox_plugin/
source ~/code/netbox_plugin/.venvs/netbox/bin/activate
cd netbox/netbox/
python3 manage.py migrate
python3 manage.py runserver
```
You might need to create a superuser if you want to start with an empty database: `python3 manage.py createsuperuser`
# Build
## Build the plugin
```
cd ~/code/netbox_plugin/
source ~/code/netbox_plugin/.venvs/netbox/bin/activate
cd plugin/
python3 setup.py develop
```
## Build javascript
```
cd plugin/netbox_topology_views/static_dev
npm install
npm run bundle
```
### Test
You can now browse to http://localhost:8000.
The plugin should be available in the menu.
# Import demo data
If you want to add demo data instead of your own data, there's an official Repository you can use. The following example shows how to add demo data for NetBox v3.4. You have to use the json file according to the version you are working on.
```
~/code/netbox_plugin/
git clone git@github.com:netbox-community/netbox-demo-data.git demodata
source ~/code/netbox_plugin/.venvs/netbox/bin/activate
cd netbox/netbox/
python3 manage.py loaddata -v 3 ~/src/netbox-demo-data/netbox-demo-v3.4.json
```
Please note that the demo data adds a superuser with credentials admin/admin.
+40
View File
@@ -0,0 +1,40 @@
###################################################################
# This file serves as a base configuration for testing purposes #
# only. It is not intended for production use. #
###################################################################
ALLOWED_HOSTS = ['*']
DATABASE = {
'NAME': 'netbox',
'USER': 'netbox',
'PASSWORD': 'J5brHrAXFLQSif0K',
'HOST': 'localhost',
'PORT': '',
'CONN_MAX_AGE': 300,
}
DEBUG = True
PLUGINS = [
'netbox_topology_views',
]
REDIS = {
'tasks': {
'HOST': 'localhost',
'PORT': 6379,
'PASSWORD': 't4Ph722qJ5QHeQ1qfu36',
'DATABASE': 0,
'SSL': False,
},
'caching': {
'HOST': 'localhost',
'PORT': 6378,
'PASSWORD': 'H733Kdjndks81',
'DATABASE': 1,
'SSL': False,
}
}
SECRET_KEY = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
+41
View File
@@ -0,0 +1,41 @@
version: '3.4'
services:
postgres:
image: postgres:12-alpine
environment:
POSTGRES_PASSWORD: J5brHrAXFLQSif0K #just for local dev
POSTGRES_DB: netbox
POSTGRES_USER: netbox
ports:
- "5432:5432"
volumes:
- netbox-postgres-data:/var/lib/postgresql/data
redis:
image: redis:6-alpine
command:
- sh
- -c # this is to evaluate the $REDIS_PASSWORD from the env
- redis-server --appendonly yes --requirepass $$REDIS_PASSWORD ## $$ because of docker-compose
environment:
REDIS_PASSWORD: t4Ph722qJ5QHeQ1qfu36 #just for local dev
volumes:
- netbox-redis-data:/data
ports:
- "6379:6379"
redis-cache:
image: redis:6-alpine
command:
- sh
- -c # this is to evaluate the $REDIS_PASSWORD from the env
- redis-server --requirepass $$REDIS_PASSWORD ## $$ because of docker-compose
environment:
REDIS_PASSWORD: H733Kdjndks81 #just for local dev
ports:
- "6378:6379"
volumes:
netbox-postgres-data:
driver: local
netbox-redis-data:
driver: local
Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 258 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 228 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 260 KiB

-78
View File
@@ -1,78 +0,0 @@
var gulp = require('gulp');
var sass = require('gulp-sass');
var concat = require('gulp-concat');
var uglify = require('gulp-uglify');
var cleanCss = require('gulp-clean-css');
var jsVendorFiles = [
'node_modules/vis-network/standalone/umd/vis-network.min.js',
];
var cssVendorFiles = [
'node_modules/vis-network/styles/vis-network.min.css',
];
var sassFiles = './netbox_topology_views/static_dev/css/*.scss',
cssDest = './netbox_topology_views/static/netbox_topology_views/css/';
var jsLocalResourceFiles = './netbox_topology_views/static_dev/js/*.js',
jsDest = './netbox_topology_views/static/netbox_topology_views/js/';
function styles_local() {
return gulp.src(sassFiles)
.pipe(sass().on('error', sass.logError))
.pipe(concat('app.css'))
.pipe(cleanCss())
.pipe(gulp.dest(cssDest));
}
exports.styles_local = styles_local
function styles_vendor() {
return gulp.src(cssVendorFiles)
.pipe(concat('vendor.css'))
.pipe(cleanCss())
.pipe(gulp.dest(cssDest))
}
exports.styles_vendor = styles_vendor
function js_local() {
return gulp.src(jsLocalResourceFiles)
.pipe(concat('app.js'))
.pipe(uglify())
.pipe(gulp.dest(jsDest))
}
exports.js_local = js_local
function js_vendor() {
return gulp.src(jsVendorFiles)
.pipe(concat('vendor.js'))
.pipe(uglify())
.pipe(gulp.dest(jsDest))
}
exports.js_vendor = js_vendor
function js_local_dev() {
return gulp.src(jsLocalResourceFiles)
.pipe(concat('app.js'))
.pipe(gulp.dest(jsDest))
}
exports.js_local_dev = js_local_dev
function js_vendor_dev() {
return gulp.src(jsVendorFiles)
.pipe(concat('vendor.js'))
.pipe(gulp.dest(jsDest))
}
exports.js_vendor_dev = js_vendor_dev
exports.css = gulp.series(styles_local, styles_vendor);
exports.js = gulp.series(js_local, js_vendor);
exports.js_dev = gulp.series(js_local_dev, js_vendor_dev);
exports.build = gulp.series(exports.css, exports.js);
exports.build_dev = gulp.series(exports.css, exports.js_dev);
+17 -10
View File
@@ -1,18 +1,25 @@
from extras.plugins import PluginConfig
class TopologyViewsConfig(PluginConfig):
name = 'netbox_topology_views'
verbose_name = 'Topology views'
description = 'An plugin to render toplogoy maps'
version = '0.2'
author = 'Mattijs Vanhaverbeke'
author_email = 'author@example.com'
base_url = 'topology-views'
name = "netbox_topology_views"
verbose_name = "Topology views"
description = "An plugin to render topology maps"
version = "3.7.0"
author = "Mattijs Vanhaverbeke"
author_email = "author@example.com"
base_url = "netbox_topology_views"
required_settings = []
default_settings = {
'preselected_device_roles': 'Firewall,Router,Distribution Switch,Core Switch,Internal Switch,Access Switch,Server,Storage,Backup,Wireless AP',
'IGNORE_CABLE_TYPE': 'dcim.poweroutlet,dcim.powerport',
'device_img': 'access-switch,core-switch,firewall,router,distribution-switch,backup,storage,wan-network,wireless-ap,server,internal-switch,isp-cpe-material,non-racked-devices,power-units'
"static_image_directory": "netbox_topology_views/img",
"allow_coordinates_saving": False,
"always_save_coordinates": False,
}
def ready(self):
from . import signals
super().ready()
config = TopologyViewsConfig
-3
View File
@@ -1,3 +0,0 @@
from django.contrib import admin
#no models yet
+1
View File
@@ -0,0 +1 @@
"""REST API"""
+31 -3
View File
@@ -1,10 +1,38 @@
from dcim.models import Device, DeviceRole
from rest_framework.serializers import ModelSerializer
from netbox.api.serializers import NetBoxModelSerializer
from dcim.models import DeviceRole
from netbox_topology_views.models import RoleImage, IndividualOptions, CoordinateGroup, Coordinate
class PreDeviceRoleSerializer(ModelSerializer):
class TopologyDummySerializer(ModelSerializer):
class Meta:
model = Device
fields = ("id", "name")
class RoleImageSerializer(ModelSerializer):
class Meta:
model = RoleImage
fields = ("role", "image")
class DeviceRoleSerializer(ModelSerializer):
class Meta:
model = DeviceRole
fields = ('id', 'name')
fields = ("name", "slug", "color", "vm_role", "description")
class CoordinateGroupSerializer(NetBoxModelSerializer):
class Meta:
model = CoordinateGroup
fields = ("name", "description")
class CoordinateSerializer(NetBoxModelSerializer):
class Meta:
model = Coordinate
fields = ("x", "y")
class IndividualOptionsSerializer(NetBoxModelSerializer):
class Meta:
model = IndividualOptions
fields = ("ignore_cable_type", "save_coords", "show_unconnected", "show_cables", "show_logical_connections", "show_single_cable_logical_conns", "show_neighbors", "show_circuit", "show_power", "show_wireless", "draw_default_layout")
+7 -5
View File
@@ -1,9 +1,11 @@
from rest_framework import routers
from netbox.api.routers import NetBoxRouter
from .views import PreSelectDeviceRolesViewSet, SearchViewSet
from netbox_topology_views.api import views
router = routers.DefaultRouter()
router.register('preselectdeviceroles', PreSelectDeviceRolesViewSet)
router.register('search', SearchViewSet, basename='search')
router = NetBoxRouter()
router.register("save-coords", views.SaveCoordsViewSet)
router.register("images", views.SaveRoleImageViewSet)
router.register("xml-export", views.ExportTopoToXML)
urlpatterns = router.urls
+179 -72
View File
@@ -1,89 +1,196 @@
from rest_framework.viewsets import ModelViewSet, ViewSet, ReadOnlyModelViewSet
from typing import Dict
from circuits.models import Circuit
from dcim.models import Device, DeviceRole, PowerFeed, PowerPanel
from django.conf import settings
from django.contrib.auth.mixins import PermissionRequiredMixin
from django.contrib.contenttypes.models import ContentType
from django.http import HttpResponse, JsonResponse
from rest_framework.decorators import action
from rest_framework.response import Response
from rest_framework.viewsets import ReadOnlyModelViewSet, ViewSet
from .serializers import PreDeviceRoleSerializer
from django.conf import settings
from netbox_topology_views.api.serializers import (
RoleImageSerializer,
TopologyDummySerializer,
)
from netbox_topology_views.models import RoleImage, IndividualOptions, CoordinateGroup, Coordinate
from netbox_topology_views.views import get_topology_data
from netbox_topology_views.utils import get_image_from_url, export_data_to_xml, get_query_settings
from netbox_topology_views.filters import DeviceFilterSet
from utilities.api import IsAuthenticatedOrLoginNotRequired
class SaveCoordsViewSet(PermissionRequiredMixin, ReadOnlyModelViewSet):
permission_required = 'netbox_topology_views.change_coordinate'
from dcim.models import DeviceRole, Device, Cable
queryset = Device.objects.none()
serializer_class = TopologyDummySerializer
@action(detail=False, methods=["patch"])
def save_coords(self, request):
if not settings.PLUGINS_CONFIG["netbox_topology_views"][
"allow_coordinates_saving"
]:
return Response({"status": "not allowed to save coords"}, status=500)
class PreSelectDeviceRolesViewSet(ReadOnlyModelViewSet):
preselected_device_roles_raw = settings.PLUGINS_CONFIG["netbox_topology_views"]["preselected_device_roles"]
preselected_device_roles = preselected_device_roles_raw.split(",")
queryset = DeviceRole.objects.filter(name__in=preselected_device_roles)
serializer_class = PreDeviceRoleSerializer
device_id: str = request.data.get("node_id", None)
x_coord = request.data.get("x", None)
y_coord = request.data.get("y", None)
group_id = request.data.get("group", "None")
class SearchViewSet(ViewSet):
_ignore_model_permissions = True
permission_classes = [IsAuthenticatedOrLoginNotRequired]
actual_device = None
if device_id.startswith("c"):
device_id = device_id.lstrip("c")
actual_device = Circuit.objects.get(id=device_id)
elif device_id.startswith("p"):
device_id = device_id.lstrip("p")
actual_device = PowerPanel.objects.get(id=device_id)
elif device_id.startswith("f"):
device_id = device_id.lstrip("f")
actual_device = PowerFeed.objects.get(id=device_id)
elif device_id.isnumeric():
actual_device = Device.objects.get(id=device_id)
def _filter(self, site, role, name):
filter_devices = Device.objects.all()
if name is not None:
filter_devices = filter_devices.filter(name__contains=name)
if site is not None:
filter_devices = filter_devices.filter(site__id__in=site)
if role is not None:
filter_devices = filter_devices.filter(device_role__id__in=role)
return filter_devices
if not actual_device:
return Response({"status": "invalid node_id in body"}, status=400)
if group_id is None or group_id == "default":
group_id = Coordinate.get_or_create_default_group(group_id)
if not group_id:
return Response(
{"status": "Error while creating default group."}, status=500
)
@action(detail=False, methods=['post'])
def search(self, request):
name = None
sites = None
devicerole = None
if "devicerole" in request.data:
if request.data["devicerole"]:
devicerole = request.data["devicerole"]
if "sites" in request.data:
if request.data["sites"]:
sites = request.data["sites"]
if "name" in request.data:
if request.data["name"]:
name = request.data["name"]
try:
if CoordinateGroup.objects.filter(pk=group_id):
group = CoordinateGroup.objects.get(pk=group_id)
# Hen-and-egg-problem. Thanks, Django! By default, Django updates records that
# already exist and inserts otherwise. This does not work with our
# unique_together key if no pk is given. But: No record, no pk.
if not Coordinate.objects.filter(group=group, device=actual_device):
# Unique group/device pair does not exist. Prepare new data set
coords = Coordinate(group=group, device=actual_device, x=x_coord, y=y_coord)
else:
# Unique group/device pair already exists. Update data
coords = Coordinate(pk=Coordinate.objects.get(group=group, device=actual_device).pk, group=group, device=actual_device, x=x_coord, y=y_coord)
coords.save()
except:
return Response(
{"status": "Coordinates could not be saved."}, status=500
)
devices = self._filter(sites, devicerole, name)
nodes = []
edges = []
edge_ids = 0
cable_ids = []
for device in devices:
cables = device.get_cables()
for cable in cables:
if cable.id not in cable_ids:
cable_ids.append(cable.id)
edge_ids += 1
edge = {}
edge["id"] = edge_ids
edge["from"] = cable.termination_a.device.id
edge["to"] = cable.termination_b.device.id
edge["title"] = "Connection between <br> " + cable.termination_a.device.name + " [" + cable.termination_a.name + "]<br>" + cable.termination_b.device.name + " [" + cable.termination_b.name + "]"
edges.append(edge)
node = {}
node["id"] = device.id
node["name"] = device.name
node["label"] = device.name + device.device_type.display_name
node["shape"] = 'image'
if device.device_role.slug in settings.PLUGINS_CONFIG["netbox_topology_views"]["device_img"]:
node["image"] = '/static/netbox_topology_views/img/' + device.device_role.slug + ".png"
return Response({"status": "saved coords"})
class ExportTopoToXML(PermissionRequiredMixin, ViewSet):
permission_required = ("dcim.view_site", "dcim.view_device")
queryset = Device.objects.none()
serializer_class = TopologyDummySerializer
def list(self, request):
self.filterset = DeviceFilterSet
self.queryset = Device.objects.all().select_related(
"device_type", "role"
)
self.queryset = self.filterset(request.GET, self.queryset).qs
individualOptions, created = IndividualOptions.objects.get_or_create(
user_id=request.user.id,
)
if request.GET:
save_coords, show_unconnected, show_power, show_circuit, show_logical_connections, show_single_cable_logical_conns, show_cables, show_wireless, show_neighbors = get_query_settings(request)
if 'group' not in request.query_params:
group_id = "default"
else:
node["image"] = "/static/netbox_topology_views/img/role-unknown.png"
group_id = request.query_params["group"]
topo_data = get_topology_data(
queryset=self.queryset,
individualOptions=individualOptions,
save_coords=save_coords,
show_unconnected=show_unconnected,
show_cables=show_cables,
show_logical_connections=show_logical_connections,
show_single_cable_logical_conns=show_single_cable_logical_conns,
show_neighbors=show_neighbors,
show_circuit=show_circuit,
show_power=show_power,
show_wireless=show_wireless,
group_id=group_id,
)
xml_data = export_data_to_xml(topo_data).decode('utf-8')
for device_custom_field in device.custom_field_values.all():
if device_custom_field.field.name == "coordinates":
cords = device_custom_field.serialized_value.split(";")
node["x"] = int(cords[0])
node["y"] = int(cords[1])
node["physics"] = False
return HttpResponse(xml_data, content_type="application/xml; charset=utf-8")
else:
return JsonResponse(
{"status": "Missing or malformed request parameters"}, status=400
)
nodes.append(node)
class SaveRoleImageViewSet(PermissionRequiredMixin, ReadOnlyModelViewSet):
queryset = DeviceRole.objects.none()
serializer_class = RoleImageSerializer
permission_required = (
"dcim.add_device_role",
"dcim.change_device_role",
)
results = {}
results["nodes"] = nodes
results["edges"] = edges
@action(detail=False, methods=["post"])
def save(self, request):
if not isinstance(request.data, dict):
return JsonResponse(
{"status": "Missing or malformed request body"}, status=400
)
return Response(results)
device_roles = {
k: v.removeprefix(settings.STATIC_URL)
for k, v in request.data.items()
if k.isnumeric()}
content_type_ids = {
k[2:]: v.removeprefix(settings.STATIC_URL)
for k, v in request.data.items()
if k.startswith("ct") and k[2:].isnumeric()
}
roles: Dict[int, DeviceRole] = DeviceRole.objects.in_bulk(device_roles.keys())
content_types: Dict[int, ContentType] = ContentType.objects.in_bulk(
content_type_ids.keys()
)
if len(roles) != len(device_roles):
difference = set(device_roles) - set(roles.keys())
return JsonResponse(
{"status": f"Got unknown device role ids: {difference}"},
status=400,
)
if len(content_types) != len(content_type_ids):
difference = set(content_type_ids) - set(content_types.keys())
return JsonResponse(
{"status": f"Got unknown content type ids: {difference}"},
status=400,
)
if device_roles:
device_role_ct = ContentType.objects.get_for_model(DeviceRole)
for id, url in device_roles.items():
RoleImage.objects.update_or_create(
{
"content_type_id": device_role_ct.pk,
"object_id": id,
"image": str(get_image_from_url(url)),
},
object_id=id,
)
for content_type_id, url in content_type_ids.items():
RoleImage.objects.update_or_create(
{
"content_type_id": content_type_id,
"image": str(get_image_from_url(url)),
},
content_type_id=content_type_id,
)
return JsonResponse({"status": "Ok"})
+77
View File
@@ -0,0 +1,77 @@
import django_filters
from dcim.choices import DeviceStatusChoices
from dcim.models import Device, DeviceRole, Location, Rack, Region, Site
from django.db.models import Q
from netbox.filtersets import NetBoxModelFilterSet
from tenancy.filtersets import TenancyFilterSet
from utilities.filters import TreeNodeMultipleChoiceFilter
from netbox_topology_views.models import CoordinateGroup, Coordinate
class DeviceFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
q = django_filters.CharFilter(
method="search",
label="Search",
)
role_id = django_filters.ModelMultipleChoiceFilter(
field_name="role_id",
queryset=DeviceRole.objects.all(),
label="Role (ID)",
)
region_id = TreeNodeMultipleChoiceFilter(
queryset=Region.objects.all(),
field_name="site__region",
lookup_expr="in",
label="Region (ID)",
)
site_id = django_filters.ModelMultipleChoiceFilter(
queryset=Site.objects.all(),
label="Site (ID)",
)
location_id = TreeNodeMultipleChoiceFilter(
queryset=Location.objects.all(),
field_name="location",
lookup_expr="in",
label="Location (ID)",
)
rack_id = django_filters.ModelMultipleChoiceFilter(
queryset=Rack.objects.all(),
field_name="rack_id",
label="Rack (ID)",
)
status = django_filters.MultipleChoiceFilter(
choices=DeviceStatusChoices,
null_value=None,
)
class Meta:
model = Device
fields = ["id", "name"]
def search(self, queryset, name, value):
"""Perform the filtered search."""
if not value.strip():
return queryset
qs_filter = Q(name__icontains=value)
return queryset.filter(qs_filter)
class CoordinatesFilterSet(NetBoxModelFilterSet):
group = django_filters.ModelMultipleChoiceFilter(
queryset = CoordinateGroup.objects.all(),
)
device = django_filters.ModelMultipleChoiceFilter(
queryset = Device.objects.all(),
)
class Meta:
model = Coordinate
fields = ['id', 'group', 'device', 'x', 'y']
def search(self, queryset, name, value):
"""Perform the filtered search."""
if not value.strip():
return queryset
return queryset.filter(
Q(group__name__icontains=value) |
Q(device__name__icontains=value)
)
+336
View File
@@ -0,0 +1,336 @@
from cProfile import label
import imp
from django import forms
from django.conf import settings
from django.utils.translation import gettext as _
from dcim.models import Device, Site, Region, DeviceRole, Location, Rack
from django import forms
from dcim.choices import DeviceStatusChoices
from tenancy.models import TenantGroup, Tenant
from tenancy.forms import TenancyFilterForm
from django.conf import settings
from netbox.forms import NetBoxModelFilterSetForm, NetBoxModelForm, NetBoxModelImportForm
from utilities.forms.fields import (
TagFilterField,
DynamicModelMultipleChoiceField
)
from netbox_topology_views.models import IndividualOptions, CoordinateGroup, Coordinate
class DeviceFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
model = Device
fieldsets = (
(
None,
(
"q",
"filter_id",
),
),
(
None,
(
"group",
"save_coords",
"show_unconnected",
"show_cables",
"show_logical_connections",
"show_single_cable_logical_conns",
"show_neighbors",
"show_circuit",
"show_power",
"show_wireless",
),
),
(
None,
(
"tenant_group_id",
"tenant_id",
),
),
(None, ("region_id", "site_id", "location_id", "rack_id")),
(
None,
(
"role_id",
"id",
"status",
),
),
(None, ("tag",)),
)
group = forms.ModelChoiceField(
queryset=CoordinateGroup.objects.all(),
required=False,
label=_("Coordinate group"),
)
region_id = DynamicModelMultipleChoiceField(
queryset=Region.objects.all(), required=False, label=_("Region")
)
role_id = DynamicModelMultipleChoiceField(
queryset=DeviceRole.objects.all(), required=False, label=_("Device Role")
)
id = DynamicModelMultipleChoiceField(
queryset=Device.objects.all(),
required=False,
label=_("Device"),
query_params={
"location_id": "$location_id",
"region_id": "$region_id",
"site_id": "$site_id",
"role_id": "$role_id",
},
)
site_id = DynamicModelMultipleChoiceField(
queryset=Site.objects.all(),
required=False,
query_params={
"region_id": "$region_id",
},
label=_("Site"),
)
location_id = DynamicModelMultipleChoiceField(
queryset=Location.objects.all(),
required=False,
query_params={
"region_id": "$region_id",
"site_id": "$site_id",
},
label=_("Location"),
)
rack_id = DynamicModelMultipleChoiceField(
queryset=Rack.objects.all(),
required=False,
query_params={
"region_id": "$region_id",
"site_id": "$site_id",
"location_id": "$location_id",
},
label=_("Rack"),
)
status = forms.MultipleChoiceField(
choices=DeviceStatusChoices, required=False, label=_("Device Status")
)
tag = TagFilterField(model)
# options
save_coords = forms.BooleanField(
label=_("Save Coordinates"),
required=False,
disabled=(not settings.PLUGINS_CONFIG["netbox_topology_views"]["allow_coordinates_saving"] or settings.PLUGINS_CONFIG["netbox_topology_views"]["always_save_coordinates"]),
initial=(settings.PLUGINS_CONFIG["netbox_topology_views"]["always_save_coordinates"])
)
show_unconnected = forms.BooleanField(
label=_("Show Unconnected"), required=False, initial=False
)
show_cables = forms.BooleanField(
label =_("Show Cables"), required=False, initial=False
)
show_logical_connections = forms.BooleanField(
label =_("Show Logical Connections"), required=False, initial=False
)
show_single_cable_logical_conns = forms.BooleanField(
label =_("Show redundant Cable and Logical Connection"), required=False, initial=False
)
show_neighbors = forms.BooleanField(
label =_("Show Neighbors"), required=False, initial=False
)
show_circuit = forms.BooleanField(
label=_("Show Circuit Terminations"), required=False, initial=False
)
show_power = forms.BooleanField(
label=_("Show Power Feeds"), required=False, initial=False
)
show_wireless = forms.BooleanField(
label =_("Show Wireless Links"), required=False, initial=False
)
class CoordinateGroupsForm(NetBoxModelForm):
fieldsets = (
('Group Details', ('name', 'description')),
)
class Meta:
model = CoordinateGroup
fields = ('name', 'description')
class CoordinateGroupsImportForm(NetBoxModelImportForm):
class Meta:
model = CoordinateGroup
fields = ('name', 'description')
class CoordinatesForm(NetBoxModelForm):
fieldsets = (
('Coordinate', ('group', 'device', 'x', 'y')),
)
class Meta:
model = Coordinate
fields = ('group', 'device', 'x', 'y')
class CoordinatesImportForm(NetBoxModelImportForm):
class Meta:
model = Coordinate
fields = ('group', 'device', 'x', 'y')
class CoordinatesFilterForm(NetBoxModelFilterSetForm):
model = Coordinate
fieldsets = (
(None, ('q', 'filter_id')),
('Coordinates', ('group', 'device', 'x', 'y'))
)
group = forms.ModelMultipleChoiceField(
queryset=CoordinateGroup.objects.all(),
required=False
)
device = DynamicModelMultipleChoiceField(
queryset=Device.objects.all(),
required=False
)
x = forms.IntegerField(
required=False
)
y = forms.IntegerField(
required=False
)
class IndividualOptionsForm(NetBoxModelForm):
fieldsets = (
(
None,
(
"user_id",
"ignore_cable_type",
"preselected_device_roles",
"preselected_tags",
"save_coords",
"show_unconnected",
"show_cables",
"show_logical_connections",
"show_single_cable_logical_conns",
"show_neighbors",
"show_circuit",
"show_power",
"show_wireless",
"draw_default_layout",
),
),
)
user_id = forms.CharField(widget=forms.HiddenInput())
ignore_cable_type = forms.MultipleChoiceField(
label=_("Ignore Termination Types"),
required=False,
choices=IndividualOptions.CHOICES,
help_text=_("Choose Termination Types that you want to be ignored. "
"If any ignored Termination Type is part of a connection, the "
"cable is not displayed.")
)
preselected_device_roles = DynamicModelMultipleChoiceField(
label=_("Preselected Device Role"),
queryset=DeviceRole.objects.all(),
required=False,
help_text=_("Select Device Roles that you want to have "
"preselected in the filter tab.")
)
preselected_tags = forms.ModelMultipleChoiceField(
label=_("Preselected Tags"),
queryset=Device.tags.all(),
required=False,
help_text=_("Select Tags that you want to have "
"preselected in the filter tab.")
)
save_coords = forms.BooleanField(
label=_("Save Coordinates"),
required=False,
initial=False,
help_text=_("Coordinates of nodes will be saved if dragged to a different "
"position. This option depends on parameters set in the config file. "
"It has no effect if 'allow_coordinates_saving' has not been set or "
" 'always_save_coordinates' has been set.")
)
show_unconnected = forms.BooleanField(
label=_("Show Unconnected"),
required=False,
initial=False,
help_text=_("Draws devices that have no connections or for which no "
"connection is displayed. This option depends on other parameters "
"like 'Show Cables' and 'Show Logical Connections'.")
)
show_cables = forms.BooleanField(
label =_("Show Cables"),
required=False,
initial=False,
help_text=_("Displays connections between interfaces that are connected "
"with one or more cables. These connections are displayed as solid "
"lines in the color of the cable.")
)
show_logical_connections = forms.BooleanField(
label =_("Show Logical Connections"),
required=False,
initial=False,
help_text=_("Displays connections between devices that are not "
"directly connected (e.g. via patch panels). These connections "
"are displayed as yellow dotted lines.")
)
show_single_cable_logical_conns = forms.BooleanField(
label = ("Show redundant Cable and Logical Connection"),
required = False,
initial=False,
help_text=_("Shows a logical connection (in addition to a cable), "
"even if a cable is directly connected. Leaving this option "
"disabled prevents that redundant display. This option only "
"has an effect if 'Show Logical Connections' is activated.")
)
show_neighbors = forms.BooleanField(
label =_("Show Neighbors"),
required=False,
initial=False,
help_text=_("Adds neighbors to the filter result set automatically. "
"Link peers will be added if 'Show Cables' is ticked, far-end "
"terminations will be added if 'Show Logical Connections' is ticked.")
)
show_circuit = forms.BooleanField(
label=_("Show Circuit Terminations"),
required=False,
initial=False,
help_text=_("Displays connections between circuit terminations. "
"These connections are displayed as blue dashed lines.")
)
show_power = forms.BooleanField(
label=_("Show Power Feeds"),
required=False,
initial=False,
help_text=_("Displays connections between power outlets and power "
"ports. These connections are displayed as solid lines in the "
"color of the cable. This option depends on 'Show Cables'.")
)
show_wireless = forms.BooleanField(
label =_("Show Wireless Links"),
required=False,
initial=False,
help_text=_("Displays wireless connections. These connections are "
"displayed as blue dotted lines.")
)
draw_default_layout = forms.BooleanField(
label = ("Draw Default Layout"),
required=False,
initial=False,
help_text=_("Enable this option if you want to draw the topology on "
"the initial load (when you go to the topology plugin page).")
)
class Meta:
model = IndividualOptions
fields = [
'user_id', 'ignore_cable_type', 'preselected_device_roles', 'preselected_tags', 'save_coords', 'show_unconnected', 'show_cables', 'show_logical_connections', 'show_single_cable_logical_conns', 'show_neighbors', 'show_circuit', 'show_power', 'show_wireless', 'draw_default_layout'
]
@@ -0,0 +1,31 @@
# Generated by Django 4.0.8 on 2022-12-06 13:07
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
initial = True
dependencies = [
('contenttypes', '0002_remove_content_type_name'),
]
operations = [
migrations.CreateModel(
name='RoleImage',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False)),
('created', models.DateTimeField(auto_now_add=True, null=True)),
('last_updated', models.DateTimeField(auto_now=True, null=True)),
('image', models.CharField(max_length=255)),
('object_id', models.PositiveIntegerField(blank=True, null=True)),
('content_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contenttypes.contenttype')),
],
),
migrations.AddIndex(
model_name='roleimage',
index=models.Index(fields=['content_type', 'object_id'], name='netbox_topo_content_9d87d4_idx'),
),
]
@@ -0,0 +1,42 @@
# Generated by Django 4.1.4 on 2023-03-19 14:13
from django.db import migrations, models
import taggit.managers
import utilities.json
class Migration(migrations.Migration):
dependencies = [
('dcim', '0167_module_status'),
('extras', '0084_staging'),
('netbox_topology_views', '0001_initial'),
]
operations = [
migrations.CreateModel(
name='IndividualOptions',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False)),
('created', models.DateTimeField(auto_now_add=True, null=True)),
('last_updated', models.DateTimeField(auto_now=True, null=True)),
('custom_field_data', models.JSONField(blank=True, default=dict, encoder=utilities.json.CustomFieldJSONEncoder)),
('user_id', models.IntegerField(null=True, unique=True)),
('ignore_cable_type', models.CharField(blank=True, max_length=255)),
('show_unconnected', models.BooleanField(default=False)),
('show_cables', models.BooleanField(default=False)),
('show_logical_connections', models.BooleanField(default=False)),
('show_single_cable_logical_conns', models.BooleanField(default=False)),
('show_circuit', models.BooleanField(default=False)),
('show_power', models.BooleanField(default=False)),
('show_wireless', models.BooleanField(default=False)),
('draw_default_layout', models.BooleanField(default=False)),
('preselected_device_roles', models.ManyToManyField(blank=True, db_table='netbox_topology_views_individualoptions_preselected_device', related_name='+', to='dcim.devicerole')),
('preselected_tags', models.ManyToManyField(blank=True, db_table='netbox_topology_views_individualoptions_preselected_tag', related_name='+', to='extras.tag')),
('tags', taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag')),
],
options={
'abstract': False,
},
),
]
@@ -0,0 +1,18 @@
# Generated by Django 4.1.8 on 2023-04-29 09:17
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('netbox_topology_views', '0002_individualoptions'),
]
operations = [
migrations.AddField(
model_name='individualoptions',
name='show_neighbors',
field=models.BooleanField(default=False),
),
]
@@ -0,0 +1,49 @@
# Generated by Django 4.1.8 on 2023-05-01 16:13
from django.db import migrations, models
import django.db.models.deletion
import taggit.managers
import utilities.json
class Migration(migrations.Migration):
dependencies = [
('netbox_topology_views', '0003_individualoptions_show_neighbors'),
]
operations = [
migrations.CreateModel(
name='CoordinateGroup',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False)),
('created', models.DateTimeField(auto_now_add=True, null=True)),
('last_updated', models.DateTimeField(auto_now=True, null=True)),
('custom_field_data', models.JSONField(blank=True, default=dict, encoder=utilities.json.CustomFieldJSONEncoder)),
('name', models.CharField(max_length=100, unique=True)),
('description', models.CharField(blank=True, max_length=255)),
('tags', taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag')),
],
options={
'ordering': ['name'],
},
),
migrations.CreateModel(
name='Coordinate',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False)),
('created', models.DateTimeField(auto_now_add=True, null=True)),
('last_updated', models.DateTimeField(auto_now=True, null=True)),
('custom_field_data', models.JSONField(blank=True, default=dict, encoder=utilities.json.CustomFieldJSONEncoder)),
('x', models.IntegerField()),
('y', models.IntegerField()),
('device', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='dcim.device')),
('group', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='netbox_topology_views.coordinategroup')),
('tags', taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag')),
],
options={
'ordering': ['group', 'device'],
'unique_together': {('device', 'group')},
},
),
]
@@ -0,0 +1,18 @@
# Generated by Django 4.1.8 on 2023-05-23 20:13
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('netbox_topology_views', '0004_coordinategroup_coordinate'),
]
operations = [
migrations.AddField(
model_name='individualoptions',
name='save_coords',
field=models.BooleanField(default=False),
),
]
+233 -2
View File
@@ -1,3 +1,234 @@
from django.db import models
from pathlib import Path
from typing import Optional
# no modeles yet
from dcim.models import Device, DeviceRole
from extras.models import Tag
from django.conf import settings
from django.contrib.contenttypes.models import ContentType
from django.db import models
from django.templatetags.static import static
from django.urls import reverse
from netbox.models import NetBoxModel
from netbox.models.features import (
ChangeLoggingMixin,
ExportTemplatesMixin,
WebhooksMixin,
)
from netbox_topology_views.utils import (
CONF_IMAGE_DIR,
IMAGE_DIR,
Role,
find_image_url,
get_model_role,
image_static_url,
)
class RoleImage(ChangeLoggingMixin, ExportTemplatesMixin, WebhooksMixin):
class Meta:
indexes = [
models.Index(fields=["content_type", "object_id"]),
]
objects: "models.Manager[RoleImage]"
image = models.CharField("Path within the netbox static directory", max_length=255)
content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
object_id = models.PositiveIntegerField(null=True, blank=True)
__role: Optional[Role] = None
@property
def role(self) -> Role:
if self.__role:
return self.__role
model_class = self.content_type.model_class()
if not model_class:
raise ValueError(f"Invalid content type: {self.content_type}")
if model_class == DeviceRole:
device_role: DeviceRole = DeviceRole.objects.get(pk=self.object_id)
self.__role = Role(slug=device_role.slug, name=device_role.name)
return self.__role
self.__role = get_model_role(model_class)
return self.__role
def __str__(self):
return f"{self.role} - {self.image}"
def get_image(self) -> Path:
"""Get Icon
returns the model's image's absolute path in the filesystem
raises ValueError if the file cannot be found
"""
path = Path(settings.STATIC_ROOT) / self.image
if not path.exists():
raise ValueError(f"{self.role} path '{path}' does not exists")
return path
def get_default_image(self, dir: Path = CONF_IMAGE_DIR):
"""Get default image
will attempt to find image in given directory with any file extension,
otherwise will try to find a `role-unknown` image
fallback is `STATIC_ROOT/netbox_topology_views/img/role-unknown.png`
"""
if url := find_image_url(self.role.slug, dir):
return url
# fallback to default role unknown image
return image_static_url(IMAGE_DIR / "role-unknown.png")
def get_image_url(self, dir: Path = CONF_IMAGE_DIR) -> str:
try:
self.get_image()
except ValueError:
return self.get_default_image(dir)
return static(f"/{self.image}")
class CoordinateGroup(NetBoxModel):
"""
A coordinate group is used to display the topology for a particular group.
This allows different visualizations with the same devices.
"""
name = models.CharField(
max_length=100,
unique=True,
)
description = models.CharField(
max_length=255,
blank = True,
)
class Meta:
ordering = ['name']
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse('plugins:netbox_topology_views:coordinategroup', args=[self.pk])
class Coordinate(NetBoxModel):
"""
Coordinates are being used to place devices in a topology view onto a certain
position. Devices belong to one or more coordinate groups. They have to
be unique together.
"""
device = models.ForeignKey(Device, on_delete=models.CASCADE)
group = models.ForeignKey(CoordinateGroup, on_delete=models.CASCADE)
x = models.IntegerField(
help_text='X-coordinate of the device (horizontal) on the canvas. '
'Smaller values correspond to a position further up on the monitor.',
)
y = models.IntegerField(
help_text='Y-coordinate of the device (vertical) on the canvas. '
'Smaller values correspond to a position further to the left on the monitor.',
)
def get_or_create_default_group(group_id):
# Default group named "default" must always exist in order to make sure
# that coordinate values can be stored even if no coordinate group has been
# selected. The default group will be added automatically if it does not exist.
try:
if CoordinateGroup.objects.filter(name="default"):
group = CoordinateGroup.objects.get(name="default")
group_id = group.pk
else:
group = CoordinateGroup(
name="default",
description="Automatically generated default group. If you delete "
"this group, all default coordinates are gone for good but "
"the group itself will be re-created."
)
group.save()
group_id = group.pk
except:
return False
return group_id
class Meta:
ordering = ['group', 'device']
unique_together = ('device', 'group')
def __str__(self):
return f'{self.x};{self.y}'
def get_absolute_url(self):
return reverse('plugins:netbox_topology_views:coordinate', args=[self.pk])
class IndividualOptions(NetBoxModel):
CHOICES = (
('interface', 'interface'),
('front port', 'front port'),
('rear port', 'rear port'),
('power outlet', 'power outlet'),
('power port', 'power port'),
('console port', 'console port'),
('console server port', 'console server port'),
)
user_id = models.IntegerField(
null=True,
unique=True
)
ignore_cable_type = models.CharField(
max_length = 255,
blank = True,
)
preselected_device_roles = models.ManyToManyField(
to='dcim.DeviceRole',
related_name='+',
blank=True,
db_table='netbox_topology_views_individualoptions_preselected_device',
)
preselected_tags = models.ManyToManyField(
to='extras.Tag',
related_name='+',
blank=True,
db_table='netbox_topology_views_individualoptions_preselected_tag',
)
save_coords = models.BooleanField(
default=False
)
show_unconnected = models.BooleanField(
default=False
)
show_cables = models.BooleanField(
default=False
)
show_logical_connections = models.BooleanField(
default=False
)
show_single_cable_logical_conns = models.BooleanField(
default=False
)
show_neighbors = models.BooleanField(
default=False
)
show_circuit = models.BooleanField(
default=False
)
show_power = models.BooleanField(
default=False
)
show_wireless = models.BooleanField(
default=False
)
draw_default_layout = models.BooleanField(
default=False
)
def __str___(self):
return f"{self.user_id}"
+52 -6
View File
@@ -1,10 +1,56 @@
from extras.plugins import PluginMenuButton, PluginMenuItem
from extras.plugins import PluginMenu, PluginMenuItem, PluginMenuButton
from utilities.choices import ButtonColorChoices
menu_items = (
PluginMenuItem(
link='plugins:netbox_topology_views:home',
link_text='Topology',
buttons=()
coordinategroup_buttons = (
PluginMenuButton(
link='plugins:netbox_topology_views:coordinategroup_add',
title='Add',
icon_class='mdi mdi-plus-thick',
color=ButtonColorChoices.GREEN,
permissions=['netbox_topology_views.add_coordinategroup']
),
PluginMenuButton(
link='plugins:netbox_topology_views:coordinategroup_import',
title='Import',
icon_class='mdi mdi-upload',
color=ButtonColorChoices.CYAN,
permissions=['netbox_topology_views.add_coordinategroup']
)
)
coordinate_buttons = (
PluginMenuButton(
link='plugins:netbox_topology_views:coordinate_add',
title='Add',
icon_class='mdi mdi-plus-thick',
color=ButtonColorChoices.GREEN,
permissions=['netbox_topology_views.add_coordinate']
),
PluginMenuButton(
link='plugins:netbox_topology_views:coordinate_import',
title='Import',
icon_class='mdi mdi-upload',
color=ButtonColorChoices.CYAN,
permissions=['netbox_topology_views.add_coordinate']
)
)
menu = PluginMenu(
label='Topology Views',
icon_class="mdi mdi-sitemap",
groups=(
('TOPOLOGY',
(
PluginMenuItem(link="plugins:netbox_topology_views:home", link_text="Topology", permissions=["dcim.view_site", "dcim.view_device"]),
PluginMenuItem(link="plugins:netbox_topology_views:coordinategroup_list", link_text="Coordinate Groups", buttons=coordinategroup_buttons, permissions=['netbox_topology_views.view_coordinategroup']),
PluginMenuItem(link="plugins:netbox_topology_views:coordinate_list", link_text="Coordinates", buttons=coordinate_buttons, permissions=['netbox_topology_views.view_coordinate']),
),
),
('PREFERENCES',
(
PluginMenuItem(link="plugins:netbox_topology_views:images", link_text="Images", permissions=[ "dcim.view_site","dcim.view_device_role"]),
PluginMenuItem(link="plugins:netbox_topology_views:individualoptions", link_text="Individual Options", permissions=['netbox_topology_views.change_individualoptions']),
),
),
),
)
+18
View File
@@ -0,0 +1,18 @@
from netbox.search import SearchIndex, register_search
from .models import CoordinateGroup, Coordinate
@register_search
class CoordinateGroupsIndex(SearchIndex):
model = CoordinateGroup
fields = (
('name', 100),
('description', 2000),
)
@register_search
class CoordinatesIndex(SearchIndex):
model = Coordinate
fields = (
('group', 100),
('device', 200),
)
+14
View File
@@ -0,0 +1,14 @@
from typing import Type
from dcim.models import DeviceRole
from django.contrib.contenttypes.models import ContentType
from django.db.models.signals import pre_delete
from django.dispatch import receiver
from netbox_topology_views.models import RoleImage
@receiver(pre_delete, sender=DeviceRole, dispatch_uid="delete_hanging_role_image")
def delete_hanging_role_image(sender: Type[DeviceRole], instance: DeviceRole, **kwargs):
ct = ContentType.objects.get_for_model(sender)
RoleImage.objects.filter(content_type=ct, object_id=instance.id).delete()
@@ -1 +1 @@
#visgraph{height:70vh}
#visgraph{height:64vh}html[data-netbox-color-mode=dark] #visgraph{background-color:#212529}.image-dropdown img{width:64px;height:64px}.image-dropdown-content{display:flex;flex-wrap:wrap;gap:.5rem;padding-inline:.5rem;width:50vw;max-width:32rem}.image-dropdown-content>img{cursor:pointer}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,427 @@
Attribution-ShareAlike 4.0 International
=======================================================================
Creative Commons Corporation ("Creative Commons") is not a law firm and
does not provide legal services or legal advice. Distribution of
Creative Commons public licenses does not create a lawyer-client or
other relationship. Creative Commons makes its licenses and related
information available on an "as-is" basis. Creative Commons gives no
warranties regarding its licenses, any material licensed under their
terms and conditions, or any related information. Creative Commons
disclaims all liability for damages resulting from their use to the
fullest extent possible.
Using Creative Commons Public Licenses
Creative Commons public licenses provide a standard set of terms and
conditions that creators and other rights holders may use to share
original works of authorship and other material subject to copyright
and certain other rights specified in the public license below. The
following considerations are for informational purposes only, are not
exhaustive, and do not form part of our licenses.
Considerations for licensors: Our public licenses are
intended for use by those authorized to give the public
permission to use material in ways otherwise restricted by
copyright and certain other rights. Our licenses are
irrevocable. Licensors should read and understand the terms
and conditions of the license they choose before applying it.
Licensors should also secure all rights necessary before
applying our licenses so that the public can reuse the
material as expected. Licensors should clearly mark any
material not subject to the license. This includes other CC-
licensed material, or material used under an exception or
limitation to copyright. More considerations for licensors:
wiki.creativecommons.org/Considerations_for_licensors
Considerations for the public: By using one of our public
licenses, a licensor grants the public permission to use the
licensed material under specified terms and conditions. If
the licensor's permission is not necessary for any reason--for
example, because of any applicable exception or limitation to
copyright--then that use is not regulated by the license. Our
licenses grant only permissions under copyright and certain
other rights that a licensor has authority to grant. Use of
the licensed material may still be restricted for other
reasons, including because others have copyright or other
rights in the material. A licensor may make special requests,
such as asking that all changes be marked or described.
Although not required by our licenses, you are encouraged to
respect those requests where reasonable. More considerations
for the public:
wiki.creativecommons.org/Considerations_for_licensees
=======================================================================
Creative Commons Attribution-ShareAlike 4.0 International Public
License
By exercising the Licensed Rights (defined below), You accept and agree
to be bound by the terms and conditions of this Creative Commons
Attribution-ShareAlike 4.0 International Public License ("Public
License"). To the extent this Public License may be interpreted as a
contract, You are granted the Licensed Rights in consideration of Your
acceptance of these terms and conditions, and the Licensor grants You
such rights in consideration of benefits the Licensor receives from
making the Licensed Material available under these terms and
conditions.
Section 1 -- Definitions.
a. Adapted Material means material subject to Copyright and Similar
Rights that is derived from or based upon the Licensed Material
and in which the Licensed Material is translated, altered,
arranged, transformed, or otherwise modified in a manner requiring
permission under the Copyright and Similar Rights held by the
Licensor. For purposes of this Public License, where the Licensed
Material is a musical work, performance, or sound recording,
Adapted Material is always produced where the Licensed Material is
synched in timed relation with a moving image.
b. Adapter's License means the license You apply to Your Copyright
and Similar Rights in Your contributions to Adapted Material in
accordance with the terms and conditions of this Public License.
c. BY-SA Compatible License means a license listed at
creativecommons.org/compatiblelicenses, approved by Creative
Commons as essentially the equivalent of this Public License.
d. Copyright and Similar Rights means copyright and/or similar rights
closely related to copyright including, without limitation,
performance, broadcast, sound recording, and Sui Generis Database
Rights, without regard to how the rights are labeled or
categorized. For purposes of this Public License, the rights
specified in Section 2(b)(1)-(2) are not Copyright and Similar
Rights.
e. Effective Technological Measures means those measures that, in the
absence of proper authority, may not be circumvented under laws
fulfilling obligations under Article 11 of the WIPO Copyright
Treaty adopted on December 20, 1996, and/or similar international
agreements.
f. Exceptions and Limitations means fair use, fair dealing, and/or
any other exception or limitation to Copyright and Similar Rights
that applies to Your use of the Licensed Material.
g. License Elements means the license attributes listed in the name
of a Creative Commons Public License. The License Elements of this
Public License are Attribution and ShareAlike.
h. Licensed Material means the artistic or literary work, database,
or other material to which the Licensor applied this Public
License.
i. Licensed Rights means the rights granted to You subject to the
terms and conditions of this Public License, which are limited to
all Copyright and Similar Rights that apply to Your use of the
Licensed Material and that the Licensor has authority to license.
j. Licensor means the individual(s) or entity(ies) granting rights
under this Public License.
k. Share means to provide material to the public by any means or
process that requires permission under the Licensed Rights, such
as reproduction, public display, public performance, distribution,
dissemination, communication, or importation, and to make material
available to the public including in ways that members of the
public may access the material from a place and at a time
individually chosen by them.
l. Sui Generis Database Rights means rights other than copyright
resulting from Directive 96/9/EC of the European Parliament and of
the Council of 11 March 1996 on the legal protection of databases,
as amended and/or succeeded, as well as other essentially
equivalent rights anywhere in the world.
m. You means the individual or entity exercising the Licensed Rights
under this Public License. Your has a corresponding meaning.
Section 2 -- Scope.
a. License grant.
1. Subject to the terms and conditions of this Public License,
the Licensor hereby grants You a worldwide, royalty-free,
non-sublicensable, non-exclusive, irrevocable license to
exercise the Licensed Rights in the Licensed Material to:
a. reproduce and Share the Licensed Material, in whole or
in part; and
b. produce, reproduce, and Share Adapted Material.
2. Exceptions and Limitations. For the avoidance of doubt, where
Exceptions and Limitations apply to Your use, this Public
License does not apply, and You do not need to comply with
its terms and conditions.
3. Term. The term of this Public License is specified in Section
6(a).
4. Media and formats; technical modifications allowed. The
Licensor authorizes You to exercise the Licensed Rights in
all media and formats whether now known or hereafter created,
and to make technical modifications necessary to do so. The
Licensor waives and/or agrees not to assert any right or
authority to forbid You from making technical modifications
necessary to exercise the Licensed Rights, including
technical modifications necessary to circumvent Effective
Technological Measures. For purposes of this Public License,
simply making modifications authorized by this Section 2(a)
(4) never produces Adapted Material.
5. Downstream recipients.
a. Offer from the Licensor -- Licensed Material. Every
recipient of the Licensed Material automatically
receives an offer from the Licensor to exercise the
Licensed Rights under the terms and conditions of this
Public License.
b. Additional offer from the Licensor -- Adapted Material.
Every recipient of Adapted Material from You
automatically receives an offer from the Licensor to
exercise the Licensed Rights in the Adapted Material
under the conditions of the Adapter's License You apply.
c. No downstream restrictions. You may not offer or impose
any additional or different terms or conditions on, or
apply any Effective Technological Measures to, the
Licensed Material if doing so restricts exercise of the
Licensed Rights by any recipient of the Licensed
Material.
6. No endorsement. Nothing in this Public License constitutes or
may be construed as permission to assert or imply that You
are, or that Your use of the Licensed Material is, connected
with, or sponsored, endorsed, or granted official status by,
the Licensor or others designated to receive attribution as
provided in Section 3(a)(1)(A)(i).
b. Other rights.
1. Moral rights, such as the right of integrity, are not
licensed under this Public License, nor are publicity,
privacy, and/or other similar personality rights; however, to
the extent possible, the Licensor waives and/or agrees not to
assert any such rights held by the Licensor to the limited
extent necessary to allow You to exercise the Licensed
Rights, but not otherwise.
2. Patent and trademark rights are not licensed under this
Public License.
3. To the extent possible, the Licensor waives any right to
collect royalties from You for the exercise of the Licensed
Rights, whether directly or through a collecting society
under any voluntary or waivable statutory or compulsory
licensing scheme. In all other cases the Licensor expressly
reserves any right to collect such royalties.
Section 3 -- License Conditions.
Your exercise of the Licensed Rights is expressly made subject to the
following conditions.
a. Attribution.
1. If You Share the Licensed Material (including in modified
form), You must:
a. retain the following if it is supplied by the Licensor
with the Licensed Material:
i. identification of the creator(s) of the Licensed
Material and any others designated to receive
attribution, in any reasonable manner requested by
the Licensor (including by pseudonym if
designated);
ii. a copyright notice;
iii. a notice that refers to this Public License;
iv. a notice that refers to the disclaimer of
warranties;
v. a URI or hyperlink to the Licensed Material to the
extent reasonably practicable;
b. indicate if You modified the Licensed Material and
retain an indication of any previous modifications; and
c. indicate the Licensed Material is licensed under this
Public License, and include the text of, or the URI or
hyperlink to, this Public License.
2. You may satisfy the conditions in Section 3(a)(1) in any
reasonable manner based on the medium, means, and context in
which You Share the Licensed Material. For example, it may be
reasonable to satisfy the conditions by providing a URI or
hyperlink to a resource that includes the required
information.
3. If requested by the Licensor, You must remove any of the
information required by Section 3(a)(1)(A) to the extent
reasonably practicable.
b. ShareAlike.
In addition to the conditions in Section 3(a), if You Share
Adapted Material You produce, the following conditions also apply.
1. The Adapter's License You apply must be a Creative Commons
license with the same License Elements, this version or
later, or a BY-SA Compatible License.
2. You must include the text of, or the URI or hyperlink to, the
Adapter's License You apply. You may satisfy this condition
in any reasonable manner based on the medium, means, and
context in which You Share Adapted Material.
3. You may not offer or impose any additional or different terms
or conditions on, or apply any Effective Technological
Measures to, Adapted Material that restrict exercise of the
rights granted under the Adapter's License You apply.
Section 4 -- Sui Generis Database Rights.
Where the Licensed Rights include Sui Generis Database Rights that
apply to Your use of the Licensed Material:
a. for the avoidance of doubt, Section 2(a)(1) grants You the right
to extract, reuse, reproduce, and Share all or a substantial
portion of the contents of the database;
b. if You include all or a substantial portion of the database
contents in a database in which You have Sui Generis Database
Rights, then the database in which You have Sui Generis Database
Rights (but not its individual contents) is Adapted Material,
including for purposes of Section 3(b); and
c. You must comply with the conditions in Section 3(a) if You Share
all or a substantial portion of the contents of the database.
For the avoidance of doubt, this Section 4 supplements and does not
replace Your obligations under this Public License where the Licensed
Rights include other Copyright and Similar Rights.
Section 5 -- Disclaimer of Warranties and Limitation of Liability.
a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
c. The disclaimer of warranties and limitation of liability provided
above shall be interpreted in a manner that, to the extent
possible, most closely approximates an absolute disclaimer and
waiver of all liability.
Section 6 -- Term and Termination.
a. This Public License applies for the term of the Copyright and
Similar Rights licensed here. However, if You fail to comply with
this Public License, then Your rights under this Public License
terminate automatically.
b. Where Your right to use the Licensed Material has terminated under
Section 6(a), it reinstates:
1. automatically as of the date the violation is cured, provided
it is cured within 30 days of Your discovery of the
violation; or
2. upon express reinstatement by the Licensor.
For the avoidance of doubt, this Section 6(b) does not affect any
right the Licensor may have to seek remedies for Your violations
of this Public License.
c. For the avoidance of doubt, the Licensor may also offer the
Licensed Material under separate terms or conditions or stop
distributing the Licensed Material at any time; however, doing so
will not terminate this Public License.
d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
License.
Section 7 -- Other Terms and Conditions.
a. The Licensor shall not be bound by any additional or different
terms or conditions communicated by You unless expressly agreed.
b. Any arrangements, understandings, or agreements regarding the
Licensed Material not stated herein are separate from and
independent of the terms and conditions of this Public License.
Section 8 -- Interpretation.
a. For the avoidance of doubt, this Public License does not, and
shall not be interpreted to, reduce, limit, restrict, or impose
conditions on any use of the Licensed Material that could lawfully
be made without permission under this Public License.
b. To the extent possible, if any provision of this Public License is
deemed unenforceable, it shall be automatically reformed to the
minimum extent necessary to make it enforceable. If the provision
cannot be reformed, it shall be severed from this Public License
without affecting the enforceability of the remaining terms and
conditions.
c. No term or condition of this Public License will be waived and no
failure to comply consented to unless expressly agreed to by the
Licensor.
d. Nothing in this Public License constitutes or may be interpreted
as a limitation upon, or waiver of, any privileges and immunities
that apply to the Licensor or You, including from the legal
processes of any jurisdiction or authority.
=======================================================================
Creative Commons is not a party to its public licenses.
Notwithstanding, Creative Commons may elect to apply one of its public
licenses to material it publishes and in those instances will be
considered the “Licensor.” The text of the Creative Commons public
licenses is dedicated to the public domain under the CC0 Public Domain
Dedication. Except for the limited purpose of indicating that material
is shared under a Creative Commons public license or as otherwise
permitted by the Creative Commons policies published at
creativecommons.org/policies, Creative Commons does not authorize the
use of the trademark "Creative Commons" or any other trademark or logo
of Creative Commons without its prior written consent including,
without limitation, in connection with any unauthorized modifications
to any of its public licenses or any other arrangements,
understandings, or agreements concerning use of licensed material. For
the avoidance of doubt, this paragraph does not form part of the public
licenses.
Creative Commons may be contacted at creativecommons.org.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.2 KiB

@@ -0,0 +1,141 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="35.465637mm"
height="35.465633mm"
viewBox="0 0 35.465637 35.465634"
version="1.1"
id="svg20924"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="netbox-topology-views-icons.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview20926"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.4723932"
inkscape:cx="1020.3364"
inkscape:cy="643.5317"
inkscape:window-width="1920"
inkscape:window-height="1133"
inkscape:window-x="0"
inkscape:window-y="30"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs20921" />
<g
inkscape:label="Icons"
inkscape:groupmode="layer"
id="layer1"
inkscape:highlight-color="#1685fc"
transform="translate(-202.61996,-22.619956)">
<g
id="access-switch"
transform="translate(196.25972,-67.88785)"
inkscape:label="access-switch"
style="display:inline">
<circle
style="fill:#ffffff;fill-opacity:1;stroke:#9cc8f8;stroke-width:1.323;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle4091"
cx="24.09306"
cy="108.24062"
r="17.071318" />
<g
id="g4107"
transform="translate(-29.678837,-5.8881735)">
<path
sodipodi:type="star"
style="fill:#9cc8f8;fill-opacity:1;stroke:#1685fc;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path4093"
inkscape:flatsided="true"
sodipodi:sides="3"
sodipodi:cx="170.92444"
sodipodi:cy="403.2724"
sodipodi:r1="16.610861"
sodipodi:r2="8.3054304"
sodipodi:arg1="1.0471976"
sodipodi:arg2="2.0943951"
inkscape:rounded="0.1"
inkscape:randomized="0"
transform="matrix(0.26458333,0,0,0.26458333,-0.61228761,7.6018354)"
inkscape:transform-center-x="0.85152345"
inkscape:transform-center-y="-1.3442414e-06"
d="m 179.22987,417.65783 c -2.49163,1.43854 -24.91629,-11.50835 -24.91629,-14.38543 0,-2.87709 22.42466,-15.82397 24.91629,-14.38543 2.49163,1.43855 2.49163,27.33232 0,28.77086 z" />
<path
sodipodi:type="star"
style="fill:#9cc8f8;fill-opacity:1;stroke:#1685fc;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path4095"
inkscape:flatsided="true"
sodipodi:sides="3"
sodipodi:cx="170.92444"
sodipodi:cy="403.2724"
sodipodi:r1="16.610861"
sodipodi:r2="8.3054304"
sodipodi:arg1="1.0471976"
sodipodi:arg2="2.0943951"
inkscape:rounded="0.1"
inkscape:randomized="0"
transform="matrix(-0.26458333,0,0,0.26458333,108.15608,7.6018354)"
inkscape:transform-center-x="-0.85152352"
inkscape:transform-center-y="-1.3442414e-06"
d="m 179.22987,417.65783 c -2.49163,1.43854 -24.91629,-11.50835 -24.91629,-14.38543 0,-2.87709 22.42466,-15.82397 24.91629,-14.38543 2.49163,1.43855 2.49163,27.33232 0,28.77086 z" />
<path
sodipodi:type="star"
style="fill:#ffffff;fill-opacity:1;stroke:#1685fc;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path4097"
inkscape:flatsided="true"
sodipodi:sides="3"
sodipodi:cx="170.92444"
sodipodi:cy="403.2724"
sodipodi:r1="16.610861"
sodipodi:r2="8.3054304"
sodipodi:arg1="1.0471976"
sodipodi:arg2="2.0943951"
inkscape:rounded="0.1"
inkscape:randomized="0"
transform="matrix(0,0.26458333,0.26458333,0,-52.821766,59.783164)"
inkscape:transform-center-x="1.6998618e-06"
inkscape:transform-center-y="-0.85152379"
d="m 179.22987,417.65783 c -2.49163,1.43854 -24.91629,-11.50835 -24.91629,-14.38543 0,-2.87709 22.42466,-15.82397 24.91629,-14.38543 2.49163,1.43855 2.49163,27.33232 0,28.77086 z" />
<path
sodipodi:type="star"
style="fill:#ffffff;fill-opacity:1;stroke:#1685fc;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path4099"
inkscape:flatsided="true"
sodipodi:sides="3"
sodipodi:cx="170.92444"
sodipodi:cy="403.2724"
sodipodi:r1="16.610861"
sodipodi:r2="8.3054304"
sodipodi:arg1="1.0471976"
sodipodi:arg2="2.0943951"
inkscape:rounded="0.1"
inkscape:randomized="0"
transform="matrix(0,-0.26458333,-0.26458333,0,160.57654,168.47443)"
inkscape:transform-center-x="-3.173315e-06"
inkscape:transform-center-y="0.85152188"
d="m 179.22987,417.65783 c -2.49163,1.43854 -24.91629,-11.50835 -24.91629,-14.38543 0,-2.87709 22.42466,-15.82397 24.91629,-14.38543 2.49163,1.43855 2.49163,27.33232 0,28.77086 z" />
<path
style="fill:none;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 47.416672,114.30099 h 12.88312"
id="path4101" />
<path
style="fill:none;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 53.877389,107.83714 v 12.85223"
id="path4103" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.0 KiB

@@ -0,0 +1,91 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="35.465557mm"
height="35.465557mm"
viewBox="0 0 35.465557 35.465557"
version="1.1"
id="svg20924"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="netbox-topology-views-icons.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview20926"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.4723932"
inkscape:cx="1020.3364"
inkscape:cy="643.5317"
inkscape:window-width="1920"
inkscape:window-height="1133"
inkscape:window-x="0"
inkscape:window-y="30"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs20921" />
<g
inkscape:label="Icons"
inkscape:groupmode="layer"
id="layer1"
inkscape:highlight-color="#1685fc"
transform="translate(-82.620002,-142.61999)">
<g
id="backhaul"
transform="translate(76.25972,52.112147)"
style="display:inline"
inkscape:label="backhaul">
<circle
style="fill:#ffffff;fill-opacity:1;stroke:#9cc8f8;stroke-width:1.32292;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle9736"
cx="24.09306"
cy="108.24062"
r="17.071318" />
<g
id="g10642"
transform="translate(0.15073904,0.61767034)">
<path
id="path17429-2"
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.32292;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 30.899474,97.531295 a 9.8385399,9.8385399 0 0 1 2.88139,6.956635 9.8385399,9.8385399 0 0 1 -2.88164,6.9569" />
<path
id="path17432-3"
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.32292;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 28.424474,100.00604 a 6.33854,6.33854 0 0 1 1.85638,4.48189 6.33854,6.33854 0 0 1 -1.85651,4.48203" />
<circle
style="font-variation-settings:normal;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="path17457-7"
cx="104.48794"
cy="-23.942322"
r="2.8385401"
transform="rotate(90)" />
<path
id="path17429-2-2"
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.32292;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 16.985167,97.531292 a 9.8385399,9.8385399 0 0 0 -2.88139,6.956638 9.8385399,9.8385399 0 0 0 2.88164,6.9569" />
<path
id="path17432-3-8"
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.32292;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 19.460167,100.00603 a 6.33854,6.33854 0 0 0 -1.85638,4.4819 6.33854,6.33854 0 0 0 1.85651,4.48202" />
<path
id="path15912-7"
style="display:inline;fill:#ffffff;stroke:#1685fc;stroke-width:1.32292"
inkscape:transform-center-x="1.6998618e-06"
inkscape:transform-center-y="-0.85152379"
d="m 27.748467,119.25886 c 0.380613,-0.65925 -3.044918,-11.34935 -3.806145,-11.34935 -0.76123,0 -4.186759,10.6901 -3.806145,11.34935 0.380616,0.65924 7.231676,0.65924 7.61229,0 z"
sodipodi:nodetypes="ssss" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

@@ -0,0 +1,92 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="35.465557mm"
height="35.465557mm"
viewBox="0 0 35.465557 35.465557"
version="1.1"
id="svg20924"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="netbox-topology-views-icons.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview20926"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.4723932"
inkscape:cx="1020.3364"
inkscape:cy="643.5317"
inkscape:window-width="1920"
inkscape:window-height="1133"
inkscape:window-x="0"
inkscape:window-y="30"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs20921" />
<g
inkscape:label="Icons"
inkscape:groupmode="layer"
id="layer1"
inkscape:highlight-color="#1685fc"
transform="translate(-382.62001,-262.61999)">
<g
id="backup"
transform="translate(347.33749,116.17059)"
style="display:inline"
inkscape:label="backup">
<circle
style="fill:#ffffff;fill-opacity:1;stroke:#9cc8f8;stroke-width:1.32292;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle81430"
cx="53.015301"
cy="164.18217"
r="17.071318" />
<g
id="g98236"
transform="matrix(0.7811087,0,0,0.78113868,12.067916,36.740975)"
style="stroke-width:1.28021">
<g
id="g19286-6-61"
transform="matrix(1.265502,0,0,1.2637797,55.375145,30.655237)"
style="display:inline;stroke-width:1.01231">
<path
id="path16767-5-1-1"
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.33929;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m -12.045714,96.794806 -0.0069,10.697154 m 12.9588723,0 -6.7e-7,-10.613908 m 6.7e-7,10.613908 c -4.58e-6,0.99351 -2.9009553,1.7989 -6.4794574,1.7989 -3.5785015,0 -6.4794509,-0.80539 -6.4794559,-1.7989 m 12.95891263,-3.53797 c -4.58e-6,0.99351 -2.90095473,1.7989 -6.47945643,1.7989 -3.5785016,0 -6.4794512,-0.80539 -6.4794562,-1.7989 m 12.95891263,-3.53797 c 1.532e-5,0.99351 -2.90094063,1.79891 -6.47945643,1.79891 -3.5785157,0 -6.4794712,-0.8054 -6.4794562,-1.79891 M 0.90625763,96.878052 c -6e-7,0.993506 -2.90095193,1.798902 -6.47945643,1.798902 -3.5785045,0 -6.4794552,-0.805396 -6.4794562,-1.798902 -1e-6,-0.993507 2.9009503,-1.798903 6.4794562,-1.798903 3.578506,0 6.47945782,0.805396 6.47945643,1.798903 z"
sodipodi:nodetypes="cccccsccsccscsssss" />
</g>
<g
id="g19286-6-61-5"
transform="matrix(1.265502,0,0,1.2637797,66.229729,28.075526)"
style="display:inline;fill:#ffffff;fill-opacity:1;stroke-width:1.01231">
<path
id="path16767-5-1-1-9-8"
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:#1685fc;stroke-width:1.33929;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m -7.6710428,102.42738 c 3.5785,0 6.47946,0.80539 6.47945,1.7989 v 10.6139 c 0,0.99351 -2.90095,1.7989 -6.47945,1.7989 -3.5785002,0 -6.4794502,-0.80539 -6.4794602,-1.7989 l 0.007,-10.69715 -0.007,0.0833 c 0,-0.9935 2.90095,-1.7989 6.4794602,-1.7989"
sodipodi:nodetypes="cccscccc" />
</g>
<g
id="g19286-6-61-4"
transform="matrix(1.265502,0,0,1.2637797,63.57491,37.36206)"
style="display:inline;stroke-width:1.01231">
<path
id="path16767-5-1-1-8"
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.33929;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m -12.045714,96.794806 -0.0069,10.697154 m 12.9588723,0 -6.7e-7,-10.613908 m 6.7e-7,10.613908 c -4.58e-6,0.99351 -2.9009553,1.7989 -6.4794574,1.7989 -3.5785015,0 -6.4794509,-0.80539 -6.4794559,-1.7989 m 12.95891263,-3.53797 c -4.58e-6,0.99351 -2.90095473,1.7989 -6.47945643,1.7989 -3.5785016,0 -6.4794512,-0.80539 -6.4794562,-1.7989 m 12.95891263,-3.53797 c 1.532e-5,0.99351 -2.90094063,1.79891 -6.47945643,1.79891 -3.5785157,0 -6.4794712,-0.8054 -6.4794562,-1.79891 M 0.90625763,96.878052 c -6e-7,0.993506 -2.90095193,1.798902 -6.47945643,1.798902 -3.5785045,0 -6.4794552,-0.805396 -6.4794562,-1.798902 -1e-6,-0.993507 2.9009503,-1.798903 6.4794562,-1.798903 3.578506,0 6.47945782,0.805396 6.47945643,1.798903 z"
sodipodi:nodetypes="cccccsccsccscsssss" />
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.4 KiB

@@ -0,0 +1,99 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="35.465557mm"
height="35.465557mm"
viewBox="0 0 35.465557 35.465557"
version="1.1"
id="svg20924"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="netbox-topology-views-icons.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview20926"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.4723932"
inkscape:cx="1020.3364"
inkscape:cy="643.5317"
inkscape:window-width="1920"
inkscape:window-height="1133"
inkscape:window-x="0"
inkscape:window-y="30"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs20921" />
<g
inkscape:label="Icons"
inkscape:groupmode="layer"
id="layer1"
inkscape:highlight-color="#1685fc"
transform="translate(-382.62,-202.61999)">
<g
id="cable-doubler"
transform="translate(376.25972,112.11214)"
style="display:inline"
inkscape:label="cable-doubler">
<circle
style="fill:#ffffff;fill-opacity:1;stroke:#9cc8f8;stroke-width:1.32292;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle83563"
cx="24.09306"
cy="108.24062"
r="17.071318" />
<g
id="g83900">
<rect
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
id="rect83589"
width="18.16176"
height="3.6323516"
x="15.01218"
y="106.42445"
rx="0.29990521"
ry="0.29990521" />
<circle
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="path20353-7-5-4"
cx="24.093061"
cy="119.53722"
r="1.4622281" />
<circle
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="path20353-7-5-30"
cx="17.540743"
cy="99.301231"
r="1.4622281" />
<circle
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="path20353-7-5-7"
cx="30.644741"
cy="99.301231"
r="1.4622281" />
<path
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
d="m 24.093061,110.55105 v 7.52394"
id="path83757" />
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 17.540742,100.42446 v 5.99999"
id="path83757-8" />
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 30.644742,100.42445 v 6"
id="path83757-8-6" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.8 KiB

@@ -0,0 +1,117 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="35.465557mm"
height="35.465557mm"
viewBox="0 0 35.465557 35.465557"
version="1.1"
id="svg20924"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="netbox-topology-views-icons.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview20926"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.4723932"
inkscape:cx="1020.3364"
inkscape:cy="643.5317"
inkscape:window-width="1920"
inkscape:window-height="1133"
inkscape:window-x="0"
inkscape:window-y="30"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs20921" />
<g
inkscape:label="Icons"
inkscape:groupmode="layer"
id="layer1"
inkscape:highlight-color="#1685fc"
transform="translate(-322.62002,-262.61999)">
<g
id="camera-server"
transform="translate(267.97706,-72.029954)"
style="display:inline"
inkscape:label="camera-server">
<circle
style="fill:#ffffff;fill-opacity:1;stroke:#9cc8f8;stroke-width:1.32292;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle133170"
cx="72.37574"
cy="352.38272"
r="17.071318" />
<g
id="g135417">
<rect
style="font-variation-settings:normal;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="rect133172"
width="9.2296114"
height="15.469597"
x="62.566021"
y="342.61298"
rx="0.29990521"
ry="0.29990521" />
<path
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 64.43339,344.68782 h 5.494876"
id="path133174" />
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 64.43339,350.34776 h 5.494876"
id="path133176" />
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 64.43339,347.51779 h 5.494876"
id="path133178" />
<circle
style="font-variation-settings:normal;vector-effect:none;fill:#1685fc;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="circle133180"
cx="67.180824"
cy="353.56537"
r="0.44411153" />
</g>
<g
id="g22475-8"
style="display:inline;stroke-width:1.44351"
transform="matrix(0.69275915,0,0,0.69275915,59.475621,281.63296)">
<path
id="rect18871-9"
style="vector-effect:none;fill:#ffffff;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.90975;stop-color:#000000"
d="m 14.911958,102.93399 h 5.735691 v -1.64713 c -0.02609,-0.68921 7.260357,-0.8024 7.271608,0 v 1.64713 h 5.354904 c 0.217132,0 0.391935,0.13376 0.391935,0.29991 v 11.63694 c 0,0.16615 -0.174803,0.29991 -0.391935,0.29991 H 14.911958 c -0.217132,0 -0.391935,-0.13376 -0.391935,-0.29991 V 103.2339 c 0,-0.16615 0.174803,-0.29991 0.391935,-0.29991 z"
sodipodi:nodetypes="sccccssssssss" />
<circle
style="font-variation-settings:normal;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.90964;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="path18975-3"
cx="24.09306"
cy="110.50864"
r="5.245965" />
<path
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.90975;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 29.548807,105.08623 h 2.045021"
id="path22272-6" />
<path
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.90975;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 17.239354,102.67873 v -1.32799"
id="path22274-8" />
<circle
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.90964;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
id="path22384-0"
cx="24.09306"
cy="110.50864"
r="2.7517517" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.2 KiB

@@ -0,0 +1,85 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="35.465557mm"
height="35.465557mm"
viewBox="0 0 35.465557 35.465557"
version="1.1"
id="svg20924"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="netbox-topology-views-icons.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview20926"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.4723932"
inkscape:cx="1020.3364"
inkscape:cy="643.5317"
inkscape:window-width="1920"
inkscape:window-height="1133"
inkscape:window-x="0"
inkscape:window-y="30"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs20921" />
<g
inkscape:label="Icons"
inkscape:groupmode="layer"
id="layer1"
inkscape:highlight-color="#1685fc"
transform="translate(-322.61999,-202.61999)">
<g
id="camera"
transform="translate(316.25971,112.11214)"
style="display:inline"
inkscape:label="camera">
<circle
style="fill:#ffffff;fill-opacity:1;stroke:#9cc8f8;stroke-width:1.32292;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle18843"
cx="24.09306"
cy="108.24062"
r="17.071318" />
<g
id="g22475">
<path
id="rect18871"
style="vector-effect:none;fill:#ffffff;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.323;stop-color:#000000"
d="m 14.911958,102.93399 h 5.735691 v -1.64713 c -0.02609,-0.68921 7.260357,-0.8024 7.271608,0 v 1.64713 h 5.354904 c 0.217132,0 0.391935,0.13376 0.391935,0.29991 v 11.63694 c 0,0.16615 -0.174803,0.29991 -0.391935,0.29991 H 14.911958 c -0.217132,0 -0.391935,-0.13376 -0.391935,-0.29991 V 103.2339 c 0,-0.16615 0.174803,-0.29991 0.391935,-0.29991 z"
sodipodi:nodetypes="sccccssssssss" />
<circle
style="font-variation-settings:normal;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="path18975"
cx="24.09306"
cy="110.50864"
r="5.245965" />
<path
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 29.548807,105.08623 h 2.045021"
id="path22272" />
<path
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 17.239354,102.67873 v -1.32799"
id="path22274" />
<circle
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
id="path22384"
cx="24.09306"
cy="110.50864"
r="2.7517517" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.0 KiB

@@ -0,0 +1,208 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="35.465557mm"
height="35.465557mm"
viewBox="0 0 35.465557 35.465557"
version="1.1"
id="svg20924"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="netbox-topology-views-icons.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview20926"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.4723932"
inkscape:cx="1020.3364"
inkscape:cy="643.5317"
inkscape:window-width="1920"
inkscape:window-height="1133"
inkscape:window-x="0"
inkscape:window-y="30"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs20921">
<inkscape:path-effect
effect="fillet_chamfer"
id="path-effect19394-9"
is_visible="true"
lpeversion="1"
satellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,2.1166667,0,1 @ F,0,0,1,0,0,0,1"
unit="px"
method="auto"
mode="F"
radius="8"
chamfer_steps="1"
flexible="false"
use_knot_distance="true"
apply_no_radius="true"
apply_with_radius="true"
only_selected="false"
hide_knots="false"
nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,2.1166667,0,1 @ F,0,0,1,0,0,0,1" />
<inkscape:path-effect
effect="fillet_chamfer"
id="path-effect19394-65-3"
is_visible="true"
lpeversion="1"
satellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,2.1166667,0,1 @ F,0,0,1,0,0,0,1"
unit="px"
method="auto"
mode="F"
radius="8"
chamfer_steps="1"
flexible="false"
use_knot_distance="true"
apply_no_radius="true"
apply_with_radius="true"
only_selected="false"
hide_knots="false"
nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,2.1166667,0,1 @ F,0,0,1,0,0,0,1" />
<inkscape:path-effect
effect="fillet_chamfer"
id="path-effect19394-2-7"
is_visible="true"
lpeversion="1"
satellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,2.1166667,0,1 @ F,0,0,1,0,0,0,1"
unit="px"
method="auto"
mode="F"
radius="8"
chamfer_steps="1"
flexible="false"
use_knot_distance="true"
apply_no_radius="true"
apply_with_radius="true"
only_selected="false"
hide_knots="false"
nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,2.1166667,0,1 @ F,0,0,1,0,0,0,1" />
<inkscape:path-effect
effect="fillet_chamfer"
id="path-effect20311-4"
is_visible="true"
lpeversion="1"
satellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,2.1166667,0,1 @ F,0,0,1,0,2.1166667,0,1 @ F,0,0,1,0,2.1166667,0,1 @ F,0,0,1,0,0,0,1"
unit="px"
method="auto"
mode="F"
radius="8"
chamfer_steps="1"
flexible="false"
use_knot_distance="true"
apply_no_radius="true"
apply_with_radius="true"
only_selected="false"
hide_knots="false"
nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,2.1166667,0,1 @ F,0,0,1,0,2.1166667,0,1 @ F,0,0,1,0,2.1166667,0,1 @ F,0,0,1,0,0,0,1" />
</defs>
<g
inkscape:label="Icons"
inkscape:groupmode="layer"
id="layer1"
inkscape:highlight-color="#1685fc"
transform="translate(-442.62002,-202.62)">
<g
id="circuit"
transform="translate(436.25974,112.11215)"
style="display:inline"
inkscape:label="circuit">
<circle
style="fill:#ffffff;fill-opacity:1;stroke:#9cc8f8;stroke-width:1.32292;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle18767"
cx="24.09306"
cy="108.24062"
r="17.071318" />
<g
id="g20833">
<path
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.32299;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
d="m 14.065394,106.83296 h 2.654946 a 2.1166667,2.1166667 135 0 0 2.116667,-2.11667 v -7.132546"
id="path18804"
sodipodi:nodetypes="ccc"
inkscape:original-d="m 14.065394,106.83296 h 4.771613 v -9.249216"
inkscape:path-effect="#path-effect19394-9" />
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.32299;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 34.485764,109.52303 h -2.654946 a 2.1166667,2.1166667 135 0 0 -2.116667,2.11667 v 6.9639"
id="path18804-6"
sodipodi:nodetypes="ccc"
inkscape:original-d="m 34.485764,109.52303 h -4.771613 v 9.08057"
inkscape:path-effect="#path-effect19394-65-3" />
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.32299;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 18.699598,110.71392 h 2.654946 a 2.1166667,2.1166667 135 0 0 2.116667,-2.11667 V 96.282484"
id="path18804-0"
sodipodi:nodetypes="ccc"
inkscape:original-d="m 18.699598,110.71392 h 4.771613 V 96.282484"
inkscape:path-effect="#path-effect19394-2-7" />
<path
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
d="m 22.254741,120.04698 v -4.75769 a 2.1166667,2.1166667 135 0 1 2.116667,-2.11667 h 0.217414 a 2.1166667,2.1166667 135 0 0 2.116667,-2.11667 v -4.30433 a 2.1166667,2.1166667 135 0 1 2.116667,-2.11667 h 2.363756"
id="path20181"
inkscape:original-d="m 22.254741,120.04698 v -6.87436 h 4.450748 v -8.53767 h 4.480423"
inkscape:path-effect="#path-effect20311-4" />
<circle
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
id="path20353"
cx="14.065394"
cy="106.83296"
r="1.4622281" />
<circle
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="path20353-9"
cx="18.699598"
cy="110.71392"
r="1.4622281" />
<circle
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="path20353-3"
cx="31.185911"
cy="104.63495"
r="1.4622281" />
<circle
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="path20353-7"
cx="34.485764"
cy="109.52303"
r="1.4622281" />
<circle
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="path20353-7-5"
cx="29.714151"
cy="118.6036"
r="1.4622281" />
<circle
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="path20353-7-2"
cx="18.837008"
cy="97.58374"
r="1.4622281" />
<circle
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="path20353-7-54"
cx="23.47121"
cy="96.282486"
r="1.4622281" />
<circle
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="path20353-7-7"
cx="22.254742"
cy="120.04698"
r="1.4622281" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 10 KiB

@@ -0,0 +1,188 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="35.465557mm"
height="35.465557mm"
viewBox="0 0 35.465557 35.465557"
version="1.1"
id="svg20924"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="netbox-topology-views-icons.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview20926"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.4723932"
inkscape:cx="1020.3364"
inkscape:cy="643.5317"
inkscape:window-width="1920"
inkscape:window-height="1133"
inkscape:window-x="0"
inkscape:window-y="30"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs20921">
<inkscape:path-effect
effect="fillet_chamfer"
id="path-effect105690-6"
is_visible="true"
lpeversion="1"
satellites_param="F,0,0,1,0,1.0583333,0,1 @ F,0,0,1,0,1.0583333,0,1 @ F,0,0,1,0,1.0583333,0,1 @ F,0,0,1,0,1.0583333,0,1"
unit="px"
method="auto"
mode="F"
radius="7"
chamfer_steps="1"
flexible="false"
use_knot_distance="true"
apply_no_radius="true"
apply_with_radius="true"
only_selected="false"
hide_knots="false"
nodesatellites_param="F,0,0,1,0,1.0583333,0,1 @ F,0,0,1,0,1.0583333,0,1 @ F,0,0,1,0,1.0583333,0,1 @ F,0,0,1,0,1.0583333,0,1" />
</defs>
<g
inkscape:label="Icons"
inkscape:groupmode="layer"
id="layer1"
inkscape:highlight-color="#1685fc"
transform="translate(-262.61999,-262.61999)">
<g
id="console-server"
transform="translate(207.97703,-72.029954)"
style="display:inline"
inkscape:label="console-server">
<circle
style="fill:#ffffff;fill-opacity:1;stroke:#9cc8f8;stroke-width:1.32292;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle99845"
cx="72.37574"
cy="352.38272"
r="17.071318" />
<g
id="g105857"
transform="translate(-44.96434,2.3640395)">
<g
id="g105712"
transform="matrix(0.74706177,0,0,0.74706177,47.075033,96.696391)"
style="stroke-width:1.33858">
<rect
style="font-variation-settings:normal;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.77094;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="rect19922-4"
width="12.354549"
height="20.707253"
x="80.924133"
y="326.01392"
rx="0.40144634"
ry="0.40144634" />
<path
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.77094;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="M 83.423753,328.79127 H 90.77907"
id="path19957-7" />
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.77094;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="M 83.423753,336.36754 H 90.77907"
id="path19957-0-6" />
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.77094;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="M 83.423753,332.57941 H 90.77907"
id="path19957-3-3" />
<circle
style="font-variation-settings:normal;vector-effect:none;fill:#1685fc;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.77083;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="path20101-17"
cx="87.10141"
cy="340.67456"
r="0.59447765" />
</g>
<path
style="font-variation-settings:normal;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 126.98427,357.8261 h -11.77004 a 1.34475,1.34475 38.203142 0 1 -1.30708,-1.02869 l -1.3349,-5.52049 a 0.83292016,0.83292016 128.20314 0 1 0.80958,-1.02869 l 15.43485,0 a 0.83291909,0.83291909 51.796894 0 1 0.80958,1.02869 l -1.33491,5.52049 a 1.3447517,1.3447517 141.79689 0 1 -1.30708,1.02869 z"
id="path104407"
sodipodi:nodetypes="ccccc"
inkscape:original-d="m 128.0426,357.8261 h -13.8867 l -1.8324,-7.57787 h 17.55151 z"
inkscape:path-effect="#path-effect105690-6" />
<g
id="g105688"
transform="matrix(0.79805577,0,0,0.79805577,22.763649,81.818574)"
style="stroke-width:1.25305">
<g
id="g105442"
transform="translate(64.620413,228.56428)"
style="stroke-width:1.25305">
<circle
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:#1685fc;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.65768;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="path20101-17-4"
cx="51.186554"
cy="110.86858"
r="0.59447765" />
<circle
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:#1685fc;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.65768;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="path20101-17-1"
cx="54.892548"
cy="110.86858"
r="0.59447765" />
<circle
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:#1685fc;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.65768;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="path20101-17-8"
cx="58.598576"
cy="110.86858"
r="0.59447765" />
<circle
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:#1685fc;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.65768;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="path20101-17-5"
cx="62.30452"
cy="110.86858"
r="0.59447765" />
<circle
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:#1685fc;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.65768;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="path20101-17-9"
cx="66.010551"
cy="110.86858"
r="0.59447765" />
</g>
<g
id="g105442-1"
transform="translate(62.767416,231.90299)"
style="display:inline;stroke-width:1.25305">
<circle
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:#1685fc;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.65768;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="path20101-17-1-9"
cx="54.892548"
cy="110.86858"
r="0.59447765" />
<circle
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:#1685fc;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.65768;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="path20101-17-8-6"
cx="58.598576"
cy="110.86858"
r="0.59447765" />
<circle
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:#1685fc;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.65768;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="path20101-17-5-4"
cx="62.30452"
cy="110.86858"
r="0.59447765" />
<circle
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:#1685fc;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.65768;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="path20101-17-9-3"
cx="66.010551"
cy="110.86858"
r="0.59447765" />
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 10 KiB

@@ -0,0 +1,111 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="35.465633mm"
height="35.465637mm"
viewBox="0 0 35.465633 35.465637"
version="1.1"
id="svg20924"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="netbox-topology-views-icons.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview20926"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.4723932"
inkscape:cx="1020.3364"
inkscape:cy="643.5317"
inkscape:window-width="1920"
inkscape:window-height="1133"
inkscape:window-x="0"
inkscape:window-y="30"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs20921" />
<g
inkscape:label="Icons"
inkscape:groupmode="layer"
id="layer1"
inkscape:highlight-color="#1685fc"
transform="translate(-322.62001,-22.619956)">
<g
id="g1153"
inkscape:label="core-router"
style="display:inline"
transform="translate(227.33747,-3.8293975)">
<circle
style="fill:#ffffff;fill-opacity:1;stroke:#9cc8f8;stroke-width:1.323;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle977"
cx="113.01536"
cy="44.182171"
r="17.071318" />
<g
id="g1145">
<g
id="g1158"
transform="translate(0,-0.68712819)">
<path
sodipodi:type="star"
style="fill:#ffffff;fill-opacity:1;stroke:#1685fc;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path979"
inkscape:flatsided="true"
sodipodi:sides="3"
sodipodi:cx="170.92444"
sodipodi:cy="403.2724"
sodipodi:r1="16.610861"
sodipodi:r2="8.3054304"
sodipodi:arg1="1.0471976"
sodipodi:arg2="2.0943951"
inkscape:rounded="0.1"
inkscape:randomized="0"
transform="matrix(0.26458333,0,0,0.26458333,62.296384,-70.236637)"
inkscape:transform-center-x="0.85152345"
inkscape:transform-center-y="-1.3442414e-06"
d="m 179.22987,417.65783 c -2.49163,1.43854 -24.91629,-11.50835 -24.91629,-14.38543 0,-2.87709 22.42466,-15.82397 24.91629,-14.38543 2.49163,1.43855 2.49163,27.33232 0,28.77086 z" />
<path
sodipodi:type="star"
style="fill:#ffffff;fill-opacity:1;stroke:#1685fc;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path981"
inkscape:flatsided="true"
sodipodi:sides="3"
sodipodi:cx="170.92444"
sodipodi:cy="403.2724"
sodipodi:r1="16.610861"
sodipodi:r2="8.3054304"
sodipodi:arg1="1.0471976"
sodipodi:arg2="2.0943951"
inkscape:rounded="0.1"
inkscape:randomized="0"
transform="matrix(-0.26458333,0,0,0.26458333,163.73434,-53.423074)"
inkscape:transform-center-x="-0.85152352"
inkscape:transform-center-y="-1.3442414e-06"
d="m 179.22987,417.65783 c -2.49163,1.43854 -24.91629,-11.50835 -24.91629,-14.38543 0,-2.87709 22.42466,-15.82397 24.91629,-14.38543 2.49163,1.43855 2.49163,27.33232 0,28.77086 z" />
<path
style="fill:none;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 110.1575,36.497284 c 25.26437,-0.477736 -15.691945,16.149717 0.5946,16.683167 l 5.04786,0.165337"
id="path983"
sodipodi:nodetypes="csc" />
</g>
<circle
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="path16050-36"
cx="113.01536"
cy="44.182171"
r="2.5286407" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.2 KiB

@@ -0,0 +1,147 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="35.465633mm"
height="35.465633mm"
viewBox="0 0 35.465633 35.465634"
version="1.1"
id="svg20924"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="netbox-topology-views-icons.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview20926"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.4723932"
inkscape:cx="1020.3364"
inkscape:cy="643.5317"
inkscape:window-width="1920"
inkscape:window-height="1133"
inkscape:window-x="0"
inkscape:window-y="30"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs20921" />
<g
inkscape:label="Icons"
inkscape:groupmode="layer"
id="layer1"
inkscape:highlight-color="#1685fc"
transform="translate(-82.619962,-22.619957)">
<g
id="core-switch"
transform="translate(76.25972,-67.887849)"
style="display:inline"
inkscape:label="core-switch">
<circle
style="fill:#ffffff;fill-opacity:1;stroke:#9cc8f8;stroke-width:1.323;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle15906"
cx="24.09306"
cy="108.24062"
r="17.071318" />
<g
id="g16139"
transform="translate(-29.678837,-5.8881735)">
<path
sodipodi:type="star"
style="fill:#ffffff;fill-opacity:1;stroke:#1685fc;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path15908"
inkscape:flatsided="true"
sodipodi:sides="3"
sodipodi:cx="170.92444"
sodipodi:cy="403.2724"
sodipodi:r1="16.610861"
sodipodi:r2="8.3054304"
sodipodi:arg1="1.0471976"
sodipodi:arg2="2.0943951"
inkscape:rounded="0.1"
inkscape:randomized="0"
transform="matrix(0.26458333,0,0,0.26458333,-0.61228761,7.6018354)"
inkscape:transform-center-x="0.85152345"
inkscape:transform-center-y="-1.3442414e-06"
d="m 179.22987,417.65783 c -2.49163,1.43854 -24.91629,-11.50835 -24.91629,-14.38543 0,-2.87709 22.42466,-15.82397 24.91629,-14.38543 2.49163,1.43855 2.49163,27.33232 0,28.77086 z" />
<path
sodipodi:type="star"
style="fill:#ffffff;fill-opacity:1;stroke:#1685fc;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path15910"
inkscape:flatsided="true"
sodipodi:sides="3"
sodipodi:cx="170.92444"
sodipodi:cy="403.2724"
sodipodi:r1="16.610861"
sodipodi:r2="8.3054304"
sodipodi:arg1="1.0471976"
sodipodi:arg2="2.0943951"
inkscape:rounded="0.1"
inkscape:randomized="0"
transform="matrix(-0.26458333,0,0,0.26458333,108.15608,7.6018354)"
inkscape:transform-center-x="-0.85152352"
inkscape:transform-center-y="-1.3442414e-06"
d="m 179.22987,417.65783 c -2.49163,1.43854 -24.91629,-11.50835 -24.91629,-14.38543 0,-2.87709 22.42466,-15.82397 24.91629,-14.38543 2.49163,1.43855 2.49163,27.33232 0,28.77086 z" />
<path
sodipodi:type="star"
style="fill:#ffffff;fill-opacity:1;stroke:#1685fc;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path15912"
inkscape:flatsided="true"
sodipodi:sides="3"
sodipodi:cx="170.92444"
sodipodi:cy="403.2724"
sodipodi:r1="16.610861"
sodipodi:r2="8.3054304"
sodipodi:arg1="1.0471976"
sodipodi:arg2="2.0943951"
inkscape:rounded="0.1"
inkscape:randomized="0"
transform="matrix(0,0.26458333,0.26458333,0,-52.821766,59.783164)"
inkscape:transform-center-x="1.6998618e-06"
inkscape:transform-center-y="-0.85152379"
d="m 179.22987,417.65783 c -2.49163,1.43854 -24.91629,-11.50835 -24.91629,-14.38543 0,-2.87709 22.42466,-15.82397 24.91629,-14.38543 2.49163,1.43855 2.49163,27.33232 0,28.77086 z" />
<path
sodipodi:type="star"
style="fill:#ffffff;fill-opacity:1;stroke:#1685fc;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path15914"
inkscape:flatsided="true"
sodipodi:sides="3"
sodipodi:cx="170.92444"
sodipodi:cy="403.2724"
sodipodi:r1="16.610861"
sodipodi:r2="8.3054304"
sodipodi:arg1="1.0471976"
sodipodi:arg2="2.0943951"
inkscape:rounded="0.1"
inkscape:randomized="0"
transform="matrix(0,-0.26458333,-0.26458333,0,160.57654,168.47443)"
inkscape:transform-center-x="-3.173315e-06"
inkscape:transform-center-y="0.85152188"
d="m 179.22987,417.65783 c -2.49163,1.43854 -24.91629,-11.50835 -24.91629,-14.38543 0,-2.87709 22.42466,-15.82397 24.91629,-14.38543 2.49163,1.43855 2.49163,27.33232 0,28.77086 z" />
<path
style="fill:none;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 47.416672,114.30099 h 12.88312"
id="path15916" />
<path
style="fill:none;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 53.877389,107.83714 v 12.85223"
id="path15918" />
<circle
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
id="path16050"
cx="53.877388"
cy="114.30099"
r="2.5286407" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.4 KiB

@@ -0,0 +1,90 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="35.465557mm"
height="35.465557mm"
viewBox="0 0 35.465557 35.465557"
version="1.1"
id="svg20924"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="netbox-topology-views-icons.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview20926"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.4723932"
inkscape:cx="1020.3364"
inkscape:cy="643.5317"
inkscape:window-width="1920"
inkscape:window-height="1133"
inkscape:window-x="0"
inkscape:window-y="30"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs20921" />
<g
inkscape:label="Icons"
inkscape:groupmode="layer"
id="layer1"
inkscape:highlight-color="#1685fc"
transform="translate(-82.620002,-262.61999)">
<g
id="database-server"
transform="translate(76.25972,172.11214)"
style="display:inline"
inkscape:label="database-server">
<circle
style="fill:#ffffff;fill-opacity:1;stroke:#9cc8f8;stroke-width:1.32292;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle20337"
cx="24.09306"
cy="108.24062"
r="17.071318" />
<g
id="g22247"
transform="matrix(0.74763892,0,0,0.74759268,32.764696,30.639803)"
style="stroke-width:1.33759">
<path
id="rect19922-6"
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:6.68834;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m -80.251467,79.095818 -36.089533,-2e-6 c -0.62796,0 -1.1335,-0.505541 -1.1335,-1.1335 V 1.9656847 c 0,-0.627959 0.50554,-1.13350002 1.1335,-1.13350002 v 0 h 44.427356 c 0.627959,0 1.1335,0.50554102 1.1335,1.13350002 V 34.179928"
transform="matrix(0.26458333,0,0,0.26458333,6.360242,90.507807)" />
<path
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.76963;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m -22.221938,93.505349 h 7.355317"
id="path19957-32" />
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.76963;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m -22.221938,101.08162 h 7.355317"
id="path19957-0-0" />
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.76963;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m -22.221938,97.293489 h 7.355317"
id="path19957-3-6" />
<circle
style="font-variation-settings:normal;vector-effect:none;fill:#1685fc;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.76952;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="path20101-1"
cx="-18.544279"
cy="105.38864"
r="0.59447765" />
<path
id="path20339-5"
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.76963;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m -14.866621,101.08162 -0.0087,13.51885 m 16.3994782,0 -1e-6,-13.41365 m 1e-6,13.41365 c -6e-6,1.25558 -3.671164,2.27341 -8.199766,2.27341 -4.5286012,0 -8.1997582,-1.01783 -8.1997642,-2.27341 m 16.3995272,-4.47122 c -5e-6,1.25558 -3.671163,2.27342 -8.199765,2.27342 -4.5286012,0 -8.1997582,-1.01784 -8.1997642,-2.27342 m 16.3995292,-4.47121 c 2e-5,1.25558 -3.671145,2.27342 -8.199765,2.27342 -4.5286192,0 -8.1997832,-1.01784 -8.1997642,-2.27342 m 16.3995292,-4.47122 c 0,1.25558 -3.671161,2.27342 -8.199765,2.27342 -4.5286052,0 -8.1997632,-1.01784 -8.1997642,-2.27342 -10e-7,-1.255569 3.671158,-2.273412 8.1997642,-2.273412 4.528607,0 8.199768,1.017843 8.199765,2.273412 z"
sodipodi:nodetypes="cccccsccsccscsssss" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.2 KiB

@@ -0,0 +1,67 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="35.465557mm"
height="35.465557mm"
viewBox="0 0 35.465557 35.465557"
version="1.1"
id="svg20924"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="netbox-topology-views-icons.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview20926"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.4723932"
inkscape:cx="1020.3364"
inkscape:cy="643.5317"
inkscape:window-width="1920"
inkscape:window-height="1133"
inkscape:window-x="0"
inkscape:window-y="30"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs20921" />
<g
inkscape:label="Icons"
inkscape:groupmode="layer"
id="layer1"
inkscape:highlight-color="#1685fc"
transform="translate(-142.62001,-262.61999)">
<g
id="database"
transform="translate(136.25973,172.11214)"
style="display:inline"
inkscape:label="database">
<circle
style="fill:#ffffff;fill-opacity:1;stroke:#9cc8f8;stroke-width:1.32292;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle20208"
cx="24.09306"
cy="108.24062"
r="17.071318" />
<g
id="g19286-6"
transform="matrix(1.265502,0,0,1.2637797,31.145953,-20.898708)"
style="display:inline;stroke-width:0.790738">
<path
id="path16767-5-1"
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.04615;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m -12.045714,96.794806 -0.0069,10.697154 m 12.9588723,0 -6.7e-7,-10.613908 m 6.7e-7,10.613908 c -4.58e-6,0.99351 -2.9009553,1.7989 -6.4794574,1.7989 -3.5785015,0 -6.4794509,-0.80539 -6.4794559,-1.7989 m 12.95891263,-3.53797 c -4.58e-6,0.99351 -2.90095473,1.7989 -6.47945643,1.7989 -3.5785016,0 -6.4794512,-0.80539 -6.4794562,-1.7989 m 12.95891263,-3.53797 c 1.532e-5,0.99351 -2.90094063,1.79891 -6.47945643,1.79891 -3.5785157,0 -6.4794712,-0.8054 -6.4794562,-1.79891 M 0.90625763,96.878052 c -6e-7,0.993506 -2.90095193,1.798902 -6.47945643,1.798902 -3.5785045,0 -6.4794552,-0.805396 -6.4794562,-1.798902 -1e-6,-0.993507 2.9009503,-1.798903 6.4794562,-1.798903 3.578506,0 6.47945782,0.805396 6.47945643,1.798903 z"
sodipodi:nodetypes="cccccsccsccscsssss" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

@@ -0,0 +1,122 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="35.465557mm"
height="35.465557mm"
viewBox="0 0 35.465557 35.465557"
version="1.1"
id="svg20924"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="netbox-topology-views-icons.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview20926"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.4723932"
inkscape:cx="1020.3364"
inkscape:cy="643.5317"
inkscape:window-width="1920"
inkscape:window-height="1133"
inkscape:window-x="0"
inkscape:window-y="30"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs20921">
<inkscape:path-effect
effect="fillet_chamfer"
id="path-effect16898-8-6"
is_visible="true"
lpeversion="1"
satellites_param="F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1"
unit="px"
method="auto"
mode="F"
radius="1"
chamfer_steps="1"
flexible="false"
use_knot_distance="true"
apply_no_radius="true"
apply_with_radius="true"
only_selected="false"
hide_knots="false"
nodesatellites_param="F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1" />
</defs>
<g
inkscape:label="Icons"
inkscape:groupmode="layer"
id="layer1"
inkscape:highlight-color="#1685fc"
transform="translate(-202.62001,-142.62)">
<g
id="dect-station"
style="display:inline"
transform="translate(227.33747,-3.8293975)"
inkscape:label="dect-station">
<circle
style="fill:#ffffff;fill-opacity:1;stroke:#9cc8f8;stroke-width:1.32292;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle934-9"
cx="-6.9846783"
cy="164.18217"
r="17.071318" />
<g
id="g10034-1"
transform="translate(-31.077738,55.941548)">
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="M 14.418108,115.90978 H 33.76802"
id="path942-9" />
<path
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.32301;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 24.093064,114.8012 v -6.00466"
id="path5756-9" />
<circle
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="path16050-3-33"
cx="24.093063"
cy="115.90978"
r="2.5286407" />
</g>
<g
id="g10642-0"
transform="translate(-30.927015,56.127067)"
style="display:inline">
<path
id="path17429-2-8"
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.32292;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 30.899474,97.531295 a 9.8385399,9.8385399 0 0 1 2.88139,6.956635 9.8385399,9.8385399 0 0 1 -2.88164,6.9569" />
<path
id="path17432-3-1"
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.32292;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 28.424474,100.00604 a 6.33854,6.33854 0 0 1 1.85638,4.48189 6.33854,6.33854 0 0 1 -1.85651,4.48203" />
<path
id="path17429-2-2-1"
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.32292;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 16.985167,97.531292 a 9.8385399,9.8385399 0 0 0 -2.88139,6.956638 9.8385399,9.8385399 0 0 0 2.88164,6.9569" />
<path
id="path17432-3-8-1"
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.32292;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 19.460167,100.00603 a 6.33854,6.33854 0 0 0 -1.85638,4.4819 6.33854,6.33854 0 0 0 1.85651,4.48202" />
</g>
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m -7.5536212,164.41077 c -0.2846637,-0.49945 -0.9201464,-1.79725 -1.034094,-3.59636 -0.00917,-0.14474 -0.017152,-0.38071 -0.017047,-0.52682 0.00128,-1.7963 0.6315279,-3.0729 0.919632,-3.56272 0.073414,-0.12481 0.2571414,-0.2431 0.4007546,-0.27008 l 1.5176457,-0.2851 a 0.22306614,0.22306614 39.226836 0 1 0.2642224,0.2157 l 0.02121,1.33988 a 0.18993774,0.18993774 143.41949 0 1 -0.2478062,0.18391 l -0.4790348,-0.15331 c -0.1391724,-0.0445 -0.3371064,0.002 -0.4303679,0.11489 -0.2983088,0.36003 -0.8714107,1.20575 -0.92698,2.44154 -0.00655,0.14567 -0.00278,0.3826 0.00836,0.52827 0.095463,1.24786 0.7042702,2.11631 1.011943,2.48125 0.093298,0.11067 0.2889819,0.15286 0.4265274,0.10352 l 0.4781933,-0.17151 a 0.18933683,0.18933683 34.680743 0 1 0.253236,0.17522 l 0.02258,1.42644 a 0.20619403,0.20619403 141.16323 0 1 -0.2533697,0.20398 l -1.5401023,-0.36217 c -0.1422451,-0.0335 -0.3231029,-0.1595 -0.3955033,-0.28653 z"
id="path16892-5"
sodipodi:nodetypes="czcccczcccc"
inkscape:original-d="m -7.4156754,164.63673 c 0,0 -1.1015015,-1.60214 -1.1847397,-4.08461 -0.083243,-2.48247 1.0560045,-4.04848 1.0560045,-4.04848 l 2.0377151,-0.3828 0.029585,1.86898 -0.9830226,-0.31459 c 0,0 -1.1383056,1.0598 -1.1091632,2.90108 0.029147,1.8413 1.2015925,2.93836 1.2015925,2.93836 l 0.9762897,-0.35017 0.030956,1.95554 z"
inkscape:path-effect="#path-effect16898-8-6" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.7 KiB

@@ -0,0 +1,113 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="35.465553mm"
height="35.465553mm"
viewBox="0 0 35.465553 35.465553"
version="1.1"
id="svg20924"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="netbox-topology-views-icons.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview20926"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.4723932"
inkscape:cx="1020.3364"
inkscape:cy="643.5317"
inkscape:window-width="1920"
inkscape:window-height="1133"
inkscape:window-x="0"
inkscape:window-y="30"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs20921" />
<g
inkscape:label="Icons"
inkscape:groupmode="layer"
id="layer1"
inkscape:highlight-color="#1685fc"
transform="translate(-142.62001,-322.61998)">
<g
id="desktop"
transform="matrix(0.8695205,0,0,0.8695205,216.08081,53.553877)"
style="display:inline;stroke-width:1.15006"
inkscape:label="desktop">
<g
id="g22531"
transform="translate(-25.161923,-109.952)">
<circle
style="display:inline;fill:#ffffff;fill-opacity:1;stroke:#9cc8f8;stroke-width:1.32292;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle126519-1"
cx="-45.105873"
cy="439.78769"
r="17.071318"
transform="matrix(1.1500591,0,0,1.1500591,12.945821,-65.994159)" />
<g
id="g126531-8"
transform="translate(-67.856764,331.98443)"
style="stroke-width:1.15006">
<rect
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.52153;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
id="rect126521-7"
width="12.354549"
height="20.707253"
x="16.573616"
y="97.449631"
rx="0.34490871"
ry="0.34490871" />
<path
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.52153;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
d="m 19.073232,100.22699 h 7.355317"
id="path126523-9" />
<circle
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#1685fc;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.52144;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
id="circle126529-2"
cx="22.750891"
cy="112.11028"
r="0.59447765" />
</g>
<rect
style="font-variation-settings:normal;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.52153;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="rect22382"
width="16.474653"
height="11.775289"
x="-42.013367"
y="435.73035"
rx="0.34501827"
ry="0.34501827" />
<rect
style="font-variation-settings:normal;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.52153;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="rect22384"
width="1.367956"
height="2.6356843"
x="-34.460018"
y="447.50565"
rx="0.34501827"
ry="0.34501827" />
<rect
style="font-variation-settings:normal;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.52153;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="rect22386"
width="10.305123"
height="1.5857563"
x="-38.9286"
y="450.14133"
rx="0.34501827"
ry="0.34501827" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.3 KiB

@@ -0,0 +1,196 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="35.465637mm"
height="35.465633mm"
viewBox="0 0 35.465637 35.465634"
version="1.1"
id="svg20924"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="netbox-topology-views-icons.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview20926"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.4723932"
inkscape:cx="1020.3364"
inkscape:cy="643.5317"
inkscape:window-width="1920"
inkscape:window-height="1133"
inkscape:window-x="0"
inkscape:window-y="30"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs20921" />
<g
inkscape:label="Icons"
inkscape:groupmode="layer"
id="layer1"
inkscape:highlight-color="#1685fc"
transform="translate(-142.61997,-22.619957)">
<g
id="distribution-switch"
transform="translate(136.25973,-67.887849)"
style="display:inline"
inkscape:label="distribution-switch">
<circle
style="fill:#ffffff;fill-opacity:1;stroke:#9cc8f8;stroke-width:1.323;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle6199"
cx="24.09306"
cy="108.24062"
r="17.071318" />
<g
id="g6215"
transform="translate(-29.678837,-5.8881735)">
<path
sodipodi:type="star"
style="fill:#ffffff;fill-opacity:1;stroke:#1685fc;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path6205"
inkscape:flatsided="true"
sodipodi:sides="3"
sodipodi:cx="170.92444"
sodipodi:cy="403.2724"
sodipodi:r1="16.610861"
sodipodi:r2="8.3054304"
sodipodi:arg1="1.0471976"
sodipodi:arg2="2.0943951"
inkscape:rounded="0.1"
inkscape:randomized="0"
transform="matrix(0,0.26458333,0.26458333,0,-52.821766,59.783164)"
inkscape:transform-center-x="1.6998618e-06"
inkscape:transform-center-y="-0.85152379"
d="m 179.22987,417.65783 c -2.49163,1.43854 -24.91629,-11.50835 -24.91629,-14.38543 0,-2.87709 22.42466,-15.82397 24.91629,-14.38543 2.49163,1.43855 2.49163,27.33232 0,28.77086 z" />
<path
sodipodi:type="star"
style="fill:#ffffff;fill-opacity:1;stroke:#1685fc;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path6207"
inkscape:flatsided="true"
sodipodi:sides="3"
sodipodi:cx="170.92444"
sodipodi:cy="403.2724"
sodipodi:r1="16.610861"
sodipodi:r2="8.3054304"
sodipodi:arg1="1.0471976"
sodipodi:arg2="2.0943951"
inkscape:rounded="0.1"
inkscape:randomized="0"
transform="matrix(0,-0.26458333,-0.26458333,0,160.57654,168.47443)"
inkscape:transform-center-x="-3.173315e-06"
inkscape:transform-center-y="0.85152188"
d="m 179.22987,417.65783 c -2.49163,1.43854 -24.91629,-11.50835 -24.91629,-14.38543 0,-2.87709 22.42466,-15.82397 24.91629,-14.38543 2.49163,1.43855 2.49163,27.33232 0,28.77086 z" />
<g
id="g6222"
transform="translate(0.10549237,-3.7787718)">
<path
sodipodi:type="star"
style="fill:#c5e0f1;fill-opacity:1;stroke:#1685fc;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path6201"
inkscape:flatsided="true"
sodipodi:sides="3"
sodipodi:cx="170.92444"
sodipodi:cy="403.2724"
sodipodi:r1="16.610861"
sodipodi:r2="8.3054304"
sodipodi:arg1="1.0471976"
sodipodi:arg2="2.0943951"
inkscape:rounded="0.1"
inkscape:randomized="0"
transform="matrix(0.26458333,0,0,0.26458333,-0.61228761,7.6018354)"
inkscape:transform-center-x="0.85152345"
inkscape:transform-center-y="-1.3442414e-06"
d="m 179.22987,417.65783 c -2.49163,1.43854 -24.91629,-11.50835 -24.91629,-14.38543 0,-2.87709 22.42466,-15.82397 24.91629,-14.38543 2.49163,1.43855 2.49163,27.33232 0,28.77086 z" />
<path
sodipodi:type="star"
style="fill:#ffffff;fill-opacity:1;stroke:#1685fc;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path6203"
inkscape:flatsided="true"
sodipodi:sides="3"
sodipodi:cx="170.92444"
sodipodi:cy="403.2724"
sodipodi:r1="16.610861"
sodipodi:r2="8.3054304"
sodipodi:arg1="1.0471976"
sodipodi:arg2="2.0943951"
inkscape:rounded="0.1"
inkscape:randomized="0"
transform="matrix(-0.26458333,0,0,0.26458333,108.15608,7.6018354)"
inkscape:transform-center-x="-0.85152352"
inkscape:transform-center-y="-1.3442414e-06"
d="m 179.22987,417.65783 c -2.49163,1.43854 -24.91629,-11.50835 -24.91629,-14.38543 0,-2.87709 22.42466,-15.82397 24.91629,-14.38543 2.49163,1.43855 2.49163,27.33232 0,28.77086 z" />
<path
style="fill:none;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 47.416672,114.30099 h 12.88312"
id="path6209" />
</g>
<g
id="g6222-6"
style="display:inline"
transform="translate(0.10549237,3.8314071)">
<path
sodipodi:type="star"
style="fill:#ffffff;fill-opacity:1;stroke:#1685fc;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path6201-2"
inkscape:flatsided="true"
sodipodi:sides="3"
sodipodi:cx="170.92444"
sodipodi:cy="403.2724"
sodipodi:r1="16.610861"
sodipodi:r2="8.3054304"
sodipodi:arg1="1.0471976"
sodipodi:arg2="2.0943951"
inkscape:rounded="0.1"
inkscape:randomized="0"
transform="matrix(0.26458333,0,0,0.26458333,-0.61228761,7.6018354)"
inkscape:transform-center-x="0.85152345"
inkscape:transform-center-y="-1.3442414e-06"
d="m 179.22987,417.65783 c -2.49163,1.43854 -24.91629,-11.50835 -24.91629,-14.38543 0,-2.87709 22.42466,-15.82397 24.91629,-14.38543 2.49163,1.43855 2.49163,27.33232 0,28.77086 z" />
<path
sodipodi:type="star"
style="fill:#c5e0f1;fill-opacity:1;stroke:#1685fc;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path6203-6"
inkscape:flatsided="true"
sodipodi:sides="3"
sodipodi:cx="170.92444"
sodipodi:cy="403.2724"
sodipodi:r1="16.610861"
sodipodi:r2="8.3054304"
sodipodi:arg1="1.0471976"
sodipodi:arg2="2.0943951"
inkscape:rounded="0.1"
inkscape:randomized="0"
transform="matrix(-0.26458333,0,0,0.26458333,108.15608,7.6018354)"
inkscape:transform-center-x="-0.85152352"
inkscape:transform-center-y="-1.3442414e-06"
d="m 179.22987,417.65783 c -2.49163,1.43854 -24.91629,-11.50835 -24.91629,-14.38543 0,-2.87709 22.42466,-15.82397 24.91629,-14.38543 2.49163,1.43855 2.49163,27.33232 0,28.77086 z" />
<path
style="fill:none;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 47.416672,114.30099 h 12.88312"
id="path6209-1" />
</g>
<path
style="fill:none;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 53.877389,107.83714 v 12.85223"
id="path6211" />
<circle
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
id="circle6213"
cx="53.877388"
cy="114.30098"
r="4.3025455" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.9 KiB

@@ -0,0 +1,112 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="35.465557mm"
height="35.465557mm"
viewBox="0 0 35.465557 35.465557"
version="1.1"
id="svg20924"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="netbox-topology-views-icons.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview20926"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.4723932"
inkscape:cx="1020.3364"
inkscape:cy="643.5317"
inkscape:window-width="1920"
inkscape:window-height="1133"
inkscape:window-x="0"
inkscape:window-y="30"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs20921">
<inkscape:path-effect
effect="fillet_chamfer"
id="path-effect108851-0-7"
is_visible="true"
lpeversion="1"
satellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,1.8520833,0,1 @ F,0,0,1,0,1.8520833,0,1 @ F,0,0,1,0,0,0,1"
unit="px"
method="auto"
mode="F"
radius="7"
chamfer_steps="1"
flexible="false"
use_knot_distance="true"
apply_no_radius="true"
apply_with_radius="true"
only_selected="false"
hide_knots="false"
nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,1.8520833,0,1 @ F,0,0,1,0,1.8520833,0,1 @ F,0,0,1,0,0,0,1" />
</defs>
<g
inkscape:label="Icons"
inkscape:groupmode="layer"
id="layer1"
inkscape:highlight-color="#1685fc"
transform="translate(-22.620006,-322.61998)">
<g
id="docking-station"
transform="translate(287.82013,-4.5667938)"
style="display:inline"
inkscape:label="docking-station">
<circle
style="fill:#ffffff;fill-opacity:1;stroke:#9cc8f8;stroke-width:1.32292;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle107097-8"
cx="-247.46735"
cy="344.91956"
r="17.071318" />
<g
id="g39153"
transform="translate(0,0.98568786)">
<path
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m -257.37511,337.96442 0.87607,13.06213 a 1.9804625,1.9804625 43.081474 0 0 1.97602,1.84793 h 14.11084 a 1.9786923,1.9786923 136.89296 0 0 1.97437,-1.84804 l 0.87821,-13.27136"
id="path108086-4"
sodipodi:nodetypes="cccc"
inkscape:original-d="m -257.37511,337.96442 1.00001,14.91006 h 17.815 l 1.0005,-15.1194"
inkscape:path-effect="#path-effect108851-0-7" />
<rect
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="rect107103-4-7"
width="7.5298009"
height="4.5139198"
x="-251.23225"
y="337.29099"
rx="0.30000001"
ry="0.29999998" />
<rect
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="rect107103-4-9-2"
width="1.7212976"
height="2.2977409"
x="-248.328"
y="334.99326"
rx="0.30000001"
ry="0.29999998" />
<path
id="path37804-7"
style="display:inline;vector-effect:none;fill:#ffffff;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.323;stop-color:#000000"
inkscape:transform-center-x="4.6614787e-06"
inkscape:transform-center-y="-0.65464484"
d="m -247.46736,339.1069 c 0.0828,0 6.67621,3.6315 6.70181,3.7103 0.0256,0.0788 -2.49285,7.82974 -2.55986,7.87845 -0.067,0.0487 -8.21687,0.0487 -8.28389,-2e-5 -0.067,-0.0487 -2.58546,-7.79965 -2.55986,-7.87843 0.0256,-0.0788 6.61896,-3.7103 6.7018,-3.7103 z"
sodipodi:nodetypes="ssssss" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.8 KiB

@@ -0,0 +1,76 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="35.465557mm"
height="35.465557mm"
viewBox="0 0 35.465557 35.465557"
version="1.1"
id="svg20924"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="netbox-topology-views-icons.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview20926"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.4723932"
inkscape:cx="1020.3364"
inkscape:cy="643.5317"
inkscape:window-width="1920"
inkscape:window-height="1133"
inkscape:window-x="0"
inkscape:window-y="30"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs20921" />
<g
inkscape:label="Icons"
inkscape:groupmode="layer"
id="layer1"
inkscape:highlight-color="#1685fc"
transform="translate(-322.62001,-322.61998)">
<g
id="environment-monitor"
style="display:inline"
transform="translate(227.33747,-3.8293975)"
inkscape:label="environment-monitor">
<circle
style="fill:#ffffff;fill-opacity:1;stroke:#9cc8f8;stroke-width:1.32292;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle158112"
cx="113.01532"
cy="344.18216"
r="17.071318" />
<g
id="g163978"
transform="matrix(0.38772659,0,0,0.39176299,70.312955,169.9459)"
style="stroke-width:2.56582">
<path
id="path161072"
style="display:inline;opacity:1;vector-effect:none;fill:#ffffff;fill-rule:evenodd;stroke:#1685fc;stroke-width:12.8291;stop-color:#000000;stop-opacity:1"
d="m 1208.627,1520.4863 c -17.2806,0 -31.1934,14.2722 -31.1934,32.002 v 90.4238 c 0,1.059 0.053,2.1047 0.1504,3.1367 a 53.854311,53.854311 0 0 0 -22.8125,43.9746 53.854311,53.854311 0 0 0 53.8555,53.8555 53.854311,53.854311 0 0 0 53.8535,-53.8555 53.854311,53.854311 0 0 0 -22.8125,-43.9746 c 0.097,-1.032 0.1504,-2.0777 0.1504,-3.1367 v -90.4238 c 0,-17.7298 -13.9109,-32.002 -31.1914,-32.002 z"
transform="matrix(0.26458333,0,0,0.26458333,-217.33747,13.829394)" />
<path
id="path161891"
style="display:inline;opacity:1;vector-effect:none;fill:#9cc8f8;fill-rule:evenodd;stroke:#9cc8f8;stroke-width:3.39437;stop-color:#000000;stop-opacity:1"
d="m 101.86165,441.59087 c -0.73295,0.019 -1.36152,0.69016 -1.33585,1.42213 0.003,3.76598 -0.007,7.53232 0.005,11.29803 0.0233,0.22939 0.0868,0.45249 0.12793,0.67903 -0.807617,0.27474 -1.601949,0.61737 -2.281849,1.14154 -1.67886,1.24291 -2.717006,3.29695 -2.715895,5.38657 -0.02868,2.04026 0.937657,4.05898 2.534603,5.3267 1.574615,1.28643 3.746021,1.78522 5.726531,1.33408 2.13945,-0.45958 3.99384,-2.03192 4.80735,-4.06196 0.83471,-2.01062 0.6095,-4.41711 -0.58327,-6.23816 -0.83556,-1.30871 -2.13802,-2.29886 -3.61127,-2.78223 -0.1305,-0.0662 -0.38878,-0.0611 -0.2694,-0.26683 0.14734,-0.51906 0.0849,-1.05995 0.0974,-1.59165 -0.003,-3.44657 0.005,-6.89343 -0.004,-10.33984 -0.0319,-0.73118 -0.71363,-1.34694 -1.44386,-1.30895 -0.35118,0 -0.70241,-0.003 -1.05357,0.003 z" />
<path
id="path162198"
style="display:inline;vector-effect:none;fill:#9cc8f8;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:3.39439;stop-color:#000000"
d="m 133.55266,436.8736 c 0,4.27221 -3.5037,7.73553 -7.82573,7.73553 -4.32204,0 -7.82575,-3.46332 -7.82575,-7.73553 0,-2.13611 2.67833,-5.08325 4.63476,-8.08117 1.95644,-2.99791 3.19099,-6.04661 3.19099,-6.04661 0,0 1.3673,2.9374 3.32373,5.93532 1.95643,2.99792 4.502,6.05635 4.502,8.19246 z"
sodipodi:nodetypes="sssscss" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.1 KiB

@@ -0,0 +1,167 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="35.46492mm"
height="35.465557mm"
viewBox="0 0 35.46492 35.465557"
version="1.1"
id="svg20924"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="netbox-topology-views-icons.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview20926"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.4723932"
inkscape:cx="1020.3364"
inkscape:cy="643.5317"
inkscape:window-width="1920"
inkscape:window-height="1133"
inkscape:window-x="0"
inkscape:window-y="30"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs20921" />
<g
inkscape:label="Icons"
inkscape:groupmode="layer"
id="layer1"
inkscape:highlight-color="#1685fc"
transform="translate(-382.62033,-322.61998)">
<g
id="fire-alarm-control-panel"
style="display:inline"
transform="translate(227.33747,-3.8293975)"
inkscape:label="fire-alarm-control-panel">
<ellipse
style="fill:#ffffff;fill-opacity:1;stroke:#9cc8f8;stroke-width:1.32292;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle1449"
cx="173.01532"
cy="344.18216"
rx="17.070999"
ry="17.071318" />
<g
id="g15356"
transform="matrix(0.49091543,0,0,0.48990893,93.774879,143.01642)"
style="stroke-width:2.0391">
<circle
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#1685fc;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:2.69757;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
id="path14112"
cx="167.2079"
cy="432.0451"
r="1.9124098" />
<rect
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:2.69773;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
id="rect14238"
width="27.194416"
height="36.502495"
x="140.09747"
y="391.06808"
rx="0.61110324"
ry="0.61235875" />
<path
id="path9959"
style="opacity:1;vector-effect:none;fill:#ffffff;fill-rule:evenodd;stroke:#1685fc;stroke-width:2.69757;stop-color:#000000;stop-opacity:1"
d="m 167.2082,405.51415 c -5.57982,0.003 -10.22708,4.71741 -10.45962,8.7485 0,0 0,0 -0.23254,12.69217 -0.0307,1.67507 -2.14526,4.43526 -2.14526,4.43526 h 25.67423 c 0,0 -2.11427,-2.76027 -2.1448,-4.43526 -0.23113,-12.68402 -0.23113,-12.68402 -0.23113,-12.68402 -0.23112,-4.04001 -4.87948,-8.75607 -10.46002,-8.75663 z"
sodipodi:nodetypes="ccsccsccc" />
<g
id="g14457"
transform="rotate(-60,184.81905,406.29514)"
style="stroke-width:2.0391">
<path
id="path168565-3"
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:2.69757;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 186.44982,396.6327 a 11.631045,11.626711 89.99885 0 1 -1.06195,8.83799 11.631045,11.626711 89.99885 0 1 -6.99822,5.4986" />
<path
id="path168567-6"
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:2.69757;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 182.46691,397.74844 a 7.4933726,7.49058 89.99885 0 1 -0.68416,5.69399 7.4933726,7.49058 89.99885 0 1 -4.50864,3.54251" />
</g>
<path
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:2.69773;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
d="m 145.49468,396.53567 h 16.40001"
id="path14492" />
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:2.69773;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 145.49468,400.58073 h 16.40001"
id="path14492-7" />
<rect
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:2.69773;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
id="rect14841"
width="1.7260052"
height="1.7260052"
x="145.49467"
y="405.26038"
rx="0.61110419"
ry="0.61235964" />
<rect
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:2.69773;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="rect14841-5"
width="1.7260052"
height="1.7260052"
x="152.83168"
y="405.26038"
rx="0.61110419"
ry="0.61235964" />
<rect
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:2.69773;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="rect14841-3"
width="1.7260052"
height="1.7260052"
x="160.16869"
y="405.26038"
rx="0.61110419"
ry="0.61235964" />
<rect
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:2.69773;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="rect14841-5-3"
width="1.7260052"
height="1.7260052"
x="145.49467"
y="412.19992"
rx="0.61110419"
ry="0.61235964" />
<rect
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:2.69773;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="rect14841-3-6"
width="1.7260052"
height="1.7260052"
x="152.83168"
y="412.19992"
rx="0.61110419"
ry="0.61235964" />
<rect
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:2.69773;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="rect14841-5-6"
width="1.7260052"
height="1.7260052"
x="145.49467"
y="419.13943"
rx="0.61110419"
ry="0.61235964" />
<rect
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:2.69773;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="rect14841-3-2"
width="1.7260052"
height="1.7260052"
x="152.83168"
y="419.13943"
rx="0.61110419"
ry="0.61235964" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

@@ -0,0 +1,113 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="35.465557mm"
height="35.465557mm"
viewBox="0 0 35.465557 35.465557"
version="1.1"
id="svg20924"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="netbox-topology-views-icons.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview20926"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.4723932"
inkscape:cx="1020.3364"
inkscape:cy="643.5317"
inkscape:window-width="1920"
inkscape:window-height="1133"
inkscape:window-x="0"
inkscape:window-y="30"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs20921" />
<g
inkscape:label="Icons"
inkscape:groupmode="layer"
id="layer1"
inkscape:highlight-color="#1685fc"
transform="translate(-22.620003,-82.619993)">
<g
id="firewall"
style="display:inline"
transform="translate(60.59722,-354.60885)"
inkscape:label="firewall">
<g
id="g15605-2-3"
transform="translate(-126.55536,395.20866)"
style="display:inline">
<circle
style="fill:#ffffff;fill-opacity:1;stroke:#9cc8f8;stroke-width:1.32292;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle15595-3-7"
cx="106.31092"
cy="59.75296"
r="17.071318" />
</g>
<rect
style="display:inline;fill:#ffffff;fill-opacity:1;stroke:#1685fc;stroke-width:1.32292;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect15597-5-4"
width="13.135721"
height="7.8575616"
x="-31.615744"
y="448.41177"
ry="0.29990518"
rx="0.29990515" />
<rect
style="display:inline;fill:#ffffff;fill-opacity:1;stroke:#1685fc;stroke-width:1.32291;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect15599-9-5"
width="8.0613489"
height="7.8575616"
x="-18.480019"
y="448.41177"
ry="0.29990518"
rx="0.29990521" />
<rect
style="display:inline;fill:#ffffff;fill-opacity:1;stroke:#1685fc;stroke-width:1.32292;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect15601-2-2"
width="8.1029577"
height="7.8575616"
x="-30.415871"
y="456.26932"
ry="0.29990518"
rx="0.29990521" />
<rect
style="display:inline;fill:#ffffff;fill-opacity:1;stroke:#1685fc;stroke-width:1.32292;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect15603-2-5"
width="13.171134"
height="7.8575616"
x="-22.312912"
y="456.26932"
ry="0.29990518"
rx="0.29990515" />
<g
id="g11678-0-1-8-4"
transform="matrix(0.83042871,0.00860843,-0.00861735,0.83354649,-38.397176,362.64277)"
style="display:inline;fill:#ffffff;fill-opacity:1;stroke-width:1.20188">
<path
style="fill:#ffffff;fill-opacity:1;stroke:#1685fc;stroke-width:1.59009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 13.932088,114.71995 c -1.040858,-2.7249 -1.685872,-5.2348 2.117779,-8.20285 3.826063,-2.98554 5.460915,-7.256745 5.750884,-7.965348 0.661583,-1.616724 2.08784,-3.008197 2.08784,-3.008197 0,0 1.351189,6.510735 1.411254,7.636245 0.120128,2.25101 3.490819,-1.87182 3.490819,-1.87182 0,0 2.450777,4.31864 2.936272,6.71087 0.433182,2.13446 -0.07887,6.53284 -0.07887,6.53284 z"
id="path1014-9-9-9-7"
sodipodi:nodetypes="csscscscc" />
<path
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#9cc8f8;fill-opacity:1;stroke:#1685fc;stroke-width:1.59009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
d="m 18.076691,114.65527 c 0,0 -0.484877,-1.84178 0.168533,-3.54456 0.569041,-1.48292 3.891012,-4.07272 3.891012,-4.07272 0,0 0.544111,2.90123 1.285102,4.14274 0.815246,1.36593 3.340512,3.40798 3.340512,3.40798 z"
id="path7258-3-4-7-4"
sodipodi:nodetypes="cscscc" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.7 KiB

@@ -0,0 +1,100 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="35.465557mm"
height="35.465557mm"
viewBox="0 0 35.465557 35.465557"
version="1.1"
id="svg20924"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="netbox-topology-views-icons.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview20926"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.4723932"
inkscape:cx="1020.3364"
inkscape:cy="643.5317"
inkscape:window-width="1920"
inkscape:window-height="1133"
inkscape:window-x="0"
inkscape:window-y="30"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs20921" />
<g
inkscape:label="Icons"
inkscape:groupmode="layer"
id="layer1"
inkscape:highlight-color="#1685fc"
transform="translate(-442.62002,-22.619997)">
<g
id="patch-panel-fc"
transform="translate(436.25974,-67.887849)"
style="display:inline;image-rendering:auto"
inkscape:export-filename="patch-panel-fc.svg"
inkscape:export-xdpi="89.523453"
inkscape:export-ydpi="89.523453"
inkscape:label="fo-patch-panel">
<circle
style="fill:#ffffff;fill-opacity:1;stroke:#9cc8f8;stroke-width:1.32292;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle843"
cx="24.09306"
cy="108.24062"
r="17.071318" />
<g
id="g3322"
transform="translate(-1.2254715e-4)">
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#1685fc;stroke-width:1.32292;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect845"
width="6.9177623"
height="6.9177623"
x="14.755642"
y="99.068886"
ry="3.4588811"
rx="3.4588811" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#1685fc;stroke-width:1.32292;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect847"
width="6.9180002"
height="6.9177623"
x="26.512722"
y="99.068886"
ry="3.4588811"
rx="3.4588811" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#1685fc;stroke-width:1.32292;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect849"
width="6.9177623"
height="6.9177623"
x="14.755642"
y="110.4946"
ry="3.4588811"
rx="3.4588811" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#1685fc;stroke-width:1.32292;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect851"
width="6.9177623"
height="6.9177623"
x="26.512722"
y="110.4946"
ry="3.4588811"
rx="3.4588811" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

@@ -0,0 +1,125 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="35.46492mm"
height="35.465557mm"
viewBox="0 0 35.46492 35.465557"
version="1.1"
id="svg20924"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="netbox-topology-views-icons.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview20926"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.4723932"
inkscape:cx="1020.3364"
inkscape:cy="643.5317"
inkscape:window-width="1920"
inkscape:window-height="1133"
inkscape:window-x="0"
inkscape:window-y="30"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs20921">
<inkscape:path-effect
effect="fillet_chamfer"
id="path-effect21916-5"
is_visible="true"
lpeversion="1"
satellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,1,0,1 @ F,0,0,1,0,1,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,1,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1"
unit="px"
method="auto"
mode="F"
radius="1"
chamfer_steps="1"
flexible="false"
use_knot_distance="true"
apply_no_radius="true"
apply_with_radius="true"
only_selected="true"
hide_knots="true"
nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,1,0,1 @ F,0,0,1,0,1,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,1,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1" />
<inkscape:path-effect
effect="fillet_chamfer"
id="path-effect21819-4"
is_visible="true"
lpeversion="1"
satellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,0.26458333,0,1 @ F,0,1,1,0,0.26458333,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1"
unit="px"
method="auto"
mode="F"
radius="1"
chamfer_steps="1"
flexible="false"
use_knot_distance="true"
apply_no_radius="true"
apply_with_radius="true"
only_selected="true"
hide_knots="false"
nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,1,1,0,0.26458333,0,1 @ F,0,1,1,0,0.26458333,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1" />
</defs>
<g
inkscape:label="Icons"
inkscape:groupmode="layer"
id="layer1"
inkscape:highlight-color="#1685fc"
transform="translate(-442.62033,-142.61999)">
<g
id="intrusion-alarm-system"
transform="translate(167.46714,-0.9814871)"
style="display:inline"
inkscape:label="intrusion-alarm-system">
<ellipse
style="fill:#ffffff;fill-opacity:1;stroke:#9cc8f8;stroke-width:1.32292;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="ellipse8007-6"
cx="292.88565"
cy="161.33426"
rx="17.070999"
ry="17.071318" />
<g
id="g25612">
<g
id="g8019-2"
transform="matrix(0.24545772,-0.42427358,0.42514523,0.24495447,85.890791,132.44208)"
style="stroke-width:2.0391">
<path
id="path8015-0"
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:2.69757;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 186.44982,396.6327 a 11.631045,11.626711 89.99885 0 1 -1.06195,8.83799 11.631045,11.626711 89.99885 0 1 -6.99822,5.4986" />
<path
id="path8017-2"
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:2.69757;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 182.46691,397.74844 a 7.4933726,7.49058 89.99885 0 1 -0.68416,5.69399 7.4933726,7.49058 89.99885 0 1 -4.50864,3.54251" />
</g>
<path
id="rect15798"
style="vector-effect:none;fill:#ffffff;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.323;stop-color:#000000"
d="m 288.87703,152.3074 v 2.82786 l 3.34193,-3.72839 a 0.8962662,0.8962662 0.0025884 0 1 1.33485,7e-5 l 7.28796,8.13219 a 2.6142078,2.6142078 69.066895 0 1 0.66739,1.74471 v 10.09382 c 0,0.1662 -0.13404,0.29972 -0.30025,0.29972 h -16.64705 c -0.16619,0 -0.29972,-0.13352 -0.29972,-0.29972 v -10.09382 a 2.6138579,2.6138579 110.93566 0 1 0.66746,-1.74465 l 1.47175,-1.64194 v -5.58985 z"
sodipodi:nodetypes="ccsssscccccc"
inkscape:original-d="m 288.87703,152.3074 v 2.82786 l 4.00939,-4.47303 8.62274,9.62161 v 11.09382 c 0,0.1662 -0.13404,0.29972 -0.30025,0.29972 h -16.64705 c -0.16619,0 -0.29972,-0.13352 -0.29972,-0.29972 v -11.09382 l 2.13921,-2.38659 v -5.58985 z"
inkscape:path-effect="#path-effect21916-5" />
<path
id="path18341"
style="vector-effect:none;fill:#ffffff;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.32292;stop-color:#000000"
d="m 290.12355,160.32162 c 7e-4,1.02157 0.56518,1.95933 1.46761,2.4381 l -1.63028,5.51242 a 0.19766209,0.19766209 53.237719 0 0 0.18954,0.25372 h 5.47048 a 0.19766379,0.19766379 126.76252 0 0 0.18955,-0.25372 l -1.62978,-5.51087 c 0.90271,-0.47917 1.46706,-1.41764 1.46708,-2.43965 -8.8e-4,-1.49626 -1.19299,-2.71976 -2.7621,-2.71976 -1.56911,0 -2.76122,1.2235 -2.7621,2.71976 z"
sodipodi:nodetypes="cccccccc"
inkscape:original-d="m 290.12355,160.32162 c 7e-4,1.02157 0.56518,1.95933 1.46761,2.4381 l -1.70532,5.76614 h 5.99964 l -1.70481,-5.76459 c 0.90271,-0.47917 1.46706,-1.41764 1.46708,-2.43965 -8.8e-4,-1.49626 -1.19299,-2.71976 -2.7621,-2.71976 -1.56911,0 -2.76122,1.2235 -2.7621,2.71976 z"
inkscape:path-effect="#path-effect21819-4" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

@@ -0,0 +1,129 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="35.465557mm"
height="35.465557mm"
viewBox="0 0 35.465557 35.465557"
version="1.1"
id="svg20924"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="netbox-topology-views-icons.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview20926"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.4723932"
inkscape:cx="1020.3364"
inkscape:cy="643.5317"
inkscape:window-width="1920"
inkscape:window-height="1133"
inkscape:window-x="0"
inkscape:window-y="30"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs20921" />
<g
inkscape:label="Icons"
inkscape:groupmode="layer"
id="layer1"
inkscape:highlight-color="#1685fc"
transform="translate(-442.62001,-82.619985)">
<g
id="kvm-over-ip"
transform="translate(287.33747,-63.829394)"
style="display:inline"
inkscape:label="kvm-over-ip">
<g
id="g149418"
transform="translate(148.92226,55.941533)">
<circle
style="fill:#ffffff;fill-opacity:1;stroke:#9cc8f8;stroke-width:1.32292;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle149390"
cx="24.09306"
cy="108.24062"
r="17.071318" />
<g
id="g149416" />
</g>
<g
id="g152789">
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="M 34.874886,104.72669 24.09306,108.24063"
id="path149394"
sodipodi:nodetypes="cc"
transform="translate(148.92225,55.941533)" />
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="M 24.09306,96.887266 V 108.24063"
id="path149396"
sodipodi:nodetypes="cc"
transform="translate(148.92225,55.941533)" />
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 13.311234,104.72669 10.781826,3.51393"
id="path149398"
sodipodi:nodetypes="cc"
transform="translate(148.92225,55.941533)" />
<rect
style="display:inline;fill:#ffffff;fill-opacity:1;stroke:#1685fc;stroke-width:1.32292;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect149402"
width="6.9177623"
height="6.9177623"
x="20.634178"
y="104.78175"
ry="0.29990521"
rx="0.29990521"
transform="translate(148.92225,55.941533)" />
<circle
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="circle149410"
cx="13.311234"
cy="104.72669"
r="1.4622281"
transform="translate(148.92225,55.941533)" />
<circle
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="circle149412"
cx="24.09306"
cy="96.887268"
r="1.4622281"
transform="translate(148.92225,55.941533)" />
<circle
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="circle149414"
cx="34.874886"
cy="104.72669"
r="1.4622281"
transform="translate(148.92225,55.941533)" />
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 163.34037,171.85131 h 19.34991"
id="path11152-2" />
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 173.01532,170.74273 v -3.10168"
id="path11156-1" />
<circle
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="circle11158-0"
cx="173.0153"
cy="171.85132"
r="2.5286407" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.5 KiB

@@ -0,0 +1,128 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="35.465557mm"
height="35.465557mm"
viewBox="0 0 35.465557 35.465557"
version="1.1"
id="svg20924"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="netbox-topology-views-icons.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview20926"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.4723932"
inkscape:cx="1020.3364"
inkscape:cy="643.5317"
inkscape:window-width="1920"
inkscape:window-height="1133"
inkscape:window-x="0"
inkscape:window-y="30"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs20921" />
<g
inkscape:label="Icons"
inkscape:groupmode="layer"
id="layer1"
inkscape:highlight-color="#1685fc"
transform="translate(-382.62,-82.619997)">
<g
id="kvm"
transform="translate(376.25972,-7.8878491)"
style="display:inline"
inkscape:label="kvm">
<circle
style="fill:#ffffff;fill-opacity:1;stroke:#9cc8f8;stroke-width:1.32292;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle7756"
cx="24.09306"
cy="108.24062"
r="17.071318" />
<g
id="g1387">
<path
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
d="m 24.09306,108.24063 6.663534,9.17052"
id="path8541"
sodipodi:nodetypes="cc" />
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="M 34.874886,104.72669 24.09306,108.24063"
id="path8541-6"
sodipodi:nodetypes="cc" />
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="M 24.09306,96.887266 V 108.24063"
id="path8541-6-1"
sodipodi:nodetypes="cc" />
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 13.311234,104.72669 10.781826,3.51393"
id="path8541-6-8"
sodipodi:nodetypes="cc" />
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 24.09306,108.24062 -6.663535,9.17053"
id="path8541-6-7"
sodipodi:nodetypes="cc" />
<g
id="g7766"
style="fill:#ffffff;fill-opacity:1">
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#1685fc;stroke-width:1.32292;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect7758"
width="6.9177623"
height="6.9177623"
x="20.634178"
y="104.78175"
ry="0.29990521"
rx="0.29990521" />
</g>
<circle
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="path20353-7-5-9"
cx="30.756594"
cy="117.41115"
r="1.4622281" />
<circle
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="path20353-7-5-3"
cx="17.429525"
cy="117.41115"
r="1.4622281" />
<circle
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="path20353-7-5-6"
cx="13.311234"
cy="104.72669"
r="1.4622281" />
<circle
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="path20353-7-5-0"
cx="24.09306"
cy="96.887268"
r="1.4622281" />
<circle
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="path20353-7-5-62"
cx="34.874886"
cy="104.72669"
r="1.4622281" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.6 KiB

@@ -0,0 +1,107 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="35.465557mm"
height="35.465557mm"
viewBox="0 0 35.465557 35.465557"
version="1.1"
id="svg20924"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="netbox-topology-views-icons.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview20926"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.4723932"
inkscape:cx="1020.3364"
inkscape:cy="643.5317"
inkscape:window-width="1920"
inkscape:window-height="1133"
inkscape:window-x="0"
inkscape:window-y="30"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs20921" />
<g
inkscape:label="Icons"
inkscape:groupmode="layer"
id="layer1"
inkscape:highlight-color="#1685fc"
transform="translate(-82.620002,-82.619997)">
<g
id="load-balancer"
transform="translate(76.25972,-7.8878491)"
style="display:inline"
inkscape:label="load-balancer">
<circle
style="fill:#ffffff;fill-opacity:1;stroke:#9cc8f8;stroke-width:1.32292;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle18020"
cx="24.09306"
cy="108.24062"
r="17.071318" />
<g
id="g18669"
transform="translate(0,0.55776946)">
<rect
style="display:inline;fill:#ffffff;fill-opacity:1;stroke:#1685fc;stroke-width:1.32292;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect18022"
width="6.9177623"
height="6.9177623"
x="14.755642"
y="99.068886"
ry="0.29990521"
rx="0.29990521" />
<rect
style="display:inline;fill:#ffffff;fill-opacity:1;stroke:#1685fc;stroke-width:1.32292;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect18024"
width="6.9177623"
height="6.9177623"
x="26.512722"
y="99.068886"
ry="0.29990521"
rx="0.29990521" />
<path
style="font-variation-settings:normal;display:inline;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
d="M 14.418108,108.63255 H 33.76802"
id="path18441" />
<circle
style="font-variation-settings:normal;display:inline;opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
id="path18578"
cx="24.093063"
cy="108.63255"
r="1.5129391" />
<path
sodipodi:type="star"
style="display:inline;fill:#ffffff;fill-opacity:1;stroke:#1685fc;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path2160-6-2-2-3"
inkscape:flatsided="true"
sodipodi:sides="3"
sodipodi:cx="170.92444"
sodipodi:cy="403.2724"
sodipodi:r1="16.610861"
sodipodi:r2="8.3054304"
sodipodi:arg1="1.0471976"
sodipodi:arg2="2.0943951"
inkscape:rounded="0.1"
inkscape:randomized="0"
transform="matrix(0,0.26458333,0.26458333,0,-82.606091,69.496694)"
inkscape:transform-center-x="1.6998618e-06"
inkscape:transform-center-y="-0.85152379"
d="m 179.22987,417.65783 c -2.49163,1.43854 -24.91629,-11.50835 -24.91629,-14.38543 0,-2.87709 22.42466,-15.82397 24.91629,-14.38543 2.49163,1.43855 2.49163,27.33232 0,28.77086 z" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.4 KiB

@@ -0,0 +1,109 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="35.465557mm"
height="35.465557mm"
viewBox="0 0 35.465557 35.465557"
version="1.1"
id="svg20924"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="netbox-topology-views-icons.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview20926"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.4723932"
inkscape:cx="1020.3364"
inkscape:cy="643.5317"
inkscape:window-width="1920"
inkscape:window-height="1133"
inkscape:window-x="0"
inkscape:window-y="30"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs20921">
<inkscape:path-effect
effect="fillet_chamfer"
id="path-effect168587-5"
is_visible="true"
lpeversion="1"
satellites_param="F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1"
unit="px"
method="auto"
mode="F"
radius="1"
chamfer_steps="1"
flexible="false"
use_knot_distance="true"
apply_no_radius="true"
apply_with_radius="true"
only_selected="false"
hide_knots="false"
nodesatellites_param="F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1" />
</defs>
<g
inkscape:label="Icons"
inkscape:groupmode="layer"
id="layer1"
inkscape:highlight-color="#1685fc"
transform="translate(-382.62003,-142.62)">
<g
id="mobile-phone"
transform="translate(407.3375,-3.8293975)"
style="display:inline"
inkscape:label="mobile-phone">
<circle
style="fill:#ffffff;fill-opacity:1;stroke:#9cc8f8;stroke-width:1.32292;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle168561"
cx="-6.9846935"
cy="164.18217"
r="17.071318" />
<g
id="g168575"
transform="matrix(1.1817516,0,0,1.1821922,1.2694795,-29.91271)"
style="stroke-width:0.846044">
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.11932;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m -9.8910108,166.79888 c 0.00317,-0.57469 0.1016442,-2.0164 0.9025055,-3.63156 0.064493,-0.13006 0.1756206,-0.33852 0.2487699,-0.46501 0.8992851,-1.55504 2.0834393,-2.34548 2.577829,-2.6256 0.125963,-0.0714 0.3441979,-0.0819 0.4820601,-0.0335 l 1.456866,0.51192 a 0.22306597,0.22306597 69.226816 0 1 0.120973,0.31891 l -0.651568,1.17097 a 0.18993996,0.18993996 173.41918 0 1 -0.3065618,0.0354 l -0.3382034,-0.37228 c -0.098259,-0.10815 -0.2931113,-0.16653 -0.4301565,-0.11568 -0.4383564,0.16263 -1.3575393,0.6085 -2.0235562,1.65094 -0.078512,0.12289 -0.1937103,0.32995 -0.2568977,0.46168 -0.5411865,1.12826 -0.4482564,2.18465 -0.3642859,2.65463 0.025475,0.14258 0.1738689,0.27704 0.317654,0.30308 l 0.499884,0.0906 a 0.18933523,0.18933523 64.680504 0 1 0.1316977,0.27836 l -0.6936614,1.24662 a 0.20619372,0.20619372 171.16326 0 1 -0.3214155,0.05 l -1.1526798,-1.08371 c -0.1064624,-0.10009 -0.2000598,-0.29958 -0.199253,-0.44567 z"
id="path168563"
sodipodi:nodetypes="czcccczcccc"
inkscape:original-d="m -9.884525,167.06332 c 0,0 -0.152861,-1.93823 1.0162872,-4.12974 1.169148,-2.19151 2.93877,-2.97808 2.93877,-2.97808 l 1.956109,0.68734 -0.908865,1.63337 -0.69403,-0.76394 c 0,0 -1.515701,0.34865 -2.411105,1.95783 -0.895404,1.60917 -0.42857,3.14549 -0.42857,3.14549 l 1.020576,0.18488 -0.950958,1.70902 z"
inkscape:path-effect="#path-effect168587-5" />
<g
id="g168573"
transform="rotate(29.353187,-12.969556,162.61463)"
style="stroke-width:0.846044">
<path
id="path168565"
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.11925;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m -0.02754,154.09051 a 9.8385399,9.8385399 0 0 1 2.88139,6.95663 9.8385399,9.8385399 0 0 1 -2.88164,6.95691" />
<path
id="path168567"
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.11925;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m -2.50254,156.56525 a 6.33854,6.33854 0 0 1 1.85638,4.48189 6.33854,6.33854 0 0 1 -1.85651,4.48203" />
<path
id="path168569"
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.11925;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m -13.941847,154.09051 a 9.8385399,9.8385399 0 0 0 -2.88139,6.95663 9.8385399,9.8385399 0 0 0 2.88164,6.9569" />
<path
id="path168571"
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.11925;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m -11.466847,156.56524 a 6.33854,6.33854 0 0 0 -1.85638,4.4819 6.33854,6.33854 0 0 0 1.85651,4.48202" />
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.6 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 17 KiB

@@ -0,0 +1,92 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="35.465557mm"
height="35.465557mm"
viewBox="0 0 35.465557 35.465557"
version="1.1"
id="svg20924"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="netbox-topology-views-icons.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview20926"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.4723932"
inkscape:cx="1020.3364"
inkscape:cy="643.5317"
inkscape:window-width="1920"
inkscape:window-height="1133"
inkscape:window-x="0"
inkscape:window-y="30"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs20921" />
<g
inkscape:label="Icons"
inkscape:groupmode="layer"
id="layer1"
inkscape:highlight-color="#1685fc"
transform="translate(-262.61999,-202.61999)">
<g
id="network-socket"
transform="translate(74.49431,50.112763)"
style="display:inline"
inkscape:label="network-socket">
<circle
style="fill:#ffffff;fill-opacity:1;stroke:#9cc8f8;stroke-width:1.32292;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle1915"
cx="205.85846"
cy="170.24001"
r="17.071318" />
<g
id="g2837"
transform="matrix(0.76974836,0,0,0.76740612,47.388839,39.34684)"
style="stroke-width:1.30111">
<rect
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.72136;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
id="rect2745"
width="22.035437"
height="18.680389"
x="194.85426"
y="161.22551"
rx="0.38961461"
ry="0.39080378" />
<path
id="path1917"
style="vector-effect:none;fill:#ffffff;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.72136;stop-color:#000000"
d="m 198.33761,166.02536 h 4.70693 v -1.49132 c -0.0214,-0.62401 5.95813,-0.7265 5.96737,0 v 1.49132 h 4.39444 c 0.17819,0 0.32164,0.12111 0.32164,0.27154 v 10.53614 c 0,0.15043 -0.14345,0.27154 -0.32164,0.27154 h -15.06874 c -0.17819,0 -0.32164,-0.12111 -0.32164,-0.27154 V 166.2969 c 0,-0.15043 0.14345,-0.27154 0.32164,-0.27154 z"
sodipodi:nodetypes="sccccssssssss" />
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.72136;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 202.06826,173.54774 v 2.04502"
id="path1921-9" />
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.72136;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 204.59507,173.54774 v 2.04502"
id="path1921-1" />
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.72136;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 207.12185,173.54774 v 2.04502"
id="path1921-2" />
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.72136;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 209.64866,173.54774 v 2.04502"
id="path1921-7" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

@@ -0,0 +1,79 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="35.465557mm"
height="35.465557mm"
viewBox="0 0 35.465557 35.465557"
version="1.1"
id="svg20924"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="netbox-topology-views-icons.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview20926"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.4723932"
inkscape:cx="1020.3364"
inkscape:cy="643.5317"
inkscape:window-width="1920"
inkscape:window-height="1133"
inkscape:window-x="0"
inkscape:window-y="30"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs20921" />
<g
inkscape:label="Icons"
inkscape:groupmode="layer"
id="layer1"
inkscape:highlight-color="#1685fc"
transform="translate(-82.620005,-322.61998)">
<g
id="notebook"
style="display:inline"
transform="translate(227.33747,-3.8293975)"
inkscape:label="notebook">
<circle
style="display:inline;fill:#ffffff;fill-opacity:1;stroke:#9cc8f8;stroke-width:1.32292;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle123367"
cx="-126.98469"
cy="344.18216"
r="17.071318" />
<g
id="g126064"
transform="translate(0,0.86686945)">
<rect
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
id="rect123516"
width="16.102165"
height="11.965014"
x="-135.03577"
y="335.84027"
rx="0.30000046"
ry="0.30000046" />
<rect
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
id="rect123518"
width="21.102962"
height="2.9850111"
x="-137.53616"
y="347.8053"
rx="0.30000046"
ry="0.30000046" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

@@ -0,0 +1,144 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="35.465557mm"
height="35.465557mm"
viewBox="0 0 35.465557 35.465557"
version="1.1"
id="svg20924"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="netbox-topology-views-icons.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview20926"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.4723932"
inkscape:cx="1020.3364"
inkscape:cy="643.5317"
inkscape:window-width="1920"
inkscape:window-height="1133"
inkscape:window-x="0"
inkscape:window-y="30"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs20921">
<inkscape:path-effect
effect="fillet_chamfer"
id="path-effect16898-5"
is_visible="true"
lpeversion="1"
satellites_param="F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1"
unit="px"
method="auto"
mode="F"
radius="1"
chamfer_steps="1"
flexible="false"
use_knot_distance="true"
apply_no_radius="true"
apply_with_radius="true"
only_selected="false"
hide_knots="false"
nodesatellites_param="F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1" />
</defs>
<g
inkscape:label="Icons"
inkscape:groupmode="layer"
id="layer1"
inkscape:highlight-color="#1685fc"
transform="translate(-262.50953,-142.28008)">
<g
id="pabx"
transform="translate(256.14925,51.772232)"
style="display:inline"
inkscape:label="pabx">
<circle
style="fill:#ffffff;fill-opacity:1;stroke:#9cc8f8;stroke-width:1.32292;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle16890"
cx="24.09306"
cy="108.24062"
r="17.071318" />
<g
id="g18684">
<path
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
d="M 24.183889,108.58054 18.299187,97.908988"
id="path17039"
sodipodi:nodetypes="cc" />
<path
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
d="m 24.183889,108.58054 7.752897,-7.75289"
id="path18327" />
<path
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
d="m 24.168351,108.61697 12.139972,4.64452"
id="path18419" />
<path
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
d="m 24.203515,108.58054 -11.263185,2.6793"
id="path17041" />
<path
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
d="m 24.183889,108.5705 -0.584631,11.22725"
id="path17043"
sodipodi:nodetypes="cc" />
<circle
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="path18578-6"
cx="31.936787"
cy="100.82765"
r="1.5129391" />
<circle
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="path18578-7"
cx="18.299187"
cy="97.908989"
r="1.5129391" />
<circle
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="path18578-5"
cx="12.94033"
cy="111.25984"
r="1.5129391" />
<circle
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="path18578-3"
cx="23.599258"
cy="119.79775"
r="1.5129391" />
<circle
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="path18578-56"
cx="36.308323"
cy="113.26149"
r="1.5129391" />
<circle
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
id="path16922"
cx="24.183889"
cy="108.58054"
r="7.1289177" />
<path
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
d="m 21.251327,111.22285 c 0.0032,-0.57469 0.101644,-2.0164 0.902505,-3.63156 0.06449,-0.13006 0.175621,-0.33852 0.24877,-0.46501 0.899259,-1.555 2.083369,-2.34544 2.577785,-2.62559 0.125987,-0.0714 0.344242,-0.082 0.482104,-0.0335 l 1.456867,0.51193 a 0.223067,0.223067 69.226947 0 1 0.120973,0.31891 l -0.651569,1.17097 a 0.18993865,0.18993865 173.41937 0 1 -0.30656,0.0354 l -0.338206,-0.37227 c -0.09826,-0.10816 -0.293009,-0.16656 -0.429939,-0.11577 -0.438239,0.16256 -1.357516,0.60835 -2.023631,1.6508 -0.0786,0.123 -0.193851,0.33017 -0.257039,0.4619 -0.541252,1.12841 -0.448234,2.18491 -0.364256,2.6548 0.02547,0.14249 0.173839,0.27687 0.317624,0.30291 l 0.499884,0.0906 a 0.18933713,0.18933713 64.680776 0 1 0.131698,0.27836 l -0.693662,1.24662 a 0.20619371,0.20619371 171.16327 0 1 -0.321415,0.05 l -1.15268,-1.08371 c -0.106462,-0.10009 -0.20006,-0.29958 -0.199253,-0.44567 z"
id="path16892"
sodipodi:nodetypes="czcccczcccc"
inkscape:original-d="m 21.257813,111.48729 c 0,0 -0.152861,-1.93824 1.016287,-4.12974 1.169148,-2.19151 2.93877,-2.97809 2.93877,-2.97809 l 1.956109,0.68735 -0.908865,1.63337 -0.69403,-0.76395 c 0,0 -1.515701,0.34866 -2.411105,1.95783 -0.895404,1.60918 -0.42857,3.14549 -0.42857,3.14549 l 1.020576,0.18489 -0.950958,1.70902 z"
inkscape:path-effect="#path-effect16898-5" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 9.2 KiB

@@ -0,0 +1,96 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="35.465557mm"
height="35.465557mm"
viewBox="0 0 35.465557 35.465557"
version="1.1"
id="svg20924"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="netbox-topology-views-icons.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview20926"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.4723932"
inkscape:cx="1020.3364"
inkscape:cy="643.5317"
inkscape:window-width="1920"
inkscape:window-height="1133"
inkscape:window-x="0"
inkscape:window-y="30"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs20921" />
<g
inkscape:label="Icons"
inkscape:groupmode="layer"
id="layer1"
inkscape:highlight-color="#1685fc"
transform="translate(-382.56627,-22.619992)">
<g
id="patch-panel"
transform="translate(376.20599,-67.887854)"
style="display:inline"
inkscape:label="patch-panel">
<circle
style="fill:#ffffff;fill-opacity:1;stroke:#9cc8f8;stroke-width:1.32292;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path846-2-0"
cx="24.09306"
cy="108.24062"
r="17.071318" />
<g
id="g3311">
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#1685fc;stroke-width:1.32292;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect1796-0-6"
width="6.9177623"
height="6.9177623"
x="14.755642"
y="99.068886"
ry="0.29990521"
rx="0.29990521" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#1685fc;stroke-width:1.32292;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect1796-7-9-2"
width="6.9177623"
height="6.9177623"
x="26.512722"
y="99.068886"
ry="0.29990521"
rx="0.29990521" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#1685fc;stroke-width:1.32292;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect1796-5-3-6"
width="6.9177623"
height="6.9177623"
x="14.755642"
y="110.4946"
ry="0.29990521"
rx="0.29990521" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#1685fc;stroke-width:1.32292;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect1796-7-3-6-1"
width="6.9177623"
height="6.9177623"
x="26.512722"
y="110.4946"
ry="0.29990521"
rx="0.29990521" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

@@ -0,0 +1,186 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="35.465557mm"
height="35.465557mm"
viewBox="0 0 35.465557 35.465557"
version="1.1"
id="svg20924"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="netbox-topology-views-icons.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview20926"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.4723932"
inkscape:cx="1020.3364"
inkscape:cy="643.5317"
inkscape:window-width="1920"
inkscape:window-height="1133"
inkscape:window-x="0"
inkscape:window-y="30"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs20921">
<inkscape:path-effect
effect="fillet_chamfer"
id="path-effect24335-0"
is_visible="true"
lpeversion="1"
satellites_param="F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1"
unit="px"
method="auto"
mode="F"
radius="1"
chamfer_steps="1"
flexible="false"
use_knot_distance="true"
apply_no_radius="true"
apply_with_radius="true"
only_selected="false"
hide_knots="false"
nodesatellites_param="F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1" />
<inkscape:path-effect
effect="fillet_chamfer"
id="path-effect24335-1-6"
is_visible="true"
lpeversion="1"
satellites_param="F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1"
unit="px"
method="auto"
mode="F"
radius="1"
chamfer_steps="1"
flexible="false"
use_knot_distance="true"
apply_no_radius="true"
apply_with_radius="true"
only_selected="false"
hide_knots="false"
nodesatellites_param="F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1" />
<inkscape:path-effect
effect="fillet_chamfer"
id="path-effect24335-6-1"
is_visible="true"
lpeversion="1"
satellites_param="F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1"
unit="px"
method="auto"
mode="F"
radius="1"
chamfer_steps="1"
flexible="false"
use_knot_distance="true"
apply_no_radius="true"
apply_with_radius="true"
only_selected="false"
hide_knots="false"
nodesatellites_param="F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1" />
</defs>
<g
inkscape:label="Icons"
inkscape:groupmode="layer"
id="layer1"
inkscape:highlight-color="#1685fc"
transform="translate(-82.620002,-202.61999)">
<g
id="pdu"
transform="translate(76.25972,112.11214)"
style="display:inline"
inkscape:label="pdu">
<circle
style="fill:#ffffff;fill-opacity:1;stroke:#9cc8f8;stroke-width:1.32292;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle22642"
cx="24.09306"
cy="108.24062"
r="17.071318" />
<g
id="g24446">
<g
id="g24341"
transform="translate(2.2022783,-3.6624277)">
<path
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
d="m 16.341201,106.66306 h 10.949571 a 0.26458333,0.26458333 135 0 0 0.264583,-0.26458 v -4.70286 a 0.62852139,0.62852139 67.170779 0 0 -0.189226,-0.44951 l -2.447661,-2.392037 a 0.64928801,0.64928801 22.170779 0 0 -0.453809,-0.184926 l -5.296834,0 a 0.64937198,0.64937198 157.83181 0 0 -0.453826,0.184909 l -2.448138,2.392074 a 0.62844198,0.62844198 112.83181 0 0 -0.189243,0.44949 v 4.70286 a 0.26458333,0.26458333 45 0 0 0.264583,0.26458 z"
id="path22955"
sodipodi:nodetypes="ccccccc"
inkscape:original-d="m 16.076618,106.66306 h 11.478737 v -5.23202 l -2.826113,-2.761893 h -5.826 l -2.826624,2.761893 z"
inkscape:path-effect="#path-effect24335-0" />
<path
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 19.079996,104.59475 v -1.44816"
id="path24187" />
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 24.551977,104.59475 v -1.44816"
id="path24187-2" />
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 21.815986,102.48599 v -1.44816"
id="path24187-9" />
</g>
<g
id="g24341-2"
transform="translate(2.2770735,5.4312056)"
style="display:inline">
<path
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
d="m 16.341201,106.66306 h 10.949571 a 0.26458333,0.26458333 135 0 0 0.264583,-0.26458 v -4.70286 a 0.62852139,0.62852139 67.170779 0 0 -0.189226,-0.44951 l -2.447661,-2.392037 a 0.64928801,0.64928801 22.170779 0 0 -0.453809,-0.184926 l -5.296834,0 a 0.64937198,0.64937198 157.83181 0 0 -0.453826,0.184909 l -2.448138,2.392074 a 0.62844198,0.62844198 112.83181 0 0 -0.189243,0.44949 v 4.70286 a 0.26458333,0.26458333 45 0 0 0.264583,0.26458 z"
id="path22955-7"
sodipodi:nodetypes="ccccccc"
inkscape:original-d="m 16.076618,106.66306 h 11.478737 v -5.23202 l -2.826113,-2.761893 h -5.826 l -2.826624,2.761893 z"
inkscape:path-effect="#path-effect24335-1-6" />
<path
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 19.079996,104.59475 v -1.44816"
id="path24187-0" />
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 24.551977,104.59475 v -1.44816"
id="path24187-2-9" />
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 21.815986,102.48599 v -1.44816"
id="path24187-9-3" />
</g>
<g
id="g24341-0"
transform="translate(2.5183965,14.524838)"
style="display:inline">
<path
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
d="m 16.341201,106.66306 h 10.949571 a 0.26458333,0.26458333 135 0 0 0.264583,-0.26458 v -4.70286 a 0.62852139,0.62852139 67.170779 0 0 -0.189226,-0.44951 l -2.447661,-2.392037 a 0.64928801,0.64928801 22.170779 0 0 -0.453809,-0.184926 l -5.296834,0 a 0.64937198,0.64937198 157.83181 0 0 -0.453826,0.184909 l -2.448138,2.392074 a 0.62844198,0.62844198 112.83181 0 0 -0.189243,0.44949 v 4.70286 a 0.26458333,0.26458333 45 0 0 0.264583,0.26458 z"
id="path22955-6"
sodipodi:nodetypes="ccccccc"
inkscape:original-d="m 16.076618,106.66306 h 11.478737 v -5.23202 l -2.826113,-2.761893 h -5.826 l -2.826624,2.761893 z"
inkscape:path-effect="#path-effect24335-6-1" />
<path
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 19.079996,104.59475 v -1.44816"
id="path24187-26" />
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 24.551977,104.59475 v -1.44816"
id="path24187-2-1" />
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 21.815986,102.48599 v -1.44816"
id="path24187-9-8" />
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 11 KiB

@@ -0,0 +1,67 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="35.465557mm"
height="35.465557mm"
viewBox="0 0 35.465557 35.465557"
version="1.1"
id="svg20924"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="netbox-topology-views-icons.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview20926"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.4723932"
inkscape:cx="1020.3364"
inkscape:cy="643.5317"
inkscape:window-width="1920"
inkscape:window-height="1133"
inkscape:window-x="0"
inkscape:window-y="30"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs20921" />
<g
inkscape:label="Icons"
inkscape:groupmode="layer"
id="layer1"
inkscape:highlight-color="#1685fc"
transform="translate(-322.50953,-142.28008)">
<g
id="phone"
transform="translate(41.18722,-3.1780004)"
style="display:inline"
inkscape:label="phone">
<g
id="g1288-3"
transform="translate(274.96203,54.950231)"
style="display:inline">
<circle
style="fill:#ffffff;fill-opacity:1;stroke:#9cc8f8;stroke-width:1.32292;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle10171-0"
cx="24.09306"
cy="108.24062"
r="17.071318" />
</g>
<path
id="path24122-6"
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 302.39344,153.21469 c -1.1842,0.28549 -5.74371,1.67315 -8.56123,6.62596 -2.70891,4.76175 -1.93418,9.48519 -1.59525,10.94713 0.10649,0.57254 0.53414,1.20121 0.97255,1.48885 l 1.29554,0.75964 c 1.00147,0.58629 2.3155,0.16508 2.94708,-0.94516 l 0.64236,-1.12913 c 0.63172,-1.11016 0.33409,-2.47619 -0.66715,-3.06286 0,0 -0.84997,-0.5314 -1.29553,-0.75965 -0.12832,-0.066 -0.42349,-0.0336 -0.39584,-0.17518 0.003,-0.011 0.0341,-0.001 0.0341,-0.001 0.93988,-3.27574 2.26817,-6.33757 4.94853,-8.65477 0,0 -0.014,-0.009 -0.0103,-0.0129 0.0929,-0.0948 0.20413,0.16719 0.32092,0.23565 l 1.295,0.75964 c 1.0015,0.58629 2.31603,0.16558 2.94762,-0.94465 l 0.64235,-1.13016 c 0.63172,-1.11016 0.33412,-2.47618 -0.66715,-3.06286 0,0 -0.83444,-0.56602 -1.29656,-0.75861 -0.53983,-0.19948 -1.10651,-0.26833 -1.55702,-0.17987 z"
sodipodi:nodetypes="cscccscccccccccccccc" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.1 KiB

@@ -0,0 +1,137 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="35.465557mm"
height="35.465557mm"
viewBox="0 0 35.465557 35.465557"
version="1.1"
id="svg20924"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="netbox-topology-views-icons.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview20926"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.4723932"
inkscape:cx="1020.3364"
inkscape:cy="643.5317"
inkscape:window-width="1920"
inkscape:window-height="1133"
inkscape:window-x="0"
inkscape:window-y="30"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs20921">
<inkscape:path-effect
effect="fillet_chamfer"
id="path-effect7489-2"
is_visible="true"
lpeversion="1"
satellites_param="F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1"
unit="px"
method="auto"
mode="F"
radius="1"
chamfer_steps="1"
flexible="false"
use_knot_distance="true"
apply_no_radius="true"
apply_with_radius="true"
only_selected="false"
hide_knots="false"
nodesatellites_param="F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1" />
</defs>
<g
inkscape:label="Icons"
inkscape:groupmode="layer"
id="layer1"
inkscape:highlight-color="#1685fc"
transform="translate(-202.62,-202.62)">
<g
id="power-panel"
transform="translate(196.25972,112.11215)"
style="display:inline"
inkscape:label="power-panel">
<circle
style="fill:#ffffff;fill-opacity:1;stroke:#9cc8f8;stroke-width:1.32292;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle2068"
cx="24.09306"
cy="108.24062"
r="17.071318" />
<g
id="g1414">
<rect
style="font-variation-settings:normal;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="rect2094"
width="15.32574"
height="19.166155"
x="16.430189"
y="98.657547"
rx="0.30000046"
ry="0.29990521" />
<path
style="color:#000000;fill:#1685fc;stroke-width:1;-inkscape-stroke:none"
d="m 22.076952,100.95276 -1.773928,7.28642 a 0.20789687,0.20789687 51.841439 0 0 0.201996,0.25707 h 3.066085 a 0.221025,0.221025 50.125627 0 1 0.217496,0.26036 l -1.224111,6.76858 a 0.04607116,0.04607116 20.128973 0 0 0.08523,0.0312 l 5.163643,-8.94128 a 0.15273666,0.15273666 60.003345 0 0 -0.132265,-0.22912 h -4.139801 a 0.15100299,0.15100299 60.285734 0 1 -0.130013,-0.22781 l 3.092294,-5.23472 a 0.15100299,0.15100299 60.285734 0 0 -0.130013,-0.22781 h -3.969444 a 0.33672627,0.33672627 141.84144 0 0 -0.32717,0.25707 z"
id="path4653"
sodipodi:nodetypes="cccccccc"
inkscape:original-d="m 22.139539,100.69569 -1.899102,7.80056 h 3.595251 l -1.318285,7.2893 5.428279,-9.39952 h -4.668967 l 3.361434,-5.69034 z"
inkscape:path-effect="#path-effect7489-2" />
<path
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
d="m 14.21149,102.65731 h 2.218699"
id="path6295" />
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 14.227575,108.24031 h 2.202614"
id="path6295-6" />
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 14.227575,113.82331 h 2.202614"
id="path6295-2" />
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.32301;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 31.755929,102.65731 h 2.21899"
id="path6295-9" />
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.32301;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 31.755929,108.24031 h 2.21899"
id="path6295-1" />
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.32301;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 31.755929,113.82331 h 2.21899"
id="path6295-27" />
<path
sodipodi:type="star"
style="display:inline;fill:#1685fc;fill-opacity:1;stroke:#1685fc;stroke-width:11.9506;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path15914-0"
inkscape:flatsided="true"
sodipodi:sides="3"
sodipodi:cx="170.92444"
sodipodi:cy="403.2724"
sodipodi:r1="16.610861"
sodipodi:r2="8.3054304"
sodipodi:arg1="1.0471976"
sodipodi:arg2="2.0943951"
inkscape:rounded="0.1"
inkscape:randomized="0"
transform="matrix(0.02240769,-0.10760072,-0.10922004,-0.02240223,63.72173,141.13463)"
inkscape:transform-center-x="-0.17209272"
inkscape:transform-center-y="0.25890207"
d="m 179.22987,417.65783 c -2.49163,1.43854 -24.91629,-11.50835 -24.91629,-14.38543 0,-2.87709 22.42466,-15.82397 24.91629,-14.38543 2.49163,1.43855 2.49163,27.33232 0,28.77086 z" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

@@ -0,0 +1,100 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="35.465557mm"
height="35.465557mm"
viewBox="0 0 35.465557 35.465557"
version="1.1"
id="svg20924"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="netbox-topology-views-icons.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview20926"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.4723932"
inkscape:cx="1020.3364"
inkscape:cy="643.5317"
inkscape:window-width="1920"
inkscape:window-height="1133"
inkscape:window-x="0"
inkscape:window-y="30"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs20921">
<inkscape:path-effect
effect="fillet_chamfer"
id="path-effect6748-3"
is_visible="true"
lpeversion="1"
satellites_param="F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1"
unit="px"
method="auto"
mode="F"
radius="1"
chamfer_steps="1"
flexible="false"
use_knot_distance="true"
apply_no_radius="true"
apply_with_radius="true"
only_selected="false"
hide_knots="false"
nodesatellites_param="F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1" />
</defs>
<g
inkscape:label="Icons"
inkscape:groupmode="layer"
id="layer1"
inkscape:highlight-color="#1685fc"
transform="translate(-142.62001,-202.61999)">
<g
id="power-units"
transform="translate(136.25973,112.11214)"
style="display:inline"
inkscape:label="power-units">
<circle
style="fill:#ffffff;fill-opacity:1;stroke:#9cc8f8;stroke-width:1.32292;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle6706"
cx="24.09306"
cy="108.24062"
r="17.071318" />
<g
id="g6726"
transform="matrix(1.4471257,0,0,1.4672614,-7.4774153,-42.540705)"
style="display:inline;stroke-width:0.686267">
<path
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:0.907931;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
d="m 16.341201,106.66306 h 10.949571 a 0.26458333,0.26458333 135 0 0 0.264583,-0.26458 v -4.70286 a 0.62852139,0.62852139 67.170779 0 0 -0.189226,-0.44951 l -2.447661,-2.392037 a 0.64928801,0.64928801 22.170779 0 0 -0.453809,-0.184926 l -5.296834,0 a 0.64937198,0.64937198 157.83181 0 0 -0.453826,0.184909 l -2.448138,2.392074 a 0.62844198,0.62844198 112.83181 0 0 -0.189243,0.44949 v 4.70286 a 0.26458333,0.26458333 45 0 0 0.264583,0.26458 z"
id="path6718"
sodipodi:nodetypes="ccccccc"
inkscape:original-d="m 16.076618,106.66306 h 11.478737 v -5.23202 l -2.826113,-2.761893 h -5.826 l -2.826624,2.761893 z"
inkscape:path-effect="#path-effect6748-3" />
<path
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:0.907931;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 19.079996,104.59475 v -1.44816"
id="path6720" />
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:0.907931;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 24.551977,104.59475 v -1.44816"
id="path6722" />
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:0.907931;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 21.815986,102.48599 v -1.44816"
id="path6724" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.9 KiB

@@ -0,0 +1,88 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="35.465557mm"
height="35.465557mm"
viewBox="0 0 35.465557 35.465557"
version="1.1"
id="svg20924"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="netbox-topology-views-icons.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview20926"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.4723932"
inkscape:cx="1020.3364"
inkscape:cy="643.5317"
inkscape:window-width="1920"
inkscape:window-height="1133"
inkscape:window-x="0"
inkscape:window-y="30"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs20921" />
<g
inkscape:label="Icons"
inkscape:groupmode="layer"
id="layer1"
inkscape:highlight-color="#1685fc"
transform="translate(-202.62,-322.61998)">
<g
id="printer"
style="display:inline"
transform="translate(227.33747,-3.8293975)"
inkscape:label="printer">
<circle
style="fill:#ffffff;fill-opacity:1;stroke:#9cc8f8;stroke-width:1.32292;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle129423"
cx="-6.9846935"
cy="344.18216"
r="17.071318" />
<g
id="g132091"
transform="translate(1.156126,-2.0886092)">
<rect
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
id="rect131999"
width="21.57835"
height="9.9095459"
x="-18.929995"
y="341.31516"
rx="0.30000046"
ry="0.30000046" />
<rect
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
id="rect132001"
width="11.098689"
height="7.5224638"
x="-13.690165"
y="348.52966"
rx="0.30000046"
ry="0.30000046" />
<rect
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
id="rect132003"
width="11.099"
height="4.8257442"
x="-13.69032"
y="336.48941"
rx="0.30000046"
ry="0.30000046" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

@@ -0,0 +1,109 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="35.465557mm"
height="35.465557mm"
viewBox="0 0 35.465557 35.465557"
version="1.1"
id="svg20924"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="netbox-topology-views-icons.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview20926"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.4723932"
inkscape:cx="1020.3364"
inkscape:cy="643.5317"
inkscape:window-width="1920"
inkscape:window-height="1133"
inkscape:window-x="0"
inkscape:window-y="30"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs20921">
<inkscape:path-effect
effect="fillet_chamfer"
id="path-effect8622-6"
is_visible="true"
lpeversion="1"
satellites_param="F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,1.1701912,0,1 @ F,0,0,1,0,1.0582838,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,1.3202113,0,1 @ F,0,0,1,0,1.2869827,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1"
unit="px"
method="auto"
mode="F"
radius="1"
chamfer_steps="1"
flexible="false"
use_knot_distance="true"
apply_no_radius="true"
apply_with_radius="true"
only_selected="false"
hide_knots="false"
nodesatellites_param="F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,1.1701912,0,1 @ F,0,0,1,0,1.0582838,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,1.3202113,0,1 @ F,0,0,1,0,1.2869827,0,1 @ F,0,0,1,0,0.26458333,0,1 @ F,0,0,1,0,0.26458333,0,1" />
</defs>
<g
inkscape:label="Icons"
inkscape:groupmode="layer"
id="layer1"
inkscape:highlight-color="#1685fc"
transform="translate(-262.62,-82.619997)">
<g
id="provider-networks"
transform="translate(256.25972,-7.8878491)"
style="display:inline"
inkscape:label="provider-networks">
<circle
style="fill:#ffffff;fill-opacity:1;stroke:#9cc8f8;stroke-width:1.32292;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle5949"
cx="24.09306"
cy="108.24062"
r="17.071318" />
<g
id="g10028">
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="M 14.418108,115.90978 H 33.76802"
id="path5953" />
<path
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 24.093064,114.8012 v -4.69409"
id="path5957" />
<circle
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="circle5959"
cx="24.093063"
cy="115.90978"
r="2.5286407" />
<path
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 16.124233,101.66588 4.306528,-0.93182 a 0.66402692,0.66402692 9.5159396 0 1 0.484816,0.0813 l 3.639421,2.20767 a 1.121744,1.121744 77.451828 0 1 0.351866,1.58087 l -0.08243,0.12377 a 1.1256229,1.1256229 166.89666 0 1 -1.501904,0.34959 l -2.752341,-1.59744 a 0.00178664,0.00178664 120.51744 0 0 -0.0018,0.003 l 4.75525,2.84645 a 0.56329859,0.56329859 5.7447264 0 0 0.476557,0.0479 l 7.918524,-2.79086 a 1.4048376,1.4048376 23.806369 0 1 1.760401,0.77666 l 0.02398,0.0566 a 1.2370418,1.2370418 113.16114 0 1 -0.701565,1.63995 l -10.460968,3.95398 a 0.77079343,0.77079343 178.24001 0 1 -0.500265,0.0154 l -7.705946,-2.38324 a 0.35980213,0.35980213 53.51455 0 1 -0.253493,-0.34275 l -0.0145,-5.31654 a 0.32704092,0.32704092 128.81737 0 1 0.257877,-0.32053 z"
id="path6127"
sodipodi:nodetypes="ccccccccccc"
inkscape:original-d="m 15.865634,101.72183 4.823726,-1.04372 4.866145,2.95179 -1.317679,1.97856 -3.896468,-2.26148 5.209288,3.11823 9.413201,-3.31766 1.041537,2.457 -11.91232,4.50256 -8.211488,-2.53958 z"
inkscape:path-effect="#path-effect8622-6" />
<rect
style="font-variation-settings:normal;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="rect9091"
width="2.3879888"
height="7.0936403"
x="13.736244"
y="101.08244"
rx="0.30000046"
ry="0.29990518" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.9 KiB

@@ -0,0 +1,144 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="35.465mm"
height="35.465633mm"
viewBox="0 0 35.465 35.465634"
version="1.1"
id="svg20924"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="netbox-topology-views-icons.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview20926"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.4723932"
inkscape:cx="1020.3364"
inkscape:cy="643.5317"
inkscape:window-width="1920"
inkscape:window-height="1133"
inkscape:window-x="0"
inkscape:window-y="30"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs20921" />
<g
inkscape:label="Icons"
inkscape:groupmode="layer"
id="layer1"
inkscape:highlight-color="#1685fc"
transform="translate(-142.62029,-82.619957)">
<g
id="proxy"
transform="translate(136.25973,-7.8878491)"
style="display:inline"
inkscape:label="proxy">
<ellipse
style="fill:#ffffff;fill-opacity:1;stroke:#9cc8f8;stroke-width:1.323;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle1225"
cx="24.09306"
cy="108.24062"
rx="17.070999"
ry="17.071318" />
<g
id="g1859">
<path
sodipodi:type="star"
style="fill:#ffffff;fill-opacity:1;stroke:#1685fc;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path1227"
inkscape:flatsided="true"
sodipodi:sides="3"
sodipodi:cx="170.92444"
sodipodi:cy="403.2724"
sodipodi:r1="16.610861"
sodipodi:r2="8.3054304"
sodipodi:arg1="1.0471976"
sodipodi:arg2="2.0943951"
inkscape:rounded="0.1"
inkscape:randomized="0"
transform="matrix(-0.25556787,0.0684792,-0.0684792,-0.25556787,104.12602,197.11675)"
inkscape:transform-center-x="0.52162088"
inkscape:transform-center-y="-0.52161841"
d="m 179.22987,417.65783 c -2.49163,1.43854 -24.91629,-11.50835 -24.91629,-14.38543 0,-2.87709 22.42466,-15.82397 24.91629,-14.38543 2.49163,1.43855 2.49163,27.33232 0,28.77086 z" />
<path
sodipodi:type="star"
style="fill:#ffffff;fill-opacity:1;stroke:#1685fc;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path1229"
inkscape:flatsided="true"
sodipodi:sides="3"
sodipodi:cx="170.92444"
sodipodi:cy="403.2724"
sodipodi:r1="16.610861"
sodipodi:r2="8.3054304"
sodipodi:arg1="1.0471976"
sodipodi:arg2="2.0943951"
inkscape:rounded="0.1"
inkscape:randomized="0"
transform="matrix(0.25556787,0.0684792,0.0684792,-0.25556787,-56.334102,197.08613)"
inkscape:transform-center-y="-0.52161841"
inkscape:transform-center-x="-0.52161956"
d="m 179.22987,417.65783 c -2.49163,1.43854 -24.91629,-11.50835 -24.91629,-14.38543 0,-2.87709 22.42466,-15.82397 24.91629,-14.38543 2.49163,1.43855 2.49163,27.33232 0,28.77086 z" />
<path
sodipodi:type="star"
style="fill:#ffffff;fill-opacity:1;stroke:#1685fc;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path1233"
inkscape:flatsided="true"
sodipodi:sides="3"
sodipodi:cx="170.92444"
sodipodi:cy="403.2724"
sodipodi:r1="16.610861"
sodipodi:r2="8.3054304"
sodipodi:arg1="1.0471976"
sodipodi:arg2="2.0943951"
inkscape:rounded="0.1"
inkscape:randomized="0"
transform="matrix(0,0.26458333,0.26458333,0,-82.711582,53.89499)"
inkscape:transform-center-x="-3.173315e-06"
inkscape:transform-center-y="0.85152188"
d="m 179.22987,417.65783 c -2.49163,1.43854 -24.91629,-11.50835 -24.91629,-14.38543 0,-2.87709 22.42466,-15.82397 24.91629,-14.38543 2.49163,1.43855 2.49163,27.33232 0,28.77086 z" />
<path
style="fill:none;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 30.305158,106.5761 -6.212098,1.66452"
id="path1235" />
<path
style="display:inline;fill:none;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 17.775471,106.40391 6.212098,1.66452"
id="path1235-6" />
<path
style="fill:none;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 24.09306,114.66674 V 101.81451"
id="path1237" />
<circle
style="font-variation-settings:normal;vector-effect:none;fill:#9cc8f8;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="circle1239"
cx="-23.987566"
cy="-108.06844"
r="2.5286407"
transform="scale(-1)" />
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="M 14.418108,115.90978 H 33.76802"
id="path942-5" />
<circle
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="path16050-3-3"
cx="24.093063"
cy="115.90978"
r="2.5286407" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

@@ -0,0 +1,55 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="35.465557mm"
height="35.465557mm"
viewBox="0 0 35.465557 35.465557"
version="1.1"
id="svg20924"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="netbox-topology-views-icons.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview20926"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.4723932"
inkscape:cx="1020.3364"
inkscape:cy="643.5317"
inkscape:window-width="1920"
inkscape:window-height="1133"
inkscape:window-x="0"
inkscape:window-y="30"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs20921" />
<g
inkscape:label="Icons"
inkscape:groupmode="layer"
id="layer1"
inkscape:highlight-color="#1685fc"
transform="translate(-442.62001,-322.61998)">
<circle
style="display:inline;fill:#ffffff;fill-opacity:1;stroke:#9cc8f8;stroke-width:1.32292;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="role-unknown"
cx="460.35278"
cy="340.35275"
r="17.071318"
inkscape:label="role-unknown"
inkscape:export-filename="role-unknown.svg"
inkscape:export-xdpi="89.52"
inkscape:export-ydpi="89.52" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

@@ -0,0 +1,105 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="35.465637mm"
height="35.465637mm"
viewBox="0 0 35.465637 35.465637"
version="1.1"
id="svg20924"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="netbox-topology-views-icons.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview20926"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.4723932"
inkscape:cx="1020.3364"
inkscape:cy="643.5317"
inkscape:window-width="1920"
inkscape:window-height="1133"
inkscape:window-x="0"
inkscape:window-y="30"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs20921" />
<g
inkscape:label="Icons"
inkscape:groupmode="layer"
id="layer1"
inkscape:highlight-color="#1685fc"
transform="translate(-262.61996,-22.619956)">
<g
id="g1153-7"
inkscape:label="router"
style="display:inline"
transform="translate(167.33742,-3.8293975)">
<circle
style="fill:#ffffff;fill-opacity:1;stroke:#9cc8f8;stroke-width:1.323;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle977-5"
cx="113.01536"
cy="44.182171"
r="17.071318" />
<g
id="g1145-3">
<g
id="g1158-5"
transform="translate(0,-0.68712819)">
<path
sodipodi:type="star"
style="fill:#ffffff;fill-opacity:1;stroke:#1685fc;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path979-6"
inkscape:flatsided="true"
sodipodi:sides="3"
sodipodi:cx="170.92444"
sodipodi:cy="403.2724"
sodipodi:r1="16.610861"
sodipodi:r2="8.3054304"
sodipodi:arg1="1.0471976"
sodipodi:arg2="2.0943951"
inkscape:rounded="0.1"
inkscape:randomized="0"
transform="matrix(0.26458333,0,0,0.26458333,62.296384,-70.236637)"
inkscape:transform-center-x="0.85152345"
inkscape:transform-center-y="-1.3442414e-06"
d="m 179.22987,417.65783 c -2.49163,1.43854 -24.91629,-11.50835 -24.91629,-14.38543 0,-2.87709 22.42466,-15.82397 24.91629,-14.38543 2.49163,1.43855 2.49163,27.33232 0,28.77086 z" />
<path
sodipodi:type="star"
style="fill:#ffffff;fill-opacity:1;stroke:#1685fc;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path981-2"
inkscape:flatsided="true"
sodipodi:sides="3"
sodipodi:cx="170.92444"
sodipodi:cy="403.2724"
sodipodi:r1="16.610861"
sodipodi:r2="8.3054304"
sodipodi:arg1="1.0471976"
sodipodi:arg2="2.0943951"
inkscape:rounded="0.1"
inkscape:randomized="0"
transform="matrix(-0.26458333,0,0,0.26458333,163.73434,-53.423074)"
inkscape:transform-center-x="-0.85152352"
inkscape:transform-center-y="-1.3442414e-06"
d="m 179.22987,417.65783 c -2.49163,1.43854 -24.91629,-11.50835 -24.91629,-14.38543 0,-2.87709 22.42466,-15.82397 24.91629,-14.38543 2.49163,1.43855 2.49163,27.33232 0,28.77086 z" />
<path
style="fill:none;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 110.1575,36.497284 c 25.26437,-0.477736 -15.691945,16.149717 0.5946,16.683167 l 5.04786,0.165337"
id="path983-9"
sodipodi:nodetypes="csc" />
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

@@ -0,0 +1,88 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="35.465557mm"
height="35.465557mm"
viewBox="0 0 35.465557 35.465557"
version="1.1"
id="svg20924"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="netbox-topology-views-icons.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview20926"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.4723932"
inkscape:cx="1020.3364"
inkscape:cy="643.5317"
inkscape:window-width="1920"
inkscape:window-height="1133"
inkscape:window-x="0"
inkscape:window-y="30"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs20921" />
<g
inkscape:label="Icons"
inkscape:groupmode="layer"
id="layer1"
inkscape:highlight-color="#1685fc"
transform="translate(-22.620002,-262.61999)">
<g
id="server"
transform="translate(16.25972,172.11214)"
style="display:inline"
inkscape:label="server">
<circle
style="fill:#ffffff;fill-opacity:1;stroke:#9cc8f8;stroke-width:1.32292;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle19896"
cx="24.09306"
cy="108.24062"
r="17.071318" />
<g
id="g20206"
transform="translate(1.3421688,0.43736649)">
<rect
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
id="rect19922"
width="12.354549"
height="20.707253"
x="16.573616"
y="97.449631"
rx="0.29990521"
ry="0.29990521" />
<path
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
d="m 19.073232,100.22699 h 7.355317"
id="path19957" />
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 19.073232,107.80326 h 7.355317"
id="path19957-0" />
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 19.073232,104.01513 h 7.355317"
id="path19957-3" />
<circle
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#1685fc;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
id="path20101"
cx="22.750891"
cy="112.11028"
r="0.59447765" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.0 KiB

@@ -0,0 +1,82 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="35.465557mm"
height="35.465557mm"
viewBox="0 0 35.465557 35.465557"
version="1.1"
id="svg20924"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="netbox-topology-views-icons.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview20926"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.4723932"
inkscape:cx="1020.3364"
inkscape:cy="643.5317"
inkscape:window-width="1920"
inkscape:window-height="1133"
inkscape:window-x="0"
inkscape:window-y="30"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs20921" />
<g
inkscape:label="Icons"
inkscape:groupmode="layer"
id="layer1"
inkscape:highlight-color="#1685fc"
transform="translate(-202.62,-262.61998)">
<g
id="siem"
style="display:inline"
transform="translate(227.33747,-3.8293975)"
inkscape:label="siem">
<circle
style="fill:#ffffff;fill-opacity:1;stroke:#9cc8f8;stroke-width:1.32292;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle1192-0"
cx="-6.9846935"
cy="284.18216"
r="17.071318" />
<g
id="g3330-3"
transform="matrix(0.86464762,0,0,0.86540014,-0.94539481,38.853725)"
style="stroke-width:1.15604">
<path
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.52944;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
d="m -17.545351,275.93252 c 0,0 0.697121,18.71494 10.5606573,20.80227 9.8635373,-2.08732 10.5606583,-20.80227 10.5606583,-20.80227 0,0 -4.701323,-2.49776 -10.560658,-2.49776 -5.8593346,0 -10.5606576,2.49776 -10.5606576,2.49776 z"
id="path1232-0"
sodipodi:nodetypes="ccccc" />
<circle
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.52935;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
id="path2553-4"
cx="-6.9846931"
cy="279.0163"
r="2.5856414" />
<rect
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.52944;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
id="rect2577-4"
width="3.7662544"
height="8.2856293"
x="-8.8678207"
y="284.18216"
rx="0.34696215"
ry="0.34666047" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

@@ -0,0 +1,84 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="35.465557mm"
height="35.465557mm"
viewBox="0 0 35.465557 35.465557"
version="1.1"
id="svg20924"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="netbox-topology-views-icons.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview20926"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.4723932"
inkscape:cx="1020.3364"
inkscape:cy="643.5317"
inkscape:window-width="1920"
inkscape:window-height="1133"
inkscape:window-x="0"
inkscape:window-y="30"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs20921" />
<g
inkscape:label="Icons"
inkscape:groupmode="layer"
id="layer1"
inkscape:highlight-color="#1685fc"
transform="translate(-322.62002,-82.619998)">
<g
id="storage"
transform="translate(237.22729,-59.817467)"
style="display:inline"
inkscape:label="storage">
<circle
style="fill:#ffffff;fill-opacity:1;stroke:#9cc8f8;stroke-width:1.32292;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle11148"
cx="103.1255"
cy="160.17024"
r="17.071318" />
<g
id="g19633"
transform="translate(79.032435,51.929616)">
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="M 14.418108,115.90978 H 33.76802"
id="path11152" />
<path
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 24.093064,114.8012 v -4.69409"
id="path11156" />
<circle
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="circle11158"
cx="24.093063"
cy="115.90978"
r="2.5286407" />
<g
id="g19286"
transform="translate(29.666262,1.3204344)">
<path
id="path16767-5"
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m -12.045714,96.794806 -0.0069,10.697154 m 12.9588723,0 -6.7e-7,-10.613908 m 6.7e-7,10.613908 c -4.58e-6,0.99351 -2.9009553,1.7989 -6.4794574,1.7989 -3.5785015,0 -6.4794509,-0.80539 -6.4794559,-1.7989 m 12.95891263,-3.53797 c -4.58e-6,0.99351 -2.90095473,1.7989 -6.47945643,1.7989 -3.5785016,0 -6.4794512,-0.80539 -6.4794562,-1.7989 m 12.95891263,-3.53797 c 1.532e-5,0.99351 -2.90094063,1.79891 -6.47945643,1.79891 -3.5785157,0 -6.4794712,-0.8054 -6.4794562,-1.79891 M 0.90625763,96.878052 c -6e-7,0.993506 -2.90095193,1.798902 -6.47945643,1.798902 -3.5785045,0 -6.4794552,-0.805396 -6.4794562,-1.798902 -1e-6,-0.993507 2.9009503,-1.798903 6.4794562,-1.798903 3.578506,0 6.47945782,0.805396 6.47945643,1.798903 z"
sodipodi:nodetypes="cccccsccsccscsssss" />
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.2 KiB

@@ -0,0 +1,141 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="35.465633mm"
height="35.465633mm"
viewBox="0 0 35.465633 35.465634"
version="1.1"
id="svg20924"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="netbox-topology-views-icons.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview20926"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.4723932"
inkscape:cx="1020.3364"
inkscape:cy="643.5317"
inkscape:window-width="1920"
inkscape:window-height="1133"
inkscape:window-x="0"
inkscape:window-y="30"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs20921" />
<g
inkscape:label="Icons"
inkscape:groupmode="layer"
id="layer1"
inkscape:highlight-color="#1685fc"
transform="translate(-22.619962,-22.619957)">
<g
id="switch"
transform="translate(16.25972,-67.887849)"
style="display:inline"
inkscape:label="switch">
<circle
style="fill:#ffffff;fill-opacity:1;stroke:#9cc8f8;stroke-width:1.323;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path846-5-7"
cx="24.09306"
cy="108.24062"
r="17.071318" />
<g
id="g2470"
transform="translate(0.06294654,0.17382797)">
<path
sodipodi:type="star"
style="fill:#ffffff;fill-opacity:1;stroke:#1685fc;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path2160-9"
inkscape:flatsided="true"
sodipodi:sides="3"
sodipodi:cx="170.92444"
sodipodi:cy="403.2724"
sodipodi:r1="16.610861"
sodipodi:r2="8.3054304"
sodipodi:arg1="1.0471976"
sodipodi:arg2="2.0943951"
inkscape:rounded="0.1"
inkscape:randomized="0"
transform="matrix(0.26458333,0,0,0.26458333,-30.354071,1.5398322)"
inkscape:transform-center-x="0.85152345"
inkscape:transform-center-y="-1.3442414e-06"
d="m 179.22987,417.65783 c -2.49163,1.43854 -24.91629,-11.50835 -24.91629,-14.38543 0,-2.87709 22.42466,-15.82397 24.91629,-14.38543 2.49163,1.43855 2.49163,27.33232 0,28.77086 z" />
<path
sodipodi:type="star"
style="fill:#ffffff;fill-opacity:1;stroke:#1685fc;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path2160-6-2"
inkscape:flatsided="true"
sodipodi:sides="3"
sodipodi:cx="170.92444"
sodipodi:cy="403.2724"
sodipodi:r1="16.610861"
sodipodi:r2="8.3054304"
sodipodi:arg1="1.0471976"
sodipodi:arg2="2.0943951"
inkscape:rounded="0.1"
inkscape:randomized="0"
transform="matrix(-0.26458333,0,0,0.26458333,78.414297,1.5398322)"
inkscape:transform-center-x="-0.85152352"
inkscape:transform-center-y="-1.3442414e-06"
d="m 179.22987,417.65783 c -2.49163,1.43854 -24.91629,-11.50835 -24.91629,-14.38543 0,-2.87709 22.42466,-15.82397 24.91629,-14.38543 2.49163,1.43855 2.49163,27.33232 0,28.77086 z" />
<path
sodipodi:type="star"
style="fill:#ffffff;fill-opacity:1;stroke:#1685fc;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path2160-6-2-2"
inkscape:flatsided="true"
sodipodi:sides="3"
sodipodi:cx="170.92444"
sodipodi:cy="403.2724"
sodipodi:r1="16.610861"
sodipodi:r2="8.3054304"
sodipodi:arg1="1.0471976"
sodipodi:arg2="2.0943951"
inkscape:rounded="0.1"
inkscape:randomized="0"
transform="matrix(0,0.26458333,0.26458333,0,-82.563549,53.721161)"
inkscape:transform-center-x="1.6998618e-06"
inkscape:transform-center-y="-0.85152379"
d="m 179.22987,417.65783 c -2.49163,1.43854 -24.91629,-11.50835 -24.91629,-14.38543 0,-2.87709 22.42466,-15.82397 24.91629,-14.38543 2.49163,1.43855 2.49163,27.33232 0,28.77086 z" />
<path
sodipodi:type="star"
style="fill:#ffffff;fill-opacity:1;stroke:#1685fc;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path2160-6-2-3"
inkscape:flatsided="true"
sodipodi:sides="3"
sodipodi:cx="170.92444"
sodipodi:cy="403.2724"
sodipodi:r1="16.610861"
sodipodi:r2="8.3054304"
sodipodi:arg1="1.0471976"
sodipodi:arg2="2.0943951"
inkscape:rounded="0.1"
inkscape:randomized="0"
transform="matrix(0,-0.26458333,-0.26458333,0,130.83476,162.41243)"
inkscape:transform-center-x="-3.173315e-06"
inkscape:transform-center-y="0.85152188"
d="m 179.22987,417.65783 c -2.49163,1.43854 -24.91629,-11.50835 -24.91629,-14.38543 0,-2.87709 22.42466,-15.82397 24.91629,-14.38543 2.49163,1.43855 2.49163,27.33232 0,28.77086 z" />
<path
style="fill:none;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 17.674889,108.23899 h 12.88312"
id="path4362" />
<path
style="fill:none;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 24.135606,101.77514 v 12.85223"
id="path4364" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.0 KiB

@@ -0,0 +1,126 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="35.465557mm"
height="35.465557mm"
viewBox="0 0 35.465557 35.465557"
version="1.1"
id="svg20924"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="netbox-topology-views-icons.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview20926"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.4723932"
inkscape:cx="1020.3364"
inkscape:cy="643.5317"
inkscape:window-width="1920"
inkscape:window-height="1133"
inkscape:window-x="0"
inkscape:window-y="30"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs20921" />
<g
inkscape:label="Icons"
inkscape:groupmode="layer"
id="layer1"
inkscape:highlight-color="#1685fc"
transform="translate(-442.62001,-262.61998)">
<g
id="g4192"
style="display:inline"
transform="translate(227.33747,-3.8293975)"
inkscape:label="time-recording-terminal">
<circle
style="fill:#ffffff;fill-opacity:1;stroke:#9cc8f8;stroke-width:1.32292;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle1292"
cx="233.01532"
cy="284.18216"
r="17.071318" />
<g
id="g3856"
transform="matrix(0.93237195,0,0,0.93288761,15.758363,19.712621)"
style="stroke-width:1.07224">
<rect
style="font-variation-settings:normal;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.41857;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="rect1453"
width="19.759571"
height="16.748116"
x="223.13554"
y="276.97742"
rx="0.32176051"
ry="0.32158265" />
<path
id="rect1455"
style="vector-effect:none;fill:#ffffff;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.41857;stop-color:#000000"
d="m 226.03248,271.23293 h 11.88191 c 0.14452,0 0.26087,0.18419 0.26087,0.413 v 4.91847 c 0,0.22881 -0.11635,0.41301 -0.26087,0.41301 h -11.88191 c -0.14452,0 -0.26087,-0.1842 -0.26087,-0.41301 v -4.91847 c 0,-0.22881 0.11635,-0.413 0.26087,-0.413 z" />
<ellipse
style="font-variation-settings:normal;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.41848;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="path1399"
cx="233.01532"
cy="285.35147"
rx="6.7826366"
ry="6.7843204" />
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.41857;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 228.70812,275.16274 h 5.15993"
id="path1520-2" />
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.41857;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 228.20012,273.34804 h 8.1555"
id="path1520-2-6" />
<path
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.41857;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 233.01529,285.35144 -3.46312,-3.47724"
id="path1549" />
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.41857;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 233.89233,288.98541 -0.87702,-3.63397"
id="path1549-7" />
<path
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.41857;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 233.01532,278.56712 v 1.30469"
id="path2860" />
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.41857;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 233.01532,290.83109 v 1.30469"
id="path2860-0" />
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.41857;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 239.79795,285.35145 h -1.30436"
id="path2860-9" />
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.41857;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 237.74834,280.61725 -0.92233,0.92256"
id="path2860-9-6" />
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.41857;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 229.20463,289.16309 -0.92233,0.92255"
id="path2860-9-6-0" />
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.41857;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 237.74834,290.08564 -0.92233,-0.92255"
id="path2860-9-6-6" />
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.41857;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 227.53704,285.35145 h -1.30436"
id="path2860-9-3" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.6 KiB

@@ -0,0 +1,90 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="35.465557mm"
height="35.465557mm"
viewBox="0 0 35.465557 35.465557"
version="1.1"
id="svg20924"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="netbox-topology-views-icons.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview20926"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.4723932"
inkscape:cx="1020.3364"
inkscape:cy="643.5317"
inkscape:window-width="1920"
inkscape:window-height="1133"
inkscape:window-x="0"
inkscape:window-y="30"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs20921" />
<g
inkscape:label="Icons"
inkscape:groupmode="layer"
id="layer1"
inkscape:highlight-color="#1685fc"
transform="translate(-22.620012,-202.61999)">
<g
id="ups"
transform="translate(16.25973,112.11214)"
style="display:inline"
inkscape:label="ups">
<circle
style="fill:#ffffff;fill-opacity:1;stroke:#9cc8f8;stroke-width:1.32292;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle24470"
cx="24.09306"
cy="108.24062"
r="17.071318" />
<g
id="g24873"
transform="translate(0.2610302,-0.85568929)">
<rect
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
id="rect24474"
width="20.021738"
height="12.375252"
x="13.82116"
y="103.50803"
rx="0.30000046"
ry="0.29990521" />
<path
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
d="m 16.404525,102.30934 h 2.269704"
id="path24589" />
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 29.311719,102.30934 h 2.269704"
id="path24589-7" />
<path
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
d="m 18.87531,105.62956 v 5.17448"
id="path24731" />
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 16.28807,108.2168 h 5.17448"
id="path24731-9" />
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 26.328847,108.2168 h 5.17448"
id="path24731-9-2" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.3 KiB

@@ -0,0 +1,156 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="35.465557mm"
height="35.465557mm"
viewBox="0 0 35.465557 35.465557"
version="1.1"
id="svg20924"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="netbox-topology-views-icons.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview20926"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.4723932"
inkscape:cx="1020.3364"
inkscape:cy="643.5317"
inkscape:window-width="1920"
inkscape:window-height="1133"
inkscape:window-x="0"
inkscape:window-y="30"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs20921">
<inkscape:path-effect
effect="fillet_chamfer"
id="path-effect155222-1"
is_visible="true"
lpeversion="1"
satellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0.79375,0,1 @ F,0,0,1,0,0,0,1"
unit="px"
method="auto"
mode="F"
radius="3"
chamfer_steps="1"
flexible="false"
use_knot_distance="true"
apply_no_radius="true"
apply_with_radius="true"
only_selected="false"
hide_knots="false"
nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0.79375,0,1 @ F,0,0,1,0,0,0,1" />
<inkscape:path-effect
effect="fillet_chamfer"
id="path-effect155106-0"
is_visible="true"
lpeversion="1"
satellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0.79375,0,1 @ F,0,0,1,0,0,0,1"
unit="px"
method="auto"
mode="F"
radius="3"
chamfer_steps="1"
flexible="false"
use_knot_distance="true"
apply_no_radius="true"
apply_with_radius="true"
only_selected="false"
hide_knots="false"
nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0.79375,0,1 @ F,0,0,1,0,0,0,1" />
</defs>
<g
inkscape:label="Icons"
inkscape:groupmode="layer"
id="layer1"
inkscape:highlight-color="#1685fc"
transform="translate(-262.62,-322.61998)">
<g
id="usb-lan-adapter"
transform="translate(177.22727,180.18252)"
style="display:inline"
inkscape:label="usb-lan-adapter">
<circle
style="fill:#ffffff;fill-opacity:1;stroke:#9cc8f8;stroke-width:1.32292;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle153571"
cx="103.1255"
cy="160.17024"
r="17.071318" />
<g
id="g153583"
transform="translate(79.032435,51.929616)">
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="M 14.418108,115.90978 H 33.76802"
id="path153573" />
<path
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="M 24.093064,114.8012 V 98.908953"
id="path153575" />
<circle
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="circle153577"
cx="24.093063"
cy="115.90978"
r="2.5286407" />
<path
sodipodi:type="star"
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#9cc8f8;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:5.00032;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
id="path154066"
inkscape:flatsided="true"
sodipodi:sides="3"
sodipodi:cx="1021.3865"
sodipodi:cy="1203.2997"
sodipodi:r1="11.106062"
sodipodi:r2="5.553031"
sodipodi:arg1="2.6179939"
sodipodi:arg2="3.6651914"
inkscape:rounded="0.01"
inkscape:randomized="0"
d="m 1011.7683,1208.8527 c -0.096,-0.1666 9.4258,-16.6591 9.6182,-16.6591 0.1923,0 9.7143,16.4925 9.6181,16.6591 -0.096,0.1666 -19.1401,0.1666 -19.2363,0 z"
transform="matrix(0.26458333,0,0,0.26458333,-246.14877,-220.93332)"
inkscape:transform-center-y="-0.73462171" />
<path
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
d="m 24.093064,109.96396 -7.155588,-4.13128 a 1.374816,1.374816 60.000011 0 1 -0.687408,-1.19063 v -3.52695"
id="path154137"
inkscape:original-d="m 24.093064,109.96396 -7.842996,-4.52816 v -4.3207"
inkscape:path-effect="#path-effect155222-1" />
<path
style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
d="m 24.093064,111.40265 7.155588,-4.13128 a 1.374816,1.374816 119.99999 0 0 0.687408,-1.19063 v -3.52695"
id="path154137-4"
inkscape:original-d="m 24.093064,111.40265 7.842996,-4.52816 v -4.3207"
inkscape:path-effect="#path-effect155106-0" />
<circle
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#9cc8f8;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.32292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
id="path154243"
cx="16.250069"
cy="101.1151"
r="2.3736641" />
<rect
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#9cc8f8;fill-opacity:1;fill-rule:evenodd;stroke:#1685fc;stroke-width:1.323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
id="rect154267"
width="4.2630148"
height="4.2630148"
x="29.804552"
y="100.42228"
rx="0.30000046"
ry="0.30000046" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.4 KiB

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