2 |
3 |
Monitoring (TBD)
4 |
Work with NETCONF notifications from the connected devices.
5 |
6 | - subscribing for notifications
7 | - setting up time windows, filters, search in the received data
8 | - background monitoring (receiving notifications) with alerts sent via email
9 |
10 |
11 |
--------------------------------------------------------------------------------
/frontend/monitoring/monitoring.component.scss:
--------------------------------------------------------------------------------
1 | @import '../netopeer-common';
--------------------------------------------------------------------------------
/frontend/monitoring/monitoring.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector : 'netopeer-config',
5 | templateUrl : './monitoring.component.html',
6 | styleUrls : ['./monitoring.component.scss']
7 | })
8 |
9 | export class MonitoringComponent {
10 | title = 'Monitoring';
11 | }
12 |
--------------------------------------------------------------------------------
/frontend/netopeer.component.html:
--------------------------------------------------------------------------------
1 |
10 |
2 |
3 |
Plugins (TBD)
4 |
Framework for schema(s) specific applications - simplified/more user friendly configuration approach than the generic configuration tree in the configuration tab, for example:
5 |
6 | - visual network connections configuration
7 | - connected devices time synchronisation checking
8 | - ...
9 |
10 | {{text}}
11 |
--------------------------------------------------------------------------------
/frontend/plugins/plugins.component.scss:
--------------------------------------------------------------------------------
1 | @import '../netopeer-common';
--------------------------------------------------------------------------------
/frontend/plugins/plugins.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, OnInit } from '@angular/core';
2 |
3 | @Component({
4 | selector : 'netopeer-plugins',
5 | templateUrl : './plugins.component.html',
6 | styleUrls : ['./plugins.component.scss']
7 | })
8 |
9 | export class PluginsComponent implements OnInit {
10 | title = 'Plugins';
11 | text = "test... ignore";
12 |
13 | sleep(ms) {
14 | return new Promise(resolve => setTimeout(resolve, ms));
15 | }
16 |
17 | async ngOnInit() {
18 | await this.sleep(2000);
19 | this.text = "still testing... still ignore";
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/frontend/yang/yang.component.html:
--------------------------------------------------------------------------------
1 |
16 |

17 |
18 |
![]()
1 ? 'visible' : 'hidden'" (click)="back()"
19 | class="nav-button" src="assets/netopeer/icons/back.svg" alt="back" title="back"/>
20 |
21 |
23 |
25 |
26 |

28 |
29 |
30 | {{activeSchema.data}}
31 |
32 |
33 |
34 |
35 |
36 |
37 | {{activeSchema.data | json}}
38 |
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/frontend/yang/yang.component.scss:
--------------------------------------------------------------------------------
1 | @import '../netopeer-common';
2 | @import '../inventory/inventory.component';
3 |
4 | $colorLineHover: #e1e1e1;
5 | $colorLineSelected: #999999;
6 |
7 | .nav-button {
8 | height: 2em;
9 | cursor: pointer;
10 | margin: 0.3em;
11 | }
12 |
13 | .loading {
14 | text-align: center;
15 | margin: auto;
16 | width: 10em;
17 | div {
18 | margin: auto;
19 | width: 50px;
20 | }
21 | }
22 |
23 | .yang-infobox {
24 | display: block;
25 | cursor: default;
26 | }
27 |
28 | .yang-info-section-label,
29 | .yang-info-subsection-label,
30 | .yang-info-label {
31 | color: black;
32 | font-weight: 100;
33 | text-transform: uppercase;
34 | }
35 |
36 | .yang-info-section {
37 | display: flex;
38 | flex-direction: column;
39 | flex-wrap: wrap;
40 | width: 100%;
41 | padding-left: 2em;
42 | }
43 |
44 | .yang-info-subsection {
45 | .yang-info {
46 | padding-left: 2em;
47 | }
48 | }
49 |
50 | .yang-info,
51 | .yang-info-label,
52 | .yang-info-value {
53 | border: none;
54 | a {
55 | font-weight: normal;
56 | }
57 | }
58 |
59 | .yang-info {
60 | display: flex;
61 | padding: 5px;
62 | }
63 | .yang-info:hover {
64 | background-color: $colorLineHover;
65 | }
66 |
67 | .yang-info:nth-of-type(even), .yang-info-subsection:nth-of-type(even) {
68 | background: lighten($colorLineHover, 5%);
69 | }
70 |
71 | .yang-info-value {
72 | display: inline-block;
73 | }
74 |
75 | .yang-info-section-label,
76 | .yang-info-subsection-label,
77 | .yang-info-label {
78 | min-width: 10em;
79 | overflow: hidden;
80 | text-overflow: ellipsis;
81 | display: inline-block;
82 | }
83 | .yang-revision-label {
84 | font-style: italic;
85 | }
86 |
87 | .yang-subsection-container {
88 | margin-left: 2em;
89 | }
90 |
91 | .pattern {
92 | .selectedGroup {
93 | background-color: $colorLineSelected;
94 | }
95 | .bracket {
96 | }
97 | }
98 |
99 |
--------------------------------------------------------------------------------
/frontend/yang/yang.feature.html:
--------------------------------------------------------------------------------
1 |
10 |
11 | modifier
12 | {{data.modifier.value}}
13 |
14 |
15 | error-message
16 | {{data['error-message'].value}}
17 |
18 |
19 | error-app-tag
20 | {{data['error-app-tag'].value}}
21 |
22 |
23 |
description
24 |
{{data.description.text}}
25 |
26 |
27 |
reference
28 |
{{data.reference.text}}
29 |
30 |
--------------------------------------------------------------------------------
/frontend/yang/yang.type.html:
--------------------------------------------------------------------------------
1 |