@grafana/scenes 5.14.7 → 5.15.0--canary.845.11012035874.0
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/esm/components/layout/grid/SceneGridLayout.js +35 -2
- package/dist/esm/components/layout/grid/SceneGridLayout.js.map +1 -1
- package/dist/esm/components/layout/grid/SceneGridLayoutRenderer.js +65 -4
- package/dist/esm/components/layout/grid/SceneGridLayoutRenderer.js.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/querying/DataProviderProxy.js +37 -0
- package/dist/esm/querying/DataProviderProxy.js.map +1 -0
- package/dist/index.d.ts +17 -1
- package/dist/index.js +129 -3
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
@@ -8206,6 +8206,39 @@ class SceneTimeZoneOverride extends SceneTimeRangeTransformerBase {
|
|
8206
8206
|
}
|
8207
8207
|
}
|
8208
8208
|
|
8209
|
+
class DataProviderProxy extends SceneObjectBase {
|
8210
|
+
constructor(state) {
|
8211
|
+
super({
|
8212
|
+
source: state.source,
|
8213
|
+
data: state.source.resolve().state.data
|
8214
|
+
});
|
8215
|
+
this.addActivationHandler(() => {
|
8216
|
+
this._subs.add(
|
8217
|
+
this.state.source.resolve().subscribeToState((newState, oldState) => {
|
8218
|
+
if (newState.data !== oldState.data) {
|
8219
|
+
this.setState({ data: newState.data });
|
8220
|
+
}
|
8221
|
+
})
|
8222
|
+
);
|
8223
|
+
});
|
8224
|
+
}
|
8225
|
+
setContainerWidth(width) {
|
8226
|
+
var _a, _b;
|
8227
|
+
(_b = (_a = this.state.source.resolve()).setContainerWidth) == null ? void 0 : _b.call(_a, width);
|
8228
|
+
}
|
8229
|
+
isDataReadyToDisplay() {
|
8230
|
+
var _a, _b, _c;
|
8231
|
+
return (_c = (_b = (_a = this.state.source.resolve()).isDataReadyToDisplay) == null ? void 0 : _b.call(_a)) != null ? _c : true;
|
8232
|
+
}
|
8233
|
+
cancelQuery() {
|
8234
|
+
var _a, _b;
|
8235
|
+
(_b = (_a = this.state.source.resolve()).cancelQuery) == null ? void 0 : _b.call(_a);
|
8236
|
+
}
|
8237
|
+
getResultsStream() {
|
8238
|
+
return this.state.source.resolve().getResultsStream();
|
8239
|
+
}
|
8240
|
+
}
|
8241
|
+
|
8209
8242
|
var __defProp$k = Object.defineProperty;
|
8210
8243
|
var __defProps$b = Object.defineProperties;
|
8211
8244
|
var __getOwnPropDescs$b = Object.getOwnPropertyDescriptors;
|
@@ -9797,7 +9830,7 @@ var __objRest = (source, exclude) => {
|
|
9797
9830
|
return target;
|
9798
9831
|
};
|
9799
9832
|
function SceneGridLayoutRenderer({ model }) {
|
9800
|
-
const { children, isLazy, isDraggable, isResizable } = model.useState();
|
9833
|
+
const { children, isLazy, isDraggable, isResizable, showPanelSearch } = model.useState();
|
9801
9834
|
const [outerDivRef, { width, height }] = reactUse.useMeasure();
|
9802
9835
|
const ref = React.useRef(null);
|
9803
9836
|
React.useEffect(() => {
|
@@ -9843,7 +9876,67 @@ function SceneGridLayoutRenderer({ model }) {
|
|
9843
9876
|
return /* @__PURE__ */ React__default["default"].createElement("div", {
|
9844
9877
|
ref: outerDivRef,
|
9845
9878
|
style: { flex: "1 1 auto", position: "relative", zIndex: 1, width: "100%" }
|
9846
|
-
},
|
9879
|
+
}, showPanelSearch && /* @__PURE__ */ React__default["default"].createElement(PanelSearchControls, {
|
9880
|
+
model
|
9881
|
+
}), renderGrid(width, height));
|
9882
|
+
}
|
9883
|
+
function PanelSearchControls({ model }) {
|
9884
|
+
const { searchString, panelsPerRow } = model.useState();
|
9885
|
+
const styles = ui.useStyles2(getPanelSearchStyles);
|
9886
|
+
const onSearchStringChange = React.useCallback(
|
9887
|
+
(e) => {
|
9888
|
+
model.setState({ searchString: e.currentTarget.value });
|
9889
|
+
},
|
9890
|
+
[model]
|
9891
|
+
);
|
9892
|
+
const onPanelsPerRowChange = React.useCallback(
|
9893
|
+
(e) => {
|
9894
|
+
model.setState({ panelsPerRow: Number.parseInt(e.currentTarget.value, 10) });
|
9895
|
+
},
|
9896
|
+
[model]
|
9897
|
+
);
|
9898
|
+
return /* @__PURE__ */ React__default["default"].createElement("div", {
|
9899
|
+
className: styles.wrapper
|
9900
|
+
}, /* @__PURE__ */ React__default["default"].createElement("div", {
|
9901
|
+
id: "panel-search",
|
9902
|
+
className: styles.input
|
9903
|
+
}, /* @__PURE__ */ React__default["default"].createElement(ControlsLabel, {
|
9904
|
+
isLoading: false,
|
9905
|
+
label: "Panel search",
|
9906
|
+
htmlFor: "panel-search-input"
|
9907
|
+
}), /* @__PURE__ */ React__default["default"].createElement(ui.Input, {
|
9908
|
+
id: "panel-search-input",
|
9909
|
+
label: "Search",
|
9910
|
+
placeholder: "Enter value",
|
9911
|
+
value: searchString,
|
9912
|
+
onChange: onSearchStringChange
|
9913
|
+
})), /* @__PURE__ */ React__default["default"].createElement("div", {
|
9914
|
+
id: "panels-per-row",
|
9915
|
+
className: styles.input
|
9916
|
+
}, /* @__PURE__ */ React__default["default"].createElement(ControlsLabel, {
|
9917
|
+
isLoading: false,
|
9918
|
+
label: "Panels per row",
|
9919
|
+
htmlFor: "panels-per-row-input"
|
9920
|
+
}), /* @__PURE__ */ React__default["default"].createElement(ui.Input, {
|
9921
|
+
id: "panels-per-row-input",
|
9922
|
+
type: "number",
|
9923
|
+
placeholder: "Enter value",
|
9924
|
+
label: "Panels per row",
|
9925
|
+
value: panelsPerRow,
|
9926
|
+
onChange: onPanelsPerRowChange
|
9927
|
+
})));
|
9928
|
+
}
|
9929
|
+
function getPanelSearchStyles(theme) {
|
9930
|
+
return {
|
9931
|
+
wrapper: css.css({
|
9932
|
+
display: "flex",
|
9933
|
+
gap: theme.spacing(1),
|
9934
|
+
marginBottom: theme.spacing(1)
|
9935
|
+
}),
|
9936
|
+
input: css.css({
|
9937
|
+
display: "flex"
|
9938
|
+
})
|
9939
|
+
};
|
9847
9940
|
}
|
9848
9941
|
const GridItemWrapper = React__default["default"].forwardRef((props, ref) => {
|
9849
9942
|
var _b;
|
@@ -9992,6 +10085,7 @@ const _SceneGridLayout = class extends SceneObjectBase {
|
|
9992
10085
|
this._skipOnLayoutChange = false;
|
9993
10086
|
this._oldLayout = [];
|
9994
10087
|
this._loadOldLayout = false;
|
10088
|
+
this.savedLayout = void 0;
|
9995
10089
|
this.onLayoutChange = (layout) => {
|
9996
10090
|
if (this._skipOnLayoutChange) {
|
9997
10091
|
this._skipOnLayoutChange = false;
|
@@ -10200,7 +10294,38 @@ const _SceneGridLayout = class extends SceneObjectBase {
|
|
10200
10294
|
}
|
10201
10295
|
buildGridLayout(width, height) {
|
10202
10296
|
let cells = [];
|
10203
|
-
|
10297
|
+
const searchString = this.state.searchString;
|
10298
|
+
const panelsPerRow = this.state.panelsPerRow;
|
10299
|
+
let children = this.state.children;
|
10300
|
+
if (searchString && searchString !== "" || panelsPerRow && Number.isInteger(panelsPerRow)) {
|
10301
|
+
if (this.savedLayout === void 0) {
|
10302
|
+
this.savedLayout = this.state.children.map((v) => v.clone());
|
10303
|
+
}
|
10304
|
+
const panelFilterInterpolated = interpolate(this, searchString).toLowerCase();
|
10305
|
+
const filteredChildren = this.state.children.filter((v) => {
|
10306
|
+
var _a, _b, _c, _d;
|
10307
|
+
const panelTitleInterpolated = interpolate(v, (_b = (_a = v.state.body) == null ? void 0 : _a.state) == null ? void 0 : _b.title).toLowerCase();
|
10308
|
+
return typeof ((_d = (_c = v.state.body) == null ? void 0 : _c.state) == null ? void 0 : _d.title) === "string" && panelTitleInterpolated.includes(panelFilterInterpolated);
|
10309
|
+
});
|
10310
|
+
this._skipOnLayoutChange = true;
|
10311
|
+
const rowSize = typeof panelsPerRow === "number" && Number.isInteger(panelsPerRow) && panelsPerRow > 0 ? panelsPerRow : 2;
|
10312
|
+
const panelWidth = GRID_COLUMN_COUNT / rowSize;
|
10313
|
+
const panelHeight = 5;
|
10314
|
+
return filteredChildren.map((child, i) => __spreadProps$5(__spreadValues$8({}, this.toGridCell(child)), {
|
10315
|
+
x: i % rowSize * panelWidth,
|
10316
|
+
y: Math.floor(i / rowSize) * panelHeight,
|
10317
|
+
w: panelWidth,
|
10318
|
+
h: panelHeight,
|
10319
|
+
isResizable: false,
|
10320
|
+
isDraggable: false
|
10321
|
+
}));
|
10322
|
+
} else if ((!searchString || searchString === "") && !panelsPerRow) {
|
10323
|
+
if (this.savedLayout) {
|
10324
|
+
children = this.savedLayout;
|
10325
|
+
this.savedLayout = void 0;
|
10326
|
+
}
|
10327
|
+
}
|
10328
|
+
for (const child of children) {
|
10204
10329
|
cells.push(this.toGridCell(child));
|
10205
10330
|
if (child instanceof SceneGridRow && !child.state.isCollapsed) {
|
10206
10331
|
for (const rowChild of child.state.children) {
|
@@ -13105,6 +13230,7 @@ const sceneUtils = {
|
|
13105
13230
|
exports.AdHocFiltersVariable = AdHocFiltersVariable;
|
13106
13231
|
exports.ConstantVariable = ConstantVariable;
|
13107
13232
|
exports.CustomVariable = CustomVariable;
|
13233
|
+
exports.DataProviderProxy = DataProviderProxy;
|
13108
13234
|
exports.DataSourceVariable = DataSourceVariable;
|
13109
13235
|
exports.EmbeddedScene = EmbeddedScene;
|
13110
13236
|
exports.FieldConfigBuilder = FieldConfigBuilder;
|