UNPKG

@grafana/ui

Version:
1 lines 5.12 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,SAAA,CAA4D;AAAA,EAClG,YAAY,KAAA,EAAgC;AAC1C,IAAA,KAAA,CAAM,KAAK,CAAA;AAEX,IAAA,IAAA,CAAK,cAAA,GAAiB,IAAA,CAAK,cAAA,CAAe,IAAA,CAAK,IAAI,CAAA;AAEnD,IAAA,IAAA,CAAK,KAAA,GAAQ;AAAA,MACX,cAAc,EAAC;AAAA,MACf,eAAe,KAAA,CAAM;AAAA,KACvB;AAAA,EACF;AAAA,EAEA,mBAAmB,SAAA,EAA8C;AAC/D,IAAA,MAAM,EAAE,MAAA,EAAO,GAAI,IAAA,CAAK,KAAA;AACxB,IAAA,IAAI,CAAC,OAAA,CAAQ,SAAA,CAAU,MAAA,EAAQ,MAAM,CAAA,EAAG;AACtC,MAAA,IAAA,CAAK,SAAS,EAAE,YAAA,EAAc,EAAC,EAAG,aAAA,EAAe,QAAQ,CAAA;AAAA,IAC3D;AAAA,EACF;AAAA,EAEA,cAAA,CAAe,OAAe,KAAA,EAAsC;AAClE,IAAA,MAAM,EAAE,MAAA,EAAQ,qBAAA,EAAsB,GAAI,IAAA,CAAK,KAAA;AAC/C,IAAA,MAAM,EAAE,YAAA,EAAa,GAAI,IAAA,CAAK,KAAA;AAE9B,IAAA,IAAI,KAAA,CAAM,OAAA,IAAW,KAAA,CAAM,OAAA,IAAW,MAAM,QAAA,EAAU;AAEpD,MAAA,MAAMA,mBACJ,YAAA,CAAa,OAAA,CAAQ,KAAK,CAAA,GAAI,KAC1B,YAAA,CAAa,MAAA,CAAO,CAACC,OAAAA,KAAWA,YAAW,KAAK,CAAA,GAChD,aAAa,MAAA,CAAO,CAAC,KAAK,CAAC,CAAA;AAEjC,MAAA,MAAMC,cAAAA,GAAgB,MAAA,CAAO,GAAA,CAAI,CAACD,OAAAA,MAAY;AAAA,QAC5C,GAAGA,OAAAA;AAAA,QACH,SAAA,EAAWD,gBAAAA,CAAgB,OAAA,CAAQC,OAAAA,CAAO,KAAK,CAAA,KAAM,CAAA;AAAA,OACvD,CAAE,CAAA;AACF,MAAA,IAAA,CAAK,QAAA;AAAA,QAAS,EAAE,YAAA,EAAcD,gBAAAA,EAAiB,aAAA,EAAAE,cAAAA,EAAc;AAAA,QAAG,MAC9D,qBAAA,GAAwB,qBAAA,CAAsBF,gBAAe,CAAA,GAAI,KAAA;AAAA,OACnE;AACA,MAAA;AAAA,IACF;AAGA,IAAA,MAAM,kBAAkB,MAAA,CAAO,GAAA,CAAI,CAACC,OAAAA,KAAWA,QAAO,KAAK,CAAA;AAC3D,IAAA,MAAM,eAAA,GACJ,YAAA,CAAa,MAAA,GAAS,CAAA,KAAM,eAAA,CAAgB,MAAA,GAAS,EAAC,GAAI,UAAA,CAAW,eAAA,EAAiB,CAAC,KAAK,CAAC,CAAA;AAC/F,IAAA,MAAM,aAAA,GAAgB,MAAA,CAAO,GAAA,CAAI,CAACA,OAAAA,MAAY;AAAA,MAC5C,GAAGA,OAAAA;AAAA,MACH,SAAA,EAAW,eAAA,CAAgB,OAAA,CAAQA,OAAAA,CAAO,KAAK,CAAA,KAAM,CAAA;AAAA,KACvD,CAAE,CAAA;AAEF,IAAA,IAAA,CAAK,QAAA;AAAA,MAAS,EAAE,YAAA,EAAc,eAAA,EAAiB,aAAA,EAAc;AAAA,MAAG,MAC9D,qBAAA,GAAwB,qBAAA,CAAsB,eAAe,CAAA,GAAI,KAAA;AAAA,KACnE;AAAA,EACF;AAAA,EAEA,MAAA,GAAS;AACP,IAAA,MAAM,EAAE,QAAA,EAAS,GAAI,IAAA,CAAK,KAAA;AAC1B,IAAA,MAAM,EAAE,aAAA,EAAc,GAAI,IAAA,CAAK,KAAA;AAE/B,IAAA,OAAO,QAAA,CAAS;AAAA,MACd,gBAAgB,IAAA,CAAK,cAAA;AAAA,MACrB;AAAA,KACD,CAAA;AAAA,EACH;AACF;;;;"}