UNPKG

@grafana/ui

Version:
1 lines 5.09 kB
{"version":3,"file":"GraphSeriesToggler.mjs","sources":["../../../../src/graveyard/Graph/GraphSeriesToggler.tsx"],"sourcesContent":["import { difference, isEqual } from 'lodash';\nimport { Component } from 'react';\nimport * as React from 'react';\n\nimport { GraphSeriesXY } from '@grafana/data';\n\n/** @deprecated */\nexport interface GraphSeriesTogglerAPI {\n onSeriesToggle: (label: string, event: React.MouseEvent<HTMLElement>) => void;\n toggledSeries: GraphSeriesXY[];\n}\n\n/** @deprecated */\nexport interface GraphSeriesTogglerProps {\n children: (api: GraphSeriesTogglerAPI) => JSX.Element;\n series: GraphSeriesXY[];\n onHiddenSeriesChanged?: (hiddenSeries: string[]) => void;\n}\n\n/** @deprecated */\nexport interface GraphSeriesTogglerState {\n hiddenSeries: string[];\n toggledSeries: GraphSeriesXY[];\n}\n\n/** @deprecated */\nexport class GraphSeriesToggler extends Component<GraphSeriesTogglerProps, GraphSeriesTogglerState> {\n constructor(props: GraphSeriesTogglerProps) {\n super(props);\n\n this.onSeriesToggle = this.onSeriesToggle.bind(this);\n\n this.state = {\n hiddenSeries: [],\n toggledSeries: props.series,\n };\n }\n\n componentDidUpdate(prevProps: Readonly<GraphSeriesTogglerProps>) {\n const { series } = this.props;\n if (!isEqual(prevProps.series, series)) {\n this.setState({ hiddenSeries: [], toggledSeries: series });\n }\n }\n\n onSeriesToggle(label: string, event: React.MouseEvent<HTMLElement>) {\n const { series, onHiddenSeriesChanged } = this.props;\n const { hiddenSeries } = this.state;\n\n if (event.ctrlKey || event.metaKey || event.shiftKey) {\n // Toggling series with key makes the series itself to toggle\n const newHiddenSeries =\n hiddenSeries.indexOf(label) > -1\n ? hiddenSeries.filter((series) => series !== label)\n : hiddenSeries.concat([label]);\n\n const toggledSeries = series.map((series) => ({\n ...series,\n isVisible: newHiddenSeries.indexOf(series.label) === -1,\n }));\n this.setState({ hiddenSeries: newHiddenSeries, toggledSeries }, () =>\n onHiddenSeriesChanged ? onHiddenSeriesChanged(newHiddenSeries) : undefined\n );\n return;\n }\n\n // Toggling series with out key toggles all the series but the clicked one\n const allSeriesLabels = series.map((series) => series.label);\n const newHiddenSeries =\n hiddenSeries.length + 1 === allSeriesLabels.length ? [] : difference(allSeriesLabels, [label]);\n const toggledSeries = series.map((series) => ({\n ...series,\n isVisible: newHiddenSeries.indexOf(series.label) === -1,\n }));\n\n this.setState({ hiddenSeries: newHiddenSeries, toggledSeries }, () =>\n onHiddenSeriesChanged ? onHiddenSeriesChanged(newHiddenSeries) : undefined\n );\n }\n\n render() {\n const { children } = this.props;\n const { toggledSeries } = this.state;\n\n return children({\n onSeriesToggle: this.onSeriesToggle,\n toggledSeries,\n });\n }\n}\n"],"names":["newHiddenSeries","series","toggledSeries"],"mappings":";;;AA0BO,MAAM,2BAA2B,SAA4D,CAAA;AAAA,EAClG,YAAY,KAAgC,EAAA;AAC1C,IAAA,KAAA,CAAM,KAAK,CAAA;AAEX,IAAA,IAAA,CAAK,cAAiB,GAAA,IAAA,CAAK,cAAe,CAAA,IAAA,CAAK,IAAI,CAAA;AAEnD,IAAA,IAAA,CAAK,KAAQ,GAAA;AAAA,MACX,cAAc,EAAC;AAAA,MACf,eAAe,KAAM,CAAA;AAAA,KACvB;AAAA;AACF,EAEA,mBAAmB,SAA8C,EAAA;AAC/D,IAAM,MAAA,EAAE,MAAO,EAAA,GAAI,IAAK,CAAA,KAAA;AACxB,IAAA,IAAI,CAAC,OAAA,CAAQ,SAAU,CAAA,MAAA,EAAQ,MAAM,CAAG,EAAA;AACtC,MAAA,IAAA,CAAK,SAAS,EAAE,YAAA,EAAc,EAAI,EAAA,aAAA,EAAe,QAAQ,CAAA;AAAA;AAC3D;AACF,EAEA,cAAA,CAAe,OAAe,KAAsC,EAAA;AAClE,IAAA,MAAM,EAAE,MAAA,EAAQ,qBAAsB,EAAA,GAAI,IAAK,CAAA,KAAA;AAC/C,IAAM,MAAA,EAAE,YAAa,EAAA,GAAI,IAAK,CAAA,KAAA;AAE9B,IAAA,IAAI,KAAM,CAAA,OAAA,IAAW,KAAM,CAAA,OAAA,IAAW,MAAM,QAAU,EAAA;AAEpD,MAAA,MAAMA,mBACJ,YAAa,CAAA,OAAA,CAAQ,KAAK,CAAA,GAAI,KAC1B,YAAa,CAAA,MAAA,CAAO,CAACC,OAAAA,KAAWA,YAAW,KAAK,CAAA,GAChD,aAAa,MAAO,CAAA,CAAC,KAAK,CAAC,CAAA;AAEjC,MAAA,MAAMC,cAAgB,GAAA,MAAA,CAAO,GAAI,CAAA,CAACD,OAAY,MAAA;AAAA,QAC5C,GAAGA,OAAAA;AAAA,QACH,SAAWD,EAAAA,gBAAAA,CAAgB,OAAQC,CAAAA,OAAAA,CAAO,KAAK,CAAM,KAAA,CAAA;AAAA,OACrD,CAAA,CAAA;AACF,MAAK,IAAA,CAAA,QAAA;AAAA,QAAS,EAAE,YAAA,EAAcD,gBAAiB,EAAA,aAAA,EAAAE,cAAc,EAAA;AAAA,QAAG,MAC9D,qBAAA,GAAwB,qBAAsBF,CAAAA,gBAAe,CAAI,GAAA,KAAA;AAAA,OACnE;AACA,MAAA;AAAA;AAIF,IAAA,MAAM,kBAAkB,MAAO,CAAA,GAAA,CAAI,CAACC,OAAAA,KAAWA,QAAO,KAAK,CAAA;AAC3D,IAAA,MAAM,eACJ,GAAA,YAAA,CAAa,MAAS,GAAA,CAAA,KAAM,eAAgB,CAAA,MAAA,GAAS,EAAC,GAAI,UAAW,CAAA,eAAA,EAAiB,CAAC,KAAK,CAAC,CAAA;AAC/F,IAAA,MAAM,aAAgB,GAAA,MAAA,CAAO,GAAI,CAAA,CAACA,OAAY,MAAA;AAAA,MAC5C,GAAGA,OAAAA;AAAA,MACH,SAAW,EAAA,eAAA,CAAgB,OAAQA,CAAAA,OAAAA,CAAO,KAAK,CAAM,KAAA,CAAA;AAAA,KACrD,CAAA,CAAA;AAEF,IAAK,IAAA,CAAA,QAAA;AAAA,MAAS,EAAE,YAAc,EAAA,eAAA,EAAiB,aAAc,EAAA;AAAA,MAAG,MAC9D,qBAAA,GAAwB,qBAAsB,CAAA,eAAe,CAAI,GAAA,KAAA;AAAA,KACnE;AAAA;AACF,EAEA,MAAS,GAAA;AACP,IAAM,MAAA,EAAE,QAAS,EAAA,GAAI,IAAK,CAAA,KAAA;AAC1B,IAAM,MAAA,EAAE,aAAc,EAAA,GAAI,IAAK,CAAA,KAAA;AAE/B,IAAA,OAAO,QAAS,CAAA;AAAA,MACd,gBAAgB,IAAK,CAAA,cAAA;AAAA,MACrB;AAAA,KACD,CAAA;AAAA;AAEL;;;;"}