Skip to content

Commit be03dd4

Browse files
committed
add filter in telemetry viewer and detektMain
1 parent 40caaec commit be03dd4

File tree

4 files changed

+41
-8
lines changed

4 files changed

+41
-8
lines changed

plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/QInlineCompletionProvider.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ class QInlineCompletionProvider(private val cs: CoroutineScope) : InlineCompleti
150150
}
151151

152152
fun getAllValidVariantsCount(session: InlineCompletionSession) =
153-
session.capture()?.variants?.filter { isValidVariant(it) }?.size ?: 0
153+
session.capture()?.variants?.count { isValidVariant(it) } ?: 0
154154

155155
private fun isValidVariant(variant: InlineCompletionVariant.Snapshot) =
156156
(

plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/telemetry/CodeWhispererTelemetryService.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ class CodeWhispererTelemetryService {
9595
val params = LogInlineCompletionSessionResultsParams(
9696
sessionId = sessionContext.sessionId,
9797
completionSessionResult = sessionContext.itemContexts.filter { it.item != null }.associate {
98-
(it.item?.itemId ?: "") to InlineCompletionStates(
98+
it.item?.itemId.orEmpty() to InlineCompletionStates(
9999
seen = it.hasSeen,
100100
accepted = it.isAccepted,
101101
discarded = it.isDiscarded

plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererTestBase.kt

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,12 @@
33

44
package software.aws.toolkits.jetbrains.services.codewhisperer
55

6-
import com.intellij.codeInsight.inline.completion.InlineCompletionLifecycleTestDSL
7-
import com.intellij.codeInsight.inline.completion.testInlineCompletion
86
import com.intellij.openapi.application.ApplicationManager
97
import com.intellij.openapi.editor.Editor
108
import com.intellij.openapi.project.Project
119
import com.intellij.psi.PsiFile
1210
import com.intellij.testFramework.DisposableRule
1311
import com.intellij.testFramework.RuleChain
14-
import com.intellij.testFramework.common.waitUntil
15-
import com.intellij.testFramework.fixtures.CodeInsightTestFixture
1612
import com.intellij.testFramework.replaceService
1713
import com.intellij.testFramework.runInEdtAndWait
1814
import io.mockk.every
@@ -63,7 +59,6 @@ import software.aws.toolkits.jetbrains.services.codewhisperer.model.InvocationCo
6359
import software.aws.toolkits.jetbrains.services.codewhisperer.model.LatencyContext
6460
import software.aws.toolkits.jetbrains.services.codewhisperer.model.TriggerTypeInfo
6561
import software.aws.toolkits.jetbrains.services.codewhisperer.popup.CodeWhispererPopupManager
66-
import software.aws.toolkits.jetbrains.services.codewhisperer.popup.QInlineCompletionProvider
6762
import software.aws.toolkits.jetbrains.services.codewhisperer.service.CodeWhispererInvocationStatus
6863
import software.aws.toolkits.jetbrains.services.codewhisperer.service.CodeWhispererRecommendationManager
6964
import software.aws.toolkits.jetbrains.services.codewhisperer.service.CodeWhispererService

plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/services/telemetry/OpenTelemetryAction.kt

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,18 @@ import com.intellij.openapi.project.DefaultProjectFactory
1414
import com.intellij.openapi.project.DumbAwareAction
1515
import com.intellij.openapi.ui.FrameWrapper
1616
import com.intellij.openapi.util.Disposer
17+
import com.intellij.ui.DocumentAdapter
1718
import com.intellij.ui.JBColor
19+
import com.intellij.ui.components.JBLabel
20+
import com.intellij.ui.components.JBTextField
1821
import com.intellij.util.ui.components.BorderLayoutPanel
1922
import software.aws.toolkits.core.telemetry.MetricEvent
2023
import software.aws.toolkits.jetbrains.isDeveloperMode
24+
import java.awt.BorderLayout
2125
import javax.swing.BorderFactory
2226
import javax.swing.JComponent
27+
import javax.swing.JPanel
28+
import javax.swing.event.DocumentEvent
2329

2430
class OpenTelemetryAction : DumbAwareAction() {
2531
override fun actionPerformed(event: AnActionEvent) {
@@ -38,6 +44,8 @@ class OpenTelemetryAction : DumbAwareAction() {
3844
setViewer(true)
3945
}.console
4046
}
47+
private val telemetryEvents = mutableListOf<MetricEvent>()
48+
private var currentFilter = ""
4149

4250
init {
4351
title = "Telemetry Viewer"
@@ -48,11 +56,20 @@ class OpenTelemetryAction : DumbAwareAction() {
4856
val panel = BorderLayoutPanel()
4957
val consoleComponent = consoleView.component
5058

59+
// Add search/filter bar at the top
60+
val filterPanel = JPanel(BorderLayout())
61+
val filterField = JBTextField().apply {
62+
emptyText.text = "Filter telemetry events..."
63+
}
64+
filterPanel.add(JBLabel("Filter: "), BorderLayout.WEST)
65+
filterPanel.add(filterField, BorderLayout.CENTER)
66+
5167
val actionGroup = DefaultActionGroup(*consoleView.createConsoleActions())
5268
val toolbar = ActionManager.getInstance().createActionToolbar("AWS.TelemetryViewer", actionGroup, false)
5369

5470
toolbar.setTargetComponent(consoleComponent)
5571

72+
panel.addToTop(filterPanel)
5673
panel.addToLeft(toolbar.component)
5774
panel.addToCenter(consoleComponent)
5875

@@ -64,11 +81,32 @@ class OpenTelemetryAction : DumbAwareAction() {
6481
Disposer.register(this) { telemetryService.removeListener(this) }
6582
Disposer.register(this, consoleView)
6683

84+
// Implement filtering logic
85+
filterField.document.addDocumentListener(object : DocumentAdapter() {
86+
override fun textChanged(e: DocumentEvent) {
87+
// Filter console content based on filterField.text
88+
applyFilter(filterField.text)
89+
}
90+
})
91+
6792
return panel
6893
}
6994

95+
private fun applyFilter(filterText: String) {
96+
currentFilter = filterText
97+
consoleView.clear()
98+
telemetryEvents.filter {
99+
it.toString().contains(filterText, ignoreCase = true)
100+
}.forEach { event ->
101+
consoleView.print(event.toString() + "\n", ConsoleViewContentType.NORMAL_OUTPUT)
102+
}
103+
}
104+
70105
override fun onTelemetryEvent(event: MetricEvent) {
71-
consoleView.print(event.toString() + "\n", ConsoleViewContentType.NORMAL_OUTPUT)
106+
telemetryEvents.add(event)
107+
if (event.toString().contains(currentFilter, ignoreCase = true)) {
108+
consoleView.print(event.toString() + "\n", ConsoleViewContentType.NORMAL_OUTPUT)
109+
}
72110
}
73111
}
74112
}

0 commit comments

Comments
 (0)