diff --git a/app/lib/frontend/templates.dart b/app/lib/frontend/templates.dart index 1620fee1e4..53ed919cb4 100644 --- a/app/lib/frontend/templates.dart +++ b/app/lib/frontend/templates.dart @@ -238,18 +238,6 @@ class TemplateService { break; } - final List suggestions = analysis.suggestions?.map((suggestion) { - return { - 'icon_class': _suggestionIconClass(suggestion.level), - 'title_html': - _renderSuggestionTitle(suggestion.title, suggestion.score), - 'description_html': markdownToHtml(suggestion.description, null), - 'suggestion_help_html': getSuggestionHelpMessage(suggestion.code), - }; - })?.toList(); - final hasIssues = - analysis.suggestions?.any((s) => s.isError || s.isWarning) ?? false; - List prepareDependencies(List list) { if (list == null || list.isEmpty) return const []; return list.map((pd) => {'row_html': _renderAnalysisDepRow(pd)}).toList(); @@ -285,9 +273,12 @@ class TemplateService { ?.join(', ') ?? 'unsure', 'platforms_reason_html': markdownToHtml(analysis.platformsReason, null), - 'hasSuggestions': suggestions != null && suggestions.isNotEmpty, - 'suggestions_label': hasIssues ? 'Issues and suggestions' : 'Suggestions', - 'suggestions': suggestions, + 'analysis_suggestions_html': + _renderSuggestionBlockHtml('Analysis', analysis.panaSuggestions), + 'health_suggestions_html': + _renderSuggestionBlockHtml('Health', analysis.healthSuggestions), + 'maintenance_suggestions_html': _renderSuggestionBlockHtml( + 'Maintenance', analysis.maintenanceSuggestions), 'has_dependency': hasDependency, 'dependencies': { 'has_sdk': hasSdkConstraint, @@ -305,6 +296,33 @@ class TemplateService { return _renderTemplate('pkg/analysis_tab', data); } + String _renderSuggestionBlockHtml( + String header, List suggestions) { + if (suggestions == null || suggestions.isEmpty) { + return null; + } + + final hasIssues = suggestions.any((s) => s.isError || s.isWarning); + final label = + hasIssues ? '$header issues and suggestions' : '$header suggestions'; + + final mappedValues = suggestions.map((suggestion) { + return { + 'icon_class': _suggestionIconClass(suggestion.level), + 'title_html': + _renderSuggestionTitle(suggestion.title, suggestion.score), + 'description_html': markdownToHtml(suggestion.description, null), + 'suggestion_help_html': getSuggestionHelpMessage(suggestion.code), + }; + }).toList(); + + final data = { + 'label': label, + 'suggestions': mappedValues, + }; + return _renderTemplate('pkg/analysis_suggestion_block', data); + } + Map _pkgShowPageValues( Package package, List versions, diff --git a/app/lib/shared/analyzer_client.dart b/app/lib/shared/analyzer_client.dart index 84df0a5846..57342b235e 100644 --- a/app/lib/shared/analyzer_client.dart +++ b/app/lib/shared/analyzer_client.dart @@ -245,6 +245,11 @@ class AnalysisView { List get suggestions => getAllSuggestions(_summary); + List get panaSuggestions => _summary?.suggestions; + List get healthSuggestions => _summary?.health?.suggestions; + List get maintenanceSuggestions => + _summary?.maintenance?.suggestions; + double get maintenanceScore => _data?.maintenanceScore ?? 0.0; } diff --git a/app/test/frontend/golden/analysis_tab_aborted.html b/app/test/frontend/golden/analysis_tab_aborted.html index a066d5199a..febd7927ea 100644 --- a/app/test/frontend/golden/analysis_tab_aborted.html +++ b/app/test/frontend/golden/analysis_tab_aborted.html @@ -112,3 +112,6 @@

Platforms

+ + + diff --git a/app/test/frontend/golden/analysis_tab_http.html b/app/test/frontend/golden/analysis_tab_http.html index 66d9be09d4..ccb9953c97 100644 --- a/app/test/frontend/golden/analysis_tab_http.html +++ b/app/test/frontend/golden/analysis_tab_http.html @@ -112,7 +112,9 @@

Platforms

No platform restriction found in primary library package:http/http.dart.

-

Suggestions

+ + +

Maintenance suggestions

@@ -138,6 +140,7 @@

Suggestions

+

Dependencies

diff --git a/app/test/frontend/golden/analysis_tab_mock.html b/app/test/frontend/golden/analysis_tab_mock.html index 8ce15d628d..a197028282 100644 --- a/app/test/frontend/golden/analysis_tab_mock.html +++ b/app/test/frontend/golden/analysis_tab_mock.html @@ -112,7 +112,8 @@

Platforms

All libraries agree.

-

Issues and suggestions

+ +

Health issues and suggestions

@@ -126,6 +127,8 @@

Issues and suggestions

+ +

Dependencies

diff --git a/app/test/frontend/golden/analysis_tab_outdated.html b/app/test/frontend/golden/analysis_tab_outdated.html index 02b41e3d17..96dac32ea4 100644 --- a/app/test/frontend/golden/analysis_tab_outdated.html +++ b/app/test/frontend/golden/analysis_tab_outdated.html @@ -101,3 +101,6 @@

+ + + diff --git a/app/test/frontend/golden/pkg_show_page.html b/app/test/frontend/golden/pkg_show_page.html index d1ee84a2df..46e3b697cf 100644 --- a/app/test/frontend/golden/pkg_show_page.html +++ b/app/test/frontend/golden/pkg_show_page.html @@ -292,6 +292,9 @@

Platforms

+ + +

Dependencies

diff --git a/app/test/frontend/golden/pkg_show_page_discontinued.html b/app/test/frontend/golden/pkg_show_page_discontinued.html index 1924f52804..6f8ed2bbfd 100644 --- a/app/test/frontend/golden/pkg_show_page_discontinued.html +++ b/app/test/frontend/golden/pkg_show_page_discontinued.html @@ -276,6 +276,9 @@

3. Import it

+ + + diff --git a/app/test/frontend/golden/pkg_show_page_flutter_plugin.html b/app/test/frontend/golden/pkg_show_page_flutter_plugin.html index 3a46048f9e..b574d4930a 100644 --- a/app/test/frontend/golden/pkg_show_page_flutter_plugin.html +++ b/app/test/frontend/golden/pkg_show_page_flutter_plugin.html @@ -280,6 +280,9 @@

Platforms

+ + + diff --git a/app/test/frontend/golden/pkg_show_page_legacy.html b/app/test/frontend/golden/pkg_show_page_legacy.html index ef373ae824..cd6bf55b9b 100644 --- a/app/test/frontend/golden/pkg_show_page_legacy.html +++ b/app/test/frontend/golden/pkg_show_page_legacy.html @@ -278,7 +278,7 @@

3. Import it

Until this is resolved, the package will receive a health and maintenance score of 0.

-

Issues and suggestions

+

Analysis issues and suggestions

@@ -293,6 +293,9 @@

Issues and suggestions

+ + +
diff --git a/app/test/frontend/golden/pkg_show_page_outdated.html b/app/test/frontend/golden/pkg_show_page_outdated.html index 870d7ad9cd..34ae65bc16 100644 --- a/app/test/frontend/golden/pkg_show_page_outdated.html +++ b/app/test/frontend/golden/pkg_show_page_outdated.html @@ -280,6 +280,9 @@

3. Import it

+ + + diff --git a/app/test/frontend/golden/pkg_show_version_page.html b/app/test/frontend/golden/pkg_show_version_page.html index b040dc261d..0725ccc20d 100644 --- a/app/test/frontend/golden/pkg_show_version_page.html +++ b/app/test/frontend/golden/pkg_show_version_page.html @@ -294,6 +294,9 @@

Platforms

+ + +

Dependencies

diff --git a/app/test/frontend/templates_test.dart b/app/test/frontend/templates_test.dart index 76cd239ea6..1a8780945f 100644 --- a/app/test/frontend/templates_test.dart +++ b/app/test/frontend/templates_test.dart @@ -299,7 +299,7 @@ void main() { platforms: ['web'], platformsReason: 'All libraries agree.', health: 0.95, - suggestions: [ + healthSuggestions: [ new Suggestion.error(SuggestionCode.dartfmtAborted, 'Fix `dartfmt`.', 'Running `dartfmt -n .` failed.'), ], @@ -650,6 +650,15 @@ class MockAnalysisView implements AnalysisView { @override List suggestions; + @override + List panaSuggestions; + + @override + List healthSuggestions; + + @override + List maintenanceSuggestions; + @override double maintenanceScore; @@ -663,5 +672,8 @@ class MockAnalysisView implements AnalysisView { this.devDependencies, this.health, this.suggestions, + this.panaSuggestions, + this.healthSuggestions, + this.maintenanceSuggestions, }); } diff --git a/app/views/pkg/analysis_suggestion_block.mustache b/app/views/pkg/analysis_suggestion_block.mustache new file mode 100644 index 0000000000..381e2ab444 --- /dev/null +++ b/app/views/pkg/analysis_suggestion_block.mustache @@ -0,0 +1,16 @@ +{{! Copyright (c) 2018, the Dart project authors. Please see the AUTHORS file + for details. All rights reserved. Use of this source code is governed by a + BSD-style license that can be found in the LICENSE file. }} +

{{label}}

+{{#suggestions}} +
+
+ + {{& title_html}} +
+
+ {{& description_html}} + {{& suggestion_help_html}} +
+
+{{/suggestions}} diff --git a/app/views/pkg/analysis_tab.mustache b/app/views/pkg/analysis_tab.mustache index bc8166ec53..2e8a3b4e35 100644 --- a/app/views/pkg/analysis_tab.mustache +++ b/app/views/pkg/analysis_tab.mustache @@ -91,21 +91,9 @@
{{& platforms_reason_html}}
{{/show_analysis}} -{{#hasSuggestions}} -

{{suggestions_label}}

-{{#suggestions}} -
-
- - {{& title_html}} -
-
- {{& description_html}} - {{& suggestion_help_html}} -
-
-{{/suggestions}} -{{/hasSuggestions}} +{{& analysis_suggestions_html}} +{{& health_suggestions_html}} +{{& maintenance_suggestions_html}} {{#has_dependency}}

Dependencies