Browse Source

TB-61: Update import/export

pull/164/head
Igor Kulikov 9 years ago
parent
commit
75351e356a
  1. 31
      ui/src/app/api/alias-controller.js
  2. 106
      ui/src/app/api/entity.service.js
  3. 27
      ui/src/app/api/subscription.js
  4. 9
      ui/src/app/common/dashboard-utils.service.js
  5. 25
      ui/src/app/components/widget.controller.js
  6. 2
      ui/src/app/dashboard/dashboard.controller.js
  7. 17
      ui/src/app/entity/attribute/add-widget-to-dashboard-dialog.controller.js
  8. 2
      ui/src/app/entity/entity-filter-dialog.controller.js
  9. 66
      ui/src/app/import-export/import-export.service.js
  10. 22
      ui/src/app/services/item-buffer.service.js

31
ui/src/app/api/alias-controller.js

@ -96,6 +96,7 @@ export default class AliasController {
function success(aliasInfo) {
aliasCtrl.resolvedAliases[aliasId] = aliasInfo;
if (entityAlias.filter.stateEntity) {
aliasInfo.stateEntity = true;
aliasCtrl.resolvedAliasesToStateEntities[aliasId] =
aliasCtrl.stateController.getStateParams().entityId;
}
@ -120,12 +121,13 @@ export default class AliasController {
function success(aliasInfo) {
datasource.aliasName = aliasInfo.alias;
if (aliasInfo.resolveMultiple) {
var newDatasource;
var resolvedEntities = aliasInfo.resolvedEntities;
if (resolvedEntities && resolvedEntities.length) {
var datasources = [];
for (var i=0;i<resolvedEntities.length;i++) {
var resolvedEntity = resolvedEntities[i];
var newDatasource = angular.copy(datasource);
newDatasource = angular.copy(datasource);
newDatasource.entityId = resolvedEntity.id;
newDatasource.entityType = resolvedEntity.entityType;
newDatasource.entityName = resolvedEntity.name;
@ -135,15 +137,30 @@ export default class AliasController {
}
deferred.resolve(datasources);
} else {
deferred.reject();
if (aliasInfo.stateEntity) {
newDatasource = angular.copy(datasource);
newDatasource.unresolvedStateEntity = true;
deferred.resolve([newDatasource]);
} else {
deferred.reject();
}
}
} else {
var entity = aliasInfo.currentEntity;
datasource.entityId = entity.id;
datasource.entityType = entity.entityType;
datasource.entityName = entity.name;
datasource.name = entity.name;
deferred.resolve([datasource]);
if (entity) {
datasource.entityId = entity.id;
datasource.entityType = entity.entityType;
datasource.entityName = entity.name;
datasource.name = entity.name;
deferred.resolve([datasource]);
} else {
if (aliasInfo.stateEntity) {
datasource.unresolvedStateEntity = true;
deferred.resolve([datasource]);
} else {
deferred.reject();
}
}
}
},
function fail() {

106
ui/src/app/api/entity.service.js

@ -29,10 +29,9 @@ function EntityService($http, $q, $filter, $translate, $log, userService, device
getEntitiesByNameFilter: getEntitiesByNameFilter,
resolveAlias: resolveAlias,
resolveAliasFilter: resolveAliasFilter,
checkEntityAlias: checkEntityAlias,
filterAliasByEntityTypes: filterAliasByEntityTypes,
//processEntityAliases: processEntityAliases,
getEntityKeys: getEntityKeys,
checkEntityAlias: checkEntityAlias,
createDatasourcesFromSubscriptionsInfo: createDatasourcesFromSubscriptionsInfo,
getRelatedEntities: getRelatedEntities,
saveRelatedEntity: saveRelatedEntity,
@ -259,7 +258,32 @@ function EntityService($http, $q, $filter, $translate, $log, userService, device
return entitiesInfo;
}
function resolveAliasFilter(filter, stateParams) {
function resolveAlias(entityAlias, stateParams) {
var deferred = $q.defer();
var filter = entityAlias.filter;
resolveAliasFilter(filter, stateParams, 100).then(
function (result) {
var entities = result.entities;
var aliasInfo = {
alias: entityAlias.alias,
resolveMultiple: filter.resolveMultiple
};
var resolvedEntities = entitiesToEntitiesInfo(entities);
aliasInfo.resolvedEntities = resolvedEntities;
aliasInfo.currentEntity = null;
if (aliasInfo.resolvedEntities.length) {
aliasInfo.currentEntity = aliasInfo.resolvedEntities[0];
}
deferred.resolve(aliasInfo);
},
function fail() {
deferred.reject();
}
);
return deferred.promise;
}
function resolveAliasFilter(filter, stateParams, maxItems) {
var deferred = $q.defer();
var result = {
entities: [],
@ -299,7 +323,7 @@ function EntityService($http, $q, $filter, $translate, $log, userService, device
}
break;
case types.aliasFilterType.entityName.value:
getEntitiesByNameFilter(filter.entityType, filter.entityNameFilter, 100).then(
getEntitiesByNameFilter(filter.entityType, filter.entityNameFilter, maxItems).then(
function success(entities) {
if (entities && entities.length) {
result.entities = entities;
@ -318,31 +342,6 @@ function EntityService($http, $q, $filter, $translate, $log, userService, device
return deferred.promise;
}
function resolveAlias(entityAlias, stateParams) {
var deferred = $q.defer();
var filter = entityAlias.filter;
resolveAliasFilter(filter, stateParams).then(
function (result) {
var entities = result.entities;
var aliasInfo = {
alias: entityAlias.alias,
resolveMultiple: filter.resolveMultiple
};
var resolvedEntities = entitiesToEntitiesInfo(entities);
aliasInfo.resolvedEntities = resolvedEntities;
aliasInfo.currentEntity = null;
if (aliasInfo.resolvedEntities.length) {
aliasInfo.currentEntity = aliasInfo.resolvedEntities[0];
}
deferred.resolve(aliasInfo);
},
function fail() {
deferred.reject();
}
);
return deferred.promise;
}
function filterAliasByEntityTypes(entityAlias, entityTypes) {
var filter = entityAlias.filter;
switch (filter.type) {
@ -359,6 +358,28 @@ function EntityService($http, $q, $filter, $translate, $log, userService, device
return false;
}
function checkEntityAlias(entityAlias) {
var deferred = $q.defer();
resolveAliasFilter(entityAlias.filter, null, 1).then(
function success(result) {
if (result.stateEntity) {
deferred.resolve(true);
} else {
var entities = result.entities;
if (entities && entities.length) {
deferred.resolve(true);
} else {
deferred.resolve(false);
}
}
},
function fail() {
deferred.resolve(false);
}
);
return deferred.promise;
}
/*function processEntityAlias(index, aliasIds, entityAliases, stateParams, resolution, deferred) {
if (index < aliasIds.length) {
var aliasId = aliasIds[index];
@ -433,33 +454,6 @@ function EntityService($http, $q, $filter, $translate, $log, userService, device
return deferred.promise;
}
function checkEntityAlias(entityAlias) {
var deferred = $q.defer();
var entityType = entityAlias.entityType;
var entityFilter = entityAlias.entityFilter;
var promise;
if (entityFilter.useFilter) {
var entityNameFilter = entityFilter.entityNameFilter;
promise = getEntitiesByNameFilter(entityType, entityNameFilter, 1);
} else {
var entityList = entityFilter.entityList;
promise = getEntities(entityType, entityList);
}
promise.then(
function success(entities) {
if (entities && entities.length > 0) {
deferred.resolve(true);
} else {
deferred.resolve(false);
}
},
function fail() {
deferred.resolve(false);
}
);
return deferred.promise;
}
function createDatasourcesFromSubscriptionsInfo(subscriptionsInfo) {
var deferred = $q.defer();
var datasources = [];

27
ui/src/app/api/subscription.js

@ -125,17 +125,22 @@ export default class Subscription {
initDataSubscription() {
var deferred = this.ctx.$q.defer();
var subscription = this;
this.ctx.aliasController.resolveDatasources(this.datasources).then(
function success(datasources) {
subscription.datasources = datasources;
subscription.configureData();
deferred.resolve();
},
function fail() {
deferred.reject();
}
);
if (!this.ctx.aliasController) {
this.configureData();
deferred.resolve();
} else {
var subscription = this;
this.ctx.aliasController.resolveDatasources(this.datasources).then(
function success(datasources) {
subscription.datasources = datasources;
subscription.configureData();
deferred.resolve();
},
function fail() {
deferred.reject();
}
);
}
return deferred.promise;
}

9
ui/src/app/common/dashboard-utils.service.js

@ -57,6 +57,9 @@ function DashboardUtils(types, utils, timeService) {
for (aliasId in entityAliases) {
entityAlias = entityAliases[aliasId];
entityAliases[aliasId] = validateAndUpdateEntityAlias(entityAlias);
if (!entityAliases[aliasId].id) {
entityAliases[aliasId].id = aliasId;
}
}
}
return configuration;
@ -202,6 +205,12 @@ function DashboardUtils(types, utils, timeService) {
states[firstStateId].root = true;
}
}
/* var datasources = {};
for (var widgetId in dashboard.configuration.widgets) {
}*/
dashboard.configuration = validateAndUpdateEntityAliases(dashboard.configuration);
if (angular.isUndefined(dashboard.configuration.timewindow)) {

25
ui/src/app/components/widget.controller.js

@ -38,6 +38,7 @@ export default function WidgetController($scope, $timeout, $window, $element, $q
var gridsterItemInited = false;
var subscriptionInited = false;
var widgetSizeDetected = false;
var cafs = {};
@ -206,9 +207,7 @@ export default function WidgetController($scope, $timeout, $window, $element, $q
initialize().then(
function(){
if (checkSize()) {
onInit();
}
onInit();
}
);
@ -488,10 +487,15 @@ export default function WidgetController($scope, $timeout, $window, $element, $q
$scope.widgetErrorData = utils.processWidgetException(e);
}
function onInit() {
if (!widgetContext.inited &&
subscriptionInited &&
gridsterItemInited) {
function isReady() {
return subscriptionInited && gridsterItemInited && widgetSizeDetected;
}
function onInit(skipSizeCheck) {
if (!skipSizeCheck) {
checkSize();
}
if (!widgetContext.inited && isReady()) {
widgetContext.inited = true;
try {
widgetTypeInstance.onInit();
@ -516,6 +520,7 @@ export default function WidgetController($scope, $timeout, $window, $element, $q
widgetContext.width = width;
widgetContext.height = height;
sizeChanged = true;
widgetSizeDetected = true;
}
}
return sizeChanged;
@ -536,7 +541,7 @@ export default function WidgetController($scope, $timeout, $window, $element, $q
}
});
} else {
onInit();
onInit(true);
}
}
}
@ -545,9 +550,7 @@ export default function WidgetController($scope, $timeout, $window, $element, $q
if (item && item.gridster) {
widgetContext.isMobile = item.gridster.isMobile;
gridsterItemInited = true;
if (checkSize()) {
onInit();
}
onInit();
// gridsterItemElement = $(item.$element);
//updateVisibility();
}

2
ui/src/app/dashboard/dashboard.controller.js

@ -344,6 +344,8 @@ export default function DashboardController(types, utils, dashboardUtils, widget
vm.dashboardConfiguration = vm.dashboard.configuration;
vm.dashboardCtx.dashboard = vm.dashboard;
vm.dashboardCtx.dashboardTimewindow = vm.dashboardConfiguration.timewindow;
vm.dashboardCtx.aliasController = new AliasController($scope, $q, $filter, utils,
types, entityService, vm.dashboardCtx.stateController, vm.dashboardConfiguration.entityAliases);
var parentScope = $window.parent.angular.element($window.frameElement).scope();
parentScope.$root.$broadcast('widgetEditModeInited');
parentScope.$root.$apply();

17
ui/src/app/entity/attribute/add-widget-to-dashboard-dialog.controller.js

@ -22,7 +22,8 @@ import selectTargetLayoutTemplate from '../../dashboard/layouts/select-target-la
/* eslint-enable import/no-unresolved, import/default */
/*@ngInject*/
export default function AddWidgetToDashboardDialogController($scope, $mdDialog, $state, $q, $document, itembuffer, dashboardService, entityId, entityType, entityName, widget) {
export default function AddWidgetToDashboardDialogController($scope, $mdDialog, $state, $q, $document,
types, itembuffer, dashboardService, entityId, entityType, entityName, widget) {
var vm = this;
@ -125,12 +126,14 @@ export default function AddWidgetToDashboardDialogController($scope, $mdDialog,
targetDeviceAliases: {}
};
aliasesInfo.datasourceAliases[0] = {
aliasName: entityName,
entityType: entityType,
entityFilter: {
useFilter: false,
entityNameFilter: '',
entityList: [entityId]
id: 1,
alias: entityName,
filter: {
type: types.aliasFilterType.entityList.value,
stateEntity: false,
entityList: [entityId],
entityType: entityType,
resolveMultiple: false
}
};
itembuffer.addWidgetToDashboard(theDashboard, targetState, targetLayout, vm.widget, aliasesInfo, null, 48, null, -1, -1).then(

2
ui/src/app/entity/entity-filter-dialog.controller.js

@ -64,7 +64,7 @@ export default function EntityFilterDialogController($scope, $mdDialog, $q, enti
entity: null,
stateEntity: false
}
entityService.resolveAliasFilter(vm.filter).then(
entityService.resolveAliasFilter(vm.filter, null, 1).then(
function success(result) {
validationResult.stateEntity = result.stateEntity;
var entities = result.entities;

66
ui/src/app/import-export/import-export.service.js

@ -359,30 +359,50 @@ export default function ImportExport($log, $translate, $q, $mdDialog, $document,
}
function prepareEntityAlias(aliasInfo) {
var entityFilter;
var entityType;
var alias;
var filter;
if (aliasInfo.deviceId) {
entityFilter = {
useFilter: false,
entityNameFilter: '',
entityList: [aliasInfo.deviceId]
}
entityType = types.entityType.device;
alias = aliasInfo.aliasName;
filter = {
type: types.aliasFilterType.entityList.value,
stateEntity: false,
entityType: types.entityType.device,
entityList: [aliasInfo.deviceId],
resolveMultiple: false
};
} else if (aliasInfo.deviceFilter) {
entityFilter = {
useFilter: aliasInfo.deviceFilter.useFilter,
entityNameFilter: aliasInfo.deviceFilter.deviceNameFilter,
entityList: aliasInfo.deviceFilter.deviceList
alias = aliasInfo.aliasName;
filter = {
type: aliasInfo.deviceFilter.useFilter ? types.aliasFilterType.entityName.value : types.aliasFilterType.entityList.value,
entityType: types.entityType.device,
resolveMultiple: false
}
if (filter.type == types.aliasFilterType.entityList.value) {
filter.stateEntity = false;
filter.entityList = aliasInfo.deviceFilter.deviceList
} else {
filter.entityNameFilter = aliasInfo.deviceFilter.deviceNameFilter;
}
} else if (aliasInfo.entityFilter) {
alias = aliasInfo.aliasName;
filter = {
type: aliasInfo.entityFilter.useFilter ? types.aliasFilterType.entityName.value : types.aliasFilterType.entityList.value,
entityType: aliasInfo.entityType,
resolveMultiple: false
}
if (filter.type == types.aliasFilterType.entityList.value) {
filter.stateEntity = false;
filter.entityList = aliasInfo.entityFilter.entityList;
} else {
filter.entityNameFilter = aliasInfo.entityFilter.entityNameFilter;
}
entityType = types.entityType.device;
} else {
entityFilter = aliasInfo.entityFilter;
entityType = aliasInfo.entityType;
alias = aliasInfo.alias;
filter = aliasInfo.filter;
}
return {
aliasName: aliasInfo.aliasName,
entityType: entityType,
entityFilter: entityFilter
alias: alias,
filter: filter
};
}
@ -411,6 +431,7 @@ export default function ImportExport($log, $translate, $q, $mdDialog, $document,
for (datasourceIndex in datasourceAliases) {
datasourceAliasesMap[aliasId] = datasourceIndex;
entityAliases[aliasId] = datasourceAliases[datasourceIndex];
entityAliases[aliasId].id = aliasId;
aliasId++;
}
}
@ -418,6 +439,7 @@ export default function ImportExport($log, $translate, $q, $mdDialog, $document,
for (datasourceIndex in targetDeviceAliases) {
targetDeviceAliasesMap[aliasId] = datasourceIndex;
entityAliases[aliasId] = targetDeviceAliases[datasourceIndex];
entityAliases[aliasId].id = aliasId;
aliasId++;
}
}
@ -435,12 +457,10 @@ export default function ImportExport($log, $translate, $q, $mdDialog, $document,
var datasourceIndex;
if (datasourceAliasesMap[aliasId]) {
datasourceIndex = datasourceAliasesMap[aliasId];
datasourceAliases[datasourceIndex].entityType = entityAlias.entityType;
datasourceAliases[datasourceIndex].entityFilter = entityAlias.entityFilter;
datasourceAliases[datasourceIndex] = entityAlias;
} else if (targetDeviceAliasesMap[aliasId]) {
datasourceIndex = targetDeviceAliasesMap[aliasId];
targetDeviceAliases[datasourceIndex].entityType = entityAlias.entityType;
targetDeviceAliases[datasourceIndex].entityFilter = entityAlias.entityFilter;
targetDeviceAliases[datasourceIndex] = entityAlias;
}
}
addImportedWidget(dashboard, targetState, targetLayoutFunction, $event, widget,
@ -622,7 +642,7 @@ export default function ImportExport($log, $translate, $q, $mdDialog, $document,
checkNextEntityAliasOrComplete(index, aliasIds, entityAliases, missingEntityAliases, deferred);
} else {
var missingEntityAlias = angular.copy(entityAlias);
missingEntityAlias.entityFilter = null;
missingEntityAlias.filter = null;
missingEntityAliases[aliasId] = missingEntityAlias;
checkNextEntityAliasOrComplete(index, aliasIds, entityAliases, missingEntityAliases, deferred);
}

22
ui/src/app/services/item-buffer.service.js

@ -46,16 +46,14 @@ function ItemBuffer($q, bufferStore, types, utils, dashboardUtils) {
aliasesInfo {
datasourceAliases: {
datasourceIndex: {
aliasName: "...",
entityType: "...",
entityFilter: "..."
alias: "...",
filter: "..."
}
}
targetDeviceAliases: {
targetDeviceAliasIndex: {
aliasName: "...",
entityType: "...",
entityFilter: "..."
alias: "...",
filter: "..."
}
}
....
@ -64,9 +62,8 @@ function ItemBuffer($q, bufferStore, types, utils, dashboardUtils) {
function prepareAliasInfo(entityAlias) {
return {
aliasName: entityAlias.alias,
entityType: entityAlias.entityType,
entityFilter: entityAlias.entityFilter
alias: entityAlias.alias,
filter: entityAlias.filter
};
}
@ -288,8 +285,7 @@ function ItemBuffer($q, bufferStore, types, utils, dashboardUtils) {
}
function isEntityAliasEqual(alias1, alias2) {
return alias1.entityType === alias2.entityType &&
angular.equals(alias1.entityFilter, alias2.entityFilter);
return angular.equals(alias1.filter, alias2.filter);
}
function getEntityAliasId(entityAliases, aliasInfo) {
@ -301,13 +297,13 @@ function ItemBuffer($q, bufferStore, types, utils, dashboardUtils) {
}
}
if (!newAliasId) {
var newAliasName = createEntityAliasName(entityAliases, aliasInfo.aliasName);
var newAliasName = createEntityAliasName(entityAliases, aliasInfo.alias);
newAliasId = 0;
for (aliasId in entityAliases) {
newAliasId = Math.max(newAliasId, aliasId);
}
newAliasId++;
entityAliases[newAliasId] = {alias: newAliasName, entityType: aliasInfo.entityType, entityFilter: aliasInfo.entityFilter};
entityAliases[newAliasId] = {id: newAliasId, alias: newAliasName, filter: aliasInfo.filter};
}
return newAliasId;
}

Loading…
Cancel
Save