algairim commented on a change in pull request #241:
URL: https://github.com/apache/brooklyn-ui/pull/241#discussion_r666761739



##########
File path: 
ui-modules/blueprint-composer/app/views/main/graphical/graphical.state.html
##########
@@ -19,129 +19,258 @@
 
 <div class="palette-and-or-toolbar">
 
-  <div class="layout">
-    <div class="toolbar">
-        <div class="list-group">
-            <a class="hand list-group-item"
-               ng-repeat="section in vm.sections track by $index"
-               ng-class="{'active': vm.selectedSection === section}"
-               ng-click="vm.selectedSection = section">
-                <i class="fa fa-fw" ng-class="section.icon"></i>
-            </a>
-
-            <div class="spacer"></div>
-            <a class="hand list-group-item errors-square"
-               title="Click to show/hide details of errors"
-               ng-class="{ errorsActive: errorsPane.level }"
-               ng-show="allIssues.errors.count"
-               ng-click="errorsPane.level = errorsPane.level ? null : 
'error-errors'">
-                <i class="fa fa-fw fa-times-circle"></i> {{ 
allIssues.errors.count }}
-            </a>
-            <a class="hand list-group-item warning-square"
-               title="Click to show/hide details of warnings"
-               ng-class="{ errorsActive: errorsPane.level }"
-               ng-show="!allIssues.errors.count && allIssues.warnings.count"
-               ng-click="errorsPane.level = errorsPane.level ? null : 
'summary'">
-                <i class="fa fa-fw fa-exclamation-triangle"></i> {{ 
allIssues.warnings.count }}
-            </a>
+    <div class="layout">
+        <div class="toolbar">
+            <div class="list-group">
+                <a class="hand list-group-item"
+                   ng-repeat="section in vm.sections track by $index"
+                   ng-class="{'active': vm.selectedSection === section}"
+                   ng-click="vm.selectedSection = section">
+                    <i class="fa fa-fw" ng-class="section.icon"></i>
+                </a>
+
+                <div class="spacer"></div>
+                <a class="hand list-group-item errors-square"
+                   title="Click to show/hide details of errors"
+                   ng-class="{ errorsActive: errorsPane.level }"
+                   ng-show="allIssues.errors.count"
+                   ng-click="errorsPane.level = errorsPane.level ? null : 
'error-errors'">
+                    <i class="fa fa-fw fa-times-circle"></i> {{ 
allIssues.errors.count }}
+                </a>
+                <a class="hand list-group-item warning-square"
+                   title="Click to show/hide details of warnings"
+                   ng-class="{ errorsActive: errorsPane.level }"
+                   ng-show="!allIssues.errors.count && 
allIssues.warnings.count"
+                   ng-click="errorsPane.level = errorsPane.level ? null : 
'summary'">
+                    <i class="fa fa-fw fa-exclamation-triangle"></i> {{ 
allIssues.warnings.count }}
+                </a>
+            </div>
         </div>
-    </div>
 
-      <div ng-if="errorsPane.level == 'summary'" class="errors-popout">
-          <div class="errors-body">
+        <div ng-if="errorsPane.level == 'summary'" class="errors-popout">
+            <div class="errors-body">
+
+                <a ng-click="errorsPane.level = null" class="hand 
errors-close"><i class="fa fa-fw fa-times"></i></a>
+
+                <div ng-if="allIssues.errors.count">
+                    <a class="hand" ng-click="errorsPane.level = 
'error-errors'">
+                        <ng-pluralize count="allIssues.errors.count"
+                                      when="{'one': '{} error', 'other': '{} 
errors'}" />
+                    </a>
+                    in
+                    <a class="hand" ng-click="errorsPane.level = 
'error-entities'">
+                        <ng-pluralize 
count="vm.size(allIssues.errors.byEntity)"
+                                      when="{'one': '{} entity', 'other': '{} 
entities'}" />
+                    </a>
+                </div>
+
+                <div ng-if="allIssues.warnings.count">
+                    <a class="hand" ng-click="errorsPane.level = 
'warning-errors'">
+                        <ng-pluralize count="allIssues.warnings.count"
+                                      when="{'one': '{} warning', 'other': '{} 
warnings'}" />
+                    </a>
+                    in
+                    <a class="hand" ng-click="errorsPane.level = 
'warning-entities'">
+                        <ng-pluralize 
count="vm.size(allIssues.warnings.byEntity)"
+                                      when="{'one': '{} entity', 'other': '{} 
entities'}" />
+                    </a>
+                </div>
+
+                <div ng-if="!allIssues.errors.count && 
!allIssues.warnings.count">
+                    No errors or warnings.
+                </div>
+
+            </div>
+        </div>
+
+        <div ng-if="errorsPane.level == 'error-entities'" 
class="errors-popout">
+            <div class="errorsHeader">
+                <a ng-click="errorsPane.level = null" class="hand 
errors-close"><i class="fa fa-fw fa-times"></i></a>
 
-              <a ng-click="errorsPane.level = null" class="hand 
errors-close"><i class="fa fa-fw fa-times"></i></a>
+                <strong>
+                    <ng-pluralize count="vm.size(allIssues.errors.byEntity)"
+                                  when="{'one': '{} entity', 'other': '{} 
entities'}" />
+                </strong>
+
+                with
 
-            <div ng-if="allIssues.errors.count">
                 <a class="hand" ng-click="errorsPane.level = 'error-errors'">
-                {{ allIssues.errors.count }}
-                    <span ng-if="allIssues.errors.count == 1">error</span>
-                    <span ng-if="allIssues.errors.count != 1">errors</span>
+                    <ng-pluralize count="allIssues.errors.count"
+                                  when="{'one': '{} error', 'other': '{} 
errors'}" />
                 </a>
+            </div>
+
+            <div class="errors-body">
+                <div ng-repeat="(itemK,itemV) in allIssues.errors.byEntity" 
class="error-line">
+                    <div class="error-line-marker">
+                        <i class="fa fa-fw fa-times-circle"></i>
+                    </div>
+                    <div class="error-line-text">
+                        {{ vm.entitySummary(allIssues.entities[itemK]) }}:
+                        {{ itemV.length }} {{ itemV.length==1 ? 'error' : 
'errors' }}
+                    </div>
+                    <div class="error-line-action">
+                        <a class="hand" 
ui-sref="main.graphical.edit.entity({entityId: itemK})">
+                            <i class="fa fa-fw fa-external-link"></i>
+                        </a>
+                    </div>
+                </div>
+            </div>
+        </div>
+
+        <div ng-if="errorsPane.level == 'error-errors'" class="errors-popout">
+            <div class="errorsHeader">
+                <a ng-click="errorsPane.level = null" class="hand 
errors-close"><i class="fa fa-fw fa-times"></i></a>
+
+                <strong>
+                    <ng-pluralize count="allIssues.errors.count"
+                                  when="{'one': '{} error', 'other': '{} 
errors'}" />
+                </strong>
+
+                <span ng-show="allIssues.errors.count != 
vm.size(allIssues.errors.byMessage)"> ({{ vm.size(allIssues.errors.byMessage) 
}} unique)</span>
+
                 in
+
                 <a class="hand" ng-click="errorsPane.level = 'error-entities'">
-                    {{ vm.size(allIssues.errors.byEntity) }}
-                    <span ng-if="vm.size(allIssues.errors.byEntity) == 
1">entity</span>
-                    <span ng-if="vm.size(allIssues.errors.byEntity) != 
1">entities</span>
+                    <ng-pluralize count="vm.size(allIssues.errors.byEntity)"
+                                  when="{'one': '{} entity', 'other': '{} 
entities'}" />
                 </a>
             </div>
 
-            <!-- TODO add links and panels for warnings -->
-            <div ng-if="allIssues.warnings.count">
-                {{ allIssues.warnings.count }}
-                    <span ng-if="allIssues.errors.count == 1">warning</span>
-                    <span ng-if="allIssues.errors.count != 1">warnings</span>
-                in {{ vm.size(allIssues.warnings.byEntity) }}
-                    <span ng-if="vm.size(allIssues.warnings.byEntity) == 
1">entity</span>
-                    <span ng-if="vm.size(allIssues.warnings.byEntity) != 
1">entities</span>
+            <div class="errors-body">
+                <div ng-repeat="(itemK,itemV) in allIssues.errors.byMessage" 
class="error-line">
+                    <div class="error-line-marker">
+                        <i class="fa fa-fw fa-times-circle"></i>
+                    </div>
+                    <div class="error-line-text">
+                      <span>
+                          <span ng-show="vm.messageNeedsPrefix(itemV)">
+                              {{ itemV.group }} {{ itemV.ref }}<span 
ng-show="itemV.message">:</span>
+                          </span>
+                          <span ng-show="itemV.message">
+                              <ng-bind-html 
ng-bind-html="itemV.message"></ng-bind-html>
+                          </span>
+                      </span>
+
+                        (<a class="hand" ng-click="errorsPane.focus = 
(errorsPane.focus == 'errors:'+itemK ? null : 'errors:'+itemK)"
+                            ng-class="{active: errorsPane.focus == 
'errors:'+itemK }">
+                            <ng-pluralize count="itemV.issues.length"
+                                          when="{'one': '{} entity', 'other': 
'{} entities'}" />
+                        </a>
+                        <span ng-if="vm.size(itemV.quickFixes)">;
+                          <a class="hand" ng-click="errorsPane.focus = 
(errorsPane.focus == 'fixes:'+itemK ? null : 'fixes:'+itemK)"
+                             ng-class="{active: errorsPane.focus == 
'fixes:'+itemK }">
+                             <ng-pluralize count="vm.size(itemV.quickFixes)"
+                                           when="{'one': '{} quick fix', 
'other': '{} quick fixes'}" />
+                             available
+                          </a>
+                        </span>)
+
+                        <div class="error-line-sub" ng-if="errorsPane.focus == 
'errors:'+itemK">
+                            <div ng-repeat="issue in itemV.issues" 
class="error-line-sub-line">
+                                <div class="error-line-marker">
+                                    <i class="fa fa-fw fa-circle"></i>
+                                </div>
+                                <div class="error-line-text">
+                                    {{ vm.entitySummary(issue.issue.entity) }}
+                                    <!-- could offer the issue-specific quick 
fixes; but clearer to navigate to entity and do there -->
+                                </div>
+                                <div class="error-line-action">
+                                    <a class="hand" 
ui-sref="main.graphical.edit.entity({entityId: issue.issue.entity._id})">
+                                        <i class="fa fa-fw 
fa-external-link"></i>
+                                    </a>
+                                </div>
+                            </div>
+                        </div>
+
+                        <div class="error-line-sub" ng-if="errorsPane.focus == 
'fixes:'+itemK">
+                            <div ng-repeat="fix in itemV.quickFixes" 
class="error-line-sub-line">
+                                <div class="error-line-marker">
+                                    <i class="fa fa-fw fa-magic"></i>
+                                </div>
+                                <div class="error-line-text">
+                                    {{ fix.text }}
+                                    <a class="hand btn btn-xs btn-primary" 
style="float: right;" ng-click="vm.applyQuickFix(fix)"
+                                       ng-attr-title="{{ fix.tooltip }}"
+                                    >Apply
+                                        (<ng-pluralize 
count="vm.size(fix.issues)"

Review comment:
       <img width="187" alt="Screenshot 2021-07-09 at 09 13 46" 
src="https://user-images.githubusercontent.com/81319331/125046483-f8920480-e095-11eb-81f8-d91f03c78e39.png";>
   parentheses  at 197 is not displayed.




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to