Explore: Fix date formatting in url for trace logs link (#28381)

* Fix url formatting

* Reverse the overhang buffers

* Fix range when opening split
This commit is contained in:
Andrej Ocenas 2020-10-19 22:14:45 +02:00 committed by GitHub
parent 0a586bb7be
commit ad657dcdc3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 17 additions and 6 deletions

View File

@ -82,7 +82,7 @@ describe('createSpanLinkFactory', () => {
} as any); } as any);
expect(linkDef.href).toBe( expect(linkDef.href).toBe(
`/explore?left={"range":{"from":"20201014T005955","to":"20201014T020001"},"datasource":"Loki1","queries":[{"expr":"{cluster=\\"cluster1\\", hostname=\\"hostname1\\"}","refId":""}]}` `/explore?left={"range":{"from":"20201014T000000","to":"20201014T010006"},"datasource":"Loki1","queries":[{"expr":"{cluster=\\"cluster1\\", hostname=\\"hostname1\\"}","refId":""}]}`
); );
}); });
}); });

View File

@ -76,17 +76,18 @@ function getLokiQueryFromSpan(span: TraceSpan): string {
* something more intelligent should probably be implemented * something more intelligent should probably be implemented
*/ */
function getTimeRangeFromSpan(span: TraceSpan): TimeRange { function getTimeRangeFromSpan(span: TraceSpan): TimeRange {
const from = dateTime(span.startTime / 1000 - 5 * 1000); const from = dateTime(span.startTime / 1000 - 1000 * 60 * 60);
const spanEndMs = (span.startTime + span.duration) / 1000; const spanEndMs = (span.startTime + span.duration) / 1000;
const to = dateTime(spanEndMs + 1000 * 60 * 60); const to = dateTime(spanEndMs + 5 * 1000);
return { return {
from, from,
to, to,
// Weirdly Explore does not handle ISO string which would have been the default stringification if passed as object // Weirdly Explore does not handle ISO string which would have been the default stringification if passed as object
// and we have to use this custom format :( . // and we have to use this custom format :( .
raw: { raw: {
from: from.format('YYYYMMDDTHHmmss'), from: from.utc().format('YYYYMMDDTHHmmss'),
to: to.format('YYYYMMDDTHHmmss'), to: to.utc().format('YYYYMMDDTHHmmss'),
}, },
}; };
} }

View File

@ -681,6 +681,7 @@ export function splitClose(itemId: ExploreId): ThunkResult<void> {
export function splitOpen<T extends DataQuery = any>(options?: { export function splitOpen<T extends DataQuery = any>(options?: {
datasourceUid: string; datasourceUid: string;
query: T; query: T;
// Don't use right now. It's used for Traces to Logs interaction but is hacky in how the range is actually handled.
range?: TimeRange; range?: TimeRange;
}): ThunkResult<void> { }): ThunkResult<void> {
return async (dispatch, getState) => { return async (dispatch, getState) => {
@ -702,7 +703,16 @@ export function splitOpen<T extends DataQuery = any>(options?: {
rightState.urlState = urlState; rightState.urlState = urlState;
if (options.range) { if (options.range) {
urlState.range = options.range.raw; urlState.range = options.range.raw;
rightState.range = options.range; // This is super hacky. In traces to logs we want to create a link but also internally open split window.
// We use the same range object but the raw part is treated differently because it's parsed differently during
// init depending on whether we open split or new window.
rightState.range = {
...options.range,
raw: {
from: options.range.from.utc().toISOString(),
to: options.range.to.utc().toISOString(),
},
};
} }
dispatch(splitOpenAction({ itemState: rightState })); dispatch(splitOpenAction({ itemState: rightState }));