@perses-dev/components 0.0.0-snapshot-saving-defaults-refinements-1b25cec → 0.0.0-snapshot-time-chart-rewrite-4667058
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/ContentWithLegend/ContentWithLegend.d.ts +1 -1
- package/dist/ContentWithLegend/ContentWithLegend.d.ts.map +1 -1
- package/dist/ContentWithLegend/ContentWithLegend.js +5 -3
- package/dist/ContentWithLegend/ContentWithLegend.js.map +1 -1
- package/dist/ContentWithLegend/model/content-with-legend-model.d.ts +10 -4
- package/dist/ContentWithLegend/model/content-with-legend-model.d.ts.map +1 -1
- package/dist/ContentWithLegend/model/content-with-legend-model.js +27 -8
- package/dist/ContentWithLegend/model/content-with-legend-model.js.map +1 -1
- package/dist/DateTimeRangePicker/DateTimeRangePicker.d.ts +1 -1
- package/dist/DateTimeRangePicker/DateTimeRangePicker.d.ts.map +1 -1
- package/dist/DateTimeRangePicker/DateTimeRangePicker.js.map +1 -1
- package/dist/DateTimeRangePicker/TimeRangeSelector.d.ts +2 -5
- package/dist/DateTimeRangePicker/TimeRangeSelector.d.ts.map +1 -1
- package/dist/DateTimeRangePicker/TimeRangeSelector.js.map +1 -1
- package/dist/Drawer/Drawer.js +1 -1
- package/dist/Drawer/Drawer.js.map +1 -1
- package/dist/EChart/EChart.d.ts +2 -1
- package/dist/EChart/EChart.d.ts.map +1 -1
- package/dist/EChart/EChart.js +15 -3
- package/dist/EChart/EChart.js.map +1 -1
- package/dist/GaugeChart/GaugeChart.d.ts +2 -2
- package/dist/GaugeChart/GaugeChart.d.ts.map +1 -1
- package/dist/GaugeChart/GaugeChart.js +7 -5
- package/dist/GaugeChart/GaugeChart.js.map +1 -1
- package/dist/Legend/CompactLegend.d.ts +4 -2
- package/dist/Legend/CompactLegend.d.ts.map +1 -1
- package/dist/Legend/CompactLegend.js +6 -3
- package/dist/Legend/CompactLegend.js.map +1 -1
- package/dist/Legend/Legend.d.ts +17 -3
- package/dist/Legend/Legend.d.ts.map +1 -1
- package/dist/Legend/Legend.js +7 -4
- package/dist/Legend/Legend.js.map +1 -1
- package/dist/Legend/ListLegend.d.ts +4 -2
- package/dist/Legend/ListLegend.d.ts.map +1 -1
- package/dist/Legend/ListLegend.js +6 -5
- package/dist/Legend/ListLegend.js.map +1 -1
- package/dist/Legend/ListLegendItem.d.ts +16 -3
- package/dist/Legend/ListLegendItem.d.ts.map +1 -1
- package/dist/Legend/ListLegendItem.js +17 -5
- package/dist/Legend/ListLegendItem.js.map +1 -1
- package/dist/Legend/TableLegend.d.ts +6 -3
- package/dist/Legend/TableLegend.d.ts.map +1 -1
- package/dist/Legend/TableLegend.js +17 -3
- package/dist/Legend/TableLegend.js.map +1 -1
- package/dist/Legend/index.d.ts +1 -0
- package/dist/Legend/index.d.ts.map +1 -1
- package/dist/Legend/index.js +1 -0
- package/dist/Legend/index.js.map +1 -1
- package/dist/Legend/legend-model.d.ts +24 -0
- package/dist/Legend/legend-model.d.ts.map +1 -0
- package/dist/Legend/legend-model.js +19 -0
- package/dist/Legend/legend-model.js.map +1 -0
- package/dist/LineChart/LineChart.d.ts +6 -11
- package/dist/LineChart/LineChart.d.ts.map +1 -1
- package/dist/LineChart/LineChart.js +36 -9
- package/dist/LineChart/LineChart.js.map +1 -1
- package/dist/LineChart/index.d.ts +0 -1
- package/dist/LineChart/index.d.ts.map +1 -1
- package/dist/LineChart/index.js.map +1 -1
- package/dist/OptionsEditorLayout/OptionsEditorControl.js +1 -1
- package/dist/OptionsEditorLayout/OptionsEditorControl.js.map +1 -1
- package/dist/RefreshIntervalPicker/RefreshIntervalPicker.d.ts +12 -0
- package/dist/RefreshIntervalPicker/RefreshIntervalPicker.d.ts.map +1 -0
- package/dist/RefreshIntervalPicker/RefreshIntervalPicker.js +45 -0
- package/dist/RefreshIntervalPicker/RefreshIntervalPicker.js.map +1 -0
- package/dist/RefreshIntervalPicker/index.d.ts +2 -0
- package/dist/RefreshIntervalPicker/index.d.ts.map +1 -0
- package/dist/{model/units → RefreshIntervalPicker}/index.js +1 -3
- package/dist/RefreshIntervalPicker/index.js.map +1 -0
- package/dist/SettingsAutocomplete/SettingsAutocomplete.d.ts +36 -0
- package/dist/SettingsAutocomplete/SettingsAutocomplete.d.ts.map +1 -0
- package/dist/SettingsAutocomplete/SettingsAutocomplete.js +65 -0
- package/dist/SettingsAutocomplete/SettingsAutocomplete.js.map +1 -0
- package/dist/SettingsAutocomplete/index.d.ts +2 -0
- package/dist/SettingsAutocomplete/index.d.ts.map +1 -0
- package/dist/{model/units/constants.js → SettingsAutocomplete/index.js} +2 -4
- package/dist/SettingsAutocomplete/index.js.map +1 -0
- package/dist/StatChart/StatChart.d.ts +3 -2
- package/dist/StatChart/StatChart.d.ts.map +1 -1
- package/dist/StatChart/StatChart.js +75 -22
- package/dist/StatChart/StatChart.js.map +1 -1
- package/dist/StatChart/calculateFontSize.d.ts +14 -0
- package/dist/StatChart/calculateFontSize.d.ts.map +1 -0
- package/dist/StatChart/calculateFontSize.js +47 -0
- package/dist/StatChart/calculateFontSize.js.map +1 -0
- package/dist/Table/InnerTable.js +3 -3
- package/dist/Table/InnerTable.js.map +1 -1
- package/dist/Table/Table.d.ts +1 -1
- package/dist/Table/Table.d.ts.map +1 -1
- package/dist/Table/Table.js +58 -10
- package/dist/Table/Table.js.map +1 -1
- package/dist/Table/TableCell.d.ts +16 -3
- package/dist/Table/TableCell.d.ts.map +1 -1
- package/dist/Table/TableCell.js +13 -5
- package/dist/Table/TableCell.js.map +1 -1
- package/dist/Table/TableCheckbox.js +1 -1
- package/dist/Table/TableCheckbox.js.map +1 -1
- package/dist/Table/TableHeaderCell.d.ts +23 -0
- package/dist/Table/TableHeaderCell.d.ts.map +1 -0
- package/dist/Table/TableHeaderCell.js +53 -0
- package/dist/Table/TableHeaderCell.js.map +1 -0
- package/dist/Table/TableRow.d.ts.map +1 -1
- package/dist/Table/TableRow.js +3 -3
- package/dist/Table/TableRow.js.map +1 -1
- package/dist/Table/VirtualizedTable.d.ts +3 -3
- package/dist/Table/VirtualizedTable.d.ts.map +1 -1
- package/dist/Table/VirtualizedTable.js +51 -10
- package/dist/Table/VirtualizedTable.js.map +1 -1
- package/dist/Table/model/table-model.d.ts +81 -3
- package/dist/Table/model/table-model.d.ts.map +1 -1
- package/dist/Table/model/table-model.js +22 -7
- package/dist/Table/model/table-model.js.map +1 -1
- package/dist/TimeChart/TimeChart.d.ts +23 -0
- package/dist/TimeChart/TimeChart.d.ts.map +1 -0
- package/dist/TimeChart/TimeChart.js +314 -0
- package/dist/TimeChart/TimeChart.js.map +1 -0
- package/dist/TimeChart/index.d.ts +2 -0
- package/dist/TimeChart/index.d.ts.map +1 -0
- package/dist/{LegendOptionsEditor → TimeChart}/index.js +1 -1
- package/dist/TimeChart/index.js.map +1 -0
- package/dist/TimeSeriesTooltip/{TimeSeriesTooltip.d.ts → LineChartTooltip.d.ts} +5 -4
- package/dist/TimeSeriesTooltip/LineChartTooltip.d.ts.map +1 -0
- package/dist/TimeSeriesTooltip/{TimeSeriesTooltip.js → LineChartTooltip.js} +7 -6
- package/dist/TimeSeriesTooltip/LineChartTooltip.js.map +1 -0
- package/dist/TimeSeriesTooltip/TimeChartTooltip.d.ts +16 -0
- package/dist/TimeSeriesTooltip/TimeChartTooltip.d.ts.map +1 -0
- package/dist/TimeSeriesTooltip/TimeChartTooltip.js +76 -0
- package/dist/TimeSeriesTooltip/TimeChartTooltip.js.map +1 -0
- package/dist/TimeSeriesTooltip/TooltipHeader.d.ts +2 -2
- package/dist/TimeSeriesTooltip/TooltipHeader.d.ts.map +1 -1
- package/dist/TimeSeriesTooltip/TooltipHeader.js +10 -8
- package/dist/TimeSeriesTooltip/TooltipHeader.js.map +1 -1
- package/dist/TimeSeriesTooltip/index.d.ts +2 -1
- package/dist/TimeSeriesTooltip/index.d.ts.map +1 -1
- package/dist/TimeSeriesTooltip/index.js +2 -1
- package/dist/TimeSeriesTooltip/index.js.map +1 -1
- package/dist/TimeSeriesTooltip/nearby-series.d.ts +23 -4
- package/dist/TimeSeriesTooltip/nearby-series.d.ts.map +1 -1
- package/dist/TimeSeriesTooltip/nearby-series.js +175 -17
- package/dist/TimeSeriesTooltip/nearby-series.js.map +1 -1
- package/dist/TimeSeriesTooltip/tooltip-model.d.ts +4 -0
- package/dist/TimeSeriesTooltip/tooltip-model.d.ts.map +1 -1
- package/dist/TimeSeriesTooltip/tooltip-model.js.map +1 -1
- package/dist/TimeSeriesTooltip/utils.d.ts +25 -0
- package/dist/TimeSeriesTooltip/utils.d.ts.map +1 -1
- package/dist/TimeSeriesTooltip/utils.js +29 -1
- package/dist/TimeSeriesTooltip/utils.js.map +1 -1
- package/dist/UnitSelector/UnitSelector.d.ts +1 -1
- package/dist/UnitSelector/UnitSelector.d.ts.map +1 -1
- package/dist/UnitSelector/UnitSelector.js +11 -24
- package/dist/UnitSelector/UnitSelector.js.map +1 -1
- package/dist/YAxisLabel.js +1 -1
- package/dist/YAxisLabel.js.map +1 -1
- package/dist/cjs/ContentWithLegend/ContentWithLegend.js +5 -3
- package/dist/cjs/ContentWithLegend/model/content-with-legend-model.js +28 -9
- package/dist/cjs/Drawer/Drawer.js +1 -1
- package/dist/cjs/EChart/EChart.js +22 -5
- package/dist/cjs/GaugeChart/GaugeChart.js +7 -5
- package/dist/cjs/Legend/CompactLegend.js +7 -4
- package/dist/cjs/Legend/Legend.js +8 -5
- package/dist/cjs/Legend/ListLegend.js +7 -6
- package/dist/cjs/Legend/ListLegendItem.js +17 -5
- package/dist/cjs/Legend/TableLegend.js +17 -3
- package/dist/cjs/Legend/index.js +1 -0
- package/dist/cjs/{model/units/types.js → Legend/legend-model.js} +7 -10
- package/dist/cjs/LineChart/LineChart.js +35 -47
- package/dist/cjs/OptionsEditorLayout/OptionsEditorControl.js +1 -1
- package/dist/cjs/RefreshIntervalPicker/RefreshIntervalPicker.js +51 -0
- package/dist/cjs/{model/units → RefreshIntervalPicker}/index.js +1 -3
- package/dist/cjs/SettingsAutocomplete/SettingsAutocomplete.js +66 -0
- package/dist/cjs/SettingsAutocomplete/index.js +28 -0
- package/dist/cjs/StatChart/StatChart.js +82 -24
- package/dist/cjs/StatChart/calculateFontSize.js +51 -0
- package/dist/cjs/Table/InnerTable.js +3 -3
- package/dist/cjs/Table/Table.js +57 -9
- package/dist/cjs/Table/TableCell.js +13 -5
- package/dist/cjs/Table/TableCheckbox.js +1 -1
- package/dist/cjs/Table/TableHeaderCell.js +59 -0
- package/dist/cjs/Table/TableRow.js +2 -2
- package/dist/cjs/Table/VirtualizedTable.js +51 -10
- package/dist/cjs/Table/model/table-model.js +22 -7
- package/dist/cjs/TimeChart/TimeChart.js +320 -0
- package/dist/cjs/{LegendOptionsEditor → TimeChart}/index.js +1 -1
- package/dist/cjs/TimeSeriesTooltip/{TimeSeriesTooltip.js → LineChartTooltip.js} +7 -45
- package/dist/cjs/TimeSeriesTooltip/TimeChartTooltip.js +87 -0
- package/dist/cjs/TimeSeriesTooltip/TooltipHeader.js +10 -8
- package/dist/cjs/TimeSeriesTooltip/index.js +2 -1
- package/dist/cjs/TimeSeriesTooltip/nearby-series.js +171 -17
- package/dist/cjs/TimeSeriesTooltip/utils.js +35 -3
- package/dist/cjs/UnitSelector/UnitSelector.js +15 -28
- package/dist/cjs/YAxisLabel.js +1 -1
- package/dist/cjs/index.js +3 -1
- package/dist/cjs/model/index.js +1 -2
- package/dist/cjs/model/timeOption.js +16 -0
- package/dist/cjs/{model/units/constants.js → theme/component-overrides/paper.js} +9 -5
- package/dist/cjs/theme/palette/background.js +2 -2
- package/dist/cjs/theme/theme.js +2 -0
- package/dist/cjs/utils/axis.js +58 -0
- package/dist/cjs/{LineChart/utils.js → utils/chart-actions.js} +9 -47
- package/dist/cjs/utils/format.js +47 -1
- package/dist/cjs/utils/index.js +3 -1
- package/dist/cjs/utils/theme-gen.js +44 -2
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/model/graph.d.ts +20 -3
- package/dist/model/graph.d.ts.map +1 -1
- package/dist/model/graph.js.map +1 -1
- package/dist/model/index.d.ts +1 -2
- package/dist/model/index.d.ts.map +1 -1
- package/dist/model/index.js +1 -2
- package/dist/model/index.js.map +1 -1
- package/dist/model/theme.d.ts +4 -6
- package/dist/model/theme.d.ts.map +1 -1
- package/dist/model/theme.js.map +1 -1
- package/dist/model/timeOption.d.ts +6 -0
- package/dist/model/timeOption.d.ts.map +1 -0
- package/dist/model/{units/types.js → timeOption.js} +2 -9
- package/dist/model/timeOption.js.map +1 -0
- package/dist/theme/component-overrides/paper.d.ts +3 -0
- package/dist/theme/component-overrides/paper.d.ts.map +1 -0
- package/dist/theme/component-overrides/paper.js +21 -0
- package/dist/theme/component-overrides/paper.js.map +1 -0
- package/dist/theme/palette/background.js +2 -2
- package/dist/theme/palette/background.js.map +1 -1
- package/dist/theme/theme.d.ts.map +1 -1
- package/dist/theme/theme.js +2 -0
- package/dist/theme/theme.js.map +1 -1
- package/dist/utils/axis.d.ts +14 -0
- package/dist/utils/axis.d.ts.map +1 -0
- package/dist/utils/axis.js +45 -0
- package/dist/utils/axis.js.map +1 -0
- package/dist/utils/chart-actions.d.ts +18 -0
- package/dist/utils/chart-actions.d.ts.map +1 -0
- package/dist/utils/chart-actions.js +52 -0
- package/dist/utils/chart-actions.js.map +1 -0
- package/dist/utils/format.d.ts +6 -0
- package/dist/utils/format.d.ts.map +1 -1
- package/dist/utils/format.js +47 -0
- package/dist/utils/format.js.map +1 -1
- package/dist/utils/index.d.ts +3 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +3 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/theme-gen.d.ts.map +1 -1
- package/dist/utils/theme-gen.js +38 -1
- package/dist/utils/theme-gen.js.map +1 -1
- package/package.json +5 -9
- package/dist/LegendOptionsEditor/LegendOptionsEditor.d.ts +0 -8
- package/dist/LegendOptionsEditor/LegendOptionsEditor.d.ts.map +0 -1
- package/dist/LegendOptionsEditor/LegendOptionsEditor.js +0 -109
- package/dist/LegendOptionsEditor/LegendOptionsEditor.js.map +0 -1
- package/dist/LegendOptionsEditor/index.d.ts +0 -2
- package/dist/LegendOptionsEditor/index.d.ts.map +0 -1
- package/dist/LegendOptionsEditor/index.js.map +0 -1
- package/dist/LineChart/utils.d.ts +0 -30
- package/dist/LineChart/utils.d.ts.map +0 -1
- package/dist/LineChart/utils.js +0 -90
- package/dist/LineChart/utils.js.map +0 -1
- package/dist/TimeSeriesTooltip/TimeSeriesTooltip.d.ts.map +0 -1
- package/dist/TimeSeriesTooltip/TimeSeriesTooltip.js.map +0 -1
- package/dist/cjs/LegendOptionsEditor/LegendOptionsEditor.js +0 -115
- package/dist/cjs/model/legend.js +0 -102
- package/dist/cjs/model/units/bytes.js +0 -84
- package/dist/cjs/model/units/decimal.js +0 -62
- package/dist/cjs/model/units/percent.js +0 -73
- package/dist/cjs/model/units/time.js +0 -105
- package/dist/cjs/model/units/units.js +0 -101
- package/dist/cjs/model/units/utils.js +0 -42
- package/dist/model/legend.d.ts +0 -36
- package/dist/model/legend.d.ts.map +0 -1
- package/dist/model/legend.js +0 -81
- package/dist/model/legend.js.map +0 -1
- package/dist/model/units/bytes.d.ts +0 -13
- package/dist/model/units/bytes.d.ts.map +0 -1
- package/dist/model/units/bytes.js +0 -66
- package/dist/model/units/bytes.js.map +0 -1
- package/dist/model/units/constants.d.ts +0 -2
- package/dist/model/units/constants.d.ts.map +0 -1
- package/dist/model/units/constants.js.map +0 -1
- package/dist/model/units/decimal.d.ts +0 -13
- package/dist/model/units/decimal.d.ts.map +0 -1
- package/dist/model/units/decimal.js +0 -49
- package/dist/model/units/decimal.js.map +0 -1
- package/dist/model/units/index.d.ts +0 -4
- package/dist/model/units/index.d.ts.map +0 -1
- package/dist/model/units/index.js.map +0 -1
- package/dist/model/units/percent.d.ts +0 -12
- package/dist/model/units/percent.d.ts.map +0 -1
- package/dist/model/units/percent.js +0 -60
- package/dist/model/units/percent.js.map +0 -1
- package/dist/model/units/time.d.ts +0 -22
- package/dist/model/units/time.d.ts.map +0 -1
- package/dist/model/units/time.js +0 -91
- package/dist/model/units/time.js.map +0 -1
- package/dist/model/units/types.d.ts +0 -47
- package/dist/model/units/types.d.ts.map +0 -1
- package/dist/model/units/types.js.map +0 -1
- package/dist/model/units/units.d.ts +0 -40
- package/dist/model/units/units.d.ts.map +0 -1
- package/dist/model/units/units.js +0 -80
- package/dist/model/units/units.js.map +0 -1
- package/dist/model/units/utils.d.ts +0 -4
- package/dist/model/units/utils.d.ts.map +0 -1
- package/dist/model/units/utils.js +0 -32
- package/dist/model/units/utils.js.map +0 -1
|
@@ -10,15 +10,134 @@
|
|
|
10
10
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
11
11
|
// See the License for the specific language governing permissions and
|
|
12
12
|
// limitations under the License.
|
|
13
|
-
import { formatValue
|
|
13
|
+
import { formatValue } from '@perses-dev/core';
|
|
14
|
+
import { OPTIMIZED_MODE_SERIES_LIMIT } from '../model';
|
|
14
15
|
// increase multipliers to show more series in tooltip
|
|
15
16
|
export const INCREASE_NEARBY_SERIES_MULTIPLIER = 5.5; // adjusts how many series show in tooltip (higher == more series shown)
|
|
16
17
|
export const DYNAMIC_NEARBY_SERIES_MULTIPLIER = 30; // used for adjustment after series number divisor
|
|
17
18
|
export const SHOW_FEWER_SERIES_LIMIT = 5;
|
|
18
19
|
/**
|
|
19
|
-
* Returns formatted series data for the points that are close to the user's cursor
|
|
20
|
+
* Returns formatted series data for the points that are close to the user's cursor.
|
|
21
|
+
* Adjust xBuffer and yBuffer to increase or decrease number of series shown.
|
|
22
|
+
*/ export function checkforNearbyTimeSeries(data, seriesMapping, pointInGrid, yBuffer, chart, unit) {
|
|
23
|
+
const currentNearbySeriesData = [];
|
|
24
|
+
var ref;
|
|
25
|
+
const cursorX = (ref = pointInGrid[0]) !== null && ref !== void 0 ? ref : null;
|
|
26
|
+
var ref1;
|
|
27
|
+
const cursorY = (ref1 = pointInGrid[1]) !== null && ref1 !== void 0 ? ref1 : null;
|
|
28
|
+
if (cursorX === null || cursorY === null) return currentNearbySeriesData;
|
|
29
|
+
if (!Array.isArray(data)) return currentNearbySeriesData;
|
|
30
|
+
// TODO: better way to calc xBuffer for longer time ranges
|
|
31
|
+
// const xBuffer = cursorX * 0.0000005;
|
|
32
|
+
const nearbySeriesIndexes = [];
|
|
33
|
+
const emphasizedSeriesIndexes = [];
|
|
34
|
+
const nonEmphasizedSeriesIndexes = [];
|
|
35
|
+
const totalSeries = data.length;
|
|
36
|
+
let closestTimestamp = null;
|
|
37
|
+
let closestDistance = Infinity;
|
|
38
|
+
// find the timestamp with data that is closest to cursorX
|
|
39
|
+
for(let seriesIdx = 0; seriesIdx < totalSeries; seriesIdx++){
|
|
40
|
+
const currentSeries = seriesMapping[seriesIdx];
|
|
41
|
+
if (currentSeries === undefined) break;
|
|
42
|
+
const currentDataset = totalSeries > 0 ? data[seriesIdx] : null;
|
|
43
|
+
if (currentDataset == null) break;
|
|
44
|
+
const currentDatasetValues = currentDataset.values;
|
|
45
|
+
for (const [timestamp] of currentDatasetValues){
|
|
46
|
+
const distance = Math.abs(timestamp - cursorX);
|
|
47
|
+
if (distance < closestDistance) {
|
|
48
|
+
closestTimestamp = timestamp;
|
|
49
|
+
closestDistance = distance;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
if (currentDatasetValues === undefined || !Array.isArray(currentDatasetValues)) break;
|
|
53
|
+
const lineSeries = currentSeries;
|
|
54
|
+
const currentSeriesName = lineSeries.name ? lineSeries.name.toString() : '';
|
|
55
|
+
var _color;
|
|
56
|
+
const markerColor = (_color = lineSeries.color) !== null && _color !== void 0 ? _color : '#000';
|
|
57
|
+
if (Array.isArray(data)) {
|
|
58
|
+
for(let datumIdx = 0; datumIdx < currentDatasetValues.length; datumIdx++){
|
|
59
|
+
const nearbyTimeSeries = currentDatasetValues[datumIdx];
|
|
60
|
+
if (nearbyTimeSeries === undefined || !Array.isArray(nearbyTimeSeries)) break;
|
|
61
|
+
const xValue = nearbyTimeSeries[0];
|
|
62
|
+
const yValue = nearbyTimeSeries[1];
|
|
63
|
+
// TODO: ensure null values not displayed in tooltip
|
|
64
|
+
if (yValue !== undefined && yValue !== null) {
|
|
65
|
+
// if (cursorX < xValue + xBuffer && cursorX > xValue - xBuffer) {
|
|
66
|
+
if (closestTimestamp === xValue) {
|
|
67
|
+
if (cursorY <= yValue + yBuffer && cursorY >= yValue - yBuffer) {
|
|
68
|
+
// show fewer bold series in tooltip when many total series
|
|
69
|
+
const minPercentRange = totalSeries > SHOW_FEWER_SERIES_LIMIT ? 2 : 5;
|
|
70
|
+
const percentRangeToCheck = Math.max(minPercentRange, 100 / totalSeries);
|
|
71
|
+
const isClosestToCursor = isWithinPercentageRange({
|
|
72
|
+
valueToCheck: cursorY,
|
|
73
|
+
baseValue: yValue,
|
|
74
|
+
percentage: percentRangeToCheck
|
|
75
|
+
});
|
|
76
|
+
if (isClosestToCursor) {
|
|
77
|
+
emphasizedSeriesIndexes.push(seriesIdx);
|
|
78
|
+
} else {
|
|
79
|
+
nonEmphasizedSeriesIndexes.push(seriesIdx);
|
|
80
|
+
// ensure series not close to cursor are not highlighted
|
|
81
|
+
if ((chart === null || chart === void 0 ? void 0 : chart.dispatchAction) !== undefined) {
|
|
82
|
+
chart.dispatchAction({
|
|
83
|
+
type: 'downplay',
|
|
84
|
+
seriesIndex: seriesIdx
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
// determine whether to convert timestamp to ms, see: https://stackoverflow.com/a/23982005/17575201
|
|
89
|
+
// const xValueMilliSeconds = xValue > 99999999999 ? xValue : xValue * 1000;
|
|
90
|
+
const formattedY = formatValue(yValue, unit);
|
|
91
|
+
currentNearbySeriesData.push({
|
|
92
|
+
seriesIdx: seriesIdx,
|
|
93
|
+
datumIdx: datumIdx,
|
|
94
|
+
seriesName: currentSeriesName,
|
|
95
|
+
date: closestTimestamp,
|
|
96
|
+
x: xValue,
|
|
97
|
+
y: yValue,
|
|
98
|
+
formattedY: formattedY,
|
|
99
|
+
markerColor: markerColor.toString(),
|
|
100
|
+
isClosestToCursor
|
|
101
|
+
});
|
|
102
|
+
nearbySeriesIndexes.push(seriesIdx);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
if ((chart === null || chart === void 0 ? void 0 : chart.dispatchAction) !== undefined) {
|
|
110
|
+
// Clears emphasis state of all lines that are not emphasized.
|
|
111
|
+
// Emphasized is a subset of just the nearby series that are closest to cursor.
|
|
112
|
+
chart.dispatchAction({
|
|
113
|
+
type: 'downplay',
|
|
114
|
+
seriesIndex: nonEmphasizedSeriesIndexes
|
|
115
|
+
});
|
|
116
|
+
// https://echarts.apache.org/en/api.html#action.highlight
|
|
117
|
+
if (emphasizedSeriesIndexes.length > 0) {
|
|
118
|
+
// Fadeout opacity of all series not closest to cursor.
|
|
119
|
+
chart.dispatchAction({
|
|
120
|
+
type: 'highlight',
|
|
121
|
+
seriesIndex: emphasizedSeriesIndexes,
|
|
122
|
+
notBlur: false,
|
|
123
|
+
escapeConnect: true
|
|
124
|
+
});
|
|
125
|
+
} else {
|
|
126
|
+
// When no emphasized series with bold text, notBlur allows opacity fadeout to not trigger.
|
|
127
|
+
chart.dispatchAction({
|
|
128
|
+
type: 'highlight',
|
|
129
|
+
seriesIndex: nearbySeriesIndexes,
|
|
130
|
+
notBlur: true,
|
|
131
|
+
escapeConnect: true
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
return currentNearbySeriesData;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* [DEPRECATED] Returns formatted series data for the points that are close to the user's cursor
|
|
20
139
|
* Adjust yBuffer to increase or decrease number of series shown
|
|
21
|
-
*/ export function
|
|
140
|
+
*/ export function legacyCheckforNearbySeries(data, pointInGrid, yBuffer, chart, unit) {
|
|
22
141
|
const currentNearbySeriesData = [];
|
|
23
142
|
var ref;
|
|
24
143
|
const cursorX = (ref = pointInGrid[0]) !== null && ref !== void 0 ? ref : null;
|
|
@@ -102,14 +221,16 @@ export const SHOW_FEWER_SERIES_LIMIT = 5;
|
|
|
102
221
|
chart.dispatchAction({
|
|
103
222
|
type: 'highlight',
|
|
104
223
|
seriesIndex: emphasizedSeriesIndexes,
|
|
105
|
-
notBlur: false
|
|
224
|
+
notBlur: false,
|
|
225
|
+
escapeConnect: true
|
|
106
226
|
});
|
|
107
227
|
} else {
|
|
108
228
|
// When no emphasized series with bold text, notBlur allows opacity fadeout to not trigger.
|
|
109
229
|
chart.dispatchAction({
|
|
110
230
|
type: 'highlight',
|
|
111
231
|
seriesIndex: nearbySeriesIndexes,
|
|
112
|
-
notBlur: true
|
|
232
|
+
notBlur: true,
|
|
233
|
+
escapeConnect: true
|
|
113
234
|
});
|
|
114
235
|
}
|
|
115
236
|
}
|
|
@@ -118,7 +239,7 @@ export const SHOW_FEWER_SERIES_LIMIT = 5;
|
|
|
118
239
|
/**
|
|
119
240
|
* Uses mouse position to determine whether user is hovering over a chart canvas
|
|
120
241
|
* If yes, convert from pixel values to logical cartesian coordinates and return all nearby series
|
|
121
|
-
*/ export function getNearbySeriesData({ mousePos , pinnedPos ,
|
|
242
|
+
*/ export function getNearbySeriesData({ mousePos , pinnedPos , data , seriesMapping , chart , unit , showAllSeries =false }) {
|
|
122
243
|
if (chart === undefined || mousePos === null) return [];
|
|
123
244
|
// prevents multiple tooltips showing from adjacent charts unless tooltip is pinned
|
|
124
245
|
let cursorTargetMatchesChart = false;
|
|
@@ -140,10 +261,10 @@ export const SHOW_FEWER_SERIES_LIMIT = 5;
|
|
|
140
261
|
cursorTargetMatchesChart = true;
|
|
141
262
|
}
|
|
142
263
|
if (cursorTargetMatchesChart === false) return [];
|
|
143
|
-
if (chart['_model'] === undefined) return [];
|
|
264
|
+
if (chart['_model'] === undefined || data === null) return [];
|
|
144
265
|
const chartModel = chart['_model'];
|
|
145
266
|
const yInterval = chartModel.getComponent('yAxis').axis.scale._interval;
|
|
146
|
-
const totalSeries =
|
|
267
|
+
const totalSeries = data.length;
|
|
147
268
|
const yBuffer = getYBuffer({
|
|
148
269
|
yInterval,
|
|
149
270
|
totalSeries,
|
|
@@ -157,17 +278,54 @@ export const SHOW_FEWER_SERIES_LIMIT = 5;
|
|
|
157
278
|
if (chart.containPixel('grid', pointInPixel)) {
|
|
158
279
|
const pointInGrid = chart.convertFromPixel('grid', pointInPixel);
|
|
159
280
|
if (pointInGrid[0] !== undefined && pointInGrid[1] !== undefined) {
|
|
160
|
-
return
|
|
281
|
+
return checkforNearbyTimeSeries(data, seriesMapping, pointInGrid, yBuffer, chart, unit);
|
|
161
282
|
}
|
|
162
283
|
}
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
284
|
+
return [];
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* [DEPRECATED] Uses mouse position to determine whether user is hovering over a chart canvas
|
|
288
|
+
* If yes, convert from pixel values to logical cartesian coordinates and return all nearby series
|
|
289
|
+
*/ export function legacyGetNearbySeriesData({ mousePos , pinnedPos , chartData , chart , unit , showAllSeries =false }) {
|
|
290
|
+
if (chart === undefined || mousePos === null) return [];
|
|
291
|
+
// prevents multiple tooltips showing from adjacent charts unless tooltip is pinned
|
|
292
|
+
let cursorTargetMatchesChart = false;
|
|
293
|
+
if (mousePos.target !== null) {
|
|
294
|
+
const currentParent = mousePos.target.parentElement;
|
|
295
|
+
if (currentParent !== null) {
|
|
296
|
+
const currentGrandparent = currentParent.parentElement;
|
|
297
|
+
if (currentGrandparent !== null) {
|
|
298
|
+
const chartDom = chart.getDom();
|
|
299
|
+
if (chartDom === currentGrandparent) {
|
|
300
|
+
cursorTargetMatchesChart = true;
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
// allows moving cursor inside tooltip without it fading away
|
|
306
|
+
if (pinnedPos !== null) {
|
|
307
|
+
mousePos = pinnedPos;
|
|
308
|
+
cursorTargetMatchesChart = true;
|
|
309
|
+
}
|
|
310
|
+
if (cursorTargetMatchesChart === false) return [];
|
|
311
|
+
if (chart['_model'] === undefined) return [];
|
|
312
|
+
const chartModel = chart['_model'];
|
|
313
|
+
const yInterval = chartModel.getComponent('yAxis').axis.scale._interval;
|
|
314
|
+
const totalSeries = chartData.timeSeries.length;
|
|
315
|
+
const yBuffer = getYBuffer({
|
|
316
|
+
yInterval,
|
|
317
|
+
totalSeries,
|
|
318
|
+
showAllSeries
|
|
319
|
+
});
|
|
320
|
+
var _x, _y;
|
|
321
|
+
const pointInPixel = [
|
|
322
|
+
(_x = mousePos.plotCanvas.x) !== null && _x !== void 0 ? _x : 0,
|
|
323
|
+
(_y = mousePos.plotCanvas.y) !== null && _y !== void 0 ? _y : 0
|
|
324
|
+
];
|
|
325
|
+
if (chart.containPixel('grid', pointInPixel)) {
|
|
326
|
+
const pointInGrid = chart.convertFromPixel('grid', pointInPixel);
|
|
327
|
+
if (pointInGrid[0] !== undefined && pointInGrid[1] !== undefined) {
|
|
328
|
+
return legacyCheckforNearbySeries(chartData, pointInGrid, yBuffer, chart, unit);
|
|
171
329
|
}
|
|
172
330
|
}
|
|
173
331
|
return [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/TimeSeriesTooltip/nearby-series.ts"],"sourcesContent":["// Copyright 2023 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { ECharts as EChartsInstance } from 'echarts/core';\nimport { formatValue, UnitOptions, EChartsDataFormat, OPTIMIZED_MODE_SERIES_LIMIT } from '../model';\nimport { CursorCoordinates, CursorData } from './tooltip-model';\n\n// increase multipliers to show more series in tooltip\nexport const INCREASE_NEARBY_SERIES_MULTIPLIER = 5.5; // adjusts how many series show in tooltip (higher == more series shown)\nexport const DYNAMIC_NEARBY_SERIES_MULTIPLIER = 30; // used for adjustment after series number divisor\nexport const SHOW_FEWER_SERIES_LIMIT = 5;\n\nexport interface NearbySeriesInfo {\n seriesIdx: number | null;\n datumIdx: number | null;\n seriesName: string;\n date: number;\n markerColor: string;\n x: number;\n y: number;\n formattedY: string;\n isClosestToCursor: boolean;\n}\n\nexport type NearbySeriesArray = NearbySeriesInfo[];\n\n/**\n * Returns formatted series data for the points that are close to the user's cursor\n * Adjust yBuffer to increase or decrease number of series shown\n */\nexport function checkforNearbySeries(\n data: EChartsDataFormat,\n pointInGrid: number[],\n yBuffer: number,\n chart?: EChartsInstance,\n unit?: UnitOptions\n): NearbySeriesArray {\n const currentNearbySeriesData: NearbySeriesArray = [];\n const cursorX: number | null = pointInGrid[0] ?? null;\n const cursorY: number | null = pointInGrid[1] ?? null;\n\n if (cursorX === null || cursorY === null) {\n return currentNearbySeriesData;\n }\n\n const nearbySeriesIndexes: number[] = [];\n const emphasizedSeriesIndexes: number[] = [];\n const nonEmphasizedSeriesIndexes: number[] = [];\n const totalSeries = data.timeSeries.length;\n if (Array.isArray(data.xAxis) && Array.isArray(data.timeSeries)) {\n for (let seriesIdx = 0; seriesIdx < totalSeries; seriesIdx++) {\n const currentSeries = data.timeSeries[seriesIdx];\n if (currentNearbySeriesData.length >= OPTIMIZED_MODE_SERIES_LIMIT) break;\n if (currentSeries !== undefined) {\n const currentSeriesName = currentSeries.name ? currentSeries.name.toString() : '';\n const markerColor = currentSeries.color ?? '#000';\n if (Array.isArray(currentSeries.data)) {\n for (let datumIdx = 0; datumIdx < currentSeries.data.length; datumIdx++) {\n const xValue = data.xAxis[datumIdx] ?? 0;\n const yValue = currentSeries.data[datumIdx];\n // ensure null values not displayed in tooltip\n if (yValue !== undefined && yValue !== null && cursorX === datumIdx) {\n if (yValue !== '-' && cursorY <= yValue + yBuffer && cursorY >= yValue - yBuffer) {\n // show fewer bold series in tooltip when many total series\n const minPercentRange = totalSeries > SHOW_FEWER_SERIES_LIMIT ? 2 : 5;\n const percentRangeToCheck = Math.max(minPercentRange, 100 / totalSeries);\n const isClosestToCursor = isWithinPercentageRange({\n valueToCheck: cursorY,\n baseValue: yValue,\n percentage: percentRangeToCheck,\n });\n if (isClosestToCursor) {\n emphasizedSeriesIndexes.push(seriesIdx);\n } else {\n nonEmphasizedSeriesIndexes.push(seriesIdx);\n // ensure series not close to cursor are not highlighted\n if (chart?.dispatchAction !== undefined) {\n chart.dispatchAction({\n type: 'downplay',\n seriesIndex: seriesIdx,\n });\n }\n }\n\n // determine whether to convert timestamp to ms, see: https://stackoverflow.com/a/23982005/17575201\n const xValueMilliSeconds = xValue > 99999999999 ? xValue : xValue * 1000;\n const formattedY = formatValue(yValue, unit);\n currentNearbySeriesData.push({\n seriesIdx: seriesIdx,\n datumIdx: datumIdx,\n seriesName: currentSeriesName,\n date: xValueMilliSeconds,\n x: xValue,\n y: yValue,\n formattedY: formattedY,\n markerColor: markerColor.toString(),\n isClosestToCursor,\n });\n nearbySeriesIndexes.push(seriesIdx);\n }\n }\n }\n }\n }\n }\n }\n if (chart?.dispatchAction !== undefined) {\n // Clears emphasis state of all lines that are not emphasized.\n // Emphasized is a subset of just the nearby series that are closest to cursor.\n chart.dispatchAction({\n type: 'downplay',\n seriesIndex: nonEmphasizedSeriesIndexes,\n });\n\n // https://echarts.apache.org/en/api.html#action.highlight\n if (emphasizedSeriesIndexes.length > 0) {\n // Fadeout opacity of all series not closest to cursor.\n chart.dispatchAction({\n type: 'highlight',\n seriesIndex: emphasizedSeriesIndexes,\n notBlur: false,\n });\n } else {\n // When no emphasized series with bold text, notBlur allows opacity fadeout to not trigger.\n chart.dispatchAction({\n type: 'highlight',\n seriesIndex: nearbySeriesIndexes,\n notBlur: true,\n });\n }\n }\n\n return currentNearbySeriesData;\n}\n\n/**\n * Uses mouse position to determine whether user is hovering over a chart canvas\n * If yes, convert from pixel values to logical cartesian coordinates and return all nearby series\n */\nexport function getNearbySeriesData({\n mousePos,\n pinnedPos,\n chartData,\n chart,\n unit,\n showAllSeries = false,\n}: {\n mousePos: CursorData['coords'];\n pinnedPos: CursorCoordinates | null;\n chartData: EChartsDataFormat;\n chart?: EChartsInstance;\n unit?: UnitOptions;\n showAllSeries?: boolean;\n}) {\n if (chart === undefined || mousePos === null) return [];\n\n // prevents multiple tooltips showing from adjacent charts unless tooltip is pinned\n let cursorTargetMatchesChart = false;\n if (mousePos.target !== null) {\n const currentParent = (<HTMLElement>mousePos.target).parentElement;\n if (currentParent !== null) {\n const currentGrandparent = currentParent.parentElement;\n if (currentGrandparent !== null) {\n const chartDom = chart.getDom();\n if (chartDom === currentGrandparent) {\n cursorTargetMatchesChart = true;\n }\n }\n }\n }\n\n // allows moving cursor inside tooltip without it fading away\n if (pinnedPos !== null) {\n mousePos = pinnedPos;\n cursorTargetMatchesChart = true;\n }\n\n if (cursorTargetMatchesChart === false) return [];\n\n if (chart['_model'] === undefined) return [];\n const chartModel = chart['_model'];\n const yInterval = chartModel.getComponent('yAxis').axis.scale._interval;\n const totalSeries = chartData.timeSeries.length;\n const yBuffer = getYBuffer({ yInterval, totalSeries, showAllSeries });\n const pointInPixel = [mousePos.plotCanvas.x ?? 0, mousePos.plotCanvas.y ?? 0];\n if (chart.containPixel('grid', pointInPixel)) {\n const pointInGrid = chart.convertFromPixel('grid', pointInPixel);\n if (pointInGrid[0] !== undefined && pointInGrid[1] !== undefined) {\n return checkforNearbySeries(chartData, pointInGrid, yBuffer, chart, unit);\n }\n }\n\n // clear all highlighted series when cursor exits canvas\n // https://echarts.apache.org/en/api.html#action.downplay\n for (let i = 0; i < totalSeries; i++) {\n if (chart?.dispatchAction !== undefined) {\n chart.dispatchAction({\n type: 'downplay',\n seriesIndex: i,\n });\n }\n }\n return [];\n}\n\n/*\n * Check if two numbers are within a specified percentage range\n */\nexport function isWithinPercentageRange({\n valueToCheck,\n baseValue,\n percentage,\n}: {\n valueToCheck: number;\n baseValue: number;\n percentage: number;\n}): boolean {\n const range = (percentage / 100) * baseValue;\n const lowerBound = baseValue - range;\n const upperBound = baseValue + range;\n return valueToCheck >= lowerBound && valueToCheck <= upperBound;\n}\n\n/*\n * Get range to check within for nearby series to show in tooltip.\n */\nexport function getYBuffer({\n yInterval,\n totalSeries,\n showAllSeries = false,\n}: {\n yInterval: number;\n totalSeries: number;\n showAllSeries?: boolean;\n}) {\n if (showAllSeries) {\n return yInterval * 10; // roughly correlates with grid so entire canvas is searched\n }\n\n // never let nearby series range be less than roughly the size of a single tick\n const yBufferMin = yInterval * 0.3;\n\n // tooltip trigger area gets smaller with more series\n if (totalSeries > SHOW_FEWER_SERIES_LIMIT) {\n const adjustedBuffer = (yInterval * DYNAMIC_NEARBY_SERIES_MULTIPLIER) / totalSeries;\n return Math.max(yBufferMin, adjustedBuffer);\n }\n\n // increase multiplier to expand nearby series range\n return Math.max(yBufferMin, yInterval * INCREASE_NEARBY_SERIES_MULTIPLIER);\n}\n"],"names":["formatValue","OPTIMIZED_MODE_SERIES_LIMIT","INCREASE_NEARBY_SERIES_MULTIPLIER","DYNAMIC_NEARBY_SERIES_MULTIPLIER","SHOW_FEWER_SERIES_LIMIT","checkforNearbySeries","data","pointInGrid","yBuffer","chart","unit","currentNearbySeriesData","cursorX","cursorY","nearbySeriesIndexes","emphasizedSeriesIndexes","nonEmphasizedSeriesIndexes","totalSeries","timeSeries","length","Array","isArray","xAxis","seriesIdx","currentSeries","undefined","currentSeriesName","name","toString","markerColor","color","datumIdx","xValue","yValue","minPercentRange","percentRangeToCheck","Math","max","isClosestToCursor","isWithinPercentageRange","valueToCheck","baseValue","percentage","push","dispatchAction","type","seriesIndex","xValueMilliSeconds","formattedY","seriesName","date","x","y","notBlur","getNearbySeriesData","mousePos","pinnedPos","chartData","showAllSeries","cursorTargetMatchesChart","target","currentParent","parentElement","currentGrandparent","chartDom","getDom","chartModel","yInterval","getComponent","axis","scale","_interval","getYBuffer","pointInPixel","plotCanvas","containPixel","convertFromPixel","i","range","lowerBound","upperBound","yBufferMin","adjustedBuffer"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/TimeSeriesTooltip/nearby-series.ts"],"sourcesContent":["// Copyright 2023 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { ECharts as EChartsInstance } from 'echarts/core';\nimport { LineSeriesOption } from 'echarts/charts';\nimport { formatValue, TimeSeriesValueTuple, UnitOptions, TimeSeries } from '@perses-dev/core';\nimport { EChartsDataFormat, OPTIMIZED_MODE_SERIES_LIMIT, TimeChartSeriesMapping } from '../model';\nimport { CursorCoordinates, CursorData } from './tooltip-model';\n\n// increase multipliers to show more series in tooltip\nexport const INCREASE_NEARBY_SERIES_MULTIPLIER = 5.5; // adjusts how many series show in tooltip (higher == more series shown)\nexport const DYNAMIC_NEARBY_SERIES_MULTIPLIER = 30; // used for adjustment after series number divisor\nexport const SHOW_FEWER_SERIES_LIMIT = 5;\n\nexport interface NearbySeriesInfo {\n seriesIdx: number | null;\n datumIdx: number | null;\n seriesName: string;\n date: number;\n markerColor: string;\n x: number;\n y: number;\n formattedY: string;\n isClosestToCursor: boolean;\n}\n\nexport type NearbySeriesArray = NearbySeriesInfo[];\n\n/**\n * Returns formatted series data for the points that are close to the user's cursor.\n * Adjust xBuffer and yBuffer to increase or decrease number of series shown.\n */\nexport function checkforNearbyTimeSeries(\n data: TimeSeries[],\n seriesMapping: TimeChartSeriesMapping,\n pointInGrid: number[],\n yBuffer: number,\n chart?: EChartsInstance,\n unit?: UnitOptions\n): NearbySeriesArray {\n const currentNearbySeriesData: NearbySeriesArray = [];\n const cursorX: number | null = pointInGrid[0] ?? null;\n const cursorY: number | null = pointInGrid[1] ?? null;\n\n if (cursorX === null || cursorY === null) return currentNearbySeriesData;\n\n if (!Array.isArray(data)) return currentNearbySeriesData;\n\n // TODO: better way to calc xBuffer for longer time ranges\n // const xBuffer = cursorX * 0.0000005;\n\n const nearbySeriesIndexes: number[] = [];\n const emphasizedSeriesIndexes: number[] = [];\n const nonEmphasizedSeriesIndexes: number[] = [];\n const totalSeries = data.length;\n\n let closestTimestamp = null;\n let closestDistance = Infinity;\n\n // find the timestamp with data that is closest to cursorX\n for (let seriesIdx = 0; seriesIdx < totalSeries; seriesIdx++) {\n const currentSeries = seriesMapping[seriesIdx];\n if (currentSeries === undefined) break;\n\n const currentDataset = totalSeries > 0 ? data[seriesIdx] : null;\n if (currentDataset == null) break;\n\n const currentDatasetValues: TimeSeriesValueTuple[] = currentDataset.values;\n\n for (const [timestamp] of currentDatasetValues) {\n const distance = Math.abs(timestamp - cursorX);\n\n if (distance < closestDistance) {\n closestTimestamp = timestamp;\n closestDistance = distance;\n }\n }\n\n if (currentDatasetValues === undefined || !Array.isArray(currentDatasetValues)) break;\n const lineSeries = currentSeries as LineSeriesOption;\n const currentSeriesName = lineSeries.name ? lineSeries.name.toString() : '';\n const markerColor = lineSeries.color ?? '#000';\n if (Array.isArray(data)) {\n for (let datumIdx = 0; datumIdx < currentDatasetValues.length; datumIdx++) {\n const nearbyTimeSeries = currentDatasetValues[datumIdx];\n if (nearbyTimeSeries === undefined || !Array.isArray(nearbyTimeSeries)) break;\n\n const xValue = nearbyTimeSeries[0];\n const yValue = nearbyTimeSeries[1];\n\n // TODO: ensure null values not displayed in tooltip\n if (yValue !== undefined && yValue !== null) {\n // if (cursorX < xValue + xBuffer && cursorX > xValue - xBuffer) {\n if (closestTimestamp === xValue) {\n if (cursorY <= yValue + yBuffer && cursorY >= yValue - yBuffer) {\n // show fewer bold series in tooltip when many total series\n const minPercentRange = totalSeries > SHOW_FEWER_SERIES_LIMIT ? 2 : 5;\n const percentRangeToCheck = Math.max(minPercentRange, 100 / totalSeries);\n const isClosestToCursor = isWithinPercentageRange({\n valueToCheck: cursorY,\n baseValue: yValue,\n percentage: percentRangeToCheck,\n });\n if (isClosestToCursor) {\n emphasizedSeriesIndexes.push(seriesIdx);\n } else {\n nonEmphasizedSeriesIndexes.push(seriesIdx);\n // ensure series not close to cursor are not highlighted\n if (chart?.dispatchAction !== undefined) {\n chart.dispatchAction({\n type: 'downplay',\n seriesIndex: seriesIdx,\n });\n }\n }\n\n // determine whether to convert timestamp to ms, see: https://stackoverflow.com/a/23982005/17575201\n // const xValueMilliSeconds = xValue > 99999999999 ? xValue : xValue * 1000;\n const formattedY = formatValue(yValue, unit);\n currentNearbySeriesData.push({\n seriesIdx: seriesIdx,\n datumIdx: datumIdx,\n seriesName: currentSeriesName,\n date: closestTimestamp,\n x: xValue,\n y: yValue,\n formattedY: formattedY,\n markerColor: markerColor.toString(),\n isClosestToCursor,\n });\n nearbySeriesIndexes.push(seriesIdx);\n }\n }\n }\n }\n }\n }\n\n if (chart?.dispatchAction !== undefined) {\n // Clears emphasis state of all lines that are not emphasized.\n // Emphasized is a subset of just the nearby series that are closest to cursor.\n chart.dispatchAction({\n type: 'downplay',\n seriesIndex: nonEmphasizedSeriesIndexes,\n });\n\n // https://echarts.apache.org/en/api.html#action.highlight\n if (emphasizedSeriesIndexes.length > 0) {\n // Fadeout opacity of all series not closest to cursor.\n chart.dispatchAction({\n type: 'highlight',\n seriesIndex: emphasizedSeriesIndexes,\n notBlur: false, // ensure blur IS triggered, this is default but setting so it is explicit\n escapeConnect: true, // shared crosshair should not emphasize series on adjacent charts\n });\n } else {\n // When no emphasized series with bold text, notBlur allows opacity fadeout to not trigger.\n chart.dispatchAction({\n type: 'highlight',\n seriesIndex: nearbySeriesIndexes,\n notBlur: true, // do not trigger blur state when cursor is not immediately close to any series\n escapeConnect: true, // shared crosshair should not emphasize series on adjacent charts\n });\n }\n }\n\n return currentNearbySeriesData;\n}\n\n/**\n * [DEPRECATED] Returns formatted series data for the points that are close to the user's cursor\n * Adjust yBuffer to increase or decrease number of series shown\n */\nexport function legacyCheckforNearbySeries(\n data: EChartsDataFormat,\n pointInGrid: number[],\n yBuffer: number,\n chart?: EChartsInstance,\n unit?: UnitOptions\n): NearbySeriesArray {\n const currentNearbySeriesData: NearbySeriesArray = [];\n const cursorX: number | null = pointInGrid[0] ?? null;\n const cursorY: number | null = pointInGrid[1] ?? null;\n\n if (cursorX === null || cursorY === null) {\n return currentNearbySeriesData;\n }\n\n const nearbySeriesIndexes: number[] = [];\n const emphasizedSeriesIndexes: number[] = [];\n const nonEmphasizedSeriesIndexes: number[] = [];\n const totalSeries = data.timeSeries.length;\n if (Array.isArray(data.xAxis) && Array.isArray(data.timeSeries)) {\n for (let seriesIdx = 0; seriesIdx < totalSeries; seriesIdx++) {\n const currentSeries = data.timeSeries[seriesIdx];\n if (currentNearbySeriesData.length >= OPTIMIZED_MODE_SERIES_LIMIT) break;\n if (currentSeries !== undefined) {\n const currentSeriesName = currentSeries.name ? currentSeries.name.toString() : '';\n const markerColor = currentSeries.color ?? '#000';\n if (Array.isArray(currentSeries.data)) {\n for (let datumIdx = 0; datumIdx < currentSeries.data.length; datumIdx++) {\n const xValue = data.xAxis[datumIdx] ?? 0;\n const yValue = currentSeries.data[datumIdx];\n // ensure null values not displayed in tooltip\n if (yValue !== undefined && yValue !== null && cursorX === datumIdx) {\n if (yValue !== '-' && cursorY <= yValue + yBuffer && cursorY >= yValue - yBuffer) {\n // show fewer bold series in tooltip when many total series\n const minPercentRange = totalSeries > SHOW_FEWER_SERIES_LIMIT ? 2 : 5;\n const percentRangeToCheck = Math.max(minPercentRange, 100 / totalSeries);\n const isClosestToCursor = isWithinPercentageRange({\n valueToCheck: cursorY,\n baseValue: yValue,\n percentage: percentRangeToCheck,\n });\n if (isClosestToCursor) {\n emphasizedSeriesIndexes.push(seriesIdx);\n } else {\n nonEmphasizedSeriesIndexes.push(seriesIdx);\n // ensure series not close to cursor are not highlighted\n if (chart?.dispatchAction !== undefined) {\n chart.dispatchAction({\n type: 'downplay',\n seriesIndex: seriesIdx,\n });\n }\n }\n\n // determine whether to convert timestamp to ms, see: https://stackoverflow.com/a/23982005/17575201\n const xValueMilliSeconds = xValue > 99999999999 ? xValue : xValue * 1000;\n const formattedY = formatValue(yValue, unit);\n currentNearbySeriesData.push({\n seriesIdx: seriesIdx,\n datumIdx: datumIdx,\n seriesName: currentSeriesName,\n date: xValueMilliSeconds,\n x: xValue,\n y: yValue,\n formattedY: formattedY,\n markerColor: markerColor.toString(),\n isClosestToCursor,\n });\n nearbySeriesIndexes.push(seriesIdx);\n }\n }\n }\n }\n }\n }\n }\n if (chart?.dispatchAction !== undefined) {\n // Clears emphasis state of all lines that are not emphasized.\n // Emphasized is a subset of just the nearby series that are closest to cursor.\n chart.dispatchAction({\n type: 'downplay',\n seriesIndex: nonEmphasizedSeriesIndexes,\n });\n\n // https://echarts.apache.org/en/api.html#action.highlight\n if (emphasizedSeriesIndexes.length > 0) {\n // Fadeout opacity of all series not closest to cursor.\n chart.dispatchAction({\n type: 'highlight',\n seriesIndex: emphasizedSeriesIndexes,\n notBlur: false, // ensure blur IS triggered, this is default but setting so it is explicit\n escapeConnect: true, // shared crosshair should not emphasize series on adjacent charts\n });\n } else {\n // When no emphasized series with bold text, notBlur allows opacity fadeout to not trigger.\n chart.dispatchAction({\n type: 'highlight',\n seriesIndex: nearbySeriesIndexes,\n notBlur: true, // do not trigger blur state when cursor is not immediately close to any series\n escapeConnect: true, // shared crosshair should not emphasize series on adjacent charts\n });\n }\n }\n\n return currentNearbySeriesData;\n}\n\n/**\n * Uses mouse position to determine whether user is hovering over a chart canvas\n * If yes, convert from pixel values to logical cartesian coordinates and return all nearby series\n */\nexport function getNearbySeriesData({\n mousePos,\n pinnedPos,\n data,\n seriesMapping,\n chart,\n unit,\n showAllSeries = false,\n}: {\n mousePos: CursorData['coords'];\n pinnedPos: CursorCoordinates | null;\n data: TimeSeries[];\n seriesMapping: TimeChartSeriesMapping;\n chart?: EChartsInstance;\n unit?: UnitOptions;\n showAllSeries?: boolean;\n}) {\n if (chart === undefined || mousePos === null) return [];\n\n // prevents multiple tooltips showing from adjacent charts unless tooltip is pinned\n let cursorTargetMatchesChart = false;\n if (mousePos.target !== null) {\n const currentParent = (<HTMLElement>mousePos.target).parentElement;\n if (currentParent !== null) {\n const currentGrandparent = currentParent.parentElement;\n if (currentGrandparent !== null) {\n const chartDom = chart.getDom();\n if (chartDom === currentGrandparent) {\n cursorTargetMatchesChart = true;\n }\n }\n }\n }\n\n // allows moving cursor inside tooltip without it fading away\n if (pinnedPos !== null) {\n mousePos = pinnedPos;\n cursorTargetMatchesChart = true;\n }\n\n if (cursorTargetMatchesChart === false) return [];\n\n if (chart['_model'] === undefined || data === null) return [];\n const chartModel = chart['_model'];\n const yInterval = chartModel.getComponent('yAxis').axis.scale._interval;\n const totalSeries = data.length;\n\n const yBuffer = getYBuffer({ yInterval, totalSeries, showAllSeries });\n\n const pointInPixel = [mousePos.plotCanvas.x ?? 0, mousePos.plotCanvas.y ?? 0];\n if (chart.containPixel('grid', pointInPixel)) {\n const pointInGrid: number[] = chart.convertFromPixel('grid', pointInPixel);\n if (pointInGrid[0] !== undefined && pointInGrid[1] !== undefined) {\n return checkforNearbyTimeSeries(data, seriesMapping, pointInGrid, yBuffer, chart, unit);\n }\n }\n\n return [];\n}\n\n/**\n * [DEPRECATED] Uses mouse position to determine whether user is hovering over a chart canvas\n * If yes, convert from pixel values to logical cartesian coordinates and return all nearby series\n */\nexport function legacyGetNearbySeriesData({\n mousePos,\n pinnedPos,\n chartData,\n chart,\n unit,\n showAllSeries = false,\n}: {\n mousePos: CursorData['coords'];\n pinnedPos: CursorCoordinates | null;\n chartData: EChartsDataFormat;\n chart?: EChartsInstance;\n unit?: UnitOptions;\n showAllSeries?: boolean;\n}) {\n if (chart === undefined || mousePos === null) return [];\n\n // prevents multiple tooltips showing from adjacent charts unless tooltip is pinned\n let cursorTargetMatchesChart = false;\n if (mousePos.target !== null) {\n const currentParent = (<HTMLElement>mousePos.target).parentElement;\n if (currentParent !== null) {\n const currentGrandparent = currentParent.parentElement;\n if (currentGrandparent !== null) {\n const chartDom = chart.getDom();\n if (chartDom === currentGrandparent) {\n cursorTargetMatchesChart = true;\n }\n }\n }\n }\n\n // allows moving cursor inside tooltip without it fading away\n if (pinnedPos !== null) {\n mousePos = pinnedPos;\n cursorTargetMatchesChart = true;\n }\n\n if (cursorTargetMatchesChart === false) return [];\n\n if (chart['_model'] === undefined) return [];\n const chartModel = chart['_model'];\n const yInterval = chartModel.getComponent('yAxis').axis.scale._interval;\n const totalSeries = chartData.timeSeries.length;\n const yBuffer = getYBuffer({ yInterval, totalSeries, showAllSeries });\n const pointInPixel = [mousePos.plotCanvas.x ?? 0, mousePos.plotCanvas.y ?? 0];\n if (chart.containPixel('grid', pointInPixel)) {\n const pointInGrid = chart.convertFromPixel('grid', pointInPixel);\n if (pointInGrid[0] !== undefined && pointInGrid[1] !== undefined) {\n return legacyCheckforNearbySeries(chartData, pointInGrid, yBuffer, chart, unit);\n }\n }\n\n return [];\n}\n\n/*\n * Check if two numbers are within a specified percentage range\n */\nexport function isWithinPercentageRange({\n valueToCheck,\n baseValue,\n percentage,\n}: {\n valueToCheck: number;\n baseValue: number;\n percentage: number;\n}): boolean {\n const range = (percentage / 100) * baseValue;\n const lowerBound = baseValue - range;\n const upperBound = baseValue + range;\n return valueToCheck >= lowerBound && valueToCheck <= upperBound;\n}\n\n/*\n * Get range to check within for nearby series to show in tooltip.\n */\nexport function getYBuffer({\n yInterval,\n totalSeries,\n showAllSeries = false,\n}: {\n yInterval: number;\n totalSeries: number;\n showAllSeries?: boolean;\n}) {\n if (showAllSeries) {\n return yInterval * 10; // roughly correlates with grid so entire canvas is searched\n }\n\n // never let nearby series range be less than roughly the size of a single tick\n const yBufferMin = yInterval * 0.3;\n\n // tooltip trigger area gets smaller with more series\n if (totalSeries > SHOW_FEWER_SERIES_LIMIT) {\n const adjustedBuffer = (yInterval * DYNAMIC_NEARBY_SERIES_MULTIPLIER) / totalSeries;\n return Math.max(yBufferMin, adjustedBuffer);\n }\n\n // increase multiplier to expand nearby series range\n return Math.max(yBufferMin, yInterval * INCREASE_NEARBY_SERIES_MULTIPLIER);\n}\n"],"names":["formatValue","OPTIMIZED_MODE_SERIES_LIMIT","INCREASE_NEARBY_SERIES_MULTIPLIER","DYNAMIC_NEARBY_SERIES_MULTIPLIER","SHOW_FEWER_SERIES_LIMIT","checkforNearbyTimeSeries","data","seriesMapping","pointInGrid","yBuffer","chart","unit","currentNearbySeriesData","cursorX","cursorY","Array","isArray","nearbySeriesIndexes","emphasizedSeriesIndexes","nonEmphasizedSeriesIndexes","totalSeries","length","closestTimestamp","closestDistance","Infinity","seriesIdx","currentSeries","undefined","currentDataset","currentDatasetValues","values","timestamp","distance","Math","abs","lineSeries","currentSeriesName","name","toString","markerColor","color","datumIdx","nearbyTimeSeries","xValue","yValue","minPercentRange","percentRangeToCheck","max","isClosestToCursor","isWithinPercentageRange","valueToCheck","baseValue","percentage","push","dispatchAction","type","seriesIndex","formattedY","seriesName","date","x","y","notBlur","escapeConnect","legacyCheckforNearbySeries","timeSeries","xAxis","xValueMilliSeconds","getNearbySeriesData","mousePos","pinnedPos","showAllSeries","cursorTargetMatchesChart","target","currentParent","parentElement","currentGrandparent","chartDom","getDom","chartModel","yInterval","getComponent","axis","scale","_interval","getYBuffer","pointInPixel","plotCanvas","containPixel","convertFromPixel","legacyGetNearbySeriesData","chartData","range","lowerBound","upperBound","yBufferMin","adjustedBuffer"],"mappings":"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"}
|
|
@@ -71,5 +71,9 @@ declare type ZREventProperties = {
|
|
|
71
71
|
};
|
|
72
72
|
export declare type ZRRawMouseEvent = MouseEvent & ZREventProperties;
|
|
73
73
|
export declare const useMousePosition: () => CursorData['coords'];
|
|
74
|
+
export declare type TooltipConfig = {
|
|
75
|
+
wrapLabels: boolean;
|
|
76
|
+
hidden?: boolean;
|
|
77
|
+
};
|
|
74
78
|
export {};
|
|
75
79
|
//# sourceMappingURL=tooltip-model.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tooltip-model.d.ts","sourceRoot":"","sources":["../../src/TimeSeriesTooltip/tooltip-model.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,eAAO,MAAM,iBAAiB,MAAM,CAAC;AACrC,eAAO,MAAM,iBAAiB,MAAM,CAAC;AACrC,eAAO,MAAM,kBAAkB,MAAM,CAAC;AACtC,eAAO,MAAM,wBAAwB,QAA0B,CAAC;AAChE,eAAO,MAAM,+BAA+B,OAAO,CAAC;AAEpD,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAExC,eAAO,MAAM,yBAAyB,qCAAqC,CAAC;AAC5E,eAAO,MAAM,6BAA6B,iDAAiD,CAAC;AAE5F,eAAO,MAAM,yBAAyB,YAAY,CAAC;AAEnD,eAAO,MAAM,mBAAmB,qBAQ9B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;CAa7B,CAAC;AAEF,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;CAG5B,CAAC;AAEF,MAAM,WAAW,UAAU;IACzB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,CAAC,EAAE;QACR,CAAC,CAAC,EAAE,MAAM,CAAC;QACX,CAAC,CAAC,EAAE,MAAM,CAAC;KACZ,CAAC;IACF,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,aAAa,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACxC,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,aAAK,iBAAiB,GAAG;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,cAAc,GAAG,gBAAgB,CAAC;IACnD,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,oBAAY,eAAe,GAAG,UAAU,GAAG,iBAAiB,CAAC;AAE7D,eAAO,MAAM,gBAAgB,QAAO,UAAU,CAAC,QAAQ,CAoCtD,CAAC"}
|
|
1
|
+
{"version":3,"file":"tooltip-model.d.ts","sourceRoot":"","sources":["../../src/TimeSeriesTooltip/tooltip-model.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,eAAO,MAAM,iBAAiB,MAAM,CAAC;AACrC,eAAO,MAAM,iBAAiB,MAAM,CAAC;AACrC,eAAO,MAAM,kBAAkB,MAAM,CAAC;AACtC,eAAO,MAAM,wBAAwB,QAA0B,CAAC;AAChE,eAAO,MAAM,+BAA+B,OAAO,CAAC;AAEpD,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAExC,eAAO,MAAM,yBAAyB,qCAAqC,CAAC;AAC5E,eAAO,MAAM,6BAA6B,iDAAiD,CAAC;AAE5F,eAAO,MAAM,yBAAyB,YAAY,CAAC;AAEnD,eAAO,MAAM,mBAAmB,qBAQ9B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;CAa7B,CAAC;AAEF,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;CAG5B,CAAC;AAEF,MAAM,WAAW,UAAU;IACzB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,CAAC,EAAE;QACR,CAAC,CAAC,EAAE,MAAM,CAAC;QACX,CAAC,CAAC,EAAE,MAAM,CAAC;KACZ,CAAC;IACF,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,aAAa,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACxC,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,aAAK,iBAAiB,GAAG;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,cAAc,GAAG,gBAAgB,CAAC;IACnD,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,oBAAY,eAAe,GAAG,UAAU,GAAG,iBAAiB,CAAC;AAE7D,eAAO,MAAM,gBAAgB,QAAO,UAAU,CAAC,QAAQ,CAoCtD,CAAC;AAEF,oBAAY,aAAa,GAAG;IAC1B,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/TimeSeriesTooltip/tooltip-model.ts"],"sourcesContent":["// Copyright 2023 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { useEffect, useState } from 'react';\nimport { NearbySeriesArray } from './nearby-series';\n\nexport const TOOLTIP_MIN_WIDTH = 375;\nexport const TOOLTIP_MAX_WIDTH = 650;\nexport const TOOLTIP_MAX_HEIGHT = 650;\nexport const TOOLTIP_LABELS_MAX_WIDTH = TOOLTIP_MAX_WIDTH - 150;\nexport const TOOLTIP_ADJUST_Y_POS_MULTIPLIER = 0.75;\n\nexport const FALLBACK_CHART_WIDTH = 750;\n\nexport const NEARBY_SERIES_DESCRIPTION = 'nearby series showing in tooltip';\nexport const EMPHASIZED_SERIES_DESCRIPTION = 'emphasized series showing as bold in tooltip';\n\nexport const TOOLTIP_BG_COLOR_FALLBACK = '#2E313E';\n\nexport const TOOLTIP_DATE_FORMAT = new Intl.DateTimeFormat(undefined, {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n hour12: true,\n});\n\nexport const defaultCursorData = {\n coords: {\n plotCanvas: {\n x: 0,\n y: 0,\n },\n zrender: {\n x: 0,\n y: 0,\n },\n target: null,\n },\n chartWidth: 0,\n};\n\nexport const emptyTooltipData = {\n cursor: defaultCursorData,\n focusedSeries: null,\n};\n\nexport interface Coordinate {\n x: number;\n y: number;\n}\n\nexport interface CursorCoordinates {\n page: Coordinate;\n client: Coordinate;\n plotCanvas: Coordinate;\n zrender?: {\n x?: number;\n y?: number;\n };\n target: EventTarget | null;\n}\n\nexport interface CursorData {\n coords: CursorCoordinates | null;\n chartWidth?: number;\n}\n\nexport interface TooltipData {\n focusedSeries: NearbySeriesArray | null;\n cursor: CursorData;\n}\n\ntype ZREventProperties = {\n zrX?: number;\n zrY?: number;\n zrDelta?: number;\n zrEventControl?: 'no_globalout' | 'only_globalout';\n zrByTouch?: boolean;\n};\n\nexport type ZRRawMouseEvent = MouseEvent & ZREventProperties;\n\nexport const useMousePosition = (): CursorData['coords'] => {\n const [coords, setCoords] = useState<CursorData['coords']>(null);\n\n useEffect(() => {\n const setFromEvent = (e: ZRRawMouseEvent) => {\n return setCoords({\n page: {\n x: e.pageX,\n y: e.pageY,\n },\n client: {\n x: e.clientX,\n y: e.clientY,\n },\n plotCanvas: {\n x: e.offsetX,\n y: e.offsetY,\n },\n zrender: {\n // echarts canvas coordinates added automatically by zrender\n // zrX and zrY are similar to offsetX and offsetY but they return undefined when not hovering over a chart canvas\n x: e.zrX,\n y: e.zrY,\n },\n // necessary to check whether cursor target matches correct chart canvas (since each chart has its own mousemove listener)\n target: e.target,\n });\n };\n window.addEventListener('mousemove', setFromEvent);\n\n return () => {\n window.removeEventListener('mousemove', setFromEvent);\n };\n }, []);\n\n return coords;\n};\n"],"names":["useEffect","useState","TOOLTIP_MIN_WIDTH","TOOLTIP_MAX_WIDTH","TOOLTIP_MAX_HEIGHT","TOOLTIP_LABELS_MAX_WIDTH","TOOLTIP_ADJUST_Y_POS_MULTIPLIER","FALLBACK_CHART_WIDTH","NEARBY_SERIES_DESCRIPTION","EMPHASIZED_SERIES_DESCRIPTION","TOOLTIP_BG_COLOR_FALLBACK","TOOLTIP_DATE_FORMAT","Intl","DateTimeFormat","undefined","year","month","day","hour","minute","second","hour12","defaultCursorData","coords","plotCanvas","x","y","zrender","target","chartWidth","emptyTooltipData","cursor","focusedSeries","useMousePosition","setCoords","setFromEvent","e","page","pageX","pageY","client","clientX","clientY","offsetX","offsetY","zrX","zrY","window","addEventListener","removeEventListener"],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,SAASA,SAAS,EAAEC,QAAQ,QAAQ,OAAO,CAAC;AAG5C,OAAO,MAAMC,iBAAiB,GAAG,GAAG,CAAC;AACrC,OAAO,MAAMC,iBAAiB,GAAG,GAAG,CAAC;AACrC,OAAO,MAAMC,kBAAkB,GAAG,GAAG,CAAC;AACtC,OAAO,MAAMC,wBAAwB,GAAGF,iBAAiB,GAAG,GAAG,CAAC;AAChE,OAAO,MAAMG,+BAA+B,GAAG,IAAI,CAAC;AAEpD,OAAO,MAAMC,oBAAoB,GAAG,GAAG,CAAC;AAExC,OAAO,MAAMC,yBAAyB,GAAG,kCAAkC,CAAC;AAC5E,OAAO,MAAMC,6BAA6B,GAAG,8CAA8C,CAAC;AAE5F,OAAO,MAAMC,yBAAyB,GAAG,SAAS,CAAC;AAEnD,OAAO,MAAMC,mBAAmB,GAAG,IAAIC,IAAI,CAACC,cAAc,CAACC,SAAS,EAAE;IACpEC,IAAI,EAAE,SAAS;IACfC,KAAK,EAAE,OAAO;IACdC,GAAG,EAAE,SAAS;IACdC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE,SAAS;IACjBC,MAAM,EAAE,SAAS;IACjBC,MAAM,EAAE,IAAI;CACb,CAAC,CAAC;AAEH,OAAO,MAAMC,iBAAiB,GAAG;IAC/BC,MAAM,EAAE;QACNC,UAAU,EAAE;YACVC,CAAC,EAAE,CAAC;YACJC,CAAC,EAAE,CAAC;SACL;QACDC,OAAO,EAAE;YACPF,CAAC,EAAE,CAAC;YACJC,CAAC,EAAE,CAAC;SACL;QACDE,MAAM,EAAE,IAAI;KACb;IACDC,UAAU,EAAE,CAAC;CACd,CAAC;AAEF,OAAO,MAAMC,gBAAgB,GAAG;IAC9BC,MAAM,EAAET,iBAAiB;IACzBU,aAAa,EAAE,IAAI;CACpB,CAAC;AAsCF,OAAO,MAAMC,gBAAgB,GAAG,IAA4B;IAC1D,MAAM,CAACV,MAAM,EAAEW,SAAS,CAAC,GAAGjC,QAAQ,CAAuB,IAAI,CAAC,AAAC;IAEjED,SAAS,CAAC,IAAM;QACd,MAAMmC,YAAY,GAAG,CAACC,CAAkB,GAAK;YAC3C,OAAOF,SAAS,CAAC;gBACfG,IAAI,EAAE;oBACJZ,CAAC,EAAEW,CAAC,CAACE,KAAK;oBACVZ,CAAC,EAAEU,CAAC,CAACG,KAAK;iBACX;gBACDC,MAAM,EAAE;oBACNf,CAAC,EAAEW,CAAC,CAACK,OAAO;oBACZf,CAAC,EAAEU,CAAC,CAACM,OAAO;iBACb;gBACDlB,UAAU,EAAE;oBACVC,CAAC,EAAEW,CAAC,CAACO,OAAO;oBACZjB,CAAC,EAAEU,CAAC,CAACQ,OAAO;iBACb;gBACDjB,OAAO,EAAE;oBACP,4DAA4D;oBAC5D,iHAAiH;oBACjHF,CAAC,EAAEW,CAAC,CAACS,GAAG;oBACRnB,CAAC,EAAEU,CAAC,CAACU,GAAG;iBACT;gBACD,0HAA0H;gBAC1HlB,MAAM,EAAEQ,CAAC,CAACR,MAAM;aACjB,CAAC,CAAC;QACL,CAAC,AAAC;QACFmB,MAAM,CAACC,gBAAgB,CAAC,WAAW,EAAEb,YAAY,CAAC,CAAC;QAEnD,OAAO,IAAM;YACXY,MAAM,CAACE,mBAAmB,CAAC,WAAW,EAAEd,YAAY,CAAC,CAAC;QACxD,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAOZ,MAAM,CAAC;AAChB,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"sources":["../../src/TimeSeriesTooltip/tooltip-model.ts"],"sourcesContent":["// Copyright 2023 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { useEffect, useState } from 'react';\nimport { NearbySeriesArray } from './nearby-series';\n\nexport const TOOLTIP_MIN_WIDTH = 375;\nexport const TOOLTIP_MAX_WIDTH = 650;\nexport const TOOLTIP_MAX_HEIGHT = 650;\nexport const TOOLTIP_LABELS_MAX_WIDTH = TOOLTIP_MAX_WIDTH - 150;\nexport const TOOLTIP_ADJUST_Y_POS_MULTIPLIER = 0.75;\n\nexport const FALLBACK_CHART_WIDTH = 750;\n\nexport const NEARBY_SERIES_DESCRIPTION = 'nearby series showing in tooltip';\nexport const EMPHASIZED_SERIES_DESCRIPTION = 'emphasized series showing as bold in tooltip';\n\nexport const TOOLTIP_BG_COLOR_FALLBACK = '#2E313E';\n\nexport const TOOLTIP_DATE_FORMAT = new Intl.DateTimeFormat(undefined, {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n hour12: true,\n});\n\nexport const defaultCursorData = {\n coords: {\n plotCanvas: {\n x: 0,\n y: 0,\n },\n zrender: {\n x: 0,\n y: 0,\n },\n target: null,\n },\n chartWidth: 0,\n};\n\nexport const emptyTooltipData = {\n cursor: defaultCursorData,\n focusedSeries: null,\n};\n\nexport interface Coordinate {\n x: number;\n y: number;\n}\n\nexport interface CursorCoordinates {\n page: Coordinate;\n client: Coordinate;\n plotCanvas: Coordinate;\n zrender?: {\n x?: number;\n y?: number;\n };\n target: EventTarget | null;\n}\n\nexport interface CursorData {\n coords: CursorCoordinates | null;\n chartWidth?: number;\n}\n\nexport interface TooltipData {\n focusedSeries: NearbySeriesArray | null;\n cursor: CursorData;\n}\n\ntype ZREventProperties = {\n zrX?: number;\n zrY?: number;\n zrDelta?: number;\n zrEventControl?: 'no_globalout' | 'only_globalout';\n zrByTouch?: boolean;\n};\n\nexport type ZRRawMouseEvent = MouseEvent & ZREventProperties;\n\nexport const useMousePosition = (): CursorData['coords'] => {\n const [coords, setCoords] = useState<CursorData['coords']>(null);\n\n useEffect(() => {\n const setFromEvent = (e: ZRRawMouseEvent) => {\n return setCoords({\n page: {\n x: e.pageX,\n y: e.pageY,\n },\n client: {\n x: e.clientX,\n y: e.clientY,\n },\n plotCanvas: {\n x: e.offsetX,\n y: e.offsetY,\n },\n zrender: {\n // echarts canvas coordinates added automatically by zrender\n // zrX and zrY are similar to offsetX and offsetY but they return undefined when not hovering over a chart canvas\n x: e.zrX,\n y: e.zrY,\n },\n // necessary to check whether cursor target matches correct chart canvas (since each chart has its own mousemove listener)\n target: e.target,\n });\n };\n window.addEventListener('mousemove', setFromEvent);\n\n return () => {\n window.removeEventListener('mousemove', setFromEvent);\n };\n }, []);\n\n return coords;\n};\n\nexport type TooltipConfig = {\n wrapLabels: boolean;\n hidden?: boolean;\n};\n"],"names":["useEffect","useState","TOOLTIP_MIN_WIDTH","TOOLTIP_MAX_WIDTH","TOOLTIP_MAX_HEIGHT","TOOLTIP_LABELS_MAX_WIDTH","TOOLTIP_ADJUST_Y_POS_MULTIPLIER","FALLBACK_CHART_WIDTH","NEARBY_SERIES_DESCRIPTION","EMPHASIZED_SERIES_DESCRIPTION","TOOLTIP_BG_COLOR_FALLBACK","TOOLTIP_DATE_FORMAT","Intl","DateTimeFormat","undefined","year","month","day","hour","minute","second","hour12","defaultCursorData","coords","plotCanvas","x","y","zrender","target","chartWidth","emptyTooltipData","cursor","focusedSeries","useMousePosition","setCoords","setFromEvent","e","page","pageX","pageY","client","clientX","clientY","offsetX","offsetY","zrX","zrY","window","addEventListener","removeEventListener"],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,SAASA,SAAS,EAAEC,QAAQ,QAAQ,OAAO,CAAC;AAG5C,OAAO,MAAMC,iBAAiB,GAAG,GAAG,CAAC;AACrC,OAAO,MAAMC,iBAAiB,GAAG,GAAG,CAAC;AACrC,OAAO,MAAMC,kBAAkB,GAAG,GAAG,CAAC;AACtC,OAAO,MAAMC,wBAAwB,GAAGF,iBAAiB,GAAG,GAAG,CAAC;AAChE,OAAO,MAAMG,+BAA+B,GAAG,IAAI,CAAC;AAEpD,OAAO,MAAMC,oBAAoB,GAAG,GAAG,CAAC;AAExC,OAAO,MAAMC,yBAAyB,GAAG,kCAAkC,CAAC;AAC5E,OAAO,MAAMC,6BAA6B,GAAG,8CAA8C,CAAC;AAE5F,OAAO,MAAMC,yBAAyB,GAAG,SAAS,CAAC;AAEnD,OAAO,MAAMC,mBAAmB,GAAG,IAAIC,IAAI,CAACC,cAAc,CAACC,SAAS,EAAE;IACpEC,IAAI,EAAE,SAAS;IACfC,KAAK,EAAE,OAAO;IACdC,GAAG,EAAE,SAAS;IACdC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE,SAAS;IACjBC,MAAM,EAAE,SAAS;IACjBC,MAAM,EAAE,IAAI;CACb,CAAC,CAAC;AAEH,OAAO,MAAMC,iBAAiB,GAAG;IAC/BC,MAAM,EAAE;QACNC,UAAU,EAAE;YACVC,CAAC,EAAE,CAAC;YACJC,CAAC,EAAE,CAAC;SACL;QACDC,OAAO,EAAE;YACPF,CAAC,EAAE,CAAC;YACJC,CAAC,EAAE,CAAC;SACL;QACDE,MAAM,EAAE,IAAI;KACb;IACDC,UAAU,EAAE,CAAC;CACd,CAAC;AAEF,OAAO,MAAMC,gBAAgB,GAAG;IAC9BC,MAAM,EAAET,iBAAiB;IACzBU,aAAa,EAAE,IAAI;CACpB,CAAC;AAsCF,OAAO,MAAMC,gBAAgB,GAAG,IAA4B;IAC1D,MAAM,CAACV,MAAM,EAAEW,SAAS,CAAC,GAAGjC,QAAQ,CAAuB,IAAI,CAAC,AAAC;IAEjED,SAAS,CAAC,IAAM;QACd,MAAMmC,YAAY,GAAG,CAACC,CAAkB,GAAK;YAC3C,OAAOF,SAAS,CAAC;gBACfG,IAAI,EAAE;oBACJZ,CAAC,EAAEW,CAAC,CAACE,KAAK;oBACVZ,CAAC,EAAEU,CAAC,CAACG,KAAK;iBACX;gBACDC,MAAM,EAAE;oBACNf,CAAC,EAAEW,CAAC,CAACK,OAAO;oBACZf,CAAC,EAAEU,CAAC,CAACM,OAAO;iBACb;gBACDlB,UAAU,EAAE;oBACVC,CAAC,EAAEW,CAAC,CAACO,OAAO;oBACZjB,CAAC,EAAEU,CAAC,CAACQ,OAAO;iBACb;gBACDjB,OAAO,EAAE;oBACP,4DAA4D;oBAC5D,iHAAiH;oBACjHF,CAAC,EAAEW,CAAC,CAACS,GAAG;oBACRnB,CAAC,EAAEU,CAAC,CAACU,GAAG;iBACT;gBACD,0HAA0H;gBAC1HlB,MAAM,EAAEQ,CAAC,CAACR,MAAM;aACjB,CAAC,CAAC;QACL,CAAC,AAAC;QACFmB,MAAM,CAACC,gBAAgB,CAAC,WAAW,EAAEb,YAAY,CAAC,CAAC;QAEnD,OAAO,IAAM;YACXY,MAAM,CAACE,mBAAmB,CAAC,WAAW,EAAEd,YAAY,CAAC,CAAC;QACxD,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAOZ,MAAM,CAAC;AAChB,CAAC,CAAC"}
|
|
@@ -1,6 +1,31 @@
|
|
|
1
|
+
import { Theme } from '@mui/material';
|
|
1
2
|
import { CursorCoordinates, CursorData } from './tooltip-model';
|
|
2
3
|
/**
|
|
3
4
|
* Determine position of tooltip depending on chart dimensions and the number of focused series
|
|
4
5
|
*/
|
|
5
6
|
export declare function assembleTransform(mousePos: CursorData['coords'], chartWidth: number, pinnedPos: CursorCoordinates | null, tooltipHeight: number, tooltipWidth: number): string;
|
|
7
|
+
/**
|
|
8
|
+
* Helper for tooltip positioning styles
|
|
9
|
+
*/
|
|
10
|
+
export declare function getTooltipStyles(theme: Theme, pinnedPos: CursorCoordinates | null): {
|
|
11
|
+
minWidth: number;
|
|
12
|
+
maxWidth: number;
|
|
13
|
+
maxHeight: number;
|
|
14
|
+
padding: number;
|
|
15
|
+
position: string;
|
|
16
|
+
top: number;
|
|
17
|
+
left: number;
|
|
18
|
+
backgroundColor: `#${string}`;
|
|
19
|
+
borderRadius: string;
|
|
20
|
+
color: string;
|
|
21
|
+
fontSize: string;
|
|
22
|
+
visibility: string;
|
|
23
|
+
opacity: number;
|
|
24
|
+
transition: string;
|
|
25
|
+
zIndex: string | number;
|
|
26
|
+
overflow: string;
|
|
27
|
+
'&:hover': {
|
|
28
|
+
overflowY: string;
|
|
29
|
+
};
|
|
30
|
+
};
|
|
6
31
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/TimeSeriesTooltip/utils.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/TimeSeriesTooltip/utils.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EACL,iBAAiB,EACjB,UAAU,EAMX,MAAM,iBAAiB,CAAC;AAEzB;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,EAC9B,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,iBAAiB,GAAG,IAAI,EACnC,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,UAgCrB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,iBAAiB,GAAG,IAAI;;;;;;;;;;;;;;;;;;;;EAuBjF"}
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
11
11
|
// See the License for the specific language governing permissions and
|
|
12
12
|
// limitations under the License.
|
|
13
|
-
import { TOOLTIP_MAX_WIDTH, TOOLTIP_ADJUST_Y_POS_MULTIPLIER } from './tooltip-model';
|
|
13
|
+
import { TOOLTIP_MAX_WIDTH, TOOLTIP_MAX_HEIGHT, TOOLTIP_MIN_WIDTH, TOOLTIP_ADJUST_Y_POS_MULTIPLIER, TOOLTIP_BG_COLOR_FALLBACK } from './tooltip-model';
|
|
14
14
|
/**
|
|
15
15
|
* Determine position of tooltip depending on chart dimensions and the number of focused series
|
|
16
16
|
*/ export function assembleTransform(mousePos, chartWidth, pinnedPos, tooltipHeight, tooltipWidth) {
|
|
@@ -37,5 +37,33 @@ import { TOOLTIP_MAX_WIDTH, TOOLTIP_ADJUST_Y_POS_MULTIPLIER } from './tooltip-mo
|
|
|
37
37
|
// reposition so tooltip is never too close to right side of chart or left side of browser window
|
|
38
38
|
return mousePos.plotCanvas.x > xPosAdjustThreshold && x > TOOLTIP_MAX_WIDTH ? `translate3d(${x - cursorPaddingX}px, ${y}px, 0) translateX(-100%)` : `translate3d(${x + cursorPaddingX}px, ${y}px, 0)`;
|
|
39
39
|
}
|
|
40
|
+
/**
|
|
41
|
+
* Helper for tooltip positioning styles
|
|
42
|
+
*/ export function getTooltipStyles(theme, pinnedPos) {
|
|
43
|
+
var ref;
|
|
44
|
+
var ref1;
|
|
45
|
+
return {
|
|
46
|
+
minWidth: TOOLTIP_MIN_WIDTH,
|
|
47
|
+
maxWidth: TOOLTIP_MAX_WIDTH,
|
|
48
|
+
maxHeight: TOOLTIP_MAX_HEIGHT,
|
|
49
|
+
padding: 0,
|
|
50
|
+
position: 'absolute',
|
|
51
|
+
top: 0,
|
|
52
|
+
left: 0,
|
|
53
|
+
backgroundColor: (ref1 = (ref = theme.palette.designSystem) === null || ref === void 0 ? void 0 : ref.grey[800]) !== null && ref1 !== void 0 ? ref1 : TOOLTIP_BG_COLOR_FALLBACK,
|
|
54
|
+
borderRadius: '6px',
|
|
55
|
+
color: '#fff',
|
|
56
|
+
fontSize: '11px',
|
|
57
|
+
visibility: 'visible',
|
|
58
|
+
opacity: 1,
|
|
59
|
+
transition: 'all 0.1s ease-out',
|
|
60
|
+
// Ensure pinned tooltip shows behind edit panel drawer and sticky header
|
|
61
|
+
zIndex: pinnedPos !== null ? 'auto' : theme.zIndex.tooltip,
|
|
62
|
+
overflow: 'hidden',
|
|
63
|
+
'&:hover': {
|
|
64
|
+
overflowY: 'auto'
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
}
|
|
40
68
|
|
|
41
69
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/TimeSeriesTooltip/utils.ts"],"sourcesContent":["// Copyright 2023 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { CursorCoordinates
|
|
1
|
+
{"version":3,"sources":["../../src/TimeSeriesTooltip/utils.ts"],"sourcesContent":["// Copyright 2023 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { Theme } from '@mui/material';\nimport {\n CursorCoordinates,\n CursorData,\n TOOLTIP_MAX_WIDTH,\n TOOLTIP_MAX_HEIGHT,\n TOOLTIP_MIN_WIDTH,\n TOOLTIP_ADJUST_Y_POS_MULTIPLIER,\n TOOLTIP_BG_COLOR_FALLBACK,\n} from './tooltip-model';\n\n/**\n * Determine position of tooltip depending on chart dimensions and the number of focused series\n */\nexport function assembleTransform(\n mousePos: CursorData['coords'],\n chartWidth: number,\n pinnedPos: CursorCoordinates | null,\n tooltipHeight: number,\n tooltipWidth: number\n) {\n if (mousePos === null) {\n return 'translate3d(0, 0)';\n }\n\n const cursorPaddingX = 32;\n const cursorPaddingY = 16;\n\n if (pinnedPos !== null) {\n mousePos = pinnedPos;\n }\n\n // Tooltip is located in a Portal attached to the body.\n // Using page coordinates instead of viewport ensures the tooltip is\n // absolutely positioned correctly as the user scrolls\n const x = mousePos.page.x;\n let y = mousePos.page.y + cursorPaddingY;\n\n // adjust so tooltip does not get cut off at bottom of chart\n if (mousePos.client.y + tooltipHeight + cursorPaddingY > window.innerHeight) {\n // multiplier ensures tooltip isn't overly adjusted and gets cut off at the top of the viewport\n y = mousePos.page.y - tooltipHeight * TOOLTIP_ADJUST_Y_POS_MULTIPLIER;\n }\n\n // use tooltip width to determine when to repos from right to left\n const xPosAdjustThreshold = chartWidth - tooltipWidth * 0.9;\n\n // reposition so tooltip is never too close to right side of chart or left side of browser window\n return mousePos.plotCanvas.x > xPosAdjustThreshold && x > TOOLTIP_MAX_WIDTH\n ? `translate3d(${x - cursorPaddingX}px, ${y}px, 0) translateX(-100%)`\n : `translate3d(${x + cursorPaddingX}px, ${y}px, 0)`;\n}\n\n/**\n * Helper for tooltip positioning styles\n */\nexport function getTooltipStyles(theme: Theme, pinnedPos: CursorCoordinates | null) {\n return {\n minWidth: TOOLTIP_MIN_WIDTH,\n maxWidth: TOOLTIP_MAX_WIDTH,\n maxHeight: TOOLTIP_MAX_HEIGHT,\n padding: 0,\n position: 'absolute',\n top: 0,\n left: 0,\n backgroundColor: theme.palette.designSystem?.grey[800] ?? TOOLTIP_BG_COLOR_FALLBACK,\n borderRadius: '6px',\n color: '#fff',\n fontSize: '11px',\n visibility: 'visible',\n opacity: 1,\n transition: 'all 0.1s ease-out',\n // Ensure pinned tooltip shows behind edit panel drawer and sticky header\n zIndex: pinnedPos !== null ? 'auto' : theme.zIndex.tooltip,\n overflow: 'hidden',\n '&:hover': {\n overflowY: 'auto',\n },\n };\n}\n"],"names":["TOOLTIP_MAX_WIDTH","TOOLTIP_MAX_HEIGHT","TOOLTIP_MIN_WIDTH","TOOLTIP_ADJUST_Y_POS_MULTIPLIER","TOOLTIP_BG_COLOR_FALLBACK","assembleTransform","mousePos","chartWidth","pinnedPos","tooltipHeight","tooltipWidth","cursorPaddingX","cursorPaddingY","x","page","y","client","window","innerHeight","xPosAdjustThreshold","plotCanvas","getTooltipStyles","theme","minWidth","maxWidth","maxHeight","padding","position","top","left","backgroundColor","palette","designSystem","grey","borderRadius","color","fontSize","visibility","opacity","transition","zIndex","tooltip","overflow","overflowY"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UnitSelector.d.ts","sourceRoot":"","sources":["../../src/UnitSelector/UnitSelector.tsx"],"names":[],"mappings":";AAaA,OAAO,
|
|
1
|
+
{"version":3,"file":"UnitSelector.d.ts","sourceRoot":"","sources":["../../src/UnitSelector/UnitSelector.tsx"],"names":[],"mappings":";AAaA,OAAO,EAEL,WAAW,EAKZ,MAAM,kBAAkB,CAAC;AAI1B,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;CACvC;AA0BD,wBAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,iBAAiB,eAqElE"}
|