diff --git a/plugins/evaluation-plugin/core/resources/script.js b/plugins/evaluation-plugin/core/resources/script.js index 479f578b46ad..59095b7a02c0 100644 --- a/plugins/evaluation-plugin/core/resources/script.js +++ b/plugins/evaluation-plugin/core/resources/script.js @@ -5,6 +5,7 @@ const prefix = "ep@" const LC_KEYS = { delimiter: prefix + "delimiter" }; +const EXTERNAL_VARIABLES = {} document.addEventListener("click", function (e) { @@ -120,6 +121,9 @@ function updatePopup(sessionDiv) { const lookup = getLookup(sessionDiv) const popup = document.createElement("DIV") popup.setAttribute("class", "autocomplete-items") + if (EXTERNAL_VARIABLES["popup.show.under.session"] === "true") { + popup.classList.add("popup-show-under-session") + } const prefixDiv = document.createElement("DIV") prefixDiv.setAttribute("style", "background-color: lightgrey;") const codeElement = document.querySelector('.code'); @@ -292,8 +296,8 @@ function addSuggestions(sessionDiv, popup, lookup) { p.setAttribute("style", "font-weight: bold;") } const presentationText = suggestions[i].presentationText.replace(//g, '>') - p.innerHTML = presentationText - // p.innerHTML = removeCommonIndentFromCodeSnippet(presentationText) // FIXME doesn't work anyway? + p.innerHTML = EXTERNAL_VARIABLES["suggestion.indent.preserve"] === "true" ? + presentationText : removeCommonIndentFromCodeSnippet(presentationText) suggestionDiv.appendChild(p) popup.appendChild(suggestionDiv) } @@ -555,6 +559,9 @@ function updateMultilinePopup(event) { const lookup = getLookup(sessionDiv) const popup = document.createElement("DIV") popup.setAttribute("class", "autocomplete-items") + if (EXTERNAL_VARIABLES["popup.show.under.session"] === "true") { + popup.classList.add("popup-show-under-session") + } addMultilineHeaders(popup, showSuggestion) let context = getMultilineContext(sessionDiv) diff --git a/plugins/evaluation-plugin/core/resources/style.css b/plugins/evaluation-plugin/core/resources/style.css index ca5bf15ad15b..0cf547c939f0 100644 --- a/plugins/evaluation-plugin/core/resources/style.css +++ b/plugins/evaluation-plugin/core/resources/style.css @@ -127,10 +127,14 @@ button:focus { border-bottom: none; border-top: none; z-index: 99; - top: 100%; + top: 1.5em; left: 0; } +.autocomplete-items.popup-show-under-session { + top: 100%; +} + .autocomplete-items div { padding: 5px; cursor: pointer; diff --git a/plugins/evaluation-plugin/core/src/com/intellij/cce/report/BasicFileReportGenerator.kt b/plugins/evaluation-plugin/core/src/com/intellij/cce/report/BasicFileReportGenerator.kt index 8b118445e7ac..d6391cdc851f 100644 --- a/plugins/evaluation-plugin/core/src/com/intellij/cce/report/BasicFileReportGenerator.kt +++ b/plugins/evaluation-plugin/core/src/com/intellij/cce/report/BasicFileReportGenerator.kt @@ -12,7 +12,8 @@ open class BasicFileReportGenerator( filterName: String, comparisonFilterName: String, featuresStorages: List, - dirs: GeneratorDirectories + dirs: GeneratorDirectories, + private val externalVariables: Map = mapOf(), ) : FileReportGenerator(featuresStorages, dirs, filterName, comparisonFilterName) { override fun getHtml(fileEvaluations: List, resourcePath: String, text: String): String { @@ -34,6 +35,16 @@ open class BasicFileReportGenerator( for (resource in scripts){ script { src = resource.destinationPath } } + + script { + unsafe { + raw( + externalVariables + .map { "EXTERNAL_VARIABLES[\"${it.key}\"] = \"${it.value}\";" } + .joinToString("\n") + ) + } + } } } diff --git a/plugins/evaluation-plugin/src/com/intellij/cce/evaluable/conflictResolution/ConflictResolutionFeature.kt b/plugins/evaluation-plugin/src/com/intellij/cce/evaluable/conflictResolution/ConflictResolutionFeature.kt index ffba317f4594..d33d72fc007b 100644 --- a/plugins/evaluation-plugin/src/com/intellij/cce/evaluable/conflictResolution/ConflictResolutionFeature.kt +++ b/plugins/evaluation-plugin/src/com/intellij/cce/evaluable/conflictResolution/ConflictResolutionFeature.kt @@ -7,7 +7,12 @@ import com.intellij.cce.evaluation.SimpleFileEnvironment import com.intellij.cce.metric.Metric import com.intellij.cce.metric.PrecisionMetric import com.intellij.cce.metric.SessionsCountMetric +import com.intellij.cce.report.BasicFileReportGenerator +import com.intellij.cce.report.FileReportGenerator +import com.intellij.cce.report.GeneratorDirectories import com.intellij.cce.workspace.Config +import com.intellij.cce.workspace.storages.FeaturesStorage +import com.intellij.cce.workspace.storages.FullLineLogsStorage class ConflictResolutionFeature : StandaloneFeature("conflict-resolution") { override fun getStrategySerializer(): StrategySerializer = ConflictResolutionStrategy.Serializer() @@ -21,4 +26,21 @@ class ConflictResolutionFeature : StandaloneFeature( SessionsCountMetric(), PrecisionMetric() ) + + override fun getFileReportGenerator( + filterName: String, + comparisonFilterName: String, + featuresStorages: List, + fullLineStorages: List, + dirs: GeneratorDirectories + ): FileReportGenerator = BasicFileReportGenerator( + filterName, + comparisonFilterName, + featuresStorages, + dirs, + externalVariables = mapOf( + "popup.show.under.session" to "true", + "suggestion.indent.preserve" to "true" + ) + ) } \ No newline at end of file