Fixes after code review

This commit is contained in:
Volodymyr Babak 2020-05-10 23:20:30 +03:00
parent 95ce5595fc
commit 12b5a932c3
5 changed files with 132 additions and 0 deletions

View File

@ -594,6 +594,21 @@ function EntityService($http, $q, $filter, $translate, $log, userService, device
}
);
break;
case types.aliasFilterType.edgeType.value:
getEntitiesByNameFilter(types.entityType.edge, filter.edgeNameFilter, maxItems, {ignoreLoading: true}, filter.edgeType).then(
function success(entities) {
if (entities && entities.length || !failOnEmpty) {
result.entities = entitiesToEntitiesInfo(entities);
deferred.resolve(result);
} else {
deferred.reject();
}
},
function fail() {
deferred.reject();
}
);
break;
case types.aliasFilterType.relationsQuery.value:
result.stateEntity = filter.rootStateEntity;
var rootEntityType;
@ -648,6 +663,7 @@ function EntityService($http, $q, $filter, $translate, $log, userService, device
case types.aliasFilterType.assetSearchQuery.value:
case types.aliasFilterType.deviceSearchQuery.value:
case types.aliasFilterType.entityViewSearchQuery.value:
case types.aliasFilterType.edgeSearchQuery.value:
result.stateEntity = filter.rootStateEntity;
if (result.stateEntity && stateEntityId) {
rootEntityType = stateEntityId.entityType;
@ -777,6 +793,8 @@ function EntityService($http, $q, $filter, $translate, $log, userService, device
return entityType === types.entityType.device;
case types.aliasFilterType.entityViewType.value:
return entityType === types.entityType.entityView;
case types.aliasFilterType.edgeType.value:
return entityType === types.entityType.edge;
case types.aliasFilterType.relationsQuery.value:
return true;
case types.aliasFilterType.assetSearchQuery.value:
@ -906,6 +924,7 @@ function EntityService($http, $q, $filter, $translate, $log, userService, device
entityFieldKeys.push(types.entityField.phone.keyName);
break;
case types.entityType.entityView:
case types.entityType.edge:
entityFieldKeys.push(types.entityField.name.keyName);
entityFieldKeys.push(types.entityField.type.keyName);
break;
@ -1121,6 +1140,8 @@ function EntityService($http, $q, $filter, $translate, $log, userService, device
findByQueryPromise = deviceService.findByQuery(entitySearchQuery, true, {ignoreLoading: true});
} else if (entityType == types.entityType.entityView) {
findByQueryPromise = entityViewService.findByQuery(entitySearchQuery, true, {ignoreLoading: true});
} else if (entityType == types.entityType.edge) {
findByQueryPromise = edgeService.findByQuery(entitySearchQuery, true, {ignoreLoading: true});
}
findByQueryPromise.then(
function success(entities) {

View File

@ -86,6 +86,15 @@ export default function EntityFilterViewDirective($compile, $templateCache, $q,
scope.filterDisplayValue = $translate.instant('alias.filter-type-entity-view-type-description', {entityViewType: entityViewType});
}
break;
case types.aliasFilterType.edgeType.value:
var edgeType = scope.filter.edgeType;
prefix = scope.filter.edgeNameFilter;
if (prefix && prefix.length) {
scope.filterDisplayValue = $translate.instant('alias.filter-type-edge-type-and-name-description', {edgeType: edgeType, prefix: prefix});
} else {
scope.filterDisplayValue = $translate.instant('alias.filter-type-edge-type-description', {edgeType: edgeType});
}
break;
case types.aliasFilterType.relationsQuery.value:
var rootEntityText;
var directionText;

View File

@ -73,10 +73,15 @@ export default function EntityFilterDirective($compile, $templateCache, $q, $doc
filter.entityViewType = null;
filter.entityViewNameFilter = '';
break;
case types.aliasFilterType.edgeType.value:
filter.edgeType = null;
filter.edgeNameFilter = '';
break;
case types.aliasFilterType.relationsQuery.value:
case types.aliasFilterType.assetSearchQuery.value:
case types.aliasFilterType.deviceSearchQuery.value:
case types.aliasFilterType.entityViewSearchQuery.value:
case types.aliasFilterType.edgeSearchQuery.value:
filter.rootStateEntity = false;
filter.stateEntityParamName = null;
filter.defaultStateEntity = null;
@ -95,6 +100,9 @@ export default function EntityFilterDirective($compile, $templateCache, $q, $doc
} else if (filter.type === types.aliasFilterType.entityViewSearchQuery.value) {
filter.relationType = null;
filter.entityViewTypes = [];
} else if (filter.type === types.aliasFilterType.edgeSearchQuery.value) {
filter.relationType = null;
filter.edgeTypes = [];
}
break;
}

View File

@ -126,6 +126,20 @@
aria-label="{{ 'entity-view.name-starts-with' | translate }}">
</md-input-container>
</section>
<section layout="column" ng-if="filter.type == types.aliasFilterType.edgeType.value" id="edgeTypeFilter">
<tb-entity-subtype-autocomplete
tb-required="true"
the-form="theForm"
ng-model="filter.edgeType"
entity-type="types.entityType.edge">
</tb-entity-subtype-autocomplete>
<md-input-container class="md-block">
<label translate>edge.name-starts-with</label>
<input name="edgeNameFilter"
ng-model="filter.edgeNameFilter"
aria-label="{{ 'edge.name-starts-with' | translate }}">
</md-input-container>
</section>
<section layout="column" ng-if="filter.type == types.aliasFilterType.relationsQuery.value" id="relationsQueryFilter">
<label class="tb-small">{{ 'alias.root-entity' | translate }}</label>
<section class="tb-root-state-entity-switch" layout="row" layout-align="start center" style="padding-left: 0px;">
@ -426,4 +440,81 @@
ng-model="filter.entityViewTypes">
</tb-entity-subtype-list>
</section>
<section layout="column" ng-if="filter.type == types.aliasFilterType.edgeSearchQuery.value" id="edgeSearchQueryFilter">
<label class="tb-small">{{ 'alias.root-entity' | translate }}</label>
<section class="tb-root-state-entity-switch" layout="row" layout-align="start center" style="padding-left: 0px;">
<md-switch class="root-state-entity-switch" ng-model="filter.rootStateEntity"
aria-label="{{ 'alias.root-state-entity' | translate }}">
</md-switch>
<label class="tb-small root-state-entity-label" translate>alias.root-state-entity</label>
</section>
<div flex layout="row" ng-if="!filter.rootStateEntity">
<tb-entity-select flex
the-form="theForm"
tb-required="!filter.rootStateEntity"
ng-disabled="filter.rootStateEntity"
use-alias-entity-types="true"
ng-model="filter.rootEntity">
</tb-entity-select>
</div>
<div flex layout="row" ng-if="filter.rootStateEntity">
<md-input-container class="md-block" style="margin-top: 32px;">
<label translate>alias.state-entity-parameter-name</label>
<input name="stateEntityParamName"
placeholder="{{ 'alias.default-entity-parameter-name' | translate }}"
ng-model="filter.stateEntityParamName"
aria-label="{{ 'alias.state-entity-parameter-name' | translate }}">
</md-input-container>
<div flex layout="column">
<label class="tb-small">{{ 'alias.default-state-entity' | translate }}</label>
<tb-entity-select flex
the-form="theForm"
tb-required="false"
use-alias-entity-types="true"
ng-model="filter.defaultStateEntity">
</tb-entity-select>
</div>
</div>
<div flex layout="row">
<section class="tb-root-state-entity-switch" layout="row" layout-align="start center" style="padding-left: 0px;">
<md-switch class="root-state-entity-switch" ng-model="filter.fetchLastLevelOnly"
aria-label="{{ 'alias.last-level-relation' | translate }}">
</md-switch>
<label class="tb-small root-state-entity-label" translate>alias.last-level-relation</label>
</section>
</div>
<div flex layout="row">
<md-input-container class="md-block" style="min-width: 100px;">
<label translate>relation.direction</label>
<md-select required ng-model="filter.direction">
<md-option ng-repeat="direction in types.entitySearchDirection" ng-value="direction">
{{ ('relation.search-direction.' + direction) | translate}}
</md-option>
</md-select>
</md-input-container>
<md-input-container flex class="md-block">
<label translate>alias.max-relation-level</label>
<input name="maxRelationLevel"
type="number"
min="1"
step="1"
placeholder="{{ 'alias.unlimited-level' | translate }}"
ng-model="filter.maxLevel"
aria-label="{{ 'alias.max-relation-level' | translate }}">
</md-input-container>
</div>
<div class="md-caption" style="color: rgba(0,0,0,0.57);" translate>relation.relation-type</div>
<tb-relation-type-autocomplete flex
hide-label
the-form="theForm"
ng-model="filter.relationType"
tb-required="false">
</tb-relation-type-autocomplete>
<div class="md-caption tb-required" style="color: rgba(0,0,0,0.57);" translate>edge.edge-types</div>
<tb-entity-subtype-list
tb-required="true"
entity-type="types.entityType.edge"
ng-model="filter.edgeTypes">
</tb-entity-subtype-list>
</section>
</div>

View File

@ -508,6 +508,9 @@ function EntitiesHierarchyWidgetController($element, $scope, $q, $timeout, toast
case types.entityType.entityView:
materialIcon = 'view_quilt';
break;
case types.entityType.edge:
materialIcon = 'router';
break;
}
}
return {