@c8y/ng1-modules 1021.75.4 → 1021.75.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -290,1058 +290,6 @@
290
290
  </div>
291
291
  </div>
292
292
 
293
- <div ng-if="vm.isSNMPTab()" class="row">
294
- <div class="col-lg-12 col-lg-max">
295
- <div class="card">
296
- <div class="card-header separator">
297
- <div class="h4" data-cy="fieldbus-device-list--heading-SNMP-devices" translate>SNMP devices</div>
298
- </div>
299
- <div class="card-block">
300
- <div class="c8y-list__group">
301
- <div class="c8y-list__item hidden-xs">
302
- <div class="c8y-list__item__block">
303
- <div class="c8y-list__item__body">
304
- <div class="content-flex-60">
305
- <div class="col-3 m-r-4">
306
- <label class="small" translate>Name</label>
307
- </div>
308
- <div class="col-3">
309
- <label class="small" translate>Device type</label>
310
- </div>
311
- <div class="col-4">
312
- <label class="small" translate>IP address:Port</label>
313
- </div>
314
- <div class="col-2">
315
- <label class="small" translate>SNMP version</label>
316
- </div>
317
- </div>
318
- </div>
319
- <div class="c8y-list__item--empty-actions"></div>
320
- </div>
321
- </div>
322
-
323
- <div class="c8y-list__item collapsible" ng-repeat="device in vm.devices">
324
- <div ng-class="{ expanded: isDetailExpanded }">
325
- <div class="c8y-list__item__block">
326
- <div class="c8y-list__item__body">
327
- <div class="content-flex-60">
328
- <div class="col-3">
329
- <span class="text-label-small hidden-md hidden-lg" translate>Name</span>
330
- <a title="{{ device.name }}" href="" ng-click="vm.navigateToDetail(device)">
331
- {{ device.name }}
332
- </a>
333
- </div>
334
- <div class="col-3">
335
- <span class="text-label-small hidden-md hidden-lg" translate>
336
- Device type
337
- </span>
338
- <small class="text-muted">{{ device.deviceType }}</small>
339
- </div>
340
- <div class="col-3">
341
- <span class="text-label-small hidden-md hidden-lg" translate>
342
- IP address:Port
343
- </span>
344
- <small>{{ device.ipAddress }}:{{ device.port }}</small>
345
- </div>
346
-
347
- <div class="col-3">
348
- <div class="d-flex">
349
- <span class="text-label-small hidden-md hidden-lg" translate>
350
- SNMP version
351
- </span>
352
- <small ng-bind="vm.getSnmpVersionLabel(device.version)"></small>
353
- <button
354
- class="m-l-auto btn-dot btn-dot--danger btn showOnHover"
355
- type="button"
356
- aria-label="{{ 'Remove' | translate }}"
357
- uib-tooltip="{{ 'Remove' | translate }}"
358
- tooltip-popup-delay="500"
359
- tooltip-append-to-body="true"
360
- ng-click="vm.onClickDelete(device)"
361
- >
362
- <i c8y-icon="minus-circle" class="text-danger"></i>
363
- </button>
364
- </div>
365
- </div>
366
- </div>
367
- </div>
368
-
369
- <div class="c8y-list__item__actions">
370
- <button
371
- class="collapse-btn"
372
- type="button"
373
- title="{{ 'Expand/collapse' | translate }}"
374
- ng-click="isDetailExpanded = !isDetailExpanded"
375
- >
376
- <i c8y-icon="chevron-down"></i>
377
- </button>
378
- </div>
379
- </div>
380
- <div class="collapse" uib-collapse="!isDetailExpanded">
381
- <div class="c8y-list__item__collapse--container">
382
- <form
383
- class="m-t-8"
384
- data-ng-init="editDevice = vm.startEditDevice(device)"
385
- name="{{ vm.getFormName(editDevice) }}"
386
- novalidate
387
- >
388
- <div class="row">
389
- <div class="col-md-6">
390
- <div
391
- class="form-group"
392
- ng-class="{
393
- 'has-error': vm.invalid('name', vm.getDeviceFormName(editDevice))
394
- }"
395
- >
396
- <label translate>Name</label>
397
- <input
398
- class="form-control"
399
- placeholder="{{ 'e.g. SNMP device 1' | translate }}"
400
- name="name"
401
- ng-model="editDevice.name"
402
- required
403
- ng-disabled="editDevice.adding"
404
- />
405
- <c8y-messages>
406
- <c8y-message
407
- class="form-control-feedback-message"
408
- ng-if="vm.invalid('name', vm.getDeviceFormName(editDevice))"
409
- >
410
- {{
411
- vm.getFieldValidationHints('name', vm.getDeviceFormName(editDevice))
412
- }}
413
- </c8y-message>
414
- </c8y-messages>
415
- </div>
416
- <div class="tight-grid">
417
- <div class="col-sm-8">
418
- <div
419
- class="form-group"
420
- ng-class="{
421
- 'has-error': vm.invalid(
422
- 'ipAddress',
423
- vm.getDeviceFormName(editDevice)
424
- )
425
- }"
426
- >
427
- <label translate>IP address</label>
428
- <input
429
- class="form-control"
430
- placeholder="{{ 'e.g.' | translate }} 162.12.24.1"
431
- name="ipAddress"
432
- validate-ip
433
- ng-model="editDevice.ipAddress"
434
- required
435
- ng-disabled="editDevice.adding"
436
- allow-ip-v6="true"
437
- />
438
- <c8y-messages>
439
- <c8y-message
440
- class="form-control-feedback-message"
441
- ng-if="vm.invalid('ipAddress', vm.getDeviceFormName(editDevice))"
442
- >
443
- {{
444
- vm.getFieldValidationHints(
445
- 'ipAddress',
446
- vm.getDeviceFormName(editDevice)
447
- )
448
- }}
449
- </c8y-message>
450
- </c8y-messages>
451
- </div>
452
- </div>
453
- <div class="col-sm-4">
454
- <div
455
- class="form-group"
456
- ng-class="{
457
- 'has-error': vm.invalid('port', vm.getDeviceFormName(editDevice))
458
- }"
459
- >
460
- <label translate>Port</label>
461
- <input
462
- class="form-control"
463
- placeholder="{{ 'e.g.' | translate }} 161"
464
- name="port"
465
- ng-model="editDevice.port"
466
- required
467
- ng-disabled="editDevice.adding"
468
- />
469
- <c8y-messages>
470
- <c8y-message
471
- class="form-control-feedback-message"
472
- ng-if="vm.invalid('port', vm.getDeviceFormName(editDevice))"
473
- >
474
- {{
475
- vm.getFieldValidationHints(
476
- 'port',
477
- vm.getDeviceFormName(editDevice)
478
- )
479
- }}
480
- </c8y-message>
481
- </c8y-messages>
482
- </div>
483
- </div>
484
- </div>
485
- </div>
486
- <div class="col-md-6">
487
- <div
488
- class="form-group"
489
- ng-class="{
490
- 'has-error': vm.invalid('deviceType', vm.getDeviceFormName(editDevice))
491
- }"
492
- >
493
- <label translate>Device type</label>
494
- <ui-select
495
- class="form-control"
496
- name="deviceType"
497
- append-to-body="true"
498
- ng-model="editDevice.deviceType"
499
- required
500
- ng-disabled="editDevice.adding"
501
- >
502
- <ui-select-match
503
- placeholder="{{ 'Select device protocol' | translate }}"
504
- title="{{ $select.selected.name }}"
505
- ng-bind="$select.selected.name || editDevice.deviceType.name"
506
- ></ui-select-match>
507
- <ui-select-choices
508
- repeat="type in vm.deviceConfigurationOptions.types | orderBy:'name' | filter:$select.search"
509
- >
510
- <span title="{{ type.name }}">{{ type.name }}</span>
511
- </ui-select-choices>
512
- </ui-select>
513
- </div>
514
- <div
515
- class="form-group"
516
- ng-class="{
517
- 'has-error': vm.invalid('version', vm.getDeviceFormName(editDevice))
518
- }"
519
- >
520
- <label translate>SNMP version</label>
521
- <ui-select
522
- class="form-control"
523
- name="deviceVersion"
524
- append-to-body="true"
525
- ng-model="editDevice.version"
526
- required
527
- ng-disabled="editDevice.adding"
528
- >
529
- <ui-select-match
530
- placeholder="{{ 'Select SNMP version' | translate }}"
531
- title="{{ $select.selected.label | translate }}"
532
- ng-bind="$select.selected.label | translate"
533
- ></ui-select-match>
534
- <ui-select-choices
535
- repeat="version.value as version in vm.snmpVersions | orderBy:'label' | filter:$select.search"
536
- >
537
- <span title="{{ version.label | translate }}">
538
- {{ version.label | translate }}
539
- </span>
540
- </ui-select-choices>
541
- </ui-select>
542
- <c8y-messages>
543
- <c8y-message
544
- class="form-control-feedback-message"
545
- ng-if="vm.invalid('version', vm.getDeviceFormName(editDevice))"
546
- >
547
- {{
548
- vm.getFieldValidationHints(
549
- 'version',
550
- vm.getDeviceFormName(editDevice)
551
- )
552
- }}
553
- </c8y-message>
554
- </c8y-messages>
555
- </div>
556
- </div>
557
- </div>
558
- <fieldset ng-if="editDevice.version === vm.snmpVersions.VERSION_3.value">
559
- <div class="legend form-block" translate>Device authentication details</div>
560
- <div class="tight-grid">
561
- <div class="col-sm-6">
562
- <div
563
- class="form-group"
564
- ng-class="{
565
- 'has-error': vm.invalid(
566
- 'snmpVersionUsername',
567
- vm.getDeviceFormName(editDevice)
568
- )
569
- }"
570
- >
571
- <label translate>Username</label>
572
- <input
573
- class="form-control"
574
- placeholder="{{ 'e.g. my_username' | translate }}"
575
- name="snmpVersionUsername"
576
- ng-model="editDevice.auth.username"
577
- required
578
- ng-disabled="editDevice.adding"
579
- />
580
- <c8y-messages>
581
- <c8y-message
582
- class="form-control-feedback-message"
583
- ng-if="
584
- vm.invalid(
585
- 'snmpVersionUsername',
586
- vm.getDeviceFormName(editDevice)
587
- )
588
- "
589
- >
590
- {{
591
- vm.getFieldValidationHints(
592
- 'snmpVersionUsername',
593
- vm.getDeviceFormName(editDevice)
594
- )
595
- }}
596
- </c8y-message>
597
- </c8y-messages>
598
- </div>
599
- </div>
600
- <div class="col-sm-6">
601
- <div
602
- class="form-group"
603
- ng-class="{
604
- 'has-error': vm.invalid(
605
- 'snmpVersionSecurityLevel',
606
- vm.getDeviceFormName(editDevice)
607
- )
608
- }"
609
- >
610
- <label translate>Security level</label>
611
- <ui-select
612
- class="form-control"
613
- name="snmpVersionSecurityLevel"
614
- append-to-body="true"
615
- ng-model="editDevice.auth.securityLevel"
616
- required
617
- ng-disabled="editDevice.adding"
618
- >
619
- <ui-select-match
620
- placeholder="{{ 'Select security level' | translate }}"
621
- title="{{ $select.selected.label | translate }}"
622
- ng-bind="$select.selected.label | translate"
623
- ></ui-select-match>
624
- <ui-select-choices
625
- repeat="level.value as level in vm.snmpSecurityLevels | orderBy:'label' | filter:$select.search"
626
- >
627
- <span title="{{ level.label | translate }}">
628
- {{ level.label | translate }}
629
- </span>
630
- </ui-select-choices>
631
- </ui-select>
632
- <c8y-messages>
633
- <c8y-message
634
- class="form-control-feedback-message"
635
- ng-if="
636
- vm.invalid(
637
- 'snmpVersionSecurityLevel',
638
- vm.getDeviceFormName(editDevice)
639
- )
640
- "
641
- >
642
- {{
643
- vm.getFieldValidationHints(
644
- 'snmpVersionSecurityLevel',
645
- vm.getDeviceFormName(editDevice)
646
- )
647
- }}
648
- </c8y-message>
649
- </c8y-messages>
650
- </div>
651
- </div>
652
- </div>
653
- <div class="tight-grid">
654
- <div class="col-sm-6">
655
- <div
656
- class="form-group"
657
- ng-class="{
658
- 'has-error': vm.invalid(
659
- 'snmpVersionEngineId',
660
- vm.getDeviceFormName(editDevice)
661
- )
662
- }"
663
- >
664
- <label translate>Engine ID</label>
665
- <input
666
- class="form-control"
667
- placeholder="{{ 'e.g.' | translate }} 45:U9:39:900:FJ8"
668
- name="snmpVersionEngineId"
669
- ng-model="editDevice.auth.engineId"
670
- ng-minlength="5"
671
- ng-maxlength="32"
672
- required
673
- ng-disabled="editDevice.adding || {{ !!editDevice.auth.engineId }}"
674
- />
675
- <c8y-messages>
676
- <c8y-message
677
- class="form-control-feedback-message"
678
- ng-if="
679
- vm.invalid(
680
- 'snmpVersionEngineId',
681
- vm.getDeviceFormName(editDevice)
682
- )
683
- "
684
- >
685
- {{
686
- vm.getFieldValidationHints(
687
- 'snmpVersionEngineId',
688
- vm.getDeviceFormName(editDevice)
689
- )
690
- }}
691
- </c8y-message>
692
- </c8y-messages>
693
- </div>
694
- </div>
695
- </div>
696
- <fieldset
697
- ng-if="
698
- editDevice.auth.securityLevel ===
699
- vm.snmpSecurityLevels.AUTH_NOPRIV.value ||
700
- editDevice.auth.securityLevel === vm.snmpSecurityLevels.AUTH_PRIV.value
701
- "
702
- >
703
- <div class="legend form-block" translate>Authentication</div>
704
- <div class="tight-grid">
705
- <div class="col-sm-6">
706
- <div
707
- class="form-group"
708
- ng-class="{
709
- 'has-error': vm.invalid(
710
- 'snmpVersionAuthProtocol',
711
- vm.getDeviceFormName(editDevice)
712
- )
713
- }"
714
- >
715
- <label translate>Protocol</label>
716
- <ui-select
717
- class="form-control"
718
- name="snmpVersionAuthProtocol"
719
- append-to-body="true"
720
- ng-model="editDevice.auth.authProtocol"
721
- required
722
- ng-disabled="editDevice.adding"
723
- >
724
- <ui-select-match
725
- placeholder="{{ 'Select protocol' | translate }}"
726
- title="{{ $select.selected.label | translate }}"
727
- ng-bind="$select.selected.label | translate"
728
- ></ui-select-match>
729
- <ui-select-choices
730
- repeat="protocol.value as protocol in vm.snmpAuthProtocols | orderBy:'label' | filter:$select.search"
731
- >
732
- <span title="{{ protocol.label | translate }}">
733
- {{ protocol.label | translate }}
734
- </span>
735
- </ui-select-choices>
736
- </ui-select>
737
- <c8y-messages>
738
- <c8y-message
739
- class="form-control-feedback-message"
740
- ng-if="
741
- vm.invalid(
742
- 'snmpVersionAuthProtocol',
743
- vm.getDeviceFormName(editDevice)
744
- )
745
- "
746
- >
747
- {{
748
- vm.getFieldValidationHints(
749
- 'snmpVersionAuthProtocol',
750
- vm.getDeviceFormName(editDevice)
751
- )
752
- }}
753
- </c8y-message>
754
- </c8y-messages>
755
- </div>
756
- </div>
757
- <div class="col-sm-6">
758
- <div
759
- class="form-group"
760
- ng-class="{
761
- 'has-error': vm.invalid(
762
- 'snmpVersionAuthPassword',
763
- vm.getDeviceFormName(editDevice)
764
- )
765
- }"
766
- >
767
- <label translate>Password</label>
768
- <input
769
- class="form-control"
770
- type="password"
771
- placeholder="{{ 'e.g. my_password' | translate }}"
772
- name="snmpVersionAuthPassword"
773
- ng-minlength="8"
774
- ng-model="editDevice.auth.authPassword"
775
- required
776
- ng-disabled="editDevice.adding"
777
- />
778
- <c8y-messages>
779
- <c8y-message
780
- class="form-control-feedback-message"
781
- ng-if="
782
- vm.invalid(
783
- 'snmpVersionAuthPassword',
784
- vm.getDeviceFormName(editDevice)
785
- )
786
- "
787
- >
788
- {{
789
- vm.getFieldValidationHints(
790
- 'snmpVersionAuthPassword',
791
- vm.getDeviceFormName(editDevice)
792
- )
793
- }}
794
- </c8y-message>
795
- </c8y-messages>
796
- </div>
797
- </div>
798
- </div>
799
- </fieldset>
800
- <fieldset
801
- ng-if="
802
- editDevice.auth.securityLevel === vm.snmpSecurityLevels.AUTH_PRIV.value
803
- "
804
- >
805
- <div class="legend form-block" translate>Privacy</div>
806
- <div class="tight-grid">
807
- <div class="col-sm-6">
808
- <div
809
- class="form-group"
810
- ng-class="{
811
- 'has-error': vm.invalid(
812
- 'snmpVersionAuthPrivProtocol',
813
- vm.getDeviceFormName(editDevice)
814
- )
815
- }"
816
- >
817
- <label translate>Protocol</label>
818
- <ui-select
819
- class="form-control"
820
- name="snmpVersionAuthPrivProtocol"
821
- append-to-body="true"
822
- ng-model="editDevice.auth.privProtocol"
823
- required
824
- ng-disabled="editDevice.adding"
825
- >
826
- <ui-select-match
827
- placeholder="{{ 'Select protocol' | translate }}"
828
- title="{{ $select.selected.label | translate }}"
829
- ng-bind="$select.selected.label | translate"
830
- ></ui-select-match>
831
- <ui-select-choices
832
- repeat="protocol.value as protocol in vm.snmpAuthPrivProtocols | orderBy:'label' | filter:$select.search"
833
- >
834
- <span title="{{ protocol.label | translate }}">
835
- {{ protocol.label | translate }}
836
- </span>
837
- </ui-select-choices>
838
- </ui-select>
839
- <c8y-messages>
840
- <c8y-message
841
- class="form-control-feedback-message"
842
- ng-if="
843
- vm.invalid(
844
- 'snmpVersionAuthPrivProtocol',
845
- vm.getDeviceFormName(editDevice)
846
- )
847
- "
848
- >
849
- {{
850
- vm.getFieldValidationHints(
851
- 'snmpVersionAuthPrivProtocol',
852
- vm.getDeviceFormName(editDevice)
853
- )
854
- }}
855
- </c8y-message>
856
- </c8y-messages>
857
- </div>
858
- </div>
859
- <div class="col-sm-6">
860
- <div
861
- class="form-group"
862
- ng-class="{
863
- 'has-error': vm.invalid(
864
- 'snmpVersionAuthPrivPassword',
865
- vm.getDeviceFormName(editDevice)
866
- )
867
- }"
868
- >
869
- <label translate>Password</label>
870
- <input
871
- class="form-control"
872
- type="password"
873
- placeholder="{{ 'e.g. my_password' | translate }}"
874
- ng-minlength="8"
875
- name="snmpVersionAuthPrivPassword"
876
- ng-model="editDevice.auth.privPassword"
877
- required
878
- ng-disabled="editDevice.adding"
879
- />
880
- <c8y-messages>
881
- <c8y-message
882
- class="form-control-feedback-message"
883
- ng-if="
884
- vm.invalid(
885
- 'snmpVersionAuthPrivPassword',
886
- vm.getDeviceFormName(editDevice)
887
- )
888
- "
889
- >
890
- {{
891
- vm.getFieldValidationHints(
892
- 'snmpVersionAuthPrivPassword',
893
- vm.getDeviceFormName(editDevice)
894
- )
895
- }}
896
- </c8y-message>
897
- </c8y-messages>
898
- </div>
899
- </div>
900
- </div>
901
- </fieldset>
902
- </fieldset>
903
-
904
- <div class="form-group">
905
- <button
906
- class="btn btn-default"
907
- type="button"
908
- title="{{ 'Cancel' | translate }}"
909
- ng-click="vm.clearEditDevice()"
910
- ng-disabled="editDevice.adding"
911
- >
912
- {{ 'Cancel' | translate }}
913
- </button>
914
- <button
915
- class="btn btn-primary"
916
- type="button"
917
- ng-class="{ 'btn-pending': editDevice.adding }"
918
- ng-click="vm.updateDevice(editDevice)"
919
- ng-disabled="vm.isEditFormInvalid(vm.getDeviceFormName(editDevice), editDevice) || editDevice.adding"
920
- >
921
- <span title="{{ 'Save' | translate }}" ng-if="!editDevice.adding">
922
- {{ 'Save' | translate }}
923
- </span>
924
- <span title="{{ 'Saving' | translate }}…" ng-if="editDevice.adding">
925
- {{ 'Saving' | translate }}…
926
- </span>
927
- </button>
928
- </div>
929
- </form>
930
- </div>
931
- </div>
932
- </div>
933
- </div>
934
- </div>
935
- <form
936
- ng-if="vm.newDevice && vm.expandedId === 'newDevice'"
937
- class="card-block bg-level-2"
938
- name="vm.newSNMPDeviceForm"
939
- novalidate
940
- >
941
- <div class="form-group" ng-class="{ 'has-error': vm.invalid('name') }">
942
- <label translate>Name</label>
943
- <input
944
- class="form-control"
945
- placeholder="{{ 'e.g. SNMP device 1' | translate }}"
946
- name="name"
947
- ng-model="vm.newDevice.name"
948
- required
949
- ng-disabled="vm.newDevice.adding"
950
- />
951
- <c8y-messages>
952
- <c8y-message class="form-control-feedback-message" ng-if="vm.invalid('name')">
953
- {{ vm.getFieldValidationHints('name') }}
954
- </c8y-message>
955
- </c8y-messages>
956
- </div>
957
- <div class="form-group" ng-class="{ 'has-error': vm.invalid('deviceType') }">
958
- <label translate>Device type</label>
959
- <ui-select
960
- class="form-control"
961
- name="deviceType"
962
- append-to-body="true"
963
- ng-model="vm.newDevice.deviceType"
964
- required
965
- ng-disabled="vm.newDevice.adding"
966
- >
967
- <ui-select-match
968
- placeholder="{{ 'Select device protocol' | translate }}"
969
- title="{{ $select.selected.name }}"
970
- ng-bind="$select.selected.name"
971
- ></ui-select-match>
972
- <ui-select-choices
973
- repeat="type in vm.deviceConfigurationOptions.types | orderBy:'name' | filter:$select.search"
974
- >
975
- <span title="{{ type.name }}">{{ type.name }}</span>
976
- </ui-select-choices>
977
- </ui-select>
978
- <c8y-messages>
979
- <c8y-message class="form-control-feedback-message" ng-if="vm.invalid('deviceType')">
980
- {{ vm.getFieldValidationHints('deviceType') }}
981
- </c8y-message>
982
- </c8y-messages>
983
- </div>
984
- <div class="tight-grid">
985
- <div class="col-sm-8">
986
- <div class="form-group" ng-class="{ 'has-error': vm.invalid('ipAddress') }">
987
- <label translate>IP address</label>
988
- <input
989
- class="form-control"
990
- placeholder="{{ 'e.g.' | translate }} 162.12.24.1"
991
- name="ipAddress"
992
- validate-ip
993
- ng-model="vm.newDevice.ipAddress"
994
- required
995
- ng-disabled="vm.newDevice.adding"
996
- allow-ip-v6="true"
997
- />
998
- <c8y-messages>
999
- <c8y-message
1000
- class="form-control-feedback-message"
1001
- ng-if="vm.invalid('ipAddress')"
1002
- >
1003
- {{ vm.getFieldValidationHints('ipAddress') }}
1004
- </c8y-message>
1005
- </c8y-messages>
1006
- </div>
1007
- </div>
1008
- <div class="col-sm-4">
1009
- <div class="form-group" ng-class="{ 'has-error': vm.invalid('port') }">
1010
- <label translate>Port</label>
1011
- <input
1012
- class="form-control"
1013
- placeholder="{{ 'e.g.' | translate }} 161"
1014
- name="port"
1015
- ng-model="vm.newDevice.port"
1016
- required
1017
- ng-disabled="vm.newDevice.adding"
1018
- />
1019
- <c8y-messages>
1020
- <c8y-message class="form-control-feedback-message" ng-if="vm.invalid('port')">
1021
- {{ vm.getFieldValidationHints('port') }}
1022
- </c8y-message>
1023
- </c8y-messages>
1024
- </div>
1025
- </div>
1026
- </div>
1027
- <div class="form-group" ng-class="{ 'has-error': vm.invalid('version') }">
1028
- <label translate>SNMP version</label>
1029
- <ui-select
1030
- class="form-control"
1031
- name="deviceType"
1032
- append-to-body="true"
1033
- ng-model="vm.newDevice.version"
1034
- required
1035
- ng-disabled="vm.newDevice.adding"
1036
- >
1037
- <ui-select-match
1038
- placeholder="{{ 'Select SNMP version' | translate }}"
1039
- title="{{ $select.selected.label | translate }}"
1040
- ng-bind="$select.selected.label | translate"
1041
- ></ui-select-match>
1042
- <ui-select-choices
1043
- repeat="version.value as version in vm.snmpVersions | orderBy:'label' | filter:$select.search"
1044
- >
1045
- <span title="{{ version.label | translate }}">{{ version.label | translate }}</span>
1046
- </ui-select-choices>
1047
- </ui-select>
1048
- <c8y-messages>
1049
- <c8y-message class="form-control-feedback-message" ng-if="vm.invalid('version')">
1050
- {{ vm.getFieldValidationHints('version') }}
1051
- </c8y-message>
1052
- </c8y-messages>
1053
- </div>
1054
- <fieldset ng-if="vm.newDevice.version === vm.snmpVersions.VERSION_3.value">
1055
- <div class="legend form-block" translate>Device authentication details</div>
1056
- <div class="tight-grid">
1057
- <div class="col-sm-6">
1058
- <div
1059
- class="form-group"
1060
- ng-class="{ 'has-error': vm.invalid('snmpVersionUsername') }"
1061
- >
1062
- <label translate>Username</label>
1063
- <input
1064
- class="form-control"
1065
- placeholder="{{ 'e.g. my_username' | translate }}"
1066
- name="snmpVersionUsername"
1067
- ng-model="vm.newDevice.auth.username"
1068
- required
1069
- ng-disabled="vm.newDevice.adding"
1070
- />
1071
- <c8y-messages>
1072
- <c8y-message
1073
- class="form-control-feedback-message"
1074
- ng-if="vm.invalid('snmpVersionUsername')"
1075
- >
1076
- {{ vm.getFieldValidationHints('snmpVersionUsername') }}
1077
- </c8y-message>
1078
- </c8y-messages>
1079
- </div>
1080
- </div>
1081
- <div class="col-sm-6">
1082
- <div
1083
- class="form-group"
1084
- ng-class="{ 'has-error': vm.invalid('snmpVersionSecurityLevel') }"
1085
- >
1086
- <label translate>Security level</label>
1087
- <ui-select
1088
- class="form-control"
1089
- name="snmpVersionSecurityLevel"
1090
- append-to-body="true"
1091
- ng-model="vm.newDevice.auth.securityLevel"
1092
- required
1093
- ng-disabled="vm.newDevice.adding"
1094
- >
1095
- <ui-select-match
1096
- placeholder="{{ 'Select security level' | translate }}"
1097
- title="{{ $select.selected.label | translate }}"
1098
- ng-bind="$select.selected.label | translate"
1099
- ></ui-select-match>
1100
- <ui-select-choices
1101
- repeat="level.value as level in vm.snmpSecurityLevels | orderBy:'name' | filter:$select.search"
1102
- >
1103
- <span title="{{ level.label | translate }}">
1104
- {{ level.label | translate }}
1105
- </span>
1106
- </ui-select-choices>
1107
- </ui-select>
1108
- <c8y-messages>
1109
- <c8y-message
1110
- class="form-control-feedback-message"
1111
- ng-if="vm.invalid('snmpVersionSecurityLevel')"
1112
- >
1113
- {{ vm.getFieldValidationHints('snmpVersionSecurityLevel') }}
1114
- </c8y-message>
1115
- </c8y-messages>
1116
- </div>
1117
- </div>
1118
- </div>
1119
- <div class="tight-grid">
1120
- <div class="col-sm-6">
1121
- <div
1122
- class="form-group"
1123
- ng-class="{ 'has-error': vm.invalid('snmpVersionEngineId') }"
1124
- >
1125
- <label translate>Engine ID</label>
1126
- <input
1127
- class="form-control"
1128
- placeholder="{{ 'e.g.' | translate }} 45:U9:39:900:FJ8"
1129
- name="snmpVersionEngineId"
1130
- ng-model="vm.newDevice.auth.engineId"
1131
- ng-minlength="5"
1132
- ng-maxlength="32"
1133
- required
1134
- ng-disabled="vm.newDevice.adding"
1135
- />
1136
- <c8y-messages>
1137
- <c8y-message
1138
- class="form-control-feedback-message"
1139
- ng-if="vm.invalid('snmpVersionEngineId')"
1140
- >
1141
- {{ vm.getFieldValidationHints('snmpVersionEngineId') }}
1142
- </c8y-message>
1143
- </c8y-messages>
1144
- </div>
1145
- </div>
1146
- </div>
1147
- <fieldset
1148
- ng-if="
1149
- vm.newDevice.auth.securityLevel === vm.snmpSecurityLevels.AUTH_NOPRIV.value ||
1150
- vm.newDevice.auth.securityLevel === vm.snmpSecurityLevels.AUTH_PRIV.value
1151
- "
1152
- >
1153
- <div class="legend form-block" translate>Authentication</div>
1154
- <div class="tight-grid">
1155
- <div class="col-sm-6">
1156
- <div
1157
- class="form-group"
1158
- ng-class="{ 'has-error': vm.invalid('snmpVersionAuthProtocol') }"
1159
- >
1160
- <label translate>Protocol</label>
1161
- <ui-select
1162
- class="form-control"
1163
- name="snmpVersionAuthProtocol"
1164
- append-to-body="true"
1165
- ng-model="vm.newDevice.auth.authProtocol"
1166
- required
1167
- ng-disabled="vm.newDevice.adding"
1168
- data-cy="snmp-auth-protocol"
1169
- >
1170
- <ui-select-match
1171
- placeholder="{{ 'Select protocol' | translate }}"
1172
- title="{{ $select.selected.label | translate }}"
1173
- ng-bind="$select.selected.label | translate"
1174
- ></ui-select-match>
1175
- <ui-select-choices
1176
- repeat="protocol.value as protocol in vm.snmpAuthProtocols | orderBy:'label' | filter:$select.search"
1177
- >
1178
- <span title="{{ protocol.label | translate }}">
1179
- {{ protocol.label | translate }}
1180
- </span>
1181
- </ui-select-choices>
1182
- </ui-select>
1183
- <c8y-messages>
1184
- <c8y-message
1185
- class="form-control-feedback-message"
1186
- ng-if="vm.invalid('snmpVersionAuthProtocol')"
1187
- >
1188
- {{ vm.getFieldValidationHints('snmpVersionAuthProtocol') }}
1189
- </c8y-message>
1190
- </c8y-messages>
1191
- </div>
1192
- </div>
1193
- <div class="col-sm-6">
1194
- <div
1195
- class="form-group"
1196
- ng-class="{ 'has-error': vm.invalid('snmpVersionAuthPassword') }"
1197
- >
1198
- <label translate>Password</label>
1199
- <input
1200
- class="form-control"
1201
- type="password"
1202
- ng-minlength="8"
1203
- placeholder="{{ 'e.g. my_password' | translate }}"
1204
- name="snmpVersionAuthPassword"
1205
- ng-model="vm.newDevice.auth.authPassword"
1206
- required
1207
- ng-disabled="vm.newDevice.adding"
1208
- />
1209
- <c8y-messages>
1210
- <c8y-message
1211
- class="form-control-feedback-message"
1212
- ng-if="vm.invalid('snmpVersionAuthPassword')"
1213
- >
1214
- {{ vm.getFieldValidationHints('snmpVersionAuthPassword') }}
1215
- </c8y-message>
1216
- </c8y-messages>
1217
- </div>
1218
- </div>
1219
- </div>
1220
- </fieldset>
1221
- <fieldset
1222
- ng-if="vm.newDevice.auth.securityLevel === vm.snmpSecurityLevels.AUTH_PRIV.value"
1223
- >
1224
- <div class="legend form-block" translate>Privacy</div>
1225
- <div class="tight-grid">
1226
- <div class="col-sm-6">
1227
- <div
1228
- class="form-group"
1229
- ng-class="{ 'has-error': vm.invalid('snmpVersionAuthPrivProtocol') }"
1230
- >
1231
- <label translate>Protocol</label>
1232
- <ui-select
1233
- class="form-control"
1234
- name="snmpVersionAuthPrivProtocol"
1235
- append-to-body="true"
1236
- ng-model="vm.newDevice.auth.privProtocol"
1237
- required
1238
- ng-disabled="vm.newDevice.adding"
1239
- >
1240
- <ui-select-match
1241
- placeholder="{{ 'Select protocol' | translate }}"
1242
- title="{{ $select.selected.label | translate }}"
1243
- ng-bind="$select.selected.label | translate"
1244
- data-cy="fieldbus-device-list--privacy--protocol"
1245
- ></ui-select-match>
1246
- <ui-select-choices
1247
- repeat="protocol.value as protocol in vm.snmpAuthPrivProtocols | orderBy:'label' | filter:$select.search"
1248
- >
1249
- <span title="{{ protocol.label | translate }}">
1250
- {{ protocol.label | translate }}
1251
- </span>
1252
- </ui-select-choices>
1253
- </ui-select>
1254
- <c8y-messages>
1255
- <c8y-message
1256
- class="form-control-feedback-message"
1257
- ng-if="vm.invalid('snmpVersionAuthPrivProtocol')"
1258
- >
1259
- {{ vm.getFieldValidationHints('snmpVersionAuthPrivProtocol') }}
1260
- </c8y-message>
1261
- </c8y-messages>
1262
- </div>
1263
- </div>
1264
- <div class="col-sm-6">
1265
- <div
1266
- class="form-group"
1267
- ng-class="{ 'has-error': vm.invalid('snmpVersionAuthPrivPassword') }"
1268
- >
1269
- <label translate>Password</label>
1270
- <input
1271
- class="form-control"
1272
- ng-minlength="8"
1273
- type="password"
1274
- placeholder="{{ 'e.g. my_password' | translate }}"
1275
- name="snmpVersionAuthPrivPassword"
1276
- ng-model="vm.newDevice.auth.privPassword"
1277
- required
1278
- ng-disabled="vm.newDevice.adding"
1279
- />
1280
- <c8y-messages>
1281
- <c8y-message
1282
- class="form-control-feedback-message"
1283
- ng-if="vm.invalid('snmpVersionAuthPrivPassword')"
1284
- >
1285
- {{ vm.getFieldValidationHints('snmpVersionAuthPrivPassword') }}
1286
- </c8y-message>
1287
- </c8y-messages>
1288
- </div>
1289
- </div>
1290
- </div>
1291
- </fieldset>
1292
- </fieldset>
1293
-
1294
- <div class="form-group">
1295
- <button
1296
- class="btn btn-default"
1297
- type="button"
1298
- title="{{ 'Cancel' | translate }}"
1299
- ng-click="vm.clearNewDevice()"
1300
- ng-disabled="vm.newDevice.adding"
1301
- >
1302
- {{ 'Cancel' | translate }}
1303
- </button>
1304
- <button
1305
- class="btn btn-primary"
1306
- type="submit"
1307
- ng-class="{ 'btn-pending': vm.newDevice.adding }"
1308
- ng-click="vm.addNewDevice()"
1309
- ng-disabled="vm.isFormInvalid() || vm.newDevice.adding"
1310
- >
1311
- <span title="{{ 'Add' | translate }}" ng-if="!vm.newDevice.adding">
1312
- {{ 'Add' | translate }}
1313
- </span>
1314
- <span ng-if="vm.newDevice.adding">{{ 'Adding' | translate }}…</span>
1315
- </button>
1316
- </div>
1317
- </form>
1318
- <!-- empty state -->
1319
- <div class="card bg-level-1">
1320
- <c8y-ui-empty-state
1321
- ng-if="vm.devices.length < 1"
1322
- [icon]="'c8y-device-management'"
1323
- [title]="'No devices to display.' | translate"
1324
- [subtitle]="'Click below to add a device.' | translate"
1325
- ></c8y-ui-empty-state>
1326
- </div>
1327
- </div>
1328
- <div class="card-footer separator" ng-hide="vm.expandedId === 'newDevice'">
1329
- <button
1330
- class="btn btn-default m-b-0"
1331
- type="button"
1332
- title="{{ 'Add SNMP device' | translate }}"
1333
- data-cy="fieldbus-device-list--Add-SNMP-device"
1334
- ng-click="vm.startAddingNewDevice();"
1335
- >
1336
- <i c8y-icon="plus-circle"></i>
1337
- {{ 'Add SNMP device' | translate }}
1338
- </button>
1339
- </div>
1340
- </div>
1341
- </div>
1342
- <c8y-load-more ng-repeat-end change-page-size></c8y-load-more>
1343
- </div>
1344
-
1345
293
  <div ng-if="vm.isOPCUATab()">
1346
294
  <div class="col-lg-12 col-lg-max">
1347
295
  <div class="card">