@c8y/ng1-modules 1018.481.0 → 1018.482.30

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.
@@ -1,20 +1,29 @@
1
1
  <c8y-breadcrumbs-set>
2
2
  <c8y-breadcrumbs-item
3
+ icon="c8y-accounts"
3
4
  path="#users"
4
5
  label="{{ 'Users' | translate }}"
5
- icon="c8y-accounts"
6
6
  ></c8y-breadcrumbs-item>
7
7
  <c8y-breadcrumbs-item
8
- label="{{ 'Accounts' | translate }}"
9
8
  icon="c8y-accounts"
9
+ label="{{ 'Accounts' | translate }}"
10
10
  ></c8y-breadcrumbs-item>
11
11
  </c8y-breadcrumbs-set>
12
12
 
13
13
  <div class="card content-fullpage d-grid grid__col--6-6--md grid__row--auto-min-content">
14
- <form name="forms.userForm" class="d-contents" novalidate>
14
+ <form
15
+ class="d-contents"
16
+ name="forms.userForm"
17
+ novalidate
18
+ >
15
19
  <div class="inner-scroll bg-level-0">
16
20
  <div class="card-header large-padding separator sticky-top">
17
- <div class="card-title h4" translate>Identification</div>
21
+ <div
22
+ class="card-title h4"
23
+ translate
24
+ >
25
+ Identification
26
+ </div>
18
27
  </div>
19
28
  <div class="card-block large-padding">
20
29
  <c8y-ui-edit-user
@@ -33,13 +42,25 @@
33
42
  </div>
34
43
  </form>
35
44
 
36
- <form name="forms.rolesForm" class="d-contents" novalidate>
45
+ <form
46
+ class="d-contents"
47
+ name="forms.rolesForm"
48
+ novalidate
49
+ >
37
50
  <div class="bg-level-1 inner-scroll">
38
51
  <div class="card-header sticky-top separator">
39
- <div class="h4 card-title" translate>Global roles</div>
52
+ <div
53
+ class="h4 card-title"
54
+ translate
55
+ >
56
+ Global roles
57
+ </div>
40
58
  </div>
41
59
  <ul class="c8y-list__group p-l-16 p-r-16 no-border-last">
42
- <li class="c8y-list__item bg-inherit" ng-repeat="group in groups | orderBy: 'name'">
60
+ <li
61
+ class="c8y-list__item bg-inherit"
62
+ ng-repeat="group in groups | orderBy: 'name'"
63
+ >
43
64
  <div class="c8y-list__item__block">
44
65
  <div class="c8y-list__item__body p-l-0">
45
66
  <label
@@ -49,21 +70,24 @@
49
70
  }"
50
71
  >
51
72
  <input
52
- type="checkbox"
53
73
  id="{{ 'groupcheckbox' + $index }}"
74
+ type="checkbox"
54
75
  ng-model="_groups[group.id]"
55
76
  ng-disabled="vm.shouldDisableGlobalRolesCheckbox(group)"
56
77
  />
57
78
  <span></span>
58
- <span title="{{ ::group.name | translate }}" class="text-normal d-flex">
79
+ <span
80
+ class="text-normal d-flex"
81
+ title="{{ ::group.name | translate }}"
82
+ >
59
83
  <div>
60
84
  {{::group.name | translate}}
61
85
  <p class="small text-muted">{{::group.description | translate}}</p>
62
86
  </div>
63
87
  <button
64
88
  class="m-l-auto btn-clean"
65
- type="button"
66
89
  aria-label="{{ 'Global roles' | translate }}"
90
+ type="button"
67
91
  uib-popover="{{
68
92
  'Only global roles defined on the owner can be defined on the owned user.'
69
93
  | translate
@@ -74,7 +98,10 @@
74
98
  ng-click="$event.preventDefault()"
75
99
  ng-show="restrictedByOwner(group)"
76
100
  >
77
- <i c8y-icon="exclamation-circle" class="text-warning"></i>
101
+ <i
102
+ class="text-warning"
103
+ c8y-icon="exclamation-circle"
104
+ ></i>
78
105
  </button>
79
106
  </span>
80
107
  </label>
@@ -83,9 +110,17 @@
83
110
  </li>
84
111
  </ul>
85
112
 
86
- <div ng-if="showAcl()" class="bg-inherit card--grid__separator-top--white">
113
+ <div
114
+ class="bg-inherit card--grid__separator-top--white"
115
+ ng-if="showAcl()"
116
+ >
87
117
  <div class="card-header large-padding sticky-top separator">
88
- <div class="h4" translate>User permissions</div>
118
+ <div
119
+ class="h4"
120
+ translate
121
+ >
122
+ User permissions
123
+ </div>
89
124
  </div>
90
125
  <div class="card-block large-padding">
91
126
  <c8y-acl-editor acl="user.devicePermissions"></c8y-acl-editor>
@@ -96,21 +131,23 @@
96
131
 
97
132
  <div class="card-footer large-padding separator grid__col--fullspan">
98
133
  <button
134
+ class="btn btn-default"
99
135
  title="{{ 'Cancel' | translate }}"
100
136
  type="button"
101
- class="btn btn-default"
102
137
  ng-click="vm.cancel()"
138
+ c8y-key-shortcut="Escape"
103
139
  >
104
140
  {{ 'Cancel' | translate }}
105
141
  </button>
106
142
  <button
107
143
  class="btn btn-primary"
108
- type="button"
109
- title="{{ 'Save' | translate }}"
110
144
  ng-class="{ 'btn-save': showPassword }"
145
+ title="{{ 'Save' | translate }}"
146
+ type="button"
111
147
  ng-if="canEditUser(currentUser, user)"
112
- ng-disabled="saving || vm.isUserAndRolesFormPristine() || vm.isUserFormInvalid() || vm.isRolesFormInvalid()"
148
+ ng-disabled="!vm.canSave()"
113
149
  ng-click="checkPassword(user)"
150
+ c8y-key-shortcut="Enter"
114
151
  >
115
152
  {{ 'Save' | translate }}
116
153
  </button>
@@ -47,6 +47,7 @@
47
47
  type="button"
48
48
  class="btn btn-default"
49
49
  ng-click="vm.applyFilters()"
50
+ c8y-key-shortcut="Enter"
50
51
  >
51
52
  <i c8y-icon="filter"></i>
52
53
  <span class="hidden-sm" translate>Apply`filters`</span>
@@ -57,6 +58,7 @@
57
58
  class="m-l-0 btn btn-default"
58
59
  ng-click="vm.clearFilters()"
59
60
  ng-show="vm.isAnyFilterSelected()"
61
+ c8y-key-shortcut="Escape"
60
62
  >
61
63
  <i c8y-icon="times"></i>
62
64
  <span class="hidden-sm" translate>Clear`filters`</span>
@@ -1 +0,0 @@
1
- "use strict";!function(){function e(t,n,e,a,i,o,l,c,d){var r,s,u="c8y_Position",g="com_nsn_startups_vendme_fragments_GPSCoordinates",f={},m={icon:{type:"div",className:"normal-marker-icon",iconSize:[25,41],iconAnchor:[12.5,41]},focus:!0,draggable:!0};function v(e){d.getMap("locationId").then(function(e){setTimeout(function(){e.invalidateSize(!0)},500)}),r=e,t.location=A(e)||{};var n,e=t.location;b(t.location),s=_.clone(e),(n=e).lat&&n.lng&&$(e)}function b(e){var n=_.get(e,"lat"),t=_.get(e,"lng"),a=_.get(e,"alt");_.set(e,"lat",_.toNumber(n)),_.set(e,"lng",_.toNumber(t)),_.isUndefined(a)||_.set(e,"alt",_.toNumber(a))}function h(e){var e=e&&e.latLng;e&&($(e={lat:Number(e.lat),lng:Number(e.lng),zoom:17}),C(e),D(e))}function p(){var e;i.detailCached(((e=_.get(t,"child.config.device"))&&(m.draggable=!1),_.get(e,"id",n.deviceId))).then(function(e){return _.cloneDeep(e.data)}).then(v)}function $(e){_.assign(m,{lat:parseFloat(e.lat),lng:parseFloat(e.lng)}),D(f.main=m)}function C(e){_.assign(t.location,{lat:parseFloat(e.lat),lng:(e=parseFloat(e.lng),(e%=360)<-180?360+e:180<e?e-360:e)})}function y(e){return i.isVendme(e)?g:u}function A(e){return e[y(e)]}function D(e){e=e||m;_.assign(t.center,e)}_.assign(t,{settings:{},markers:f,mapDefaults:{scrollWheelZoom:!1},centerMap:D,center:{lat:0,lng:0,zoom:11},pattern:{latitude:/^[-+]?([1-8]?\d(\.\d+)?|90(\.0+)?)$/,longitude:/^[-+]?(180(\.0+)?|((1[0-7]\d)|([1-9]?\d))(\.\d+)?)$/,altitude:/^[-+]?(0|([1-9]\d*))(\.\d+)?$/},events:{markers:{enable:["dragend"]}},gotoAddress:function(e){a.geoCode(e).then(function(e){e=_.get(e,"data.results[0].locations[0]");return e||l.warning(c("Address could not be found.")),e||null}).then(h)},cancel:function(){t.noeditable=!t.noeditable,_.isEqual(t.location,s)||(t.location=_.clone(s))},save:function(){t.noeditable=!t.noeditable;var e={id:r.id},n=_.clone(A(r));delete n.address,e[y(r)]=n,b(e[y(r)]),i.save(e).then(function(){l.success(c("Location saved."))}).then(p)},realtimeChannel:"/managedobjects/".concat(void 0!==n.deviceId?n.deviceId:"*"),invalid:angular.bind(e,e.invalid,t),id:t.$id}),t.$on("leafletDirectiveMarker.locationId.dragend",function(e,n){C(n.model)}),t.$watch("child.config.device",p),o.addListener(t.$id,t.realtimeChannel,"".concat(t.$id,"-subscribed"),function(){p()}),o.addListener(t.$id,t.realtimeChannel,"CREATE",function(e,n){v(n)}),o.addListener(t.$id,t.realtimeChannel,"UPDATE",function(e,n){v(n)}),p()}e.$inject=["$scope","$routeParams","c8yBase","c8yGeo","c8yDevices","c8yRealtime","c8yAlert","gettext","leafletData"],angular.module("c8y.parts.location").controller("locationCtrl",e)}();
@@ -1,24 +0,0 @@
1
- {
2
- "name": "Asset location",
3
- "ngModules": [
4
- "c8y.parts.location"
5
- ],
6
- "category": "Device",
7
- "icon": "home",
8
- "color": "#F03F0F",
9
- "description": "Define the location of an asset using a map and map-matching. This plugin contributes a new view.",
10
- "css": [
11
- "style.css"
12
- ],
13
- "js": [
14
- "index.js",
15
- "controllers/location.js"
16
- ],
17
- "folderName": "location",
18
- "appsInclude": [
19
- "devicemanagement"
20
- ],
21
- "copy": [
22
- "img/*"
23
- ]
24
- }
@@ -1 +0,0 @@
1
- "use strict";!function(){function e(e,i,t,n){var o={lat:51.2433101,lng:6.7303924};function c(e){e=e.data;return _.has(e,"c8y_Position")||_.has(e,"com_nsn_startups_vendme_fragments_GPSCoordinates")}e.when("/device/:deviceId",{name:n("Location"),templateUrl:":::PLUGIN_PATH:::/views/index.html",icon:"location-arrow",showIf:["$routeParams","c8yDevices",function(e,i){e=e.deviceId;return i.detailCached(e).then(c)}]}),i.addUrlAction({path:"/device/:deviceId/*",text:n("Add location"),icon:"location-arrow",actionBar:!0,priority:1e3,showIf:["$routeParams","c8yDevices",function(e,i){e=e.deviceId;return i.detailCached(e).then(function(e){return!c(e)})}],showIfPermissions:{adminMOs:[":deviceId"]},action:["$routeParams","$location","c8yDevices",function(e,i,t){var e=e.deviceId,n="/device/".concat(e,"/location");t.save({id:e,c8y_Position:_.cloneDeep(o)}).then(function(){i.path(n)})}]}),t.add({name:n("Location"),description:n("Displays a map with device position marker"),templateUrl:":::PLUGIN_PATH:::/views/component.html",previewImage:":::PLUGIN_PATH:::/img/location-widget-pr.png",options:{noNewWidgets:!0}})}e.$inject=["c8yViewsProvider","c8yActionsProvider","c8yComponentsProvider","gettext"],angular.module("c8y.parts.location",[]).config(e)}();
@@ -1,8 +0,0 @@
1
- .grid-stack-item-content .leaflet-container {
2
- /*position:absolute;
3
- top: 40px;
4
- right:0;
5
- bottom:0;
6
- left:0;
7
- height: auto !important;*/
8
- }
@@ -1,11 +0,0 @@
1
- <div data-ng-controller="locationCtrl">
2
- <leaflet
3
- width="100%"
4
- height="250px"
5
- markers="markers"
6
- center="center"
7
- defaults="mapDefaults"
8
- event-broadcast="events"
9
- id="locationId"
10
- ></leaflet>
11
- </div>
@@ -1,163 +0,0 @@
1
- <div data-ng-controller="locationCtrl">
2
- <c8y-ui-action-bar-set>
3
- <c8y-realtime-btn class="btn btn-link" subscriber-id="id"></c8y-realtime-btn>
4
-
5
- <button
6
- class="btn btn-link"
7
- type="button"
8
- title="{{ 'Center map' | translate }}"
9
- ng-click="centerMap()"
10
- >
11
- <i c8y-icon="dot-circle-o"></i>
12
- {{ 'Center map' | translate }}
13
- </button>
14
- </c8y-ui-action-bar-set>
15
-
16
- <div class="card content-fullpage card--grid grid__col--8-4--md">
17
- <leaflet
18
- width="100%"
19
- height="100%"
20
- markers="markers"
21
- center="center"
22
- defaults="mapDefaults"
23
- id="locationId"
24
- event-broadcast="events"
25
- style="min-height: 30vh"
26
- ></leaflet>
27
-
28
- <div class="d-flex d-col bg-inherit content-fullpage">
29
- <div class="card-header separator">
30
- <span class="card-title" translate>Device location</span>
31
- <button
32
- class="btn-help"
33
- type="button"
34
- aria-label="{{ 'Help' | translate }}"
35
- uib-popover-html="'Device location may be set by the device itself, or manually in the platform' | translate"
36
- popover-placement="left"
37
- popover-trigger="'focus'"
38
- popover-append-to-body="true"
39
- ></button>
40
- </div>
41
- <div class="inner-scroll">
42
- <form
43
- class="card-block"
44
- ng-class="{ 'form-read-only': !noeditable }"
45
- name="locationForm"
46
- novalidate
47
- >
48
- <div
49
- class="form-group m-b-24"
50
- ng-class="{ 'has-error': invalid('locationForm', 'latitude') }"
51
- >
52
- <label for="latitude">
53
- <span translate>Latitude</span>
54
- (°)
55
- </label>
56
- <input
57
- type="number"
58
- name="latitude"
59
- id="latitude"
60
- class="form-control"
61
- ng-disabled="!noeditable"
62
- ng-model="location.lat"
63
- ng-pattern="pattern.latitude"
64
- />
65
- </div>
66
-
67
- <div
68
- class="form-group m-b-24"
69
- ng-class="{ 'has-error': invalid('locationForm', 'longitude') }"
70
- >
71
- <label for="longitude">
72
- <span translate>Longitude</span>
73
- (°)
74
- </label>
75
- <input
76
- type="number"
77
- name="longitude"
78
- id="longitude"
79
- class="form-control"
80
- ng-disabled="!noeditable"
81
- ng-model="location.lng"
82
- ng-pattern="pattern.longitude"
83
- />
84
- </div>
85
-
86
- <div
87
- class="form-group m-b-24"
88
- ng-class="{ 'has-error': invalid('locationForm', 'altitude') }"
89
- >
90
- <label for="altitude">
91
- <span translate>Altitude</span>
92
- (m)
93
- </label>
94
- <input
95
- type="number"
96
- name="altitude"
97
- id="altitude"
98
- class="form-control"
99
- ng-disabled="!noeditable"
100
- ng-model="location.alt"
101
- ng-pattern="pattern.altitude"
102
- />
103
- </div>
104
- </form>
105
- <form
106
- class="card-block bg-level-1"
107
- name="addressForm"
108
- ng-show="noeditable"
109
- novalidate
110
- ng-submit="gotoAddress(location.address)"
111
- >
112
- <div class="form-group">
113
- <label for="latlong">{{ 'Find lat/long by address' | translate }}</label>
114
- <div class="input-group input-group-search">
115
- <input
116
- type="text"
117
- id="latlong"
118
- ng-model="location.address"
119
- placeholder="{{ 'e.g.' | translate }} Speditionstraße 13, Düsseldorf"
120
- class="form-control"
121
- />
122
- <span class="input-group-btn">
123
- <button class="btn btn-dot" type="submit" title="{{ 'Search' | translate }}">
124
- <i c8y-icon="search"></i>
125
- </button>
126
- </span>
127
- </div>
128
- </div>
129
- </form>
130
- </div>
131
- <div class="card-footer separator">
132
- <button
133
- class="btn btn-default"
134
- type="button"
135
- title="{{ 'Edit location' | translate }}"
136
- ng-click="noeditable = !noeditable"
137
- ng-show="!noeditable"
138
- >
139
- {{ 'Edit location' | translate }}
140
- </button>
141
- <button
142
- class="btn btn-default"
143
- type="button"
144
- title="{{ 'Cancel' | translate }}"
145
- ng-click="cancel()"
146
- ng-show="noeditable"
147
- >
148
- {{ 'Cancel' | translate }}
149
- </button>
150
- <button
151
- class="btn btn-primary"
152
- type="button"
153
- title="{{ 'Save' | translate }}"
154
- ng-disabled="locationForm.$invalid"
155
- ng-click="save()"
156
- ng-show="noeditable"
157
- >
158
- {{ 'Save' | translate }}
159
- </button>
160
- </div>
161
- </div>
162
- </div>
163
- </div>