Skip to content

Commit

Permalink
[analyzer] Better UI in html reports for displaying shortcuts help
Browse files Browse the repository at this point in the history
Make the help window accessible, but don't show by default.
Use a different CSS class from macro.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@322750 91177308-0d34-0410-b5e6-96231b3b80d8
  • Loading branch information
George Karpenkov committed Jan 17, 2018
1 parent b6a88f3 commit b97e2a8
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 3 deletions.
4 changes: 4 additions & 0 deletions lib/Rewrite/HTMLRewrite.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -311,6 +311,10 @@ void html::AddHeaderFooterInternalBuiltinCSS(Rewriter &R, FileID FID,
" -webkit-border-radius:5px; -webkit-box-shadow:1px 1px 7px #000; "
" border-radius:5px; box-shadow:1px 1px 7px #000; "
"position: absolute; top: -1em; left:10em; z-index: 1 } \n"
" #tooltiphint { position: fixed; width: 50em; margin-left: -25em;"
"left: 50%; padding: 10px; border: 1px solid #b0b0b0;"
"border-radius: 2px; box-shadow: 1px 1px 7px black; "
"background-color: #c0c0c0; z-index: 2; }\n"
" .macro { color: darkmagenta; background-color:LemonChiffon;"
// Macros are position: relative to provide base for expansions.
" position: relative }\n"
Expand Down
47 changes: 44 additions & 3 deletions lib/StaticAnalyzer/Core/HTMLDiagnostics.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,9 @@ class HTMLDiagnostics : public PathDiagnosticConsumer {

/// \return Executed lines from \p D in JSON format.
std::string serializeExecutedLines(const PathDiagnostic &D);

/// \return Javascript for displaying shortcuts help;
std::string showHelpJavascript();
};

} // end anonymous namespace
Expand Down Expand Up @@ -347,6 +350,8 @@ void HTMLDiagnostics::FinalizeHTML(const PathDiagnostic& D, Rewriter &R,
int LineNumber = path.back()->getLocation().asLocation().getExpansionLineNumber();
int ColumnNumber = path.back()->getLocation().asLocation().getExpansionColumnNumber();

R.InsertTextBefore(SMgr.getLocForStartOfFile(FID), showHelpJavascript());

R.InsertTextBefore(SMgr.getLocForStartOfFile(FID),
generateKeyboardNavigationJavascript());

Expand Down Expand Up @@ -399,9 +404,17 @@ void HTMLDiagnostics::FinalizeHTML(const PathDiagnostic& D, Rewriter &R,
</table>
<!-- REPORTSUMMARYEXTRA -->
<h3>Annotated Source Code</h3>
<p><span class='macro'>[?]
<span class='expansion'>Use j/k keys for keyboard navigation</span>
</span></p>
<p>Press <a href="#" onclick="toggleHelp(); return false;">'?'</a>
to see keyboard shortcuts</p>
<div id='tooltiphint' hidden="true">
<p>Keyboard shortcuts: </p>
<ul>
<li>Use 'j/k' keys for keyboard navigation</li>
<li>Use 'Shift+S' to show/hide relevant lines</li>
<li>Use '?' to toggle this window</li>
</ul>
<a href="#" onclick="toggleHelp(); return false;">Close</a>
</div>
)<<<";

R.InsertTextBefore(SMgr.getLocForStartOfFile(FID), os.str());
Expand Down Expand Up @@ -461,6 +474,34 @@ void HTMLDiagnostics::FinalizeHTML(const PathDiagnostic& D, Rewriter &R,
html::AddHeaderFooterInternalBuiltinCSS(R, FID, Entry->getName());
}

std::string HTMLDiagnostics::showHelpJavascript() {
return R"<<<(
<script type='text/javascript'>
var toggleHelp = function() {
var hint = document.querySelector("#tooltiphint");
var attributeName = "hidden";
if (hint.hasAttribute(attributeName)) {
hint.removeAttribute(attributeName);
} else {
hint.setAttribute("hidden", "true");
}
};
window.addEventListener("keydown", function (event) {
if (event.defaultPrevented) {
return;
}
if (event.key == "?") {
toggleHelp();
} else {
return;
}
event.preventDefault();
});
</script>
)<<<";
}

std::string
HTMLDiagnostics::showRelevantLinesJavascript(const PathDiagnostic &D) {
std::string s;
Expand Down

0 comments on commit b97e2a8

Please sign in to comment.