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,6 +594,21 @@ function EntityService($http, $q, $filter, $translate, $log, userService, device
594 } 594 }
595 ); 595 );
596 break; 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 case types.aliasFilterType.relationsQuery.value: 612 case types.aliasFilterType.relationsQuery.value:
598 result.stateEntity = filter.rootStateEntity; 613 result.stateEntity = filter.rootStateEntity;
599 var rootEntityType; 614 var rootEntityType;
@@ -648,6 +663,7 @@ function EntityService($http, $q, $filter, $translate, $log, userService, device @@ -648,6 +663,7 @@ function EntityService($http, $q, $filter, $translate, $log, userService, device
648 case types.aliasFilterType.assetSearchQuery.value: 663 case types.aliasFilterType.assetSearchQuery.value:
649 case types.aliasFilterType.deviceSearchQuery.value: 664 case types.aliasFilterType.deviceSearchQuery.value:
650 case types.aliasFilterType.entityViewSearchQuery.value: 665 case types.aliasFilterType.entityViewSearchQuery.value:
  666 + case types.aliasFilterType.edgeSearchQuery.value:
651 result.stateEntity = filter.rootStateEntity; 667 result.stateEntity = filter.rootStateEntity;
652 if (result.stateEntity && stateEntityId) { 668 if (result.stateEntity && stateEntityId) {
653 rootEntityType = stateEntityId.entityType; 669 rootEntityType = stateEntityId.entityType;
@@ -777,6 +793,8 @@ function EntityService($http, $q, $filter, $translate, $log, userService, device @@ -777,6 +793,8 @@ function EntityService($http, $q, $filter, $translate, $log, userService, device
777 return entityType === types.entityType.device; 793 return entityType === types.entityType.device;
778 case types.aliasFilterType.entityViewType.value: 794 case types.aliasFilterType.entityViewType.value:
779 return entityType === types.entityType.entityView; 795 return entityType === types.entityType.entityView;
  796 + case types.aliasFilterType.edgeType.value:
  797 + return entityType === types.entityType.edge;
780 case types.aliasFilterType.relationsQuery.value: 798 case types.aliasFilterType.relationsQuery.value:
781 return true; 799 return true;
782 case types.aliasFilterType.assetSearchQuery.value: 800 case types.aliasFilterType.assetSearchQuery.value:
@@ -906,6 +924,7 @@ function EntityService($http, $q, $filter, $translate, $log, userService, device @@ -906,6 +924,7 @@ function EntityService($http, $q, $filter, $translate, $log, userService, device
906 entityFieldKeys.push(types.entityField.phone.keyName); 924 entityFieldKeys.push(types.entityField.phone.keyName);
907 break; 925 break;
908 case types.entityType.entityView: 926 case types.entityType.entityView:
  927 + case types.entityType.edge:
909 entityFieldKeys.push(types.entityField.name.keyName); 928 entityFieldKeys.push(types.entityField.name.keyName);
910 entityFieldKeys.push(types.entityField.type.keyName); 929 entityFieldKeys.push(types.entityField.type.keyName);
911 break; 930 break;
@@ -1121,6 +1140,8 @@ function EntityService($http, $q, $filter, $translate, $log, userService, device @@ -1121,6 +1140,8 @@ function EntityService($http, $q, $filter, $translate, $log, userService, device
1121 findByQueryPromise = deviceService.findByQuery(entitySearchQuery, true, {ignoreLoading: true}); 1140 findByQueryPromise = deviceService.findByQuery(entitySearchQuery, true, {ignoreLoading: true});
1122 } else if (entityType == types.entityType.entityView) { 1141 } else if (entityType == types.entityType.entityView) {
1123 findByQueryPromise = entityViewService.findByQuery(entitySearchQuery, true, {ignoreLoading: true}); 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 findByQueryPromise.then( 1146 findByQueryPromise.then(
1126 function success(entities) { 1147 function success(entities) {
@@ -86,6 +86,15 @@ export default function EntityFilterViewDirective($compile, $templateCache, $q, @@ -86,6 +86,15 @@ export default function EntityFilterViewDirective($compile, $templateCache, $q,
86 scope.filterDisplayValue = $translate.instant('alias.filter-type-entity-view-type-description', {entityViewType: entityViewType}); 86 scope.filterDisplayValue = $translate.instant('alias.filter-type-entity-view-type-description', {entityViewType: entityViewType});
87 } 87 }
88 break; 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 case types.aliasFilterType.relationsQuery.value: 98 case types.aliasFilterType.relationsQuery.value:
90 var rootEntityText; 99 var rootEntityText;
91 var directionText; 100 var directionText;
@@ -73,10 +73,15 @@ export default function EntityFilterDirective($compile, $templateCache, $q, $doc @@ -73,10 +73,15 @@ export default function EntityFilterDirective($compile, $templateCache, $q, $doc
73 filter.entityViewType = null; 73 filter.entityViewType = null;
74 filter.entityViewNameFilter = ''; 74 filter.entityViewNameFilter = '';
75 break; 75 break;
  76 + case types.aliasFilterType.edgeType.value:
  77 + filter.edgeType = null;
  78 + filter.edgeNameFilter = '';
  79 + break;
76 case types.aliasFilterType.relationsQuery.value: 80 case types.aliasFilterType.relationsQuery.value:
77 case types.aliasFilterType.assetSearchQuery.value: 81 case types.aliasFilterType.assetSearchQuery.value:
78 case types.aliasFilterType.deviceSearchQuery.value: 82 case types.aliasFilterType.deviceSearchQuery.value:
79 case types.aliasFilterType.entityViewSearchQuery.value: 83 case types.aliasFilterType.entityViewSearchQuery.value:
  84 + case types.aliasFilterType.edgeSearchQuery.value:
80 filter.rootStateEntity = false; 85 filter.rootStateEntity = false;
81 filter.stateEntityParamName = null; 86 filter.stateEntityParamName = null;
82 filter.defaultStateEntity = null; 87 filter.defaultStateEntity = null;
@@ -95,6 +100,9 @@ export default function EntityFilterDirective($compile, $templateCache, $q, $doc @@ -95,6 +100,9 @@ export default function EntityFilterDirective($compile, $templateCache, $q, $doc
95 } else if (filter.type === types.aliasFilterType.entityViewSearchQuery.value) { 100 } else if (filter.type === types.aliasFilterType.entityViewSearchQuery.value) {
96 filter.relationType = null; 101 filter.relationType = null;
97 filter.entityViewTypes = []; 102 filter.entityViewTypes = [];
  103 + } else if (filter.type === types.aliasFilterType.edgeSearchQuery.value) {
  104 + filter.relationType = null;
  105 + filter.edgeTypes = [];
98 } 106 }
99 break; 107 break;
100 } 108 }
@@ -126,6 +126,20 @@ @@ -126,6 +126,20 @@
126 aria-label="{{ 'entity-view.name-starts-with' | translate }}"> 126 aria-label="{{ 'entity-view.name-starts-with' | translate }}">
127 </md-input-container> 127 </md-input-container>
128 </section> 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 <section layout="column" ng-if="filter.type == types.aliasFilterType.relationsQuery.value" id="relationsQueryFilter"> 143 <section layout="column" ng-if="filter.type == types.aliasFilterType.relationsQuery.value" id="relationsQueryFilter">
130 <label class="tb-small">{{ 'alias.root-entity' | translate }}</label> 144 <label class="tb-small">{{ 'alias.root-entity' | translate }}</label>
131 <section class="tb-root-state-entity-switch" layout="row" layout-align="start center" style="padding-left: 0px;"> 145 <section class="tb-root-state-entity-switch" layout="row" layout-align="start center" style="padding-left: 0px;">
@@ -426,4 +440,81 @@ @@ -426,4 +440,81 @@
426 ng-model="filter.entityViewTypes"> 440 ng-model="filter.entityViewTypes">
427 </tb-entity-subtype-list> 441 </tb-entity-subtype-list>
428 </section> 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 </div> 520 </div>
@@ -508,6 +508,9 @@ function EntitiesHierarchyWidgetController($element, $scope, $q, $timeout, toast @@ -508,6 +508,9 @@ function EntitiesHierarchyWidgetController($element, $scope, $q, $timeout, toast
508 case types.entityType.entityView: 508 case types.entityType.entityView:
509 materialIcon = 'view_quilt'; 509 materialIcon = 'view_quilt';
510 break; 510 break;
  511 + case types.entityType.edge:
  512 + materialIcon = 'router';
  513 + break;
511 } 514 }
512 } 515 }
513 return { 516 return {