Commit 12b5a932c362aba9bded2efce06e6fb18383fdf4

Authored by Volodymyr Babak
1 parent 95ce5595

Fixes after code review

... ... @@ -594,6 +594,21 @@ function EntityService($http, $q, $filter, $translate, $log, userService, device
594 594 }
595 595 );
596 596 break;
  597 + case types.aliasFilterType.edgeType.value:
  598 + getEntitiesByNameFilter(types.entityType.edge, filter.edgeNameFilter, maxItems, {ignoreLoading: true}, filter.edgeType).then(
  599 + function success(entities) {
  600 + if (entities && entities.length || !failOnEmpty) {
  601 + result.entities = entitiesToEntitiesInfo(entities);
  602 + deferred.resolve(result);
  603 + } else {
  604 + deferred.reject();
  605 + }
  606 + },
  607 + function fail() {
  608 + deferred.reject();
  609 + }
  610 + );
  611 + break;
597 612 case types.aliasFilterType.relationsQuery.value:
598 613 result.stateEntity = filter.rootStateEntity;
599 614 var rootEntityType;
... ... @@ -648,6 +663,7 @@ function EntityService($http, $q, $filter, $translate, $log, userService, device
648 663 case types.aliasFilterType.assetSearchQuery.value:
649 664 case types.aliasFilterType.deviceSearchQuery.value:
650 665 case types.aliasFilterType.entityViewSearchQuery.value:
  666 + case types.aliasFilterType.edgeSearchQuery.value:
651 667 result.stateEntity = filter.rootStateEntity;
652 668 if (result.stateEntity && stateEntityId) {
653 669 rootEntityType = stateEntityId.entityType;
... ... @@ -777,6 +793,8 @@ function EntityService($http, $q, $filter, $translate, $log, userService, device
777 793 return entityType === types.entityType.device;
778 794 case types.aliasFilterType.entityViewType.value:
779 795 return entityType === types.entityType.entityView;
  796 + case types.aliasFilterType.edgeType.value:
  797 + return entityType === types.entityType.edge;
780 798 case types.aliasFilterType.relationsQuery.value:
781 799 return true;
782 800 case types.aliasFilterType.assetSearchQuery.value:
... ... @@ -906,6 +924,7 @@ function EntityService($http, $q, $filter, $translate, $log, userService, device
906 924 entityFieldKeys.push(types.entityField.phone.keyName);
907 925 break;
908 926 case types.entityType.entityView:
  927 + case types.entityType.edge:
909 928 entityFieldKeys.push(types.entityField.name.keyName);
910 929 entityFieldKeys.push(types.entityField.type.keyName);
911 930 break;
... ... @@ -1121,6 +1140,8 @@ function EntityService($http, $q, $filter, $translate, $log, userService, device
1121 1140 findByQueryPromise = deviceService.findByQuery(entitySearchQuery, true, {ignoreLoading: true});
1122 1141 } else if (entityType == types.entityType.entityView) {
1123 1142 findByQueryPromise = entityViewService.findByQuery(entitySearchQuery, true, {ignoreLoading: true});
  1143 + } else if (entityType == types.entityType.edge) {
  1144 + findByQueryPromise = edgeService.findByQuery(entitySearchQuery, true, {ignoreLoading: true});
1124 1145 }
1125 1146 findByQueryPromise.then(
1126 1147 function success(entities) {
... ...
... ... @@ -86,6 +86,15 @@ export default function EntityFilterViewDirective($compile, $templateCache, $q,
86 86 scope.filterDisplayValue = $translate.instant('alias.filter-type-entity-view-type-description', {entityViewType: entityViewType});
87 87 }
88 88 break;
  89 + case types.aliasFilterType.edgeType.value:
  90 + var edgeType = scope.filter.edgeType;
  91 + prefix = scope.filter.edgeNameFilter;
  92 + if (prefix && prefix.length) {
  93 + scope.filterDisplayValue = $translate.instant('alias.filter-type-edge-type-and-name-description', {edgeType: edgeType, prefix: prefix});
  94 + } else {
  95 + scope.filterDisplayValue = $translate.instant('alias.filter-type-edge-type-description', {edgeType: edgeType});
  96 + }
  97 + break;
89 98 case types.aliasFilterType.relationsQuery.value:
90 99 var rootEntityText;
91 100 var directionText;
... ...
... ... @@ -73,10 +73,15 @@ export default function EntityFilterDirective($compile, $templateCache, $q, $doc
73 73 filter.entityViewType = null;
74 74 filter.entityViewNameFilter = '';
75 75 break;
  76 + case types.aliasFilterType.edgeType.value:
  77 + filter.edgeType = null;
  78 + filter.edgeNameFilter = '';
  79 + break;
76 80 case types.aliasFilterType.relationsQuery.value:
77 81 case types.aliasFilterType.assetSearchQuery.value:
78 82 case types.aliasFilterType.deviceSearchQuery.value:
79 83 case types.aliasFilterType.entityViewSearchQuery.value:
  84 + case types.aliasFilterType.edgeSearchQuery.value:
80 85 filter.rootStateEntity = false;
81 86 filter.stateEntityParamName = null;
82 87 filter.defaultStateEntity = null;
... ... @@ -95,6 +100,9 @@ export default function EntityFilterDirective($compile, $templateCache, $q, $doc
95 100 } else if (filter.type === types.aliasFilterType.entityViewSearchQuery.value) {
96 101 filter.relationType = null;
97 102 filter.entityViewTypes = [];
  103 + } else if (filter.type === types.aliasFilterType.edgeSearchQuery.value) {
  104 + filter.relationType = null;
  105 + filter.edgeTypes = [];
98 106 }
99 107 break;
100 108 }
... ...
... ... @@ -126,6 +126,20 @@
126 126 aria-label="{{ 'entity-view.name-starts-with' | translate }}">
127 127 </md-input-container>
128 128 </section>
  129 + <section layout="column" ng-if="filter.type == types.aliasFilterType.edgeType.value" id="edgeTypeFilter">
  130 + <tb-entity-subtype-autocomplete
  131 + tb-required="true"
  132 + the-form="theForm"
  133 + ng-model="filter.edgeType"
  134 + entity-type="types.entityType.edge">
  135 + </tb-entity-subtype-autocomplete>
  136 + <md-input-container class="md-block">
  137 + <label translate>edge.name-starts-with</label>
  138 + <input name="edgeNameFilter"
  139 + ng-model="filter.edgeNameFilter"
  140 + aria-label="{{ 'edge.name-starts-with' | translate }}">
  141 + </md-input-container>
  142 + </section>
129 143 <section layout="column" ng-if="filter.type == types.aliasFilterType.relationsQuery.value" id="relationsQueryFilter">
130 144 <label class="tb-small">{{ 'alias.root-entity' | translate }}</label>
131 145 <section class="tb-root-state-entity-switch" layout="row" layout-align="start center" style="padding-left: 0px;">
... ... @@ -426,4 +440,81 @@
426 440 ng-model="filter.entityViewTypes">
427 441 </tb-entity-subtype-list>
428 442 </section>
  443 + <section layout="column" ng-if="filter.type == types.aliasFilterType.edgeSearchQuery.value" id="edgeSearchQueryFilter">
  444 + <label class="tb-small">{{ 'alias.root-entity' | translate }}</label>
  445 + <section class="tb-root-state-entity-switch" layout="row" layout-align="start center" style="padding-left: 0px;">
  446 + <md-switch class="root-state-entity-switch" ng-model="filter.rootStateEntity"
  447 + aria-label="{{ 'alias.root-state-entity' | translate }}">
  448 + </md-switch>
  449 + <label class="tb-small root-state-entity-label" translate>alias.root-state-entity</label>
  450 + </section>
  451 + <div flex layout="row" ng-if="!filter.rootStateEntity">
  452 + <tb-entity-select flex
  453 + the-form="theForm"
  454 + tb-required="!filter.rootStateEntity"
  455 + ng-disabled="filter.rootStateEntity"
  456 + use-alias-entity-types="true"
  457 + ng-model="filter.rootEntity">
  458 + </tb-entity-select>
  459 + </div>
  460 + <div flex layout="row" ng-if="filter.rootStateEntity">
  461 + <md-input-container class="md-block" style="margin-top: 32px;">
  462 + <label translate>alias.state-entity-parameter-name</label>
  463 + <input name="stateEntityParamName"
  464 + placeholder="{{ 'alias.default-entity-parameter-name' | translate }}"
  465 + ng-model="filter.stateEntityParamName"
  466 + aria-label="{{ 'alias.state-entity-parameter-name' | translate }}">
  467 + </md-input-container>
  468 + <div flex layout="column">
  469 + <label class="tb-small">{{ 'alias.default-state-entity' | translate }}</label>
  470 + <tb-entity-select flex
  471 + the-form="theForm"
  472 + tb-required="false"
  473 + use-alias-entity-types="true"
  474 + ng-model="filter.defaultStateEntity">
  475 + </tb-entity-select>
  476 + </div>
  477 + </div>
  478 + <div flex layout="row">
  479 + <section class="tb-root-state-entity-switch" layout="row" layout-align="start center" style="padding-left: 0px;">
  480 + <md-switch class="root-state-entity-switch" ng-model="filter.fetchLastLevelOnly"
  481 + aria-label="{{ 'alias.last-level-relation' | translate }}">
  482 + </md-switch>
  483 + <label class="tb-small root-state-entity-label" translate>alias.last-level-relation</label>
  484 + </section>
  485 + </div>
  486 + <div flex layout="row">
  487 + <md-input-container class="md-block" style="min-width: 100px;">
  488 + <label translate>relation.direction</label>
  489 + <md-select required ng-model="filter.direction">
  490 + <md-option ng-repeat="direction in types.entitySearchDirection" ng-value="direction">
  491 + {{ ('relation.search-direction.' + direction) | translate}}
  492 + </md-option>
  493 + </md-select>
  494 + </md-input-container>
  495 + <md-input-container flex class="md-block">
  496 + <label translate>alias.max-relation-level</label>
  497 + <input name="maxRelationLevel"
  498 + type="number"
  499 + min="1"
  500 + step="1"
  501 + placeholder="{{ 'alias.unlimited-level' | translate }}"
  502 + ng-model="filter.maxLevel"
  503 + aria-label="{{ 'alias.max-relation-level' | translate }}">
  504 + </md-input-container>
  505 + </div>
  506 + <div class="md-caption" style="color: rgba(0,0,0,0.57);" translate>relation.relation-type</div>
  507 + <tb-relation-type-autocomplete flex
  508 + hide-label
  509 + the-form="theForm"
  510 + ng-model="filter.relationType"
  511 + tb-required="false">
  512 + </tb-relation-type-autocomplete>
  513 + <div class="md-caption tb-required" style="color: rgba(0,0,0,0.57);" translate>edge.edge-types</div>
  514 + <tb-entity-subtype-list
  515 + tb-required="true"
  516 + entity-type="types.entityType.edge"
  517 + ng-model="filter.edgeTypes">
  518 + </tb-entity-subtype-list>
  519 + </section>
429 520 </div>
... ...
... ... @@ -508,6 +508,9 @@ function EntitiesHierarchyWidgetController($element, $scope, $q, $timeout, toast
508 508 case types.entityType.entityView:
509 509 materialIcon = 'view_quilt';
510 510 break;
  511 + case types.entityType.edge:
  512 + materialIcon = 'router';
  513 + break;
511 514 }
512 515 }
513 516 return {
... ...