@grafana/plugin-ui 0.11.0 → 0.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.cjs +68 -120
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/index.d.cts +9 -17
- package/dist/esm/components/QueryEditor/CatalogSelector.js +0 -1
- package/dist/esm/components/QueryEditor/CatalogSelector.js.map +1 -1
- package/dist/esm/components/QueryEditor/DatasetSelector.js +9 -4
- package/dist/esm/components/QueryEditor/DatasetSelector.js.map +1 -1
- package/dist/esm/components/QueryEditor/QueryEditor.js +5 -2
- package/dist/esm/components/QueryEditor/QueryEditor.js.map +1 -1
- package/dist/esm/components/QueryEditor/QueryHeader.js +35 -49
- package/dist/esm/components/QueryEditor/QueryHeader.js.map +1 -1
- package/dist/esm/components/QueryEditor/TableSelector.js +3 -6
- package/dist/esm/components/QueryEditor/TableSelector.js.map +1 -1
- package/dist/esm/components/QueryEditor/types.js.map +1 -1
- package/dist/esm/components/QueryEditor/utils/sql.utils.js +7 -9
- package/dist/esm/components/QueryEditor/utils/sql.utils.js.map +1 -1
- package/dist/esm/components/QueryEditor/utils/useSqlChange.js +7 -1
- package/dist/esm/components/QueryEditor/utils/useSqlChange.js.map +1 -1
- package/dist/esm/components/SQLEditor/types.js.map +1 -1
- package/dist/esm/components/SQLEditor/utils/tokenUtils.js +2 -0
- package/dist/esm/components/SQLEditor/utils/tokenUtils.js.map +1 -1
- package/dist/esm/index.d.ts +9 -17
- package/dist/esm/index.js +0 -1
- package/dist/esm/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/esm/components/QueryEditor/SchemaSelector.js +0 -56
- package/dist/esm/components/QueryEditor/SchemaSelector.js.map +0 -1
package/dist/cjs/index.cjs
CHANGED
|
@@ -699,21 +699,19 @@ var QueryEditorExpressionType = /* @__PURE__ */ ((QueryEditorExpressionType2) =>
|
|
|
699
699
|
function getRawSqlFn(db) {
|
|
700
700
|
return db.toRawSql ? db.toRawSql : (query) => toRawSql(query, Boolean(db.disableDatasets));
|
|
701
701
|
}
|
|
702
|
-
function toRawSql({ sql, dataset, table }, disableDatasets) {
|
|
702
|
+
function toRawSql({ sql, dataset, catalog, table }, disableDatasets) {
|
|
703
703
|
var _a, _b, _c, _d;
|
|
704
704
|
let rawQuery = "";
|
|
705
705
|
if (!sql || !haveColumns(sql.columns)) {
|
|
706
706
|
return rawQuery;
|
|
707
707
|
}
|
|
708
708
|
rawQuery += createSelectClause(sql.columns);
|
|
709
|
-
if (
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
}
|
|
713
|
-
} else {
|
|
714
|
-
|
|
715
|
-
rawQuery += `FROM ${dataset}.${table} `;
|
|
716
|
-
}
|
|
709
|
+
if (catalog && dataset && table) {
|
|
710
|
+
rawQuery += `FROM ${catalog}.${dataset}.${table} `;
|
|
711
|
+
} else if (!disableDatasets && dataset && table) {
|
|
712
|
+
rawQuery += `FROM ${dataset}.${table} `;
|
|
713
|
+
} else if (table) {
|
|
714
|
+
rawQuery += `FROM ${table} `;
|
|
717
715
|
}
|
|
718
716
|
if (sql.whereString) {
|
|
719
717
|
rawQuery += `WHERE ${sql.whereString} `;
|
|
@@ -2240,6 +2238,8 @@ const defaultTableNameParser = (token) => {
|
|
|
2240
2238
|
return { table: parts[0] };
|
|
2241
2239
|
} else if ((parts == null ? undefined : parts.length) === 2) {
|
|
2242
2240
|
return { schema: parts[0], table: parts[1] };
|
|
2241
|
+
} else if ((parts == null ? undefined : parts.length) === 3) {
|
|
2242
|
+
return { catalog: parts[0], schema: parts[1], table: parts[2] };
|
|
2243
2243
|
}
|
|
2244
2244
|
return null;
|
|
2245
2245
|
};
|
|
@@ -5866,21 +5866,24 @@ function ConfirmModal({ isOpen, onCancel, onDiscard, onCopy }) {
|
|
|
5866
5866
|
const DatasetSelector = ({
|
|
5867
5867
|
db,
|
|
5868
5868
|
dataset,
|
|
5869
|
+
catalog,
|
|
5869
5870
|
value,
|
|
5870
5871
|
onChange,
|
|
5871
5872
|
disabled,
|
|
5872
5873
|
className,
|
|
5873
5874
|
applyDefault,
|
|
5874
|
-
inputId
|
|
5875
|
+
inputId,
|
|
5876
|
+
enableCatalogs,
|
|
5877
|
+
"data-testid": dataTestId
|
|
5875
5878
|
}) => {
|
|
5876
5879
|
const state = reactUse.useAsync(async () => {
|
|
5877
5880
|
if (dataset) {
|
|
5878
5881
|
onChange(toOption(dataset));
|
|
5879
5882
|
return [toOption(dataset)];
|
|
5880
5883
|
}
|
|
5881
|
-
const datasets = await db.datasets();
|
|
5884
|
+
const datasets = await db.datasets(catalog);
|
|
5882
5885
|
return datasets.map(toOption);
|
|
5883
|
-
}, []);
|
|
5886
|
+
}, [catalog]);
|
|
5884
5887
|
React.useEffect(() => {
|
|
5885
5888
|
if (!applyDefault) {
|
|
5886
5889
|
return;
|
|
@@ -5908,7 +5911,9 @@ const DatasetSelector = ({
|
|
|
5908
5911
|
onChange,
|
|
5909
5912
|
disabled,
|
|
5910
5913
|
isLoading: state.loading,
|
|
5911
|
-
menuShouldPortal: true
|
|
5914
|
+
menuShouldPortal: true,
|
|
5915
|
+
"data-testid": dataTestId,
|
|
5916
|
+
placeholder: enableCatalogs ? "Select schema" : "Select dataset"
|
|
5912
5917
|
}
|
|
5913
5918
|
);
|
|
5914
5919
|
};
|
|
@@ -5953,55 +5958,6 @@ const CatalogSelector = ({ db, inputId, value, onChange }) => {
|
|
|
5953
5958
|
placeholder: "Select catalog",
|
|
5954
5959
|
isClearable: true,
|
|
5955
5960
|
allowCustomValue: true,
|
|
5956
|
-
disabled: isLoading,
|
|
5957
|
-
menuShouldPortal: true
|
|
5958
|
-
}
|
|
5959
|
-
);
|
|
5960
|
-
};
|
|
5961
|
-
|
|
5962
|
-
const SchemaSelector = ({ db, inputId, catalog, value, onChange }) => {
|
|
5963
|
-
const [schemas, setSchemas] = React.useState([]);
|
|
5964
|
-
const [isLoading, setIsLoading] = React.useState(false);
|
|
5965
|
-
const loadSchemas = React.useCallback(async () => {
|
|
5966
|
-
if (!db.schemas || !catalog) {
|
|
5967
|
-
setSchemas([]);
|
|
5968
|
-
return;
|
|
5969
|
-
}
|
|
5970
|
-
setIsLoading(true);
|
|
5971
|
-
try {
|
|
5972
|
-
const schemaList = await db.schemas(catalog);
|
|
5973
|
-
const schemaOptions = schemaList.map((schema) => ({
|
|
5974
|
-
label: schema,
|
|
5975
|
-
value: schema
|
|
5976
|
-
}));
|
|
5977
|
-
setSchemas(schemaOptions);
|
|
5978
|
-
} catch (error) {
|
|
5979
|
-
console.error("Error loading schemas:", error);
|
|
5980
|
-
setSchemas([]);
|
|
5981
|
-
} finally {
|
|
5982
|
-
setIsLoading(false);
|
|
5983
|
-
}
|
|
5984
|
-
}, [db, catalog]);
|
|
5985
|
-
React.useEffect(() => {
|
|
5986
|
-
loadSchemas();
|
|
5987
|
-
}, [db, catalog, loadSchemas]);
|
|
5988
|
-
const handleChange = (selectable) => {
|
|
5989
|
-
onChange((selectable == null ? undefined : selectable.value) || null);
|
|
5990
|
-
};
|
|
5991
|
-
const selectedValue = schemas.find((schema) => schema.value === value) || null;
|
|
5992
|
-
const isDisabled = isLoading || !catalog;
|
|
5993
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
5994
|
-
ui.Select,
|
|
5995
|
-
{
|
|
5996
|
-
inputId,
|
|
5997
|
-
options: schemas,
|
|
5998
|
-
value: selectedValue,
|
|
5999
|
-
onChange: handleChange,
|
|
6000
|
-
isLoading,
|
|
6001
|
-
placeholder: "Select schema",
|
|
6002
|
-
isClearable: true,
|
|
6003
|
-
allowCustomValue: true,
|
|
6004
|
-
disabled: isDisabled,
|
|
6005
5961
|
menuShouldPortal: true
|
|
6006
5962
|
}
|
|
6007
5963
|
);
|
|
@@ -6011,7 +5967,6 @@ const TableSelector = ({
|
|
|
6011
5967
|
db,
|
|
6012
5968
|
dataset,
|
|
6013
5969
|
catalog,
|
|
6014
|
-
schema,
|
|
6015
5970
|
value,
|
|
6016
5971
|
className,
|
|
6017
5972
|
onChange,
|
|
@@ -6022,19 +5977,17 @@ const TableSelector = ({
|
|
|
6022
5977
|
if (!dataset && !catalog) {
|
|
6023
5978
|
return [];
|
|
6024
5979
|
}
|
|
6025
|
-
if (enableCatalogs && (!catalog || !
|
|
5980
|
+
if (enableCatalogs && (!catalog || !dataset)) {
|
|
6026
5981
|
return [];
|
|
6027
5982
|
}
|
|
6028
|
-
const tables = await db.tables(dataset, catalog
|
|
5983
|
+
const tables = await db.tables(dataset, catalog);
|
|
6029
5984
|
return tables.map(data.toOption);
|
|
6030
|
-
}, [dataset, catalog,
|
|
6031
|
-
const isDisabled = state.loading || enableCatalogs && (!catalog || !schema);
|
|
5985
|
+
}, [dataset, catalog, enableCatalogs]);
|
|
6032
5986
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
6033
5987
|
ui.Select,
|
|
6034
5988
|
{
|
|
6035
5989
|
inputId,
|
|
6036
5990
|
className,
|
|
6037
|
-
disabled: isDisabled,
|
|
6038
5991
|
"aria-label": "Table selector",
|
|
6039
5992
|
value,
|
|
6040
5993
|
options: state.value,
|
|
@@ -6110,6 +6063,7 @@ function QueryHeader({
|
|
|
6110
6063
|
const toRawSql = getRawSqlFn(db);
|
|
6111
6064
|
const htmlId = React.useId();
|
|
6112
6065
|
const catalogsEnabled = enableCatalogs != null ? enableCatalogs : db.disableCatalogs === false;
|
|
6066
|
+
const effectiveEnableDatasets = catalogsEnabled ? true : enableDatasets;
|
|
6113
6067
|
const onEditorModeChange = React.useCallback(
|
|
6114
6068
|
(newEditorMode) => {
|
|
6115
6069
|
if (editorMode === EditorMode.Code) {
|
|
@@ -6125,12 +6079,13 @@ function QueryHeader({
|
|
|
6125
6079
|
onChange(next);
|
|
6126
6080
|
};
|
|
6127
6081
|
const onDatasetChange = (e) => {
|
|
6128
|
-
|
|
6082
|
+
const datasetValue = e.value || undefined;
|
|
6083
|
+
if (datasetValue === query.dataset) {
|
|
6129
6084
|
return;
|
|
6130
6085
|
}
|
|
6131
6086
|
const next = {
|
|
6132
6087
|
...query,
|
|
6133
|
-
dataset:
|
|
6088
|
+
dataset: datasetValue,
|
|
6134
6089
|
table: undefined,
|
|
6135
6090
|
sql: undefined,
|
|
6136
6091
|
rawSql: ""
|
|
@@ -6138,26 +6093,15 @@ function QueryHeader({
|
|
|
6138
6093
|
onChange(next);
|
|
6139
6094
|
};
|
|
6140
6095
|
const onCatalogChange = (catalog) => {
|
|
6141
|
-
|
|
6142
|
-
|
|
6143
|
-
}
|
|
6144
|
-
const next = {
|
|
6145
|
-
...query,
|
|
6146
|
-
catalog: catalog || undefined,
|
|
6147
|
-
schema: undefined,
|
|
6148
|
-
table: undefined,
|
|
6149
|
-
sql: undefined,
|
|
6150
|
-
rawSql: ""
|
|
6151
|
-
};
|
|
6152
|
-
onChange(next);
|
|
6153
|
-
};
|
|
6154
|
-
const onSchemaChange = (schema) => {
|
|
6155
|
-
if (schema === query.schema) {
|
|
6096
|
+
const catalogValue = catalog || undefined;
|
|
6097
|
+
if (catalogValue === query.catalog) {
|
|
6156
6098
|
return;
|
|
6157
6099
|
}
|
|
6158
6100
|
const next = {
|
|
6159
6101
|
...query,
|
|
6160
|
-
|
|
6102
|
+
catalog: catalogValue,
|
|
6103
|
+
dataset: undefined,
|
|
6104
|
+
// Reset dataset (which acts as schema when catalog is present)
|
|
6161
6105
|
table: undefined,
|
|
6162
6106
|
sql: undefined,
|
|
6163
6107
|
rawSql: ""
|
|
@@ -6266,45 +6210,41 @@ function QueryHeader({
|
|
|
6266
6210
|
editorMode === EditorMode.Builder && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
6267
6211
|
/* @__PURE__ */ jsxRuntime.jsx(Space, { v: 0.5 }),
|
|
6268
6212
|
/* @__PURE__ */ jsxRuntime.jsxs(EditorRow$1, { children: [
|
|
6269
|
-
|
|
6270
|
-
|
|
6213
|
+
catalogsEnabled && /* @__PURE__ */ jsxRuntime.jsx(EditorField$1, { label: labels.get("catalog") || "Catalog", width: 25, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
6214
|
+
CatalogSelector,
|
|
6271
6215
|
{
|
|
6272
6216
|
db,
|
|
6273
|
-
inputId: `sql-
|
|
6274
|
-
|
|
6275
|
-
|
|
6276
|
-
onChange: onDatasetChange
|
|
6217
|
+
inputId: `sql-catalog-${htmlId}`,
|
|
6218
|
+
value: query.catalog === undefined ? null : query.catalog,
|
|
6219
|
+
onChange: onCatalogChange
|
|
6277
6220
|
}
|
|
6278
6221
|
) }),
|
|
6279
|
-
|
|
6280
|
-
|
|
6281
|
-
|
|
6282
|
-
|
|
6283
|
-
|
|
6284
|
-
|
|
6285
|
-
|
|
6286
|
-
|
|
6287
|
-
|
|
6288
|
-
|
|
6289
|
-
|
|
6290
|
-
|
|
6291
|
-
|
|
6292
|
-
|
|
6293
|
-
|
|
6294
|
-
|
|
6295
|
-
|
|
6296
|
-
|
|
6297
|
-
|
|
6298
|
-
|
|
6299
|
-
] }),
|
|
6300
|
-
/* @__PURE__ */ jsxRuntime.jsx(EditorField$1, { label: "Table", width: 25, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
6222
|
+
effectiveEnableDatasets && /* @__PURE__ */ jsxRuntime.jsx(
|
|
6223
|
+
EditorField$1,
|
|
6224
|
+
{
|
|
6225
|
+
label: catalogsEnabled ? labels.get("schema") || "Schema" : labels.get("dataset") || "Dataset",
|
|
6226
|
+
width: 25,
|
|
6227
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
6228
|
+
DatasetSelector,
|
|
6229
|
+
{
|
|
6230
|
+
db,
|
|
6231
|
+
inputId: catalogsEnabled ? `sql-schema-${htmlId}` : `sql-dataset-${htmlId}`,
|
|
6232
|
+
"data-testid": catalogsEnabled ? "schema-selector" : "dataset-selector",
|
|
6233
|
+
dataset: catalogsEnabled ? undefined : defaultDataset,
|
|
6234
|
+
value: query.dataset === undefined ? null : query.dataset,
|
|
6235
|
+
onChange: onDatasetChange,
|
|
6236
|
+
catalog: catalogsEnabled ? query.catalog : undefined
|
|
6237
|
+
}
|
|
6238
|
+
)
|
|
6239
|
+
}
|
|
6240
|
+
),
|
|
6241
|
+
/* @__PURE__ */ jsxRuntime.jsx(EditorField$1, { label: labels.get("table") || "Table", width: 25, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
6301
6242
|
TableSelector,
|
|
6302
6243
|
{
|
|
6303
6244
|
db,
|
|
6304
6245
|
inputId: `sql-table-${htmlId}`,
|
|
6305
|
-
dataset: catalogsEnabled ? undefined :
|
|
6246
|
+
dataset: query.dataset || (catalogsEnabled ? undefined : defaultDataset),
|
|
6306
6247
|
catalog: catalogsEnabled ? query.catalog : undefined,
|
|
6307
|
-
schema: catalogsEnabled ? query.schema : undefined,
|
|
6308
6248
|
query,
|
|
6309
6249
|
value: query.table === undefined ? null : query.table,
|
|
6310
6250
|
onChange: onTableChange,
|
|
@@ -6612,7 +6552,13 @@ function useSqlChange({ query, onQueryChange, db }) {
|
|
|
6612
6552
|
const onSqlChange = React.useCallback(
|
|
6613
6553
|
(sql) => {
|
|
6614
6554
|
const toRawSql = getRawSqlFn(db);
|
|
6615
|
-
const rawSql = toRawSql({
|
|
6555
|
+
const rawSql = toRawSql({
|
|
6556
|
+
sql,
|
|
6557
|
+
catalog: query.catalog,
|
|
6558
|
+
dataset: query.dataset,
|
|
6559
|
+
table: query.table,
|
|
6560
|
+
refId: query.refId
|
|
6561
|
+
});
|
|
6616
6562
|
const newQuery = { ...query, sql, rawSql };
|
|
6617
6563
|
onQueryChange(newQuery);
|
|
6618
6564
|
},
|
|
@@ -7480,14 +7426,17 @@ function SqlQueryEditor({ datasource, query, onChange, onRunQuery, range }) {
|
|
|
7480
7426
|
if (loading || error) {
|
|
7481
7427
|
return null;
|
|
7482
7428
|
}
|
|
7429
|
+
const catalogsEnabled = db.disableCatalogs === false;
|
|
7430
|
+
const datasetsEnabled = !db.disableDatasets;
|
|
7431
|
+
const effectiveEnableDatasets = catalogsEnabled ? true : datasetsEnabled;
|
|
7483
7432
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
7484
7433
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7485
7434
|
QueryHeader,
|
|
7486
7435
|
{
|
|
7487
7436
|
db,
|
|
7488
7437
|
defaultDataset: defaultDataset || "",
|
|
7489
|
-
enableDatasets:
|
|
7490
|
-
enableCatalogs:
|
|
7438
|
+
enableDatasets: effectiveEnableDatasets,
|
|
7439
|
+
enableCatalogs: catalogsEnabled,
|
|
7491
7440
|
onChange: onQueryHeaderChange,
|
|
7492
7441
|
onRunQuery,
|
|
7493
7442
|
onQueryRowChange: setQueryRowFilter,
|
|
@@ -40517,7 +40466,6 @@ exports.RunQueryButton = RunQueryButton;
|
|
|
40517
40466
|
exports.SQLEditor = SQLEditor;
|
|
40518
40467
|
exports.SQLEditorMode = SQLEditorMode;
|
|
40519
40468
|
exports.SQLEditorTestUtils = SQLEditorTestUtils;
|
|
40520
|
-
exports.SchemaSelector = SchemaSelector;
|
|
40521
40469
|
exports.SecureSocksProxyToggle = SecureSocksProxyToggle;
|
|
40522
40470
|
exports.Segment = Segment;
|
|
40523
40471
|
exports.Space = Space;
|