Commit 15e74792f0a409bda4359e3b92496d7738f43e97
1 parent
b3f7fa8b
Add import assets and start refactorin
Showing
11 changed files
with
339 additions
and
232 deletions
@@ -32,7 +32,8 @@ function AssetService($http, $q, customerService, userService) { | @@ -32,7 +32,8 @@ function AssetService($http, $q, customerService, userService) { | ||
32 | getCustomerAssets: getCustomerAssets, | 32 | getCustomerAssets: getCustomerAssets, |
33 | findByQuery: findByQuery, | 33 | findByQuery: findByQuery, |
34 | fetchAssetsByNameFilter: fetchAssetsByNameFilter, | 34 | fetchAssetsByNameFilter: fetchAssetsByNameFilter, |
35 | - getAssetTypes: getAssetTypes | 35 | + getAssetTypes: getAssetTypes, |
36 | + findByName: findByName | ||
36 | } | 37 | } |
37 | 38 | ||
38 | return service; | 39 | return service; |
@@ -276,4 +277,16 @@ function AssetService($http, $q, customerService, userService) { | @@ -276,4 +277,16 @@ function AssetService($http, $q, customerService, userService) { | ||
276 | return deferred.promise; | 277 | return deferred.promise; |
277 | } | 278 | } |
278 | 279 | ||
280 | + function findByName(assetName, config) { | ||
281 | + config = config || {}; | ||
282 | + var deferred = $q.defer(); | ||
283 | + var url = '/api/tenant/assets?assetName=' + assetName; | ||
284 | + $http.get(url, config).then(function success(response) { | ||
285 | + deferred.resolve(response.data); | ||
286 | + }, function fail() { | ||
287 | + deferred.reject(); | ||
288 | + }); | ||
289 | + return deferred.promise; | ||
290 | + } | ||
291 | + | ||
279 | } | 292 | } |
@@ -31,7 +31,6 @@ function DeviceService($http, $q, $window, userService, attributeService, custom | @@ -31,7 +31,6 @@ function DeviceService($http, $q, $window, userService, attributeService, custom | ||
31 | getDeviceCredentials: getDeviceCredentials, | 31 | getDeviceCredentials: getDeviceCredentials, |
32 | getTenantDevices: getTenantDevices, | 32 | getTenantDevices: getTenantDevices, |
33 | saveDevice: saveDevice, | 33 | saveDevice: saveDevice, |
34 | - saveDeviceParameters: saveDeviceParameters, | ||
35 | saveDeviceCredentials: saveDeviceCredentials, | 34 | saveDeviceCredentials: saveDeviceCredentials, |
36 | unassignDeviceFromCustomer: unassignDeviceFromCustomer, | 35 | unassignDeviceFromCustomer: unassignDeviceFromCustomer, |
37 | makeDevicePublic: makeDevicePublic, | 36 | makeDevicePublic: makeDevicePublic, |
@@ -43,8 +42,9 @@ function DeviceService($http, $q, $window, userService, attributeService, custom | @@ -43,8 +42,9 @@ function DeviceService($http, $q, $window, userService, attributeService, custom | ||
43 | sendOneWayRpcCommand: sendOneWayRpcCommand, | 42 | sendOneWayRpcCommand: sendOneWayRpcCommand, |
44 | sendTwoWayRpcCommand: sendTwoWayRpcCommand, | 43 | sendTwoWayRpcCommand: sendTwoWayRpcCommand, |
45 | findByQuery: findByQuery, | 44 | findByQuery: findByQuery, |
46 | - getDeviceTypes: getDeviceTypes | ||
47 | - } | 45 | + getDeviceTypes: getDeviceTypes, |
46 | + findByName: findByName | ||
47 | + }; | ||
48 | 48 | ||
49 | return service; | 49 | return service; |
50 | 50 | ||
@@ -172,104 +172,6 @@ function DeviceService($http, $q, $window, userService, attributeService, custom | @@ -172,104 +172,6 @@ function DeviceService($http, $q, $window, userService, attributeService, custom | ||
172 | return deferred.promise; | 172 | return deferred.promise; |
173 | } | 173 | } |
174 | 174 | ||
175 | - function saveDeviceRelarion(deviceId, deviceRelation, config) { | ||
176 | - const deferred = $q.defer(); | ||
177 | - let attributesType = Object.keys(types.attributesScope); | ||
178 | - let allPromise = []; | ||
179 | - let promise = ""; | ||
180 | - if (deviceRelation.accessToken !== "") { | ||
181 | - promise = getDeviceCredentials(deviceId.id,null,config).then(function (response){ | ||
182 | - response.credentialsId = deviceRelation.accessToken; | ||
183 | - response.credentialsType = "ACCESS_TOKEN"; | ||
184 | - response.credentialsValue = null; | ||
185 | - return saveDeviceCredentials(response, config).catch(function(){ | ||
186 | - return "error"; | ||
187 | - }); | ||
188 | - }); | ||
189 | - allPromise.push(promise) | ||
190 | - } | ||
191 | - for (let i = 0; i < attributesType.length; i++) { | ||
192 | - let attribute = attributesType[i]; | ||
193 | - if (deviceRelation.attributes[attribute] && deviceRelation.attributes[attribute].length !== 0) { | ||
194 | - promise = attributeService.saveEntityAttributes(types.entityType.device, deviceId.id, types.attributesScope[attribute].value, deviceRelation.attributes[attribute], config).catch(function () { | ||
195 | - return "error"; | ||
196 | - }); | ||
197 | - allPromise.push(promise); | ||
198 | - } | ||
199 | - } | ||
200 | - if (deviceRelation.timeseries.length !== 0) { | ||
201 | - promise = attributeService.saveEntityTimeseries(types.entityType.device, deviceId.id, "time", deviceRelation.timeseries, config).catch(function(){ | ||
202 | - return "error"; | ||
203 | - }); | ||
204 | - allPromise.push(promise); | ||
205 | - } | ||
206 | - $q.all(allPromise).then(function success(response) { | ||
207 | - let isResponseHasError = false; | ||
208 | - for(let i = 0; i < response.length; i++){ | ||
209 | - if(response[i] === "error"){ | ||
210 | - isResponseHasError = true; | ||
211 | - break; | ||
212 | - } | ||
213 | - } | ||
214 | - if (isResponseHasError){ | ||
215 | - deferred.reject(); | ||
216 | - } else { | ||
217 | - deferred.resolve(); | ||
218 | - } | ||
219 | - }); | ||
220 | - return deferred.promise; | ||
221 | - } | ||
222 | - | ||
223 | - function saveDeviceParameters(deviceParameters, update, config) { | ||
224 | - config = config || {}; | ||
225 | - const deferred = $q.defer(); | ||
226 | - let statisticalInfo = {}; | ||
227 | - let newDevice = { | ||
228 | - name: deviceParameters.name, | ||
229 | - type: deviceParameters.type | ||
230 | - }; | ||
231 | - saveDevice(newDevice, config).then(function success(response) { | ||
232 | - saveDeviceRelarion(response.id, deviceParameters, config).then(function success() { | ||
233 | - statisticalInfo.create = { | ||
234 | - device: 1 | ||
235 | - }; | ||
236 | - deferred.resolve(statisticalInfo); | ||
237 | - }, function fail() { | ||
238 | - statisticalInfo.error = { | ||
239 | - device: 1 | ||
240 | - }; | ||
241 | - deferred.resolve(statisticalInfo); | ||
242 | - }); | ||
243 | - }, function fail() { | ||
244 | - if (update) { | ||
245 | - findByName(deviceParameters.name, config).then(function success(response) { | ||
246 | - saveDeviceRelarion(response.id, deviceParameters, config).then(function success() { | ||
247 | - statisticalInfo.update = { | ||
248 | - device: 1 | ||
249 | - }; | ||
250 | - deferred.resolve(statisticalInfo); | ||
251 | - }, function fail() { | ||
252 | - statisticalInfo.error = { | ||
253 | - device: 1 | ||
254 | - }; | ||
255 | - deferred.resolve(statisticalInfo); | ||
256 | - }); | ||
257 | - }, function fail() { | ||
258 | - statisticalInfo.error = { | ||
259 | - device: 1 | ||
260 | - }; | ||
261 | - deferred.resolve(statisticalInfo); | ||
262 | - }); | ||
263 | - } else { | ||
264 | - statisticalInfo.error = { | ||
265 | - device: 1 | ||
266 | - }; | ||
267 | - deferred.resolve(statisticalInfo); | ||
268 | - } | ||
269 | - }); | ||
270 | - return deferred.promise; | ||
271 | - } | ||
272 | - | ||
273 | function deleteDevice(deviceId) { | 175 | function deleteDevice(deviceId) { |
274 | var deferred = $q.defer(); | 176 | var deferred = $q.defer(); |
275 | var url = '/api/device/' + deviceId; | 177 | var url = '/api/device/' + deviceId; |
@@ -38,6 +38,7 @@ function EntityService($http, $q, $filter, $translate, $log, userService, device | @@ -38,6 +38,7 @@ function EntityService($http, $q, $filter, $translate, $log, userService, device | ||
38 | createAlarmSourceFromSubscriptionInfo: createAlarmSourceFromSubscriptionInfo, | 38 | createAlarmSourceFromSubscriptionInfo: createAlarmSourceFromSubscriptionInfo, |
39 | getRelatedEntities: getRelatedEntities, | 39 | getRelatedEntities: getRelatedEntities, |
40 | saveRelatedEntity: saveRelatedEntity, | 40 | saveRelatedEntity: saveRelatedEntity, |
41 | + saveEntityParameters: saveEntityParameters, | ||
41 | getRelatedEntity: getRelatedEntity, | 42 | getRelatedEntity: getRelatedEntity, |
42 | deleteRelatedEntity: deleteRelatedEntity, | 43 | deleteRelatedEntity: deleteRelatedEntity, |
43 | moveEntity: moveEntity, | 44 | moveEntity: moveEntity, |
@@ -1072,6 +1073,123 @@ function EntityService($http, $q, $filter, $translate, $log, userService, device | @@ -1072,6 +1073,123 @@ function EntityService($http, $q, $filter, $translate, $log, userService, device | ||
1072 | return deferred.promise; | 1073 | return deferred.promise; |
1073 | } | 1074 | } |
1074 | 1075 | ||
1076 | + function saveEntityRelarion(entityType, entityId, entityRelation, config) { | ||
1077 | + const deferred = $q.defer(); | ||
1078 | + let attributesType = Object.keys(types.attributesScope); | ||
1079 | + let allPromise = []; | ||
1080 | + let promise = ""; | ||
1081 | + if (entityRelation.accessToken !== "") { | ||
1082 | + promise = deviceService.getDeviceCredentials(entityId.id, null, config).then(function (response) { | ||
1083 | + response.credentialsId = entityRelation.accessToken; | ||
1084 | + response.credentialsType = "ACCESS_TOKEN"; | ||
1085 | + response.credentialsValue = null; | ||
1086 | + return deviceService.saveDeviceCredentials(response, config).catch(function () { | ||
1087 | + return "error"; | ||
1088 | + }); | ||
1089 | + }); | ||
1090 | + allPromise.push(promise) | ||
1091 | + } | ||
1092 | + for (let i = 0; i < attributesType.length; i++) { | ||
1093 | + let attribute = attributesType[i]; | ||
1094 | + if (entityRelation.attributes[attribute] && entityRelation.attributes[attribute].length !== 0) { | ||
1095 | + promise = attributeService.saveEntityAttributes(entityType, entityId.id, types.attributesScope[attribute].value, entityRelation.attributes[attribute], config).catch(function () { | ||
1096 | + return "error"; | ||
1097 | + }); | ||
1098 | + allPromise.push(promise); | ||
1099 | + } | ||
1100 | + } | ||
1101 | + if (entityRelation.timeseries.length !== 0) { | ||
1102 | + promise = attributeService.saveEntityTimeseries(entityType, entityId.id, "time", entityRelation.timeseries, config).catch(function(){ | ||
1103 | + return "error"; | ||
1104 | + }); | ||
1105 | + allPromise.push(promise); | ||
1106 | + } | ||
1107 | + $q.all(allPromise).then(function success(response) { | ||
1108 | + let isResponseHasError = false; | ||
1109 | + for(let i = 0; i < response.length; i++){ | ||
1110 | + if(response[i] === "error"){ | ||
1111 | + isResponseHasError = true; | ||
1112 | + break; | ||
1113 | + } | ||
1114 | + } | ||
1115 | + if (isResponseHasError){ | ||
1116 | + deferred.reject(); | ||
1117 | + } else { | ||
1118 | + deferred.resolve(); | ||
1119 | + } | ||
1120 | + }); | ||
1121 | + return deferred.promise; | ||
1122 | + } | ||
1123 | + | ||
1124 | + function saveEntityParameters(entityType, entityParameters, update, config) { | ||
1125 | + config = config || {}; | ||
1126 | + const deferred = $q.defer(); | ||
1127 | + let statisticalInfo = {}; | ||
1128 | + let newEntity = { | ||
1129 | + name: entityParameters.name, | ||
1130 | + type: entityParameters.type | ||
1131 | + }; | ||
1132 | + let promise; | ||
1133 | + switch (entityType) { | ||
1134 | + case types.entityType.device: | ||
1135 | + promise = deviceService.saveDevice(newEntity, config); | ||
1136 | + break; | ||
1137 | + case types.entityType.asset: | ||
1138 | + promise = assetService.saveAsset(newEntity, true, config); | ||
1139 | + break; | ||
1140 | + } | ||
1141 | + | ||
1142 | + promise.then(function success(response) { | ||
1143 | + saveEntityRelarion(entityType, response.id, entityParameters, config).then(function success() { | ||
1144 | + statisticalInfo.create = { | ||
1145 | + entity: 1 | ||
1146 | + }; | ||
1147 | + deferred.resolve(statisticalInfo); | ||
1148 | + }, function fail() { | ||
1149 | + statisticalInfo.error = { | ||
1150 | + entity: 1 | ||
1151 | + }; | ||
1152 | + deferred.resolve(statisticalInfo); | ||
1153 | + }); | ||
1154 | + }, function fail() { | ||
1155 | + if (update) { | ||
1156 | + let findIdEntity; | ||
1157 | + switch (entityType) { | ||
1158 | + case types.entityType.device: | ||
1159 | + findIdEntity = deviceService.findByName(entityParameters.name, config); | ||
1160 | + break; | ||
1161 | + case types.entityType.asset: | ||
1162 | + findIdEntity = assetService.findByName(entityParameters.name, config); | ||
1163 | + break; | ||
1164 | + } | ||
1165 | + findIdEntity.then(function success(response) { | ||
1166 | + saveEntityRelarion(response.id, entityType, entityParameters, config).then(function success() { | ||
1167 | + statisticalInfo.update = { | ||
1168 | + entity: 1 | ||
1169 | + }; | ||
1170 | + deferred.resolve(statisticalInfo); | ||
1171 | + }, function fail() { | ||
1172 | + statisticalInfo.error = { | ||
1173 | + entity: 1 | ||
1174 | + }; | ||
1175 | + deferred.resolve(statisticalInfo); | ||
1176 | + }); | ||
1177 | + }, function fail() { | ||
1178 | + statisticalInfo.error = { | ||
1179 | + entity: 1 | ||
1180 | + }; | ||
1181 | + deferred.resolve(statisticalInfo); | ||
1182 | + }); | ||
1183 | + } else { | ||
1184 | + statisticalInfo.error = { | ||
1185 | + entity: 1 | ||
1186 | + }; | ||
1187 | + deferred.resolve(statisticalInfo); | ||
1188 | + } | ||
1189 | + }); | ||
1190 | + return deferred.promise; | ||
1191 | + } | ||
1192 | + | ||
1075 | function getRelatedEntity(entityId, keys, typeTranslatePrefix) { | 1193 | function getRelatedEntity(entityId, keys, typeTranslatePrefix) { |
1076 | var deferred = $q.defer(); | 1194 | var deferred = $q.defer(); |
1077 | getEntityPromise(entityId.entityType, entityId.id, {ignoreLoading: true}).then( | 1195 | getEntityPromise(entityId.entityType, entityId.id, {ignoreLoading: true}).then( |
@@ -48,7 +48,7 @@ export function AssetCardController(types) { | @@ -48,7 +48,7 @@ export function AssetCardController(types) { | ||
48 | 48 | ||
49 | /*@ngInject*/ | 49 | /*@ngInject*/ |
50 | export function AssetController($rootScope, userService, assetService, customerService, $state, $stateParams, | 50 | export function AssetController($rootScope, userService, assetService, customerService, $state, $stateParams, |
51 | - $document, $mdDialog, $q, $translate, types) { | 51 | + $document, $mdDialog, $q, $translate, types, importExport) { |
52 | 52 | ||
53 | var customerId = $stateParams.customerId; | 53 | var customerId = $stateParams.customerId; |
54 | 54 | ||
@@ -56,6 +56,29 @@ export function AssetController($rootScope, userService, assetService, customerS | @@ -56,6 +56,29 @@ export function AssetController($rootScope, userService, assetService, customerS | ||
56 | 56 | ||
57 | var assetGroupActionsList = []; | 57 | var assetGroupActionsList = []; |
58 | 58 | ||
59 | + var assetAddItemActionsList = [ | ||
60 | + { | ||
61 | + onAction: function ($event) { | ||
62 | + vm.grid.addItem($event); | ||
63 | + }, | ||
64 | + name: function() { return $translate.instant('action.add') }, | ||
65 | + details: function() { return $translate.instant('asset.add-asset-text') }, | ||
66 | + icon: "insert_drive_file" | ||
67 | + }, | ||
68 | + { | ||
69 | + onAction: function ($event) { | ||
70 | + importExport.importEntities($event, types.entityType.asset).then( | ||
71 | + function() { | ||
72 | + vm.grid.refreshList(); | ||
73 | + } | ||
74 | + ); | ||
75 | + }, | ||
76 | + name: function() { return $translate.instant('action.import') }, | ||
77 | + details: function() { return $translate.instant('asset.import') }, | ||
78 | + icon: "file_upload" | ||
79 | + } | ||
80 | + ]; | ||
81 | + | ||
59 | var vm = this; | 82 | var vm = this; |
60 | 83 | ||
61 | vm.types = types; | 84 | vm.types = types; |
@@ -77,6 +100,7 @@ export function AssetController($rootScope, userService, assetService, customerS | @@ -77,6 +100,7 @@ export function AssetController($rootScope, userService, assetService, customerS | ||
77 | 100 | ||
78 | actionsList: assetActionsList, | 101 | actionsList: assetActionsList, |
79 | groupActionsList: assetGroupActionsList, | 102 | groupActionsList: assetGroupActionsList, |
103 | + addItemActions: assetAddItemActionsList, | ||
80 | 104 | ||
81 | onGridInited: gridInited, | 105 | onGridInited: gridInited, |
82 | 106 | ||
@@ -294,6 +318,8 @@ export function AssetController($rootScope, userService, assetService, customerS | @@ -294,6 +318,8 @@ export function AssetController($rootScope, userService, assetService, customerS | ||
294 | } else if (vm.assetsScope === 'customer_user') { | 318 | } else if (vm.assetsScope === 'customer_user') { |
295 | vm.assetGridConfig.addItemAction = {}; | 319 | vm.assetGridConfig.addItemAction = {}; |
296 | } | 320 | } |
321 | + vm.assetGridConfig.addItemActions = []; | ||
322 | + | ||
297 | } | 323 | } |
298 | 324 | ||
299 | vm.assetGridConfig.refreshParamsFunc = refreshAssetsParamsFunction; | 325 | vm.assetGridConfig.refreshParamsFunc = refreshAssetsParamsFunction; |
@@ -350,48 +350,82 @@ export default angular.module('thingsboard.types', []) | @@ -350,48 +350,82 @@ export default angular.module('thingsboard.types', []) | ||
350 | rulenode: "RULE_NODE", | 350 | rulenode: "RULE_NODE", |
351 | entityView: "ENTITY_VIEW" | 351 | entityView: "ENTITY_VIEW" |
352 | }, | 352 | }, |
353 | - entityGroup: { | ||
354 | - columnType: { | ||
355 | - clientAttribute: { | ||
356 | - name: 'entity-group.column-type.client-attribute', | ||
357 | - value: 'CLIENT_ATTRIBUTE' | ||
358 | - }, | ||
359 | - sharedAttribute: { | ||
360 | - name: 'entity-group.column-type.shared-attribute', | ||
361 | - value: 'SHARED_ATTRIBUTE' | ||
362 | - }, | ||
363 | - serverAttribute: { | ||
364 | - name: 'entity-group.column-type.server-attribute', | ||
365 | - value: 'SERVER_ATTRIBUTE' | ||
366 | - }, | ||
367 | - timeseries: { | ||
368 | - name: 'entity-group.column-type.timeseries', | ||
369 | - value: 'TIMESERIES' | ||
370 | - }, | ||
371 | - entityField: { | ||
372 | - name: 'entity-group.column-type.entity-field', | ||
373 | - value: 'ENTITY_FIELD' | ||
374 | - }, | ||
375 | - accessToken: { | ||
376 | - name: 'entity-group.column-type.access-token', | ||
377 | - value: 'ACCESS_TOKEN' | ||
378 | - } | 353 | + importEntityColumnType: { |
354 | + name: { | ||
355 | + name: 'entity-group.entity-field.name', | ||
356 | + value: 'name' | ||
357 | + }, | ||
358 | + type: { | ||
359 | + name: 'entity-group.entity-field.type', | ||
360 | + value: 'type' | ||
361 | + }, | ||
362 | + clientAttribute: { | ||
363 | + name: 'entity-group.column-type.client-attribute', | ||
364 | + value: 'CLIENT_ATTRIBUTE' | ||
365 | + }, | ||
366 | + sharedAttribute: { | ||
367 | + name: 'entity-group.column-type.shared-attribute', | ||
368 | + value: 'SHARED_ATTRIBUTE' | ||
369 | + }, | ||
370 | + serverAttribute: { | ||
371 | + name: 'entity-group.column-type.server-attribute', | ||
372 | + value: 'SERVER_ATTRIBUTE' | ||
373 | + }, | ||
374 | + timeseries: { | ||
375 | + name: 'entity-group.column-type.timeseries', | ||
376 | + value: 'TIMESERIES' | ||
379 | }, | 377 | }, |
380 | entityField: { | 378 | entityField: { |
381 | - name: { | ||
382 | - name: 'entity-group.entity-field.name', | ||
383 | - value: 'name' | ||
384 | - }, | ||
385 | - type: { | ||
386 | - name: 'entity-group.entity-field.type', | ||
387 | - value: 'type' | ||
388 | - }, | ||
389 | - assigned_customer: { | ||
390 | - name: 'entity-group.entity-field.assigned_customer', | ||
391 | - value: 'assigned_customer' | ||
392 | - } | 379 | + name: 'entity-group.column-type.entity-field', |
380 | + value: 'ENTITY_FIELD' | ||
381 | + }, | ||
382 | + accessToken: { | ||
383 | + name: 'entity-group.column-type.access-token', | ||
384 | + value: 'ACCESS_TOKEN' | ||
393 | } | 385 | } |
394 | }, | 386 | }, |
387 | + // entityGroup: { | ||
388 | + // columnType: { | ||
389 | + // clientAttribute: { | ||
390 | + // name: 'entity-group.column-type.client-attribute', | ||
391 | + // value: 'CLIENT_ATTRIBUTE' | ||
392 | + // }, | ||
393 | + // sharedAttribute: { | ||
394 | + // name: 'entity-group.column-type.shared-attribute', | ||
395 | + // value: 'SHARED_ATTRIBUTE' | ||
396 | + // }, | ||
397 | + // serverAttribute: { | ||
398 | + // name: 'entity-group.column-type.server-attribute', | ||
399 | + // value: 'SERVER_ATTRIBUTE' | ||
400 | + // }, | ||
401 | + // timeseries: { | ||
402 | + // name: 'entity-group.column-type.timeseries', | ||
403 | + // value: 'TIMESERIES' | ||
404 | + // }, | ||
405 | + // entityField: { | ||
406 | + // name: 'entity-group.column-type.entity-field', | ||
407 | + // value: 'ENTITY_FIELD' | ||
408 | + // }, | ||
409 | + // accessToken: { | ||
410 | + // name: 'entity-group.column-type.access-token', | ||
411 | + // value: 'ACCESS_TOKEN' | ||
412 | + // } | ||
413 | + // }, | ||
414 | + // entityField: { | ||
415 | + // name: { | ||
416 | + // name: 'entity-group.entity-field.name', | ||
417 | + // value: 'name' | ||
418 | + // }, | ||
419 | + // type: { | ||
420 | + // name: 'entity-group.entity-field.type', | ||
421 | + // value: 'type' | ||
422 | + // }, | ||
423 | + // assigned_customer: { | ||
424 | + // name: 'entity-group.entity-field.assigned_customer', | ||
425 | + // value: 'assigned_customer' | ||
426 | + // } | ||
427 | + // } | ||
428 | + // }, | ||
395 | aliasEntityType: { | 429 | aliasEntityType: { |
396 | current_customer: "CURRENT_CUSTOMER" | 430 | current_customer: "CURRENT_CUSTOMER" |
397 | }, | 431 | }, |
@@ -68,7 +68,7 @@ export function DeviceController($rootScope, userService, deviceService, custome | @@ -68,7 +68,7 @@ export function DeviceController($rootScope, userService, deviceService, custome | ||
68 | }, | 68 | }, |
69 | { | 69 | { |
70 | onAction: function ($event) { | 70 | onAction: function ($event) { |
71 | - importExport.importDevices($event, types.entityType.device).then( | 71 | + importExport.importEntities($event, types.entityType.device).then( |
72 | function() { | 72 | function() { |
73 | vm.grid.refreshList(); | 73 | vm.grid.refreshList(); |
74 | } | 74 | } |
@@ -337,8 +337,6 @@ export function DeviceController($rootScope, userService, deviceService, custome | @@ -337,8 +337,6 @@ export function DeviceController($rootScope, userService, deviceService, custome | ||
337 | icon: "add" | 337 | icon: "add" |
338 | }; | 338 | }; |
339 | 339 | ||
340 | - vm.deviceGridConfig.addItemActions = []; | ||
341 | - | ||
342 | } else if (vm.devicesScope === 'customer_user') { | 340 | } else if (vm.devicesScope === 'customer_user') { |
343 | deviceActionsList.push( | 341 | deviceActionsList.push( |
344 | { | 342 | { |
@@ -352,8 +350,9 @@ export function DeviceController($rootScope, userService, deviceService, custome | @@ -352,8 +350,9 @@ export function DeviceController($rootScope, userService, deviceService, custome | ||
352 | ); | 350 | ); |
353 | 351 | ||
354 | vm.deviceGridConfig.addItemAction = {}; | 352 | vm.deviceGridConfig.addItemAction = {}; |
355 | - vm.deviceGridConfig.addItemActions = []; | ||
356 | } | 353 | } |
354 | + vm.deviceGridConfig.addItemActions = []; | ||
355 | + | ||
357 | } | 356 | } |
358 | 357 | ||
359 | vm.deviceGridConfig.refreshParamsFunc = refreshDevicesParamsFunction; | 358 | vm.deviceGridConfig.refreshParamsFunc = refreshDevicesParamsFunction; |
@@ -101,13 +101,13 @@ export default function ImportDialogCsvController($scope, $mdDialog, toast, impo | @@ -101,13 +101,13 @@ export default function ImportDialogCsvController($scope, $mdDialog, toast, impo | ||
101 | for (var i = 0; i < parseData.headers.length; i++) { | 101 | for (var i = 0; i < parseData.headers.length; i++) { |
102 | if (vm.importParameters.isHeader && parseData.headers[i].search(/^(name|type)$/im) === 0) { | 102 | if (vm.importParameters.isHeader && parseData.headers[i].search(/^(name|type)$/im) === 0) { |
103 | columnParam = { | 103 | columnParam = { |
104 | - type: types.entityGroup.columnType.entityField.value, | 104 | + type: types.importEntityColumnType.entityField.value, |
105 | key: parseData.headers[i].toLowerCase(), | 105 | key: parseData.headers[i].toLowerCase(), |
106 | sampleData: parseData.rows[0][i] | 106 | sampleData: parseData.rows[0][i] |
107 | }; | 107 | }; |
108 | } else { | 108 | } else { |
109 | columnParam = { | 109 | columnParam = { |
110 | - type: types.entityGroup.columnType.serverAttribute.value, | 110 | + type: types.importEntityColumnType.serverAttribute.value, |
111 | key: vm.importParameters.isHeader ? parseData.headers[i] : "", | 111 | key: vm.importParameters.isHeader ? parseData.headers[i] : "", |
112 | sampleData: parseData.rows[0][i] | 112 | sampleData: parseData.rows[0][i] |
113 | }; | 113 | }; |
@@ -137,36 +137,32 @@ export default function ImportDialogCsvController($scope, $mdDialog, toast, impo | @@ -137,36 +137,32 @@ export default function ImportDialogCsvController($scope, $mdDialog, toast, impo | ||
137 | }; | 137 | }; |
138 | for (var j = 0; j < parameterColumns.length; j++) { | 138 | for (var j = 0; j < parameterColumns.length; j++) { |
139 | switch (parameterColumns[j].type) { | 139 | switch (parameterColumns[j].type) { |
140 | - case types.entityGroup.columnType.serverAttribute.value: | 140 | + case types.importEntityColumnType.serverAttribute.value: |
141 | entityData.attributes.server.push({ | 141 | entityData.attributes.server.push({ |
142 | key: parameterColumns[j].key, | 142 | key: parameterColumns[j].key, |
143 | value: importData.rows[i][j] | 143 | value: importData.rows[i][j] |
144 | }); | 144 | }); |
145 | break; | 145 | break; |
146 | - case types.entityGroup.columnType.sharedAttribute.value: | 146 | + case types.importEntityColumnType.sharedAttribute.value: |
147 | entityData.attributes.shared.push({ | 147 | entityData.attributes.shared.push({ |
148 | key: parameterColumns[j].key, | 148 | key: parameterColumns[j].key, |
149 | value: importData.rows[i][j] | 149 | value: importData.rows[i][j] |
150 | }); | 150 | }); |
151 | break; | 151 | break; |
152 | - case types.entityGroup.columnType.timeseries.value: | 152 | + case types.importEntityColumnType.timeseries.value: |
153 | entityData.timeseries.push({ | 153 | entityData.timeseries.push({ |
154 | key: parameterColumns[j].key, | 154 | key: parameterColumns[j].key, |
155 | value: importData.rows[i][j] | 155 | value: importData.rows[i][j] |
156 | }); | 156 | }); |
157 | break; | 157 | break; |
158 | - case types.entityGroup.columnType.accessToken.value: | 158 | + case types.importEntityColumnType.accessToken.value: |
159 | entityData.accessToken = importData.rows[i][j]; | 159 | entityData.accessToken = importData.rows[i][j]; |
160 | break; | 160 | break; |
161 | - case types.entityGroup.columnType.entityField.value: | ||
162 | - switch (parameterColumns[j].key) { | ||
163 | - case types.entityGroup.entityField.name.value: | ||
164 | - entityData.name = importData.rows[i][j]; | ||
165 | - break; | ||
166 | - case types.entityGroup.entityField.type.value: | ||
167 | - entityData.type = importData.rows[i][j]; | ||
168 | - break; | ||
169 | - } | 161 | + case types.importEntityColumnType.name.value: |
162 | + entityData.name = importData.rows[i][j]; | ||
163 | + break; | ||
164 | + case types.importEntityColumnType.type.value: | ||
165 | + entityData.type = importData.rows[i][j]; | ||
170 | break; | 166 | break; |
171 | } | 167 | } |
172 | } | 168 | } |
@@ -147,16 +147,13 @@ | @@ -147,16 +147,13 @@ | ||
147 | <md-step md-label="Done"> | 147 | <md-step md-label="Done"> |
148 | <md-step-body layout="column"> | 148 | <md-step-body layout="column"> |
149 | <div> | 149 | <div> |
150 | - <p class="md-body-1" ng-if="vm.statistical.create && vm.statistical.create.device">{{vm.statistical.create.device}} new devices were successfully created.</p> | ||
151 | - <p class="md-body-1" ng-if="vm.statistical.update && vm.statistical.update.device">{{vm.statistical.update.device}} devices were successfully updated.</p> | ||
152 | - <p class="md-body-1" ng-if="vm.statistical.error && vm.statistical.error.device">There was an error creating {{vm.statistical.error.device}} devices.</p> | 150 | + <p class="md-body-1" ng-if="vm.statistical.create && vm.statistical.create.device">{{vm.statistical.create.entity}} new entities were successfully created.</p> |
151 | + <p class="md-body-1" ng-if="vm.statistical.update && vm.statistical.update.device">{{vm.statistical.update.entity}} entities were successfully updated.</p> | ||
152 | + <p class="md-body-1" ng-if="vm.statistical.error && vm.statistical.error.device">There was an error creating {{vm.statistical.error.entity}} entities.</p> | ||
153 | </div> | 153 | </div> |
154 | </md-step-body> | 154 | </md-step-body> |
155 | <md-step-actions layout="row"> | 155 | <md-step-actions layout="row"> |
156 | <span flex></span> | 156 | <span flex></span> |
157 | - <!--<md-button ng-disabled="$root.loading" ng-click="vm.cancel()">--> | ||
158 | - <!--{{ 'action.cancel' | translate }}--> | ||
159 | - <!--</md-button>--> | ||
160 | <md-button class="md-primary md-raised" ng-disabled="$root.loading" ng-click="vm.finishExport();"> | 157 | <md-button class="md-primary md-raised" ng-disabled="$root.loading" ng-click="vm.finishExport();"> |
161 | Ok | 158 | Ok |
162 | </md-button> | 159 | </md-button> |
@@ -13,7 +13,7 @@ | @@ -13,7 +13,7 @@ | ||
13 | * See the License for the specific language governing permissions and | 13 | * See the License for the specific language governing permissions and |
14 | * limitations under the License. | 14 | * limitations under the License. |
15 | */ | 15 | */ |
16 | -/* eslint-disable import/no-unresolved, import/default */ | 16 | +/* eslint-disable import/no-unresolved, import/default*/ |
17 | 17 | ||
18 | import importDialogTemplate from './import-dialog.tpl.html'; | 18 | import importDialogTemplate from './import-dialog.tpl.html'; |
19 | import importDialogCSVTemplate from './import-dialog-csv.tpl.html'; | 19 | import importDialogCSVTemplate from './import-dialog-csv.tpl.html'; |
@@ -25,7 +25,7 @@ import entityAliasesTemplate from '../entity/alias/entity-aliases.tpl.html'; | @@ -25,7 +25,7 @@ import entityAliasesTemplate from '../entity/alias/entity-aliases.tpl.html'; | ||
25 | /* eslint-disable no-undef, angular/window-service, angular/document-service */ | 25 | /* eslint-disable no-undef, angular/window-service, angular/document-service */ |
26 | 26 | ||
27 | /*@ngInject*/ | 27 | /*@ngInject*/ |
28 | -export default function ImportExport($log, $translate, $q, $mdDialog, $document, $http, itembuffer, utils, types, $timeout, deviceService, $rootScope, | 28 | +export default function ImportExport($log, $translate, $q, $mdDialog, $document, $http, itembuffer, utils, types, $rootScope, |
29 | dashboardUtils, entityService, dashboardService, ruleChainService, widgetService, toast, attributeService) { | 29 | dashboardUtils, entityService, dashboardService, ruleChainService, widgetService, toast, attributeService) { |
30 | 30 | ||
31 | 31 | ||
@@ -42,7 +42,7 @@ export default function ImportExport($log, $translate, $q, $mdDialog, $document, | @@ -42,7 +42,7 @@ export default function ImportExport($log, $translate, $q, $mdDialog, $document, | ||
42 | importWidgetsBundle: importWidgetsBundle, | 42 | importWidgetsBundle: importWidgetsBundle, |
43 | exportExtension: exportExtension, | 43 | exportExtension: exportExtension, |
44 | importExtension: importExtension, | 44 | importExtension: importExtension, |
45 | - importDevices: importDevices, | 45 | + importEntities: importEntities, |
46 | convertCSVToJson: convertCSVToJson, | 46 | convertCSVToJson: convertCSVToJson, |
47 | exportToPc: exportToPc, | 47 | exportToPc: exportToPc, |
48 | createMultiEntity: createMultiEntity | 48 | createMultiEntity: createMultiEntity |
@@ -578,17 +578,32 @@ export default function ImportExport($log, $translate, $q, $mdDialog, $document, | @@ -578,17 +578,32 @@ export default function ImportExport($log, $translate, $q, $mdDialog, $document, | ||
578 | return deferred.promise; | 578 | return deferred.promise; |
579 | } | 579 | } |
580 | 580 | ||
581 | - function importDevices($event, entityType) { | 581 | + function importEntities($event, entityType) { |
582 | var deferred = $q.defer(); | 582 | var deferred = $q.defer(); |
583 | - openImportDialogCSV($event, entityType,'device.import', 'device.device-file').then( | ||
584 | - function success() { | ||
585 | - deferred.resolve(); | ||
586 | - }, | ||
587 | - function fail() { | ||
588 | - deferred.reject(); | ||
589 | - } | ||
590 | - ); | ||
591 | - return deferred.promise; | 583 | + |
584 | + switch (entityType) { | ||
585 | + case types.entityType.device: | ||
586 | + openImportDialogCSV($event, entityType, 'device.import', 'device.device-file').then( | ||
587 | + function success() { | ||
588 | + deferred.resolve(); | ||
589 | + }, | ||
590 | + function fail() { | ||
591 | + deferred.reject(); | ||
592 | + } | ||
593 | + ); | ||
594 | + return deferred.promise; | ||
595 | + case types.entityType.asset: | ||
596 | + openImportDialogCSV($event, entityType, 'asset.import', 'asset.asset-file').then( | ||
597 | + function success() { | ||
598 | + deferred.resolve(); | ||
599 | + }, | ||
600 | + function fail() { | ||
601 | + deferred.reject(); | ||
602 | + } | ||
603 | + ); | ||
604 | + return deferred.promise; | ||
605 | + } | ||
606 | + | ||
592 | } | 607 | } |
593 | 608 | ||
594 | function saveImportedDashboard(dashboard, deferred) { | 609 | function saveImportedDashboard(dashboard, deferred) { |
@@ -843,14 +858,12 @@ export default function ImportExport($log, $translate, $q, $mdDialog, $document, | @@ -843,14 +858,12 @@ export default function ImportExport($log, $translate, $q, $mdDialog, $document, | ||
843 | let allPromise = []; | 858 | let allPromise = []; |
844 | let statisticalInfo = {}; | 859 | let statisticalInfo = {}; |
845 | let deferred = $q.defer(); | 860 | let deferred = $q.defer(); |
846 | - switch (entityType) { | ||
847 | - case types.entityType.device: | ||
848 | - for(let i = 0; i < partSize; i++){ | ||
849 | - const promise = deviceService.saveDeviceParameters(arrayData[i], updateData, config); | ||
850 | - allPromise.push(promise); | ||
851 | - } | ||
852 | - break; | 861 | + |
862 | + for(let i = 0; i < partSize; i++){ | ||
863 | + const promise = entityService.saveEntityParameters(entityType, arrayData[i], updateData, config); | ||
864 | + allPromise.push(promise); | ||
853 | } | 865 | } |
866 | + | ||
854 | qAllWithProgress(allPromise).then(function success(response) { | 867 | qAllWithProgress(allPromise).then(function success(response) { |
855 | for (let i = 0; i < response.length; i++){ | 868 | for (let i = 0; i < response.length; i++){ |
856 | statisticalInfo = sumObject(statisticalInfo, response[i]); | 869 | statisticalInfo = sumObject(statisticalInfo, response[i]); |
@@ -38,59 +38,66 @@ export default function TableColumnsAssignment() { | @@ -38,59 +38,66 @@ export default function TableColumnsAssignment() { | ||
38 | } | 38 | } |
39 | 39 | ||
40 | /*@ngInject*/ | 40 | /*@ngInject*/ |
41 | -function TableColumnsAssignmentController($scope, types, $timeout) { | 41 | +function TableColumnsAssignmentController($scope, types) { |
42 | var vm = this; | 42 | var vm = this; |
43 | 43 | ||
44 | vm.columnTypes = {}; | 44 | vm.columnTypes = {}; |
45 | - vm.entityField = {}; | ||
46 | 45 | ||
47 | - switch (vm.entityType) { | ||
48 | - case types.entityType.device: | ||
49 | - vm.columnTypes.sharedAttribute = types.entityGroup.columnType.sharedAttribute; | ||
50 | - vm.columnTypes.serverAttribute = types.entityGroup.columnType.serverAttribute; | ||
51 | - vm.columnTypes.timeseries = types.entityGroup.columnType.timeseries; | ||
52 | - vm.columnTypes.entityField = types.entityGroup.columnType.entityField; | ||
53 | - vm.columnTypes.accessToken = types.entityGroup.columnType.accessToken; | ||
54 | - break; | ||
55 | - } | ||
56 | - | ||
57 | - vm.entityField.name = types.entityGroup.entityField.name; | 46 | + vm.columnTypes.name = types.importEntityColumnType.name; |
47 | + vm.columnTypes.type = types.importEntityColumnType.type; | ||
58 | 48 | ||
59 | switch (vm.entityType) { | 49 | switch (vm.entityType) { |
60 | case types.entityType.device: | 50 | case types.entityType.device: |
61 | - vm.entityField.type = types.entityGroup.entityField.type; | ||
62 | - // vm.entityField.assigned_customer = types.entityGroup.entityField.assigned_customer; | 51 | + vm.columnTypes.sharedAttribute = types.importEntityColumnType.sharedAttribute; |
52 | + vm.columnTypes.serverAttribute = types.importEntityColumnType.serverAttribute; | ||
53 | + vm.columnTypes.timeseries = types.importEntityColumnType.timeseries; | ||
54 | + vm.columnTypes.accessToken = types.importEntityColumnType.accessToken; | ||
55 | + break; | ||
56 | + case types.entityType.asset: | ||
57 | + vm.columnTypes.serverAttribute = types.importEntityColumnType.serverAttribute; | ||
58 | + vm.columnTypes.timeseries = types.importEntityColumnType.timeseries; | ||
63 | break; | 59 | break; |
64 | } | 60 | } |
65 | 61 | ||
66 | - $scope.$watch('vm.columns', function(newVal){ | ||
67 | - if (newVal) { | ||
68 | - var isSelectName = false; | ||
69 | - var isSelectType = false; | ||
70 | - var isSelectCredentials = false; | ||
71 | - for (var i = 0; i < newVal.length; i++) { | ||
72 | - if (newVal[i].type === types.entityGroup.columnType.entityField.value && | ||
73 | - newVal[i].key === types.entityGroup.entityField.name.value) { | ||
74 | - isSelectName = true; | ||
75 | - } | ||
76 | - if (newVal[i].type === types.entityGroup.columnType.entityField.value && | ||
77 | - newVal[i].key === types.entityGroup.entityField.type.value) { | ||
78 | - isSelectType = true; | ||
79 | - } | ||
80 | - if (newVal[i].type === types.entityGroup.columnType.accessToken.value) { | ||
81 | - isSelectCredentials = true; | ||
82 | - } | ||
83 | - } | ||
84 | - $timeout(function () { | ||
85 | - vm.entityField.name.disable = isSelectName; | ||
86 | - vm.entityField.type.disable = isSelectType; | ||
87 | - vm.columnTypes.accessToken.disable = isSelectCredentials; | ||
88 | - }); | ||
89 | - if(isSelectName && isSelectType) { | ||
90 | - vm.theForm.$setDirty(); | ||
91 | - } else { | ||
92 | - vm.theForm.$setPristine(); | ||
93 | - } | ||
94 | - } | ||
95 | - }, true); | 62 | + // switch (vm.entityType) { |
63 | + // case types.entityType.device: | ||
64 | + // vm.entityField.type = types.entityGroup.entityField.type; | ||
65 | + // // vm.entityField.assigned_customer = types.entityGroup.entityField.assigned_customer; | ||
66 | + // break; | ||
67 | + // case types.entityType.asset: | ||
68 | + // vm.entityField.type = types.entityGroup.entityField.type; | ||
69 | + // // vm.entityField.assigned_customer = types.entityGroup.entityField.assigned_customer; | ||
70 | + // break; | ||
71 | + // } | ||
72 | + | ||
73 | + // $scope.$watch('vm.columns', function(newVal){ | ||
74 | + // if (newVal) { | ||
75 | + // var isSelectName = false; | ||
76 | + // var isSelectType = false; | ||
77 | + // // var isSelectCredentials = false; | ||
78 | + // for (var i = 0; i < newVal.length; i++) { | ||
79 | + // if (newVal[i].type === types.importEntityColumnType.entityField.value && | ||
80 | + // newVal[i].key === types.entityGroup.entityField.name.value) { | ||
81 | + // isSelectName = true; | ||
82 | + // } | ||
83 | + // if (newVal[i].type === types.importEntityColumnType.entityField.value && | ||
84 | + // newVal[i].key === types.entityGroup.entityField.type.value) { | ||
85 | + // isSelectType = true; | ||
86 | + // } | ||
87 | + // // if (newVal[i].type === types.entityGroup.columnType.accessToken.value) { | ||
88 | + // // isSelectCredentials = true; | ||
89 | + // // } | ||
90 | + // } | ||
91 | + // $timeout(function () { | ||
92 | + // vm.entityField.name.disable = isSelectName; | ||
93 | + // vm.entityField.type.disable = isSelectType; | ||
94 | + // // vm.columnTypes.accessToken.disable = isSelectCredentials; | ||
95 | + // }); | ||
96 | + // if(isSelectName && isSelectType) { | ||
97 | + // vm.theForm.$setDirty(); | ||
98 | + // } else { | ||
99 | + // vm.theForm.$setPristine(); | ||
100 | + // } | ||
101 | + // } | ||
102 | + // }, true); | ||
96 | } | 103 | } |
@@ -246,7 +246,9 @@ | @@ -246,7 +246,9 @@ | ||
246 | "select-asset": "Select asset", | 246 | "select-asset": "Select asset", |
247 | "no-assets-matching": "No assets matching '{{entity}}' were found.", | 247 | "no-assets-matching": "No assets matching '{{entity}}' were found.", |
248 | "asset-required": "Asset is required", | 248 | "asset-required": "Asset is required", |
249 | - "name-starts-with": "Asset name starts with" | 249 | + "name-starts-with": "Asset name starts with", |
250 | + "import": "Import assets", | ||
251 | + "asset-file": "Asset file" | ||
250 | }, | 252 | }, |
251 | "attribute": { | 253 | "attribute": { |
252 | "attributes": "Attributes", | 254 | "attributes": "Attributes", |