From 489cf84bbb8061df169e584e151509d7c9ad2fae Mon Sep 17 00:00:00 2001 From: Luis Pereira Date: Mon, 10 Jun 2024 16:07:15 +0200 Subject: [PATCH 01/12] timezone support --- .../__snapshots__/datasource.test.ts.snap | 14 ++++++++++++++ src/__tests__/datasource.test.ts | 2 ++ src/__tests__/datasource.unit.test.ts | 2 ++ src/cdf/client.ts | 6 ++++-- src/datasource.ts | 3 +++ src/datasources/TimeseriesDatasource.ts | 2 ++ src/plugin.json | 4 ++++ src/types.ts | 2 ++ 8 files changed, 33 insertions(+), 2 deletions(-) diff --git a/src/__tests__/__snapshots__/datasource.test.ts.snap b/src/__tests__/__snapshots__/datasource.test.ts.snap index 3f378174..b4f3a80b 100644 --- a/src/__tests__/__snapshots__/datasource.test.ts.snap +++ b/src/__tests__/__snapshots__/datasource.test.ts.snap @@ -59,6 +59,7 @@ exports[`Datasource Query Give "Select Timeseries of Relationships target from A ], "limit": 10000, "start": 1549336675000, + "timeZone": "Europe/Oslo", }, "headers": undefined, "method": "POST", @@ -188,6 +189,7 @@ exports[`Datasource Query Given "Select Timeseries from Asset" queries should ge ], "limit": 3333, "start": 1549336675000, + "timeZone": "Europe/Oslo", }, "headers": undefined, "method": "POST", @@ -211,6 +213,7 @@ exports[`Datasource Query Given "Select Timeseries from Asset" queries should ge ], "limit": 10000, "start": 1549336675000, + "timeZone": "Europe/Oslo", }, "headers": undefined, "method": "POST", @@ -336,6 +339,7 @@ exports[`Datasource Query Given "Select Timeseries" queries should generate the ], "limit": 100000, "start": 1549336675000, + "timeZone": "Europe/Oslo", }, "headers": undefined, "method": "POST", @@ -359,6 +363,7 @@ exports[`Datasource Query Given "Select Timeseries" queries should generate the ], "limit": 10000, "start": 1549336675000, + "timeZone": "Europe/Oslo", }, "headers": undefined, "method": "POST", @@ -382,6 +387,7 @@ exports[`Datasource Query Given "Select Timeseries" queries should generate the ], "limit": 10000, "start": 1549336675000, + "timeZone": "Europe/Oslo", }, "headers": undefined, "method": "POST", @@ -445,6 +451,7 @@ exports[`Datasource Query Given custom queries should generate the correct filte "expression": "ts{id=1, aggregate="discreteVariance", granularity="10d"}", "limit": 10000, "start": 1549336675000, + "timeZone": "Europe/Oslo", }, ], }, @@ -464,6 +471,7 @@ exports[`Datasource Query Given custom queries should generate the correct filte "expression": "ts{externalId="Timeseries1"}", "limit": 10000, "start": 1549336675000, + "timeZone": "Europe/Oslo", }, ], }, @@ -555,18 +563,21 @@ exports[`Datasource Query Given custom queries with functions should generate th "expression": "ts{id=1} + pi()", "limit": 3333, "start": 1549336675000, + "timeZone": "Europe/Oslo", }, { "end": 1549338475000, "expression": "ts{id=2} + pi()", "limit": 3333, "start": 1549336675000, + "timeZone": "Europe/Oslo", }, { "end": 1549338475000, "expression": "ts{id=3} + pi()", "limit": 3333, "start": 1549336675000, + "timeZone": "Europe/Oslo", }, ], }, @@ -586,18 +597,21 @@ exports[`Datasource Query Given custom queries with functions should generate th "expression": "ts{id=1} * ts{externalId="Timeseries1", aggregate="average"} - ts{externalId="Timeseries1", aggregate="average", granularity="10m"}", "limit": 3333, "start": 1549336675000, + "timeZone": "Europe/Oslo", }, { "end": 1549338475000, "expression": "ts{id=2} * ts{externalId="Timeseries1", aggregate="average"} - ts{externalId="Timeseries1", aggregate="average", granularity="10m"}", "limit": 3333, "start": 1549336675000, + "timeZone": "Europe/Oslo", }, { "end": 1549338475000, "expression": "ts{id=3} * ts{externalId="Timeseries1", aggregate="average"} - ts{externalId="Timeseries1", aggregate="average", granularity="10m"}", "limit": 3333, "start": 1549336675000, + "timeZone": "Europe/Oslo", }, ], }, diff --git a/src/__tests__/datasource.test.ts b/src/__tests__/datasource.test.ts index e872bd34..cc9b880b 100644 --- a/src/__tests__/datasource.test.ts +++ b/src/__tests__/datasource.test.ts @@ -43,6 +43,7 @@ const options: any = { format: 'json', panelId: 1, dashboardUID: 1, + timezone: 'Europe/Oslo' }; const tsResponseWithId = (id, externalId = `Timeseries${id}`, description = 'test timeseries') => getItemsResponseObject([{ id, externalId, description }]); @@ -88,6 +89,7 @@ describe('Datasource Query', () => { aggregates, limit: 10000, granularity: '30s', + timeZone: 'Europe/Oslo', }); }); diff --git a/src/__tests__/datasource.unit.test.ts b/src/__tests__/datasource.unit.test.ts index fd3d81fd..68a39a7f 100644 --- a/src/__tests__/datasource.unit.test.ts +++ b/src/__tests__/datasource.unit.test.ts @@ -61,6 +61,7 @@ describe('formQueryForItems: enrich items with additional props for request', () const queryOptions = { range: { from: dateTime(0), to: dateTime(3000) }, intervalMs: 2000, + timezone: 'UTC', } as QueryOptions; it('for timeseries/data request', () => { @@ -84,6 +85,7 @@ describe('formQueryForItems: enrich items with additional props for request', () ], limit: 10000, start: 0, + timeZone: 'UTC' }); }); diff --git a/src/cdf/client.ts b/src/cdf/client.ts index c10ec72e..a3c3904b 100644 --- a/src/cdf/client.ts +++ b/src/cdf/client.ts @@ -45,8 +45,9 @@ const variableLabelRegex = /{{([^{}]+)}}/g; export function formQueryForItems( { items, type, target }: QueriesDataItem, - { range, intervalMs }: QueryOptions + { range, intervalMs, timezone: timeZone }: QueryOptions ): CDFDataQueryRequest { + console.log({ timeZone }) const { aggregation, granularity } = target; const [start, end] = getRange(range); @@ -54,7 +55,7 @@ export function formQueryForItems( case 'synthetic': { const limit = calculateDPLimitPerQuery(items.length); return { - items: items.map(({ expression }) => ({ expression, start, end, limit })), + items: items.map(({ expression }) => ({ expression, start, end, limit, timeZone })), }; } case 'latest': { @@ -78,6 +79,7 @@ export function formQueryForItems( start, items, limit, + timeZone }; } } diff --git a/src/datasource.ts b/src/datasource.ts index 924c89cc..a44e8106 100644 --- a/src/datasource.ts +++ b/src/datasource.ts @@ -9,6 +9,7 @@ import { DataQueryResponse, MutableDataFrame, AnnotationQuery, + getTimeZone } from '@grafana/data'; import { BackendSrv, BackendSrvRequest, getBackendSrv, getTemplateSrv, TemplateSrv } from '@grafana/runtime'; import _ from 'lodash'; @@ -130,6 +131,8 @@ export default class CogniteDatasource extends DataSourceApi< const queryTargets = filterEmptyQueryTargets(options.targets).map((t) => this.replaceVariablesInTarget(t, options.scopedVars) ); + const tzone = this.replaceVariable("$__timezone", options.scopedVars); + options.timezone = tzone; const { eventTargets, diff --git a/src/datasources/TimeseriesDatasource.ts b/src/datasources/TimeseriesDatasource.ts index abd7a87b..84da33b7 100644 --- a/src/datasources/TimeseriesDatasource.ts +++ b/src/datasources/TimeseriesDatasource.ts @@ -134,6 +134,7 @@ export class TimeseriesDatasource { queryTargets: QueryTarget[], options: QueryOptions ): Promise> { + console.log("options", options) const itemsForTargetsPromises = queryTargets.map(async (target) => { try { const [min, max] = getRange(options.range); @@ -195,6 +196,7 @@ export class TimeseriesDatasource { } async query(options: DataQueryRequest): Promise { const timeRange = getRange(options.range); + console.log('options.timezone', options.timezone) const { failed, succeded } = await this.fetchTimeseriesForTargets(options.targets, options); handleFailedTargets(failed); diff --git a/src/plugin.json b/src/plugin.json index bad92938..cf2297c4 100644 --- a/src/plugin.json +++ b/src/plugin.json @@ -65,6 +65,10 @@ { "name": "x-cdp-app", "content": "Cognite Grafana Datasource" + }, + { + "name": "cdf-version", + "content": "beta" } ], "tokenAuth": { diff --git a/src/types.ts b/src/types.ts index 201ab8ef..5bdefc05 100644 --- a/src/types.ts +++ b/src/types.ts @@ -416,6 +416,7 @@ export type DataQueryRequestItem = { aggregates?: string[]; id?: number; externalId?: string; + timeZone?: string; }; export type Aggregates = Pick; @@ -428,6 +429,7 @@ export interface CDFDataQueryRequest { limit?: number; aggregates?: string[]; granularity?: string; + timeZone?: string; } export interface DataResponse { From 9092d8fecc3b4395e631af86e3c54583b2890112 Mon Sep 17 00:00:00 2001 From: Luis Pereira Date: Tue, 11 Jun 2024 02:03:43 +0200 Subject: [PATCH 02/12] fix --- src/cdf/client.ts | 1 - src/datasource.ts | 4 ++-- src/datasources/TimeseriesDatasource.ts | 2 -- 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/src/cdf/client.ts b/src/cdf/client.ts index a3c3904b..9c891e83 100644 --- a/src/cdf/client.ts +++ b/src/cdf/client.ts @@ -47,7 +47,6 @@ export function formQueryForItems( { items, type, target }: QueriesDataItem, { range, intervalMs, timezone: timeZone }: QueryOptions ): CDFDataQueryRequest { - console.log({ timeZone }) const { aggregation, granularity } = target; const [start, end] = getRange(range); diff --git a/src/datasource.ts b/src/datasource.ts index a44e8106..871e9060 100644 --- a/src/datasource.ts +++ b/src/datasource.ts @@ -131,8 +131,8 @@ export default class CogniteDatasource extends DataSourceApi< const queryTargets = filterEmptyQueryTargets(options.targets).map((t) => this.replaceVariablesInTarget(t, options.scopedVars) ); - const tzone = this.replaceVariable("$__timezone", options.scopedVars); - options.timezone = tzone; + + options.timezone = options.timezone === 'browser' ? this.replaceVariable("$__timezone", options.scopedVars) : options.timezone; const { eventTargets, diff --git a/src/datasources/TimeseriesDatasource.ts b/src/datasources/TimeseriesDatasource.ts index 84da33b7..abd7a87b 100644 --- a/src/datasources/TimeseriesDatasource.ts +++ b/src/datasources/TimeseriesDatasource.ts @@ -134,7 +134,6 @@ export class TimeseriesDatasource { queryTargets: QueryTarget[], options: QueryOptions ): Promise> { - console.log("options", options) const itemsForTargetsPromises = queryTargets.map(async (target) => { try { const [min, max] = getRange(options.range); @@ -196,7 +195,6 @@ export class TimeseriesDatasource { } async query(options: DataQueryRequest): Promise { const timeRange = getRange(options.range); - console.log('options.timezone', options.timezone) const { failed, succeded } = await this.fetchTimeseriesForTargets(options.targets, options); handleFailedTargets(failed); From 2c46611d96dc8e10beed4a71c51f0a6676b48d12 Mon Sep 17 00:00:00 2001 From: Luis Pereira Date: Wed, 12 Jun 2024 12:15:18 +0200 Subject: [PATCH 03/12] tz and fix tests --- src/cdf/client.ts | 7 +++++-- src/datasource.ts | 5 +---- src/types.ts | 1 + 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/cdf/client.ts b/src/cdf/client.ts index 9c891e83..ff6a9d55 100644 --- a/src/cdf/client.ts +++ b/src/cdf/client.ts @@ -24,6 +24,7 @@ import { ResponseMetadata, Aggregates, Granularity, + TimeZone, Tuple, SuccessResponse, Responses, @@ -63,12 +64,13 @@ export function formQueryForItems( }; } default: { - let aggregations: Aggregates & Granularity = null; + let aggregations: Aggregates & Granularity & TimeZone = null; const isAggregated = aggregation && aggregation !== 'none'; if (isAggregated) { aggregations = { aggregates: [aggregation], granularity: granularity || toGranularityWithLowerBound(intervalMs), + timeZone, }; } const limit = calculateDPLimitPerQuery(items.length, isAggregated); @@ -92,7 +94,8 @@ export function formQueriesForTargets( queriesData: QueriesDataItem[], options: QueryOptions ): CDFDataQueryRequest[] { - return queriesData.map((itemsData) => formQueryForItems(itemsData, options)); + const timezone = options.timezone === 'browser' ? Intl.DateTimeFormat().resolvedOptions().timeZone : options.timezone; + return queriesData.map((itemsData) => formQueryForItems(itemsData, {...options, timezone })); } export async function getLabelsForTarget( diff --git a/src/datasource.ts b/src/datasource.ts index 871e9060..f3a8349f 100644 --- a/src/datasource.ts +++ b/src/datasource.ts @@ -9,7 +9,6 @@ import { DataQueryResponse, MutableDataFrame, AnnotationQuery, - getTimeZone } from '@grafana/data'; import { BackendSrv, BackendSrvRequest, getBackendSrv, getTemplateSrv, TemplateSrv } from '@grafana/runtime'; import _ from 'lodash'; @@ -21,7 +20,7 @@ import { Resource, IdEither, } from './cdf/types'; -import { Connector, Fetcher } from './connector'; +import { Connector } from './connector'; import { CacheTime } from './constants'; import { parse as parseQuery } from './parser/events-assets'; import { ParsedFilter, QueryCondition } from './parser/types'; @@ -131,8 +130,6 @@ export default class CogniteDatasource extends DataSourceApi< const queryTargets = filterEmptyQueryTargets(options.targets).map((t) => this.replaceVariablesInTarget(t, options.scopedVars) ); - - options.timezone = options.timezone === 'browser' ? this.replaceVariable("$__timezone", options.scopedVars) : options.timezone; const { eventTargets, diff --git a/src/types.ts b/src/types.ts index 5bdefc05..498c1680 100644 --- a/src/types.ts +++ b/src/types.ts @@ -421,6 +421,7 @@ export type DataQueryRequestItem = { export type Aggregates = Pick; export type Granularity = Pick; +export type TimeZone = Pick; export interface CDFDataQueryRequest { items: DataQueryRequestItem[]; From 8258f2542866dce176bd370e449162fa2b374164 Mon Sep 17 00:00:00 2001 From: Luis Pereira Date: Wed, 12 Jun 2024 13:49:49 +0200 Subject: [PATCH 04/12] fix --- src/__tests__/__snapshots__/datasource.test.ts.snap | 1 - src/__tests__/datasource.unit.test.ts | 4 ++-- src/cdf/client.ts | 11 +++++------ 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/src/__tests__/__snapshots__/datasource.test.ts.snap b/src/__tests__/__snapshots__/datasource.test.ts.snap index b4f3a80b..84681a10 100644 --- a/src/__tests__/__snapshots__/datasource.test.ts.snap +++ b/src/__tests__/__snapshots__/datasource.test.ts.snap @@ -339,7 +339,6 @@ exports[`Datasource Query Given "Select Timeseries" queries should generate the ], "limit": 100000, "start": 1549336675000, - "timeZone": "Europe/Oslo", }, "headers": undefined, "method": "POST", diff --git a/src/__tests__/datasource.unit.test.ts b/src/__tests__/datasource.unit.test.ts index 68a39a7f..9f333aac 100644 --- a/src/__tests__/datasource.unit.test.ts +++ b/src/__tests__/datasource.unit.test.ts @@ -61,8 +61,8 @@ describe('formQueryForItems: enrich items with additional props for request', () const queryOptions = { range: { from: dateTime(0), to: dateTime(3000) }, intervalMs: 2000, - timezone: 'UTC', - } as QueryOptions; + timeZone: 'UTC', + } as any; it('for timeseries/data request', () => { const queryItems = formQueryForItems( diff --git a/src/cdf/client.ts b/src/cdf/client.ts index ff6a9d55..495db361 100644 --- a/src/cdf/client.ts +++ b/src/cdf/client.ts @@ -1,5 +1,5 @@ import { get, cloneDeep } from 'lodash'; -import { DataFrame, Field, TableData, TimeSeries, guessFieldTypeFromNameAndValue } from '@grafana/data'; +import { DataFrame, Field, TableData, TimeSeries, guessFieldTypeFromNameAndValue, getTimeZone } from '@grafana/data'; import { TimeSeriesDatapoint, Timestamp, @@ -46,7 +46,7 @@ const variableLabelRegex = /{{([^{}]+)}}/g; export function formQueryForItems( { items, type, target }: QueriesDataItem, - { range, intervalMs, timezone: timeZone }: QueryOptions + { range, intervalMs, timeZone }: QueryOptions & { timeZone: string } ): CDFDataQueryRequest { const { aggregation, granularity } = target; const [start, end] = getRange(range); @@ -79,8 +79,7 @@ export function formQueryForItems( end, start, items, - limit, - timeZone + limit }; } } @@ -94,8 +93,8 @@ export function formQueriesForTargets( queriesData: QueriesDataItem[], options: QueryOptions ): CDFDataQueryRequest[] { - const timezone = options.timezone === 'browser' ? Intl.DateTimeFormat().resolvedOptions().timeZone : options.timezone; - return queriesData.map((itemsData) => formQueryForItems(itemsData, {...options, timezone })); + const timeZone = options.timezone === 'browser' ? Intl.DateTimeFormat().resolvedOptions().timeZone : options.timezone; + return queriesData.map((itemsData) => formQueryForItems(itemsData, {...options, timeZone })); } export async function getLabelsForTarget( From ada5e5724776a53ab639ecd19530662cb5205d17 Mon Sep 17 00:00:00 2001 From: Luis Pereira Date: Wed, 12 Jun 2024 13:53:34 +0200 Subject: [PATCH 05/12] fix systemjs --- src/__mocks__/@grafana/runtime.ts | 12 ------------ src/components/queryEditor.tsx | 4 +--- 2 files changed, 1 insertion(+), 15 deletions(-) diff --git a/src/__mocks__/@grafana/runtime.ts b/src/__mocks__/@grafana/runtime.ts index 58115218..8cfba331 100644 --- a/src/__mocks__/@grafana/runtime.ts +++ b/src/__mocks__/@grafana/runtime.ts @@ -29,15 +29,3 @@ export const getTemplateSrv = () => return query; }), } as any); - -export const SystemJS = { - load: async (module) => { - return module === 'app/core/app_events' ? AppEvents : new Error('mo mock'); - }, -}; - -const AppEvents = { - emit: jest.fn(), - on: jest.fn(), - off: jest.fn(), -}; diff --git a/src/components/queryEditor.tsx b/src/components/queryEditor.tsx index e50efe46..b1b02f95 100644 --- a/src/components/queryEditor.tsx +++ b/src/components/queryEditor.tsx @@ -1,5 +1,5 @@ import defaults from 'lodash/defaults'; -import React, { useState, useEffect, useCallback } from 'react'; +import React, { useState, useEffect } from 'react'; import { LegacyForms, Tab, @@ -14,7 +14,6 @@ import { Input } from '@grafana/ui'; import { SelectableValue } from '@grafana/data'; -import { SystemJS } from '@grafana/runtime'; import { CustomQueryHelp } from './queryHelp'; import CogniteDatasource, { resource2DropdownOption } from '../datasource'; import { @@ -27,7 +26,6 @@ import { EditorProps, SelectedProps, OnQueryChange, - AssetQuery, } from '../types'; import { failedResponseEvent, responseWarningEvent } from '../constants'; import { ResourceSelect } from './resourceSelect'; From b0f4f14516161de1a402a9a22e772daa7c45cc25 Mon Sep 17 00:00:00 2001 From: Luis Pereira Date: Wed, 12 Jun 2024 14:13:29 +0200 Subject: [PATCH 06/12] bump version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 6b04ec48..f0552684 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@cognite/cognite-grafana-datasource", - "version": "4.1.3", + "version": "4.1.4", "description": "Cognite Data Fusion datasource", "repository": "https://github.com/cognitedata/cognite-grafana-datasource", "author": "Cognite AS", From 08e2697afd94422a6b5bd66bf153e9b233622a97 Mon Sep 17 00:00:00 2001 From: Luis Pereira Date: Wed, 12 Jun 2024 15:05:18 +0200 Subject: [PATCH 07/12] fix for UTC --- src/cdf/client.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/cdf/client.ts b/src/cdf/client.ts index 495db361..0f5863d8 100644 --- a/src/cdf/client.ts +++ b/src/cdf/client.ts @@ -93,7 +93,8 @@ export function formQueriesForTargets( queriesData: QueriesDataItem[], options: QueryOptions ): CDFDataQueryRequest[] { - const timeZone = options.timezone === 'browser' ? Intl.DateTimeFormat().resolvedOptions().timeZone : options.timezone; + const timeZoneValue = options.timezone === 'browser' ? Intl.DateTimeFormat().resolvedOptions().timeZone : options.timezone; + const timeZone = timeZoneValue === 'utc' ? timeZoneValue.toUpperCase() : timeZoneValue return queriesData.map((itemsData) => formQueryForItems(itemsData, {...options, timeZone })); } From 49bcf5f448741109cefaf9faeba9ef61b19aa438 Mon Sep 17 00:00:00 2001 From: Luis Pereira Date: Mon, 17 Jun 2024 13:08:17 +0200 Subject: [PATCH 08/12] remove beta header --- src/plugin.json | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/plugin.json b/src/plugin.json index cf2297c4..bad92938 100644 --- a/src/plugin.json +++ b/src/plugin.json @@ -65,10 +65,6 @@ { "name": "x-cdp-app", "content": "Cognite Grafana Datasource" - }, - { - "name": "cdf-version", - "content": "beta" } ], "tokenAuth": { From 3e74ae7124d06e362dbd2c77512fb3c4f5e33425 Mon Sep 17 00:00:00 2001 From: Luis Pereira Date: Mon, 17 Jun 2024 13:17:35 +0200 Subject: [PATCH 09/12] Update changelog --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index abc35442..7ddc92eb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,12 @@ This article documents the ongoing improvements we're making to the **Cognite Data Source for Grafana**. +## 4.1.3 - June 17th, 2024 + +### Features + +- Adds support for time zones in Timeseries, the user can select the timezone using the Grafana time range options. + ## 4.1.3 - May 7th, 2024 ### Bug fixes From 5f5cdc4c71ad7e49a0b14946f517888e55f4ada6 Mon Sep 17 00:00:00 2001 From: Luis Pereira <91738660+lpereiracgn@users.noreply.github.com> Date: Mon, 17 Jun 2024 19:11:29 +0200 Subject: [PATCH 10/12] Update CHANGELOG.md Co-authored-by: Ivan Polomani --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7ddc92eb..a21ac852 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,7 @@ Data Source for Grafana**. ### Features -- Adds support for time zones in Timeseries, the user can select the timezone using the Grafana time range options. +- Adds time zone support for aggregated time series, the user can select the timezone using the Grafana time range options. ## 4.1.3 - May 7th, 2024 From 7baff0617b14d34a585bcc467ce1f948ce953781 Mon Sep 17 00:00:00 2001 From: Luis Pereira <91738660+lpereiracgn@users.noreply.github.com> Date: Mon, 17 Jun 2024 19:11:46 +0200 Subject: [PATCH 11/12] Update CHANGELOG.md Co-authored-by: Ivan Polomani --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a21ac852..7036530c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ This article documents the ongoing improvements we're making to the **Cognite Data Source for Grafana**. -## 4.1.3 - June 17th, 2024 +## 4.2.0 - June 17th, 2024 ### Features From 70697b5ae448a9643a1b660f41c4562d6b86555d Mon Sep 17 00:00:00 2001 From: Luis Pereira Date: Mon, 17 Jun 2024 19:12:28 +0200 Subject: [PATCH 12/12] bump version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f0552684..3998c4e2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@cognite/cognite-grafana-datasource", - "version": "4.1.4", + "version": "4.2.0", "description": "Cognite Data Fusion datasource", "repository": "https://github.com/cognitedata/cognite-grafana-datasource", "author": "Cognite AS",