Skip to content

Commit ce460b0

Browse files
Merge pull request #2562 from digma-ai/feature/error-timelines-data
Add new messages load data from error time line
2 parents e549d83 + 23a0959 commit ce460b0

File tree

8 files changed

+207
-100
lines changed

8 files changed

+207
-100
lines changed

analytics-provider/src/main/java/org/digma/intellij/plugin/analytics/AnalyticsProvider.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ public interface AnalyticsProvider extends Closeable {
4646

4747
String getGlobalErrors(String payload);
4848

49+
String getErrorTimeseries(String errorId, Map<String, Object> payload);
50+
4951
String getGlobalErrorsFilters(String payload);
5052

5153
void setInsightCustomStartTime(CustomStartTimeInsightRequest customStartTimeInsightRequest);

analytics-provider/src/main/java/org/digma/intellij/plugin/analytics/RestAnalyticsProvider.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,11 @@ public String getGlobalErrorsFilters(String payload) {
176176
return execute(() -> client.analyticsProvider.getGlobalErrorsFilters(payload));
177177
}
178178

179+
@Override
180+
public String getErrorTimeseries(String errorId, Map<String, Object> payload) {
181+
return execute(() -> client.analyticsProvider.getErrorTimeseries( errorId, payload));
182+
}
183+
179184
@Override
180185
public void setInsightCustomStartTime(CustomStartTimeInsightRequest customStartTimeInsightRequest) {
181186
execute(() -> client.analyticsProvider.setInsightCustomStartTime(customStartTimeInsightRequest));
@@ -813,6 +818,13 @@ private interface AnalyticsProviderRetrofit {
813818
@POST("errors")
814819
Call<String> getGlobalErrors(@Body String payload);
815820

821+
@Headers({
822+
"Accept: application/+json",
823+
"Content-Type:application/json"
824+
})
825+
@GET("errors/{errorId}/timeseries")
826+
Call<String> getErrorTimeseries(@Path("errorId") String errorSourceId, @QueryMap Map<String, Object> fields);
827+
816828
@Headers({
817829
"Accept: application/+json",
818830
"Content-Type:application/json"

ide-common/src/main/java/org/digma/intellij/plugin/analytics/AnalyticsService.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,10 @@ public String getGlobalErrors(String payload) throws AnalyticsServiceException {
236236
return executeCatching(() -> analyticsProviderProxy.getGlobalErrors(payload));
237237
}
238238

239+
public String getErrorTimeseries(String error_id, Map<String, Object> payload) throws AnalyticsServiceException {
240+
return executeCatching(() -> analyticsProviderProxy.getErrorTimeseries(error_id, payload));
241+
}
242+
239243
public String getGlobalErrorsFilters(String payload) throws AnalyticsServiceException {
240244
return executeCatching(() -> analyticsProviderProxy.getGlobalErrorsFilters(payload));
241245
}

src/main/kotlin/org/digma/intellij/plugin/ui/errors/ErrorsMessageRouterHandler.kt

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,15 @@ import com.fasterxml.jackson.databind.node.ObjectNode
88
import com.intellij.openapi.project.Project
99
import org.cef.browser.CefBrowser
1010
import org.digma.intellij.plugin.log.Log
11+
import org.digma.intellij.plugin.ui.errors.model.SetErrorTimeSeriesDataMessage
1112
import org.digma.intellij.plugin.ui.errors.model.SetErrorsDataMessage
1213
import org.digma.intellij.plugin.ui.errors.model.SetErrorsDetailsMessage
1314
import org.digma.intellij.plugin.ui.errors.model.SetFilesUrlsMessage
1415
import org.digma.intellij.plugin.ui.errors.model.SetGlobalErrorsDataMessage
1516
import org.digma.intellij.plugin.ui.errors.model.SetGlobalErrorsFiltersDataMessage
1617
import org.digma.intellij.plugin.ui.jcef.BaseCommonMessageRouterHandler
18+
import org.digma.intellij.plugin.ui.jcef.getMapFromNode
19+
import org.digma.intellij.plugin.ui.jcef.getQueryMapFromPayload
1720
import org.digma.intellij.plugin.ui.jcef.serializeAndExecuteWindowPostMessageJavaScript
1821

1922
class ErrorsMessageRouterHandler(project: Project) : BaseCommonMessageRouterHandler(project) {
@@ -26,6 +29,7 @@ class ErrorsMessageRouterHandler(project: Project) : BaseCommonMessageRouterHand
2629
"ERRORS/GET_ERRORS_DATA" -> getErrorsData(project, browser, requestJsonNode)
2730
"ERRORS/GET_GLOBAL_ERRORS_DATA" -> getGlobalErrorsData(project, browser, requestJsonNode)
2831
"ERRORS/GET_GLOBAL_ERRORS_FILTERS_DATA" -> getGlobalErrorsFiltersData(project, browser, requestJsonNode)
32+
"ERRORS/GET_ERROR_TIME_SERIES_DATA" -> getErrorTimeSeriesData(project, browser, requestJsonNode)
2933
"ERRORS/GET_ERROR_DETAILS" -> getErrorDetails(project, browser, requestJsonNode)
3034
"ERRORS/OPEN_RAW_ERROR_STACK_TRACE_IN_EDITOR" -> openStackTrace(project, requestJsonNode)
3135
"ERRORS/GO_TO_CODE_LOCATION" -> navigateToCode(project, requestJsonNode)
@@ -64,6 +68,18 @@ class ErrorsMessageRouterHandler(project: Project) : BaseCommonMessageRouterHand
6468
}
6569
}
6670

71+
private fun getErrorTimeSeriesData(project: Project, browser: CefBrowser, requestJsonNode: JsonNode) {
72+
getPayloadFromRequest(requestJsonNode)?.let { payload ->
73+
val errorId = payload.get("errorId")?.takeIf { it !is NullNode }?.asText()
74+
if (errorId != null) {
75+
var queryMap = getMapFromNode(payload.get("scope"), objectMapper)
76+
val errorsData = ErrorsService.getInstance(project).getErrorTimeseries(errorId, queryMap)
77+
val setErrorsDataMessage = SetErrorTimeSeriesDataMessage(errorsData)
78+
serializeAndExecuteWindowPostMessageJavaScript(browser, setErrorsDataMessage, project)
79+
}
80+
}
81+
}
82+
6783
private fun getGlobalErrorsFiltersData(project: Project, browser: CefBrowser, requestJsonNode: JsonNode) {
6884
getPayloadFromRequest(requestJsonNode)?.let { payload ->
6985
val errorsData = ErrorsService.getInstance(project).getGlobalErrorsFiltersData(payload.toString())

src/main/kotlin/org/digma/intellij/plugin/ui/errors/ErrorsService.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,15 @@ class ErrorsService(val project: Project) : Disposable {
5656
}
5757
}
5858

59+
fun getErrorTimeseries( errorId: String, payload:Map<String, Any>): String? {
60+
try {
61+
return AnalyticsService.getInstance(project).getErrorTimeseries(errorId, payload)
62+
} catch (e: Throwable) {
63+
Log.warnWithException(logger, project, e, "error fetching errors")
64+
return null
65+
}
66+
}
67+
5968
fun getErrorDetails(errorId: String): String {
6069
try {
6170
return AnalyticsService.getInstance(project).getErrorDetails(errorId)
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package org.digma.intellij.plugin.ui.errors.model
2+
3+
import com.fasterxml.jackson.annotation.JsonRawValue
4+
import org.digma.intellij.plugin.ui.jcef.JCEFGlobalConstants
5+
6+
class SetErrorTimeSeriesDataMessage(@JsonRawValue val payload: String?) {
7+
val type = JCEFGlobalConstants.REQUEST_MESSAGE_TYPE
8+
val action = "ERRORS/SET_ERROR_TIME_SERIES_DATA"
9+
}

src/main/resources/webview/dashboard/index.js

Lines changed: 32 additions & 32 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/main/resources/webview/main/index.js

Lines changed: 123 additions & 68 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)