@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.
- package/NOTICES +2393 -453
- package/core/cumulocity.json +1 -0
- package/core/ui/directives/keyShortcut.js +1 -0
- package/core/ui/properties/propertiesLibrary.service.js +1 -1
- package/core/ui/views/auditList.html +39 -17
- package/core/ui/views/editRetentionRuleModal.html +17 -8
- package/dataBroker/connectors/connectorEditor.html +0 -1
- package/enterpriseEdition/customBranding/brandingConfigurationForm.html +2 -0
- package/kpi/views/linearGauge.html +6 -4
- package/kpi/views/list.html +6 -6
- package/measurements/measurements2/chart.controller.js +1 -1
- package/package.json +1 -1
- package/roles/detail/roleDetailGlobal.html +2 -0
- package/tenants/views/detail.html +178 -74
- package/users/userDetailView/userDetailView.component.js +1 -1
- package/users/userDetailView/userDetailView.html +54 -17
- package/users/userListView/userListView.html +2 -0
- package/devicemanagement-location/controllers/location.js +0 -1
- package/devicemanagement-location/cumulocity.json +0 -24
- package/devicemanagement-location/img/location-widget-pr.png +0 -0
- package/devicemanagement-location/index.js +0 -1
- package/devicemanagement-location/style.css +0 -8
- package/devicemanagement-location/views/component.html +0 -11
- package/devicemanagement-location/views/index.html +0 -163
|
@@ -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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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="
|
|
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
|
-
}
|
|
Binary file
|
|
@@ -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,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>
|