diff --git a/build/vega-lite-schema.json b/build/vega-lite-schema.json
index b7ee57aa85..82e564ec1c 100644
--- a/build/vega-lite-schema.json
+++ b/build/vega-lite-schema.json
@@ -521,7 +521,7 @@
"type": "null"
}
],
- "description": "Invalid data mode, which defines how the marks and corresponding scales should represent invalid values (`null` and `NaN` in continuous scales *without* defined output for invalid values).\n\n- `\"filter\"` — *Exclude* all invalid values from the visualization's *marks* and *scales*. For path marks (for line, area, trail), this option will create paths that connect valid points, as if the data rows with invalid values do not exist.\n\n- `\"break-paths-filter-domains\"` — Break path marks (for line, area, trail) at invalid values. For non-path marks, this is equivalent to `\"filter\"`. All *scale* domains will *exclude* these filtered data points.\n\n- `\"break-paths-show-domains\"` — Break paths (for line, area, trail) at invalid values. Hide invalid values for non-path marks. All *scale* domains will *include* these filtered data points (for both path and non-path marks).\n\n- `\"show\"` or `null` — Show all data points in the marks and scale domains. Each scale will use the output for invalid values defined in `config.scale.invalid` or, if unspecified, by default invalid values will produce the same visual values as zero (if the scale includes zero) or the minimum value (if the scale does not include zero).\n\n- `\"break-paths-show-path-domains\"` (default) — This is equivalent to `\"break-paths-show-domains\"` for path-based marks (line/area/trail) and `\"filter\"` for non-path marks.\n\n__Note__: If any channel's scale has an output for invalid values defined in `config.scale.invalid`, all values for the scales will be considered \"valid\" since they can produce a reasonable output for the scales. Thus, fields for such channels will not be filtered and will not cause path breaks."
+ "description": "Invalid data mode, which defines how the marks and corresponding scales should represent invalid values (`null` and `NaN` in continuous scales *without* defined output for invalid values in `config.scale.invalid`).\n\n- `\"filter\"` — *Exclude* all invalid values from the visualization's *marks* and *scales*. For path marks (for line, area, trail), this option will create paths that connect valid points, as if the data rows with invalid values do not exist.\n\n- `\"break-paths-filter-domains\"` — Break path marks (for line, area, trail) at invalid values. For non-path marks, this is equivalent to `\"filter\"`. All *scale* domains will *exclude* these filtered data points.\n\n- `\"break-paths-show-domains\"` — Break paths (for line, area, trail) at invalid values. Hide invalid values for non-path marks. All *scale* domains will *include* these filtered data points (for both path and non-path marks).\n\n- `\"show\"` or `null` — Show all data points in the marks and scale domains. Each scale will use the output for invalid values defined in `config.scale.invalid` or, if unspecified, by default invalid values will produce the same visual values as zero (if the scale includes zero) or the minimum value (if the scale does not include zero).\n\n- `\"break-paths-show-path-domains\"` (default) — This is equivalent to `\"break-paths-show-domains\"` for path-based marks (line/area/trail) and `\"filter\"` for non-path marks.\n\n__Note__: If any channel's scale has an output for invalid values defined in `config.scale.invalid`, all values for the scales will be considered \"valid\" since they can produce a reasonable output for the scales. Thus, fields for such channels will not be filtered and will not cause path breaks."
},
"limit": {
"anyOf": [
@@ -3391,7 +3391,7 @@
"type": "null"
}
],
- "description": "Invalid data mode, which defines how the marks and corresponding scales should represent invalid values (`null` and `NaN` in continuous scales *without* defined output for invalid values).\n\n- `\"filter\"` — *Exclude* all invalid values from the visualization's *marks* and *scales*. For path marks (for line, area, trail), this option will create paths that connect valid points, as if the data rows with invalid values do not exist.\n\n- `\"break-paths-filter-domains\"` — Break path marks (for line, area, trail) at invalid values. For non-path marks, this is equivalent to `\"filter\"`. All *scale* domains will *exclude* these filtered data points.\n\n- `\"break-paths-show-domains\"` — Break paths (for line, area, trail) at invalid values. Hide invalid values for non-path marks. All *scale* domains will *include* these filtered data points (for both path and non-path marks).\n\n- `\"show\"` or `null` — Show all data points in the marks and scale domains. Each scale will use the output for invalid values defined in `config.scale.invalid` or, if unspecified, by default invalid values will produce the same visual values as zero (if the scale includes zero) or the minimum value (if the scale does not include zero).\n\n- `\"break-paths-show-path-domains\"` (default) — This is equivalent to `\"break-paths-show-domains\"` for path-based marks (line/area/trail) and `\"filter\"` for non-path marks.\n\n__Note__: If any channel's scale has an output for invalid values defined in `config.scale.invalid`, all values for the scales will be considered \"valid\" since they can produce a reasonable output for the scales. Thus, fields for such channels will not be filtered and will not cause path breaks."
+ "description": "Invalid data mode, which defines how the marks and corresponding scales should represent invalid values (`null` and `NaN` in continuous scales *without* defined output for invalid values in `config.scale.invalid`).\n\n- `\"filter\"` — *Exclude* all invalid values from the visualization's *marks* and *scales*. For path marks (for line, area, trail), this option will create paths that connect valid points, as if the data rows with invalid values do not exist.\n\n- `\"break-paths-filter-domains\"` — Break path marks (for line, area, trail) at invalid values. For non-path marks, this is equivalent to `\"filter\"`. All *scale* domains will *exclude* these filtered data points.\n\n- `\"break-paths-show-domains\"` — Break paths (for line, area, trail) at invalid values. Hide invalid values for non-path marks. All *scale* domains will *include* these filtered data points (for both path and non-path marks).\n\n- `\"show\"` or `null` — Show all data points in the marks and scale domains. Each scale will use the output for invalid values defined in `config.scale.invalid` or, if unspecified, by default invalid values will produce the same visual values as zero (if the scale includes zero) or the minimum value (if the scale does not include zero).\n\n- `\"break-paths-show-path-domains\"` (default) — This is equivalent to `\"break-paths-show-domains\"` for path-based marks (line/area/trail) and `\"filter\"` for non-path marks.\n\n__Note__: If any channel's scale has an output for invalid values defined in `config.scale.invalid`, all values for the scales will be considered \"valid\" since they can produce a reasonable output for the scales. Thus, fields for such channels will not be filtered and will not cause path breaks."
},
"limit": {
"anyOf": [
@@ -4621,7 +4621,7 @@
"type": "null"
}
],
- "description": "Invalid data mode, which defines how the marks and corresponding scales should represent invalid values (`null` and `NaN` in continuous scales *without* defined output for invalid values).\n\n- `\"filter\"` — *Exclude* all invalid values from the visualization's *marks* and *scales*. For path marks (for line, area, trail), this option will create paths that connect valid points, as if the data rows with invalid values do not exist.\n\n- `\"break-paths-filter-domains\"` — Break path marks (for line, area, trail) at invalid values. For non-path marks, this is equivalent to `\"filter\"`. All *scale* domains will *exclude* these filtered data points.\n\n- `\"break-paths-show-domains\"` — Break paths (for line, area, trail) at invalid values. Hide invalid values for non-path marks. All *scale* domains will *include* these filtered data points (for both path and non-path marks).\n\n- `\"show\"` or `null` — Show all data points in the marks and scale domains. Each scale will use the output for invalid values defined in `config.scale.invalid` or, if unspecified, by default invalid values will produce the same visual values as zero (if the scale includes zero) or the minimum value (if the scale does not include zero).\n\n- `\"break-paths-show-path-domains\"` (default) — This is equivalent to `\"break-paths-show-domains\"` for path-based marks (line/area/trail) and `\"filter\"` for non-path marks.\n\n__Note__: If any channel's scale has an output for invalid values defined in `config.scale.invalid`, all values for the scales will be considered \"valid\" since they can produce a reasonable output for the scales. Thus, fields for such channels will not be filtered and will not cause path breaks."
+ "description": "Invalid data mode, which defines how the marks and corresponding scales should represent invalid values (`null` and `NaN` in continuous scales *without* defined output for invalid values in `config.scale.invalid`).\n\n- `\"filter\"` — *Exclude* all invalid values from the visualization's *marks* and *scales*. For path marks (for line, area, trail), this option will create paths that connect valid points, as if the data rows with invalid values do not exist.\n\n- `\"break-paths-filter-domains\"` — Break path marks (for line, area, trail) at invalid values. For non-path marks, this is equivalent to `\"filter\"`. All *scale* domains will *exclude* these filtered data points.\n\n- `\"break-paths-show-domains\"` — Break paths (for line, area, trail) at invalid values. Hide invalid values for non-path marks. All *scale* domains will *include* these filtered data points (for both path and non-path marks).\n\n- `\"show\"` or `null` — Show all data points in the marks and scale domains. Each scale will use the output for invalid values defined in `config.scale.invalid` or, if unspecified, by default invalid values will produce the same visual values as zero (if the scale includes zero) or the minimum value (if the scale does not include zero).\n\n- `\"break-paths-show-path-domains\"` (default) — This is equivalent to `\"break-paths-show-domains\"` for path-based marks (line/area/trail) and `\"filter\"` for non-path marks.\n\n__Note__: If any channel's scale has an output for invalid values defined in `config.scale.invalid`, all values for the scales will be considered \"valid\" since they can produce a reasonable output for the scales. Thus, fields for such channels will not be filtered and will not cause path breaks."
},
"median": {
"anyOf": [
@@ -15067,7 +15067,7 @@
"type": "null"
}
],
- "description": "Invalid data mode, which defines how the marks and corresponding scales should represent invalid values (`null` and `NaN` in continuous scales *without* defined output for invalid values).\n\n- `\"filter\"` — *Exclude* all invalid values from the visualization's *marks* and *scales*. For path marks (for line, area, trail), this option will create paths that connect valid points, as if the data rows with invalid values do not exist.\n\n- `\"break-paths-filter-domains\"` — Break path marks (for line, area, trail) at invalid values. For non-path marks, this is equivalent to `\"filter\"`. All *scale* domains will *exclude* these filtered data points.\n\n- `\"break-paths-show-domains\"` — Break paths (for line, area, trail) at invalid values. Hide invalid values for non-path marks. All *scale* domains will *include* these filtered data points (for both path and non-path marks).\n\n- `\"show\"` or `null` — Show all data points in the marks and scale domains. Each scale will use the output for invalid values defined in `config.scale.invalid` or, if unspecified, by default invalid values will produce the same visual values as zero (if the scale includes zero) or the minimum value (if the scale does not include zero).\n\n- `\"break-paths-show-path-domains\"` (default) — This is equivalent to `\"break-paths-show-domains\"` for path-based marks (line/area/trail) and `\"filter\"` for non-path marks.\n\n__Note__: If any channel's scale has an output for invalid values defined in `config.scale.invalid`, all values for the scales will be considered \"valid\" since they can produce a reasonable output for the scales. Thus, fields for such channels will not be filtered and will not cause path breaks."
+ "description": "Invalid data mode, which defines how the marks and corresponding scales should represent invalid values (`null` and `NaN` in continuous scales *without* defined output for invalid values in `config.scale.invalid`).\n\n- `\"filter\"` — *Exclude* all invalid values from the visualization's *marks* and *scales*. For path marks (for line, area, trail), this option will create paths that connect valid points, as if the data rows with invalid values do not exist.\n\n- `\"break-paths-filter-domains\"` — Break path marks (for line, area, trail) at invalid values. For non-path marks, this is equivalent to `\"filter\"`. All *scale* domains will *exclude* these filtered data points.\n\n- `\"break-paths-show-domains\"` — Break paths (for line, area, trail) at invalid values. Hide invalid values for non-path marks. All *scale* domains will *include* these filtered data points (for both path and non-path marks).\n\n- `\"show\"` or `null` — Show all data points in the marks and scale domains. Each scale will use the output for invalid values defined in `config.scale.invalid` or, if unspecified, by default invalid values will produce the same visual values as zero (if the scale includes zero) or the minimum value (if the scale does not include zero).\n\n- `\"break-paths-show-path-domains\"` (default) — This is equivalent to `\"break-paths-show-domains\"` for path-based marks (line/area/trail) and `\"filter\"` for non-path marks.\n\n__Note__: If any channel's scale has an output for invalid values defined in `config.scale.invalid`, all values for the scales will be considered \"valid\" since they can produce a reasonable output for the scales. Thus, fields for such channels will not be filtered and will not cause path breaks."
},
"limit": {
"anyOf": [
@@ -16222,7 +16222,7 @@
"type": "null"
}
],
- "description": "Invalid data mode, which defines how the marks and corresponding scales should represent invalid values (`null` and `NaN` in continuous scales *without* defined output for invalid values).\n\n- `\"filter\"` — *Exclude* all invalid values from the visualization's *marks* and *scales*. For path marks (for line, area, trail), this option will create paths that connect valid points, as if the data rows with invalid values do not exist.\n\n- `\"break-paths-filter-domains\"` — Break path marks (for line, area, trail) at invalid values. For non-path marks, this is equivalent to `\"filter\"`. All *scale* domains will *exclude* these filtered data points.\n\n- `\"break-paths-show-domains\"` — Break paths (for line, area, trail) at invalid values. Hide invalid values for non-path marks. All *scale* domains will *include* these filtered data points (for both path and non-path marks).\n\n- `\"show\"` or `null` — Show all data points in the marks and scale domains. Each scale will use the output for invalid values defined in `config.scale.invalid` or, if unspecified, by default invalid values will produce the same visual values as zero (if the scale includes zero) or the minimum value (if the scale does not include zero).\n\n- `\"break-paths-show-path-domains\"` (default) — This is equivalent to `\"break-paths-show-domains\"` for path-based marks (line/area/trail) and `\"filter\"` for non-path marks.\n\n__Note__: If any channel's scale has an output for invalid values defined in `config.scale.invalid`, all values for the scales will be considered \"valid\" since they can produce a reasonable output for the scales. Thus, fields for such channels will not be filtered and will not cause path breaks."
+ "description": "Invalid data mode, which defines how the marks and corresponding scales should represent invalid values (`null` and `NaN` in continuous scales *without* defined output for invalid values in `config.scale.invalid`).\n\n- `\"filter\"` — *Exclude* all invalid values from the visualization's *marks* and *scales*. For path marks (for line, area, trail), this option will create paths that connect valid points, as if the data rows with invalid values do not exist.\n\n- `\"break-paths-filter-domains\"` — Break path marks (for line, area, trail) at invalid values. For non-path marks, this is equivalent to `\"filter\"`. All *scale* domains will *exclude* these filtered data points.\n\n- `\"break-paths-show-domains\"` — Break paths (for line, area, trail) at invalid values. Hide invalid values for non-path marks. All *scale* domains will *include* these filtered data points (for both path and non-path marks).\n\n- `\"show\"` or `null` — Show all data points in the marks and scale domains. Each scale will use the output for invalid values defined in `config.scale.invalid` or, if unspecified, by default invalid values will produce the same visual values as zero (if the scale includes zero) or the minimum value (if the scale does not include zero).\n\n- `\"break-paths-show-path-domains\"` (default) — This is equivalent to `\"break-paths-show-domains\"` for path-based marks (line/area/trail) and `\"filter\"` for non-path marks.\n\n__Note__: If any channel's scale has an output for invalid values defined in `config.scale.invalid`, all values for the scales will be considered \"valid\" since they can produce a reasonable output for the scales. Thus, fields for such channels will not be filtered and will not cause path breaks."
},
"limit": {
"anyOf": [
@@ -17066,7 +17066,7 @@
"type": "null"
}
],
- "description": "Invalid data mode, which defines how the marks and corresponding scales should represent invalid values (`null` and `NaN` in continuous scales *without* defined output for invalid values).\n\n- `\"filter\"` — *Exclude* all invalid values from the visualization's *marks* and *scales*. For path marks (for line, area, trail), this option will create paths that connect valid points, as if the data rows with invalid values do not exist.\n\n- `\"break-paths-filter-domains\"` — Break path marks (for line, area, trail) at invalid values. For non-path marks, this is equivalent to `\"filter\"`. All *scale* domains will *exclude* these filtered data points.\n\n- `\"break-paths-show-domains\"` — Break paths (for line, area, trail) at invalid values. Hide invalid values for non-path marks. All *scale* domains will *include* these filtered data points (for both path and non-path marks).\n\n- `\"show\"` or `null` — Show all data points in the marks and scale domains. Each scale will use the output for invalid values defined in `config.scale.invalid` or, if unspecified, by default invalid values will produce the same visual values as zero (if the scale includes zero) or the minimum value (if the scale does not include zero).\n\n- `\"break-paths-show-path-domains\"` (default) — This is equivalent to `\"break-paths-show-domains\"` for path-based marks (line/area/trail) and `\"filter\"` for non-path marks.\n\n__Note__: If any channel's scale has an output for invalid values defined in `config.scale.invalid`, all values for the scales will be considered \"valid\" since they can produce a reasonable output for the scales. Thus, fields for such channels will not be filtered and will not cause path breaks."
+ "description": "Invalid data mode, which defines how the marks and corresponding scales should represent invalid values (`null` and `NaN` in continuous scales *without* defined output for invalid values in `config.scale.invalid`).\n\n- `\"filter\"` — *Exclude* all invalid values from the visualization's *marks* and *scales*. For path marks (for line, area, trail), this option will create paths that connect valid points, as if the data rows with invalid values do not exist.\n\n- `\"break-paths-filter-domains\"` — Break path marks (for line, area, trail) at invalid values. For non-path marks, this is equivalent to `\"filter\"`. All *scale* domains will *exclude* these filtered data points.\n\n- `\"break-paths-show-domains\"` — Break paths (for line, area, trail) at invalid values. Hide invalid values for non-path marks. All *scale* domains will *include* these filtered data points (for both path and non-path marks).\n\n- `\"show\"` or `null` — Show all data points in the marks and scale domains. Each scale will use the output for invalid values defined in `config.scale.invalid` or, if unspecified, by default invalid values will produce the same visual values as zero (if the scale includes zero) or the minimum value (if the scale does not include zero).\n\n- `\"break-paths-show-path-domains\"` (default) — This is equivalent to `\"break-paths-show-domains\"` for path-based marks (line/area/trail) and `\"filter\"` for non-path marks.\n\n__Note__: If any channel's scale has an output for invalid values defined in `config.scale.invalid`, all values for the scales will be considered \"valid\" since they can produce a reasonable output for the scales. Thus, fields for such channels will not be filtered and will not cause path breaks."
},
"limit": {
"anyOf": [
@@ -18614,7 +18614,7 @@
"type": "null"
}
],
- "description": "Invalid data mode, which defines how the marks and corresponding scales should represent invalid values (`null` and `NaN` in continuous scales *without* defined output for invalid values).\n\n- `\"filter\"` — *Exclude* all invalid values from the visualization's *marks* and *scales*. For path marks (for line, area, trail), this option will create paths that connect valid points, as if the data rows with invalid values do not exist.\n\n- `\"break-paths-filter-domains\"` — Break path marks (for line, area, trail) at invalid values. For non-path marks, this is equivalent to `\"filter\"`. All *scale* domains will *exclude* these filtered data points.\n\n- `\"break-paths-show-domains\"` — Break paths (for line, area, trail) at invalid values. Hide invalid values for non-path marks. All *scale* domains will *include* these filtered data points (for both path and non-path marks).\n\n- `\"show\"` or `null` — Show all data points in the marks and scale domains. Each scale will use the output for invalid values defined in `config.scale.invalid` or, if unspecified, by default invalid values will produce the same visual values as zero (if the scale includes zero) or the minimum value (if the scale does not include zero).\n\n- `\"break-paths-show-path-domains\"` (default) — This is equivalent to `\"break-paths-show-domains\"` for path-based marks (line/area/trail) and `\"filter\"` for non-path marks.\n\n__Note__: If any channel's scale has an output for invalid values defined in `config.scale.invalid`, all values for the scales will be considered \"valid\" since they can produce a reasonable output for the scales. Thus, fields for such channels will not be filtered and will not cause path breaks."
+ "description": "Invalid data mode, which defines how the marks and corresponding scales should represent invalid values (`null` and `NaN` in continuous scales *without* defined output for invalid values in `config.scale.invalid`).\n\n- `\"filter\"` — *Exclude* all invalid values from the visualization's *marks* and *scales*. For path marks (for line, area, trail), this option will create paths that connect valid points, as if the data rows with invalid values do not exist.\n\n- `\"break-paths-filter-domains\"` — Break path marks (for line, area, trail) at invalid values. For non-path marks, this is equivalent to `\"filter\"`. All *scale* domains will *exclude* these filtered data points.\n\n- `\"break-paths-show-domains\"` — Break paths (for line, area, trail) at invalid values. Hide invalid values for non-path marks. All *scale* domains will *include* these filtered data points (for both path and non-path marks).\n\n- `\"show\"` or `null` — Show all data points in the marks and scale domains. Each scale will use the output for invalid values defined in `config.scale.invalid` or, if unspecified, by default invalid values will produce the same visual values as zero (if the scale includes zero) or the minimum value (if the scale does not include zero).\n\n- `\"break-paths-show-path-domains\"` (default) — This is equivalent to `\"break-paths-show-domains\"` for path-based marks (line/area/trail) and `\"filter\"` for non-path marks.\n\n__Note__: If any channel's scale has an output for invalid values defined in `config.scale.invalid`, all values for the scales will be considered \"valid\" since they can produce a reasonable output for the scales. Thus, fields for such channels will not be filtered and will not cause path breaks."
},
"limit": {
"anyOf": [
@@ -20910,7 +20910,7 @@
"type": "null"
}
],
- "description": "Invalid data mode, which defines how the marks and corresponding scales should represent invalid values (`null` and `NaN` in continuous scales *without* defined output for invalid values).\n\n- `\"filter\"` — *Exclude* all invalid values from the visualization's *marks* and *scales*. For path marks (for line, area, trail), this option will create paths that connect valid points, as if the data rows with invalid values do not exist.\n\n- `\"break-paths-filter-domains\"` — Break path marks (for line, area, trail) at invalid values. For non-path marks, this is equivalent to `\"filter\"`. All *scale* domains will *exclude* these filtered data points.\n\n- `\"break-paths-show-domains\"` — Break paths (for line, area, trail) at invalid values. Hide invalid values for non-path marks. All *scale* domains will *include* these filtered data points (for both path and non-path marks).\n\n- `\"show\"` or `null` — Show all data points in the marks and scale domains. Each scale will use the output for invalid values defined in `config.scale.invalid` or, if unspecified, by default invalid values will produce the same visual values as zero (if the scale includes zero) or the minimum value (if the scale does not include zero).\n\n- `\"break-paths-show-path-domains\"` (default) — This is equivalent to `\"break-paths-show-domains\"` for path-based marks (line/area/trail) and `\"filter\"` for non-path marks.\n\n__Note__: If any channel's scale has an output for invalid values defined in `config.scale.invalid`, all values for the scales will be considered \"valid\" since they can produce a reasonable output for the scales. Thus, fields for such channels will not be filtered and will not cause path breaks."
+ "description": "Invalid data mode, which defines how the marks and corresponding scales should represent invalid values (`null` and `NaN` in continuous scales *without* defined output for invalid values in `config.scale.invalid`).\n\n- `\"filter\"` — *Exclude* all invalid values from the visualization's *marks* and *scales*. For path marks (for line, area, trail), this option will create paths that connect valid points, as if the data rows with invalid values do not exist.\n\n- `\"break-paths-filter-domains\"` — Break path marks (for line, area, trail) at invalid values. For non-path marks, this is equivalent to `\"filter\"`. All *scale* domains will *exclude* these filtered data points.\n\n- `\"break-paths-show-domains\"` — Break paths (for line, area, trail) at invalid values. Hide invalid values for non-path marks. All *scale* domains will *include* these filtered data points (for both path and non-path marks).\n\n- `\"show\"` or `null` — Show all data points in the marks and scale domains. Each scale will use the output for invalid values defined in `config.scale.invalid` or, if unspecified, by default invalid values will produce the same visual values as zero (if the scale includes zero) or the minimum value (if the scale does not include zero).\n\n- `\"break-paths-show-path-domains\"` (default) — This is equivalent to `\"break-paths-show-domains\"` for path-based marks (line/area/trail) and `\"filter\"` for non-path marks.\n\n__Note__: If any channel's scale has an output for invalid values defined in `config.scale.invalid`, all values for the scales will be considered \"valid\" since they can produce a reasonable output for the scales. Thus, fields for such channels will not be filtered and will not cause path breaks."
},
"limit": {
"anyOf": [
@@ -28613,7 +28613,7 @@
"type": "null"
}
],
- "description": "Invalid data mode, which defines how the marks and corresponding scales should represent invalid values (`null` and `NaN` in continuous scales *without* defined output for invalid values).\n\n- `\"filter\"` — *Exclude* all invalid values from the visualization's *marks* and *scales*. For path marks (for line, area, trail), this option will create paths that connect valid points, as if the data rows with invalid values do not exist.\n\n- `\"break-paths-filter-domains\"` — Break path marks (for line, area, trail) at invalid values. For non-path marks, this is equivalent to `\"filter\"`. All *scale* domains will *exclude* these filtered data points.\n\n- `\"break-paths-show-domains\"` — Break paths (for line, area, trail) at invalid values. Hide invalid values for non-path marks. All *scale* domains will *include* these filtered data points (for both path and non-path marks).\n\n- `\"show\"` or `null` — Show all data points in the marks and scale domains. Each scale will use the output for invalid values defined in `config.scale.invalid` or, if unspecified, by default invalid values will produce the same visual values as zero (if the scale includes zero) or the minimum value (if the scale does not include zero).\n\n- `\"break-paths-show-path-domains\"` (default) — This is equivalent to `\"break-paths-show-domains\"` for path-based marks (line/area/trail) and `\"filter\"` for non-path marks.\n\n__Note__: If any channel's scale has an output for invalid values defined in `config.scale.invalid`, all values for the scales will be considered \"valid\" since they can produce a reasonable output for the scales. Thus, fields for such channels will not be filtered and will not cause path breaks."
+ "description": "Invalid data mode, which defines how the marks and corresponding scales should represent invalid values (`null` and `NaN` in continuous scales *without* defined output for invalid values in `config.scale.invalid`).\n\n- `\"filter\"` — *Exclude* all invalid values from the visualization's *marks* and *scales*. For path marks (for line, area, trail), this option will create paths that connect valid points, as if the data rows with invalid values do not exist.\n\n- `\"break-paths-filter-domains\"` — Break path marks (for line, area, trail) at invalid values. For non-path marks, this is equivalent to `\"filter\"`. All *scale* domains will *exclude* these filtered data points.\n\n- `\"break-paths-show-domains\"` — Break paths (for line, area, trail) at invalid values. Hide invalid values for non-path marks. All *scale* domains will *include* these filtered data points (for both path and non-path marks).\n\n- `\"show\"` or `null` — Show all data points in the marks and scale domains. Each scale will use the output for invalid values defined in `config.scale.invalid` or, if unspecified, by default invalid values will produce the same visual values as zero (if the scale includes zero) or the minimum value (if the scale does not include zero).\n\n- `\"break-paths-show-path-domains\"` (default) — This is equivalent to `\"break-paths-show-domains\"` for path-based marks (line/area/trail) and `\"filter\"` for non-path marks.\n\n__Note__: If any channel's scale has an output for invalid values defined in `config.scale.invalid`, all values for the scales will be considered \"valid\" since they can produce a reasonable output for the scales. Thus, fields for such channels will not be filtered and will not cause path breaks."
},
"limit": {
"anyOf": [
diff --git a/examples/compiled/airport_connections.vg.json b/examples/compiled/airport_connections.vg.json
index 45e19c73e2..6e91c69f87 100644
--- a/examples/compiled/airport_connections.vg.json
+++ b/examples/compiled/airport_connections.vg.json
@@ -201,7 +201,7 @@
"opacity": {"value": 0.35},
"stroke": {"value": "#000"},
"description": {
- "signal": "\"longitude: \" + (format(datum[\"longitude\"], \"\")) + \"; lon2: \" + (format(datum[\"lon2\"], \"\")) + \"; latitude: \" + (format(datum[\"latitude\"], \"\")) + \"; lat2: \" + (format(datum[\"lat2\"], \"\"))"
+ "signal": "\"longitude: \" + (!isValid(datum[\"longitude\"]) || !isFinite(+datum[\"longitude\"]) ? \"\" + datum[\"longitude\"] : format(datum[\"longitude\"], \"\")) + \"; lon2: \" + (!isValid(datum[\"lon2\"]) || !isFinite(+datum[\"lon2\"]) ? \"\" + datum[\"lon2\"] : format(datum[\"lon2\"], \"\")) + \"; latitude: \" + (!isValid(datum[\"latitude\"]) || !isFinite(+datum[\"latitude\"]) ? \"\" + datum[\"latitude\"] : format(datum[\"latitude\"], \"\")) + \"; lat2: \" + (!isValid(datum[\"lat2\"]) || !isFinite(+datum[\"lat2\"]) ? \"\" + datum[\"lat2\"] : format(datum[\"lat2\"], \"\"))"
},
"x": {"field": "layer_1_x"},
"x2": {"field": "layer_1_x2"},
@@ -223,7 +223,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"longitude: \" + (format(datum[\"longitude\"], \"\")) + \"; latitude: \" + (format(datum[\"latitude\"], \"\")) + \"; routes: \" + (format(datum[\"routes\"], \"\"))"
+ "signal": "\"longitude: \" + (!isValid(datum[\"longitude\"]) || !isFinite(+datum[\"longitude\"]) ? \"\" + datum[\"longitude\"] : format(datum[\"longitude\"], \"\")) + \"; latitude: \" + (!isValid(datum[\"latitude\"]) || !isFinite(+datum[\"latitude\"]) ? \"\" + datum[\"latitude\"] : format(datum[\"latitude\"], \"\")) + \"; routes: \" + (!isValid(datum[\"routes\"]) || !isFinite(+datum[\"routes\"]) ? \"\" + datum[\"routes\"] : format(datum[\"routes\"], \"\"))"
},
"x": {"field": "layer_2_x"},
"y": {"field": "layer_2_y"},
diff --git a/examples/compiled/arc_color_mappings.vg.json b/examples/compiled/arc_color_mappings.vg.json
index 66c6500b6f..0b3c19413d 100644
--- a/examples/compiled/arc_color_mappings.vg.json
+++ b/examples/compiled/arc_color_mappings.vg.json
@@ -47,7 +47,7 @@
"update": {
"fill": {"scale": "color", "field": "category"},
"description": {
- "signal": "\"value: \" + (format(datum[\"value\"], \"\")) + \"; category: \" + (isValid(datum[\"category\"]) ? datum[\"category\"] : \"\"+datum[\"category\"])"
+ "signal": "\"value: \" + (!isValid(datum[\"value\"]) || !isFinite(+datum[\"value\"]) ? \"\" + datum[\"value\"] : format(datum[\"value\"], \"\")) + \"; category: \" + (\"\" + datum[\"category\"])"
},
"x": {"signal": "width", "mult": 0.5},
"y": {"signal": "height", "mult": 0.5},
diff --git a/examples/compiled/arc_donut.vg.json b/examples/compiled/arc_donut.vg.json
index 60ec25b55f..f9ebe2c844 100644
--- a/examples/compiled/arc_donut.vg.json
+++ b/examples/compiled/arc_donut.vg.json
@@ -48,7 +48,7 @@
"innerRadius": {"value": 50},
"fill": {"scale": "color", "field": "category"},
"description": {
- "signal": "\"value: \" + (format(datum[\"value\"], \"\")) + \"; category: \" + (isValid(datum[\"category\"]) ? datum[\"category\"] : \"\"+datum[\"category\"])"
+ "signal": "\"value: \" + (!isValid(datum[\"value\"]) || !isFinite(+datum[\"value\"]) ? \"\" + datum[\"value\"] : format(datum[\"value\"], \"\")) + \"; category: \" + (\"\" + datum[\"category\"])"
},
"x": {"signal": "width", "mult": 0.5},
"y": {"signal": "height", "mult": 0.5},
diff --git a/examples/compiled/arc_facet.vg.json b/examples/compiled/arc_facet.vg.json
index d88dc740bc..aeaa503157 100644
--- a/examples/compiled/arc_facet.vg.json
+++ b/examples/compiled/arc_facet.vg.json
@@ -60,9 +60,7 @@
"from": {"data": "column_domain"},
"sort": {"field": "datum[\"year\"]", "order": "ascending"},
"title": {
- "text": {
- "signal": "isValid(parent[\"year\"]) ? parent[\"year\"] : \"\"+parent[\"year\"]"
- },
+ "text": {"signal": "\"\" + parent[\"year\"]"},
"style": "guide-label",
"frame": "group",
"offset": 10
@@ -93,7 +91,7 @@
"update": {
"fill": {"scale": "color", "field": "site"},
"description": {
- "signal": "\"Sum of yield: \" + (format(datum[\"sum_yield\"], \"\")) + \"; site: \" + (isValid(datum[\"site\"]) ? datum[\"site\"] : \"\"+datum[\"site\"])"
+ "signal": "\"Sum of yield: \" + (!isValid(datum[\"sum_yield\"]) || !isFinite(+datum[\"sum_yield\"]) ? \"\" + datum[\"sum_yield\"] : format(datum[\"sum_yield\"], \"\")) + \"; site: \" + (\"\" + datum[\"site\"])"
},
"x": {"signal": "child_width", "mult": 0.5},
"y": {"signal": "child_height", "mult": 0.5},
diff --git a/examples/compiled/arc_ordinal_theta.vg.json b/examples/compiled/arc_ordinal_theta.vg.json
index 8ebaa8c4b3..ae0ac67395 100644
--- a/examples/compiled/arc_ordinal_theta.vg.json
+++ b/examples/compiled/arc_ordinal_theta.vg.json
@@ -48,7 +48,7 @@
"update": {
"fill": {"scale": "color", "field": "dir"},
"description": {
- "signal": "\"dir: \" + (isValid(datum[\"dir\"]) ? datum[\"dir\"] : \"\"+datum[\"dir\"]) + \"; strength: \" + (format(datum[\"strength\"], \"\"))"
+ "signal": "\"dir: \" + (\"\" + datum[\"dir\"]) + \"; strength: \" + (!isValid(datum[\"strength\"]) || !isFinite(+datum[\"strength\"]) ? \"\" + datum[\"strength\"] : format(datum[\"strength\"], \"\"))"
},
"x": {"signal": "width", "mult": 0.5},
"y": {"signal": "height", "mult": 0.5},
diff --git a/examples/compiled/arc_params.vg.json b/examples/compiled/arc_params.vg.json
index 0af536c4cd..f8e54dcff5 100644
--- a/examples/compiled/arc_params.vg.json
+++ b/examples/compiled/arc_params.vg.json
@@ -136,7 +136,7 @@
"cornerRadius": {"signal": "cornerRadius"},
"fill": {"scale": "color", "field": "category"},
"description": {
- "signal": "\"value: \" + (format(datum[\"value\"], \"\")) + \"; category: \" + (isValid(datum[\"category\"]) ? datum[\"category\"] : \"\"+datum[\"category\"])"
+ "signal": "\"value: \" + (!isValid(datum[\"value\"]) || !isFinite(+datum[\"value\"]) ? \"\" + datum[\"value\"] : format(datum[\"value\"], \"\")) + \"; category: \" + (\"\" + datum[\"category\"])"
},
"x": {"signal": "childWidth", "mult": 0.5},
"y": {"signal": "height", "mult": 0.5},
diff --git a/examples/compiled/arc_pie.vg.json b/examples/compiled/arc_pie.vg.json
index eb9e150a1b..11098d590b 100644
--- a/examples/compiled/arc_pie.vg.json
+++ b/examples/compiled/arc_pie.vg.json
@@ -47,7 +47,7 @@
"update": {
"fill": {"scale": "color", "field": "category"},
"description": {
- "signal": "\"value: \" + (format(datum[\"value\"], \"\")) + \"; category: \" + (isValid(datum[\"category\"]) ? datum[\"category\"] : \"\"+datum[\"category\"])"
+ "signal": "\"value: \" + (!isValid(datum[\"value\"]) || !isFinite(+datum[\"value\"]) ? \"\" + datum[\"value\"] : format(datum[\"value\"], \"\")) + \"; category: \" + (\"\" + datum[\"category\"])"
},
"x": {"signal": "width", "mult": 0.5},
"y": {"signal": "height", "mult": 0.5},
diff --git a/examples/compiled/arc_pie_normalize_tooltip.vg.json b/examples/compiled/arc_pie_normalize_tooltip.vg.json
index 848ad49ca4..615ebc99ca 100644
--- a/examples/compiled/arc_pie_normalize_tooltip.vg.json
+++ b/examples/compiled/arc_pie_normalize_tooltip.vg.json
@@ -46,11 +46,11 @@
"encode": {
"update": {
"tooltip": {
- "signal": "{\"value\": format(datum[\"value_end\"]-datum[\"value_start\"], \".0%\"), \"category\": isValid(datum[\"category\"]) ? datum[\"category\"] : \"\"+datum[\"category\"]}"
+ "signal": "{\"value\": !isValid(datum[\"value_end\"]-datum[\"value_start\"]) || !isFinite(+datum[\"value_end\"]-datum[\"value_start\"]) ? \"\" + datum[\"value_end\"]-datum[\"value_start\"] : format(datum[\"value_end\"]-datum[\"value_start\"], \".0%\"), \"category\": \"\" + datum[\"category\"]}"
},
"fill": {"scale": "color", "field": "category"},
"description": {
- "signal": "\"value: \" + (format(datum[\"value_end\"]-datum[\"value_start\"], \".0%\")) + \"; category: \" + (isValid(datum[\"category\"]) ? datum[\"category\"] : \"\"+datum[\"category\"])"
+ "signal": "\"value: \" + (!isValid(datum[\"value_end\"]-datum[\"value_start\"]) || !isFinite(+datum[\"value_end\"]-datum[\"value_start\"]) ? \"\" + datum[\"value_end\"]-datum[\"value_start\"] : format(datum[\"value_end\"]-datum[\"value_start\"], \".0%\")) + \"; category: \" + (\"\" + datum[\"category\"])"
},
"x": {"signal": "width", "mult": 0.5},
"y": {"signal": "height", "mult": 0.5},
diff --git a/examples/compiled/arc_pie_pyramid.vg.json b/examples/compiled/arc_pie_pyramid.vg.json
index e49b5d398d..8d81a8a94f 100644
--- a/examples/compiled/arc_pie_pyramid.vg.json
+++ b/examples/compiled/arc_pie_pyramid.vg.json
@@ -45,7 +45,7 @@
"outerRadius": {"value": 80},
"fill": {"scale": "color", "field": "category"},
"description": {
- "signal": "\"value: \" + (format(datum[\"value\"], \"\")) + \"; category: \" + (isValid(datum[\"category\"]) ? datum[\"category\"] : \"\"+datum[\"category\"]) + \"; order: \" + (isValid(datum[\"order\"]) ? datum[\"order\"] : \"\"+datum[\"order\"])"
+ "signal": "\"value: \" + (!isValid(datum[\"value\"]) || !isFinite(+datum[\"value\"]) ? \"\" + datum[\"value\"] : format(datum[\"value\"], \"\")) + \"; category: \" + (\"\" + datum[\"category\"]) + \"; order: \" + (\"\" + datum[\"order\"])"
},
"x": {"signal": "width", "mult": 0.5},
"y": {"signal": "height", "mult": 0.5},
diff --git a/examples/compiled/arc_radial.vg.json b/examples/compiled/arc_radial.vg.json
index 83b164d48c..18222128e2 100644
--- a/examples/compiled/arc_radial.vg.json
+++ b/examples/compiled/arc_radial.vg.json
@@ -57,7 +57,7 @@
"innerRadius": {"value": 20},
"fill": {"scale": "color", "field": "data"},
"description": {
- "signal": "\"data: \" + (format(datum[\"data\"], \"\"))"
+ "signal": "\"data: \" + (!isValid(datum[\"data\"]) || !isFinite(+datum[\"data\"]) ? \"\" + datum[\"data\"] : format(datum[\"data\"], \"\"))"
},
"x": {"signal": "width", "mult": 0.5},
"y": {"signal": "height", "mult": 0.5},
@@ -76,11 +76,13 @@
"update": {
"fill": {"scale": "color", "field": "data"},
"description": {
- "signal": "\"data: \" + (format(datum[\"data\"], \"\"))"
+ "signal": "\"data: \" + (!isValid(datum[\"data\"]) || !isFinite(+datum[\"data\"]) ? \"\" + datum[\"data\"] : format(datum[\"data\"], \"\"))"
},
"x": {"signal": "width", "mult": 0.5},
"y": {"signal": "height", "mult": 0.5},
- "text": {"signal": "format(datum[\"data\"], \"\")"},
+ "text": {
+ "signal": "!isValid(datum[\"data\"]) || !isFinite(+datum[\"data\"]) ? \"\" + datum[\"data\"] : format(datum[\"data\"], \"\")"
+ },
"align": {"value": "center"},
"baseline": {"value": "middle"},
"radius": {"scale": "radius", "field": "data", "offset": 10},
diff --git a/examples/compiled/arc_radial_histogram.vg.json b/examples/compiled/arc_radial_histogram.vg.json
index 3211200218..e2e7f723d4 100644
--- a/examples/compiled/arc_radial_histogram.vg.json
+++ b/examples/compiled/arc_radial_histogram.vg.json
@@ -70,11 +70,11 @@
"update": {
"stroke": {"value": "white"},
"tooltip": {
- "signal": "{\"IMDB Rating (binned)\": !isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"null\" : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\"), \"Count of Records\": format(datum[\"__count\"], \"\")}"
+ "signal": "{\"IMDB Rating (binned)\": !isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"\" + datum[\"bin_maxbins_10_IMDB Rating\"] : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\"), \"Count of Records\": !isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\")}"
},
"fill": {"value": "#4c78a8"},
"description": {
- "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"null\" : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"\" + datum[\"bin_maxbins_10_IMDB Rating\"] : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x": {"signal": "width", "mult": 0.5},
"y": {"signal": "height", "mult": 0.5},
@@ -98,12 +98,12 @@
"align": {"value": "right"},
"fill": {"value": "black"},
"description": {
- "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"null\" : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"\" + datum[\"bin_maxbins_10_IMDB Rating\"] : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x": {"signal": "width", "mult": 0.5},
"y": {"signal": "height", "mult": 0.5},
"text": {
- "signal": "!isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"null\" : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\")"
+ "signal": "!isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"\" + datum[\"bin_maxbins_10_IMDB Rating\"] : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\")"
},
"angle": {
"signal": "scale(\"angle\", 0.5 * datum[\"bin_maxbins_10_IMDB Rating\"] + 0.5 * datum[\"bin_maxbins_10_IMDB Rating_end\"])"
diff --git a/examples/compiled/area.vg.json b/examples/compiled/area.vg.json
index 9714b1d792..60b487f7d9 100644
--- a/examples/compiled/area.vg.json
+++ b/examples/compiled/area.vg.json
@@ -39,7 +39,7 @@
"orient": {"value": "vertical"},
"fill": {"value": "#4c78a8"},
"description": {
- "signal": "\"date (year-month): \" + (timeFormat(datum[\"yearmonth_date\"], '%Y')) + \"; count: \" + (format(datum[\"sum_count\"], \"\"))"
+ "signal": "\"date (year-month): \" + (!isValid(datum[\"yearmonth_date\"]) || !isFinite(+datum[\"yearmonth_date\"]) ? \"\" + datum[\"yearmonth_date\"] : timeFormat(datum[\"yearmonth_date\"], '%Y')) + \"; count: \" + (!isValid(datum[\"sum_count\"]) || !isFinite(+datum[\"sum_count\"]) ? \"\" + datum[\"sum_count\"] : format(datum[\"sum_count\"], \"\"))"
},
"x": {"scale": "x", "field": "yearmonth_date"},
"y": {"scale": "y", "field": "sum_count"},
diff --git a/examples/compiled/area_cumulative_freq.svg b/examples/compiled/area_cumulative_freq.svg
index 5c526a87b2..0b4b253af4 100644
--- a/examples/compiled/area_cumulative_freq.svg
+++ b/examples/compiled/area_cumulative_freq.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/examples/compiled/area_cumulative_freq.vg.json b/examples/compiled/area_cumulative_freq.vg.json
index 8d0861dc80..2949e3e021 100644
--- a/examples/compiled/area_cumulative_freq.vg.json
+++ b/examples/compiled/area_cumulative_freq.vg.json
@@ -58,7 +58,7 @@
"orient": {"value": "vertical"},
"fill": {"value": "#4c78a8"},
"description": {
- "signal": "\"IMDB Rating: \" + (format(datum[\"IMDB Rating\"], \"\")) + \"; Cumulative Count: \" + (format(datum[\"Cumulative Count\"], \"\"))"
+ "signal": "\"IMDB Rating: \" + (!isValid(datum[\"IMDB Rating\"]) || !isFinite(+datum[\"IMDB Rating\"]) ? \"\" + datum[\"IMDB Rating\"] : format(datum[\"IMDB Rating\"], \"\")) + \"; Cumulative Count: \" + (!isValid(datum[\"Cumulative Count\"]) || !isFinite(+datum[\"Cumulative Count\"]) ? \"\" + datum[\"Cumulative Count\"] : format(datum[\"Cumulative Count\"], \"\"))"
},
"x": {"scale": "x", "field": "IMDB Rating"},
"y": {"scale": "y", "field": "Cumulative Count_end"},
diff --git a/examples/compiled/area_density.vg.json b/examples/compiled/area_density.vg.json
index c4cc9e16df..be02a38cbe 100644
--- a/examples/compiled/area_density.vg.json
+++ b/examples/compiled/area_density.vg.json
@@ -49,7 +49,7 @@
"orient": {"value": "vertical"},
"fill": {"value": "#4c78a8"},
"description": {
- "signal": "\"IMDB Rating: \" + (format(datum[\"value\"], \"\")) + \"; density: \" + (format(datum[\"density\"], \"\"))"
+ "signal": "\"IMDB Rating: \" + (!isValid(datum[\"value\"]) || !isFinite(+datum[\"value\"]) ? \"\" + datum[\"value\"] : format(datum[\"value\"], \"\")) + \"; density: \" + (!isValid(datum[\"density\"]) || !isFinite(+datum[\"density\"]) ? \"\" + datum[\"density\"] : format(datum[\"density\"], \"\"))"
},
"x": {"scale": "x", "field": "value"},
"y": {"scale": "y", "field": "density_end"},
diff --git a/examples/compiled/area_density_facet.vg.json b/examples/compiled/area_density_facet.vg.json
index 0847c1a756..71356e51e6 100644
--- a/examples/compiled/area_density_facet.vg.json
+++ b/examples/compiled/area_density_facet.vg.json
@@ -71,9 +71,7 @@
"from": {"data": "row_domain"},
"sort": {"field": "datum[\"Species\"]", "order": "ascending"},
"title": {
- "text": {
- "signal": "isValid(parent[\"Species\"]) ? parent[\"Species\"] : \"\"+parent[\"Species\"]"
- },
+ "text": {"signal": "\"\" + parent[\"Species\"]"},
"orient": "left",
"style": "guide-label",
"frame": "group",
@@ -136,7 +134,7 @@
"orient": {"value": "vertical"},
"fill": {"value": "#4c78a8"},
"description": {
- "signal": "\"Body Mass (g): \" + (format(datum[\"value\"], \"\")) + \"; density: \" + (format(datum[\"density\"], \"\"))"
+ "signal": "\"Body Mass (g): \" + (!isValid(datum[\"value\"]) || !isFinite(+datum[\"value\"]) ? \"\" + datum[\"value\"] : format(datum[\"value\"], \"\")) + \"; density: \" + (!isValid(datum[\"density\"]) || !isFinite(+datum[\"density\"]) ? \"\" + datum[\"density\"] : format(datum[\"density\"], \"\"))"
},
"x": {"scale": "x", "field": "value"},
"y": {"scale": "y", "field": "density_end"},
diff --git a/examples/compiled/area_density_stacked.vg.json b/examples/compiled/area_density_stacked.vg.json
index 697d0a13ea..f903739ad0 100644
--- a/examples/compiled/area_density_stacked.vg.json
+++ b/examples/compiled/area_density_stacked.vg.json
@@ -68,7 +68,7 @@
"orient": {"value": "vertical"},
"fill": {"scale": "color", "field": "Species"},
"description": {
- "signal": "\"Body Mass (g): \" + (format(datum[\"value\"], \"\")) + \"; density: \" + (format(datum[\"density\"], \"\")) + \"; Species: \" + (isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"])"
+ "signal": "\"Body Mass (g): \" + (!isValid(datum[\"value\"]) || !isFinite(+datum[\"value\"]) ? \"\" + datum[\"value\"] : format(datum[\"value\"], \"\")) + \"; density: \" + (!isValid(datum[\"density\"]) || !isFinite(+datum[\"density\"]) ? \"\" + datum[\"density\"] : format(datum[\"density\"], \"\")) + \"; Species: \" + (\"\" + datum[\"Species\"])"
},
"x": {"scale": "x", "field": "value"},
"y": {"scale": "y", "field": "density_end"},
diff --git a/examples/compiled/area_density_stacked_fold.vg.json b/examples/compiled/area_density_stacked_fold.vg.json
index 99e0f4f7aa..09fa3148db 100644
--- a/examples/compiled/area_density_stacked_fold.vg.json
+++ b/examples/compiled/area_density_stacked_fold.vg.json
@@ -75,7 +75,7 @@
"orient": {"value": "vertical"},
"fill": {"scale": "color", "field": "Measurement"},
"description": {
- "signal": "\"value: \" + (format(datum[\"value\"], \"\")) + \"; density: \" + (format(datum[\"density\"], \"\")) + \"; Measurement: \" + (isValid(datum[\"Measurement\"]) ? datum[\"Measurement\"] : \"\"+datum[\"Measurement\"])"
+ "signal": "\"value: \" + (!isValid(datum[\"value\"]) || !isFinite(+datum[\"value\"]) ? \"\" + datum[\"value\"] : format(datum[\"value\"], \"\")) + \"; density: \" + (!isValid(datum[\"density\"]) || !isFinite(+datum[\"density\"]) ? \"\" + datum[\"density\"] : format(datum[\"density\"], \"\")) + \"; Measurement: \" + (\"\" + datum[\"Measurement\"])"
},
"x": {"scale": "x", "field": "value"},
"y": {"scale": "y", "field": "density_end"},
diff --git a/examples/compiled/area_gradient.vg.json b/examples/compiled/area_gradient.vg.json
index a32f48ea9e..dec266f8f7 100644
--- a/examples/compiled/area_gradient.vg.json
+++ b/examples/compiled/area_gradient.vg.json
@@ -57,7 +57,7 @@
}
},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"price\"], \"\"))"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\"))"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "price_end"},
@@ -78,7 +78,7 @@
"update": {
"stroke": {"value": "darkgreen"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"price\"], \"\"))"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\"))"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "price_end"},
diff --git a/examples/compiled/area_horizon.vg.json b/examples/compiled/area_horizon.vg.json
index 8fdc309a95..0cc071fb14 100644
--- a/examples/compiled/area_horizon.vg.json
+++ b/examples/compiled/area_horizon.vg.json
@@ -99,7 +99,7 @@
"orient": {"value": "vertical"},
"fill": {"value": "#4c78a8"},
"description": {
- "signal": "\"x: \" + (format(datum[\"x\"], \"\")) + \"; y: \" + (format(datum[\"y\"], \"\"))"
+ "signal": "\"x: \" + (!isValid(datum[\"x\"]) || !isFinite(+datum[\"x\"]) ? \"\" + datum[\"x\"] : format(datum[\"x\"], \"\")) + \"; y: \" + (!isValid(datum[\"y\"]) || !isFinite(+datum[\"y\"]) ? \"\" + datum[\"y\"] : format(datum[\"y\"], \"\"))"
},
"x": {"scale": "x", "field": "x"},
"y": {"scale": "y", "field": "y_end"},
@@ -123,7 +123,7 @@
"fill": {"value": "#4c78a8"},
"opacity": {"value": 0.3},
"description": {
- "signal": "\"x: \" + (format(datum[\"x\"], \"\")) + \"; ny: \" + (format(datum[\"ny\"], \"\"))"
+ "signal": "\"x: \" + (!isValid(datum[\"x\"]) || !isFinite(+datum[\"x\"]) ? \"\" + datum[\"x\"] : format(datum[\"x\"], \"\")) + \"; ny: \" + (!isValid(datum[\"ny\"]) || !isFinite(+datum[\"ny\"]) ? \"\" + datum[\"ny\"] : format(datum[\"ny\"], \"\"))"
},
"x": {"scale": "x", "field": "x"},
"y": {"scale": "y", "field": "ny_end"},
diff --git a/examples/compiled/area_invalid_null.svg b/examples/compiled/area_invalid_null.svg
index 558fd24cd9..80e45e7a01 100644
--- a/examples/compiled/area_invalid_null.svg
+++ b/examples/compiled/area_invalid_null.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/examples/compiled/area_invalid_null.vg.json b/examples/compiled/area_invalid_null.vg.json
index bf8eeebdbb..c9e65cafb5 100644
--- a/examples/compiled/area_invalid_null.vg.json
+++ b/examples/compiled/area_invalid_null.vg.json
@@ -56,7 +56,7 @@
"orient": {"value": "vertical"},
"fill": {"value": "#4c78a8"},
"description": {
- "signal": "\"x: \" + (format(datum[\"x\"], \"\")) + \"; y: \" + (format(datum[\"y\"], \"\"))"
+ "signal": "\"x: \" + (!isValid(datum[\"x\"]) || !isFinite(+datum[\"x\"]) ? \"\" + datum[\"x\"] : format(datum[\"x\"], \"\")) + \"; y: \" + (!isValid(datum[\"y\"]) || !isFinite(+datum[\"y\"]) ? \"\" + datum[\"y\"] : format(datum[\"y\"], \"\"))"
},
"x": [
{
diff --git a/examples/compiled/area_overlay.vg.json b/examples/compiled/area_overlay.vg.json
index 93a9eea5fe..69fbf071b7 100644
--- a/examples/compiled/area_overlay.vg.json
+++ b/examples/compiled/area_overlay.vg.json
@@ -67,7 +67,7 @@
"orient": {"value": "vertical"},
"fill": {"value": "#4c78a8"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"price\"], \"\"))"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\"))"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "price_end"},
@@ -88,7 +88,7 @@
"update": {
"stroke": {"value": "#4c78a8"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"price\"], \"\"))"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\"))"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "price_end"},
@@ -109,7 +109,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"price\"], \"\"))"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\"))"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "price_end"}
diff --git a/examples/compiled/area_overlay_with_y2.vg.json b/examples/compiled/area_overlay_with_y2.vg.json
index e933aa0e18..9c94682fff 100644
--- a/examples/compiled/area_overlay_with_y2.vg.json
+++ b/examples/compiled/area_overlay_with_y2.vg.json
@@ -37,7 +37,7 @@
"orient": {"value": "vertical"},
"fill": {"value": "#4c78a8"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"price\"], \"\"))"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\"))"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "price"},
@@ -58,7 +58,7 @@
"update": {
"stroke": {"value": "#4c78a8"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"price\"], \"\"))"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\"))"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "price"},
@@ -79,7 +79,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"price\"], \"\"))"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\"))"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "price"}
diff --git a/examples/compiled/area_params.vg.json b/examples/compiled/area_params.vg.json
index 7a560374e9..e5b5726ba1 100644
--- a/examples/compiled/area_params.vg.json
+++ b/examples/compiled/area_params.vg.json
@@ -80,7 +80,7 @@
"orient": {"value": "vertical"},
"fill": {"value": "#4c78a8"},
"description": {
- "signal": "\"u: \" + (format(datum[\"u\"], \"\")) + \"; v: \" + (format(datum[\"v\"], \"\"))"
+ "signal": "\"u: \" + (!isValid(datum[\"u\"]) || !isFinite(+datum[\"u\"]) ? \"\" + datum[\"u\"] : format(datum[\"u\"], \"\")) + \"; v: \" + (!isValid(datum[\"v\"]) || !isFinite(+datum[\"v\"]) ? \"\" + datum[\"v\"] : format(datum[\"v\"], \"\"))"
},
"x": {"scale": "x", "field": "u"},
"y": {"scale": "y", "field": "v_end"},
diff --git a/examples/compiled/area_temperature_range.vg.json b/examples/compiled/area_temperature_range.vg.json
index d4789eece2..2a1f066af2 100644
--- a/examples/compiled/area_temperature_range.vg.json
+++ b/examples/compiled/area_temperature_range.vg.json
@@ -44,7 +44,7 @@
"fill": {"value": "#4c78a8"},
"opacity": {"value": 0.7},
"description": {
- "signal": "\"Date: \" + (timeFormat(datum[\"monthdate_date\"], '%b')) + \"; Daily Temperature Range (C): \" + (format(datum[\"max_temp_max\"], \"\")) + \"; Min of temp_min: \" + (format(datum[\"min_temp_min\"], \"\"))"
+ "signal": "\"Date: \" + (!isValid(datum[\"monthdate_date\"]) || !isFinite(+datum[\"monthdate_date\"]) ? \"\" + datum[\"monthdate_date\"] : timeFormat(datum[\"monthdate_date\"], '%b')) + \"; Daily Temperature Range (C): \" + (!isValid(datum[\"max_temp_max\"]) || !isFinite(+datum[\"max_temp_max\"]) ? \"\" + datum[\"max_temp_max\"] : format(datum[\"max_temp_max\"], \"\")) + \"; Min of temp_min: \" + (!isValid(datum[\"min_temp_min\"]) || !isFinite(+datum[\"min_temp_min\"]) ? \"\" + datum[\"min_temp_min\"] : format(datum[\"min_temp_min\"], \"\"))"
},
"x": {"scale": "x", "field": "monthdate_date"},
"y": {"scale": "y", "field": "max_temp_max"},
diff --git a/examples/compiled/area_vertical.vg.json b/examples/compiled/area_vertical.vg.json
index c9009c436e..2c2eb32a5f 100644
--- a/examples/compiled/area_vertical.vg.json
+++ b/examples/compiled/area_vertical.vg.json
@@ -41,7 +41,7 @@
"orient": {"value": "horizontal"},
"fill": {"value": "#4c78a8"},
"description": {
- "signal": "\"Sum of Weight_in_lbs: \" + (format(datum[\"sum_Weight_in_lbs\"], \"\")) + \"; Year (year): \" + (timeFormat(datum[\"year_Year\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"})))"
+ "signal": "\"Sum of Weight_in_lbs: \" + (!isValid(datum[\"sum_Weight_in_lbs\"]) || !isFinite(+datum[\"sum_Weight_in_lbs\"]) ? \"\" + datum[\"sum_Weight_in_lbs\"] : format(datum[\"sum_Weight_in_lbs\"], \"\")) + \"; Year (year): \" + (!isValid(datum[\"year_Year\"]) || !isFinite(+datum[\"year_Year\"]) ? \"\" + datum[\"year_Year\"] : timeFormat(datum[\"year_Year\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"})))"
},
"x": {"scale": "x", "field": "sum_Weight_in_lbs"},
"x2": {"scale": "x", "value": 0},
diff --git a/examples/compiled/argmin_spaces.vg.json b/examples/compiled/argmin_spaces.vg.json
index 0ffee6265d..15f4105143 100644
--- a/examples/compiled/argmin_spaces.vg.json
+++ b/examples/compiled/argmin_spaces.vg.json
@@ -81,11 +81,11 @@
"fill": {"value": "transparent"},
"stroke": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"Fighter Name\": isValid(datum[\"Fighter Name\"]) ? datum[\"Fighter Name\"] : \"\"+datum[\"Fighter Name\"], \"Min of Place Rank\": format(datum[\"min_Place Rank\"], \"\"), \"Fighting Style for min Place Rank\": isValid(datum[\"argmin_Place Rank\"][\"Fighting Style\"]) ? datum[\"argmin_Place Rank\"][\"Fighting Style\"] : \"\"+datum[\"argmin_Place Rank\"][\"Fighting Style\"]}"
+ "signal": "{\"Fighter Name\": \"\" + datum[\"Fighter Name\"], \"Min of Place Rank\": !isValid(datum[\"min_Place Rank\"]) || !isFinite(+datum[\"min_Place Rank\"]) ? \"\" + datum[\"min_Place Rank\"] : format(datum[\"min_Place Rank\"], \"\"), \"Fighting Style for min Place Rank\": \"\" + datum[\"argmin_Place Rank\"][\"Fighting Style\"]}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Min of Place Rank: \" + (format(datum[\"min_Place Rank\"], \"\")) + \"; Fighter Name: \" + (isValid(datum[\"Fighter Name\"]) ? datum[\"Fighter Name\"] : \"\"+datum[\"Fighter Name\"]) + \"; Fighting Style for min Place Rank: \" + (isValid(datum[\"argmin_Place Rank\"][\"Fighting Style\"]) ? datum[\"argmin_Place Rank\"][\"Fighting Style\"] : \"\"+datum[\"argmin_Place Rank\"][\"Fighting Style\"])"
+ "signal": "\"Min of Place Rank: \" + (!isValid(datum[\"min_Place Rank\"]) || !isFinite(+datum[\"min_Place Rank\"]) ? \"\" + datum[\"min_Place Rank\"] : format(datum[\"min_Place Rank\"], \"\")) + \"; Fighter Name: \" + (\"\" + datum[\"Fighter Name\"]) + \"; Fighting Style for min Place Rank: \" + (\"\" + datum[\"argmin_Place Rank\"][\"Fighting Style\"])"
},
"x": {"scale": "x", "field": "min_Place Rank"},
"y": {"scale": "y", "field": "Fighter Name"}
diff --git a/examples/compiled/bar.vg.json b/examples/compiled/bar.vg.json
index a7403201ad..59c5c1b5cc 100644
--- a/examples/compiled/bar.vg.json
+++ b/examples/compiled/bar.vg.json
@@ -57,7 +57,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "x", "field": "a"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/bar_1d.vg.json b/examples/compiled/bar_1d.vg.json
index 1b454b8fda..493a7d67d8 100644
--- a/examples/compiled/bar_1d.vg.json
+++ b/examples/compiled/bar_1d.vg.json
@@ -37,7 +37,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"population: \" + (format(datum[\"sum_people\"], \"\"))"
+ "signal": "\"population: \" + (!isValid(datum[\"sum_people\"]) || !isFinite(+datum[\"sum_people\"]) ? \"\" + datum[\"sum_people\"] : format(datum[\"sum_people\"], \"\"))"
},
"x": {"scale": "x", "field": "sum_people"},
"x2": {"scale": "x", "value": 0},
diff --git a/examples/compiled/bar_1d_binned.vg.json b/examples/compiled/bar_1d_binned.vg.json
index 44c24cc080..cc9f22f78b 100644
--- a/examples/compiled/bar_1d_binned.vg.json
+++ b/examples/compiled/bar_1d_binned.vg.json
@@ -46,7 +46,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"delay (binned): \" + (!isValid(datum[\"bin_maxbins_100_minstep_1_delay\"]) || !isFinite(+datum[\"bin_maxbins_100_minstep_1_delay\"]) ? \"null\" : format(datum[\"bin_maxbins_100_minstep_1_delay\"], \"d\") + \" – \" + format(datum[\"bin_maxbins_100_minstep_1_delay_end\"], \"d\"))"
+ "signal": "\"delay (binned): \" + (!isValid(datum[\"bin_maxbins_100_minstep_1_delay\"]) || !isFinite(+datum[\"bin_maxbins_100_minstep_1_delay\"]) ? \"\" + datum[\"bin_maxbins_100_minstep_1_delay\"] : format(datum[\"bin_maxbins_100_minstep_1_delay\"], \"d\") + \" – \" + format(datum[\"bin_maxbins_100_minstep_1_delay_end\"], \"d\"))"
},
"x2": {
"scale": "x",
diff --git a/examples/compiled/bar_1d_default_size.vg.json b/examples/compiled/bar_1d_default_size.vg.json
index 75b7638745..0f2322c218 100644
--- a/examples/compiled/bar_1d_default_size.vg.json
+++ b/examples/compiled/bar_1d_default_size.vg.json
@@ -37,7 +37,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"population: \" + (format(datum[\"sum_people\"], \"\"))"
+ "signal": "\"population: \" + (!isValid(datum[\"sum_people\"]) || !isFinite(+datum[\"sum_people\"]) ? \"\" + datum[\"sum_people\"] : format(datum[\"sum_people\"], \"\"))"
},
"x": {"scale": "x", "field": "sum_people"},
"x2": {"scale": "x", "value": 0},
diff --git a/examples/compiled/bar_1d_dimension_only.vg.json b/examples/compiled/bar_1d_dimension_only.vg.json
index c438e6594a..9ffe974055 100644
--- a/examples/compiled/bar_1d_dimension_only.vg.json
+++ b/examples/compiled/bar_1d_dimension_only.vg.json
@@ -39,7 +39,9 @@
"update": {
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
- "description": {"signal": "\"b: \" + (format(datum[\"b\"], \"\"))"},
+ "description": {
+ "signal": "\"b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
+ },
"x": {"field": {"group": "width"}},
"x2": {"value": 0},
"yc": {"scale": "y", "field": "b"},
diff --git a/examples/compiled/bar_1d_step_config.vg.json b/examples/compiled/bar_1d_step_config.vg.json
index 744c2debde..6ecc935e8d 100644
--- a/examples/compiled/bar_1d_step_config.vg.json
+++ b/examples/compiled/bar_1d_step_config.vg.json
@@ -37,7 +37,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"population: \" + (format(datum[\"sum_people\"], \"\"))"
+ "signal": "\"population: \" + (!isValid(datum[\"sum_people\"]) || !isFinite(+datum[\"sum_people\"]) ? \"\" + datum[\"sum_people\"] : format(datum[\"sum_people\"], \"\"))"
},
"x": {"scale": "x", "field": "sum_people"},
"x2": {"scale": "x", "value": 0},
diff --git a/examples/compiled/bar_1d_temporal.vg.json b/examples/compiled/bar_1d_temporal.vg.json
index 627b298291..fb76ad1a6c 100644
--- a/examples/compiled/bar_1d_temporal.vg.json
+++ b/examples/compiled/bar_1d_temporal.vg.json
@@ -29,7 +29,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Year: \" + (timeFormat(datum[\"Year\"], '%b %d, %Y'))"
+ "signal": "\"Year: \" + (!isValid(datum[\"Year\"]) || !isFinite(+datum[\"Year\"]) ? \"\" + datum[\"Year\"] : timeFormat(datum[\"Year\"], '%b %d, %Y'))"
},
"xc": {"scale": "x", "field": "Year"},
"width": {"value": 5},
diff --git a/examples/compiled/bar_aggregate.vg.json b/examples/compiled/bar_aggregate.vg.json
index 034f12aaf4..b079cbdcf5 100644
--- a/examples/compiled/bar_aggregate.vg.json
+++ b/examples/compiled/bar_aggregate.vg.json
@@ -44,7 +44,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"population: \" + (format(datum[\"sum_people\"], \"\")) + \"; age: \" + (isValid(datum[\"age\"]) ? datum[\"age\"] : \"\"+datum[\"age\"])"
+ "signal": "\"population: \" + (!isValid(datum[\"sum_people\"]) || !isFinite(+datum[\"sum_people\"]) ? \"\" + datum[\"sum_people\"] : format(datum[\"sum_people\"], \"\")) + \"; age: \" + (\"\" + datum[\"age\"])"
},
"x": {"scale": "x", "field": "sum_people"},
"x2": {"scale": "x", "value": 0},
diff --git a/examples/compiled/bar_aggregate_count.vg.json b/examples/compiled/bar_aggregate_count.vg.json
index dfe20628c7..aa7bdbe30b 100644
--- a/examples/compiled/bar_aggregate_count.vg.json
+++ b/examples/compiled/bar_aggregate_count.vg.json
@@ -55,7 +55,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"precipitation (binned): \" + (!isValid(datum[\"bin_maxbins_10_precipitation\"]) || !isFinite(+datum[\"bin_maxbins_10_precipitation\"]) ? \"null\" : format(datum[\"bin_maxbins_10_precipitation\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_precipitation_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"precipitation (binned): \" + (!isValid(datum[\"bin_maxbins_10_precipitation\"]) || !isFinite(+datum[\"bin_maxbins_10_precipitation\"]) ? \"\" + datum[\"bin_maxbins_10_precipitation\"] : format(datum[\"bin_maxbins_10_precipitation\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_precipitation_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x2": {
"scale": "x",
diff --git a/examples/compiled/bar_aggregate_format.vg.json b/examples/compiled/bar_aggregate_format.vg.json
index ef2b5a09f1..5ea3eb89ff 100644
--- a/examples/compiled/bar_aggregate_format.vg.json
+++ b/examples/compiled/bar_aggregate_format.vg.json
@@ -44,7 +44,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"population: \" + (format(datum[\"sum_people\"], \".2e\")) + \"; age: \" + (isValid(datum[\"age\"]) ? datum[\"age\"] : \"\"+datum[\"age\"])"
+ "signal": "\"population: \" + (!isValid(datum[\"sum_people\"]) || !isFinite(+datum[\"sum_people\"]) ? \"\" + datum[\"sum_people\"] : format(datum[\"sum_people\"], \".2e\")) + \"; age: \" + (\"\" + datum[\"age\"])"
},
"x": {"scale": "x", "field": "sum_people"},
"x2": {"scale": "x", "value": 0},
diff --git a/examples/compiled/bar_aggregate_size.vg.json b/examples/compiled/bar_aggregate_size.vg.json
index 355edfa255..f8daa403ff 100644
--- a/examples/compiled/bar_aggregate_size.vg.json
+++ b/examples/compiled/bar_aggregate_size.vg.json
@@ -44,7 +44,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"age: \" + (isValid(datum[\"age\"]) ? datum[\"age\"] : \"\"+datum[\"age\"]) + \"; population: \" + (format(datum[\"sum_people\"], \"\"))"
+ "signal": "\"age: \" + (\"\" + datum[\"age\"]) + \"; population: \" + (!isValid(datum[\"sum_people\"]) || !isFinite(+datum[\"sum_people\"]) ? \"\" + datum[\"sum_people\"] : format(datum[\"sum_people\"], \"\"))"
},
"xc": {"scale": "x", "field": "age", "band": 0.5},
"width": {"value": 10},
diff --git a/examples/compiled/bar_aggregate_sort_by_encoding.vg.json b/examples/compiled/bar_aggregate_sort_by_encoding.vg.json
index de6fe777a0..cd4a9a149c 100644
--- a/examples/compiled/bar_aggregate_sort_by_encoding.vg.json
+++ b/examples/compiled/bar_aggregate_sort_by_encoding.vg.json
@@ -48,7 +48,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"population: \" + (format(datum[\"sum_people\"], \"\")) + \"; age: \" + (isValid(datum[\"age\"]) ? datum[\"age\"] : \"\"+datum[\"age\"])"
+ "signal": "\"population: \" + (!isValid(datum[\"sum_people\"]) || !isFinite(+datum[\"sum_people\"]) ? \"\" + datum[\"sum_people\"] : format(datum[\"sum_people\"], \"\")) + \"; age: \" + (\"\" + datum[\"age\"])"
},
"x": {"scale": "x", "field": "sum_people"},
"x2": {"scale": "x", "value": 0},
diff --git a/examples/compiled/bar_aggregate_sort_mean.vg.json b/examples/compiled/bar_aggregate_sort_mean.vg.json
index 4973b4a9c2..4003910661 100644
--- a/examples/compiled/bar_aggregate_sort_mean.vg.json
+++ b/examples/compiled/bar_aggregate_sort_mean.vg.json
@@ -48,7 +48,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"population: \" + (format(datum[\"sum_people\"], \"\")) + \"; age: \" + (isValid(datum[\"age\"]) ? datum[\"age\"] : \"\"+datum[\"age\"])"
+ "signal": "\"population: \" + (!isValid(datum[\"sum_people\"]) || !isFinite(+datum[\"sum_people\"]) ? \"\" + datum[\"sum_people\"] : format(datum[\"sum_people\"], \"\")) + \"; age: \" + (\"\" + datum[\"age\"])"
},
"x": {"scale": "x", "field": "sum_people"},
"x2": {"scale": "x", "value": 0},
diff --git a/examples/compiled/bar_aggregate_transform.vg.json b/examples/compiled/bar_aggregate_transform.vg.json
index 2d3a70d941..52c3da5caf 100644
--- a/examples/compiled/bar_aggregate_transform.vg.json
+++ b/examples/compiled/bar_aggregate_transform.vg.json
@@ -50,7 +50,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; mean_acc: \" + (format(datum[\"mean_acc\"], \"\"))"
+ "signal": "\"Cylinders: \" + (\"\" + datum[\"Cylinders\"]) + \"; mean_acc: \" + (!isValid(datum[\"mean_acc\"]) || !isFinite(+datum[\"mean_acc\"]) ? \"\" + datum[\"mean_acc\"] : format(datum[\"mean_acc\"], \"\"))"
},
"x": {"scale": "x", "field": "Cylinders"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/bar_aggregate_vertical.vg.json b/examples/compiled/bar_aggregate_vertical.vg.json
index 4691e64ce7..96677a166b 100644
--- a/examples/compiled/bar_aggregate_vertical.vg.json
+++ b/examples/compiled/bar_aggregate_vertical.vg.json
@@ -42,7 +42,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; Mean of Acceleration: \" + (format(datum[\"mean_Acceleration\"], \"\"))"
+ "signal": "\"Cylinders: \" + (\"\" + datum[\"Cylinders\"]) + \"; Mean of Acceleration: \" + (!isValid(datum[\"mean_Acceleration\"]) || !isFinite(+datum[\"mean_Acceleration\"]) ? \"\" + datum[\"mean_Acceleration\"] : format(datum[\"mean_Acceleration\"], \"\"))"
},
"x": {"scale": "x", "field": "Cylinders"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/bar_argmax.vg.json b/examples/compiled/bar_argmax.vg.json
index 13f7d7dd35..0f129bbff2 100644
--- a/examples/compiled/bar_argmax.vg.json
+++ b/examples/compiled/bar_argmax.vg.json
@@ -43,7 +43,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Production Budget for max US Gross: \" + (format(datum[\"argmax_US Gross\"][\"Production Budget\"], \"\")) + \"; Major Genre: \" + (isValid(datum[\"Major Genre\"]) ? datum[\"Major Genre\"] : \"\"+datum[\"Major Genre\"])"
+ "signal": "\"Production Budget for max US Gross: \" + (!isValid(datum[\"argmax_US Gross\"][\"Production Budget\"]) || !isFinite(+datum[\"argmax_US Gross\"][\"Production Budget\"]) ? \"\" + datum[\"argmax_US Gross\"][\"Production Budget\"] : format(datum[\"argmax_US Gross\"][\"Production Budget\"], \"\")) + \"; Major Genre: \" + (\"\" + datum[\"Major Genre\"])"
},
"x": {
"scale": "x",
diff --git a/examples/compiled/bar_argmax_transform.vg.json b/examples/compiled/bar_argmax_transform.vg.json
index 850047557f..4612e704aa 100644
--- a/examples/compiled/bar_argmax_transform.vg.json
+++ b/examples/compiled/bar_argmax_transform.vg.json
@@ -59,7 +59,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"argmax_US_Gross['Production Budget']: \" + (format(datum[\"argmax_US_Gross.Production Budget\"], \"\")) + \"; Major Genre: \" + (isValid(datum[\"Major Genre\"]) ? datum[\"Major Genre\"] : \"\"+datum[\"Major Genre\"])"
+ "signal": "\"argmax_US_Gross['Production Budget']: \" + (!isValid(datum[\"argmax_US_Gross.Production Budget\"]) || !isFinite(+datum[\"argmax_US_Gross.Production Budget\"]) ? \"\" + datum[\"argmax_US_Gross.Production Budget\"] : format(datum[\"argmax_US_Gross.Production Budget\"], \"\")) + \"; Major Genre: \" + (\"\" + datum[\"Major Genre\"])"
},
"x": {
"scale": "x",
diff --git a/examples/compiled/bar_array_aggregate.vg.json b/examples/compiled/bar_array_aggregate.vg.json
index 6ff6f5ea89..75263768c9 100644
--- a/examples/compiled/bar_array_aggregate.vg.json
+++ b/examples/compiled/bar_array_aggregate.vg.json
@@ -55,7 +55,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; Average of b: \" + (format(datum[\"average_b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; Average of b: \" + (!isValid(datum[\"average_b\"]) || !isFinite(+datum[\"average_b\"]) ? \"\" + datum[\"average_b\"] : format(datum[\"average_b\"], \"\"))"
},
"x": {"scale": "x", "field": "a"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/bar_axis_orient.vg.json b/examples/compiled/bar_axis_orient.vg.json
index 53f1126461..1f43e15f8b 100644
--- a/examples/compiled/bar_axis_orient.vg.json
+++ b/examples/compiled/bar_axis_orient.vg.json
@@ -68,7 +68,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "x", "field": "a"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/bar_axis_space_saving.vg.json b/examples/compiled/bar_axis_space_saving.vg.json
index c204ae6671..604f7e1da0 100644
--- a/examples/compiled/bar_axis_space_saving.vg.json
+++ b/examples/compiled/bar_axis_space_saving.vg.json
@@ -38,7 +38,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Number of Cars: \" + (format(datum[\"__count\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Number of Cars: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {"scale": "x", "field": "__count"},
"x2": {"scale": "x", "value": 0},
diff --git a/examples/compiled/bar_axis_title_quoted.vg.json b/examples/compiled/bar_axis_title_quoted.vg.json
index bda80bd031..39ef646ae4 100644
--- a/examples/compiled/bar_axis_title_quoted.vg.json
+++ b/examples/compiled/bar_axis_title_quoted.vg.json
@@ -57,7 +57,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"\\\"Quoted\\\" Title: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"\\\"Quoted\\\" Title: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "x", "field": "a"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/bar_binned_data.vg.json b/examples/compiled/bar_binned_data.vg.json
index 9b6292ffa5..bcbd7380c2 100644
--- a/examples/compiled/bar_binned_data.vg.json
+++ b/examples/compiled/bar_binned_data.vg.json
@@ -49,7 +49,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"bin_start: \" + (!isValid(datum[\"bin_start\"]) || !isFinite(+datum[\"bin_start\"]) ? \"null\" : format(datum[\"bin_start\"], \"\") + \" – \" + format(datum[\"bin_end\"], \"\")) + \"; count: \" + (format(datum[\"count\"], \"\"))"
+ "signal": "\"bin_start: \" + (!isValid(datum[\"bin_start\"]) || !isFinite(+datum[\"bin_start\"]) ? \"\" + datum[\"bin_start\"] : format(datum[\"bin_start\"], \"\") + \" – \" + format(datum[\"bin_end\"], \"\")) + \"; count: \" + (!isValid(datum[\"count\"]) || !isFinite(+datum[\"count\"]) ? \"\" + datum[\"count\"] : format(datum[\"count\"], \"\"))"
},
"x2": {
"scale": "x",
diff --git a/examples/compiled/bar_binned_yearmonth_grouped.vg.json b/examples/compiled/bar_binned_yearmonth_grouped.vg.json
index 4d0ef4b7d4..fdfce8169e 100644
--- a/examples/compiled/bar_binned_yearmonth_grouped.vg.json
+++ b/examples/compiled/bar_binned_yearmonth_grouped.vg.json
@@ -47,7 +47,7 @@
"fill": {"scale": "color", "field": "symbol"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], timeUnitSpecifier([\"year\",\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; price: \" + (format(datum[\"price\"], \"\")) + \"; symbol: \" + (isValid(datum[\"symbol\"]) ? datum[\"symbol\"] : \"\"+datum[\"symbol\"])"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], timeUnitSpecifier([\"year\",\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\")) + \"; symbol: \" + (\"\" + datum[\"symbol\"])"
},
"xc": {
"scale": "x",
diff --git a/examples/compiled/bar_binned_yearmonth_grouped_center_band.vg.json b/examples/compiled/bar_binned_yearmonth_grouped_center_band.vg.json
index addd923f0b..8a9a8c3bd3 100644
--- a/examples/compiled/bar_binned_yearmonth_grouped_center_band.vg.json
+++ b/examples/compiled/bar_binned_yearmonth_grouped_center_band.vg.json
@@ -57,7 +57,7 @@
"fill": {"scale": "color", "field": "symbol"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], timeUnitSpecifier([\"year\",\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; price: \" + (format(datum[\"price\"], \"\")) + \"; symbol: \" + (isValid(datum[\"symbol\"]) ? datum[\"symbol\"] : \"\"+datum[\"symbol\"])"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], timeUnitSpecifier([\"year\",\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\")) + \"; symbol: \" + (\"\" + datum[\"symbol\"])"
},
"xc": {
"scale": "x",
diff --git a/examples/compiled/bar_binned_yearmonth_label.vg.json b/examples/compiled/bar_binned_yearmonth_label.vg.json
index 5b9b9bcb5e..479402e24b 100644
--- a/examples/compiled/bar_binned_yearmonth_label.vg.json
+++ b/examples/compiled/bar_binned_yearmonth_label.vg.json
@@ -64,7 +64,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], timeUnitSpecifier([\"year\",\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; price: \" + (format(datum[\"price\"], \"\"))"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], timeUnitSpecifier([\"year\",\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\"))"
},
"x2": {
"scale": "x",
@@ -95,13 +95,15 @@
"baseline": {"value": "bottom"},
"fill": {"value": "black"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], timeUnitSpecifier([\"year\",\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; price: \" + (format(datum[\"price\"], \"\"))"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], timeUnitSpecifier([\"year\",\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\"))"
},
"x": {
"signal": "scale(\"x\", 0.5 * datum[\"date\"] + 0.5 * datum[\"date_end\"])"
},
"y": {"scale": "y", "field": "price"},
- "text": {"signal": "format(datum[\"price\"], \"\")"},
+ "text": {
+ "signal": "!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\")"
+ },
"align": {"value": "center"}
}
}
diff --git a/examples/compiled/bar_binned_yearmonth_label_band_center.vg.json b/examples/compiled/bar_binned_yearmonth_label_band_center.vg.json
index 91204d2334..66d20387fe 100644
--- a/examples/compiled/bar_binned_yearmonth_label_band_center.vg.json
+++ b/examples/compiled/bar_binned_yearmonth_label_band_center.vg.json
@@ -74,7 +74,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], timeUnitSpecifier([\"year\",\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; price: \" + (format(datum[\"price\"], \"\"))"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], timeUnitSpecifier([\"year\",\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\"))"
},
"x2": {
"scale": "x",
@@ -105,11 +105,13 @@
"baseline": {"value": "bottom"},
"fill": {"value": "black"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], timeUnitSpecifier([\"year\",\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; price: \" + (format(datum[\"price\"], \"\"))"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], timeUnitSpecifier([\"year\",\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\"))"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "price"},
- "text": {"signal": "format(datum[\"price\"], \"\")"},
+ "text": {
+ "signal": "!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\")"
+ },
"align": {"value": "center"}
}
}
diff --git a/examples/compiled/bar_binnedyearmonth.vg.json b/examples/compiled/bar_binnedyearmonth.vg.json
index d4f5d85d57..aa109b6324 100644
--- a/examples/compiled/bar_binnedyearmonth.vg.json
+++ b/examples/compiled/bar_binnedyearmonth.vg.json
@@ -44,7 +44,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], timeUnitSpecifier([\"year\",\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; price: \" + (format(datum[\"price\"], \"\"))"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], timeUnitSpecifier([\"year\",\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\"))"
},
"x2": {
"scale": "x",
diff --git a/examples/compiled/bar_bullet_expr_bind.vg.json b/examples/compiled/bar_bullet_expr_bind.vg.json
index c23e4af0f5..ab06238490 100644
--- a/examples/compiled/bar_bullet_expr_bind.vg.json
+++ b/examples/compiled/bar_bullet_expr_bind.vg.json
@@ -174,7 +174,7 @@
"fill": {"value": "#eee"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"ranges[2]: \" + (format(datum[\"ranges.2\"], \"\"))"
+ "signal": "\"ranges[2]: \" + (!isValid(datum[\"ranges.2\"]) || !isFinite(+datum[\"ranges.2\"]) ? \"\" + datum[\"ranges.2\"] : format(datum[\"ranges.2\"], \"\"))"
},
"x": {"scale": "x", "field": "ranges\\.2\\._end"},
"x2": {"scale": "x", "field": "ranges\\.2\\._start"},
@@ -193,7 +193,7 @@
"fill": {"value": "#ddd"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"ranges[1]: \" + (format(datum[\"ranges.1\"], \"\"))"
+ "signal": "\"ranges[1]: \" + (!isValid(datum[\"ranges.1\"]) || !isFinite(+datum[\"ranges.1\"]) ? \"\" + datum[\"ranges.1\"] : format(datum[\"ranges.1\"], \"\"))"
},
"x": {"scale": "x", "field": "ranges\\.1\\._end"},
"x2": {"scale": "x", "field": "ranges\\.1\\._start"},
@@ -212,7 +212,7 @@
"fill": {"value": "#ccc"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"ranges[0]: \" + (format(datum[\"ranges.0\"], \"\"))"
+ "signal": "\"ranges[0]: \" + (!isValid(datum[\"ranges.0\"]) || !isFinite(+datum[\"ranges.0\"]) ? \"\" + datum[\"ranges.0\"] : format(datum[\"ranges.0\"], \"\"))"
},
"x": {"scale": "x", "field": "ranges\\.0\\._end"},
"x2": {"scale": "x", "field": "ranges\\.0\\._start"},
@@ -231,7 +231,7 @@
"fill": {"value": "lightsteelblue"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"measures[1]: \" + (format(datum[\"measures.1\"], \"\"))"
+ "signal": "\"measures[1]: \" + (!isValid(datum[\"measures.1\"]) || !isFinite(+datum[\"measures.1\"]) ? \"\" + datum[\"measures.1\"] : format(datum[\"measures.1\"], \"\"))"
},
"x": {"scale": "x", "field": "measures\\.1\\._end"},
"x2": {"scale": "x", "field": "measures\\.1\\._start"},
@@ -250,7 +250,7 @@
"fill": {"value": "steelblue"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"measures[0]: \" + (format(datum[\"measures.0\"], \"\"))"
+ "signal": "\"measures[0]: \" + (!isValid(datum[\"measures.0\"]) || !isFinite(+datum[\"measures.0\"]) ? \"\" + datum[\"measures.0\"] : format(datum[\"measures.0\"], \"\"))"
},
"x": {"scale": "x", "field": "measures\\.0\\._end"},
"x2": {"scale": "x", "field": "measures\\.0\\._start"},
@@ -270,7 +270,7 @@
"fill": {"value": "black"},
"ariaRoleDescription": {"value": "tick"},
"description": {
- "signal": "\"markers[0]: \" + (format(datum[\"markers.0\"], \"\"))"
+ "signal": "\"markers[0]: \" + (!isValid(datum[\"markers.0\"]) || !isFinite(+datum[\"markers.0\"]) ? \"\" + datum[\"markers.0\"] : format(datum[\"markers.0\"], \"\"))"
},
"xc": {"scale": "x", "field": "markers\\.0"},
"yc": {"signal": "height", "mult": 0.5},
diff --git a/examples/compiled/bar_color_disabled_scale.vg.json b/examples/compiled/bar_color_disabled_scale.vg.json
index 1f95862e5d..28bde51e0e 100644
--- a/examples/compiled/bar_color_disabled_scale.vg.json
+++ b/examples/compiled/bar_color_disabled_scale.vg.json
@@ -51,7 +51,7 @@
"fill": {"field": "color"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"color: \" + (isValid(datum[\"color\"]) ? datum[\"color\"] : \"\"+datum[\"color\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"color: \" + (\"\" + datum[\"color\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "x", "field": "color"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/bar_column_fold.vg.json b/examples/compiled/bar_column_fold.vg.json
index 77675fa56d..f4978a3e57 100644
--- a/examples/compiled/bar_column_fold.vg.json
+++ b/examples/compiled/bar_column_fold.vg.json
@@ -81,9 +81,7 @@
"from": {"data": "column_domain"},
"sort": {"field": "datum[\"key\"]", "order": "ascending"},
"title": {
- "text": {
- "signal": "isValid(parent[\"key\"]) ? parent[\"key\"] : \"\"+parent[\"key\"]"
- },
+ "text": {"signal": "\"\" + parent[\"key\"]"},
"style": "guide-label",
"frame": "group",
"offset": 10
@@ -135,7 +133,7 @@
"fill": {"scale": "color", "field": "country"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"country: \" + (isValid(datum[\"country\"]) ? datum[\"country\"] : \"\"+datum[\"country\"]) + \"; value: \" + (format(datum[\"value\"], \"\"))"
+ "signal": "\"country: \" + (\"\" + datum[\"country\"]) + \"; value: \" + (!isValid(datum[\"value\"]) || !isFinite(+datum[\"value\"]) ? \"\" + datum[\"value\"] : format(datum[\"value\"], \"\"))"
},
"x": {"scale": "x", "field": "country"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/bar_column_pivot.vg.json b/examples/compiled/bar_column_pivot.vg.json
index e66f5a1ea3..576ee34d5b 100644
--- a/examples/compiled/bar_column_pivot.vg.json
+++ b/examples/compiled/bar_column_pivot.vg.json
@@ -62,7 +62,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"country: \" + (isValid(datum[\"country\"]) ? datum[\"country\"] : \"\"+datum[\"country\"]) + \"; gold: \" + (format(datum[\"gold\"], \"\"))"
+ "signal": "\"country: \" + (\"\" + datum[\"country\"]) + \"; gold: \" + (!isValid(datum[\"gold\"]) || !isFinite(+datum[\"gold\"]) ? \"\" + datum[\"gold\"] : format(datum[\"gold\"], \"\"))"
},
"x": {"scale": "x", "field": "country"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/bar_config_no_zero.vg.json b/examples/compiled/bar_config_no_zero.vg.json
index a7403201ad..59c5c1b5cc 100644
--- a/examples/compiled/bar_config_no_zero.vg.json
+++ b/examples/compiled/bar_config_no_zero.vg.json
@@ -57,7 +57,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "x", "field": "a"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/bar_corner_radius_end.vg.json b/examples/compiled/bar_corner_radius_end.vg.json
index 6c1a57b614..107c556984 100644
--- a/examples/compiled/bar_corner_radius_end.vg.json
+++ b/examples/compiled/bar_corner_radius_end.vg.json
@@ -95,7 +95,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"width": {"field": {"group": "width"}},
"y": {"scale": "y", "field": "b_end"},
diff --git a/examples/compiled/bar_count_minimap.vg.json b/examples/compiled/bar_count_minimap.vg.json
index 16d2d2d53d..5e8adfb06b 100644
--- a/examples/compiled/bar_count_minimap.vg.json
+++ b/examples/compiled/bar_count_minimap.vg.json
@@ -87,7 +87,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Count of Records: \" + (format(datum[\"__count\"], \"\")) + \"; Name: \" + (isValid(datum[\"Name\"]) ? datum[\"Name\"] : \"\"+datum[\"Name\"])"
+ "signal": "\"Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\")) + \"; Name: \" + (\"\" + datum[\"Name\"])"
},
"x": {"scale": "concat_0_x", "field": "__count"},
"x2": {"scale": "concat_0_x", "value": 0},
@@ -357,7 +357,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Count of Records: \" + (format(datum[\"__count\"], \"\")) + \"; Name: \" + (isValid(datum[\"Name\"]) ? datum[\"Name\"] : \"\"+datum[\"Name\"])"
+ "signal": "\"Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\")) + \"; Name: \" + (\"\" + datum[\"Name\"])"
},
"x": {"scale": "concat_1_x", "field": "__count"},
"x2": {"scale": "concat_1_x", "value": 0},
diff --git a/examples/compiled/bar_custom_sort_full.vg.json b/examples/compiled/bar_custom_sort_full.vg.json
index 7a444d9ab3..0109b83def 100644
--- a/examples/compiled/bar_custom_sort_full.vg.json
+++ b/examples/compiled/bar_custom_sort_full.vg.json
@@ -57,7 +57,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "x", "field": "a"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/bar_custom_sort_partial.vg.json b/examples/compiled/bar_custom_sort_partial.vg.json
index 6828a9c6a4..a055831112 100644
--- a/examples/compiled/bar_custom_sort_partial.vg.json
+++ b/examples/compiled/bar_custom_sort_partial.vg.json
@@ -64,7 +64,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "x", "field": "a"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/bar_custom_time_domain.vg.json b/examples/compiled/bar_custom_time_domain.vg.json
index 6bf7b6bbbc..e52bdccdae 100644
--- a/examples/compiled/bar_custom_time_domain.vg.json
+++ b/examples/compiled/bar_custom_time_domain.vg.json
@@ -52,7 +52,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a (hours): \" + (timeFormat(datum[\"hours_a\"], timeUnitSpecifier([\"hours\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a (hours): \" + (!isValid(datum[\"hours_a\"]) || !isFinite(+datum[\"hours_a\"]) ? \"\" + datum[\"hours_a\"] : timeFormat(datum[\"hours_a\"], timeUnitSpecifier([\"hours\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x2": {
"scale": "x",
diff --git a/examples/compiled/bar_default_tooltip_title_null.vg.json b/examples/compiled/bar_default_tooltip_title_null.vg.json
index 22a9c5dfb0..1994a316f9 100644
--- a/examples/compiled/bar_default_tooltip_title_null.vg.json
+++ b/examples/compiled/bar_default_tooltip_title_null.vg.json
@@ -55,12 +55,12 @@
"encode": {
"update": {
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "x", "field": "a"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/bar_distinct.vg.json b/examples/compiled/bar_distinct.vg.json
index 2cb76e2371..420e85ebbb 100644
--- a/examples/compiled/bar_distinct.vg.json
+++ b/examples/compiled/bar_distinct.vg.json
@@ -38,7 +38,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; Distinct of Name: \" + (format(datum[\"distinct_Name\"], \"\"))"
+ "signal": "\"Origin: \" + (\"\" + datum[\"Origin\"]) + \"; Distinct of Name: \" + (!isValid(datum[\"distinct_Name\"]) || !isFinite(+datum[\"distinct_Name\"]) ? \"\" + datum[\"distinct_Name\"] : format(datum[\"distinct_Name\"], \"\"))"
},
"x": {"scale": "x", "field": "Origin"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/bar_diverging_stack_population_pyramid.vg.json b/examples/compiled/bar_diverging_stack_population_pyramid.vg.json
index e0afae68d8..425bfd4cb7 100644
--- a/examples/compiled/bar_diverging_stack_population_pyramid.vg.json
+++ b/examples/compiled/bar_diverging_stack_population_pyramid.vg.json
@@ -62,7 +62,7 @@
"fill": {"scale": "color", "field": "gender"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"population: \" + (format(datum[\"sum_signed_people\"], \"s\")) + \"; age: \" + (isValid(datum[\"age\"]) ? datum[\"age\"] : \"\"+datum[\"age\"]) + \"; gender: \" + (isValid(datum[\"gender\"]) ? datum[\"gender\"] : \"\"+datum[\"gender\"])"
+ "signal": "\"population: \" + (!isValid(datum[\"sum_signed_people\"]) || !isFinite(+datum[\"sum_signed_people\"]) ? \"\" + datum[\"sum_signed_people\"] : format(datum[\"sum_signed_people\"], \"s\")) + \"; age: \" + (\"\" + datum[\"age\"]) + \"; gender: \" + (\"\" + datum[\"gender\"])"
},
"x": {"scale": "x", "field": "sum_signed_people_end"},
"x2": {"scale": "x", "field": "sum_signed_people_start"},
diff --git a/examples/compiled/bar_diverging_stack_transform.vg.json b/examples/compiled/bar_diverging_stack_transform.vg.json
index 499eb20a72..49ea21f043 100644
--- a/examples/compiled/bar_diverging_stack_transform.vg.json
+++ b/examples/compiled/bar_diverging_stack_transform.vg.json
@@ -307,7 +307,7 @@
"fill": {"scale": "color", "field": "type"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Percentage: \" + (format(datum[\"nx\"], \"\")) + \"; Question: \" + (isValid(datum[\"question\"]) ? datum[\"question\"] : \"\"+datum[\"question\"]) + \"; nx2: \" + (format(datum[\"nx2\"], \"\")) + \"; Response: \" + (isValid(datum[\"type\"]) ? datum[\"type\"] : \"\"+datum[\"type\"])"
+ "signal": "\"Percentage: \" + (!isValid(datum[\"nx\"]) || !isFinite(+datum[\"nx\"]) ? \"\" + datum[\"nx\"] : format(datum[\"nx\"], \"\")) + \"; Question: \" + (\"\" + datum[\"question\"]) + \"; nx2: \" + (!isValid(datum[\"nx2\"]) || !isFinite(+datum[\"nx2\"]) ? \"\" + datum[\"nx2\"] : format(datum[\"nx2\"], \"\")) + \"; Response: \" + (\"\" + datum[\"type\"])"
},
"x": {"scale": "x", "field": "nx"},
"x2": {"scale": "x", "field": "nx2"},
diff --git a/examples/compiled/bar_filter_calc.vg.json b/examples/compiled/bar_filter_calc.vg.json
index ddaf50dcb1..ef45a46cdb 100644
--- a/examples/compiled/bar_filter_calc.vg.json
+++ b/examples/compiled/bar_filter_calc.vg.json
@@ -59,7 +59,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b2: \" + (format(datum[\"b2\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b2: \" + (!isValid(datum[\"b2\"]) || !isFinite(+datum[\"b2\"]) ? \"\" + datum[\"b2\"] : format(datum[\"b2\"], \"\"))"
},
"x": {"scale": "x", "field": "a"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/bar_fit.vg.json b/examples/compiled/bar_fit.vg.json
index bd1f49f679..26c3a0366a 100644
--- a/examples/compiled/bar_fit.vg.json
+++ b/examples/compiled/bar_fit.vg.json
@@ -52,7 +52,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "x", "field": "a"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/bar_gantt.vg.json b/examples/compiled/bar_gantt.vg.json
index 4fd65adfac..7e49a9519d 100644
--- a/examples/compiled/bar_gantt.vg.json
+++ b/examples/compiled/bar_gantt.vg.json
@@ -43,7 +43,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"start: \" + (format(datum[\"start\"], \"\")) + \"; task: \" + (isValid(datum[\"task\"]) ? datum[\"task\"] : \"\"+datum[\"task\"]) + \"; end: \" + (format(datum[\"end\"], \"\"))"
+ "signal": "\"start: \" + (!isValid(datum[\"start\"]) || !isFinite(+datum[\"start\"]) ? \"\" + datum[\"start\"] : format(datum[\"start\"], \"\")) + \"; task: \" + (\"\" + datum[\"task\"]) + \"; end: \" + (!isValid(datum[\"end\"]) || !isFinite(+datum[\"end\"]) ? \"\" + datum[\"end\"] : format(datum[\"end\"], \"\"))"
},
"x": {"scale": "x", "field": "start"},
"x2": {"scale": "x", "field": "end"},
diff --git a/examples/compiled/bar_gantt_config_no_zero.vg.json b/examples/compiled/bar_gantt_config_no_zero.vg.json
index 47a431f9b6..2eea260b66 100644
--- a/examples/compiled/bar_gantt_config_no_zero.vg.json
+++ b/examples/compiled/bar_gantt_config_no_zero.vg.json
@@ -43,7 +43,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"start: \" + (format(datum[\"start\"], \"\")) + \"; task: \" + (isValid(datum[\"task\"]) ? datum[\"task\"] : \"\"+datum[\"task\"]) + \"; end: \" + (format(datum[\"end\"], \"\"))"
+ "signal": "\"start: \" + (!isValid(datum[\"start\"]) || !isFinite(+datum[\"start\"]) ? \"\" + datum[\"start\"] : format(datum[\"start\"], \"\")) + \"; task: \" + (\"\" + datum[\"task\"]) + \"; end: \" + (!isValid(datum[\"end\"]) || !isFinite(+datum[\"end\"]) ? \"\" + datum[\"end\"] : format(datum[\"end\"], \"\"))"
},
"x": {"scale": "x", "field": "start"},
"x2": {"scale": "x", "field": "end"},
diff --git a/examples/compiled/bar_group_timeunit.vg.json b/examples/compiled/bar_group_timeunit.vg.json
index 41207af3b0..2774883ac5 100644
--- a/examples/compiled/bar_group_timeunit.vg.json
+++ b/examples/compiled/bar_group_timeunit.vg.json
@@ -42,7 +42,7 @@
"fill": {"scale": "color", "field": "Origin"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Year (year): \" + (timeFormat(datum[\"year_Year\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Number of Cars: \" + (format(datum[\"__count\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Year (year): \" + (!isValid(datum[\"year_Year\"]) || !isFinite(+datum[\"year_Year\"]) ? \"\" + datum[\"year_Year\"] : timeFormat(datum[\"year_Year\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Number of Cars: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"xc": {
"scale": "x",
diff --git a/examples/compiled/bar_grouped.vg.json b/examples/compiled/bar_grouped.vg.json
index 23798b9f9d..ded84cfeb7 100644
--- a/examples/compiled/bar_grouped.vg.json
+++ b/examples/compiled/bar_grouped.vg.json
@@ -59,7 +59,7 @@
"fill": {"scale": "color", "field": "group"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"category: \" + (isValid(datum[\"category\"]) ? datum[\"category\"] : \"\"+datum[\"category\"]) + \"; value: \" + (format(datum[\"value\"], \"\")) + \"; group: \" + (isValid(datum[\"group\"]) ? datum[\"group\"] : \"\"+datum[\"group\"])"
+ "signal": "\"category: \" + (\"\" + datum[\"category\"]) + \"; value: \" + (!isValid(datum[\"value\"]) || !isFinite(+datum[\"value\"]) ? \"\" + datum[\"value\"] : format(datum[\"value\"], \"\")) + \"; group: \" + (\"\" + datum[\"group\"])"
},
"x": {
"scale": "x",
diff --git a/examples/compiled/bar_grouped_custom_padding.vg.json b/examples/compiled/bar_grouped_custom_padding.vg.json
index b6916729ed..c3644aa29a 100644
--- a/examples/compiled/bar_grouped_custom_padding.vg.json
+++ b/examples/compiled/bar_grouped_custom_padding.vg.json
@@ -56,7 +56,7 @@
"fill": {"scale": "color", "field": "group"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"category: \" + (isValid(datum[\"category\"]) ? datum[\"category\"] : \"\"+datum[\"category\"]) + \"; value: \" + (format(datum[\"value\"], \"\")) + \"; group: \" + (isValid(datum[\"group\"]) ? datum[\"group\"] : \"\"+datum[\"group\"])"
+ "signal": "\"category: \" + (\"\" + datum[\"category\"]) + \"; value: \" + (!isValid(datum[\"value\"]) || !isFinite(+datum[\"value\"]) ? \"\" + datum[\"value\"] : format(datum[\"value\"], \"\")) + \"; group: \" + (\"\" + datum[\"group\"])"
},
"x": {
"scale": "x",
diff --git a/examples/compiled/bar_grouped_errorbar.vg.json b/examples/compiled/bar_grouped_errorbar.vg.json
index 1e6a3ac463..ccc9d2e705 100644
--- a/examples/compiled/bar_grouped_errorbar.vg.json
+++ b/examples/compiled/bar_grouped_errorbar.vg.json
@@ -76,7 +76,7 @@
"fill": {"scale": "color", "field": "Origin"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; Mean of Acceleration: \" + (format(datum[\"mean_Acceleration\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Cylinders: \" + (\"\" + datum[\"Cylinders\"]) + \"; Mean of Acceleration: \" + (!isValid(datum[\"mean_Acceleration\"]) || !isFinite(+datum[\"mean_Acceleration\"]) ? \"\" + datum[\"mean_Acceleration\"] : format(datum[\"mean_Acceleration\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {
"scale": "x",
@@ -99,10 +99,10 @@
"ariaRoleDescription": {"value": "errorbar"},
"stroke": {"value": "black"},
"tooltip": {
- "signal": "{\"Mean of Acceleration\": format(datum[\"center_Acceleration\"], \"\"), \"Mean + stderr of Acceleration\": format(datum[\"upper_Acceleration\"], \"\"), \"Mean - stderr of Acceleration\": format(datum[\"lower_Acceleration\"], \"\"), \"Cylinders\": isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"], \"Origin\": isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]}"
+ "signal": "{\"Mean of Acceleration\": !isValid(datum[\"center_Acceleration\"]) || !isFinite(+datum[\"center_Acceleration\"]) ? \"\" + datum[\"center_Acceleration\"] : format(datum[\"center_Acceleration\"], \"\"), \"Mean + stderr of Acceleration\": !isValid(datum[\"upper_Acceleration\"]) || !isFinite(+datum[\"upper_Acceleration\"]) ? \"\" + datum[\"upper_Acceleration\"] : format(datum[\"upper_Acceleration\"], \"\"), \"Mean - stderr of Acceleration\": !isValid(datum[\"lower_Acceleration\"]) || !isFinite(+datum[\"lower_Acceleration\"]) ? \"\" + datum[\"lower_Acceleration\"] : format(datum[\"lower_Acceleration\"], \"\"), \"Cylinders\": \"\" + datum[\"Cylinders\"], \"Origin\": \"\" + datum[\"Origin\"]}"
},
"description": {
- "signal": "\"Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; Acceleration: \" + (format(datum[\"lower_Acceleration\"], \"\")) + \"; upper_Acceleration: \" + (format(datum[\"upper_Acceleration\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; Mean of Acceleration: \" + (format(datum[\"center_Acceleration\"], \"\")) + \"; Mean + stderr of Acceleration: \" + (format(datum[\"upper_Acceleration\"], \"\")) + \"; Mean - stderr of Acceleration: \" + (format(datum[\"lower_Acceleration\"], \"\"))"
+ "signal": "\"Cylinders: \" + (\"\" + datum[\"Cylinders\"]) + \"; Acceleration: \" + (!isValid(datum[\"lower_Acceleration\"]) || !isFinite(+datum[\"lower_Acceleration\"]) ? \"\" + datum[\"lower_Acceleration\"] : format(datum[\"lower_Acceleration\"], \"\")) + \"; upper_Acceleration: \" + (!isValid(datum[\"upper_Acceleration\"]) || !isFinite(+datum[\"upper_Acceleration\"]) ? \"\" + datum[\"upper_Acceleration\"] : format(datum[\"upper_Acceleration\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"]) + \"; Mean of Acceleration: \" + (!isValid(datum[\"center_Acceleration\"]) || !isFinite(+datum[\"center_Acceleration\"]) ? \"\" + datum[\"center_Acceleration\"] : format(datum[\"center_Acceleration\"], \"\")) + \"; Mean + stderr of Acceleration: \" + (!isValid(datum[\"upper_Acceleration\"]) || !isFinite(+datum[\"upper_Acceleration\"]) ? \"\" + datum[\"upper_Acceleration\"] : format(datum[\"upper_Acceleration\"], \"\")) + \"; Mean - stderr of Acceleration: \" + (!isValid(datum[\"lower_Acceleration\"]) || !isFinite(+datum[\"lower_Acceleration\"]) ? \"\" + datum[\"lower_Acceleration\"] : format(datum[\"lower_Acceleration\"], \"\"))"
},
"x": {
"scale": "x",
diff --git a/examples/compiled/bar_grouped_facet.vg.json b/examples/compiled/bar_grouped_facet.vg.json
index caa2f96c81..c3cbca9d57 100644
--- a/examples/compiled/bar_grouped_facet.vg.json
+++ b/examples/compiled/bar_grouped_facet.vg.json
@@ -93,9 +93,7 @@
"from": {"data": "column_domain"},
"sort": {"field": "datum[\"category\"]", "order": "ascending"},
"title": {
- "text": {
- "signal": "isValid(parent[\"category\"]) ? parent[\"category\"] : \"\"+parent[\"category\"]"
- },
+ "text": {"signal": "\"\" + parent[\"category\"]"},
"style": "guide-label",
"frame": "group",
"orient": "bottom",
@@ -128,7 +126,7 @@
"fill": {"scale": "color", "field": "group"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"group: \" + (isValid(datum[\"group\"]) ? datum[\"group\"] : \"\"+datum[\"group\"]) + \"; value: \" + (format(datum[\"value\"], \"\"))"
+ "signal": "\"group: \" + (\"\" + datum[\"group\"]) + \"; value: \" + (!isValid(datum[\"value\"]) || !isFinite(+datum[\"value\"]) ? \"\" + datum[\"value\"] : format(datum[\"value\"], \"\"))"
},
"x": {"scale": "x", "field": "group"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/bar_grouped_facet_independent_scale.vg.json b/examples/compiled/bar_grouped_facet_independent_scale.vg.json
index 61f5f87a69..5787be5fce 100644
--- a/examples/compiled/bar_grouped_facet_independent_scale.vg.json
+++ b/examples/compiled/bar_grouped_facet_independent_scale.vg.json
@@ -94,9 +94,7 @@
"from": {"data": "column_domain"},
"sort": {"field": "datum[\"category\"]", "order": "ascending"},
"title": {
- "text": {
- "signal": "isValid(parent[\"category\"]) ? parent[\"category\"] : \"\"+parent[\"category\"]"
- },
+ "text": {"signal": "\"\" + parent[\"category\"]"},
"style": "guide-label",
"frame": "group",
"orient": "bottom",
@@ -146,7 +144,7 @@
"fill": {"scale": "color", "field": "group"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"group: \" + (isValid(datum[\"group\"]) ? datum[\"group\"] : \"\"+datum[\"group\"]) + \"; value: \" + (format(datum[\"value\"], \"\"))"
+ "signal": "\"group: \" + (\"\" + datum[\"group\"]) + \"; value: \" + (!isValid(datum[\"value\"]) || !isFinite(+datum[\"value\"]) ? \"\" + datum[\"value\"] : format(datum[\"value\"], \"\"))"
},
"x": {"scale": "child_x", "field": "group"},
"width": {"signal": "max(0.25, bandwidth('child_x'))"},
diff --git a/examples/compiled/bar_grouped_facet_independent_scale_fixed_width.vg.json b/examples/compiled/bar_grouped_facet_independent_scale_fixed_width.vg.json
index 349601a689..06f3ccca41 100644
--- a/examples/compiled/bar_grouped_facet_independent_scale_fixed_width.vg.json
+++ b/examples/compiled/bar_grouped_facet_independent_scale_fixed_width.vg.json
@@ -86,9 +86,7 @@
"from": {"data": "column_domain"},
"sort": {"field": "datum[\"category\"]", "order": "ascending"},
"title": {
- "text": {
- "signal": "isValid(parent[\"category\"]) ? parent[\"category\"] : \"\"+parent[\"category\"]"
- },
+ "text": {"signal": "\"\" + parent[\"category\"]"},
"style": "guide-label",
"frame": "group",
"orient": "bottom",
@@ -121,7 +119,7 @@
"fill": {"scale": "color", "field": "group"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"group: \" + (isValid(datum[\"group\"]) ? datum[\"group\"] : \"\"+datum[\"group\"]) + \"; value: \" + (format(datum[\"value\"], \"\"))"
+ "signal": "\"group: \" + (\"\" + datum[\"group\"]) + \"; value: \" + (!isValid(datum[\"value\"]) || !isFinite(+datum[\"value\"]) ? \"\" + datum[\"value\"] : format(datum[\"value\"], \"\"))"
},
"x": {"scale": "child_x", "field": "group"},
"width": {"signal": "max(0.25, bandwidth('child_x'))"},
diff --git a/examples/compiled/bar_grouped_fixed_width.vg.json b/examples/compiled/bar_grouped_fixed_width.vg.json
index f0f2fb3239..95b7911b02 100644
--- a/examples/compiled/bar_grouped_fixed_width.vg.json
+++ b/examples/compiled/bar_grouped_fixed_width.vg.json
@@ -50,7 +50,7 @@
"fill": {"scale": "color", "field": "group"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"category: \" + (isValid(datum[\"category\"]) ? datum[\"category\"] : \"\"+datum[\"category\"]) + \"; value: \" + (format(datum[\"value\"], \"\")) + \"; group: \" + (isValid(datum[\"group\"]) ? datum[\"group\"] : \"\"+datum[\"group\"])"
+ "signal": "\"category: \" + (\"\" + datum[\"category\"]) + \"; value: \" + (!isValid(datum[\"value\"]) || !isFinite(+datum[\"value\"]) ? \"\" + datum[\"value\"] : format(datum[\"value\"], \"\")) + \"; group: \" + (\"\" + datum[\"group\"])"
},
"x": {
"scale": "x",
diff --git a/examples/compiled/bar_grouped_horizontal.vg.json b/examples/compiled/bar_grouped_horizontal.vg.json
index 6de464a01b..d8385393f7 100644
--- a/examples/compiled/bar_grouped_horizontal.vg.json
+++ b/examples/compiled/bar_grouped_horizontal.vg.json
@@ -59,7 +59,7 @@
"fill": {"scale": "color", "field": "group"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"value: \" + (format(datum[\"value\"], \"\")) + \"; category: \" + (isValid(datum[\"category\"]) ? datum[\"category\"] : \"\"+datum[\"category\"]) + \"; group: \" + (isValid(datum[\"group\"]) ? datum[\"group\"] : \"\"+datum[\"group\"])"
+ "signal": "\"value: \" + (!isValid(datum[\"value\"]) || !isFinite(+datum[\"value\"]) ? \"\" + datum[\"value\"] : format(datum[\"value\"], \"\")) + \"; category: \" + (\"\" + datum[\"category\"]) + \"; group: \" + (\"\" + datum[\"group\"])"
},
"x": {"scale": "x", "field": "value_end"},
"x2": {"scale": "x", "field": "value_start"},
diff --git a/examples/compiled/bar_grouped_label.vg.json b/examples/compiled/bar_grouped_label.vg.json
index 99fad91d1b..290f410090 100644
--- a/examples/compiled/bar_grouped_label.vg.json
+++ b/examples/compiled/bar_grouped_label.vg.json
@@ -74,7 +74,7 @@
"fill": {"scale": "color", "field": "group"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"category: \" + (isValid(datum[\"category\"]) ? datum[\"category\"] : \"\"+datum[\"category\"]) + \"; value: \" + (format(datum[\"value\"], \"\")) + \"; group: \" + (isValid(datum[\"group\"]) ? datum[\"group\"] : \"\"+datum[\"group\"])"
+ "signal": "\"category: \" + (\"\" + datum[\"category\"]) + \"; value: \" + (!isValid(datum[\"value\"]) || !isFinite(+datum[\"value\"]) ? \"\" + datum[\"value\"] : format(datum[\"value\"], \"\")) + \"; group: \" + (\"\" + datum[\"group\"])"
},
"x": {
"scale": "x",
@@ -97,7 +97,7 @@
"dy": {"value": -8},
"fill": {"value": "black"},
"description": {
- "signal": "\"category: \" + (isValid(datum[\"category\"]) ? datum[\"category\"] : \"\"+datum[\"category\"]) + \"; value: \" + (format(datum[\"value\"], \"\")) + \"; group: \" + (isValid(datum[\"group\"]) ? datum[\"group\"] : \"\"+datum[\"group\"])"
+ "signal": "\"category: \" + (\"\" + datum[\"category\"]) + \"; value: \" + (!isValid(datum[\"value\"]) || !isFinite(+datum[\"value\"]) ? \"\" + datum[\"value\"] : format(datum[\"value\"], \"\")) + \"; group: \" + (\"\" + datum[\"group\"])"
},
"x": {
"scale": "x",
@@ -105,7 +105,9 @@
"offset": {"scale": "xOffset", "field": "group", "band": 0.5}
},
"y": {"scale": "y", "field": "value"},
- "text": {"signal": "format(datum[\"value\"], \"\")"},
+ "text": {
+ "signal": "!isValid(datum[\"value\"]) || !isFinite(+datum[\"value\"]) ? \"\" + datum[\"value\"] : format(datum[\"value\"], \"\")"
+ },
"align": {"value": "center"},
"baseline": {"value": "middle"}
}
diff --git a/examples/compiled/bar_grouped_repeated.vg.json b/examples/compiled/bar_grouped_repeated.vg.json
index eda23bb99d..d5522632fc 100644
--- a/examples/compiled/bar_grouped_repeated.vg.json
+++ b/examples/compiled/bar_grouped_repeated.vg.json
@@ -41,7 +41,7 @@
"fill": {"scale": "color", "value": "Worldwide Gross"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Major Genre: \" + (isValid(datum[\"Major Genre\"]) ? datum[\"Major Genre\"] : \"\"+datum[\"Major Genre\"]) + \"; Total Gross: \" + (format(datum[\"sum_Worldwide Gross\"], \"\"))"
+ "signal": "\"Major Genre: \" + (\"\" + datum[\"Major Genre\"]) + \"; Total Gross: \" + (!isValid(datum[\"sum_Worldwide Gross\"]) || !isFinite(+datum[\"sum_Worldwide Gross\"]) ? \"\" + datum[\"sum_Worldwide Gross\"] : format(datum[\"sum_Worldwide Gross\"], \"\"))"
},
"x": {
"scale": "x",
@@ -71,7 +71,7 @@
"fill": {"scale": "color", "value": "US Gross"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Major Genre: \" + (isValid(datum[\"Major Genre\"]) ? datum[\"Major Genre\"] : \"\"+datum[\"Major Genre\"]) + \"; Total Gross: \" + (format(datum[\"sum_US Gross\"], \"\"))"
+ "signal": "\"Major Genre: \" + (\"\" + datum[\"Major Genre\"]) + \"; Total Gross: \" + (!isValid(datum[\"sum_US Gross\"]) || !isFinite(+datum[\"sum_US Gross\"]) ? \"\" + datum[\"sum_US Gross\"] : format(datum[\"sum_US Gross\"], \"\"))"
},
"x": {
"scale": "x",
diff --git a/examples/compiled/bar_grouped_stacked.vg.json b/examples/compiled/bar_grouped_stacked.vg.json
index 727c32e6be..8ca7013f99 100644
--- a/examples/compiled/bar_grouped_stacked.vg.json
+++ b/examples/compiled/bar_grouped_stacked.vg.json
@@ -59,7 +59,7 @@
"fill": {"scale": "color", "field": "year_Year"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; Sum of Weight_in_lbs: \" + (format(datum[\"sum_Weight_in_lbs\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; Year (year): \" + (timeFormat(datum[\"year_Year\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"})))"
+ "signal": "\"Cylinders: \" + (\"\" + datum[\"Cylinders\"]) + \"; Sum of Weight_in_lbs: \" + (!isValid(datum[\"sum_Weight_in_lbs\"]) || !isFinite(+datum[\"sum_Weight_in_lbs\"]) ? \"\" + datum[\"sum_Weight_in_lbs\"] : format(datum[\"sum_Weight_in_lbs\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"]) + \"; Year (year): \" + (!isValid(datum[\"year_Year\"]) || !isFinite(+datum[\"year_Year\"]) ? \"\" + datum[\"year_Year\"] : timeFormat(datum[\"year_Year\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"})))"
},
"x": {
"scale": "x",
diff --git a/examples/compiled/bar_grouped_step_for_offset.vg.json b/examples/compiled/bar_grouped_step_for_offset.vg.json
index 6b0296359e..bcf34472f9 100644
--- a/examples/compiled/bar_grouped_step_for_offset.vg.json
+++ b/examples/compiled/bar_grouped_step_for_offset.vg.json
@@ -59,7 +59,7 @@
"fill": {"scale": "color", "field": "group"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"category: \" + (isValid(datum[\"category\"]) ? datum[\"category\"] : \"\"+datum[\"category\"]) + \"; value: \" + (format(datum[\"value\"], \"\")) + \"; group: \" + (isValid(datum[\"group\"]) ? datum[\"group\"] : \"\"+datum[\"group\"])"
+ "signal": "\"category: \" + (\"\" + datum[\"category\"]) + \"; value: \" + (!isValid(datum[\"value\"]) || !isFinite(+datum[\"value\"]) ? \"\" + datum[\"value\"] : format(datum[\"value\"], \"\")) + \"; group: \" + (\"\" + datum[\"group\"])"
},
"x": {
"scale": "x",
diff --git a/examples/compiled/bar_grouped_step_for_position.vg.json b/examples/compiled/bar_grouped_step_for_position.vg.json
index 81bd6e3c9c..0df06fd7f5 100644
--- a/examples/compiled/bar_grouped_step_for_position.vg.json
+++ b/examples/compiled/bar_grouped_step_for_position.vg.json
@@ -56,7 +56,7 @@
"fill": {"scale": "color", "field": "group"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"category: \" + (isValid(datum[\"category\"]) ? datum[\"category\"] : \"\"+datum[\"category\"]) + \"; value: \" + (format(datum[\"value\"], \"\")) + \"; group: \" + (isValid(datum[\"group\"]) ? datum[\"group\"] : \"\"+datum[\"group\"])"
+ "signal": "\"category: \" + (\"\" + datum[\"category\"]) + \"; value: \" + (!isValid(datum[\"value\"]) || !isFinite(+datum[\"value\"]) ? \"\" + datum[\"value\"] : format(datum[\"value\"], \"\")) + \"; group: \" + (\"\" + datum[\"group\"])"
},
"x": {
"scale": "x",
diff --git a/examples/compiled/bar_grouped_thin.svg b/examples/compiled/bar_grouped_thin.svg
index 435574b26d..529aa0957d 100644
--- a/examples/compiled/bar_grouped_thin.svg
+++ b/examples/compiled/bar_grouped_thin.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/examples/compiled/bar_grouped_thin.vg.json b/examples/compiled/bar_grouped_thin.vg.json
index f8a193afd4..48cdf38ff1 100644
--- a/examples/compiled/bar_grouped_thin.vg.json
+++ b/examples/compiled/bar_grouped_thin.vg.json
@@ -38,7 +38,7 @@
],
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Director: \" + (isValid(datum[\"Director\"]) ? datum[\"Director\"] : \"\"+datum[\"Director\"]) + \"; Mean of Rotten Tomatoes Rating: \" + (format(datum[\"mean_Rotten Tomatoes Rating\"], \"\")) + \"; Title: \" + (isValid(datum[\"Title\"]) ? datum[\"Title\"] : \"\"+datum[\"Title\"])"
+ "signal": "\"Director: \" + (\"\" + datum[\"Director\"]) + \"; Mean of Rotten Tomatoes Rating: \" + (!isValid(datum[\"mean_Rotten Tomatoes Rating\"]) || !isFinite(+datum[\"mean_Rotten Tomatoes Rating\"]) ? \"\" + datum[\"mean_Rotten Tomatoes Rating\"] : format(datum[\"mean_Rotten Tomatoes Rating\"], \"\")) + \"; Title: \" + (\"\" + datum[\"Title\"])"
},
"x": {
"scale": "x",
diff --git a/examples/compiled/bar_grouped_thin_minBandSize.svg b/examples/compiled/bar_grouped_thin_minBandSize.svg
index ea77344c19..5b939cd697 100644
--- a/examples/compiled/bar_grouped_thin_minBandSize.svg
+++ b/examples/compiled/bar_grouped_thin_minBandSize.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/examples/compiled/bar_grouped_thin_minBandSize.vg.json b/examples/compiled/bar_grouped_thin_minBandSize.vg.json
index 0a23466f8e..9ba5a8705f 100644
--- a/examples/compiled/bar_grouped_thin_minBandSize.vg.json
+++ b/examples/compiled/bar_grouped_thin_minBandSize.vg.json
@@ -38,7 +38,7 @@
],
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Director: \" + (isValid(datum[\"Director\"]) ? datum[\"Director\"] : \"\"+datum[\"Director\"]) + \"; Mean of Rotten Tomatoes Rating: \" + (format(datum[\"mean_Rotten Tomatoes Rating\"], \"\")) + \"; Title: \" + (isValid(datum[\"Title\"]) ? datum[\"Title\"] : \"\"+datum[\"Title\"])"
+ "signal": "\"Director: \" + (\"\" + datum[\"Director\"]) + \"; Mean of Rotten Tomatoes Rating: \" + (!isValid(datum[\"mean_Rotten Tomatoes Rating\"]) || !isFinite(+datum[\"mean_Rotten Tomatoes Rating\"]) ? \"\" + datum[\"mean_Rotten Tomatoes Rating\"] : format(datum[\"mean_Rotten Tomatoes Rating\"], \"\")) + \"; Title: \" + (\"\" + datum[\"Title\"])"
},
"x": {
"scale": "x",
diff --git a/examples/compiled/bar_grouped_timeunit_yearweek.vg.json b/examples/compiled/bar_grouped_timeunit_yearweek.vg.json
index af91bf87f1..7599848115 100644
--- a/examples/compiled/bar_grouped_timeunit_yearweek.vg.json
+++ b/examples/compiled/bar_grouped_timeunit_yearweek.vg.json
@@ -46,7 +46,7 @@
"fill": {"scale": "color", "field": "Origin"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Year (year-week): \" + (timeFormat(datum[\"yearweek_Year\"], timeUnitSpecifier([\"year\",\"week\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Number of Cars: \" + (format(datum[\"__count\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Year (year-week): \" + (!isValid(datum[\"yearweek_Year\"]) || !isFinite(+datum[\"yearweek_Year\"]) ? \"\" + datum[\"yearweek_Year\"] : timeFormat(datum[\"yearweek_Year\"], timeUnitSpecifier([\"year\",\"week\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Number of Cars: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"xc": {
"scale": "x",
diff --git a/examples/compiled/bar_heatlane.vg.json b/examples/compiled/bar_heatlane.vg.json
index 910871071b..1627bd19a6 100644
--- a/examples/compiled/bar_heatlane.vg.json
+++ b/examples/compiled/bar_heatlane.vg.json
@@ -73,7 +73,7 @@
"fill": {"scale": "color", "field": "max_bin_count_end"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"bin_Horsepower_start\"], \"\")) + \"; y: \" + (isValid(datum[\"y\"]) ? datum[\"y\"] : \"\"+datum[\"y\"]) + \"; bin_Horsepower_end: \" + (format(datum[\"bin_Horsepower_end\"], \"\")) + \"; y2: \" + (isValid(datum[\"y2\"]) ? datum[\"y2\"] : \"\"+datum[\"y2\"]) + \"; count: \" + (isValid(datum[\"max_bin_count_end\"]) ? datum[\"max_bin_count_end\"] : \"\"+datum[\"max_bin_count_end\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"bin_Horsepower_start\"]) || !isFinite(+datum[\"bin_Horsepower_start\"]) ? \"\" + datum[\"bin_Horsepower_start\"] : format(datum[\"bin_Horsepower_start\"], \"\")) + \"; y: \" + (\"\" + datum[\"y\"]) + \"; bin_Horsepower_end: \" + (!isValid(datum[\"bin_Horsepower_end\"]) || !isFinite(+datum[\"bin_Horsepower_end\"]) ? \"\" + datum[\"bin_Horsepower_end\"] : format(datum[\"bin_Horsepower_end\"], \"\")) + \"; y2: \" + (\"\" + datum[\"y2\"]) + \"; count: \" + (\"\" + datum[\"max_bin_count_end\"])"
},
"x": {"scale": "x", "field": "bin_Horsepower_start", "offset": 2},
"x2": {"scale": "x", "field": "bin_Horsepower_end", "offset": -2},
@@ -92,7 +92,7 @@
"fill": {"scale": "color", "field": "bin_count_end"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"bin_Horsepower_start\"], \"\")) + \"; y: \" + (isValid(datum[\"y\"]) ? datum[\"y\"] : \"\"+datum[\"y\"]) + \"; bin_Horsepower_end: \" + (format(datum[\"bin_Horsepower_end\"], \"\")) + \"; y2: \" + (isValid(datum[\"y2\"]) ? datum[\"y2\"] : \"\"+datum[\"y2\"]) + \"; count: \" + (isValid(datum[\"bin_count_end\"]) ? datum[\"bin_count_end\"] : \"\"+datum[\"bin_count_end\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"bin_Horsepower_start\"]) || !isFinite(+datum[\"bin_Horsepower_start\"]) ? \"\" + datum[\"bin_Horsepower_start\"] : format(datum[\"bin_Horsepower_start\"], \"\")) + \"; y: \" + (\"\" + datum[\"y\"]) + \"; bin_Horsepower_end: \" + (!isValid(datum[\"bin_Horsepower_end\"]) || !isFinite(+datum[\"bin_Horsepower_end\"]) ? \"\" + datum[\"bin_Horsepower_end\"] : format(datum[\"bin_Horsepower_end\"], \"\")) + \"; y2: \" + (\"\" + datum[\"y2\"]) + \"; count: \" + (\"\" + datum[\"bin_count_end\"])"
},
"x": {"scale": "x", "field": "bin_Horsepower_start", "offset": 2},
"x2": {"scale": "x", "field": "bin_Horsepower_end", "offset": -2},
diff --git a/examples/compiled/bar_invalid_color_show.svg b/examples/compiled/bar_invalid_color_show.svg
index 7034b097ee..4120b21fc6 100644
--- a/examples/compiled/bar_invalid_color_show.svg
+++ b/examples/compiled/bar_invalid_color_show.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/examples/compiled/bar_invalid_color_show.vg.json b/examples/compiled/bar_invalid_color_show.vg.json
index 84ea16785d..485d262f16 100644
--- a/examples/compiled/bar_invalid_color_show.vg.json
+++ b/examples/compiled/bar_invalid_color_show.vg.json
@@ -52,11 +52,11 @@
{"scale": "color", "field": "c"}
],
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"xc": [
{
diff --git a/examples/compiled/bar_invalid_color_show_override.svg b/examples/compiled/bar_invalid_color_show_override.svg
index 862b351951..f1b0eacc53 100644
--- a/examples/compiled/bar_invalid_color_show_override.svg
+++ b/examples/compiled/bar_invalid_color_show_override.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/examples/compiled/bar_invalid_color_show_override.vg.json b/examples/compiled/bar_invalid_color_show_override.vg.json
index adb1c1fdd2..4ee824e766 100644
--- a/examples/compiled/bar_invalid_color_show_override.vg.json
+++ b/examples/compiled/bar_invalid_color_show_override.vg.json
@@ -52,11 +52,11 @@
{"scale": "color", "field": "c"}
],
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"xc": [
{
diff --git a/examples/compiled/bar_layered_transparent.vg.json b/examples/compiled/bar_layered_transparent.vg.json
index fbd9aa0f00..628b984465 100644
--- a/examples/compiled/bar_layered_transparent.vg.json
+++ b/examples/compiled/bar_layered_transparent.vg.json
@@ -50,7 +50,7 @@
"opacity": {"value": 0.7},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"age: \" + (isValid(datum[\"age\"]) ? datum[\"age\"] : \"\"+datum[\"age\"]) + \"; population: \" + (format(datum[\"sum_people\"], \"\")) + \"; gender: \" + (isValid(datum[\"gender\"]) ? datum[\"gender\"] : \"\"+datum[\"gender\"])"
+ "signal": "\"age: \" + (\"\" + datum[\"age\"]) + \"; population: \" + (!isValid(datum[\"sum_people\"]) || !isFinite(+datum[\"sum_people\"]) ? \"\" + datum[\"sum_people\"] : format(datum[\"sum_people\"], \"\")) + \"; gender: \" + (\"\" + datum[\"gender\"])"
},
"x": {"scale": "x", "field": "age"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/bar_layered_weather.vg.json b/examples/compiled/bar_layered_weather.vg.json
index 40616e7948..cbc922adae 100644
--- a/examples/compiled/bar_layered_weather.vg.json
+++ b/examples/compiled/bar_layered_weather.vg.json
@@ -140,7 +140,7 @@
"fill": {"value": "#ccc"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"id: \" + (isValid(datum[\"id\"]) ? datum[\"id\"] : \"\"+datum[\"id\"]) + \"; record.low: \" + (format(datum[\"record.low\"], \"\")) + \"; record.high: \" + (format(datum[\"record.high\"], \"\"))"
+ "signal": "\"id: \" + (\"\" + datum[\"id\"]) + \"; record.low: \" + (!isValid(datum[\"record.low\"]) || !isFinite(+datum[\"record.low\"]) ? \"\" + datum[\"record.low\"] : format(datum[\"record.low\"], \"\")) + \"; record.high: \" + (!isValid(datum[\"record.high\"]) || !isFinite(+datum[\"record.high\"]) ? \"\" + datum[\"record.high\"] : format(datum[\"record.high\"], \"\"))"
},
"xc": {"scale": "x", "field": "id", "band": 0.5},
"width": {"value": 20},
@@ -159,7 +159,7 @@
"fill": {"value": "#999"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"id: \" + (isValid(datum[\"id\"]) ? datum[\"id\"] : \"\"+datum[\"id\"]) + \"; normal.low: \" + (format(datum[\"normal.low\"], \"\")) + \"; normal.high: \" + (format(datum[\"normal.high\"], \"\"))"
+ "signal": "\"id: \" + (\"\" + datum[\"id\"]) + \"; normal.low: \" + (!isValid(datum[\"normal.low\"]) || !isFinite(+datum[\"normal.low\"]) ? \"\" + datum[\"normal.low\"] : format(datum[\"normal.low\"], \"\")) + \"; normal.high: \" + (!isValid(datum[\"normal.high\"]) || !isFinite(+datum[\"normal.high\"]) ? \"\" + datum[\"normal.high\"] : format(datum[\"normal.high\"], \"\"))"
},
"xc": {"scale": "x", "field": "id", "band": 0.5},
"width": {"value": 20},
@@ -178,7 +178,7 @@
"fill": {"value": "#000"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"id: \" + (isValid(datum[\"id\"]) ? datum[\"id\"] : \"\"+datum[\"id\"]) + \"; actual.low: \" + (format(datum[\"actual.low\"], \"\")) + \"; actual.high: \" + (format(datum[\"actual.high\"], \"\"))"
+ "signal": "\"id: \" + (\"\" + datum[\"id\"]) + \"; actual.low: \" + (!isValid(datum[\"actual.low\"]) || !isFinite(+datum[\"actual.low\"]) ? \"\" + datum[\"actual.low\"] : format(datum[\"actual.low\"], \"\")) + \"; actual.high: \" + (!isValid(datum[\"actual.high\"]) || !isFinite(+datum[\"actual.high\"]) ? \"\" + datum[\"actual.high\"] : format(datum[\"actual.high\"], \"\"))"
},
"xc": {"scale": "x", "field": "id", "band": 0.5},
"width": {"value": 12},
@@ -197,7 +197,7 @@
"fill": {"value": "#000"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"id: \" + (isValid(datum[\"id\"]) ? datum[\"id\"] : \"\"+datum[\"id\"]) + \"; forecast.low.low: \" + (format(datum[\"forecast.low.low\"], \"\")) + \"; forecast.low.high: \" + (format(datum[\"forecast.low.high\"], \"\"))"
+ "signal": "\"id: \" + (\"\" + datum[\"id\"]) + \"; forecast.low.low: \" + (!isValid(datum[\"forecast.low.low\"]) || !isFinite(+datum[\"forecast.low.low\"]) ? \"\" + datum[\"forecast.low.low\"] : format(datum[\"forecast.low.low\"], \"\")) + \"; forecast.low.high: \" + (!isValid(datum[\"forecast.low.high\"]) || !isFinite(+datum[\"forecast.low.high\"]) ? \"\" + datum[\"forecast.low.high\"] : format(datum[\"forecast.low.high\"], \"\"))"
},
"xc": {"scale": "x", "field": "id", "band": 0.5},
"width": {"value": 12},
@@ -216,7 +216,7 @@
"fill": {"value": "#000"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"id: \" + (isValid(datum[\"id\"]) ? datum[\"id\"] : \"\"+datum[\"id\"]) + \"; forecast.low.high: \" + (format(datum[\"forecast.low.high\"], \"\")) + \"; forecast.high.low: \" + (format(datum[\"forecast.high.low\"], \"\"))"
+ "signal": "\"id: \" + (\"\" + datum[\"id\"]) + \"; forecast.low.high: \" + (!isValid(datum[\"forecast.low.high\"]) || !isFinite(+datum[\"forecast.low.high\"]) ? \"\" + datum[\"forecast.low.high\"] : format(datum[\"forecast.low.high\"], \"\")) + \"; forecast.high.low: \" + (!isValid(datum[\"forecast.high.low\"]) || !isFinite(+datum[\"forecast.high.low\"]) ? \"\" + datum[\"forecast.high.low\"] : format(datum[\"forecast.high.low\"], \"\"))"
},
"xc": {"scale": "x", "field": "id", "band": 0.5},
"width": {"value": 3},
@@ -235,7 +235,7 @@
"fill": {"value": "#000"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"id: \" + (isValid(datum[\"id\"]) ? datum[\"id\"] : \"\"+datum[\"id\"]) + \"; forecast.high.low: \" + (format(datum[\"forecast.high.low\"], \"\")) + \"; forecast.high.high: \" + (format(datum[\"forecast.high.high\"], \"\"))"
+ "signal": "\"id: \" + (\"\" + datum[\"id\"]) + \"; forecast.high.low: \" + (!isValid(datum[\"forecast.high.low\"]) || !isFinite(+datum[\"forecast.high.low\"]) ? \"\" + datum[\"forecast.high.low\"] : format(datum[\"forecast.high.low\"], \"\")) + \"; forecast.high.high: \" + (!isValid(datum[\"forecast.high.high\"]) || !isFinite(+datum[\"forecast.high.high\"]) ? \"\" + datum[\"forecast.high.high\"] : format(datum[\"forecast.high.high\"], \"\"))"
},
"xc": {"scale": "x", "field": "id", "band": 0.5},
"width": {"value": 12},
@@ -255,13 +255,11 @@
"baseline": {"value": "bottom"},
"fill": {"value": "black"},
"description": {
- "signal": "\"id: \" + (isValid(datum[\"id\"]) ? datum[\"id\"] : \"\"+datum[\"id\"]) + \"; day: \" + (isValid(datum[\"day\"]) ? datum[\"day\"] : \"\"+datum[\"day\"])"
+ "signal": "\"id: \" + (\"\" + datum[\"id\"]) + \"; day: \" + (\"\" + datum[\"day\"])"
},
"x": {"scale": "x", "field": "id", "band": 0.5},
"y": {"value": -5},
- "text": {
- "signal": "isValid(datum[\"day\"]) ? datum[\"day\"] : \"\"+datum[\"day\"]"
- }
+ "text": {"signal": "\"\" + datum[\"day\"]"}
}
}
}
diff --git a/examples/compiled/bar_month.vg.json b/examples/compiled/bar_month.vg.json
index d59b3b4477..c74227549f 100644
--- a/examples/compiled/bar_month.vg.json
+++ b/examples/compiled/bar_month.vg.json
@@ -48,7 +48,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"date (month): \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of precipitation: \" + (format(datum[\"mean_precipitation\"], \"\"))"
+ "signal": "\"date (month): \" + (!isValid(datum[\"month_date\"]) || !isFinite(+datum[\"month_date\"]) ? \"\" + datum[\"month_date\"] : timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of precipitation: \" + (!isValid(datum[\"mean_precipitation\"]) || !isFinite(+datum[\"mean_precipitation\"]) ? \"\" + datum[\"mean_precipitation\"] : format(datum[\"mean_precipitation\"], \"\"))"
},
"x": {"scale": "x", "field": "month_date"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/bar_month_band.vg.json b/examples/compiled/bar_month_band.vg.json
index 9165a52a80..9a2a85197a 100644
--- a/examples/compiled/bar_month_band.vg.json
+++ b/examples/compiled/bar_month_band.vg.json
@@ -42,7 +42,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"date (month): \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of precipitation: \" + (format(datum[\"mean_precipitation\"], \"\"))"
+ "signal": "\"date (month): \" + (!isValid(datum[\"month_date\"]) || !isFinite(+datum[\"month_date\"]) ? \"\" + datum[\"month_date\"] : timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of precipitation: \" + (!isValid(datum[\"mean_precipitation\"]) || !isFinite(+datum[\"mean_precipitation\"]) ? \"\" + datum[\"mean_precipitation\"] : format(datum[\"mean_precipitation\"], \"\"))"
},
"x2": {
"signal": "scale(\"x\", 0.85 * datum[\"month_date\"] + 0.15000000000000002 * datum[\"month_date_end\"])",
diff --git a/examples/compiled/bar_month_band_config.vg.json b/examples/compiled/bar_month_band_config.vg.json
index 9165a52a80..9a2a85197a 100644
--- a/examples/compiled/bar_month_band_config.vg.json
+++ b/examples/compiled/bar_month_band_config.vg.json
@@ -42,7 +42,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"date (month): \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of precipitation: \" + (format(datum[\"mean_precipitation\"], \"\"))"
+ "signal": "\"date (month): \" + (!isValid(datum[\"month_date\"]) || !isFinite(+datum[\"month_date\"]) ? \"\" + datum[\"month_date\"] : timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of precipitation: \" + (!isValid(datum[\"mean_precipitation\"]) || !isFinite(+datum[\"mean_precipitation\"]) ? \"\" + datum[\"mean_precipitation\"] : format(datum[\"mean_precipitation\"], \"\"))"
},
"x2": {
"signal": "scale(\"x\", 0.85 * datum[\"month_date\"] + 0.15000000000000002 * datum[\"month_date_end\"])",
diff --git a/examples/compiled/bar_month_temporal.vg.json b/examples/compiled/bar_month_temporal.vg.json
index 25cac61d2b..95468e4316 100644
--- a/examples/compiled/bar_month_temporal.vg.json
+++ b/examples/compiled/bar_month_temporal.vg.json
@@ -42,7 +42,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"date (month): \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of precipitation: \" + (format(datum[\"mean_precipitation\"], \"\"))"
+ "signal": "\"date (month): \" + (!isValid(datum[\"month_date\"]) || !isFinite(+datum[\"month_date\"]) ? \"\" + datum[\"month_date\"] : timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of precipitation: \" + (!isValid(datum[\"mean_precipitation\"]) || !isFinite(+datum[\"mean_precipitation\"]) ? \"\" + datum[\"mean_precipitation\"] : format(datum[\"mean_precipitation\"], \"\"))"
},
"x2": {
"scale": "x",
diff --git a/examples/compiled/bar_month_temporal_band_center.vg.json b/examples/compiled/bar_month_temporal_band_center.vg.json
index 597691718b..2cfd517f9a 100644
--- a/examples/compiled/bar_month_temporal_band_center.vg.json
+++ b/examples/compiled/bar_month_temporal_band_center.vg.json
@@ -57,7 +57,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"date (month): \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of precipitation: \" + (format(datum[\"mean_precipitation\"], \"\"))"
+ "signal": "\"date (month): \" + (!isValid(datum[\"month_date\"]) || !isFinite(+datum[\"month_date\"]) ? \"\" + datum[\"month_date\"] : timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of precipitation: \" + (!isValid(datum[\"mean_precipitation\"]) || !isFinite(+datum[\"mean_precipitation\"]) ? \"\" + datum[\"mean_precipitation\"] : format(datum[\"mean_precipitation\"], \"\"))"
},
"x2": {
"scale": "x",
diff --git a/examples/compiled/bar_month_temporal_band_center_config.vg.json b/examples/compiled/bar_month_temporal_band_center_config.vg.json
index 597691718b..2cfd517f9a 100644
--- a/examples/compiled/bar_month_temporal_band_center_config.vg.json
+++ b/examples/compiled/bar_month_temporal_band_center_config.vg.json
@@ -57,7 +57,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"date (month): \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of precipitation: \" + (format(datum[\"mean_precipitation\"], \"\"))"
+ "signal": "\"date (month): \" + (!isValid(datum[\"month_date\"]) || !isFinite(+datum[\"month_date\"]) ? \"\" + datum[\"month_date\"] : timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of precipitation: \" + (!isValid(datum[\"mean_precipitation\"]) || !isFinite(+datum[\"mean_precipitation\"]) ? \"\" + datum[\"mean_precipitation\"] : format(datum[\"mean_precipitation\"], \"\"))"
},
"x2": {
"scale": "x",
diff --git a/examples/compiled/bar_month_temporal_initial.vg.json b/examples/compiled/bar_month_temporal_initial.vg.json
index 73328c7f46..b12007fc3d 100644
--- a/examples/compiled/bar_month_temporal_initial.vg.json
+++ b/examples/compiled/bar_month_temporal_initial.vg.json
@@ -43,7 +43,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"date (month): \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of precipitation: \" + (format(datum[\"mean_precipitation\"], \"\"))"
+ "signal": "\"date (month): \" + (!isValid(datum[\"month_date\"]) || !isFinite(+datum[\"month_date\"]) ? \"\" + datum[\"month_date\"] : timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of precipitation: \" + (!isValid(datum[\"mean_precipitation\"]) || !isFinite(+datum[\"mean_precipitation\"]) ? \"\" + datum[\"mean_precipitation\"] : format(datum[\"mean_precipitation\"], \"\"))"
},
"x2": {
"scale": "x",
diff --git a/examples/compiled/bar_multi_values_per_categories.vg.json b/examples/compiled/bar_multi_values_per_categories.vg.json
index 63d48a5175..aaf7dcc99f 100644
--- a/examples/compiled/bar_multi_values_per_categories.vg.json
+++ b/examples/compiled/bar_multi_values_per_categories.vg.json
@@ -60,7 +60,7 @@
"stroke": {"value": "white"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "x", "field": "a"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/bar_narrow_int_span.vg.json b/examples/compiled/bar_narrow_int_span.vg.json
index 097366c8af..38b7acb4fc 100644
--- a/examples/compiled/bar_narrow_int_span.vg.json
+++ b/examples/compiled/bar_narrow_int_span.vg.json
@@ -41,7 +41,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"d\")) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"d\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"xc": {"scale": "x", "field": "a"},
"width": {"value": 5},
diff --git a/examples/compiled/bar_negative.vg.json b/examples/compiled/bar_negative.vg.json
index 8965cdfe1d..eb751234a8 100644
--- a/examples/compiled/bar_negative.vg.json
+++ b/examples/compiled/bar_negative.vg.json
@@ -57,7 +57,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "x", "field": "a"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/bar_negative_horizontal_label.vg.json b/examples/compiled/bar_negative_horizontal_label.vg.json
index 96aa0dbd66..f5b216390e 100644
--- a/examples/compiled/bar_negative_horizontal_label.vg.json
+++ b/examples/compiled/bar_negative_horizontal_label.vg.json
@@ -67,7 +67,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"b: \" + (format(datum[\"b\"], \"\")) + \"; a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"])"
+ "signal": "\"b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; a: \" + (\"\" + datum[\"a\"])"
},
"x": {"scale": "x", "field": "b_end"},
"x2": {"scale": "x", "field": "b_start"},
@@ -87,11 +87,13 @@
"dx": {"signal": "datum.b < 0 ? -2 : 2"},
"fill": {"value": "black"},
"description": {
- "signal": "\"b: \" + (format(datum[\"b\"], \"\")) + \"; a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"])"
+ "signal": "\"b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; a: \" + (\"\" + datum[\"a\"])"
},
"x": {"scale": "x", "field": "b"},
"y": {"scale": "y", "field": "a", "band": 0.5},
- "text": {"signal": "format(datum[\"b\"], \"\")"},
+ "text": {
+ "signal": "!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")"
+ },
"baseline": {"value": "middle"}
}
}
diff --git a/examples/compiled/bar_params.vg.json b/examples/compiled/bar_params.vg.json
index 3273c30642..c064241a5a 100644
--- a/examples/compiled/bar_params.vg.json
+++ b/examples/compiled/bar_params.vg.json
@@ -95,7 +95,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"width": {"field": {"group": "width"}},
"y": {"scale": "y", "field": "b_end"},
diff --git a/examples/compiled/bar_params_bound.vg.json b/examples/compiled/bar_params_bound.vg.json
index 81146c10f5..aef2265e06 100644
--- a/examples/compiled/bar_params_bound.vg.json
+++ b/examples/compiled/bar_params_bound.vg.json
@@ -99,7 +99,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"width": {"field": {"group": "width"}},
"y": {"scale": "y", "field": "b_end"},
diff --git a/examples/compiled/bar_percent_of_total.vg.json b/examples/compiled/bar_percent_of_total.vg.json
index 2258fe7f1d..73cba8369f 100644
--- a/examples/compiled/bar_percent_of_total.vg.json
+++ b/examples/compiled/bar_percent_of_total.vg.json
@@ -64,7 +64,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"% of total Time: \" + (format(datum[\"PercentOfTotal\"], \"\")) + \"; Activity: \" + (isValid(datum[\"Activity\"]) ? datum[\"Activity\"] : \"\"+datum[\"Activity\"])"
+ "signal": "\"% of total Time: \" + (!isValid(datum[\"PercentOfTotal\"]) || !isFinite(+datum[\"PercentOfTotal\"]) ? \"\" + datum[\"PercentOfTotal\"] : format(datum[\"PercentOfTotal\"], \"\")) + \"; Activity: \" + (\"\" + datum[\"Activity\"])"
},
"x": {"scale": "x", "field": "PercentOfTotal_end"},
"x2": {"scale": "x", "field": "PercentOfTotal_start"},
diff --git a/examples/compiled/bar_q_qpow.vg.json b/examples/compiled/bar_q_qpow.vg.json
index 1123bc43f4..41a7fff443 100644
--- a/examples/compiled/bar_q_qpow.vg.json
+++ b/examples/compiled/bar_q_qpow.vg.json
@@ -44,7 +44,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"xc": {"scale": "x", "field": "a"},
"width": {"value": 5},
diff --git a/examples/compiled/bar_qq_stack.vg.json b/examples/compiled/bar_qq_stack.vg.json
index c7c5a653e6..edf5d49fdb 100644
--- a/examples/compiled/bar_qq_stack.vg.json
+++ b/examples/compiled/bar_qq_stack.vg.json
@@ -40,7 +40,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"xc": {"scale": "x", "field": "a"},
"width": {"value": 5},
diff --git a/examples/compiled/bar_qq_stack_horizontal.vg.json b/examples/compiled/bar_qq_stack_horizontal.vg.json
index 734c1bd839..7ee647d99e 100644
--- a/examples/compiled/bar_qq_stack_horizontal.vg.json
+++ b/examples/compiled/bar_qq_stack_horizontal.vg.json
@@ -41,7 +41,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"b: \" + (format(datum[\"b\"], \"\")) + \"; a: \" + (format(datum[\"a\"], \"\"))"
+ "signal": "\"b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"))"
},
"x": {"scale": "x", "field": "b_end"},
"x2": {"scale": "x", "field": "b_start"},
diff --git a/examples/compiled/bar_ranged_not_binned.vg.json b/examples/compiled/bar_ranged_not_binned.vg.json
index 220fcb013b..458634159f 100644
--- a/examples/compiled/bar_ranged_not_binned.vg.json
+++ b/examples/compiled/bar_ranged_not_binned.vg.json
@@ -42,7 +42,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"b: \" + (format(datum[\"b\"], \"\")) + \"; b2: \" + (format(datum[\"b2\"], \"\"))"
+ "signal": "\"b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; b2: \" + (!isValid(datum[\"b2\"]) || !isFinite(+datum[\"b2\"]) ? \"\" + datum[\"b2\"] : format(datum[\"b2\"], \"\"))"
},
"xc": {"scale": "x", "field": "b"},
"width": {"value": 5},
diff --git a/examples/compiled/bar_simple_binned_timeunit_special_chars.vg.json b/examples/compiled/bar_simple_binned_timeunit_special_chars.vg.json
index 2fb873170f..95362dd350 100644
--- a/examples/compiled/bar_simple_binned_timeunit_special_chars.vg.json
+++ b/examples/compiled/bar_simple_binned_timeunit_special_chars.vg.json
@@ -60,7 +60,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"b: \" + (format(datum[\"b\"], \"\")) + \"; a.b: \" + (timeFormat(datum[\"a.b\"], timeUnitSpecifier([\"year\",\"month\",\"date\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"})))"
+ "signal": "\"b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; a.b: \" + (!isValid(datum[\"a.b\"]) || !isFinite(+datum[\"a.b\"]) ? \"\" + datum[\"a.b\"] : timeFormat(datum[\"a.b\"], timeUnitSpecifier([\"year\",\"month\",\"date\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"})))"
},
"x": {"scale": "x", "field": "b_end"},
"x2": {"scale": "x", "field": "b_start"},
diff --git a/examples/compiled/bar_simple_extent.vg.json b/examples/compiled/bar_simple_extent.vg.json
index d25a759582..3275ae3f5e 100644
--- a/examples/compiled/bar_simple_extent.vg.json
+++ b/examples/compiled/bar_simple_extent.vg.json
@@ -65,7 +65,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"b: \" + (format(datum[\"b\"], \"\")) + \"; a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"])"
+ "signal": "\"b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; a: \" + (\"\" + datum[\"a\"])"
},
"x": {"scale": "x", "field": "b_end"},
"x2": {"scale": "x", "field": "b_start"},
diff --git a/examples/compiled/bar_size_default.vg.json b/examples/compiled/bar_size_default.vg.json
index a657e6fda5..dd1e911fc4 100644
--- a/examples/compiled/bar_size_default.vg.json
+++ b/examples/compiled/bar_size_default.vg.json
@@ -38,7 +38,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"Origin: \" + (\"\" + datum[\"Origin\"]) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x": {"scale": "x", "field": "Origin"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/bar_size_explicit_bad.vg.json b/examples/compiled/bar_size_explicit_bad.vg.json
index 564c59c463..a836197230 100644
--- a/examples/compiled/bar_size_explicit_bad.vg.json
+++ b/examples/compiled/bar_size_explicit_bad.vg.json
@@ -32,7 +32,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Name: \" + (isValid(datum[\"Name\"]) ? datum[\"Name\"] : \"\"+datum[\"Name\"]) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"Name: \" + (\"\" + datum[\"Name\"]) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x": {"scale": "x", "field": "Name"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/bar_size_fit.vg.json b/examples/compiled/bar_size_fit.vg.json
index aed17f5075..5ef8912262 100644
--- a/examples/compiled/bar_size_fit.vg.json
+++ b/examples/compiled/bar_size_fit.vg.json
@@ -32,7 +32,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"Origin: \" + (\"\" + datum[\"Origin\"]) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x": {"scale": "x", "field": "Origin"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/bar_size_responsive.vg.json b/examples/compiled/bar_size_responsive.vg.json
index 2ed5384234..991f2e2ba9 100644
--- a/examples/compiled/bar_size_responsive.vg.json
+++ b/examples/compiled/bar_size_responsive.vg.json
@@ -44,7 +44,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; Number of Cars: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"Origin: \" + (\"\" + datum[\"Origin\"]) + \"; Number of Cars: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x": {"scale": "x", "field": "Origin"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/bar_size_step_small.vg.json b/examples/compiled/bar_size_step_small.vg.json
index 4b49288a92..42652a16cf 100644
--- a/examples/compiled/bar_size_step_small.vg.json
+++ b/examples/compiled/bar_size_step_small.vg.json
@@ -38,7 +38,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"Origin: \" + (\"\" + datum[\"Origin\"]) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x": {"scale": "x", "field": "Origin"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/bar_sort_by_count.vg.json b/examples/compiled/bar_sort_by_count.vg.json
index cec76baa9b..b8d1a9fead 100644
--- a/examples/compiled/bar_sort_by_count.vg.json
+++ b/examples/compiled/bar_sort_by_count.vg.json
@@ -39,7 +39,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"Cylinders: \" + (\"\" + datum[\"Cylinders\"]) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x": {"scale": "x", "field": "Cylinders"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/bar_swap_axes.vg.json b/examples/compiled/bar_swap_axes.vg.json
index 24c5aedd84..d804a92965 100644
--- a/examples/compiled/bar_swap_axes.vg.json
+++ b/examples/compiled/bar_swap_axes.vg.json
@@ -55,7 +55,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Average of b: \" + (format(datum[\"average_b\"], \"\")) + \"; a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"])"
+ "signal": "\"Average of b: \" + (!isValid(datum[\"average_b\"]) || !isFinite(+datum[\"average_b\"]) ? \"\" + datum[\"average_b\"] : format(datum[\"average_b\"], \"\")) + \"; a: \" + (\"\" + datum[\"a\"])"
},
"x": {"scale": "x", "field": "average_b"},
"x2": {"scale": "x", "value": 0},
diff --git a/examples/compiled/bar_swap_custom.vg.json b/examples/compiled/bar_swap_custom.vg.json
index 4d8760930d..1026c71dae 100644
--- a/examples/compiled/bar_swap_custom.vg.json
+++ b/examples/compiled/bar_swap_custom.vg.json
@@ -55,7 +55,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Mean of b: \" + (format(datum[\"average_b\"], \"\")) + \"; a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"])"
+ "signal": "\"Mean of b: \" + (!isValid(datum[\"average_b\"]) || !isFinite(+datum[\"average_b\"]) ? \"\" + datum[\"average_b\"] : format(datum[\"average_b\"], \"\")) + \"; a: \" + (\"\" + datum[\"a\"])"
},
"x": {"scale": "x", "field": "average_b"},
"x2": {"scale": "x", "value": 0},
diff --git a/examples/compiled/bar_temporal_color_config_time_unit_band_position.vg.json b/examples/compiled/bar_temporal_color_config_time_unit_band_position.vg.json
index a1e33bc152..15af7d92c9 100644
--- a/examples/compiled/bar_temporal_color_config_time_unit_band_position.vg.json
+++ b/examples/compiled/bar_temporal_color_config_time_unit_band_position.vg.json
@@ -57,7 +57,7 @@
"fill": {"scale": "color", "field": "year_date"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"symbol: \" + (isValid(datum[\"symbol\"]) ? datum[\"symbol\"] : \"\"+datum[\"symbol\"]) + \"; Sum of price: \" + (format(datum[\"sum_price\"], \"\")) + \"; date (year): \" + (timeFormat(datum[\"year_date\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"})))"
+ "signal": "\"symbol: \" + (\"\" + datum[\"symbol\"]) + \"; Sum of price: \" + (!isValid(datum[\"sum_price\"]) || !isFinite(+datum[\"sum_price\"]) ? \"\" + datum[\"sum_price\"] : format(datum[\"sum_price\"], \"\")) + \"; date (year): \" + (!isValid(datum[\"year_date\"]) || !isFinite(+datum[\"year_date\"]) ? \"\" + datum[\"year_date\"] : timeFormat(datum[\"year_date\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"})))"
},
"x": {"scale": "x", "field": "symbol"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/bar_title.vg.json b/examples/compiled/bar_title.vg.json
index cef272a2d1..a1df9fdcfd 100644
--- a/examples/compiled/bar_title.vg.json
+++ b/examples/compiled/bar_title.vg.json
@@ -57,7 +57,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "x", "field": "a"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/bar_title_start.vg.json b/examples/compiled/bar_title_start.vg.json
index 03fedcee38..f30c2a7ea7 100644
--- a/examples/compiled/bar_title_start.vg.json
+++ b/examples/compiled/bar_title_start.vg.json
@@ -57,7 +57,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "x", "field": "a"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/bar_tooltip.vg.json b/examples/compiled/bar_tooltip.vg.json
index 5295344d5f..bccec90f82 100644
--- a/examples/compiled/bar_tooltip.vg.json
+++ b/examples/compiled/bar_tooltip.vg.json
@@ -55,10 +55,12 @@
"encode": {
"update": {
"fill": {"value": "#4c78a8"},
- "tooltip": {"signal": "format(datum[\"b\"], \"\")"},
+ "tooltip": {
+ "signal": "!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")"
+ },
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "x", "field": "a"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/bar_tooltip_aggregate.vg.json b/examples/compiled/bar_tooltip_aggregate.vg.json
index f4b9af25c1..3cb5e22501 100644
--- a/examples/compiled/bar_tooltip_aggregate.vg.json
+++ b/examples/compiled/bar_tooltip_aggregate.vg.json
@@ -34,10 +34,12 @@
"encode": {
"update": {
"fill": {"value": "#4c78a8"},
- "tooltip": {"signal": "format(datum[\"mean_data\"], \"\")"},
+ "tooltip": {
+ "signal": "!isValid(datum[\"mean_data\"]) || !isFinite(+datum[\"mean_data\"]) ? \"\" + datum[\"mean_data\"] : format(datum[\"mean_data\"], \"\")"
+ },
"ariaRoleDescription": {"value": "tick"},
"description": {
- "signal": "\"Mean of data: \" + (format(datum[\"mean_data\"], \"\"))"
+ "signal": "\"Mean of data: \" + (!isValid(datum[\"mean_data\"]) || !isFinite(+datum[\"mean_data\"]) ? \"\" + datum[\"mean_data\"] : format(datum[\"mean_data\"], \"\"))"
},
"xc": {"signal": "width", "mult": 0.5},
"yc": {"scale": "y", "field": "mean_data"},
diff --git a/examples/compiled/bar_tooltip_groupby.vg.json b/examples/compiled/bar_tooltip_groupby.vg.json
index d024f77b49..b2e57a657a 100644
--- a/examples/compiled/bar_tooltip_groupby.vg.json
+++ b/examples/compiled/bar_tooltip_groupby.vg.json
@@ -34,12 +34,10 @@
"encode": {
"update": {
"fill": {"value": "#4c78a8"},
- "tooltip": {
- "signal": "isValid(datum[\"data\"]) ? datum[\"data\"] : \"\"+datum[\"data\"]"
- },
+ "tooltip": {"signal": "\"\" + datum[\"data\"]"},
"ariaRoleDescription": {"value": "tick"},
"description": {
- "signal": "\"Mean of data: \" + (format(datum[\"mean_data\"], \"\")) + \"; data: \" + (isValid(datum[\"data\"]) ? datum[\"data\"] : \"\"+datum[\"data\"])"
+ "signal": "\"Mean of data: \" + (!isValid(datum[\"mean_data\"]) || !isFinite(+datum[\"mean_data\"]) ? \"\" + datum[\"mean_data\"] : format(datum[\"mean_data\"], \"\")) + \"; data: \" + (\"\" + datum[\"data\"])"
},
"xc": {"signal": "width", "mult": 0.5},
"yc": {"scale": "y", "field": "mean_data"},
diff --git a/examples/compiled/bar_tooltip_multi.vg.json b/examples/compiled/bar_tooltip_multi.vg.json
index 6a35ed202d..26d34fc059 100644
--- a/examples/compiled/bar_tooltip_multi.vg.json
+++ b/examples/compiled/bar_tooltip_multi.vg.json
@@ -55,11 +55,11 @@
"update": {
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "x", "field": "a"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/bar_tooltip_title.vg.json b/examples/compiled/bar_tooltip_title.vg.json
index 4575f585db..9cd1403db2 100644
--- a/examples/compiled/bar_tooltip_title.vg.json
+++ b/examples/compiled/bar_tooltip_title.vg.json
@@ -55,11 +55,11 @@
"update": {
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"Field A\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"Field B\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"Field A\": \"\" + datum[\"a\"], \"Field B\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; Field A: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; Field B: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; Field A: \" + (\"\" + datum[\"a\"]) + \"; Field B: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "x", "field": "a"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/bar_x_offset_without_x.vg.json b/examples/compiled/bar_x_offset_without_x.vg.json
index c3fb601dde..a72f3f4adf 100644
--- a/examples/compiled/bar_x_offset_without_x.vg.json
+++ b/examples/compiled/bar_x_offset_without_x.vg.json
@@ -51,7 +51,7 @@
"fill": {"scale": "color", "field": "group"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"value: \" + (format(datum[\"value\"], \"\")) + \"; group: \" + (isValid(datum[\"group\"]) ? datum[\"group\"] : \"\"+datum[\"group\"])"
+ "signal": "\"value: \" + (!isValid(datum[\"value\"]) || !isFinite(+datum[\"value\"]) ? \"\" + datum[\"value\"] : format(datum[\"value\"], \"\")) + \"; group: \" + (\"\" + datum[\"group\"])"
},
"x": {
"signal": "width",
diff --git a/examples/compiled/bar_yearmonth.vg.json b/examples/compiled/bar_yearmonth.vg.json
index 3427f5e5de..352bf40eb2 100644
--- a/examples/compiled/bar_yearmonth.vg.json
+++ b/examples/compiled/bar_yearmonth.vg.json
@@ -43,7 +43,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"date (year-month): \" + (timeFormat(datum[\"yearmonth_date\"], timeUnitSpecifier([\"year\",\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of temp_max: \" + (format(datum[\"mean_temp_max\"], \"\"))"
+ "signal": "\"date (year-month): \" + (!isValid(datum[\"yearmonth_date\"]) || !isFinite(+datum[\"yearmonth_date\"]) ? \"\" + datum[\"yearmonth_date\"] : timeFormat(datum[\"yearmonth_date\"], timeUnitSpecifier([\"year\",\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of temp_max: \" + (!isValid(datum[\"mean_temp_max\"]) || !isFinite(+datum[\"mean_temp_max\"]) ? \"\" + datum[\"mean_temp_max\"] : format(datum[\"mean_temp_max\"], \"\"))"
},
"x2": {
"scale": "x",
diff --git a/examples/compiled/bar_yearmonth_center_band.vg.json b/examples/compiled/bar_yearmonth_center_band.vg.json
index 4886b6c607..3cb506a1e1 100644
--- a/examples/compiled/bar_yearmonth_center_band.vg.json
+++ b/examples/compiled/bar_yearmonth_center_band.vg.json
@@ -58,7 +58,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"date (year-month): \" + (timeFormat(datum[\"yearmonth_date\"], timeUnitSpecifier([\"year\",\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of temp_max: \" + (format(datum[\"mean_temp_max\"], \"\"))"
+ "signal": "\"date (year-month): \" + (!isValid(datum[\"yearmonth_date\"]) || !isFinite(+datum[\"yearmonth_date\"]) ? \"\" + datum[\"yearmonth_date\"] : timeFormat(datum[\"yearmonth_date\"], timeUnitSpecifier([\"year\",\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of temp_max: \" + (!isValid(datum[\"mean_temp_max\"]) || !isFinite(+datum[\"mean_temp_max\"]) ? \"\" + datum[\"mean_temp_max\"] : format(datum[\"mean_temp_max\"], \"\"))"
},
"x2": {
"scale": "x",
diff --git a/examples/compiled/bar_yearmonth_custom_format.vg.json b/examples/compiled/bar_yearmonth_custom_format.vg.json
index 5463902d4f..d87a7d5ad6 100644
--- a/examples/compiled/bar_yearmonth_custom_format.vg.json
+++ b/examples/compiled/bar_yearmonth_custom_format.vg.json
@@ -43,7 +43,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"date (year-month): \" + (timeFormat(datum[\"yearmonth_date\"], '%B of %Y')) + \"; Mean of temp_max: \" + (format(datum[\"mean_temp_max\"], \"\"))"
+ "signal": "\"date (year-month): \" + (!isValid(datum[\"yearmonth_date\"]) || !isFinite(+datum[\"yearmonth_date\"]) ? \"\" + datum[\"yearmonth_date\"] : timeFormat(datum[\"yearmonth_date\"], '%B of %Y')) + \"; Mean of temp_max: \" + (!isValid(datum[\"mean_temp_max\"]) || !isFinite(+datum[\"mean_temp_max\"]) ? \"\" + datum[\"mean_temp_max\"] : format(datum[\"mean_temp_max\"], \"\"))"
},
"x2": {
"scale": "x",
diff --git a/examples/compiled/bar_yearmonthdate_minBandSize.vg.json b/examples/compiled/bar_yearmonthdate_minBandSize.vg.json
index bcf02a3741..79b44fbab1 100644
--- a/examples/compiled/bar_yearmonthdate_minBandSize.vg.json
+++ b/examples/compiled/bar_yearmonthdate_minBandSize.vg.json
@@ -42,7 +42,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"date (year-month-date): \" + (timeFormat(datum[\"yearmonthdate_date\"], timeUnitSpecifier([\"year\",\"month\",\"date\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of temp_max: \" + (format(datum[\"mean_temp_max\"], \"\"))"
+ "signal": "\"date (year-month-date): \" + (!isValid(datum[\"yearmonthdate_date\"]) || !isFinite(+datum[\"yearmonthdate_date\"]) ? \"\" + datum[\"yearmonthdate_date\"] : timeFormat(datum[\"yearmonthdate_date\"], timeUnitSpecifier([\"year\",\"month\",\"date\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of temp_max: \" + (!isValid(datum[\"mean_temp_max\"]) || !isFinite(+datum[\"mean_temp_max\"]) ? \"\" + datum[\"mean_temp_max\"] : format(datum[\"mean_temp_max\"], \"\"))"
},
"x2": {
"scale": "x",
diff --git a/examples/compiled/boxplot_1D_horizontal.vg.json b/examples/compiled/boxplot_1D_horizontal.vg.json
index 989dcbfbf3..7b73676cf4 100644
--- a/examples/compiled/boxplot_1D_horizontal.vg.json
+++ b/examples/compiled/boxplot_1D_horizontal.vg.json
@@ -145,7 +145,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Body Mass (g): \" + (format(datum[\"Body Mass (g)\"], \"\"))"
+ "signal": "\"Body Mass (g): \" + (!isValid(datum[\"Body Mass (g)\"]) || !isFinite(+datum[\"Body Mass (g)\"]) ? \"\" + datum[\"Body Mass (g)\"] : format(datum[\"Body Mass (g)\"], \"\"))"
},
"x": {"scale": "x", "field": "Body Mass (g)"},
"y": {"signal": "height", "mult": 0.5}
@@ -162,7 +162,7 @@
"update": {
"stroke": {"value": "black"},
"tooltip": {
- "signal": "{\"Upper Whisker of Body Mass (g)\": format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Lower Whisker of Body Mass (g)\": format(datum[\"lower_whisker_Body Mass (g)\"], \"\")}"
+ "signal": "{\"Upper Whisker of Body Mass (g)\": !isValid(datum[\"upper_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"upper_whisker_Body Mass (g)\"]) ? \"\" + datum[\"upper_whisker_Body Mass (g)\"] : format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Lower Whisker of Body Mass (g)\": !isValid(datum[\"lower_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"lower_whisker_Body Mass (g)\"]) ? \"\" + datum[\"lower_whisker_Body Mass (g)\"] : format(datum[\"lower_whisker_Body Mass (g)\"], \"\")}"
},
"x": {"scale": "x", "field": "lower_whisker_Body Mass (g)"},
"x2": {"scale": "x", "field": "lower_box_Body Mass (g)"},
@@ -180,7 +180,7 @@
"update": {
"stroke": {"value": "black"},
"tooltip": {
- "signal": "{\"Upper Whisker of Body Mass (g)\": format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Lower Whisker of Body Mass (g)\": format(datum[\"lower_whisker_Body Mass (g)\"], \"\")}"
+ "signal": "{\"Upper Whisker of Body Mass (g)\": !isValid(datum[\"upper_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"upper_whisker_Body Mass (g)\"]) ? \"\" + datum[\"upper_whisker_Body Mass (g)\"] : format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Lower Whisker of Body Mass (g)\": !isValid(datum[\"lower_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"lower_whisker_Body Mass (g)\"]) ? \"\" + datum[\"lower_whisker_Body Mass (g)\"] : format(datum[\"lower_whisker_Body Mass (g)\"], \"\")}"
},
"x": {"scale": "x", "field": "upper_box_Body Mass (g)"},
"x2": {"scale": "x", "field": "upper_whisker_Body Mass (g)"},
@@ -198,10 +198,10 @@
"ariaRoleDescription": {"value": "box"},
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"Max of Body Mass (g)\": format(datum[\"max_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": format(datum[\"min_Body Mass (g)\"], \"\")}"
+ "signal": "{\"Max of Body Mass (g)\": !isValid(datum[\"max_Body Mass (g)\"]) || !isFinite(+datum[\"max_Body Mass (g)\"]) ? \"\" + datum[\"max_Body Mass (g)\"] : format(datum[\"max_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": !isValid(datum[\"upper_box_Body Mass (g)\"]) || !isFinite(+datum[\"upper_box_Body Mass (g)\"]) ? \"\" + datum[\"upper_box_Body Mass (g)\"] : format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": !isValid(datum[\"mid_box_Body Mass (g)\"]) || !isFinite(+datum[\"mid_box_Body Mass (g)\"]) ? \"\" + datum[\"mid_box_Body Mass (g)\"] : format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": !isValid(datum[\"lower_box_Body Mass (g)\"]) || !isFinite(+datum[\"lower_box_Body Mass (g)\"]) ? \"\" + datum[\"lower_box_Body Mass (g)\"] : format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": !isValid(datum[\"min_Body Mass (g)\"]) || !isFinite(+datum[\"min_Body Mass (g)\"]) ? \"\" + datum[\"min_Body Mass (g)\"] : format(datum[\"min_Body Mass (g)\"], \"\")}"
},
"description": {
- "signal": "\"Body Mass (g): \" + (format(datum[\"lower_box_Body Mass (g)\"], \"\")) + \"; upper_box_Body Mass (g): \" + (format(datum[\"upper_box_Body Mass (g)\"], \"\")) + \"; Max of Body Mass (g): \" + (format(datum[\"max_Body Mass (g)\"], \"\")) + \"; Q3 of Body Mass (g): \" + (format(datum[\"upper_box_Body Mass (g)\"], \"\")) + \"; Median of Body Mass (g): \" + (format(datum[\"mid_box_Body Mass (g)\"], \"\")) + \"; Q1 of Body Mass (g): \" + (format(datum[\"lower_box_Body Mass (g)\"], \"\")) + \"; Min of Body Mass (g): \" + (format(datum[\"min_Body Mass (g)\"], \"\"))"
+ "signal": "\"Body Mass (g): \" + (!isValid(datum[\"lower_box_Body Mass (g)\"]) || !isFinite(+datum[\"lower_box_Body Mass (g)\"]) ? \"\" + datum[\"lower_box_Body Mass (g)\"] : format(datum[\"lower_box_Body Mass (g)\"], \"\")) + \"; upper_box_Body Mass (g): \" + (!isValid(datum[\"upper_box_Body Mass (g)\"]) || !isFinite(+datum[\"upper_box_Body Mass (g)\"]) ? \"\" + datum[\"upper_box_Body Mass (g)\"] : format(datum[\"upper_box_Body Mass (g)\"], \"\")) + \"; Max of Body Mass (g): \" + (!isValid(datum[\"max_Body Mass (g)\"]) || !isFinite(+datum[\"max_Body Mass (g)\"]) ? \"\" + datum[\"max_Body Mass (g)\"] : format(datum[\"max_Body Mass (g)\"], \"\")) + \"; Q3 of Body Mass (g): \" + (!isValid(datum[\"upper_box_Body Mass (g)\"]) || !isFinite(+datum[\"upper_box_Body Mass (g)\"]) ? \"\" + datum[\"upper_box_Body Mass (g)\"] : format(datum[\"upper_box_Body Mass (g)\"], \"\")) + \"; Median of Body Mass (g): \" + (!isValid(datum[\"mid_box_Body Mass (g)\"]) || !isFinite(+datum[\"mid_box_Body Mass (g)\"]) ? \"\" + datum[\"mid_box_Body Mass (g)\"] : format(datum[\"mid_box_Body Mass (g)\"], \"\")) + \"; Q1 of Body Mass (g): \" + (!isValid(datum[\"lower_box_Body Mass (g)\"]) || !isFinite(+datum[\"lower_box_Body Mass (g)\"]) ? \"\" + datum[\"lower_box_Body Mass (g)\"] : format(datum[\"lower_box_Body Mass (g)\"], \"\")) + \"; Min of Body Mass (g): \" + (!isValid(datum[\"min_Body Mass (g)\"]) || !isFinite(+datum[\"min_Body Mass (g)\"]) ? \"\" + datum[\"min_Body Mass (g)\"] : format(datum[\"min_Body Mass (g)\"], \"\"))"
},
"x": {"scale": "x", "field": "lower_box_Body Mass (g)"},
"x2": {"scale": "x", "field": "upper_box_Body Mass (g)"},
@@ -227,7 +227,7 @@
{"value": "white"}
],
"tooltip": {
- "signal": "{\"Max of Body Mass (g)\": format(datum[\"max_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": format(datum[\"min_Body Mass (g)\"], \"\")}"
+ "signal": "{\"Max of Body Mass (g)\": !isValid(datum[\"max_Body Mass (g)\"]) || !isFinite(+datum[\"max_Body Mass (g)\"]) ? \"\" + datum[\"max_Body Mass (g)\"] : format(datum[\"max_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": !isValid(datum[\"upper_box_Body Mass (g)\"]) || !isFinite(+datum[\"upper_box_Body Mass (g)\"]) ? \"\" + datum[\"upper_box_Body Mass (g)\"] : format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": !isValid(datum[\"mid_box_Body Mass (g)\"]) || !isFinite(+datum[\"mid_box_Body Mass (g)\"]) ? \"\" + datum[\"mid_box_Body Mass (g)\"] : format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": !isValid(datum[\"lower_box_Body Mass (g)\"]) || !isFinite(+datum[\"lower_box_Body Mass (g)\"]) ? \"\" + datum[\"lower_box_Body Mass (g)\"] : format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": !isValid(datum[\"min_Body Mass (g)\"]) || !isFinite(+datum[\"min_Body Mass (g)\"]) ? \"\" + datum[\"min_Body Mass (g)\"] : format(datum[\"min_Body Mass (g)\"], \"\")}"
},
"xc": {"scale": "x", "field": "mid_box_Body Mass (g)"},
"yc": {"signal": "height", "mult": 0.5},
diff --git a/examples/compiled/boxplot_1D_horizontal_custom_mark.vg.json b/examples/compiled/boxplot_1D_horizontal_custom_mark.vg.json
index b46b4f4f66..6d14f9490e 100644
--- a/examples/compiled/boxplot_1D_horizontal_custom_mark.vg.json
+++ b/examples/compiled/boxplot_1D_horizontal_custom_mark.vg.json
@@ -155,7 +155,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Body Mass (g): \" + (format(datum[\"Body Mass (g)\"], \"\"))"
+ "signal": "\"Body Mass (g): \" + (!isValid(datum[\"Body Mass (g)\"]) || !isFinite(+datum[\"Body Mass (g)\"]) ? \"\" + datum[\"Body Mass (g)\"] : format(datum[\"Body Mass (g)\"], \"\"))"
},
"x": {"scale": "x", "field": "Body Mass (g)"},
"y": {"signal": "height", "mult": 0.5}
@@ -172,7 +172,7 @@
"update": {
"stroke": {"value": "black"},
"tooltip": {
- "signal": "{\"Upper Whisker of Body Mass (g)\": format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Lower Whisker of Body Mass (g)\": format(datum[\"lower_whisker_Body Mass (g)\"], \"\")}"
+ "signal": "{\"Upper Whisker of Body Mass (g)\": !isValid(datum[\"upper_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"upper_whisker_Body Mass (g)\"]) ? \"\" + datum[\"upper_whisker_Body Mass (g)\"] : format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Lower Whisker of Body Mass (g)\": !isValid(datum[\"lower_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"lower_whisker_Body Mass (g)\"]) ? \"\" + datum[\"lower_whisker_Body Mass (g)\"] : format(datum[\"lower_whisker_Body Mass (g)\"], \"\")}"
},
"x": {"scale": "x", "field": "lower_whisker_Body Mass (g)"},
"x2": {"scale": "x", "field": "lower_box_Body Mass (g)"},
@@ -190,7 +190,7 @@
"update": {
"stroke": {"value": "black"},
"tooltip": {
- "signal": "{\"Upper Whisker of Body Mass (g)\": format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Lower Whisker of Body Mass (g)\": format(datum[\"lower_whisker_Body Mass (g)\"], \"\")}"
+ "signal": "{\"Upper Whisker of Body Mass (g)\": !isValid(datum[\"upper_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"upper_whisker_Body Mass (g)\"]) ? \"\" + datum[\"upper_whisker_Body Mass (g)\"] : format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Lower Whisker of Body Mass (g)\": !isValid(datum[\"lower_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"lower_whisker_Body Mass (g)\"]) ? \"\" + datum[\"lower_whisker_Body Mass (g)\"] : format(datum[\"lower_whisker_Body Mass (g)\"], \"\")}"
},
"x": {"scale": "x", "field": "upper_box_Body Mass (g)"},
"x2": {"scale": "x", "field": "upper_whisker_Body Mass (g)"},
@@ -209,7 +209,7 @@
"opacity": {"value": 1},
"fill": {"value": "black"},
"tooltip": {
- "signal": "{\"Upper Whisker of Body Mass (g)\": format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Lower Whisker of Body Mass (g)\": format(datum[\"lower_whisker_Body Mass (g)\"], \"\")}"
+ "signal": "{\"Upper Whisker of Body Mass (g)\": !isValid(datum[\"upper_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"upper_whisker_Body Mass (g)\"]) ? \"\" + datum[\"upper_whisker_Body Mass (g)\"] : format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Lower Whisker of Body Mass (g)\": !isValid(datum[\"lower_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"lower_whisker_Body Mass (g)\"]) ? \"\" + datum[\"lower_whisker_Body Mass (g)\"] : format(datum[\"lower_whisker_Body Mass (g)\"], \"\")}"
},
"xc": {"scale": "x", "field": "lower_whisker_Body Mass (g)"},
"yc": {"signal": "height", "mult": 0.5},
@@ -229,7 +229,7 @@
"opacity": {"value": 1},
"fill": {"value": "black"},
"tooltip": {
- "signal": "{\"Upper Whisker of Body Mass (g)\": format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Lower Whisker of Body Mass (g)\": format(datum[\"lower_whisker_Body Mass (g)\"], \"\")}"
+ "signal": "{\"Upper Whisker of Body Mass (g)\": !isValid(datum[\"upper_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"upper_whisker_Body Mass (g)\"]) ? \"\" + datum[\"upper_whisker_Body Mass (g)\"] : format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Lower Whisker of Body Mass (g)\": !isValid(datum[\"lower_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"lower_whisker_Body Mass (g)\"]) ? \"\" + datum[\"lower_whisker_Body Mass (g)\"] : format(datum[\"lower_whisker_Body Mass (g)\"], \"\")}"
},
"xc": {"scale": "x", "field": "upper_whisker_Body Mass (g)"},
"yc": {"signal": "height", "mult": 0.5},
@@ -248,10 +248,10 @@
"ariaRoleDescription": {"value": "box"},
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"Max of Body Mass (g)\": format(datum[\"max_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": format(datum[\"min_Body Mass (g)\"], \"\")}"
+ "signal": "{\"Max of Body Mass (g)\": !isValid(datum[\"max_Body Mass (g)\"]) || !isFinite(+datum[\"max_Body Mass (g)\"]) ? \"\" + datum[\"max_Body Mass (g)\"] : format(datum[\"max_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": !isValid(datum[\"upper_box_Body Mass (g)\"]) || !isFinite(+datum[\"upper_box_Body Mass (g)\"]) ? \"\" + datum[\"upper_box_Body Mass (g)\"] : format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": !isValid(datum[\"mid_box_Body Mass (g)\"]) || !isFinite(+datum[\"mid_box_Body Mass (g)\"]) ? \"\" + datum[\"mid_box_Body Mass (g)\"] : format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": !isValid(datum[\"lower_box_Body Mass (g)\"]) || !isFinite(+datum[\"lower_box_Body Mass (g)\"]) ? \"\" + datum[\"lower_box_Body Mass (g)\"] : format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": !isValid(datum[\"min_Body Mass (g)\"]) || !isFinite(+datum[\"min_Body Mass (g)\"]) ? \"\" + datum[\"min_Body Mass (g)\"] : format(datum[\"min_Body Mass (g)\"], \"\")}"
},
"description": {
- "signal": "\"Body Mass (g): \" + (format(datum[\"lower_box_Body Mass (g)\"], \"\")) + \"; upper_box_Body Mass (g): \" + (format(datum[\"upper_box_Body Mass (g)\"], \"\")) + \"; Max of Body Mass (g): \" + (format(datum[\"max_Body Mass (g)\"], \"\")) + \"; Q3 of Body Mass (g): \" + (format(datum[\"upper_box_Body Mass (g)\"], \"\")) + \"; Median of Body Mass (g): \" + (format(datum[\"mid_box_Body Mass (g)\"], \"\")) + \"; Q1 of Body Mass (g): \" + (format(datum[\"lower_box_Body Mass (g)\"], \"\")) + \"; Min of Body Mass (g): \" + (format(datum[\"min_Body Mass (g)\"], \"\"))"
+ "signal": "\"Body Mass (g): \" + (!isValid(datum[\"lower_box_Body Mass (g)\"]) || !isFinite(+datum[\"lower_box_Body Mass (g)\"]) ? \"\" + datum[\"lower_box_Body Mass (g)\"] : format(datum[\"lower_box_Body Mass (g)\"], \"\")) + \"; upper_box_Body Mass (g): \" + (!isValid(datum[\"upper_box_Body Mass (g)\"]) || !isFinite(+datum[\"upper_box_Body Mass (g)\"]) ? \"\" + datum[\"upper_box_Body Mass (g)\"] : format(datum[\"upper_box_Body Mass (g)\"], \"\")) + \"; Max of Body Mass (g): \" + (!isValid(datum[\"max_Body Mass (g)\"]) || !isFinite(+datum[\"max_Body Mass (g)\"]) ? \"\" + datum[\"max_Body Mass (g)\"] : format(datum[\"max_Body Mass (g)\"], \"\")) + \"; Q3 of Body Mass (g): \" + (!isValid(datum[\"upper_box_Body Mass (g)\"]) || !isFinite(+datum[\"upper_box_Body Mass (g)\"]) ? \"\" + datum[\"upper_box_Body Mass (g)\"] : format(datum[\"upper_box_Body Mass (g)\"], \"\")) + \"; Median of Body Mass (g): \" + (!isValid(datum[\"mid_box_Body Mass (g)\"]) || !isFinite(+datum[\"mid_box_Body Mass (g)\"]) ? \"\" + datum[\"mid_box_Body Mass (g)\"] : format(datum[\"mid_box_Body Mass (g)\"], \"\")) + \"; Q1 of Body Mass (g): \" + (!isValid(datum[\"lower_box_Body Mass (g)\"]) || !isFinite(+datum[\"lower_box_Body Mass (g)\"]) ? \"\" + datum[\"lower_box_Body Mass (g)\"] : format(datum[\"lower_box_Body Mass (g)\"], \"\")) + \"; Min of Body Mass (g): \" + (!isValid(datum[\"min_Body Mass (g)\"]) || !isFinite(+datum[\"min_Body Mass (g)\"]) ? \"\" + datum[\"min_Body Mass (g)\"] : format(datum[\"min_Body Mass (g)\"], \"\"))"
},
"x": {"scale": "x", "field": "lower_box_Body Mass (g)"},
"x2": {"scale": "x", "field": "upper_box_Body Mass (g)"},
@@ -277,7 +277,7 @@
{"value": "red"}
],
"tooltip": {
- "signal": "{\"Max of Body Mass (g)\": format(datum[\"max_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": format(datum[\"min_Body Mass (g)\"], \"\")}"
+ "signal": "{\"Max of Body Mass (g)\": !isValid(datum[\"max_Body Mass (g)\"]) || !isFinite(+datum[\"max_Body Mass (g)\"]) ? \"\" + datum[\"max_Body Mass (g)\"] : format(datum[\"max_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": !isValid(datum[\"upper_box_Body Mass (g)\"]) || !isFinite(+datum[\"upper_box_Body Mass (g)\"]) ? \"\" + datum[\"upper_box_Body Mass (g)\"] : format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": !isValid(datum[\"mid_box_Body Mass (g)\"]) || !isFinite(+datum[\"mid_box_Body Mass (g)\"]) ? \"\" + datum[\"mid_box_Body Mass (g)\"] : format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": !isValid(datum[\"lower_box_Body Mass (g)\"]) || !isFinite(+datum[\"lower_box_Body Mass (g)\"]) ? \"\" + datum[\"lower_box_Body Mass (g)\"] : format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": !isValid(datum[\"min_Body Mass (g)\"]) || !isFinite(+datum[\"min_Body Mass (g)\"]) ? \"\" + datum[\"min_Body Mass (g)\"] : format(datum[\"min_Body Mass (g)\"], \"\")}"
},
"xc": {"scale": "x", "field": "mid_box_Body Mass (g)"},
"yc": {"signal": "height", "mult": 0.5},
diff --git a/examples/compiled/boxplot_1D_horizontal_explicit.vg.json b/examples/compiled/boxplot_1D_horizontal_explicit.vg.json
index 989dcbfbf3..7b73676cf4 100644
--- a/examples/compiled/boxplot_1D_horizontal_explicit.vg.json
+++ b/examples/compiled/boxplot_1D_horizontal_explicit.vg.json
@@ -145,7 +145,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Body Mass (g): \" + (format(datum[\"Body Mass (g)\"], \"\"))"
+ "signal": "\"Body Mass (g): \" + (!isValid(datum[\"Body Mass (g)\"]) || !isFinite(+datum[\"Body Mass (g)\"]) ? \"\" + datum[\"Body Mass (g)\"] : format(datum[\"Body Mass (g)\"], \"\"))"
},
"x": {"scale": "x", "field": "Body Mass (g)"},
"y": {"signal": "height", "mult": 0.5}
@@ -162,7 +162,7 @@
"update": {
"stroke": {"value": "black"},
"tooltip": {
- "signal": "{\"Upper Whisker of Body Mass (g)\": format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Lower Whisker of Body Mass (g)\": format(datum[\"lower_whisker_Body Mass (g)\"], \"\")}"
+ "signal": "{\"Upper Whisker of Body Mass (g)\": !isValid(datum[\"upper_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"upper_whisker_Body Mass (g)\"]) ? \"\" + datum[\"upper_whisker_Body Mass (g)\"] : format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Lower Whisker of Body Mass (g)\": !isValid(datum[\"lower_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"lower_whisker_Body Mass (g)\"]) ? \"\" + datum[\"lower_whisker_Body Mass (g)\"] : format(datum[\"lower_whisker_Body Mass (g)\"], \"\")}"
},
"x": {"scale": "x", "field": "lower_whisker_Body Mass (g)"},
"x2": {"scale": "x", "field": "lower_box_Body Mass (g)"},
@@ -180,7 +180,7 @@
"update": {
"stroke": {"value": "black"},
"tooltip": {
- "signal": "{\"Upper Whisker of Body Mass (g)\": format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Lower Whisker of Body Mass (g)\": format(datum[\"lower_whisker_Body Mass (g)\"], \"\")}"
+ "signal": "{\"Upper Whisker of Body Mass (g)\": !isValid(datum[\"upper_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"upper_whisker_Body Mass (g)\"]) ? \"\" + datum[\"upper_whisker_Body Mass (g)\"] : format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Lower Whisker of Body Mass (g)\": !isValid(datum[\"lower_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"lower_whisker_Body Mass (g)\"]) ? \"\" + datum[\"lower_whisker_Body Mass (g)\"] : format(datum[\"lower_whisker_Body Mass (g)\"], \"\")}"
},
"x": {"scale": "x", "field": "upper_box_Body Mass (g)"},
"x2": {"scale": "x", "field": "upper_whisker_Body Mass (g)"},
@@ -198,10 +198,10 @@
"ariaRoleDescription": {"value": "box"},
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"Max of Body Mass (g)\": format(datum[\"max_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": format(datum[\"min_Body Mass (g)\"], \"\")}"
+ "signal": "{\"Max of Body Mass (g)\": !isValid(datum[\"max_Body Mass (g)\"]) || !isFinite(+datum[\"max_Body Mass (g)\"]) ? \"\" + datum[\"max_Body Mass (g)\"] : format(datum[\"max_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": !isValid(datum[\"upper_box_Body Mass (g)\"]) || !isFinite(+datum[\"upper_box_Body Mass (g)\"]) ? \"\" + datum[\"upper_box_Body Mass (g)\"] : format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": !isValid(datum[\"mid_box_Body Mass (g)\"]) || !isFinite(+datum[\"mid_box_Body Mass (g)\"]) ? \"\" + datum[\"mid_box_Body Mass (g)\"] : format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": !isValid(datum[\"lower_box_Body Mass (g)\"]) || !isFinite(+datum[\"lower_box_Body Mass (g)\"]) ? \"\" + datum[\"lower_box_Body Mass (g)\"] : format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": !isValid(datum[\"min_Body Mass (g)\"]) || !isFinite(+datum[\"min_Body Mass (g)\"]) ? \"\" + datum[\"min_Body Mass (g)\"] : format(datum[\"min_Body Mass (g)\"], \"\")}"
},
"description": {
- "signal": "\"Body Mass (g): \" + (format(datum[\"lower_box_Body Mass (g)\"], \"\")) + \"; upper_box_Body Mass (g): \" + (format(datum[\"upper_box_Body Mass (g)\"], \"\")) + \"; Max of Body Mass (g): \" + (format(datum[\"max_Body Mass (g)\"], \"\")) + \"; Q3 of Body Mass (g): \" + (format(datum[\"upper_box_Body Mass (g)\"], \"\")) + \"; Median of Body Mass (g): \" + (format(datum[\"mid_box_Body Mass (g)\"], \"\")) + \"; Q1 of Body Mass (g): \" + (format(datum[\"lower_box_Body Mass (g)\"], \"\")) + \"; Min of Body Mass (g): \" + (format(datum[\"min_Body Mass (g)\"], \"\"))"
+ "signal": "\"Body Mass (g): \" + (!isValid(datum[\"lower_box_Body Mass (g)\"]) || !isFinite(+datum[\"lower_box_Body Mass (g)\"]) ? \"\" + datum[\"lower_box_Body Mass (g)\"] : format(datum[\"lower_box_Body Mass (g)\"], \"\")) + \"; upper_box_Body Mass (g): \" + (!isValid(datum[\"upper_box_Body Mass (g)\"]) || !isFinite(+datum[\"upper_box_Body Mass (g)\"]) ? \"\" + datum[\"upper_box_Body Mass (g)\"] : format(datum[\"upper_box_Body Mass (g)\"], \"\")) + \"; Max of Body Mass (g): \" + (!isValid(datum[\"max_Body Mass (g)\"]) || !isFinite(+datum[\"max_Body Mass (g)\"]) ? \"\" + datum[\"max_Body Mass (g)\"] : format(datum[\"max_Body Mass (g)\"], \"\")) + \"; Q3 of Body Mass (g): \" + (!isValid(datum[\"upper_box_Body Mass (g)\"]) || !isFinite(+datum[\"upper_box_Body Mass (g)\"]) ? \"\" + datum[\"upper_box_Body Mass (g)\"] : format(datum[\"upper_box_Body Mass (g)\"], \"\")) + \"; Median of Body Mass (g): \" + (!isValid(datum[\"mid_box_Body Mass (g)\"]) || !isFinite(+datum[\"mid_box_Body Mass (g)\"]) ? \"\" + datum[\"mid_box_Body Mass (g)\"] : format(datum[\"mid_box_Body Mass (g)\"], \"\")) + \"; Q1 of Body Mass (g): \" + (!isValid(datum[\"lower_box_Body Mass (g)\"]) || !isFinite(+datum[\"lower_box_Body Mass (g)\"]) ? \"\" + datum[\"lower_box_Body Mass (g)\"] : format(datum[\"lower_box_Body Mass (g)\"], \"\")) + \"; Min of Body Mass (g): \" + (!isValid(datum[\"min_Body Mass (g)\"]) || !isFinite(+datum[\"min_Body Mass (g)\"]) ? \"\" + datum[\"min_Body Mass (g)\"] : format(datum[\"min_Body Mass (g)\"], \"\"))"
},
"x": {"scale": "x", "field": "lower_box_Body Mass (g)"},
"x2": {"scale": "x", "field": "upper_box_Body Mass (g)"},
@@ -227,7 +227,7 @@
{"value": "white"}
],
"tooltip": {
- "signal": "{\"Max of Body Mass (g)\": format(datum[\"max_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": format(datum[\"min_Body Mass (g)\"], \"\")}"
+ "signal": "{\"Max of Body Mass (g)\": !isValid(datum[\"max_Body Mass (g)\"]) || !isFinite(+datum[\"max_Body Mass (g)\"]) ? \"\" + datum[\"max_Body Mass (g)\"] : format(datum[\"max_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": !isValid(datum[\"upper_box_Body Mass (g)\"]) || !isFinite(+datum[\"upper_box_Body Mass (g)\"]) ? \"\" + datum[\"upper_box_Body Mass (g)\"] : format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": !isValid(datum[\"mid_box_Body Mass (g)\"]) || !isFinite(+datum[\"mid_box_Body Mass (g)\"]) ? \"\" + datum[\"mid_box_Body Mass (g)\"] : format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": !isValid(datum[\"lower_box_Body Mass (g)\"]) || !isFinite(+datum[\"lower_box_Body Mass (g)\"]) ? \"\" + datum[\"lower_box_Body Mass (g)\"] : format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": !isValid(datum[\"min_Body Mass (g)\"]) || !isFinite(+datum[\"min_Body Mass (g)\"]) ? \"\" + datum[\"min_Body Mass (g)\"] : format(datum[\"min_Body Mass (g)\"], \"\")}"
},
"xc": {"scale": "x", "field": "mid_box_Body Mass (g)"},
"yc": {"signal": "height", "mult": 0.5},
diff --git a/examples/compiled/boxplot_1D_invalid.vg.json b/examples/compiled/boxplot_1D_invalid.vg.json
index cdaf4a8f35..f1cdf78b1f 100644
--- a/examples/compiled/boxplot_1D_invalid.vg.json
+++ b/examples/compiled/boxplot_1D_invalid.vg.json
@@ -133,7 +133,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "x", "field": "a"},
"y": {"scale": "y", "field": "b"}
@@ -150,7 +150,7 @@
"update": {
"stroke": {"value": "black"},
"tooltip": {
- "signal": "{\"Upper Whisker of b\": format(datum[\"upper_whisker_b\"], \"\"), \"Lower Whisker of b\": format(datum[\"lower_whisker_b\"], \"\"), \"a\": format(datum[\"a\"], \"\")}"
+ "signal": "{\"Upper Whisker of b\": !isValid(datum[\"upper_whisker_b\"]) || !isFinite(+datum[\"upper_whisker_b\"]) ? \"\" + datum[\"upper_whisker_b\"] : format(datum[\"upper_whisker_b\"], \"\"), \"Lower Whisker of b\": !isValid(datum[\"lower_whisker_b\"]) || !isFinite(+datum[\"lower_whisker_b\"]) ? \"\" + datum[\"lower_whisker_b\"] : format(datum[\"lower_whisker_b\"], \"\"), \"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")}"
},
"x": {"scale": "x", "field": "a"},
"y": {"scale": "y", "field": "lower_whisker_b"},
@@ -168,7 +168,7 @@
"update": {
"stroke": {"value": "black"},
"tooltip": {
- "signal": "{\"Upper Whisker of b\": format(datum[\"upper_whisker_b\"], \"\"), \"Lower Whisker of b\": format(datum[\"lower_whisker_b\"], \"\"), \"a\": format(datum[\"a\"], \"\")}"
+ "signal": "{\"Upper Whisker of b\": !isValid(datum[\"upper_whisker_b\"]) || !isFinite(+datum[\"upper_whisker_b\"]) ? \"\" + datum[\"upper_whisker_b\"] : format(datum[\"upper_whisker_b\"], \"\"), \"Lower Whisker of b\": !isValid(datum[\"lower_whisker_b\"]) || !isFinite(+datum[\"lower_whisker_b\"]) ? \"\" + datum[\"lower_whisker_b\"] : format(datum[\"lower_whisker_b\"], \"\"), \"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")}"
},
"x": {"scale": "x", "field": "a"},
"y": {"scale": "y", "field": "upper_box_b"},
@@ -186,10 +186,10 @@
"ariaRoleDescription": {"value": "box"},
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"Max of b\": format(datum[\"max_b\"], \"\"), \"Q3 of b\": format(datum[\"upper_box_b\"], \"\"), \"Median of b\": format(datum[\"mid_box_b\"], \"\"), \"Q1 of b\": format(datum[\"lower_box_b\"], \"\"), \"Min of b\": format(datum[\"min_b\"], \"\"), \"a\": format(datum[\"a\"], \"\")}"
+ "signal": "{\"Max of b\": !isValid(datum[\"max_b\"]) || !isFinite(+datum[\"max_b\"]) ? \"\" + datum[\"max_b\"] : format(datum[\"max_b\"], \"\"), \"Q3 of b\": !isValid(datum[\"upper_box_b\"]) || !isFinite(+datum[\"upper_box_b\"]) ? \"\" + datum[\"upper_box_b\"] : format(datum[\"upper_box_b\"], \"\"), \"Median of b\": !isValid(datum[\"mid_box_b\"]) || !isFinite(+datum[\"mid_box_b\"]) ? \"\" + datum[\"mid_box_b\"] : format(datum[\"mid_box_b\"], \"\"), \"Q1 of b\": !isValid(datum[\"lower_box_b\"]) || !isFinite(+datum[\"lower_box_b\"]) ? \"\" + datum[\"lower_box_b\"] : format(datum[\"lower_box_b\"], \"\"), \"Min of b\": !isValid(datum[\"min_b\"]) || !isFinite(+datum[\"min_b\"]) ? \"\" + datum[\"min_b\"] : format(datum[\"min_b\"], \"\"), \"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")}"
},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"lower_box_b\"], \"\")) + \"; upper_box_b: \" + (format(datum[\"upper_box_b\"], \"\")) + \"; Max of b: \" + (format(datum[\"max_b\"], \"\")) + \"; Q3 of b: \" + (format(datum[\"upper_box_b\"], \"\")) + \"; Median of b: \" + (format(datum[\"mid_box_b\"], \"\")) + \"; Q1 of b: \" + (format(datum[\"lower_box_b\"], \"\")) + \"; Min of b: \" + (format(datum[\"min_b\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"lower_box_b\"]) || !isFinite(+datum[\"lower_box_b\"]) ? \"\" + datum[\"lower_box_b\"] : format(datum[\"lower_box_b\"], \"\")) + \"; upper_box_b: \" + (!isValid(datum[\"upper_box_b\"]) || !isFinite(+datum[\"upper_box_b\"]) ? \"\" + datum[\"upper_box_b\"] : format(datum[\"upper_box_b\"], \"\")) + \"; Max of b: \" + (!isValid(datum[\"max_b\"]) || !isFinite(+datum[\"max_b\"]) ? \"\" + datum[\"max_b\"] : format(datum[\"max_b\"], \"\")) + \"; Q3 of b: \" + (!isValid(datum[\"upper_box_b\"]) || !isFinite(+datum[\"upper_box_b\"]) ? \"\" + datum[\"upper_box_b\"] : format(datum[\"upper_box_b\"], \"\")) + \"; Median of b: \" + (!isValid(datum[\"mid_box_b\"]) || !isFinite(+datum[\"mid_box_b\"]) ? \"\" + datum[\"mid_box_b\"] : format(datum[\"mid_box_b\"], \"\")) + \"; Q1 of b: \" + (!isValid(datum[\"lower_box_b\"]) || !isFinite(+datum[\"lower_box_b\"]) ? \"\" + datum[\"lower_box_b\"] : format(datum[\"lower_box_b\"], \"\")) + \"; Min of b: \" + (!isValid(datum[\"min_b\"]) || !isFinite(+datum[\"min_b\"]) ? \"\" + datum[\"min_b\"] : format(datum[\"min_b\"], \"\"))"
},
"xc": {"scale": "x", "field": "a"},
"width": {"value": 14},
@@ -215,7 +215,7 @@
{"value": "white"}
],
"tooltip": {
- "signal": "{\"Max of b\": format(datum[\"max_b\"], \"\"), \"Q3 of b\": format(datum[\"upper_box_b\"], \"\"), \"Median of b\": format(datum[\"mid_box_b\"], \"\"), \"Q1 of b\": format(datum[\"lower_box_b\"], \"\"), \"Min of b\": format(datum[\"min_b\"], \"\"), \"a\": format(datum[\"a\"], \"\")}"
+ "signal": "{\"Max of b\": !isValid(datum[\"max_b\"]) || !isFinite(+datum[\"max_b\"]) ? \"\" + datum[\"max_b\"] : format(datum[\"max_b\"], \"\"), \"Q3 of b\": !isValid(datum[\"upper_box_b\"]) || !isFinite(+datum[\"upper_box_b\"]) ? \"\" + datum[\"upper_box_b\"] : format(datum[\"upper_box_b\"], \"\"), \"Median of b\": !isValid(datum[\"mid_box_b\"]) || !isFinite(+datum[\"mid_box_b\"]) ? \"\" + datum[\"mid_box_b\"] : format(datum[\"mid_box_b\"], \"\"), \"Q1 of b\": !isValid(datum[\"lower_box_b\"]) || !isFinite(+datum[\"lower_box_b\"]) ? \"\" + datum[\"lower_box_b\"] : format(datum[\"lower_box_b\"], \"\"), \"Min of b\": !isValid(datum[\"min_b\"]) || !isFinite(+datum[\"min_b\"]) ? \"\" + datum[\"min_b\"] : format(datum[\"min_b\"], \"\"), \"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")}"
},
"xc": {"scale": "x", "field": "a"},
"yc": {"scale": "y", "field": "mid_box_b"},
diff --git a/examples/compiled/boxplot_1D_vertical.vg.json b/examples/compiled/boxplot_1D_vertical.vg.json
index 4e5ceedd6f..ee31d07ba1 100644
--- a/examples/compiled/boxplot_1D_vertical.vg.json
+++ b/examples/compiled/boxplot_1D_vertical.vg.json
@@ -145,7 +145,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Body Mass (g): \" + (format(datum[\"Body Mass (g)\"], \"\"))"
+ "signal": "\"Body Mass (g): \" + (!isValid(datum[\"Body Mass (g)\"]) || !isFinite(+datum[\"Body Mass (g)\"]) ? \"\" + datum[\"Body Mass (g)\"] : format(datum[\"Body Mass (g)\"], \"\"))"
},
"x": {"signal": "width", "mult": 0.5},
"y": {"scale": "y", "field": "Body Mass (g)"}
@@ -162,7 +162,7 @@
"update": {
"stroke": {"value": "black"},
"tooltip": {
- "signal": "{\"Upper Whisker of Body Mass (g)\": format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Lower Whisker of Body Mass (g)\": format(datum[\"lower_whisker_Body Mass (g)\"], \"\")}"
+ "signal": "{\"Upper Whisker of Body Mass (g)\": !isValid(datum[\"upper_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"upper_whisker_Body Mass (g)\"]) ? \"\" + datum[\"upper_whisker_Body Mass (g)\"] : format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Lower Whisker of Body Mass (g)\": !isValid(datum[\"lower_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"lower_whisker_Body Mass (g)\"]) ? \"\" + datum[\"lower_whisker_Body Mass (g)\"] : format(datum[\"lower_whisker_Body Mass (g)\"], \"\")}"
},
"x": {"signal": "width", "mult": 0.5},
"y": {"scale": "y", "field": "lower_whisker_Body Mass (g)"},
@@ -180,7 +180,7 @@
"update": {
"stroke": {"value": "black"},
"tooltip": {
- "signal": "{\"Upper Whisker of Body Mass (g)\": format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Lower Whisker of Body Mass (g)\": format(datum[\"lower_whisker_Body Mass (g)\"], \"\")}"
+ "signal": "{\"Upper Whisker of Body Mass (g)\": !isValid(datum[\"upper_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"upper_whisker_Body Mass (g)\"]) ? \"\" + datum[\"upper_whisker_Body Mass (g)\"] : format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Lower Whisker of Body Mass (g)\": !isValid(datum[\"lower_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"lower_whisker_Body Mass (g)\"]) ? \"\" + datum[\"lower_whisker_Body Mass (g)\"] : format(datum[\"lower_whisker_Body Mass (g)\"], \"\")}"
},
"x": {"signal": "width", "mult": 0.5},
"y": {"scale": "y", "field": "upper_box_Body Mass (g)"},
@@ -198,10 +198,10 @@
"ariaRoleDescription": {"value": "box"},
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"Max of Body Mass (g)\": format(datum[\"max_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": format(datum[\"min_Body Mass (g)\"], \"\")}"
+ "signal": "{\"Max of Body Mass (g)\": !isValid(datum[\"max_Body Mass (g)\"]) || !isFinite(+datum[\"max_Body Mass (g)\"]) ? \"\" + datum[\"max_Body Mass (g)\"] : format(datum[\"max_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": !isValid(datum[\"upper_box_Body Mass (g)\"]) || !isFinite(+datum[\"upper_box_Body Mass (g)\"]) ? \"\" + datum[\"upper_box_Body Mass (g)\"] : format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": !isValid(datum[\"mid_box_Body Mass (g)\"]) || !isFinite(+datum[\"mid_box_Body Mass (g)\"]) ? \"\" + datum[\"mid_box_Body Mass (g)\"] : format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": !isValid(datum[\"lower_box_Body Mass (g)\"]) || !isFinite(+datum[\"lower_box_Body Mass (g)\"]) ? \"\" + datum[\"lower_box_Body Mass (g)\"] : format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": !isValid(datum[\"min_Body Mass (g)\"]) || !isFinite(+datum[\"min_Body Mass (g)\"]) ? \"\" + datum[\"min_Body Mass (g)\"] : format(datum[\"min_Body Mass (g)\"], \"\")}"
},
"description": {
- "signal": "\"Body Mass (g): \" + (format(datum[\"lower_box_Body Mass (g)\"], \"\")) + \"; upper_box_Body Mass (g): \" + (format(datum[\"upper_box_Body Mass (g)\"], \"\")) + \"; Max of Body Mass (g): \" + (format(datum[\"max_Body Mass (g)\"], \"\")) + \"; Q3 of Body Mass (g): \" + (format(datum[\"upper_box_Body Mass (g)\"], \"\")) + \"; Median of Body Mass (g): \" + (format(datum[\"mid_box_Body Mass (g)\"], \"\")) + \"; Q1 of Body Mass (g): \" + (format(datum[\"lower_box_Body Mass (g)\"], \"\")) + \"; Min of Body Mass (g): \" + (format(datum[\"min_Body Mass (g)\"], \"\"))"
+ "signal": "\"Body Mass (g): \" + (!isValid(datum[\"lower_box_Body Mass (g)\"]) || !isFinite(+datum[\"lower_box_Body Mass (g)\"]) ? \"\" + datum[\"lower_box_Body Mass (g)\"] : format(datum[\"lower_box_Body Mass (g)\"], \"\")) + \"; upper_box_Body Mass (g): \" + (!isValid(datum[\"upper_box_Body Mass (g)\"]) || !isFinite(+datum[\"upper_box_Body Mass (g)\"]) ? \"\" + datum[\"upper_box_Body Mass (g)\"] : format(datum[\"upper_box_Body Mass (g)\"], \"\")) + \"; Max of Body Mass (g): \" + (!isValid(datum[\"max_Body Mass (g)\"]) || !isFinite(+datum[\"max_Body Mass (g)\"]) ? \"\" + datum[\"max_Body Mass (g)\"] : format(datum[\"max_Body Mass (g)\"], \"\")) + \"; Q3 of Body Mass (g): \" + (!isValid(datum[\"upper_box_Body Mass (g)\"]) || !isFinite(+datum[\"upper_box_Body Mass (g)\"]) ? \"\" + datum[\"upper_box_Body Mass (g)\"] : format(datum[\"upper_box_Body Mass (g)\"], \"\")) + \"; Median of Body Mass (g): \" + (!isValid(datum[\"mid_box_Body Mass (g)\"]) || !isFinite(+datum[\"mid_box_Body Mass (g)\"]) ? \"\" + datum[\"mid_box_Body Mass (g)\"] : format(datum[\"mid_box_Body Mass (g)\"], \"\")) + \"; Q1 of Body Mass (g): \" + (!isValid(datum[\"lower_box_Body Mass (g)\"]) || !isFinite(+datum[\"lower_box_Body Mass (g)\"]) ? \"\" + datum[\"lower_box_Body Mass (g)\"] : format(datum[\"lower_box_Body Mass (g)\"], \"\")) + \"; Min of Body Mass (g): \" + (!isValid(datum[\"min_Body Mass (g)\"]) || !isFinite(+datum[\"min_Body Mass (g)\"]) ? \"\" + datum[\"min_Body Mass (g)\"] : format(datum[\"min_Body Mass (g)\"], \"\"))"
},
"xc": {"signal": "width", "mult": 0.5},
"width": {"value": 14},
@@ -227,7 +227,7 @@
{"value": "white"}
],
"tooltip": {
- "signal": "{\"Max of Body Mass (g)\": format(datum[\"max_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": format(datum[\"min_Body Mass (g)\"], \"\")}"
+ "signal": "{\"Max of Body Mass (g)\": !isValid(datum[\"max_Body Mass (g)\"]) || !isFinite(+datum[\"max_Body Mass (g)\"]) ? \"\" + datum[\"max_Body Mass (g)\"] : format(datum[\"max_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": !isValid(datum[\"upper_box_Body Mass (g)\"]) || !isFinite(+datum[\"upper_box_Body Mass (g)\"]) ? \"\" + datum[\"upper_box_Body Mass (g)\"] : format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": !isValid(datum[\"mid_box_Body Mass (g)\"]) || !isFinite(+datum[\"mid_box_Body Mass (g)\"]) ? \"\" + datum[\"mid_box_Body Mass (g)\"] : format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": !isValid(datum[\"lower_box_Body Mass (g)\"]) || !isFinite(+datum[\"lower_box_Body Mass (g)\"]) ? \"\" + datum[\"lower_box_Body Mass (g)\"] : format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": !isValid(datum[\"min_Body Mass (g)\"]) || !isFinite(+datum[\"min_Body Mass (g)\"]) ? \"\" + datum[\"min_Body Mass (g)\"] : format(datum[\"min_Body Mass (g)\"], \"\")}"
},
"xc": {"signal": "width", "mult": 0.5},
"yc": {"scale": "y", "field": "mid_box_Body Mass (g)"},
diff --git a/examples/compiled/boxplot_2D_horizontal.vg.json b/examples/compiled/boxplot_2D_horizontal.vg.json
index 5ae134dabb..ad21d5fb67 100644
--- a/examples/compiled/boxplot_2D_horizontal.vg.json
+++ b/examples/compiled/boxplot_2D_horizontal.vg.json
@@ -148,7 +148,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Body Mass (g): \" + (format(datum[\"Body Mass (g)\"], \"\")) + \"; Species: \" + (isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"])"
+ "signal": "\"Body Mass (g): \" + (!isValid(datum[\"Body Mass (g)\"]) || !isFinite(+datum[\"Body Mass (g)\"]) ? \"\" + datum[\"Body Mass (g)\"] : format(datum[\"Body Mass (g)\"], \"\")) + \"; Species: \" + (\"\" + datum[\"Species\"])"
},
"x": {"scale": "x", "field": "Body Mass (g)"},
"y": {"scale": "y", "field": "Species", "band": 0.5}
@@ -165,7 +165,7 @@
"update": {
"stroke": {"value": "black"},
"tooltip": {
- "signal": "{\"Upper Whisker of Body Mass (g)\": format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Lower Whisker of Body Mass (g)\": format(datum[\"lower_whisker_Body Mass (g)\"], \"\"), \"Species\": isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"]}"
+ "signal": "{\"Upper Whisker of Body Mass (g)\": !isValid(datum[\"upper_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"upper_whisker_Body Mass (g)\"]) ? \"\" + datum[\"upper_whisker_Body Mass (g)\"] : format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Lower Whisker of Body Mass (g)\": !isValid(datum[\"lower_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"lower_whisker_Body Mass (g)\"]) ? \"\" + datum[\"lower_whisker_Body Mass (g)\"] : format(datum[\"lower_whisker_Body Mass (g)\"], \"\"), \"Species\": \"\" + datum[\"Species\"]}"
},
"x": {"scale": "x", "field": "lower_whisker_Body Mass (g)"},
"x2": {"scale": "x", "field": "lower_box_Body Mass (g)"},
@@ -183,7 +183,7 @@
"update": {
"stroke": {"value": "black"},
"tooltip": {
- "signal": "{\"Upper Whisker of Body Mass (g)\": format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Lower Whisker of Body Mass (g)\": format(datum[\"lower_whisker_Body Mass (g)\"], \"\"), \"Species\": isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"]}"
+ "signal": "{\"Upper Whisker of Body Mass (g)\": !isValid(datum[\"upper_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"upper_whisker_Body Mass (g)\"]) ? \"\" + datum[\"upper_whisker_Body Mass (g)\"] : format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Lower Whisker of Body Mass (g)\": !isValid(datum[\"lower_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"lower_whisker_Body Mass (g)\"]) ? \"\" + datum[\"lower_whisker_Body Mass (g)\"] : format(datum[\"lower_whisker_Body Mass (g)\"], \"\"), \"Species\": \"\" + datum[\"Species\"]}"
},
"x": {"scale": "x", "field": "upper_box_Body Mass (g)"},
"x2": {"scale": "x", "field": "upper_whisker_Body Mass (g)"},
@@ -201,10 +201,10 @@
"ariaRoleDescription": {"value": "box"},
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"Max of Body Mass (g)\": format(datum[\"max_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": format(datum[\"min_Body Mass (g)\"], \"\"), \"Species\": isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"]}"
+ "signal": "{\"Max of Body Mass (g)\": !isValid(datum[\"max_Body Mass (g)\"]) || !isFinite(+datum[\"max_Body Mass (g)\"]) ? \"\" + datum[\"max_Body Mass (g)\"] : format(datum[\"max_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": !isValid(datum[\"upper_box_Body Mass (g)\"]) || !isFinite(+datum[\"upper_box_Body Mass (g)\"]) ? \"\" + datum[\"upper_box_Body Mass (g)\"] : format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": !isValid(datum[\"mid_box_Body Mass (g)\"]) || !isFinite(+datum[\"mid_box_Body Mass (g)\"]) ? \"\" + datum[\"mid_box_Body Mass (g)\"] : format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": !isValid(datum[\"lower_box_Body Mass (g)\"]) || !isFinite(+datum[\"lower_box_Body Mass (g)\"]) ? \"\" + datum[\"lower_box_Body Mass (g)\"] : format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": !isValid(datum[\"min_Body Mass (g)\"]) || !isFinite(+datum[\"min_Body Mass (g)\"]) ? \"\" + datum[\"min_Body Mass (g)\"] : format(datum[\"min_Body Mass (g)\"], \"\"), \"Species\": \"\" + datum[\"Species\"]}"
},
"description": {
- "signal": "\"Body Mass (g): \" + (format(datum[\"lower_box_Body Mass (g)\"], \"\")) + \"; Species: \" + (isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"]) + \"; upper_box_Body Mass (g): \" + (format(datum[\"upper_box_Body Mass (g)\"], \"\")) + \"; Max of Body Mass (g): \" + (format(datum[\"max_Body Mass (g)\"], \"\")) + \"; Q3 of Body Mass (g): \" + (format(datum[\"upper_box_Body Mass (g)\"], \"\")) + \"; Median of Body Mass (g): \" + (format(datum[\"mid_box_Body Mass (g)\"], \"\")) + \"; Q1 of Body Mass (g): \" + (format(datum[\"lower_box_Body Mass (g)\"], \"\")) + \"; Min of Body Mass (g): \" + (format(datum[\"min_Body Mass (g)\"], \"\"))"
+ "signal": "\"Body Mass (g): \" + (!isValid(datum[\"lower_box_Body Mass (g)\"]) || !isFinite(+datum[\"lower_box_Body Mass (g)\"]) ? \"\" + datum[\"lower_box_Body Mass (g)\"] : format(datum[\"lower_box_Body Mass (g)\"], \"\")) + \"; Species: \" + (\"\" + datum[\"Species\"]) + \"; upper_box_Body Mass (g): \" + (!isValid(datum[\"upper_box_Body Mass (g)\"]) || !isFinite(+datum[\"upper_box_Body Mass (g)\"]) ? \"\" + datum[\"upper_box_Body Mass (g)\"] : format(datum[\"upper_box_Body Mass (g)\"], \"\")) + \"; Max of Body Mass (g): \" + (!isValid(datum[\"max_Body Mass (g)\"]) || !isFinite(+datum[\"max_Body Mass (g)\"]) ? \"\" + datum[\"max_Body Mass (g)\"] : format(datum[\"max_Body Mass (g)\"], \"\")) + \"; Q3 of Body Mass (g): \" + (!isValid(datum[\"upper_box_Body Mass (g)\"]) || !isFinite(+datum[\"upper_box_Body Mass (g)\"]) ? \"\" + datum[\"upper_box_Body Mass (g)\"] : format(datum[\"upper_box_Body Mass (g)\"], \"\")) + \"; Median of Body Mass (g): \" + (!isValid(datum[\"mid_box_Body Mass (g)\"]) || !isFinite(+datum[\"mid_box_Body Mass (g)\"]) ? \"\" + datum[\"mid_box_Body Mass (g)\"] : format(datum[\"mid_box_Body Mass (g)\"], \"\")) + \"; Q1 of Body Mass (g): \" + (!isValid(datum[\"lower_box_Body Mass (g)\"]) || !isFinite(+datum[\"lower_box_Body Mass (g)\"]) ? \"\" + datum[\"lower_box_Body Mass (g)\"] : format(datum[\"lower_box_Body Mass (g)\"], \"\")) + \"; Min of Body Mass (g): \" + (!isValid(datum[\"min_Body Mass (g)\"]) || !isFinite(+datum[\"min_Body Mass (g)\"]) ? \"\" + datum[\"min_Body Mass (g)\"] : format(datum[\"min_Body Mass (g)\"], \"\"))"
},
"x": {"scale": "x", "field": "lower_box_Body Mass (g)"},
"x2": {"scale": "x", "field": "upper_box_Body Mass (g)"},
@@ -230,7 +230,7 @@
{"value": "white"}
],
"tooltip": {
- "signal": "{\"Max of Body Mass (g)\": format(datum[\"max_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": format(datum[\"min_Body Mass (g)\"], \"\"), \"Species\": isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"]}"
+ "signal": "{\"Max of Body Mass (g)\": !isValid(datum[\"max_Body Mass (g)\"]) || !isFinite(+datum[\"max_Body Mass (g)\"]) ? \"\" + datum[\"max_Body Mass (g)\"] : format(datum[\"max_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": !isValid(datum[\"upper_box_Body Mass (g)\"]) || !isFinite(+datum[\"upper_box_Body Mass (g)\"]) ? \"\" + datum[\"upper_box_Body Mass (g)\"] : format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": !isValid(datum[\"mid_box_Body Mass (g)\"]) || !isFinite(+datum[\"mid_box_Body Mass (g)\"]) ? \"\" + datum[\"mid_box_Body Mass (g)\"] : format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": !isValid(datum[\"lower_box_Body Mass (g)\"]) || !isFinite(+datum[\"lower_box_Body Mass (g)\"]) ? \"\" + datum[\"lower_box_Body Mass (g)\"] : format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": !isValid(datum[\"min_Body Mass (g)\"]) || !isFinite(+datum[\"min_Body Mass (g)\"]) ? \"\" + datum[\"min_Body Mass (g)\"] : format(datum[\"min_Body Mass (g)\"], \"\"), \"Species\": \"\" + datum[\"Species\"]}"
},
"xc": {"scale": "x", "field": "mid_box_Body Mass (g)"},
"yc": {"scale": "y", "field": "Species", "band": 0.5},
diff --git a/examples/compiled/boxplot_2D_horizontal_color_size.vg.json b/examples/compiled/boxplot_2D_horizontal_color_size.vg.json
index 8bc85b5725..f1f2789128 100644
--- a/examples/compiled/boxplot_2D_horizontal_color_size.vg.json
+++ b/examples/compiled/boxplot_2D_horizontal_color_size.vg.json
@@ -148,7 +148,7 @@
"stroke": {"value": "teal"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Body Mass (g): \" + (format(datum[\"Body Mass (g)\"], \"\")) + \"; Species: \" + (isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"])"
+ "signal": "\"Body Mass (g): \" + (!isValid(datum[\"Body Mass (g)\"]) || !isFinite(+datum[\"Body Mass (g)\"]) ? \"\" + datum[\"Body Mass (g)\"] : format(datum[\"Body Mass (g)\"], \"\")) + \"; Species: \" + (\"\" + datum[\"Species\"])"
},
"x": {"scale": "x", "field": "Body Mass (g)"},
"y": {"scale": "y", "field": "Species", "band": 0.5}
@@ -165,7 +165,7 @@
"update": {
"stroke": {"value": "black"},
"tooltip": {
- "signal": "{\"Upper Whisker of Body Mass (g)\": format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Lower Whisker of Body Mass (g)\": format(datum[\"lower_whisker_Body Mass (g)\"], \"\"), \"Species\": isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"]}"
+ "signal": "{\"Upper Whisker of Body Mass (g)\": !isValid(datum[\"upper_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"upper_whisker_Body Mass (g)\"]) ? \"\" + datum[\"upper_whisker_Body Mass (g)\"] : format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Lower Whisker of Body Mass (g)\": !isValid(datum[\"lower_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"lower_whisker_Body Mass (g)\"]) ? \"\" + datum[\"lower_whisker_Body Mass (g)\"] : format(datum[\"lower_whisker_Body Mass (g)\"], \"\"), \"Species\": \"\" + datum[\"Species\"]}"
},
"x": {"scale": "x", "field": "lower_whisker_Body Mass (g)"},
"x2": {"scale": "x", "field": "lower_box_Body Mass (g)"},
@@ -183,7 +183,7 @@
"update": {
"stroke": {"value": "black"},
"tooltip": {
- "signal": "{\"Upper Whisker of Body Mass (g)\": format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Lower Whisker of Body Mass (g)\": format(datum[\"lower_whisker_Body Mass (g)\"], \"\"), \"Species\": isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"]}"
+ "signal": "{\"Upper Whisker of Body Mass (g)\": !isValid(datum[\"upper_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"upper_whisker_Body Mass (g)\"]) ? \"\" + datum[\"upper_whisker_Body Mass (g)\"] : format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Lower Whisker of Body Mass (g)\": !isValid(datum[\"lower_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"lower_whisker_Body Mass (g)\"]) ? \"\" + datum[\"lower_whisker_Body Mass (g)\"] : format(datum[\"lower_whisker_Body Mass (g)\"], \"\"), \"Species\": \"\" + datum[\"Species\"]}"
},
"x": {"scale": "x", "field": "upper_box_Body Mass (g)"},
"x2": {"scale": "x", "field": "upper_whisker_Body Mass (g)"},
@@ -201,10 +201,10 @@
"ariaRoleDescription": {"value": "box"},
"fill": {"value": "teal"},
"tooltip": {
- "signal": "{\"Max of Body Mass (g)\": format(datum[\"max_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": format(datum[\"min_Body Mass (g)\"], \"\"), \"Species\": isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"]}"
+ "signal": "{\"Max of Body Mass (g)\": !isValid(datum[\"max_Body Mass (g)\"]) || !isFinite(+datum[\"max_Body Mass (g)\"]) ? \"\" + datum[\"max_Body Mass (g)\"] : format(datum[\"max_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": !isValid(datum[\"upper_box_Body Mass (g)\"]) || !isFinite(+datum[\"upper_box_Body Mass (g)\"]) ? \"\" + datum[\"upper_box_Body Mass (g)\"] : format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": !isValid(datum[\"mid_box_Body Mass (g)\"]) || !isFinite(+datum[\"mid_box_Body Mass (g)\"]) ? \"\" + datum[\"mid_box_Body Mass (g)\"] : format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": !isValid(datum[\"lower_box_Body Mass (g)\"]) || !isFinite(+datum[\"lower_box_Body Mass (g)\"]) ? \"\" + datum[\"lower_box_Body Mass (g)\"] : format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": !isValid(datum[\"min_Body Mass (g)\"]) || !isFinite(+datum[\"min_Body Mass (g)\"]) ? \"\" + datum[\"min_Body Mass (g)\"] : format(datum[\"min_Body Mass (g)\"], \"\"), \"Species\": \"\" + datum[\"Species\"]}"
},
"description": {
- "signal": "\"Body Mass (g): \" + (format(datum[\"lower_box_Body Mass (g)\"], \"\")) + \"; Species: \" + (isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"]) + \"; upper_box_Body Mass (g): \" + (format(datum[\"upper_box_Body Mass (g)\"], \"\")) + \"; Max of Body Mass (g): \" + (format(datum[\"max_Body Mass (g)\"], \"\")) + \"; Q3 of Body Mass (g): \" + (format(datum[\"upper_box_Body Mass (g)\"], \"\")) + \"; Median of Body Mass (g): \" + (format(datum[\"mid_box_Body Mass (g)\"], \"\")) + \"; Q1 of Body Mass (g): \" + (format(datum[\"lower_box_Body Mass (g)\"], \"\")) + \"; Min of Body Mass (g): \" + (format(datum[\"min_Body Mass (g)\"], \"\"))"
+ "signal": "\"Body Mass (g): \" + (!isValid(datum[\"lower_box_Body Mass (g)\"]) || !isFinite(+datum[\"lower_box_Body Mass (g)\"]) ? \"\" + datum[\"lower_box_Body Mass (g)\"] : format(datum[\"lower_box_Body Mass (g)\"], \"\")) + \"; Species: \" + (\"\" + datum[\"Species\"]) + \"; upper_box_Body Mass (g): \" + (!isValid(datum[\"upper_box_Body Mass (g)\"]) || !isFinite(+datum[\"upper_box_Body Mass (g)\"]) ? \"\" + datum[\"upper_box_Body Mass (g)\"] : format(datum[\"upper_box_Body Mass (g)\"], \"\")) + \"; Max of Body Mass (g): \" + (!isValid(datum[\"max_Body Mass (g)\"]) || !isFinite(+datum[\"max_Body Mass (g)\"]) ? \"\" + datum[\"max_Body Mass (g)\"] : format(datum[\"max_Body Mass (g)\"], \"\")) + \"; Q3 of Body Mass (g): \" + (!isValid(datum[\"upper_box_Body Mass (g)\"]) || !isFinite(+datum[\"upper_box_Body Mass (g)\"]) ? \"\" + datum[\"upper_box_Body Mass (g)\"] : format(datum[\"upper_box_Body Mass (g)\"], \"\")) + \"; Median of Body Mass (g): \" + (!isValid(datum[\"mid_box_Body Mass (g)\"]) || !isFinite(+datum[\"mid_box_Body Mass (g)\"]) ? \"\" + datum[\"mid_box_Body Mass (g)\"] : format(datum[\"mid_box_Body Mass (g)\"], \"\")) + \"; Q1 of Body Mass (g): \" + (!isValid(datum[\"lower_box_Body Mass (g)\"]) || !isFinite(+datum[\"lower_box_Body Mass (g)\"]) ? \"\" + datum[\"lower_box_Body Mass (g)\"] : format(datum[\"lower_box_Body Mass (g)\"], \"\")) + \"; Min of Body Mass (g): \" + (!isValid(datum[\"min_Body Mass (g)\"]) || !isFinite(+datum[\"min_Body Mass (g)\"]) ? \"\" + datum[\"min_Body Mass (g)\"] : format(datum[\"min_Body Mass (g)\"], \"\"))"
},
"x": {"scale": "x", "field": "lower_box_Body Mass (g)"},
"x2": {"scale": "x", "field": "upper_box_Body Mass (g)"},
@@ -230,7 +230,7 @@
{"value": "white"}
],
"tooltip": {
- "signal": "{\"Max of Body Mass (g)\": format(datum[\"max_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": format(datum[\"min_Body Mass (g)\"], \"\"), \"Species\": isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"]}"
+ "signal": "{\"Max of Body Mass (g)\": !isValid(datum[\"max_Body Mass (g)\"]) || !isFinite(+datum[\"max_Body Mass (g)\"]) ? \"\" + datum[\"max_Body Mass (g)\"] : format(datum[\"max_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": !isValid(datum[\"upper_box_Body Mass (g)\"]) || !isFinite(+datum[\"upper_box_Body Mass (g)\"]) ? \"\" + datum[\"upper_box_Body Mass (g)\"] : format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": !isValid(datum[\"mid_box_Body Mass (g)\"]) || !isFinite(+datum[\"mid_box_Body Mass (g)\"]) ? \"\" + datum[\"mid_box_Body Mass (g)\"] : format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": !isValid(datum[\"lower_box_Body Mass (g)\"]) || !isFinite(+datum[\"lower_box_Body Mass (g)\"]) ? \"\" + datum[\"lower_box_Body Mass (g)\"] : format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": !isValid(datum[\"min_Body Mass (g)\"]) || !isFinite(+datum[\"min_Body Mass (g)\"]) ? \"\" + datum[\"min_Body Mass (g)\"] : format(datum[\"min_Body Mass (g)\"], \"\"), \"Species\": \"\" + datum[\"Species\"]}"
},
"xc": {"scale": "x", "field": "mid_box_Body Mass (g)"},
"yc": {"scale": "y", "field": "Species", "band": 0.5},
diff --git a/examples/compiled/boxplot_2D_vertical.vg.json b/examples/compiled/boxplot_2D_vertical.vg.json
index 7dbbd0d072..163fbc3d3e 100644
--- a/examples/compiled/boxplot_2D_vertical.vg.json
+++ b/examples/compiled/boxplot_2D_vertical.vg.json
@@ -148,7 +148,7 @@
"stroke": {"scale": "color", "field": "Species"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Species: \" + (isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"]) + \"; Body Mass (g): \" + (format(datum[\"Body Mass (g)\"], \"\"))"
+ "signal": "\"Species: \" + (\"\" + datum[\"Species\"]) + \"; Body Mass (g): \" + (!isValid(datum[\"Body Mass (g)\"]) || !isFinite(+datum[\"Body Mass (g)\"]) ? \"\" + datum[\"Body Mass (g)\"] : format(datum[\"Body Mass (g)\"], \"\"))"
},
"x": {"scale": "x", "field": "Species", "band": 0.5},
"y": {"scale": "y", "field": "Body Mass (g)"}
@@ -165,7 +165,7 @@
"update": {
"stroke": {"value": "black"},
"tooltip": {
- "signal": "{\"Upper Whisker of Body Mass (g)\": format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Lower Whisker of Body Mass (g)\": format(datum[\"lower_whisker_Body Mass (g)\"], \"\"), \"Species\": isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"]}"
+ "signal": "{\"Upper Whisker of Body Mass (g)\": !isValid(datum[\"upper_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"upper_whisker_Body Mass (g)\"]) ? \"\" + datum[\"upper_whisker_Body Mass (g)\"] : format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Lower Whisker of Body Mass (g)\": !isValid(datum[\"lower_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"lower_whisker_Body Mass (g)\"]) ? \"\" + datum[\"lower_whisker_Body Mass (g)\"] : format(datum[\"lower_whisker_Body Mass (g)\"], \"\"), \"Species\": \"\" + datum[\"Species\"]}"
},
"x": {"scale": "x", "field": "Species", "band": 0.5},
"y": {"scale": "y", "field": "lower_whisker_Body Mass (g)"},
@@ -183,7 +183,7 @@
"update": {
"stroke": {"value": "black"},
"tooltip": {
- "signal": "{\"Upper Whisker of Body Mass (g)\": format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Lower Whisker of Body Mass (g)\": format(datum[\"lower_whisker_Body Mass (g)\"], \"\"), \"Species\": isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"]}"
+ "signal": "{\"Upper Whisker of Body Mass (g)\": !isValid(datum[\"upper_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"upper_whisker_Body Mass (g)\"]) ? \"\" + datum[\"upper_whisker_Body Mass (g)\"] : format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Lower Whisker of Body Mass (g)\": !isValid(datum[\"lower_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"lower_whisker_Body Mass (g)\"]) ? \"\" + datum[\"lower_whisker_Body Mass (g)\"] : format(datum[\"lower_whisker_Body Mass (g)\"], \"\"), \"Species\": \"\" + datum[\"Species\"]}"
},
"x": {"scale": "x", "field": "Species", "band": 0.5},
"y": {"scale": "y", "field": "upper_box_Body Mass (g)"},
@@ -201,10 +201,10 @@
"ariaRoleDescription": {"value": "box"},
"fill": {"scale": "color", "field": "Species"},
"tooltip": {
- "signal": "{\"Max of Body Mass (g)\": format(datum[\"max_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": format(datum[\"min_Body Mass (g)\"], \"\"), \"Species\": isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"]}"
+ "signal": "{\"Max of Body Mass (g)\": !isValid(datum[\"max_Body Mass (g)\"]) || !isFinite(+datum[\"max_Body Mass (g)\"]) ? \"\" + datum[\"max_Body Mass (g)\"] : format(datum[\"max_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": !isValid(datum[\"upper_box_Body Mass (g)\"]) || !isFinite(+datum[\"upper_box_Body Mass (g)\"]) ? \"\" + datum[\"upper_box_Body Mass (g)\"] : format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": !isValid(datum[\"mid_box_Body Mass (g)\"]) || !isFinite(+datum[\"mid_box_Body Mass (g)\"]) ? \"\" + datum[\"mid_box_Body Mass (g)\"] : format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": !isValid(datum[\"lower_box_Body Mass (g)\"]) || !isFinite(+datum[\"lower_box_Body Mass (g)\"]) ? \"\" + datum[\"lower_box_Body Mass (g)\"] : format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": !isValid(datum[\"min_Body Mass (g)\"]) || !isFinite(+datum[\"min_Body Mass (g)\"]) ? \"\" + datum[\"min_Body Mass (g)\"] : format(datum[\"min_Body Mass (g)\"], \"\"), \"Species\": \"\" + datum[\"Species\"]}"
},
"description": {
- "signal": "\"Species: \" + (isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"]) + \"; Body Mass (g): \" + (format(datum[\"lower_box_Body Mass (g)\"], \"\")) + \"; upper_box_Body Mass (g): \" + (format(datum[\"upper_box_Body Mass (g)\"], \"\")) + \"; Max of Body Mass (g): \" + (format(datum[\"max_Body Mass (g)\"], \"\")) + \"; Q3 of Body Mass (g): \" + (format(datum[\"upper_box_Body Mass (g)\"], \"\")) + \"; Median of Body Mass (g): \" + (format(datum[\"mid_box_Body Mass (g)\"], \"\")) + \"; Q1 of Body Mass (g): \" + (format(datum[\"lower_box_Body Mass (g)\"], \"\")) + \"; Min of Body Mass (g): \" + (format(datum[\"min_Body Mass (g)\"], \"\"))"
+ "signal": "\"Species: \" + (\"\" + datum[\"Species\"]) + \"; Body Mass (g): \" + (!isValid(datum[\"lower_box_Body Mass (g)\"]) || !isFinite(+datum[\"lower_box_Body Mass (g)\"]) ? \"\" + datum[\"lower_box_Body Mass (g)\"] : format(datum[\"lower_box_Body Mass (g)\"], \"\")) + \"; upper_box_Body Mass (g): \" + (!isValid(datum[\"upper_box_Body Mass (g)\"]) || !isFinite(+datum[\"upper_box_Body Mass (g)\"]) ? \"\" + datum[\"upper_box_Body Mass (g)\"] : format(datum[\"upper_box_Body Mass (g)\"], \"\")) + \"; Max of Body Mass (g): \" + (!isValid(datum[\"max_Body Mass (g)\"]) || !isFinite(+datum[\"max_Body Mass (g)\"]) ? \"\" + datum[\"max_Body Mass (g)\"] : format(datum[\"max_Body Mass (g)\"], \"\")) + \"; Q3 of Body Mass (g): \" + (!isValid(datum[\"upper_box_Body Mass (g)\"]) || !isFinite(+datum[\"upper_box_Body Mass (g)\"]) ? \"\" + datum[\"upper_box_Body Mass (g)\"] : format(datum[\"upper_box_Body Mass (g)\"], \"\")) + \"; Median of Body Mass (g): \" + (!isValid(datum[\"mid_box_Body Mass (g)\"]) || !isFinite(+datum[\"mid_box_Body Mass (g)\"]) ? \"\" + datum[\"mid_box_Body Mass (g)\"] : format(datum[\"mid_box_Body Mass (g)\"], \"\")) + \"; Q1 of Body Mass (g): \" + (!isValid(datum[\"lower_box_Body Mass (g)\"]) || !isFinite(+datum[\"lower_box_Body Mass (g)\"]) ? \"\" + datum[\"lower_box_Body Mass (g)\"] : format(datum[\"lower_box_Body Mass (g)\"], \"\")) + \"; Min of Body Mass (g): \" + (!isValid(datum[\"min_Body Mass (g)\"]) || !isFinite(+datum[\"min_Body Mass (g)\"]) ? \"\" + datum[\"min_Body Mass (g)\"] : format(datum[\"min_Body Mass (g)\"], \"\"))"
},
"xc": {"scale": "x", "field": "Species", "band": 0.5},
"width": {"value": 14},
@@ -231,7 +231,7 @@
{"value": "white"}
],
"tooltip": {
- "signal": "{\"Max of Body Mass (g)\": format(datum[\"max_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": format(datum[\"min_Body Mass (g)\"], \"\"), \"Species\": isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"]}"
+ "signal": "{\"Max of Body Mass (g)\": !isValid(datum[\"max_Body Mass (g)\"]) || !isFinite(+datum[\"max_Body Mass (g)\"]) ? \"\" + datum[\"max_Body Mass (g)\"] : format(datum[\"max_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": !isValid(datum[\"upper_box_Body Mass (g)\"]) || !isFinite(+datum[\"upper_box_Body Mass (g)\"]) ? \"\" + datum[\"upper_box_Body Mass (g)\"] : format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": !isValid(datum[\"mid_box_Body Mass (g)\"]) || !isFinite(+datum[\"mid_box_Body Mass (g)\"]) ? \"\" + datum[\"mid_box_Body Mass (g)\"] : format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": !isValid(datum[\"lower_box_Body Mass (g)\"]) || !isFinite(+datum[\"lower_box_Body Mass (g)\"]) ? \"\" + datum[\"lower_box_Body Mass (g)\"] : format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": !isValid(datum[\"min_Body Mass (g)\"]) || !isFinite(+datum[\"min_Body Mass (g)\"]) ? \"\" + datum[\"min_Body Mass (g)\"] : format(datum[\"min_Body Mass (g)\"], \"\"), \"Species\": \"\" + datum[\"Species\"]}"
},
"xc": {"scale": "x", "field": "Species", "band": 0.5},
"yc": {"scale": "y", "field": "mid_box_Body Mass (g)"},
diff --git a/examples/compiled/boxplot_2D_vertical_single_per_group.vg.json b/examples/compiled/boxplot_2D_vertical_single_per_group.vg.json
index 0ea2889ea3..e718f18155 100644
--- a/examples/compiled/boxplot_2D_vertical_single_per_group.vg.json
+++ b/examples/compiled/boxplot_2D_vertical_single_per_group.vg.json
@@ -130,7 +130,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "x", "field": "a", "band": 0.5},
"y": {"scale": "y", "field": "b"}
@@ -147,7 +147,7 @@
"update": {
"stroke": {"value": "black"},
"tooltip": {
- "signal": "{\"Upper Whisker of b\": format(datum[\"upper_whisker_b\"], \"\"), \"Lower Whisker of b\": format(datum[\"lower_whisker_b\"], \"\"), \"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]}"
+ "signal": "{\"Upper Whisker of b\": !isValid(datum[\"upper_whisker_b\"]) || !isFinite(+datum[\"upper_whisker_b\"]) ? \"\" + datum[\"upper_whisker_b\"] : format(datum[\"upper_whisker_b\"], \"\"), \"Lower Whisker of b\": !isValid(datum[\"lower_whisker_b\"]) || !isFinite(+datum[\"lower_whisker_b\"]) ? \"\" + datum[\"lower_whisker_b\"] : format(datum[\"lower_whisker_b\"], \"\"), \"a\": \"\" + datum[\"a\"]}"
},
"x": {"scale": "x", "field": "a", "band": 0.5},
"y": {"scale": "y", "field": "lower_whisker_b"},
@@ -165,7 +165,7 @@
"update": {
"stroke": {"value": "black"},
"tooltip": {
- "signal": "{\"Upper Whisker of b\": format(datum[\"upper_whisker_b\"], \"\"), \"Lower Whisker of b\": format(datum[\"lower_whisker_b\"], \"\"), \"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]}"
+ "signal": "{\"Upper Whisker of b\": !isValid(datum[\"upper_whisker_b\"]) || !isFinite(+datum[\"upper_whisker_b\"]) ? \"\" + datum[\"upper_whisker_b\"] : format(datum[\"upper_whisker_b\"], \"\"), \"Lower Whisker of b\": !isValid(datum[\"lower_whisker_b\"]) || !isFinite(+datum[\"lower_whisker_b\"]) ? \"\" + datum[\"lower_whisker_b\"] : format(datum[\"lower_whisker_b\"], \"\"), \"a\": \"\" + datum[\"a\"]}"
},
"x": {"scale": "x", "field": "a", "band": 0.5},
"y": {"scale": "y", "field": "upper_box_b"},
@@ -183,10 +183,10 @@
"ariaRoleDescription": {"value": "box"},
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"Max of b\": format(datum[\"max_b\"], \"\"), \"Q3 of b\": format(datum[\"upper_box_b\"], \"\"), \"Median of b\": format(datum[\"mid_box_b\"], \"\"), \"Q1 of b\": format(datum[\"lower_box_b\"], \"\"), \"Min of b\": format(datum[\"min_b\"], \"\"), \"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]}"
+ "signal": "{\"Max of b\": !isValid(datum[\"max_b\"]) || !isFinite(+datum[\"max_b\"]) ? \"\" + datum[\"max_b\"] : format(datum[\"max_b\"], \"\"), \"Q3 of b\": !isValid(datum[\"upper_box_b\"]) || !isFinite(+datum[\"upper_box_b\"]) ? \"\" + datum[\"upper_box_b\"] : format(datum[\"upper_box_b\"], \"\"), \"Median of b\": !isValid(datum[\"mid_box_b\"]) || !isFinite(+datum[\"mid_box_b\"]) ? \"\" + datum[\"mid_box_b\"] : format(datum[\"mid_box_b\"], \"\"), \"Q1 of b\": !isValid(datum[\"lower_box_b\"]) || !isFinite(+datum[\"lower_box_b\"]) ? \"\" + datum[\"lower_box_b\"] : format(datum[\"lower_box_b\"], \"\"), \"Min of b\": !isValid(datum[\"min_b\"]) || !isFinite(+datum[\"min_b\"]) ? \"\" + datum[\"min_b\"] : format(datum[\"min_b\"], \"\"), \"a\": \"\" + datum[\"a\"]}"
},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"lower_box_b\"], \"\")) + \"; upper_box_b: \" + (format(datum[\"upper_box_b\"], \"\")) + \"; Max of b: \" + (format(datum[\"max_b\"], \"\")) + \"; Q3 of b: \" + (format(datum[\"upper_box_b\"], \"\")) + \"; Median of b: \" + (format(datum[\"mid_box_b\"], \"\")) + \"; Q1 of b: \" + (format(datum[\"lower_box_b\"], \"\")) + \"; Min of b: \" + (format(datum[\"min_b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"lower_box_b\"]) || !isFinite(+datum[\"lower_box_b\"]) ? \"\" + datum[\"lower_box_b\"] : format(datum[\"lower_box_b\"], \"\")) + \"; upper_box_b: \" + (!isValid(datum[\"upper_box_b\"]) || !isFinite(+datum[\"upper_box_b\"]) ? \"\" + datum[\"upper_box_b\"] : format(datum[\"upper_box_b\"], \"\")) + \"; Max of b: \" + (!isValid(datum[\"max_b\"]) || !isFinite(+datum[\"max_b\"]) ? \"\" + datum[\"max_b\"] : format(datum[\"max_b\"], \"\")) + \"; Q3 of b: \" + (!isValid(datum[\"upper_box_b\"]) || !isFinite(+datum[\"upper_box_b\"]) ? \"\" + datum[\"upper_box_b\"] : format(datum[\"upper_box_b\"], \"\")) + \"; Median of b: \" + (!isValid(datum[\"mid_box_b\"]) || !isFinite(+datum[\"mid_box_b\"]) ? \"\" + datum[\"mid_box_b\"] : format(datum[\"mid_box_b\"], \"\")) + \"; Q1 of b: \" + (!isValid(datum[\"lower_box_b\"]) || !isFinite(+datum[\"lower_box_b\"]) ? \"\" + datum[\"lower_box_b\"] : format(datum[\"lower_box_b\"], \"\")) + \"; Min of b: \" + (!isValid(datum[\"min_b\"]) || !isFinite(+datum[\"min_b\"]) ? \"\" + datum[\"min_b\"] : format(datum[\"min_b\"], \"\"))"
},
"xc": {"scale": "x", "field": "a", "band": 0.5},
"width": {"value": 14},
@@ -212,7 +212,7 @@
{"value": "white"}
],
"tooltip": {
- "signal": "{\"Max of b\": format(datum[\"max_b\"], \"\"), \"Q3 of b\": format(datum[\"upper_box_b\"], \"\"), \"Median of b\": format(datum[\"mid_box_b\"], \"\"), \"Q1 of b\": format(datum[\"lower_box_b\"], \"\"), \"Min of b\": format(datum[\"min_b\"], \"\"), \"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]}"
+ "signal": "{\"Max of b\": !isValid(datum[\"max_b\"]) || !isFinite(+datum[\"max_b\"]) ? \"\" + datum[\"max_b\"] : format(datum[\"max_b\"], \"\"), \"Q3 of b\": !isValid(datum[\"upper_box_b\"]) || !isFinite(+datum[\"upper_box_b\"]) ? \"\" + datum[\"upper_box_b\"] : format(datum[\"upper_box_b\"], \"\"), \"Median of b\": !isValid(datum[\"mid_box_b\"]) || !isFinite(+datum[\"mid_box_b\"]) ? \"\" + datum[\"mid_box_b\"] : format(datum[\"mid_box_b\"], \"\"), \"Q1 of b\": !isValid(datum[\"lower_box_b\"]) || !isFinite(+datum[\"lower_box_b\"]) ? \"\" + datum[\"lower_box_b\"] : format(datum[\"lower_box_b\"], \"\"), \"Min of b\": !isValid(datum[\"min_b\"]) || !isFinite(+datum[\"min_b\"]) ? \"\" + datum[\"min_b\"] : format(datum[\"min_b\"], \"\"), \"a\": \"\" + datum[\"a\"]}"
},
"xc": {"scale": "x", "field": "a", "band": 0.5},
"yc": {"scale": "y", "field": "mid_box_b"},
diff --git a/examples/compiled/boxplot_2D_vertical_single_per_group_color.vg.json b/examples/compiled/boxplot_2D_vertical_single_per_group_color.vg.json
index d1313bdca4..aa3f8ad8b8 100644
--- a/examples/compiled/boxplot_2D_vertical_single_per_group_color.vg.json
+++ b/examples/compiled/boxplot_2D_vertical_single_per_group_color.vg.json
@@ -130,7 +130,7 @@
"stroke": {"scale": "color", "field": "a"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "x", "field": "a", "band": 0.5},
"y": {"scale": "y", "field": "b"}
@@ -147,7 +147,7 @@
"update": {
"stroke": {"value": "black"},
"tooltip": {
- "signal": "{\"Upper Whisker of b\": format(datum[\"upper_whisker_b\"], \"\"), \"Lower Whisker of b\": format(datum[\"lower_whisker_b\"], \"\"), \"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]}"
+ "signal": "{\"Upper Whisker of b\": !isValid(datum[\"upper_whisker_b\"]) || !isFinite(+datum[\"upper_whisker_b\"]) ? \"\" + datum[\"upper_whisker_b\"] : format(datum[\"upper_whisker_b\"], \"\"), \"Lower Whisker of b\": !isValid(datum[\"lower_whisker_b\"]) || !isFinite(+datum[\"lower_whisker_b\"]) ? \"\" + datum[\"lower_whisker_b\"] : format(datum[\"lower_whisker_b\"], \"\"), \"a\": \"\" + datum[\"a\"]}"
},
"x": {"scale": "x", "field": "a", "band": 0.5},
"y": {"scale": "y", "field": "lower_whisker_b"},
@@ -165,7 +165,7 @@
"update": {
"stroke": {"value": "black"},
"tooltip": {
- "signal": "{\"Upper Whisker of b\": format(datum[\"upper_whisker_b\"], \"\"), \"Lower Whisker of b\": format(datum[\"lower_whisker_b\"], \"\"), \"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]}"
+ "signal": "{\"Upper Whisker of b\": !isValid(datum[\"upper_whisker_b\"]) || !isFinite(+datum[\"upper_whisker_b\"]) ? \"\" + datum[\"upper_whisker_b\"] : format(datum[\"upper_whisker_b\"], \"\"), \"Lower Whisker of b\": !isValid(datum[\"lower_whisker_b\"]) || !isFinite(+datum[\"lower_whisker_b\"]) ? \"\" + datum[\"lower_whisker_b\"] : format(datum[\"lower_whisker_b\"], \"\"), \"a\": \"\" + datum[\"a\"]}"
},
"x": {"scale": "x", "field": "a", "band": 0.5},
"y": {"scale": "y", "field": "upper_box_b"},
@@ -183,10 +183,10 @@
"ariaRoleDescription": {"value": "box"},
"fill": {"scale": "color", "field": "a"},
"tooltip": {
- "signal": "{\"Max of b\": format(datum[\"max_b\"], \"\"), \"Q3 of b\": format(datum[\"upper_box_b\"], \"\"), \"Median of b\": format(datum[\"mid_box_b\"], \"\"), \"Q1 of b\": format(datum[\"lower_box_b\"], \"\"), \"Min of b\": format(datum[\"min_b\"], \"\"), \"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]}"
+ "signal": "{\"Max of b\": !isValid(datum[\"max_b\"]) || !isFinite(+datum[\"max_b\"]) ? \"\" + datum[\"max_b\"] : format(datum[\"max_b\"], \"\"), \"Q3 of b\": !isValid(datum[\"upper_box_b\"]) || !isFinite(+datum[\"upper_box_b\"]) ? \"\" + datum[\"upper_box_b\"] : format(datum[\"upper_box_b\"], \"\"), \"Median of b\": !isValid(datum[\"mid_box_b\"]) || !isFinite(+datum[\"mid_box_b\"]) ? \"\" + datum[\"mid_box_b\"] : format(datum[\"mid_box_b\"], \"\"), \"Q1 of b\": !isValid(datum[\"lower_box_b\"]) || !isFinite(+datum[\"lower_box_b\"]) ? \"\" + datum[\"lower_box_b\"] : format(datum[\"lower_box_b\"], \"\"), \"Min of b\": !isValid(datum[\"min_b\"]) || !isFinite(+datum[\"min_b\"]) ? \"\" + datum[\"min_b\"] : format(datum[\"min_b\"], \"\"), \"a\": \"\" + datum[\"a\"]}"
},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"lower_box_b\"], \"\")) + \"; upper_box_b: \" + (format(datum[\"upper_box_b\"], \"\")) + \"; Max of b: \" + (format(datum[\"max_b\"], \"\")) + \"; Q3 of b: \" + (format(datum[\"upper_box_b\"], \"\")) + \"; Median of b: \" + (format(datum[\"mid_box_b\"], \"\")) + \"; Q1 of b: \" + (format(datum[\"lower_box_b\"], \"\")) + \"; Min of b: \" + (format(datum[\"min_b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"lower_box_b\"]) || !isFinite(+datum[\"lower_box_b\"]) ? \"\" + datum[\"lower_box_b\"] : format(datum[\"lower_box_b\"], \"\")) + \"; upper_box_b: \" + (!isValid(datum[\"upper_box_b\"]) || !isFinite(+datum[\"upper_box_b\"]) ? \"\" + datum[\"upper_box_b\"] : format(datum[\"upper_box_b\"], \"\")) + \"; Max of b: \" + (!isValid(datum[\"max_b\"]) || !isFinite(+datum[\"max_b\"]) ? \"\" + datum[\"max_b\"] : format(datum[\"max_b\"], \"\")) + \"; Q3 of b: \" + (!isValid(datum[\"upper_box_b\"]) || !isFinite(+datum[\"upper_box_b\"]) ? \"\" + datum[\"upper_box_b\"] : format(datum[\"upper_box_b\"], \"\")) + \"; Median of b: \" + (!isValid(datum[\"mid_box_b\"]) || !isFinite(+datum[\"mid_box_b\"]) ? \"\" + datum[\"mid_box_b\"] : format(datum[\"mid_box_b\"], \"\")) + \"; Q1 of b: \" + (!isValid(datum[\"lower_box_b\"]) || !isFinite(+datum[\"lower_box_b\"]) ? \"\" + datum[\"lower_box_b\"] : format(datum[\"lower_box_b\"], \"\")) + \"; Min of b: \" + (!isValid(datum[\"min_b\"]) || !isFinite(+datum[\"min_b\"]) ? \"\" + datum[\"min_b\"] : format(datum[\"min_b\"], \"\"))"
},
"xc": {"scale": "x", "field": "a", "band": 0.5},
"width": {"value": 14},
@@ -213,7 +213,7 @@
{"value": "white"}
],
"tooltip": {
- "signal": "{\"Max of b\": format(datum[\"max_b\"], \"\"), \"Q3 of b\": format(datum[\"upper_box_b\"], \"\"), \"Median of b\": format(datum[\"mid_box_b\"], \"\"), \"Q1 of b\": format(datum[\"lower_box_b\"], \"\"), \"Min of b\": format(datum[\"min_b\"], \"\"), \"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]}"
+ "signal": "{\"Max of b\": !isValid(datum[\"max_b\"]) || !isFinite(+datum[\"max_b\"]) ? \"\" + datum[\"max_b\"] : format(datum[\"max_b\"], \"\"), \"Q3 of b\": !isValid(datum[\"upper_box_b\"]) || !isFinite(+datum[\"upper_box_b\"]) ? \"\" + datum[\"upper_box_b\"] : format(datum[\"upper_box_b\"], \"\"), \"Median of b\": !isValid(datum[\"mid_box_b\"]) || !isFinite(+datum[\"mid_box_b\"]) ? \"\" + datum[\"mid_box_b\"] : format(datum[\"mid_box_b\"], \"\"), \"Q1 of b\": !isValid(datum[\"lower_box_b\"]) || !isFinite(+datum[\"lower_box_b\"]) ? \"\" + datum[\"lower_box_b\"] : format(datum[\"lower_box_b\"], \"\"), \"Min of b\": !isValid(datum[\"min_b\"]) || !isFinite(+datum[\"min_b\"]) ? \"\" + datum[\"min_b\"] : format(datum[\"min_b\"], \"\"), \"a\": \"\" + datum[\"a\"]}"
},
"xc": {"scale": "x", "field": "a", "band": 0.5},
"yc": {"scale": "y", "field": "mid_box_b"},
diff --git a/examples/compiled/boxplot_groupped.vg.json b/examples/compiled/boxplot_groupped.vg.json
index 2b0b85159b..e5d7bfc33c 100644
--- a/examples/compiled/boxplot_groupped.vg.json
+++ b/examples/compiled/boxplot_groupped.vg.json
@@ -150,7 +150,7 @@
"stroke": {"scale": "color", "field": "Origin"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; Acceleration: \" + (format(datum[\"Acceleration\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Cylinders: \" + (\"\" + datum[\"Cylinders\"]) + \"; Acceleration: \" + (!isValid(datum[\"Acceleration\"]) || !isFinite(+datum[\"Acceleration\"]) ? \"\" + datum[\"Acceleration\"] : format(datum[\"Acceleration\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {
"scale": "x",
@@ -171,7 +171,7 @@
"update": {
"stroke": {"value": "black"},
"tooltip": {
- "signal": "{\"Upper Whisker of Acceleration\": format(datum[\"upper_whisker_Acceleration\"], \"\"), \"Lower Whisker of Acceleration\": format(datum[\"lower_whisker_Acceleration\"], \"\"), \"Cylinders\": isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"], \"Origin\": isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]}"
+ "signal": "{\"Upper Whisker of Acceleration\": !isValid(datum[\"upper_whisker_Acceleration\"]) || !isFinite(+datum[\"upper_whisker_Acceleration\"]) ? \"\" + datum[\"upper_whisker_Acceleration\"] : format(datum[\"upper_whisker_Acceleration\"], \"\"), \"Lower Whisker of Acceleration\": !isValid(datum[\"lower_whisker_Acceleration\"]) || !isFinite(+datum[\"lower_whisker_Acceleration\"]) ? \"\" + datum[\"lower_whisker_Acceleration\"] : format(datum[\"lower_whisker_Acceleration\"], \"\"), \"Cylinders\": \"\" + datum[\"Cylinders\"], \"Origin\": \"\" + datum[\"Origin\"]}"
},
"x": {
"scale": "x",
@@ -193,7 +193,7 @@
"update": {
"stroke": {"value": "black"},
"tooltip": {
- "signal": "{\"Upper Whisker of Acceleration\": format(datum[\"upper_whisker_Acceleration\"], \"\"), \"Lower Whisker of Acceleration\": format(datum[\"lower_whisker_Acceleration\"], \"\"), \"Cylinders\": isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"], \"Origin\": isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]}"
+ "signal": "{\"Upper Whisker of Acceleration\": !isValid(datum[\"upper_whisker_Acceleration\"]) || !isFinite(+datum[\"upper_whisker_Acceleration\"]) ? \"\" + datum[\"upper_whisker_Acceleration\"] : format(datum[\"upper_whisker_Acceleration\"], \"\"), \"Lower Whisker of Acceleration\": !isValid(datum[\"lower_whisker_Acceleration\"]) || !isFinite(+datum[\"lower_whisker_Acceleration\"]) ? \"\" + datum[\"lower_whisker_Acceleration\"] : format(datum[\"lower_whisker_Acceleration\"], \"\"), \"Cylinders\": \"\" + datum[\"Cylinders\"], \"Origin\": \"\" + datum[\"Origin\"]}"
},
"x": {
"scale": "x",
@@ -215,10 +215,10 @@
"ariaRoleDescription": {"value": "box"},
"fill": {"scale": "color", "field": "Origin"},
"tooltip": {
- "signal": "{\"Max of Acceleration\": format(datum[\"max_Acceleration\"], \"\"), \"Q3 of Acceleration\": format(datum[\"upper_box_Acceleration\"], \"\"), \"Median of Acceleration\": format(datum[\"mid_box_Acceleration\"], \"\"), \"Q1 of Acceleration\": format(datum[\"lower_box_Acceleration\"], \"\"), \"Min of Acceleration\": format(datum[\"min_Acceleration\"], \"\"), \"Cylinders\": isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"], \"Origin\": isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]}"
+ "signal": "{\"Max of Acceleration\": !isValid(datum[\"max_Acceleration\"]) || !isFinite(+datum[\"max_Acceleration\"]) ? \"\" + datum[\"max_Acceleration\"] : format(datum[\"max_Acceleration\"], \"\"), \"Q3 of Acceleration\": !isValid(datum[\"upper_box_Acceleration\"]) || !isFinite(+datum[\"upper_box_Acceleration\"]) ? \"\" + datum[\"upper_box_Acceleration\"] : format(datum[\"upper_box_Acceleration\"], \"\"), \"Median of Acceleration\": !isValid(datum[\"mid_box_Acceleration\"]) || !isFinite(+datum[\"mid_box_Acceleration\"]) ? \"\" + datum[\"mid_box_Acceleration\"] : format(datum[\"mid_box_Acceleration\"], \"\"), \"Q1 of Acceleration\": !isValid(datum[\"lower_box_Acceleration\"]) || !isFinite(+datum[\"lower_box_Acceleration\"]) ? \"\" + datum[\"lower_box_Acceleration\"] : format(datum[\"lower_box_Acceleration\"], \"\"), \"Min of Acceleration\": !isValid(datum[\"min_Acceleration\"]) || !isFinite(+datum[\"min_Acceleration\"]) ? \"\" + datum[\"min_Acceleration\"] : format(datum[\"min_Acceleration\"], \"\"), \"Cylinders\": \"\" + datum[\"Cylinders\"], \"Origin\": \"\" + datum[\"Origin\"]}"
},
"description": {
- "signal": "\"Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; Acceleration: \" + (format(datum[\"lower_box_Acceleration\"], \"\")) + \"; upper_box_Acceleration: \" + (format(datum[\"upper_box_Acceleration\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; Max of Acceleration: \" + (format(datum[\"max_Acceleration\"], \"\")) + \"; Q3 of Acceleration: \" + (format(datum[\"upper_box_Acceleration\"], \"\")) + \"; Median of Acceleration: \" + (format(datum[\"mid_box_Acceleration\"], \"\")) + \"; Q1 of Acceleration: \" + (format(datum[\"lower_box_Acceleration\"], \"\")) + \"; Min of Acceleration: \" + (format(datum[\"min_Acceleration\"], \"\"))"
+ "signal": "\"Cylinders: \" + (\"\" + datum[\"Cylinders\"]) + \"; Acceleration: \" + (!isValid(datum[\"lower_box_Acceleration\"]) || !isFinite(+datum[\"lower_box_Acceleration\"]) ? \"\" + datum[\"lower_box_Acceleration\"] : format(datum[\"lower_box_Acceleration\"], \"\")) + \"; upper_box_Acceleration: \" + (!isValid(datum[\"upper_box_Acceleration\"]) || !isFinite(+datum[\"upper_box_Acceleration\"]) ? \"\" + datum[\"upper_box_Acceleration\"] : format(datum[\"upper_box_Acceleration\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"]) + \"; Max of Acceleration: \" + (!isValid(datum[\"max_Acceleration\"]) || !isFinite(+datum[\"max_Acceleration\"]) ? \"\" + datum[\"max_Acceleration\"] : format(datum[\"max_Acceleration\"], \"\")) + \"; Q3 of Acceleration: \" + (!isValid(datum[\"upper_box_Acceleration\"]) || !isFinite(+datum[\"upper_box_Acceleration\"]) ? \"\" + datum[\"upper_box_Acceleration\"] : format(datum[\"upper_box_Acceleration\"], \"\")) + \"; Median of Acceleration: \" + (!isValid(datum[\"mid_box_Acceleration\"]) || !isFinite(+datum[\"mid_box_Acceleration\"]) ? \"\" + datum[\"mid_box_Acceleration\"] : format(datum[\"mid_box_Acceleration\"], \"\")) + \"; Q1 of Acceleration: \" + (!isValid(datum[\"lower_box_Acceleration\"]) || !isFinite(+datum[\"lower_box_Acceleration\"]) ? \"\" + datum[\"lower_box_Acceleration\"] : format(datum[\"lower_box_Acceleration\"], \"\")) + \"; Min of Acceleration: \" + (!isValid(datum[\"min_Acceleration\"]) || !isFinite(+datum[\"min_Acceleration\"]) ? \"\" + datum[\"min_Acceleration\"] : format(datum[\"min_Acceleration\"], \"\"))"
},
"xc": {
"scale": "x",
@@ -249,7 +249,7 @@
{"value": "white"}
],
"tooltip": {
- "signal": "{\"Max of Acceleration\": format(datum[\"max_Acceleration\"], \"\"), \"Q3 of Acceleration\": format(datum[\"upper_box_Acceleration\"], \"\"), \"Median of Acceleration\": format(datum[\"mid_box_Acceleration\"], \"\"), \"Q1 of Acceleration\": format(datum[\"lower_box_Acceleration\"], \"\"), \"Min of Acceleration\": format(datum[\"min_Acceleration\"], \"\"), \"Cylinders\": isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"], \"Origin\": isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]}"
+ "signal": "{\"Max of Acceleration\": !isValid(datum[\"max_Acceleration\"]) || !isFinite(+datum[\"max_Acceleration\"]) ? \"\" + datum[\"max_Acceleration\"] : format(datum[\"max_Acceleration\"], \"\"), \"Q3 of Acceleration\": !isValid(datum[\"upper_box_Acceleration\"]) || !isFinite(+datum[\"upper_box_Acceleration\"]) ? \"\" + datum[\"upper_box_Acceleration\"] : format(datum[\"upper_box_Acceleration\"], \"\"), \"Median of Acceleration\": !isValid(datum[\"mid_box_Acceleration\"]) || !isFinite(+datum[\"mid_box_Acceleration\"]) ? \"\" + datum[\"mid_box_Acceleration\"] : format(datum[\"mid_box_Acceleration\"], \"\"), \"Q1 of Acceleration\": !isValid(datum[\"lower_box_Acceleration\"]) || !isFinite(+datum[\"lower_box_Acceleration\"]) ? \"\" + datum[\"lower_box_Acceleration\"] : format(datum[\"lower_box_Acceleration\"], \"\"), \"Min of Acceleration\": !isValid(datum[\"min_Acceleration\"]) || !isFinite(+datum[\"min_Acceleration\"]) ? \"\" + datum[\"min_Acceleration\"] : format(datum[\"min_Acceleration\"], \"\"), \"Cylinders\": \"\" + datum[\"Cylinders\"], \"Origin\": \"\" + datum[\"Origin\"]}"
},
"xc": {
"scale": "x",
diff --git a/examples/compiled/boxplot_minmax_2D_horizontal.vg.json b/examples/compiled/boxplot_minmax_2D_horizontal.vg.json
index 1cfb790cf9..91289fcada 100644
--- a/examples/compiled/boxplot_minmax_2D_horizontal.vg.json
+++ b/examples/compiled/boxplot_minmax_2D_horizontal.vg.json
@@ -88,7 +88,7 @@
"update": {
"stroke": {"value": "black"},
"tooltip": {
- "signal": "{\"Max of Body Mass (g)\": format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": format(datum[\"lower_whisker_Body Mass (g)\"], \"\"), \"Species\": isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"]}"
+ "signal": "{\"Max of Body Mass (g)\": !isValid(datum[\"upper_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"upper_whisker_Body Mass (g)\"]) ? \"\" + datum[\"upper_whisker_Body Mass (g)\"] : format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": !isValid(datum[\"upper_box_Body Mass (g)\"]) || !isFinite(+datum[\"upper_box_Body Mass (g)\"]) ? \"\" + datum[\"upper_box_Body Mass (g)\"] : format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": !isValid(datum[\"mid_box_Body Mass (g)\"]) || !isFinite(+datum[\"mid_box_Body Mass (g)\"]) ? \"\" + datum[\"mid_box_Body Mass (g)\"] : format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": !isValid(datum[\"lower_box_Body Mass (g)\"]) || !isFinite(+datum[\"lower_box_Body Mass (g)\"]) ? \"\" + datum[\"lower_box_Body Mass (g)\"] : format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": !isValid(datum[\"lower_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"lower_whisker_Body Mass (g)\"]) ? \"\" + datum[\"lower_whisker_Body Mass (g)\"] : format(datum[\"lower_whisker_Body Mass (g)\"], \"\"), \"Species\": \"\" + datum[\"Species\"]}"
},
"x": {"scale": "x", "field": "lower_whisker_Body Mass (g)"},
"x2": {"scale": "x", "field": "lower_box_Body Mass (g)"},
@@ -106,7 +106,7 @@
"update": {
"stroke": {"value": "black"},
"tooltip": {
- "signal": "{\"Max of Body Mass (g)\": format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": format(datum[\"lower_whisker_Body Mass (g)\"], \"\"), \"Species\": isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"]}"
+ "signal": "{\"Max of Body Mass (g)\": !isValid(datum[\"upper_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"upper_whisker_Body Mass (g)\"]) ? \"\" + datum[\"upper_whisker_Body Mass (g)\"] : format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": !isValid(datum[\"upper_box_Body Mass (g)\"]) || !isFinite(+datum[\"upper_box_Body Mass (g)\"]) ? \"\" + datum[\"upper_box_Body Mass (g)\"] : format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": !isValid(datum[\"mid_box_Body Mass (g)\"]) || !isFinite(+datum[\"mid_box_Body Mass (g)\"]) ? \"\" + datum[\"mid_box_Body Mass (g)\"] : format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": !isValid(datum[\"lower_box_Body Mass (g)\"]) || !isFinite(+datum[\"lower_box_Body Mass (g)\"]) ? \"\" + datum[\"lower_box_Body Mass (g)\"] : format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": !isValid(datum[\"lower_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"lower_whisker_Body Mass (g)\"]) ? \"\" + datum[\"lower_whisker_Body Mass (g)\"] : format(datum[\"lower_whisker_Body Mass (g)\"], \"\"), \"Species\": \"\" + datum[\"Species\"]}"
},
"x": {"scale": "x", "field": "upper_box_Body Mass (g)"},
"x2": {"scale": "x", "field": "upper_whisker_Body Mass (g)"},
@@ -124,10 +124,10 @@
"ariaRoleDescription": {"value": "box"},
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"Max of Body Mass (g)\": format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": format(datum[\"lower_whisker_Body Mass (g)\"], \"\"), \"Species\": isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"]}"
+ "signal": "{\"Max of Body Mass (g)\": !isValid(datum[\"upper_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"upper_whisker_Body Mass (g)\"]) ? \"\" + datum[\"upper_whisker_Body Mass (g)\"] : format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": !isValid(datum[\"upper_box_Body Mass (g)\"]) || !isFinite(+datum[\"upper_box_Body Mass (g)\"]) ? \"\" + datum[\"upper_box_Body Mass (g)\"] : format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": !isValid(datum[\"mid_box_Body Mass (g)\"]) || !isFinite(+datum[\"mid_box_Body Mass (g)\"]) ? \"\" + datum[\"mid_box_Body Mass (g)\"] : format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": !isValid(datum[\"lower_box_Body Mass (g)\"]) || !isFinite(+datum[\"lower_box_Body Mass (g)\"]) ? \"\" + datum[\"lower_box_Body Mass (g)\"] : format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": !isValid(datum[\"lower_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"lower_whisker_Body Mass (g)\"]) ? \"\" + datum[\"lower_whisker_Body Mass (g)\"] : format(datum[\"lower_whisker_Body Mass (g)\"], \"\"), \"Species\": \"\" + datum[\"Species\"]}"
},
"description": {
- "signal": "\"Body Mass (g): \" + (format(datum[\"lower_box_Body Mass (g)\"], \"\")) + \"; Species: \" + (isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"]) + \"; upper_box_Body Mass (g): \" + (format(datum[\"upper_box_Body Mass (g)\"], \"\")) + \"; Max of Body Mass (g): \" + (format(datum[\"upper_whisker_Body Mass (g)\"], \"\")) + \"; Q3 of Body Mass (g): \" + (format(datum[\"upper_box_Body Mass (g)\"], \"\")) + \"; Median of Body Mass (g): \" + (format(datum[\"mid_box_Body Mass (g)\"], \"\")) + \"; Q1 of Body Mass (g): \" + (format(datum[\"lower_box_Body Mass (g)\"], \"\")) + \"; Min of Body Mass (g): \" + (format(datum[\"lower_whisker_Body Mass (g)\"], \"\"))"
+ "signal": "\"Body Mass (g): \" + (!isValid(datum[\"lower_box_Body Mass (g)\"]) || !isFinite(+datum[\"lower_box_Body Mass (g)\"]) ? \"\" + datum[\"lower_box_Body Mass (g)\"] : format(datum[\"lower_box_Body Mass (g)\"], \"\")) + \"; Species: \" + (\"\" + datum[\"Species\"]) + \"; upper_box_Body Mass (g): \" + (!isValid(datum[\"upper_box_Body Mass (g)\"]) || !isFinite(+datum[\"upper_box_Body Mass (g)\"]) ? \"\" + datum[\"upper_box_Body Mass (g)\"] : format(datum[\"upper_box_Body Mass (g)\"], \"\")) + \"; Max of Body Mass (g): \" + (!isValid(datum[\"upper_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"upper_whisker_Body Mass (g)\"]) ? \"\" + datum[\"upper_whisker_Body Mass (g)\"] : format(datum[\"upper_whisker_Body Mass (g)\"], \"\")) + \"; Q3 of Body Mass (g): \" + (!isValid(datum[\"upper_box_Body Mass (g)\"]) || !isFinite(+datum[\"upper_box_Body Mass (g)\"]) ? \"\" + datum[\"upper_box_Body Mass (g)\"] : format(datum[\"upper_box_Body Mass (g)\"], \"\")) + \"; Median of Body Mass (g): \" + (!isValid(datum[\"mid_box_Body Mass (g)\"]) || !isFinite(+datum[\"mid_box_Body Mass (g)\"]) ? \"\" + datum[\"mid_box_Body Mass (g)\"] : format(datum[\"mid_box_Body Mass (g)\"], \"\")) + \"; Q1 of Body Mass (g): \" + (!isValid(datum[\"lower_box_Body Mass (g)\"]) || !isFinite(+datum[\"lower_box_Body Mass (g)\"]) ? \"\" + datum[\"lower_box_Body Mass (g)\"] : format(datum[\"lower_box_Body Mass (g)\"], \"\")) + \"; Min of Body Mass (g): \" + (!isValid(datum[\"lower_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"lower_whisker_Body Mass (g)\"]) ? \"\" + datum[\"lower_whisker_Body Mass (g)\"] : format(datum[\"lower_whisker_Body Mass (g)\"], \"\"))"
},
"x": {"scale": "x", "field": "lower_box_Body Mass (g)"},
"x2": {"scale": "x", "field": "upper_box_Body Mass (g)"},
@@ -153,7 +153,7 @@
{"value": "white"}
],
"tooltip": {
- "signal": "{\"Max of Body Mass (g)\": format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": format(datum[\"lower_whisker_Body Mass (g)\"], \"\"), \"Species\": isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"]}"
+ "signal": "{\"Max of Body Mass (g)\": !isValid(datum[\"upper_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"upper_whisker_Body Mass (g)\"]) ? \"\" + datum[\"upper_whisker_Body Mass (g)\"] : format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": !isValid(datum[\"upper_box_Body Mass (g)\"]) || !isFinite(+datum[\"upper_box_Body Mass (g)\"]) ? \"\" + datum[\"upper_box_Body Mass (g)\"] : format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": !isValid(datum[\"mid_box_Body Mass (g)\"]) || !isFinite(+datum[\"mid_box_Body Mass (g)\"]) ? \"\" + datum[\"mid_box_Body Mass (g)\"] : format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": !isValid(datum[\"lower_box_Body Mass (g)\"]) || !isFinite(+datum[\"lower_box_Body Mass (g)\"]) ? \"\" + datum[\"lower_box_Body Mass (g)\"] : format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": !isValid(datum[\"lower_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"lower_whisker_Body Mass (g)\"]) ? \"\" + datum[\"lower_whisker_Body Mass (g)\"] : format(datum[\"lower_whisker_Body Mass (g)\"], \"\"), \"Species\": \"\" + datum[\"Species\"]}"
},
"xc": {"scale": "x", "field": "mid_box_Body Mass (g)"},
"yc": {"scale": "y", "field": "Species", "band": 0.5},
diff --git a/examples/compiled/boxplot_minmax_2D_horizontal_custom_midtick_color.vg.json b/examples/compiled/boxplot_minmax_2D_horizontal_custom_midtick_color.vg.json
index 3be74d5c6a..e1770d8cca 100644
--- a/examples/compiled/boxplot_minmax_2D_horizontal_custom_midtick_color.vg.json
+++ b/examples/compiled/boxplot_minmax_2D_horizontal_custom_midtick_color.vg.json
@@ -88,7 +88,7 @@
"update": {
"stroke": {"value": "black"},
"tooltip": {
- "signal": "{\"Max of Body Mass (g)\": format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": format(datum[\"lower_whisker_Body Mass (g)\"], \"\"), \"Species\": isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"]}"
+ "signal": "{\"Max of Body Mass (g)\": !isValid(datum[\"upper_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"upper_whisker_Body Mass (g)\"]) ? \"\" + datum[\"upper_whisker_Body Mass (g)\"] : format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": !isValid(datum[\"upper_box_Body Mass (g)\"]) || !isFinite(+datum[\"upper_box_Body Mass (g)\"]) ? \"\" + datum[\"upper_box_Body Mass (g)\"] : format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": !isValid(datum[\"mid_box_Body Mass (g)\"]) || !isFinite(+datum[\"mid_box_Body Mass (g)\"]) ? \"\" + datum[\"mid_box_Body Mass (g)\"] : format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": !isValid(datum[\"lower_box_Body Mass (g)\"]) || !isFinite(+datum[\"lower_box_Body Mass (g)\"]) ? \"\" + datum[\"lower_box_Body Mass (g)\"] : format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": !isValid(datum[\"lower_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"lower_whisker_Body Mass (g)\"]) ? \"\" + datum[\"lower_whisker_Body Mass (g)\"] : format(datum[\"lower_whisker_Body Mass (g)\"], \"\"), \"Species\": \"\" + datum[\"Species\"]}"
},
"x": {"scale": "x", "field": "lower_whisker_Body Mass (g)"},
"x2": {"scale": "x", "field": "lower_box_Body Mass (g)"},
@@ -106,7 +106,7 @@
"update": {
"stroke": {"value": "black"},
"tooltip": {
- "signal": "{\"Max of Body Mass (g)\": format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": format(datum[\"lower_whisker_Body Mass (g)\"], \"\"), \"Species\": isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"]}"
+ "signal": "{\"Max of Body Mass (g)\": !isValid(datum[\"upper_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"upper_whisker_Body Mass (g)\"]) ? \"\" + datum[\"upper_whisker_Body Mass (g)\"] : format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": !isValid(datum[\"upper_box_Body Mass (g)\"]) || !isFinite(+datum[\"upper_box_Body Mass (g)\"]) ? \"\" + datum[\"upper_box_Body Mass (g)\"] : format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": !isValid(datum[\"mid_box_Body Mass (g)\"]) || !isFinite(+datum[\"mid_box_Body Mass (g)\"]) ? \"\" + datum[\"mid_box_Body Mass (g)\"] : format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": !isValid(datum[\"lower_box_Body Mass (g)\"]) || !isFinite(+datum[\"lower_box_Body Mass (g)\"]) ? \"\" + datum[\"lower_box_Body Mass (g)\"] : format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": !isValid(datum[\"lower_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"lower_whisker_Body Mass (g)\"]) ? \"\" + datum[\"lower_whisker_Body Mass (g)\"] : format(datum[\"lower_whisker_Body Mass (g)\"], \"\"), \"Species\": \"\" + datum[\"Species\"]}"
},
"x": {"scale": "x", "field": "upper_box_Body Mass (g)"},
"x2": {"scale": "x", "field": "upper_whisker_Body Mass (g)"},
@@ -124,10 +124,10 @@
"ariaRoleDescription": {"value": "box"},
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"Max of Body Mass (g)\": format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": format(datum[\"lower_whisker_Body Mass (g)\"], \"\"), \"Species\": isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"]}"
+ "signal": "{\"Max of Body Mass (g)\": !isValid(datum[\"upper_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"upper_whisker_Body Mass (g)\"]) ? \"\" + datum[\"upper_whisker_Body Mass (g)\"] : format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": !isValid(datum[\"upper_box_Body Mass (g)\"]) || !isFinite(+datum[\"upper_box_Body Mass (g)\"]) ? \"\" + datum[\"upper_box_Body Mass (g)\"] : format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": !isValid(datum[\"mid_box_Body Mass (g)\"]) || !isFinite(+datum[\"mid_box_Body Mass (g)\"]) ? \"\" + datum[\"mid_box_Body Mass (g)\"] : format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": !isValid(datum[\"lower_box_Body Mass (g)\"]) || !isFinite(+datum[\"lower_box_Body Mass (g)\"]) ? \"\" + datum[\"lower_box_Body Mass (g)\"] : format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": !isValid(datum[\"lower_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"lower_whisker_Body Mass (g)\"]) ? \"\" + datum[\"lower_whisker_Body Mass (g)\"] : format(datum[\"lower_whisker_Body Mass (g)\"], \"\"), \"Species\": \"\" + datum[\"Species\"]}"
},
"description": {
- "signal": "\"Body Mass (g): \" + (format(datum[\"lower_box_Body Mass (g)\"], \"\")) + \"; Species: \" + (isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"]) + \"; upper_box_Body Mass (g): \" + (format(datum[\"upper_box_Body Mass (g)\"], \"\")) + \"; Max of Body Mass (g): \" + (format(datum[\"upper_whisker_Body Mass (g)\"], \"\")) + \"; Q3 of Body Mass (g): \" + (format(datum[\"upper_box_Body Mass (g)\"], \"\")) + \"; Median of Body Mass (g): \" + (format(datum[\"mid_box_Body Mass (g)\"], \"\")) + \"; Q1 of Body Mass (g): \" + (format(datum[\"lower_box_Body Mass (g)\"], \"\")) + \"; Min of Body Mass (g): \" + (format(datum[\"lower_whisker_Body Mass (g)\"], \"\"))"
+ "signal": "\"Body Mass (g): \" + (!isValid(datum[\"lower_box_Body Mass (g)\"]) || !isFinite(+datum[\"lower_box_Body Mass (g)\"]) ? \"\" + datum[\"lower_box_Body Mass (g)\"] : format(datum[\"lower_box_Body Mass (g)\"], \"\")) + \"; Species: \" + (\"\" + datum[\"Species\"]) + \"; upper_box_Body Mass (g): \" + (!isValid(datum[\"upper_box_Body Mass (g)\"]) || !isFinite(+datum[\"upper_box_Body Mass (g)\"]) ? \"\" + datum[\"upper_box_Body Mass (g)\"] : format(datum[\"upper_box_Body Mass (g)\"], \"\")) + \"; Max of Body Mass (g): \" + (!isValid(datum[\"upper_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"upper_whisker_Body Mass (g)\"]) ? \"\" + datum[\"upper_whisker_Body Mass (g)\"] : format(datum[\"upper_whisker_Body Mass (g)\"], \"\")) + \"; Q3 of Body Mass (g): \" + (!isValid(datum[\"upper_box_Body Mass (g)\"]) || !isFinite(+datum[\"upper_box_Body Mass (g)\"]) ? \"\" + datum[\"upper_box_Body Mass (g)\"] : format(datum[\"upper_box_Body Mass (g)\"], \"\")) + \"; Median of Body Mass (g): \" + (!isValid(datum[\"mid_box_Body Mass (g)\"]) || !isFinite(+datum[\"mid_box_Body Mass (g)\"]) ? \"\" + datum[\"mid_box_Body Mass (g)\"] : format(datum[\"mid_box_Body Mass (g)\"], \"\")) + \"; Q1 of Body Mass (g): \" + (!isValid(datum[\"lower_box_Body Mass (g)\"]) || !isFinite(+datum[\"lower_box_Body Mass (g)\"]) ? \"\" + datum[\"lower_box_Body Mass (g)\"] : format(datum[\"lower_box_Body Mass (g)\"], \"\")) + \"; Min of Body Mass (g): \" + (!isValid(datum[\"lower_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"lower_whisker_Body Mass (g)\"]) ? \"\" + datum[\"lower_whisker_Body Mass (g)\"] : format(datum[\"lower_whisker_Body Mass (g)\"], \"\"))"
},
"x": {"scale": "x", "field": "lower_box_Body Mass (g)"},
"x2": {"scale": "x", "field": "upper_box_Body Mass (g)"},
@@ -153,7 +153,7 @@
{"value": "orange"}
],
"tooltip": {
- "signal": "{\"Max of Body Mass (g)\": format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": format(datum[\"lower_whisker_Body Mass (g)\"], \"\"), \"Species\": isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"]}"
+ "signal": "{\"Max of Body Mass (g)\": !isValid(datum[\"upper_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"upper_whisker_Body Mass (g)\"]) ? \"\" + datum[\"upper_whisker_Body Mass (g)\"] : format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": !isValid(datum[\"upper_box_Body Mass (g)\"]) || !isFinite(+datum[\"upper_box_Body Mass (g)\"]) ? \"\" + datum[\"upper_box_Body Mass (g)\"] : format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": !isValid(datum[\"mid_box_Body Mass (g)\"]) || !isFinite(+datum[\"mid_box_Body Mass (g)\"]) ? \"\" + datum[\"mid_box_Body Mass (g)\"] : format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": !isValid(datum[\"lower_box_Body Mass (g)\"]) || !isFinite(+datum[\"lower_box_Body Mass (g)\"]) ? \"\" + datum[\"lower_box_Body Mass (g)\"] : format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": !isValid(datum[\"lower_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"lower_whisker_Body Mass (g)\"]) ? \"\" + datum[\"lower_whisker_Body Mass (g)\"] : format(datum[\"lower_whisker_Body Mass (g)\"], \"\"), \"Species\": \"\" + datum[\"Species\"]}"
},
"xc": {"scale": "x", "field": "mid_box_Body Mass (g)"},
"yc": {"scale": "y", "field": "Species", "band": 0.5},
diff --git a/examples/compiled/boxplot_minmax_2D_vertical.vg.json b/examples/compiled/boxplot_minmax_2D_vertical.vg.json
index f8f5dfbde6..02becd5792 100644
--- a/examples/compiled/boxplot_minmax_2D_vertical.vg.json
+++ b/examples/compiled/boxplot_minmax_2D_vertical.vg.json
@@ -88,7 +88,7 @@
"update": {
"stroke": {"value": "black"},
"tooltip": {
- "signal": "{\"Max of Body Mass (g)\": format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": format(datum[\"lower_whisker_Body Mass (g)\"], \"\"), \"Species\": isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"]}"
+ "signal": "{\"Max of Body Mass (g)\": !isValid(datum[\"upper_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"upper_whisker_Body Mass (g)\"]) ? \"\" + datum[\"upper_whisker_Body Mass (g)\"] : format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": !isValid(datum[\"upper_box_Body Mass (g)\"]) || !isFinite(+datum[\"upper_box_Body Mass (g)\"]) ? \"\" + datum[\"upper_box_Body Mass (g)\"] : format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": !isValid(datum[\"mid_box_Body Mass (g)\"]) || !isFinite(+datum[\"mid_box_Body Mass (g)\"]) ? \"\" + datum[\"mid_box_Body Mass (g)\"] : format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": !isValid(datum[\"lower_box_Body Mass (g)\"]) || !isFinite(+datum[\"lower_box_Body Mass (g)\"]) ? \"\" + datum[\"lower_box_Body Mass (g)\"] : format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": !isValid(datum[\"lower_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"lower_whisker_Body Mass (g)\"]) ? \"\" + datum[\"lower_whisker_Body Mass (g)\"] : format(datum[\"lower_whisker_Body Mass (g)\"], \"\"), \"Species\": \"\" + datum[\"Species\"]}"
},
"x": {"scale": "x", "field": "Species", "band": 0.5},
"y": {"scale": "y", "field": "lower_whisker_Body Mass (g)"},
@@ -106,7 +106,7 @@
"update": {
"stroke": {"value": "black"},
"tooltip": {
- "signal": "{\"Max of Body Mass (g)\": format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": format(datum[\"lower_whisker_Body Mass (g)\"], \"\"), \"Species\": isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"]}"
+ "signal": "{\"Max of Body Mass (g)\": !isValid(datum[\"upper_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"upper_whisker_Body Mass (g)\"]) ? \"\" + datum[\"upper_whisker_Body Mass (g)\"] : format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": !isValid(datum[\"upper_box_Body Mass (g)\"]) || !isFinite(+datum[\"upper_box_Body Mass (g)\"]) ? \"\" + datum[\"upper_box_Body Mass (g)\"] : format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": !isValid(datum[\"mid_box_Body Mass (g)\"]) || !isFinite(+datum[\"mid_box_Body Mass (g)\"]) ? \"\" + datum[\"mid_box_Body Mass (g)\"] : format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": !isValid(datum[\"lower_box_Body Mass (g)\"]) || !isFinite(+datum[\"lower_box_Body Mass (g)\"]) ? \"\" + datum[\"lower_box_Body Mass (g)\"] : format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": !isValid(datum[\"lower_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"lower_whisker_Body Mass (g)\"]) ? \"\" + datum[\"lower_whisker_Body Mass (g)\"] : format(datum[\"lower_whisker_Body Mass (g)\"], \"\"), \"Species\": \"\" + datum[\"Species\"]}"
},
"x": {"scale": "x", "field": "Species", "band": 0.5},
"y": {"scale": "y", "field": "upper_box_Body Mass (g)"},
@@ -124,10 +124,10 @@
"ariaRoleDescription": {"value": "box"},
"fill": {"scale": "color", "field": "Species"},
"tooltip": {
- "signal": "{\"Max of Body Mass (g)\": format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": format(datum[\"lower_whisker_Body Mass (g)\"], \"\"), \"Species\": isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"]}"
+ "signal": "{\"Max of Body Mass (g)\": !isValid(datum[\"upper_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"upper_whisker_Body Mass (g)\"]) ? \"\" + datum[\"upper_whisker_Body Mass (g)\"] : format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": !isValid(datum[\"upper_box_Body Mass (g)\"]) || !isFinite(+datum[\"upper_box_Body Mass (g)\"]) ? \"\" + datum[\"upper_box_Body Mass (g)\"] : format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": !isValid(datum[\"mid_box_Body Mass (g)\"]) || !isFinite(+datum[\"mid_box_Body Mass (g)\"]) ? \"\" + datum[\"mid_box_Body Mass (g)\"] : format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": !isValid(datum[\"lower_box_Body Mass (g)\"]) || !isFinite(+datum[\"lower_box_Body Mass (g)\"]) ? \"\" + datum[\"lower_box_Body Mass (g)\"] : format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": !isValid(datum[\"lower_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"lower_whisker_Body Mass (g)\"]) ? \"\" + datum[\"lower_whisker_Body Mass (g)\"] : format(datum[\"lower_whisker_Body Mass (g)\"], \"\"), \"Species\": \"\" + datum[\"Species\"]}"
},
"description": {
- "signal": "\"Species: \" + (isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"]) + \"; Body Mass (g): \" + (format(datum[\"lower_box_Body Mass (g)\"], \"\")) + \"; upper_box_Body Mass (g): \" + (format(datum[\"upper_box_Body Mass (g)\"], \"\")) + \"; Max of Body Mass (g): \" + (format(datum[\"upper_whisker_Body Mass (g)\"], \"\")) + \"; Q3 of Body Mass (g): \" + (format(datum[\"upper_box_Body Mass (g)\"], \"\")) + \"; Median of Body Mass (g): \" + (format(datum[\"mid_box_Body Mass (g)\"], \"\")) + \"; Q1 of Body Mass (g): \" + (format(datum[\"lower_box_Body Mass (g)\"], \"\")) + \"; Min of Body Mass (g): \" + (format(datum[\"lower_whisker_Body Mass (g)\"], \"\"))"
+ "signal": "\"Species: \" + (\"\" + datum[\"Species\"]) + \"; Body Mass (g): \" + (!isValid(datum[\"lower_box_Body Mass (g)\"]) || !isFinite(+datum[\"lower_box_Body Mass (g)\"]) ? \"\" + datum[\"lower_box_Body Mass (g)\"] : format(datum[\"lower_box_Body Mass (g)\"], \"\")) + \"; upper_box_Body Mass (g): \" + (!isValid(datum[\"upper_box_Body Mass (g)\"]) || !isFinite(+datum[\"upper_box_Body Mass (g)\"]) ? \"\" + datum[\"upper_box_Body Mass (g)\"] : format(datum[\"upper_box_Body Mass (g)\"], \"\")) + \"; Max of Body Mass (g): \" + (!isValid(datum[\"upper_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"upper_whisker_Body Mass (g)\"]) ? \"\" + datum[\"upper_whisker_Body Mass (g)\"] : format(datum[\"upper_whisker_Body Mass (g)\"], \"\")) + \"; Q3 of Body Mass (g): \" + (!isValid(datum[\"upper_box_Body Mass (g)\"]) || !isFinite(+datum[\"upper_box_Body Mass (g)\"]) ? \"\" + datum[\"upper_box_Body Mass (g)\"] : format(datum[\"upper_box_Body Mass (g)\"], \"\")) + \"; Median of Body Mass (g): \" + (!isValid(datum[\"mid_box_Body Mass (g)\"]) || !isFinite(+datum[\"mid_box_Body Mass (g)\"]) ? \"\" + datum[\"mid_box_Body Mass (g)\"] : format(datum[\"mid_box_Body Mass (g)\"], \"\")) + \"; Q1 of Body Mass (g): \" + (!isValid(datum[\"lower_box_Body Mass (g)\"]) || !isFinite(+datum[\"lower_box_Body Mass (g)\"]) ? \"\" + datum[\"lower_box_Body Mass (g)\"] : format(datum[\"lower_box_Body Mass (g)\"], \"\")) + \"; Min of Body Mass (g): \" + (!isValid(datum[\"lower_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"lower_whisker_Body Mass (g)\"]) ? \"\" + datum[\"lower_whisker_Body Mass (g)\"] : format(datum[\"lower_whisker_Body Mass (g)\"], \"\"))"
},
"xc": {"scale": "x", "field": "Species", "band": 0.5},
"width": {"value": 14},
@@ -154,7 +154,7 @@
{"value": "white"}
],
"tooltip": {
- "signal": "{\"Max of Body Mass (g)\": format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": format(datum[\"lower_whisker_Body Mass (g)\"], \"\"), \"Species\": isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"]}"
+ "signal": "{\"Max of Body Mass (g)\": !isValid(datum[\"upper_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"upper_whisker_Body Mass (g)\"]) ? \"\" + datum[\"upper_whisker_Body Mass (g)\"] : format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": !isValid(datum[\"upper_box_Body Mass (g)\"]) || !isFinite(+datum[\"upper_box_Body Mass (g)\"]) ? \"\" + datum[\"upper_box_Body Mass (g)\"] : format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": !isValid(datum[\"mid_box_Body Mass (g)\"]) || !isFinite(+datum[\"mid_box_Body Mass (g)\"]) ? \"\" + datum[\"mid_box_Body Mass (g)\"] : format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": !isValid(datum[\"lower_box_Body Mass (g)\"]) || !isFinite(+datum[\"lower_box_Body Mass (g)\"]) ? \"\" + datum[\"lower_box_Body Mass (g)\"] : format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": !isValid(datum[\"lower_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"lower_whisker_Body Mass (g)\"]) ? \"\" + datum[\"lower_whisker_Body Mass (g)\"] : format(datum[\"lower_whisker_Body Mass (g)\"], \"\"), \"Species\": \"\" + datum[\"Species\"]}"
},
"xc": {"scale": "x", "field": "Species", "band": 0.5},
"yc": {"scale": "y", "field": "mid_box_Body Mass (g)"},
diff --git a/examples/compiled/boxplot_preaggregated.vg.json b/examples/compiled/boxplot_preaggregated.vg.json
index 90a007ded0..23d31df66d 100644
--- a/examples/compiled/boxplot_preaggregated.vg.json
+++ b/examples/compiled/boxplot_preaggregated.vg.json
@@ -94,7 +94,7 @@
"update": {
"stroke": {"value": "black"},
"description": {
- "signal": "\"lower: \" + (format(datum[\"lower\"], \"\")) + \"; Species: \" + (isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"]) + \"; upper: \" + (format(datum[\"upper\"], \"\"))"
+ "signal": "\"lower: \" + (!isValid(datum[\"lower\"]) || !isFinite(+datum[\"lower\"]) ? \"\" + datum[\"lower\"] : format(datum[\"lower\"], \"\")) + \"; Species: \" + (\"\" + datum[\"Species\"]) + \"; upper: \" + (!isValid(datum[\"upper\"]) || !isFinite(+datum[\"upper\"]) ? \"\" + datum[\"upper\"] : format(datum[\"upper\"], \"\"))"
},
"x": {"scale": "x", "field": "lower"},
"x2": {"scale": "x", "field": "upper"},
@@ -112,7 +112,7 @@
"fill": {"scale": "color", "field": "Species"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"q1: \" + (format(datum[\"q1\"], \"\")) + \"; Species: \" + (isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"]) + \"; q3: \" + (format(datum[\"q3\"], \"\"))"
+ "signal": "\"q1: \" + (!isValid(datum[\"q1\"]) || !isFinite(+datum[\"q1\"]) ? \"\" + datum[\"q1\"] : format(datum[\"q1\"], \"\")) + \"; Species: \" + (\"\" + datum[\"Species\"]) + \"; q3: \" + (!isValid(datum[\"q3\"]) || !isFinite(+datum[\"q3\"]) ? \"\" + datum[\"q3\"] : format(datum[\"q3\"], \"\"))"
},
"x": {"scale": "x", "field": "q1"},
"x2": {"scale": "x", "field": "q3"},
@@ -132,7 +132,7 @@
"fill": {"value": "white"},
"ariaRoleDescription": {"value": "tick"},
"description": {
- "signal": "\"median: \" + (format(datum[\"median\"], \"\")) + \"; Species: \" + (isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"])"
+ "signal": "\"median: \" + (!isValid(datum[\"median\"]) || !isFinite(+datum[\"median\"]) ? \"\" + datum[\"median\"] : format(datum[\"median\"], \"\")) + \"; Species: \" + (\"\" + datum[\"Species\"])"
},
"xc": {"scale": "x", "field": "median"},
"yc": {"scale": "y", "field": "Species", "band": 0.5},
@@ -153,7 +153,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"outliers: \" + (format(datum[\"outliers\"], \"\")) + \"; Species: \" + (isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"])"
+ "signal": "\"outliers: \" + (!isValid(datum[\"outliers\"]) || !isFinite(+datum[\"outliers\"]) ? \"\" + datum[\"outliers\"] : format(datum[\"outliers\"], \"\")) + \"; Species: \" + (\"\" + datum[\"Species\"])"
},
"x": {"scale": "x", "field": "outliers"},
"y": {"scale": "y", "field": "Species", "band": 0.5}
diff --git a/examples/compiled/boxplot_tooltip_aggregate.vg.json b/examples/compiled/boxplot_tooltip_aggregate.vg.json
index f2597fbe5b..702b06e567 100644
--- a/examples/compiled/boxplot_tooltip_aggregate.vg.json
+++ b/examples/compiled/boxplot_tooltip_aggregate.vg.json
@@ -152,7 +152,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Body Mass (g): \" + (format(datum[\"Body Mass (g)\"], \"\")) + \"; Species: \" + (isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"])"
+ "signal": "\"Body Mass (g): \" + (!isValid(datum[\"Body Mass (g)\"]) || !isFinite(+datum[\"Body Mass (g)\"]) ? \"\" + datum[\"Body Mass (g)\"] : format(datum[\"Body Mass (g)\"], \"\")) + \"; Species: \" + (\"\" + datum[\"Species\"])"
},
"x": {"scale": "x", "field": "Body Mass (g)"},
"y": {"scale": "y", "field": "Species", "band": 0.5}
@@ -168,7 +168,9 @@
"encode": {
"update": {
"stroke": {"value": "black"},
- "tooltip": {"signal": "format(datum[\"mean_Body Mass (g)\"], \"\")"},
+ "tooltip": {
+ "signal": "!isValid(datum[\"mean_Body Mass (g)\"]) || !isFinite(+datum[\"mean_Body Mass (g)\"]) ? \"\" + datum[\"mean_Body Mass (g)\"] : format(datum[\"mean_Body Mass (g)\"], \"\")"
+ },
"x": {"scale": "x", "field": "lower_whisker_Body Mass (g)"},
"x2": {"scale": "x", "field": "lower_box_Body Mass (g)"},
"y": {"scale": "y", "field": "Species", "band": 0.5}
@@ -184,7 +186,9 @@
"encode": {
"update": {
"stroke": {"value": "black"},
- "tooltip": {"signal": "format(datum[\"mean_Body Mass (g)\"], \"\")"},
+ "tooltip": {
+ "signal": "!isValid(datum[\"mean_Body Mass (g)\"]) || !isFinite(+datum[\"mean_Body Mass (g)\"]) ? \"\" + datum[\"mean_Body Mass (g)\"] : format(datum[\"mean_Body Mass (g)\"], \"\")"
+ },
"x": {"scale": "x", "field": "upper_box_Body Mass (g)"},
"x2": {"scale": "x", "field": "upper_whisker_Body Mass (g)"},
"y": {"scale": "y", "field": "Species", "band": 0.5}
@@ -200,9 +204,11 @@
"update": {
"ariaRoleDescription": {"value": "box"},
"fill": {"value": "#4c78a8"},
- "tooltip": {"signal": "format(datum[\"mean_Body Mass (g)\"], \"\")"},
+ "tooltip": {
+ "signal": "!isValid(datum[\"mean_Body Mass (g)\"]) || !isFinite(+datum[\"mean_Body Mass (g)\"]) ? \"\" + datum[\"mean_Body Mass (g)\"] : format(datum[\"mean_Body Mass (g)\"], \"\")"
+ },
"description": {
- "signal": "\"Body Mass (g): \" + (format(datum[\"lower_box_Body Mass (g)\"], \"\")) + \"; Species: \" + (isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"]) + \"; upper_box_Body Mass (g): \" + (format(datum[\"upper_box_Body Mass (g)\"], \"\")) + \"; Mean of Body Mass (g): \" + (format(datum[\"mean_Body Mass (g)\"], \"\"))"
+ "signal": "\"Body Mass (g): \" + (!isValid(datum[\"lower_box_Body Mass (g)\"]) || !isFinite(+datum[\"lower_box_Body Mass (g)\"]) ? \"\" + datum[\"lower_box_Body Mass (g)\"] : format(datum[\"lower_box_Body Mass (g)\"], \"\")) + \"; Species: \" + (\"\" + datum[\"Species\"]) + \"; upper_box_Body Mass (g): \" + (!isValid(datum[\"upper_box_Body Mass (g)\"]) || !isFinite(+datum[\"upper_box_Body Mass (g)\"]) ? \"\" + datum[\"upper_box_Body Mass (g)\"] : format(datum[\"upper_box_Body Mass (g)\"], \"\")) + \"; Mean of Body Mass (g): \" + (!isValid(datum[\"mean_Body Mass (g)\"]) || !isFinite(+datum[\"mean_Body Mass (g)\"]) ? \"\" + datum[\"mean_Body Mass (g)\"] : format(datum[\"mean_Body Mass (g)\"], \"\"))"
},
"x": {"scale": "x", "field": "lower_box_Body Mass (g)"},
"x2": {"scale": "x", "field": "upper_box_Body Mass (g)"},
@@ -227,7 +233,9 @@
},
{"value": "white"}
],
- "tooltip": {"signal": "format(datum[\"mean_Body Mass (g)\"], \"\")"},
+ "tooltip": {
+ "signal": "!isValid(datum[\"mean_Body Mass (g)\"]) || !isFinite(+datum[\"mean_Body Mass (g)\"]) ? \"\" + datum[\"mean_Body Mass (g)\"] : format(datum[\"mean_Body Mass (g)\"], \"\")"
+ },
"xc": {"scale": "x", "field": "mid_box_Body Mass (g)"},
"yc": {"scale": "y", "field": "Species", "band": 0.5},
"height": {"value": 14},
diff --git a/examples/compiled/boxplot_tooltip_not_aggregate.vg.json b/examples/compiled/boxplot_tooltip_not_aggregate.vg.json
index f845845978..1cb34eda8b 100644
--- a/examples/compiled/boxplot_tooltip_not_aggregate.vg.json
+++ b/examples/compiled/boxplot_tooltip_not_aggregate.vg.json
@@ -146,10 +146,12 @@
"opacity": {"value": 0.7},
"fill": {"value": "transparent"},
"stroke": {"value": "#4c78a8"},
- "tooltip": {"signal": "format(datum[\"Body Mass (g)\"], \"\")"},
+ "tooltip": {
+ "signal": "!isValid(datum[\"Body Mass (g)\"]) || !isFinite(+datum[\"Body Mass (g)\"]) ? \"\" + datum[\"Body Mass (g)\"] : format(datum[\"Body Mass (g)\"], \"\")"
+ },
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Body Mass (g): \" + (format(datum[\"Body Mass (g)\"], \"\")) + \"; Species: \" + (isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"])"
+ "signal": "\"Body Mass (g): \" + (!isValid(datum[\"Body Mass (g)\"]) || !isFinite(+datum[\"Body Mass (g)\"]) ? \"\" + datum[\"Body Mass (g)\"] : format(datum[\"Body Mass (g)\"], \"\")) + \"; Species: \" + (\"\" + datum[\"Species\"])"
},
"x": {"scale": "x", "field": "Body Mass (g)"},
"y": {"scale": "y", "field": "Species", "band": 0.5}
@@ -166,7 +168,7 @@
"update": {
"stroke": {"value": "black"},
"tooltip": {
- "signal": "{\"Upper Whisker of Body Mass (g)\": format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Lower Whisker of Body Mass (g)\": format(datum[\"lower_whisker_Body Mass (g)\"], \"\"), \"Species\": isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"]}"
+ "signal": "{\"Upper Whisker of Body Mass (g)\": !isValid(datum[\"upper_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"upper_whisker_Body Mass (g)\"]) ? \"\" + datum[\"upper_whisker_Body Mass (g)\"] : format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Lower Whisker of Body Mass (g)\": !isValid(datum[\"lower_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"lower_whisker_Body Mass (g)\"]) ? \"\" + datum[\"lower_whisker_Body Mass (g)\"] : format(datum[\"lower_whisker_Body Mass (g)\"], \"\"), \"Species\": \"\" + datum[\"Species\"]}"
},
"x": {"scale": "x", "field": "lower_whisker_Body Mass (g)"},
"x2": {"scale": "x", "field": "lower_box_Body Mass (g)"},
@@ -184,7 +186,7 @@
"update": {
"stroke": {"value": "black"},
"tooltip": {
- "signal": "{\"Upper Whisker of Body Mass (g)\": format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Lower Whisker of Body Mass (g)\": format(datum[\"lower_whisker_Body Mass (g)\"], \"\"), \"Species\": isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"]}"
+ "signal": "{\"Upper Whisker of Body Mass (g)\": !isValid(datum[\"upper_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"upper_whisker_Body Mass (g)\"]) ? \"\" + datum[\"upper_whisker_Body Mass (g)\"] : format(datum[\"upper_whisker_Body Mass (g)\"], \"\"), \"Lower Whisker of Body Mass (g)\": !isValid(datum[\"lower_whisker_Body Mass (g)\"]) || !isFinite(+datum[\"lower_whisker_Body Mass (g)\"]) ? \"\" + datum[\"lower_whisker_Body Mass (g)\"] : format(datum[\"lower_whisker_Body Mass (g)\"], \"\"), \"Species\": \"\" + datum[\"Species\"]}"
},
"x": {"scale": "x", "field": "upper_box_Body Mass (g)"},
"x2": {"scale": "x", "field": "upper_whisker_Body Mass (g)"},
@@ -202,10 +204,10 @@
"ariaRoleDescription": {"value": "box"},
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"Max of Body Mass (g)\": format(datum[\"max_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": format(datum[\"min_Body Mass (g)\"], \"\"), \"Species\": isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"]}"
+ "signal": "{\"Max of Body Mass (g)\": !isValid(datum[\"max_Body Mass (g)\"]) || !isFinite(+datum[\"max_Body Mass (g)\"]) ? \"\" + datum[\"max_Body Mass (g)\"] : format(datum[\"max_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": !isValid(datum[\"upper_box_Body Mass (g)\"]) || !isFinite(+datum[\"upper_box_Body Mass (g)\"]) ? \"\" + datum[\"upper_box_Body Mass (g)\"] : format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": !isValid(datum[\"mid_box_Body Mass (g)\"]) || !isFinite(+datum[\"mid_box_Body Mass (g)\"]) ? \"\" + datum[\"mid_box_Body Mass (g)\"] : format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": !isValid(datum[\"lower_box_Body Mass (g)\"]) || !isFinite(+datum[\"lower_box_Body Mass (g)\"]) ? \"\" + datum[\"lower_box_Body Mass (g)\"] : format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": !isValid(datum[\"min_Body Mass (g)\"]) || !isFinite(+datum[\"min_Body Mass (g)\"]) ? \"\" + datum[\"min_Body Mass (g)\"] : format(datum[\"min_Body Mass (g)\"], \"\"), \"Species\": \"\" + datum[\"Species\"]}"
},
"description": {
- "signal": "\"Body Mass (g): \" + (format(datum[\"lower_box_Body Mass (g)\"], \"\")) + \"; Species: \" + (isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"]) + \"; upper_box_Body Mass (g): \" + (format(datum[\"upper_box_Body Mass (g)\"], \"\")) + \"; Max of Body Mass (g): \" + (format(datum[\"max_Body Mass (g)\"], \"\")) + \"; Q3 of Body Mass (g): \" + (format(datum[\"upper_box_Body Mass (g)\"], \"\")) + \"; Median of Body Mass (g): \" + (format(datum[\"mid_box_Body Mass (g)\"], \"\")) + \"; Q1 of Body Mass (g): \" + (format(datum[\"lower_box_Body Mass (g)\"], \"\")) + \"; Min of Body Mass (g): \" + (format(datum[\"min_Body Mass (g)\"], \"\"))"
+ "signal": "\"Body Mass (g): \" + (!isValid(datum[\"lower_box_Body Mass (g)\"]) || !isFinite(+datum[\"lower_box_Body Mass (g)\"]) ? \"\" + datum[\"lower_box_Body Mass (g)\"] : format(datum[\"lower_box_Body Mass (g)\"], \"\")) + \"; Species: \" + (\"\" + datum[\"Species\"]) + \"; upper_box_Body Mass (g): \" + (!isValid(datum[\"upper_box_Body Mass (g)\"]) || !isFinite(+datum[\"upper_box_Body Mass (g)\"]) ? \"\" + datum[\"upper_box_Body Mass (g)\"] : format(datum[\"upper_box_Body Mass (g)\"], \"\")) + \"; Max of Body Mass (g): \" + (!isValid(datum[\"max_Body Mass (g)\"]) || !isFinite(+datum[\"max_Body Mass (g)\"]) ? \"\" + datum[\"max_Body Mass (g)\"] : format(datum[\"max_Body Mass (g)\"], \"\")) + \"; Q3 of Body Mass (g): \" + (!isValid(datum[\"upper_box_Body Mass (g)\"]) || !isFinite(+datum[\"upper_box_Body Mass (g)\"]) ? \"\" + datum[\"upper_box_Body Mass (g)\"] : format(datum[\"upper_box_Body Mass (g)\"], \"\")) + \"; Median of Body Mass (g): \" + (!isValid(datum[\"mid_box_Body Mass (g)\"]) || !isFinite(+datum[\"mid_box_Body Mass (g)\"]) ? \"\" + datum[\"mid_box_Body Mass (g)\"] : format(datum[\"mid_box_Body Mass (g)\"], \"\")) + \"; Q1 of Body Mass (g): \" + (!isValid(datum[\"lower_box_Body Mass (g)\"]) || !isFinite(+datum[\"lower_box_Body Mass (g)\"]) ? \"\" + datum[\"lower_box_Body Mass (g)\"] : format(datum[\"lower_box_Body Mass (g)\"], \"\")) + \"; Min of Body Mass (g): \" + (!isValid(datum[\"min_Body Mass (g)\"]) || !isFinite(+datum[\"min_Body Mass (g)\"]) ? \"\" + datum[\"min_Body Mass (g)\"] : format(datum[\"min_Body Mass (g)\"], \"\"))"
},
"x": {"scale": "x", "field": "lower_box_Body Mass (g)"},
"x2": {"scale": "x", "field": "upper_box_Body Mass (g)"},
@@ -231,7 +233,7 @@
{"value": "white"}
],
"tooltip": {
- "signal": "{\"Max of Body Mass (g)\": format(datum[\"max_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": format(datum[\"min_Body Mass (g)\"], \"\"), \"Species\": isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"]}"
+ "signal": "{\"Max of Body Mass (g)\": !isValid(datum[\"max_Body Mass (g)\"]) || !isFinite(+datum[\"max_Body Mass (g)\"]) ? \"\" + datum[\"max_Body Mass (g)\"] : format(datum[\"max_Body Mass (g)\"], \"\"), \"Q3 of Body Mass (g)\": !isValid(datum[\"upper_box_Body Mass (g)\"]) || !isFinite(+datum[\"upper_box_Body Mass (g)\"]) ? \"\" + datum[\"upper_box_Body Mass (g)\"] : format(datum[\"upper_box_Body Mass (g)\"], \"\"), \"Median of Body Mass (g)\": !isValid(datum[\"mid_box_Body Mass (g)\"]) || !isFinite(+datum[\"mid_box_Body Mass (g)\"]) ? \"\" + datum[\"mid_box_Body Mass (g)\"] : format(datum[\"mid_box_Body Mass (g)\"], \"\"), \"Q1 of Body Mass (g)\": !isValid(datum[\"lower_box_Body Mass (g)\"]) || !isFinite(+datum[\"lower_box_Body Mass (g)\"]) ? \"\" + datum[\"lower_box_Body Mass (g)\"] : format(datum[\"lower_box_Body Mass (g)\"], \"\"), \"Min of Body Mass (g)\": !isValid(datum[\"min_Body Mass (g)\"]) || !isFinite(+datum[\"min_Body Mass (g)\"]) ? \"\" + datum[\"min_Body Mass (g)\"] : format(datum[\"min_Body Mass (g)\"], \"\"), \"Species\": \"\" + datum[\"Species\"]}"
},
"xc": {"scale": "x", "field": "mid_box_Body Mass (g)"},
"yc": {"scale": "y", "field": "Species", "band": 0.5},
diff --git a/examples/compiled/brush_table.vg.json b/examples/compiled/brush_table.vg.json
index 8e96526664..06f85fc8a4 100644
--- a/examples/compiled/brush_table.vg.json
+++ b/examples/compiled/brush_table.vg.json
@@ -385,7 +385,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (\"\" + datum[\"Cylinders\"])"
},
"x": {"scale": "concat_0_x", "field": "Horsepower"},
"y": {"scale": "concat_0_y", "field": "Miles_per_Gallon"}
@@ -533,13 +533,11 @@
"update": {
"fill": {"value": "black"},
"description": {
- "signal": "\"row_number: \" + (isValid(datum[\"row_number\"]) ? datum[\"row_number\"] : \"\"+datum[\"row_number\"]) + \"; Horsepower: \" + (isValid(datum[\"Horsepower\"]) ? datum[\"Horsepower\"] : \"\"+datum[\"Horsepower\"])"
+ "signal": "\"row_number: \" + (\"\" + datum[\"row_number\"]) + \"; Horsepower: \" + (\"\" + datum[\"Horsepower\"])"
},
"x": {"signal": "concat_1_childWidth", "mult": 0.5},
"y": {"scale": "concat_1_concat_0_y", "field": "row_number"},
- "text": {
- "signal": "isValid(datum[\"Horsepower\"]) ? datum[\"Horsepower\"] : \"\"+datum[\"Horsepower\"]"
- },
+ "text": {"signal": "\"\" + datum[\"Horsepower\"]"},
"align": {"value": "center"},
"baseline": {"value": "middle"}
}
@@ -569,13 +567,11 @@
"update": {
"fill": {"value": "black"},
"description": {
- "signal": "\"row_number: \" + (isValid(datum[\"row_number\"]) ? datum[\"row_number\"] : \"\"+datum[\"row_number\"]) + \"; Miles_per_Gallon: \" + (isValid(datum[\"Miles_per_Gallon\"]) ? datum[\"Miles_per_Gallon\"] : \"\"+datum[\"Miles_per_Gallon\"])"
+ "signal": "\"row_number: \" + (\"\" + datum[\"row_number\"]) + \"; Miles_per_Gallon: \" + (\"\" + datum[\"Miles_per_Gallon\"])"
},
"x": {"signal": "concat_1_childWidth", "mult": 0.5},
"y": {"scale": "concat_1_concat_1_y", "field": "row_number"},
- "text": {
- "signal": "isValid(datum[\"Miles_per_Gallon\"]) ? datum[\"Miles_per_Gallon\"] : \"\"+datum[\"Miles_per_Gallon\"]"
- },
+ "text": {"signal": "\"\" + datum[\"Miles_per_Gallon\"]"},
"align": {"value": "center"},
"baseline": {"value": "middle"}
}
@@ -605,13 +601,11 @@
"update": {
"fill": {"value": "black"},
"description": {
- "signal": "\"row_number: \" + (isValid(datum[\"row_number\"]) ? datum[\"row_number\"] : \"\"+datum[\"row_number\"]) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"row_number: \" + (\"\" + datum[\"row_number\"]) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {"signal": "concat_1_childWidth", "mult": 0.5},
"y": {"scale": "concat_1_concat_2_y", "field": "row_number"},
- "text": {
- "signal": "isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]"
- },
+ "text": {"signal": "\"\" + datum[\"Origin\"]"},
"align": {"value": "center"},
"baseline": {"value": "middle"}
}
diff --git a/examples/compiled/circle.vg.json b/examples/compiled/circle.vg.json
index 8c4e309283..262376711e 100644
--- a/examples/compiled/circle.vg.json
+++ b/examples/compiled/circle.vg.json
@@ -30,7 +30,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\"))"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"},
diff --git a/examples/compiled/circle_binned.vg.json b/examples/compiled/circle_binned.vg.json
index 0af9b4c075..c556958c5d 100644
--- a/examples/compiled/circle_binned.vg.json
+++ b/examples/compiled/circle_binned.vg.json
@@ -73,7 +73,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"null\" : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\")) + \"; Rotten Tomatoes Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_Rotten Tomatoes Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_Rotten Tomatoes Rating\"]) ? \"null\" : format(datum[\"bin_maxbins_10_Rotten Tomatoes Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_Rotten Tomatoes Rating_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"\" + datum[\"bin_maxbins_10_IMDB Rating\"] : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\")) + \"; Rotten Tomatoes Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_Rotten Tomatoes Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_Rotten Tomatoes Rating\"]) ? \"\" + datum[\"bin_maxbins_10_Rotten Tomatoes Rating\"] : format(datum[\"bin_maxbins_10_Rotten Tomatoes Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_Rotten Tomatoes Rating_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x": {
"signal": "scale(\"x\", 0.5 * datum[\"bin_maxbins_10_IMDB Rating\"] + 0.5 * datum[\"bin_maxbins_10_IMDB Rating_end\"])"
diff --git a/examples/compiled/circle_binned_maxbins_2.vg.json b/examples/compiled/circle_binned_maxbins_2.vg.json
index 9414ecbc04..78b934c7bc 100644
--- a/examples/compiled/circle_binned_maxbins_2.vg.json
+++ b/examples/compiled/circle_binned_maxbins_2.vg.json
@@ -70,7 +70,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_2_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_2_IMDB Rating\"]) ? \"null\" : format(datum[\"bin_maxbins_2_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_2_IMDB Rating_end\"], \"\")) + \"; Rotten Tomatoes Rating (binned): \" + (!isValid(datum[\"bin_maxbins_2_Rotten Tomatoes Rating\"]) || !isFinite(+datum[\"bin_maxbins_2_Rotten Tomatoes Rating\"]) ? \"null\" : format(datum[\"bin_maxbins_2_Rotten Tomatoes Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_2_Rotten Tomatoes Rating_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_2_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_2_IMDB Rating\"]) ? \"\" + datum[\"bin_maxbins_2_IMDB Rating\"] : format(datum[\"bin_maxbins_2_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_2_IMDB Rating_end\"], \"\")) + \"; Rotten Tomatoes Rating (binned): \" + (!isValid(datum[\"bin_maxbins_2_Rotten Tomatoes Rating\"]) || !isFinite(+datum[\"bin_maxbins_2_Rotten Tomatoes Rating\"]) ? \"\" + datum[\"bin_maxbins_2_Rotten Tomatoes Rating\"] : format(datum[\"bin_maxbins_2_Rotten Tomatoes Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_2_Rotten Tomatoes Rating_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x": {
"signal": "scale(\"x\", 0.5 * datum[\"bin_maxbins_2_IMDB Rating\"] + 0.5 * datum[\"bin_maxbins_2_IMDB Rating_end\"])"
diff --git a/examples/compiled/circle_binned_maxbins_20.vg.json b/examples/compiled/circle_binned_maxbins_20.vg.json
index 6570b76986..4c6759c04a 100644
--- a/examples/compiled/circle_binned_maxbins_20.vg.json
+++ b/examples/compiled/circle_binned_maxbins_20.vg.json
@@ -73,7 +73,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_20_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_20_IMDB Rating\"]) ? \"null\" : format(datum[\"bin_maxbins_20_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_IMDB Rating_end\"], \"\")) + \"; Rotten Tomatoes Rating (binned): \" + (!isValid(datum[\"bin_maxbins_20_Rotten Tomatoes Rating\"]) || !isFinite(+datum[\"bin_maxbins_20_Rotten Tomatoes Rating\"]) ? \"null\" : format(datum[\"bin_maxbins_20_Rotten Tomatoes Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_Rotten Tomatoes Rating_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_20_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_20_IMDB Rating\"]) ? \"\" + datum[\"bin_maxbins_20_IMDB Rating\"] : format(datum[\"bin_maxbins_20_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_IMDB Rating_end\"], \"\")) + \"; Rotten Tomatoes Rating (binned): \" + (!isValid(datum[\"bin_maxbins_20_Rotten Tomatoes Rating\"]) || !isFinite(+datum[\"bin_maxbins_20_Rotten Tomatoes Rating\"]) ? \"\" + datum[\"bin_maxbins_20_Rotten Tomatoes Rating\"] : format(datum[\"bin_maxbins_20_Rotten Tomatoes Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_Rotten Tomatoes Rating_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x": {
"signal": "scale(\"x\", 0.5 * datum[\"bin_maxbins_20_IMDB Rating\"] + 0.5 * datum[\"bin_maxbins_20_IMDB Rating_end\"])"
diff --git a/examples/compiled/circle_binned_maxbins_5.vg.json b/examples/compiled/circle_binned_maxbins_5.vg.json
index af88423e2d..8a1f2e3c11 100644
--- a/examples/compiled/circle_binned_maxbins_5.vg.json
+++ b/examples/compiled/circle_binned_maxbins_5.vg.json
@@ -70,7 +70,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_5_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_5_IMDB Rating\"]) ? \"null\" : format(datum[\"bin_maxbins_5_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_5_IMDB Rating_end\"], \"\")) + \"; Rotten Tomatoes Rating (binned): \" + (!isValid(datum[\"bin_maxbins_5_Rotten Tomatoes Rating\"]) || !isFinite(+datum[\"bin_maxbins_5_Rotten Tomatoes Rating\"]) ? \"null\" : format(datum[\"bin_maxbins_5_Rotten Tomatoes Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_5_Rotten Tomatoes Rating_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_5_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_5_IMDB Rating\"]) ? \"\" + datum[\"bin_maxbins_5_IMDB Rating\"] : format(datum[\"bin_maxbins_5_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_5_IMDB Rating_end\"], \"\")) + \"; Rotten Tomatoes Rating (binned): \" + (!isValid(datum[\"bin_maxbins_5_Rotten Tomatoes Rating\"]) || !isFinite(+datum[\"bin_maxbins_5_Rotten Tomatoes Rating\"]) ? \"\" + datum[\"bin_maxbins_5_Rotten Tomatoes Rating\"] : format(datum[\"bin_maxbins_5_Rotten Tomatoes Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_5_Rotten Tomatoes Rating_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x": {
"signal": "scale(\"x\", 0.5 * datum[\"bin_maxbins_5_IMDB Rating\"] + 0.5 * datum[\"bin_maxbins_5_IMDB Rating_end\"])"
diff --git a/examples/compiled/circle_bubble_health_income.vg.json b/examples/compiled/circle_bubble_health_income.vg.json
index 279ca79bc9..f787c71fdf 100644
--- a/examples/compiled/circle_bubble_health_income.vg.json
+++ b/examples/compiled/circle_bubble_health_income.vg.json
@@ -146,7 +146,7 @@
"fill": {"value": "#000"},
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"income: \" + (format(datum[\"income\"], \"\")) + \"; health: \" + (format(datum[\"health\"], \"\")) + \"; population: \" + (format(datum[\"population\"], \"\"))"
+ "signal": "\"income: \" + (!isValid(datum[\"income\"]) || !isFinite(+datum[\"income\"]) ? \"\" + datum[\"income\"] : format(datum[\"income\"], \"\")) + \"; health: \" + (!isValid(datum[\"health\"]) || !isFinite(+datum[\"health\"]) ? \"\" + datum[\"health\"] : format(datum[\"health\"], \"\")) + \"; population: \" + (!isValid(datum[\"population\"]) || !isFinite(+datum[\"population\"]) ? \"\" + datum[\"population\"] : format(datum[\"population\"], \"\"))"
},
"x": {"scale": "x", "field": "income"},
"y": {"scale": "y", "field": "health"},
diff --git a/examples/compiled/circle_custom_tick_labels.vg.json b/examples/compiled/circle_custom_tick_labels.vg.json
index 3187316538..f7bfc2c43a 100644
--- a/examples/compiled/circle_custom_tick_labels.vg.json
+++ b/examples/compiled/circle_custom_tick_labels.vg.json
@@ -43,7 +43,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"Mean of IMDB Rating: \" + (format(datum[\"mean_IMDB Rating\"], \"\")) + \"; Major Genre: \" + (isValid(datum[\"Major Genre\"]) ? datum[\"Major Genre\"] : \"\"+datum[\"Major Genre\"])"
+ "signal": "\"Mean of IMDB Rating: \" + (!isValid(datum[\"mean_IMDB Rating\"]) || !isFinite(+datum[\"mean_IMDB Rating\"]) ? \"\" + datum[\"mean_IMDB Rating\"] : format(datum[\"mean_IMDB Rating\"], \"\")) + \"; Major Genre: \" + (\"\" + datum[\"Major Genre\"])"
},
"x": {"scale": "x", "field": "mean_IMDB Rating"},
"y": {"scale": "y", "field": "Major Genre"},
diff --git a/examples/compiled/circle_flatten.vg.json b/examples/compiled/circle_flatten.vg.json
index c0a7637be8..4380fa88d1 100644
--- a/examples/compiled/circle_flatten.vg.json
+++ b/examples/compiled/circle_flatten.vg.json
@@ -43,7 +43,7 @@
"fill": {"scale": "color", "field": "key"},
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"foo: \" + (format(datum[\"foo\"], \"\")) + \"; bar: \" + (isValid(datum[\"bar\"]) ? datum[\"bar\"] : \"\"+datum[\"bar\"]) + \"; key: \" + (isValid(datum[\"key\"]) ? datum[\"key\"] : \"\"+datum[\"key\"])"
+ "signal": "\"foo: \" + (!isValid(datum[\"foo\"]) || !isFinite(+datum[\"foo\"]) ? \"\" + datum[\"foo\"] : format(datum[\"foo\"], \"\")) + \"; bar: \" + (\"\" + datum[\"bar\"]) + \"; key: \" + (\"\" + datum[\"key\"])"
},
"x": {"scale": "x", "field": "foo"},
"y": {"scale": "y", "field": "bar"},
diff --git a/examples/compiled/circle_github_punchcard.vg.json b/examples/compiled/circle_github_punchcard.vg.json
index b283430c57..e15f790717 100644
--- a/examples/compiled/circle_github_punchcard.vg.json
+++ b/examples/compiled/circle_github_punchcard.vg.json
@@ -70,7 +70,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"time (hours): \" + (timeFormat(datum[\"hours_time\"], timeUnitSpecifier([\"hours\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; time (day): \" + (timeFormat(datum[\"day_time\"], timeUnitSpecifier([\"day\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Sum of count: \" + (format(datum[\"sum_count\"], \"\"))"
+ "signal": "\"time (hours): \" + (!isValid(datum[\"hours_time\"]) || !isFinite(+datum[\"hours_time\"]) ? \"\" + datum[\"hours_time\"] : timeFormat(datum[\"hours_time\"], timeUnitSpecifier([\"hours\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; time (day): \" + (!isValid(datum[\"day_time\"]) || !isFinite(+datum[\"day_time\"]) ? \"\" + datum[\"day_time\"] : timeFormat(datum[\"day_time\"], timeUnitSpecifier([\"day\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Sum of count: \" + (!isValid(datum[\"sum_count\"]) || !isFinite(+datum[\"sum_count\"]) ? \"\" + datum[\"sum_count\"] : format(datum[\"sum_count\"], \"\"))"
},
"x": {"scale": "x", "field": "hours_time"},
"y": {"scale": "y", "field": "day_time"},
diff --git a/examples/compiled/circle_labelangle_orient_signal.vg.json b/examples/compiled/circle_labelangle_orient_signal.vg.json
index cc31e8b87c..046150cf89 100644
--- a/examples/compiled/circle_labelangle_orient_signal.vg.json
+++ b/examples/compiled/circle_labelangle_orient_signal.vg.json
@@ -80,7 +80,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"time (hours): \" + (timeFormat(datum[\"hours_time\"], timeUnitSpecifier([\"hours\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; time (day): \" + (timeFormat(datum[\"day_time\"], timeUnitSpecifier([\"day\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Sum of count: \" + (format(datum[\"sum_count\"], \"\"))"
+ "signal": "\"time (hours): \" + (!isValid(datum[\"hours_time\"]) || !isFinite(+datum[\"hours_time\"]) ? \"\" + datum[\"hours_time\"] : timeFormat(datum[\"hours_time\"], timeUnitSpecifier([\"hours\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; time (day): \" + (!isValid(datum[\"day_time\"]) || !isFinite(+datum[\"day_time\"]) ? \"\" + datum[\"day_time\"] : timeFormat(datum[\"day_time\"], timeUnitSpecifier([\"day\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Sum of count: \" + (!isValid(datum[\"sum_count\"]) || !isFinite(+datum[\"sum_count\"]) ? \"\" + datum[\"sum_count\"] : format(datum[\"sum_count\"], \"\"))"
},
"x": {"scale": "x", "field": "hours_time"},
"y": {"scale": "y", "field": "day_time"},
diff --git a/examples/compiled/circle_natural_disasters.vg.json b/examples/compiled/circle_natural_disasters.vg.json
index a02a634c98..2119e94699 100644
--- a/examples/compiled/circle_natural_disasters.vg.json
+++ b/examples/compiled/circle_natural_disasters.vg.json
@@ -33,7 +33,7 @@
"fill": {"scale": "color", "field": "Entity"},
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"Year: \" + (timeFormat(datum[\"Year\"], '%b %d, %Y')) + \"; Entity: \" + (isValid(datum[\"Entity\"]) ? datum[\"Entity\"] : \"\"+datum[\"Entity\"]) + \"; Annual Global Deaths: \" + (format(datum[\"Deaths\"], \"\"))"
+ "signal": "\"Year: \" + (!isValid(datum[\"Year\"]) || !isFinite(+datum[\"Year\"]) ? \"\" + datum[\"Year\"] : timeFormat(datum[\"Year\"], '%b %d, %Y')) + \"; Entity: \" + (\"\" + datum[\"Entity\"]) + \"; Annual Global Deaths: \" + (!isValid(datum[\"Deaths\"]) || !isFinite(+datum[\"Deaths\"]) ? \"\" + datum[\"Deaths\"] : format(datum[\"Deaths\"], \"\"))"
},
"x": {"scale": "x", "field": "Year"},
"y": {"scale": "y", "field": "Entity"},
diff --git a/examples/compiled/circle_opacity.vg.json b/examples/compiled/circle_opacity.vg.json
index ddbbfa783a..a1b93c0365 100644
--- a/examples/compiled/circle_opacity.vg.json
+++ b/examples/compiled/circle_opacity.vg.json
@@ -30,7 +30,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\"))"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"},
diff --git a/examples/compiled/circle_scale_quantile.vg.json b/examples/compiled/circle_scale_quantile.vg.json
index 11b793774a..16cd15e9a9 100644
--- a/examples/compiled/circle_scale_quantile.vg.json
+++ b/examples/compiled/circle_scale_quantile.vg.json
@@ -48,9 +48,7 @@
"opacity": {"value": 0.7},
"fill": {"scale": "color", "field": "b"},
"ariaRoleDescription": {"value": "circle"},
- "description": {
- "signal": "\"b: \" + (isValid(datum[\"b\"]) ? datum[\"b\"] : \"\"+datum[\"b\"])"
- },
+ "description": {"signal": "\"b: \" + (\"\" + datum[\"b\"])"},
"x": {"signal": "width", "mult": 0.5},
"y": {"scale": "y", "field": "b"},
"size": {"scale": "size", "field": "b"},
diff --git a/examples/compiled/circle_scale_quantize.vg.json b/examples/compiled/circle_scale_quantize.vg.json
index 5227887038..f986677487 100644
--- a/examples/compiled/circle_scale_quantize.vg.json
+++ b/examples/compiled/circle_scale_quantize.vg.json
@@ -48,9 +48,7 @@
"opacity": {"value": 0.7},
"fill": {"scale": "color", "field": "b"},
"ariaRoleDescription": {"value": "circle"},
- "description": {
- "signal": "\"b: \" + (isValid(datum[\"b\"]) ? datum[\"b\"] : \"\"+datum[\"b\"])"
- },
+ "description": {"signal": "\"b: \" + (\"\" + datum[\"b\"])"},
"x": {"signal": "width", "mult": 0.5},
"y": {"scale": "y", "field": "b"},
"size": {"scale": "size", "field": "b"},
diff --git a/examples/compiled/circle_scale_threshold.vg.json b/examples/compiled/circle_scale_threshold.vg.json
index 9274ddb47e..5733361172 100644
--- a/examples/compiled/circle_scale_threshold.vg.json
+++ b/examples/compiled/circle_scale_threshold.vg.json
@@ -48,9 +48,7 @@
"opacity": {"value": 0.7},
"fill": {"scale": "color", "field": "b"},
"ariaRoleDescription": {"value": "circle"},
- "description": {
- "signal": "\"b: \" + (isValid(datum[\"b\"]) ? datum[\"b\"] : \"\"+datum[\"b\"])"
- },
+ "description": {"signal": "\"b: \" + (\"\" + datum[\"b\"])"},
"x": {"signal": "width", "mult": 0.5},
"y": {"scale": "y", "field": "b"},
"size": {"scale": "size", "field": "b"},
diff --git a/examples/compiled/circle_wilkinson_dotplot.vg.json b/examples/compiled/circle_wilkinson_dotplot.vg.json
index 0360c4c601..40f92fd6b5 100644
--- a/examples/compiled/circle_wilkinson_dotplot.vg.json
+++ b/examples/compiled/circle_wilkinson_dotplot.vg.json
@@ -45,7 +45,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"data: \" + (isValid(datum[\"data\"]) ? datum[\"data\"] : \"\"+datum[\"data\"]) + \"; id: \" + (isValid(datum[\"id\"]) ? datum[\"id\"] : \"\"+datum[\"id\"])"
+ "signal": "\"data: \" + (\"\" + datum[\"data\"]) + \"; id: \" + (\"\" + datum[\"id\"])"
},
"x": {"scale": "x", "field": "data"},
"y": {"scale": "y", "field": "id"},
diff --git a/examples/compiled/circle_wilkinson_dotplot_stacked.vg.json b/examples/compiled/circle_wilkinson_dotplot_stacked.vg.json
index f114196104..2f00a335e8 100644
--- a/examples/compiled/circle_wilkinson_dotplot_stacked.vg.json
+++ b/examples/compiled/circle_wilkinson_dotplot_stacked.vg.json
@@ -58,7 +58,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"data: \" + (isValid(datum[\"data\"]) ? datum[\"data\"] : \"\"+datum[\"data\"]) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\")) + \"; id: \" + (isValid(datum[\"id\"]) ? datum[\"id\"] : \"\"+datum[\"id\"])"
+ "signal": "\"data: \" + (\"\" + datum[\"data\"]) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\")) + \"; id: \" + (\"\" + datum[\"id\"])"
},
"x": {"scale": "x", "field": "data"},
"y": {
diff --git a/examples/compiled/concat_bar_layer_circle.vg.json b/examples/compiled/concat_bar_layer_circle.vg.json
index 396de77abf..86513859da 100644
--- a/examples/compiled/concat_bar_layer_circle.vg.json
+++ b/examples/compiled/concat_bar_layer_circle.vg.json
@@ -152,7 +152,7 @@
"opacity": {"value": 0.4},
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"null\" : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\")) + \"; Rotten Tomatoes Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_Rotten Tomatoes Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_Rotten Tomatoes Rating\"]) ? \"null\" : format(datum[\"bin_maxbins_10_Rotten Tomatoes Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_Rotten Tomatoes Rating_end\"], \"\")) + \"; All Movies Count: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"\" + datum[\"bin_maxbins_10_IMDB Rating\"] : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\")) + \"; Rotten Tomatoes Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_Rotten Tomatoes Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_Rotten Tomatoes Rating\"]) ? \"\" + datum[\"bin_maxbins_10_Rotten Tomatoes Rating\"] : format(datum[\"bin_maxbins_10_Rotten Tomatoes Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_Rotten Tomatoes Rating_end\"], \"\")) + \"; All Movies Count: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x": {
"signal": "scale(\"concat_0_x\", 0.5 * datum[\"bin_maxbins_10_IMDB Rating\"] + 0.5 * datum[\"bin_maxbins_10_IMDB Rating_end\"])"
@@ -176,7 +176,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"null\" : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\")) + \"; Rotten Tomatoes Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_Rotten Tomatoes Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_Rotten Tomatoes Rating\"]) ? \"null\" : format(datum[\"bin_maxbins_10_Rotten Tomatoes Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_Rotten Tomatoes Rating_end\"], \"\")) + \"; Selected Category Count: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"\" + datum[\"bin_maxbins_10_IMDB Rating\"] : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\")) + \"; Rotten Tomatoes Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_Rotten Tomatoes Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_Rotten Tomatoes Rating\"]) ? \"\" + datum[\"bin_maxbins_10_Rotten Tomatoes Rating\"] : format(datum[\"bin_maxbins_10_Rotten Tomatoes Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_Rotten Tomatoes Rating_end\"], \"\")) + \"; Selected Category Count: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x": {
"signal": "scale(\"concat_0_x\", 0.5 * datum[\"bin_maxbins_10_IMDB Rating\"] + 0.5 * datum[\"bin_maxbins_10_IMDB Rating_end\"])"
@@ -312,7 +312,7 @@
],
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Major Genre: \" + (isValid(datum[\"Major Genre\"]) ? datum[\"Major Genre\"] : \"\"+datum[\"Major Genre\"]) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"Major Genre: \" + (\"\" + datum[\"Major Genre\"]) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x": {"scale": "concat_1_x", "field": "Major Genre"},
"width": {"signal": "max(0.25, bandwidth('concat_1_x'))"},
diff --git a/examples/compiled/concat_bar_scales_discretize.vg.json b/examples/compiled/concat_bar_scales_discretize.vg.json
index c97f3775ff..0110dc9580 100644
--- a/examples/compiled/concat_bar_scales_discretize.vg.json
+++ b/examples/compiled/concat_bar_scales_discretize.vg.json
@@ -91,9 +91,7 @@
"opacity": {"value": 0.7},
"fill": {"scale": "concat_0_color", "field": "b"},
"ariaRoleDescription": {"value": "circle"},
- "description": {
- "signal": "\"b: \" + (isValid(datum[\"b\"]) ? datum[\"b\"] : \"\"+datum[\"b\"])"
- },
+ "description": {"signal": "\"b: \" + (\"\" + datum[\"b\"])"},
"x": {"signal": "childWidth", "mult": 0.5},
"y": {"scale": "concat_0_y", "field": "b"},
"size": {"scale": "concat_0_size", "field": "b"},
@@ -144,9 +142,7 @@
"opacity": {"value": 0.7},
"fill": {"scale": "concat_1_color", "field": "b"},
"ariaRoleDescription": {"value": "circle"},
- "description": {
- "signal": "\"b: \" + (isValid(datum[\"b\"]) ? datum[\"b\"] : \"\"+datum[\"b\"])"
- },
+ "description": {"signal": "\"b: \" + (\"\" + datum[\"b\"])"},
"x": {"signal": "childWidth", "mult": 0.5},
"y": {"scale": "concat_1_y", "field": "b"},
"size": {"scale": "concat_1_size", "field": "b"},
@@ -199,9 +195,7 @@
"opacity": {"value": 0.7},
"fill": {"scale": "concat_2_color", "field": "b"},
"ariaRoleDescription": {"value": "circle"},
- "description": {
- "signal": "\"b: \" + (isValid(datum[\"b\"]) ? datum[\"b\"] : \"\"+datum[\"b\"])"
- },
+ "description": {"signal": "\"b: \" + (\"\" + datum[\"b\"])"},
"x": {"signal": "childWidth", "mult": 0.5},
"y": {"scale": "concat_2_y", "field": "b"},
"size": {"scale": "concat_2_size", "field": "b"},
diff --git a/examples/compiled/concat_bar_scales_discretize_2_cols.vg.json b/examples/compiled/concat_bar_scales_discretize_2_cols.vg.json
index 6da634961a..f7c836bb79 100644
--- a/examples/compiled/concat_bar_scales_discretize_2_cols.vg.json
+++ b/examples/compiled/concat_bar_scales_discretize_2_cols.vg.json
@@ -91,9 +91,7 @@
"opacity": {"value": 0.7},
"fill": {"scale": "concat_0_color", "field": "b"},
"ariaRoleDescription": {"value": "circle"},
- "description": {
- "signal": "\"b: \" + (isValid(datum[\"b\"]) ? datum[\"b\"] : \"\"+datum[\"b\"])"
- },
+ "description": {"signal": "\"b: \" + (\"\" + datum[\"b\"])"},
"x": {"signal": "childWidth", "mult": 0.5},
"y": {"scale": "concat_0_y", "field": "b"},
"size": {"scale": "concat_0_size", "field": "b"},
@@ -144,9 +142,7 @@
"opacity": {"value": 0.7},
"fill": {"scale": "concat_1_color", "field": "b"},
"ariaRoleDescription": {"value": "circle"},
- "description": {
- "signal": "\"b: \" + (isValid(datum[\"b\"]) ? datum[\"b\"] : \"\"+datum[\"b\"])"
- },
+ "description": {"signal": "\"b: \" + (\"\" + datum[\"b\"])"},
"x": {"signal": "childWidth", "mult": 0.5},
"y": {"scale": "concat_1_y", "field": "b"},
"size": {"scale": "concat_1_size", "field": "b"},
@@ -199,9 +195,7 @@
"opacity": {"value": 0.7},
"fill": {"scale": "concat_2_color", "field": "b"},
"ariaRoleDescription": {"value": "circle"},
- "description": {
- "signal": "\"b: \" + (isValid(datum[\"b\"]) ? datum[\"b\"] : \"\"+datum[\"b\"])"
- },
+ "description": {"signal": "\"b: \" + (\"\" + datum[\"b\"])"},
"x": {"signal": "childWidth", "mult": 0.5},
"y": {"scale": "concat_2_y", "field": "b"},
"size": {"scale": "concat_2_size", "field": "b"},
diff --git a/examples/compiled/concat_hover.vg.json b/examples/compiled/concat_hover.vg.json
index 56846cba0c..19bd552b5a 100644
--- a/examples/compiled/concat_hover.vg.json
+++ b/examples/compiled/concat_hover.vg.json
@@ -122,7 +122,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (\"\" + datum[\"Cylinders\"])"
},
"x": {"scale": "concat_0_x", "field": "Horsepower"},
"y": {"scale": "concat_0_y", "field": "Miles_per_Gallon"}
@@ -250,7 +250,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Acceleration: \" + (format(datum[\"Acceleration\"], \"\")) + \"; Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Acceleration: \" + (!isValid(datum[\"Acceleration\"]) || !isFinite(+datum[\"Acceleration\"]) ? \"\" + datum[\"Acceleration\"] : format(datum[\"Acceleration\"], \"\")) + \"; Cylinders: \" + (\"\" + datum[\"Cylinders\"])"
},
"x": {"scale": "concat_1_x", "field": "Horsepower"},
"y": {"scale": "concat_1_y", "field": "Acceleration"}
diff --git a/examples/compiled/concat_hover_filter.vg.json b/examples/compiled/concat_hover_filter.vg.json
index 120ca84bc5..f85b021ef2 100644
--- a/examples/compiled/concat_hover_filter.vg.json
+++ b/examples/compiled/concat_hover_filter.vg.json
@@ -145,7 +145,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\"))"
},
"x": {"scale": "concat_0_x", "field": "Horsepower"},
"y": {"scale": "concat_0_y", "field": "Miles_per_Gallon"}
@@ -165,7 +165,7 @@
"stroke": {"value": "goldenrod"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\"))"
},
"x": {"scale": "concat_0_x", "field": "Horsepower"},
"y": {"scale": "concat_0_y", "field": "Miles_per_Gallon"}
@@ -286,7 +286,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Acceleration: \" + (format(datum[\"Acceleration\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Acceleration: \" + (!isValid(datum[\"Acceleration\"]) || !isFinite(+datum[\"Acceleration\"]) ? \"\" + datum[\"Acceleration\"] : format(datum[\"Acceleration\"], \"\"))"
},
"x": {"scale": "concat_1_x", "field": "Horsepower"},
"y": {"scale": "concat_1_y", "field": "Acceleration"}
@@ -306,7 +306,7 @@
"stroke": {"value": "goldenrod"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Acceleration: \" + (format(datum[\"Acceleration\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Acceleration: \" + (!isValid(datum[\"Acceleration\"]) || !isFinite(+datum[\"Acceleration\"]) ? \"\" + datum[\"Acceleration\"] : format(datum[\"Acceleration\"], \"\"))"
},
"x": {"scale": "concat_1_x", "field": "Horsepower"},
"y": {"scale": "concat_1_y", "field": "Acceleration"}
diff --git a/examples/compiled/concat_layer_voyager_result.vg.json b/examples/compiled/concat_layer_voyager_result.vg.json
index 38eb4f2142..290fb803f0 100644
--- a/examples/compiled/concat_layer_voyager_result.vg.json
+++ b/examples/compiled/concat_layer_voyager_result.vg.json
@@ -138,7 +138,7 @@
"update": {
"stroke": {"value": "black"},
"description": {
- "signal": "\"lo: \" + (format(datum[\"lo\"], \"\")) + \"; study: \" + (isValid(datum[\"study\"]) ? datum[\"study\"] : \"\"+datum[\"study\"]) + \"; hi: \" + (format(datum[\"hi\"], \"\"))"
+ "signal": "\"lo: \" + (!isValid(datum[\"lo\"]) || !isFinite(+datum[\"lo\"]) ? \"\" + datum[\"lo\"] : format(datum[\"lo\"], \"\")) + \"; study: \" + (\"\" + datum[\"study\"]) + \"; hi: \" + (!isValid(datum[\"hi\"]) || !isFinite(+datum[\"hi\"]) ? \"\" + datum[\"hi\"] : format(datum[\"hi\"], \"\"))"
},
"x": {"scale": "concat_0_x", "field": "lo"},
"x2": {"scale": "concat_0_x", "field": "hi"},
@@ -158,7 +158,7 @@
"fill": {"scale": "color", "field": "measure"},
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"mean: \" + (format(datum[\"mean\"], \"\")) + \"; study: \" + (isValid(datum[\"study\"]) ? datum[\"study\"] : \"\"+datum[\"study\"]) + \"; measure: \" + (isValid(datum[\"measure\"]) ? datum[\"measure\"] : \"\"+datum[\"measure\"])"
+ "signal": "\"mean: \" + (!isValid(datum[\"mean\"]) || !isFinite(+datum[\"mean\"]) ? \"\" + datum[\"mean\"] : format(datum[\"mean\"], \"\")) + \"; study: \" + (\"\" + datum[\"study\"]) + \"; measure: \" + (\"\" + datum[\"measure\"])"
},
"x": {"scale": "concat_0_x", "field": "mean"},
"y": {"scale": "concat_0_y", "field": "study", "band": 0.5},
@@ -233,7 +233,7 @@
"update": {
"stroke": {"value": "black"},
"description": {
- "signal": "\"from: \" + (format(datum[\"from\"], \"\")) + \"; to: \" + (format(datum[\"to\"], \"\"))"
+ "signal": "\"from: \" + (!isValid(datum[\"from\"]) || !isFinite(+datum[\"from\"]) ? \"\" + datum[\"from\"] : format(datum[\"from\"], \"\")) + \"; to: \" + (!isValid(datum[\"to\"]) || !isFinite(+datum[\"to\"]) ? \"\" + datum[\"to\"] : format(datum[\"to\"], \"\"))"
},
"x": {"scale": "concat_1_x", "field": "from"},
"x2": {"scale": "concat_1_x", "field": "to"},
@@ -253,7 +253,7 @@
"size": {"value": 60},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"to: \" + (format(datum[\"to\"], \"\"))"
+ "signal": "\"to: \" + (!isValid(datum[\"to\"]) || !isFinite(+datum[\"to\"]) ? \"\" + datum[\"to\"] : format(datum[\"to\"], \"\"))"
},
"x": {"scale": "concat_1_x", "field": "to"},
"y": {"signal": "concat_1_height", "mult": 0.5},
@@ -275,7 +275,7 @@
"text": {"value": ["Polestar", "More Valuable"]},
"fill": {"value": "black"},
"description": {
- "signal": "\"from: \" + (format(datum[\"from\"], \"\"))"
+ "signal": "\"from: \" + (!isValid(datum[\"from\"]) || !isFinite(+datum[\"from\"]) ? \"\" + datum[\"from\"] : format(datum[\"from\"], \"\"))"
},
"x": {"scale": "concat_1_x", "field": "from"},
"y": {"signal": "concat_1_height", "mult": 0.5},
@@ -294,7 +294,7 @@
"text": {"value": ["Voyager / Voyager 2", "More Valuable"]},
"fill": {"value": "black"},
"description": {
- "signal": "\"from: \" + (format(datum[\"from\"], \"\"))"
+ "signal": "\"from: \" + (!isValid(datum[\"from\"]) || !isFinite(+datum[\"from\"]) ? \"\" + datum[\"from\"] : format(datum[\"from\"], \"\"))"
},
"x": {"scale": "concat_1_x", "field": "from"},
"y": {"signal": "concat_1_height", "mult": 0.5},
diff --git a/examples/compiled/concat_marginal_histograms.vg.json b/examples/compiled/concat_marginal_histograms.vg.json
index 2c4a6d604d..52b4be57c7 100644
--- a/examples/compiled/concat_marginal_histograms.vg.json
+++ b/examples/compiled/concat_marginal_histograms.vg.json
@@ -137,7 +137,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"null\" : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"\" + datum[\"bin_maxbins_10_IMDB Rating\"] : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x2": {
"scale": "concat_0_x",
@@ -209,7 +209,7 @@
"update": {
"fill": {"scale": "color", "field": "__count"},
"description": {
- "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"null\" : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\")) + \"; Rotten Tomatoes Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_Rotten Tomatoes Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_Rotten Tomatoes Rating\"]) ? \"null\" : format(datum[\"bin_maxbins_10_Rotten Tomatoes Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_Rotten Tomatoes Rating_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"\" + datum[\"bin_maxbins_10_IMDB Rating\"] : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\")) + \"; Rotten Tomatoes Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_Rotten Tomatoes Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_Rotten Tomatoes Rating\"]) ? \"\" + datum[\"bin_maxbins_10_Rotten Tomatoes Rating\"] : format(datum[\"bin_maxbins_10_Rotten Tomatoes Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_Rotten Tomatoes Rating_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x2": {
"scale": "concat_1_concat_0_x",
@@ -286,7 +286,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Count of Records: \" + (format(datum[\"__count\"], \"\")) + \"; Rotten Tomatoes Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_Rotten Tomatoes Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_Rotten Tomatoes Rating\"]) ? \"null\" : format(datum[\"bin_maxbins_10_Rotten Tomatoes Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_Rotten Tomatoes Rating_end\"], \"\"))"
+ "signal": "\"Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\")) + \"; Rotten Tomatoes Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_Rotten Tomatoes Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_Rotten Tomatoes Rating\"]) ? \"\" + datum[\"bin_maxbins_10_Rotten Tomatoes Rating\"] : format(datum[\"bin_maxbins_10_Rotten Tomatoes Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_Rotten Tomatoes Rating_end\"], \"\"))"
},
"x": {"scale": "concat_1_concat_1_x", "field": "__count"},
"x2": {"scale": "concat_1_concat_1_x", "value": 0},
diff --git a/examples/compiled/concat_population_pyramid.vg.json b/examples/compiled/concat_population_pyramid.vg.json
index 8e337a1fb8..b9bb9bc60e 100644
--- a/examples/compiled/concat_population_pyramid.vg.json
+++ b/examples/compiled/concat_population_pyramid.vg.json
@@ -124,7 +124,7 @@
"fill": {"scale": "color", "field": "gender"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"population: \" + (format(datum[\"sum_people\"], \"s\")) + \"; age: \" + (isValid(datum[\"age\"]) ? datum[\"age\"] : \"\"+datum[\"age\"]) + \"; gender: \" + (isValid(datum[\"gender\"]) ? datum[\"gender\"] : \"\"+datum[\"gender\"])"
+ "signal": "\"population: \" + (!isValid(datum[\"sum_people\"]) || !isFinite(+datum[\"sum_people\"]) ? \"\" + datum[\"sum_people\"] : format(datum[\"sum_people\"], \"s\")) + \"; age: \" + (\"\" + datum[\"age\"]) + \"; gender: \" + (\"\" + datum[\"gender\"])"
},
"x": {"scale": "concat_0_x", "field": "sum_people_end"},
"x2": {"scale": "concat_0_x", "field": "sum_people_start"},
@@ -169,12 +169,12 @@
"update": {
"align": {"value": "center"},
"fill": {"value": "black"},
- "description": {
- "signal": "\"age: \" + (isValid(datum[\"age\"]) ? datum[\"age\"] : \"\"+datum[\"age\"])"
- },
+ "description": {"signal": "\"age: \" + (\"\" + datum[\"age\"])"},
"x": {"signal": "concat_1_width", "mult": 0.5},
"y": {"scale": "concat_1_y", "field": "age"},
- "text": {"signal": "format(datum[\"age\"], \"\")"},
+ "text": {
+ "signal": "!isValid(datum[\"age\"]) || !isFinite(+datum[\"age\"]) ? \"\" + datum[\"age\"] : format(datum[\"age\"], \"\")"
+ },
"baseline": {"value": "middle"}
}
}
@@ -203,7 +203,7 @@
"fill": {"scale": "color", "field": "gender"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"population: \" + (format(datum[\"sum_people\"], \"s\")) + \"; age: \" + (isValid(datum[\"age\"]) ? datum[\"age\"] : \"\"+datum[\"age\"]) + \"; gender: \" + (isValid(datum[\"gender\"]) ? datum[\"gender\"] : \"\"+datum[\"gender\"])"
+ "signal": "\"population: \" + (!isValid(datum[\"sum_people\"]) || !isFinite(+datum[\"sum_people\"]) ? \"\" + datum[\"sum_people\"] : format(datum[\"sum_people\"], \"s\")) + \"; age: \" + (\"\" + datum[\"age\"]) + \"; gender: \" + (\"\" + datum[\"gender\"])"
},
"x": {"scale": "concat_2_x", "field": "sum_people_end"},
"x2": {"scale": "concat_2_x", "field": "sum_people_start"},
diff --git a/examples/compiled/concat_weather.vg.json b/examples/compiled/concat_weather.vg.json
index c3ce9cc2a1..8462fe3b15 100644
--- a/examples/compiled/concat_weather.vg.json
+++ b/examples/compiled/concat_weather.vg.json
@@ -135,7 +135,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"date (month): \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of precipitation: \" + (format(datum[\"mean_precipitation\"], \"\"))"
+ "signal": "\"date (month): \" + (!isValid(datum[\"month_date\"]) || !isFinite(+datum[\"month_date\"]) ? \"\" + datum[\"month_date\"] : timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of precipitation: \" + (!isValid(datum[\"mean_precipitation\"]) || !isFinite(+datum[\"mean_precipitation\"]) ? \"\" + datum[\"mean_precipitation\"] : format(datum[\"mean_precipitation\"], \"\"))"
},
"x": {"scale": "concat_0_x", "field": "month_date"},
"width": {"signal": "max(0.25, bandwidth('concat_0_x'))"},
@@ -207,7 +207,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"date (month): \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Median of precipitation: \" + (format(datum[\"median_precipitation\"], \"\"))"
+ "signal": "\"date (month): \" + (!isValid(datum[\"month_date\"]) || !isFinite(+datum[\"month_date\"]) ? \"\" + datum[\"month_date\"] : timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Median of precipitation: \" + (!isValid(datum[\"median_precipitation\"]) || !isFinite(+datum[\"median_precipitation\"]) ? \"\" + datum[\"median_precipitation\"] : format(datum[\"median_precipitation\"], \"\"))"
},
"x": {"scale": "concat_1_x", "field": "month_date"},
"width": {"signal": "max(0.25, bandwidth('concat_1_x'))"},
@@ -280,7 +280,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"temp_min (binned): \" + (!isValid(datum[\"bin_maxbins_10_temp_min\"]) || !isFinite(+datum[\"bin_maxbins_10_temp_min\"]) ? \"null\" : format(datum[\"bin_maxbins_10_temp_min\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_temp_min_end\"], \"\")) + \"; temp_max (binned): \" + (!isValid(datum[\"bin_maxbins_10_temp_max\"]) || !isFinite(+datum[\"bin_maxbins_10_temp_max\"]) ? \"null\" : format(datum[\"bin_maxbins_10_temp_max\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_temp_max_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"temp_min (binned): \" + (!isValid(datum[\"bin_maxbins_10_temp_min\"]) || !isFinite(+datum[\"bin_maxbins_10_temp_min\"]) ? \"\" + datum[\"bin_maxbins_10_temp_min\"] : format(datum[\"bin_maxbins_10_temp_min\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_temp_min_end\"], \"\")) + \"; temp_max (binned): \" + (!isValid(datum[\"bin_maxbins_10_temp_max\"]) || !isFinite(+datum[\"bin_maxbins_10_temp_max\"]) ? \"\" + datum[\"bin_maxbins_10_temp_max\"] : format(datum[\"bin_maxbins_10_temp_max\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_temp_max_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x": {
"signal": "scale(\"concat_2_x\", 0.5 * datum[\"bin_maxbins_10_temp_min\"] + 0.5 * datum[\"bin_maxbins_10_temp_min_end\"])"
diff --git a/examples/compiled/config_numberFormatType_test.vg.json b/examples/compiled/config_numberFormatType_test.vg.json
index 6185f28c47..b126f7bb03 100644
--- a/examples/compiled/config_numberFormatType_test.vg.json
+++ b/examples/compiled/config_numberFormatType_test.vg.json
@@ -113,7 +113,11 @@
"tickCount": {"signal": "ceil(child_height/40)"},
"encode": {
"labels": {
- "update": {"text": {"signal": "pow(datum.value, \"1.0\")"}}
+ "update": {
+ "text": {
+ "signal": "!isValid(datum.value) || !isFinite(+datum.value) ? \"\" + datum.value : pow(datum.value, \"1.0\")"
+ }
+ }
}
},
"zindex": 0
@@ -144,7 +148,7 @@
"type": "group",
"title": {
"text": {
- "signal": "!isValid(parent[\"bin_maxbins_4_Weight_in_lbs\"]) || !isFinite(+parent[\"bin_maxbins_4_Weight_in_lbs\"]) ? \"null\" : pow(parent[\"bin_maxbins_4_Weight_in_lbs\"], \"1.0\") + \" – \" + pow(parent[\"bin_maxbins_4_Weight_in_lbs_end\"], \"1.0\")"
+ "signal": "!isValid(parent[\"bin_maxbins_4_Weight_in_lbs\"]) || !isFinite(+parent[\"bin_maxbins_4_Weight_in_lbs\"]) ? \"\" + parent[\"bin_maxbins_4_Weight_in_lbs\"] : pow(parent[\"bin_maxbins_4_Weight_in_lbs\"], \"1.0\") + \" – \" + pow(parent[\"bin_maxbins_4_Weight_in_lbs_end\"], \"1.0\")"
},
"style": "guide-label",
"frame": "group",
@@ -181,13 +185,13 @@
"update": {
"opacity": {"value": 0.7},
"tooltip": {
- "signal": "{\"Year\": timeFormat(datum[\"Year\"], '%b %d, %Y'), \"Miles_per_Gallon\": pow(datum[\"Miles_per_Gallon\"], \"1.0\"), \"Acceleration\": pow(datum[\"Acceleration\"], \"1.0\"), \"Displacement (binned)\": !isValid(datum[\"bin_maxbins_6_Displacement\"]) || !isFinite(+datum[\"bin_maxbins_6_Displacement\"]) ? \"null\" : pow(datum[\"bin_maxbins_6_Displacement\"], \"1.0\") + \" – \" + pow(datum[\"bin_maxbins_6_Displacement_end\"], \"1.0\")}"
+ "signal": "{\"Year\": !isValid(datum[\"Year\"]) || !isFinite(+datum[\"Year\"]) ? \"\" + datum[\"Year\"] : timeFormat(datum[\"Year\"], '%b %d, %Y'), \"Miles_per_Gallon\": !isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : pow(datum[\"Miles_per_Gallon\"], \"1.0\"), \"Acceleration\": !isValid(datum[\"Acceleration\"]) || !isFinite(+datum[\"Acceleration\"]) ? \"\" + datum[\"Acceleration\"] : pow(datum[\"Acceleration\"], \"1.0\"), \"Displacement (binned)\": !isValid(datum[\"bin_maxbins_6_Displacement\"]) || !isFinite(+datum[\"bin_maxbins_6_Displacement\"]) ? \"\" + datum[\"bin_maxbins_6_Displacement\"] : pow(datum[\"bin_maxbins_6_Displacement\"], \"1.0\") + \" – \" + pow(datum[\"bin_maxbins_6_Displacement_end\"], \"1.0\")}"
},
"fill": {"value": "transparent"},
"stroke": {"scale": "color", "field": "Acceleration"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Year: \" + (timeFormat(datum[\"Year\"], '%b %d, %Y')) + \"; Miles_per_Gallon: \" + (pow(datum[\"Miles_per_Gallon\"], \"1.0\")) + \"; Acceleration: \" + (pow(datum[\"Acceleration\"], \"1.0\")) + \"; Displacement (binned): \" + (!isValid(datum[\"bin_maxbins_6_Displacement\"]) || !isFinite(+datum[\"bin_maxbins_6_Displacement\"]) ? \"null\" : pow(datum[\"bin_maxbins_6_Displacement\"], \"1.0\") + \" – \" + pow(datum[\"bin_maxbins_6_Displacement_end\"], \"1.0\"))"
+ "signal": "\"Year: \" + (!isValid(datum[\"Year\"]) || !isFinite(+datum[\"Year\"]) ? \"\" + datum[\"Year\"] : timeFormat(datum[\"Year\"], '%b %d, %Y')) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : pow(datum[\"Miles_per_Gallon\"], \"1.0\")) + \"; Acceleration: \" + (!isValid(datum[\"Acceleration\"]) || !isFinite(+datum[\"Acceleration\"]) ? \"\" + datum[\"Acceleration\"] : pow(datum[\"Acceleration\"], \"1.0\")) + \"; Displacement (binned): \" + (!isValid(datum[\"bin_maxbins_6_Displacement\"]) || !isFinite(+datum[\"bin_maxbins_6_Displacement\"]) ? \"\" + datum[\"bin_maxbins_6_Displacement\"] : pow(datum[\"bin_maxbins_6_Displacement\"], \"1.0\") + \" – \" + pow(datum[\"bin_maxbins_6_Displacement_end\"], \"1.0\"))"
},
"x": {"scale": "x", "field": "Year"},
"y": {"scale": "y", "field": "Miles_per_Gallon"},
@@ -270,7 +274,13 @@
"gradientLength": {"signal": "clamp(child_height, 64, 200)"},
"title": "Acceleration",
"encode": {
- "labels": {"update": {"text": {"signal": "pow(datum.value, \"1.0\")"}}},
+ "labels": {
+ "update": {
+ "text": {
+ "signal": "!isValid(datum.value) || !isFinite(+datum.value) ? \"\" + datum.value : pow(datum.value, \"1.0\")"
+ }
+ }
+ },
"gradient": {"update": {"opacity": {"value": 0.7}}}
}
},
@@ -279,7 +289,13 @@
"symbolType": "circle",
"title": "Displacement (binned)",
"encode": {
- "labels": {"update": {"text": {"signal": "pow(datum.value, \"1.0\")"}}},
+ "labels": {
+ "update": {
+ "text": {
+ "signal": "!isValid(datum.value) || !isFinite(+datum.value) ? \"\" + datum.value : pow(datum.value, \"1.0\")"
+ }
+ }
+ },
"symbols": {
"update": {
"fill": {"value": "transparent"},
diff --git a/examples/compiled/config_numberFormatType_tooltip.vg.json b/examples/compiled/config_numberFormatType_tooltip.vg.json
index b5c555ffc5..491135d2c5 100644
--- a/examples/compiled/config_numberFormatType_tooltip.vg.json
+++ b/examples/compiled/config_numberFormatType_tooltip.vg.json
@@ -35,12 +35,12 @@
"encode": {
"update": {
"tooltip": {
- "signal": "{\"Year\": timeFormat(datum[\"Year\"], '%b %d, %Y'), \"Average of Miles_per_Gallon\": format(datum[\"average_Miles_per_Gallon\"], \".8f\")}"
+ "signal": "{\"Year\": !isValid(datum[\"Year\"]) || !isFinite(+datum[\"Year\"]) ? \"\" + datum[\"Year\"] : timeFormat(datum[\"Year\"], '%b %d, %Y'), \"Average of Miles_per_Gallon\": !isValid(datum[\"average_Miles_per_Gallon\"]) || !isFinite(+datum[\"average_Miles_per_Gallon\"]) ? \"\" + datum[\"average_Miles_per_Gallon\"] : format(datum[\"average_Miles_per_Gallon\"], \".8f\")}"
},
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Year: \" + (timeFormat(datum[\"Year\"], '%b %d, %Y')) + \"; Average of Miles_per_Gallon: \" + (format(datum[\"average_Miles_per_Gallon\"], \".8f\"))"
+ "signal": "\"Year: \" + (!isValid(datum[\"Year\"]) || !isFinite(+datum[\"Year\"]) ? \"\" + datum[\"Year\"] : timeFormat(datum[\"Year\"], '%b %d, %Y')) + \"; Average of Miles_per_Gallon: \" + (!isValid(datum[\"average_Miles_per_Gallon\"]) || !isFinite(+datum[\"average_Miles_per_Gallon\"]) ? \"\" + datum[\"average_Miles_per_Gallon\"] : format(datum[\"average_Miles_per_Gallon\"], \".8f\"))"
},
"xc": {"scale": "x", "field": "Year"},
"width": {"value": 5},
diff --git a/examples/compiled/connected_scatterplot.vg.json b/examples/compiled/connected_scatterplot.vg.json
index fa57708d38..f1e7ab2d91 100644
--- a/examples/compiled/connected_scatterplot.vg.json
+++ b/examples/compiled/connected_scatterplot.vg.json
@@ -33,7 +33,7 @@
"update": {
"stroke": {"value": "#4c78a8"},
"description": {
- "signal": "\"miles: \" + (format(datum[\"miles\"], \"\")) + \"; gas: \" + (format(datum[\"gas\"], \"\")) + \"; year: \" + (isValid(datum[\"year\"]) ? datum[\"year\"] : \"\"+datum[\"year\"])"
+ "signal": "\"miles: \" + (!isValid(datum[\"miles\"]) || !isFinite(+datum[\"miles\"]) ? \"\" + datum[\"miles\"] : format(datum[\"miles\"], \"\")) + \"; gas: \" + (!isValid(datum[\"gas\"]) || !isFinite(+datum[\"gas\"]) ? \"\" + datum[\"gas\"] : format(datum[\"gas\"], \"\")) + \"; year: \" + (\"\" + datum[\"year\"])"
},
"x": {"scale": "x", "field": "miles"},
"y": {"scale": "y", "field": "gas"},
@@ -55,7 +55,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"miles: \" + (format(datum[\"miles\"], \"\")) + \"; gas: \" + (format(datum[\"gas\"], \"\")) + \"; year: \" + (isValid(datum[\"year\"]) ? datum[\"year\"] : \"\"+datum[\"year\"])"
+ "signal": "\"miles: \" + (!isValid(datum[\"miles\"]) || !isFinite(+datum[\"miles\"]) ? \"\" + datum[\"miles\"] : format(datum[\"miles\"], \"\")) + \"; gas: \" + (!isValid(datum[\"gas\"]) || !isFinite(+datum[\"gas\"]) ? \"\" + datum[\"gas\"] : format(datum[\"gas\"], \"\")) + \"; year: \" + (\"\" + datum[\"year\"])"
},
"x": {"scale": "x", "field": "miles"},
"y": {"scale": "y", "field": "gas"}
diff --git a/examples/compiled/dynamic_color_legend.vg.json b/examples/compiled/dynamic_color_legend.vg.json
index 8fe244ec85..7189af3705 100644
--- a/examples/compiled/dynamic_color_legend.vg.json
+++ b/examples/compiled/dynamic_color_legend.vg.json
@@ -324,7 +324,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Date: \" + (timeFormat(datum[\"monthdate_date\"], '%b')) + \"; Maximum Daily Temperature (C): \" + (format(datum[\"temp_max\"], \"\")) + \"; Weather: \" + (isValid(datum[\"weather\"]) ? datum[\"weather\"] : \"\"+datum[\"weather\"]) + \"; Precipitation: \" + (format(datum[\"precipitation\"], \"\"))"
+ "signal": "\"Date: \" + (!isValid(datum[\"monthdate_date\"]) || !isFinite(+datum[\"monthdate_date\"]) ? \"\" + datum[\"monthdate_date\"] : timeFormat(datum[\"monthdate_date\"], '%b')) + \"; Maximum Daily Temperature (C): \" + (!isValid(datum[\"temp_max\"]) || !isFinite(+datum[\"temp_max\"]) ? \"\" + datum[\"temp_max\"] : format(datum[\"temp_max\"], \"\")) + \"; Weather: \" + (\"\" + datum[\"weather\"]) + \"; Precipitation: \" + (!isValid(datum[\"precipitation\"]) || !isFinite(+datum[\"precipitation\"]) ? \"\" + datum[\"precipitation\"] : format(datum[\"precipitation\"], \"\"))"
},
"x": {"scale": "concat_0_x", "field": "monthdate_date"},
"y": {"scale": "concat_0_y", "field": "temp_max"},
@@ -507,7 +507,7 @@
],
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Count of Records: \" + (format(datum[\"__count\"], \"\")) + \"; Weather: \" + (isValid(datum[\"weather\"]) ? datum[\"weather\"] : \"\"+datum[\"weather\"]) + \"; weather: \" + (isValid(datum[\"weather\"]) ? datum[\"weather\"] : \"\"+datum[\"weather\"])"
+ "signal": "\"Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\")) + \"; Weather: \" + (\"\" + datum[\"weather\"]) + \"; weather: \" + (\"\" + datum[\"weather\"])"
},
"x": {"scale": "concat_1_x", "field": "__count"},
"x2": {"scale": "concat_1_x", "value": 0},
diff --git a/examples/compiled/embedded_csv.vg.json b/examples/compiled/embedded_csv.vg.json
index b66266cce5..09fc53a3aa 100644
--- a/examples/compiled/embedded_csv.vg.json
+++ b/examples/compiled/embedded_csv.vg.json
@@ -30,7 +30,9 @@
"fill": {"value": "transparent"},
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
- "description": {"signal": "\"a: \" + (format(datum[\"a\"], \"\"))"},
+ "description": {
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"))"
+ },
"x": {"signal": "width", "mult": 0.5},
"y": {"scale": "y", "field": "a"}
}
diff --git a/examples/compiled/errorband_2d_horizontal_color_encoding.vg.json b/examples/compiled/errorband_2d_horizontal_color_encoding.vg.json
index 1383cea4aa..e7ca3550ca 100644
--- a/examples/compiled/errorband_2d_horizontal_color_encoding.vg.json
+++ b/examples/compiled/errorband_2d_horizontal_color_encoding.vg.json
@@ -49,10 +49,10 @@
"orient": {"value": "vertical"},
"fill": {"value": "black"},
"tooltip": {
- "signal": "{\"Ci1 of Miles_per_Gallon\": format(datum[\"upper_Miles_per_Gallon\"], \"\"), \"Ci0 of Miles_per_Gallon\": format(datum[\"lower_Miles_per_Gallon\"], \"\"), \"Mean of Miles_per_Gallon\": format(datum[\"center_Miles_per_Gallon\"], \"\"), \"Year (year)\": timeFormat(datum[\"year_Year\"], '%b %d, %Y')}"
+ "signal": "{\"Ci1 of Miles_per_Gallon\": !isValid(datum[\"upper_Miles_per_Gallon\"]) || !isFinite(+datum[\"upper_Miles_per_Gallon\"]) ? \"\" + datum[\"upper_Miles_per_Gallon\"] : format(datum[\"upper_Miles_per_Gallon\"], \"\"), \"Ci0 of Miles_per_Gallon\": !isValid(datum[\"lower_Miles_per_Gallon\"]) || !isFinite(+datum[\"lower_Miles_per_Gallon\"]) ? \"\" + datum[\"lower_Miles_per_Gallon\"] : format(datum[\"lower_Miles_per_Gallon\"], \"\"), \"Mean of Miles_per_Gallon\": !isValid(datum[\"center_Miles_per_Gallon\"]) || !isFinite(+datum[\"center_Miles_per_Gallon\"]) ? \"\" + datum[\"center_Miles_per_Gallon\"] : format(datum[\"center_Miles_per_Gallon\"], \"\"), \"Year (year)\": !isValid(datum[\"year_Year\"]) || !isFinite(+datum[\"year_Year\"]) ? \"\" + datum[\"year_Year\"] : timeFormat(datum[\"year_Year\"], '%b %d, %Y')}"
},
"description": {
- "signal": "\"Year (year): \" + (timeFormat(datum[\"year_Year\"], '%b %d, %Y')) + \"; Miles per Gallon (95% CIs): \" + (format(datum[\"lower_Miles_per_Gallon\"], \"\")) + \"; upper_Miles_per_Gallon: \" + (format(datum[\"upper_Miles_per_Gallon\"], \"\")) + \"; Ci1 of Miles_per_Gallon: \" + (format(datum[\"upper_Miles_per_Gallon\"], \"\")) + \"; Ci0 of Miles_per_Gallon: \" + (format(datum[\"lower_Miles_per_Gallon\"], \"\")) + \"; Mean of Miles_per_Gallon: \" + (format(datum[\"center_Miles_per_Gallon\"], \"\"))"
+ "signal": "\"Year (year): \" + (!isValid(datum[\"year_Year\"]) || !isFinite(+datum[\"year_Year\"]) ? \"\" + datum[\"year_Year\"] : timeFormat(datum[\"year_Year\"], '%b %d, %Y')) + \"; Miles per Gallon (95% CIs): \" + (!isValid(datum[\"lower_Miles_per_Gallon\"]) || !isFinite(+datum[\"lower_Miles_per_Gallon\"]) ? \"\" + datum[\"lower_Miles_per_Gallon\"] : format(datum[\"lower_Miles_per_Gallon\"], \"\")) + \"; upper_Miles_per_Gallon: \" + (!isValid(datum[\"upper_Miles_per_Gallon\"]) || !isFinite(+datum[\"upper_Miles_per_Gallon\"]) ? \"\" + datum[\"upper_Miles_per_Gallon\"] : format(datum[\"upper_Miles_per_Gallon\"], \"\")) + \"; Ci1 of Miles_per_Gallon: \" + (!isValid(datum[\"upper_Miles_per_Gallon\"]) || !isFinite(+datum[\"upper_Miles_per_Gallon\"]) ? \"\" + datum[\"upper_Miles_per_Gallon\"] : format(datum[\"upper_Miles_per_Gallon\"], \"\")) + \"; Ci0 of Miles_per_Gallon: \" + (!isValid(datum[\"lower_Miles_per_Gallon\"]) || !isFinite(+datum[\"lower_Miles_per_Gallon\"]) ? \"\" + datum[\"lower_Miles_per_Gallon\"] : format(datum[\"lower_Miles_per_Gallon\"], \"\")) + \"; Mean of Miles_per_Gallon: \" + (!isValid(datum[\"center_Miles_per_Gallon\"]) || !isFinite(+datum[\"center_Miles_per_Gallon\"]) ? \"\" + datum[\"center_Miles_per_Gallon\"] : format(datum[\"center_Miles_per_Gallon\"], \"\"))"
},
"x": {"scale": "x", "field": "year_Year"},
"y": {"scale": "y", "field": "lower_Miles_per_Gallon"},
@@ -74,7 +74,7 @@
"update": {
"stroke": {"value": "black"},
"tooltip": {
- "signal": "{\"Ci1 of Miles_per_Gallon\": format(datum[\"upper_Miles_per_Gallon\"], \"\"), \"Ci0 of Miles_per_Gallon\": format(datum[\"lower_Miles_per_Gallon\"], \"\"), \"Mean of Miles_per_Gallon\": format(datum[\"center_Miles_per_Gallon\"], \"\"), \"Year (year)\": timeFormat(datum[\"year_Year\"], '%b %d, %Y')}"
+ "signal": "{\"Ci1 of Miles_per_Gallon\": !isValid(datum[\"upper_Miles_per_Gallon\"]) || !isFinite(+datum[\"upper_Miles_per_Gallon\"]) ? \"\" + datum[\"upper_Miles_per_Gallon\"] : format(datum[\"upper_Miles_per_Gallon\"], \"\"), \"Ci0 of Miles_per_Gallon\": !isValid(datum[\"lower_Miles_per_Gallon\"]) || !isFinite(+datum[\"lower_Miles_per_Gallon\"]) ? \"\" + datum[\"lower_Miles_per_Gallon\"] : format(datum[\"lower_Miles_per_Gallon\"], \"\"), \"Mean of Miles_per_Gallon\": !isValid(datum[\"center_Miles_per_Gallon\"]) || !isFinite(+datum[\"center_Miles_per_Gallon\"]) ? \"\" + datum[\"center_Miles_per_Gallon\"] : format(datum[\"center_Miles_per_Gallon\"], \"\"), \"Year (year)\": !isValid(datum[\"year_Year\"]) || !isFinite(+datum[\"year_Year\"]) ? \"\" + datum[\"year_Year\"] : timeFormat(datum[\"year_Year\"], '%b %d, %Y')}"
},
"x": {"scale": "x", "field": "year_Year"},
"y": {"scale": "y", "field": "lower_Miles_per_Gallon"},
@@ -95,7 +95,7 @@
"update": {
"stroke": {"value": "black"},
"tooltip": {
- "signal": "{\"Ci1 of Miles_per_Gallon\": format(datum[\"upper_Miles_per_Gallon\"], \"\"), \"Ci0 of Miles_per_Gallon\": format(datum[\"lower_Miles_per_Gallon\"], \"\"), \"Mean of Miles_per_Gallon\": format(datum[\"center_Miles_per_Gallon\"], \"\"), \"Year (year)\": timeFormat(datum[\"year_Year\"], '%b %d, %Y')}"
+ "signal": "{\"Ci1 of Miles_per_Gallon\": !isValid(datum[\"upper_Miles_per_Gallon\"]) || !isFinite(+datum[\"upper_Miles_per_Gallon\"]) ? \"\" + datum[\"upper_Miles_per_Gallon\"] : format(datum[\"upper_Miles_per_Gallon\"], \"\"), \"Ci0 of Miles_per_Gallon\": !isValid(datum[\"lower_Miles_per_Gallon\"]) || !isFinite(+datum[\"lower_Miles_per_Gallon\"]) ? \"\" + datum[\"lower_Miles_per_Gallon\"] : format(datum[\"lower_Miles_per_Gallon\"], \"\"), \"Mean of Miles_per_Gallon\": !isValid(datum[\"center_Miles_per_Gallon\"]) || !isFinite(+datum[\"center_Miles_per_Gallon\"]) ? \"\" + datum[\"center_Miles_per_Gallon\"] : format(datum[\"center_Miles_per_Gallon\"], \"\"), \"Year (year)\": !isValid(datum[\"year_Year\"]) || !isFinite(+datum[\"year_Year\"]) ? \"\" + datum[\"year_Year\"] : timeFormat(datum[\"year_Year\"], '%b %d, %Y')}"
},
"x": {"scale": "x", "field": "year_Year"},
"y": {"scale": "y", "field": "upper_Miles_per_Gallon"},
diff --git a/examples/compiled/errorband_2d_vertical_borders.vg.json b/examples/compiled/errorband_2d_vertical_borders.vg.json
index a34fde1cbe..5c9ac39183 100644
--- a/examples/compiled/errorband_2d_vertical_borders.vg.json
+++ b/examples/compiled/errorband_2d_vertical_borders.vg.json
@@ -49,10 +49,10 @@
"orient": {"value": "vertical"},
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"Ci1 of Miles_per_Gallon\": format(datum[\"upper_Miles_per_Gallon\"], \"\"), \"Ci0 of Miles_per_Gallon\": format(datum[\"lower_Miles_per_Gallon\"], \"\"), \"Mean of Miles_per_Gallon\": format(datum[\"center_Miles_per_Gallon\"], \"\"), \"Year (year)\": timeFormat(datum[\"year_Year\"], '%b %d, %Y')}"
+ "signal": "{\"Ci1 of Miles_per_Gallon\": !isValid(datum[\"upper_Miles_per_Gallon\"]) || !isFinite(+datum[\"upper_Miles_per_Gallon\"]) ? \"\" + datum[\"upper_Miles_per_Gallon\"] : format(datum[\"upper_Miles_per_Gallon\"], \"\"), \"Ci0 of Miles_per_Gallon\": !isValid(datum[\"lower_Miles_per_Gallon\"]) || !isFinite(+datum[\"lower_Miles_per_Gallon\"]) ? \"\" + datum[\"lower_Miles_per_Gallon\"] : format(datum[\"lower_Miles_per_Gallon\"], \"\"), \"Mean of Miles_per_Gallon\": !isValid(datum[\"center_Miles_per_Gallon\"]) || !isFinite(+datum[\"center_Miles_per_Gallon\"]) ? \"\" + datum[\"center_Miles_per_Gallon\"] : format(datum[\"center_Miles_per_Gallon\"], \"\"), \"Year (year)\": !isValid(datum[\"year_Year\"]) || !isFinite(+datum[\"year_Year\"]) ? \"\" + datum[\"year_Year\"] : timeFormat(datum[\"year_Year\"], '%b %d, %Y')}"
},
"description": {
- "signal": "\"Year (year): \" + (timeFormat(datum[\"year_Year\"], '%b %d, %Y')) + \"; Miles per Gallon (95% CIs): \" + (format(datum[\"lower_Miles_per_Gallon\"], \"\")) + \"; upper_Miles_per_Gallon: \" + (format(datum[\"upper_Miles_per_Gallon\"], \"\")) + \"; Ci1 of Miles_per_Gallon: \" + (format(datum[\"upper_Miles_per_Gallon\"], \"\")) + \"; Ci0 of Miles_per_Gallon: \" + (format(datum[\"lower_Miles_per_Gallon\"], \"\")) + \"; Mean of Miles_per_Gallon: \" + (format(datum[\"center_Miles_per_Gallon\"], \"\"))"
+ "signal": "\"Year (year): \" + (!isValid(datum[\"year_Year\"]) || !isFinite(+datum[\"year_Year\"]) ? \"\" + datum[\"year_Year\"] : timeFormat(datum[\"year_Year\"], '%b %d, %Y')) + \"; Miles per Gallon (95% CIs): \" + (!isValid(datum[\"lower_Miles_per_Gallon\"]) || !isFinite(+datum[\"lower_Miles_per_Gallon\"]) ? \"\" + datum[\"lower_Miles_per_Gallon\"] : format(datum[\"lower_Miles_per_Gallon\"], \"\")) + \"; upper_Miles_per_Gallon: \" + (!isValid(datum[\"upper_Miles_per_Gallon\"]) || !isFinite(+datum[\"upper_Miles_per_Gallon\"]) ? \"\" + datum[\"upper_Miles_per_Gallon\"] : format(datum[\"upper_Miles_per_Gallon\"], \"\")) + \"; Ci1 of Miles_per_Gallon: \" + (!isValid(datum[\"upper_Miles_per_Gallon\"]) || !isFinite(+datum[\"upper_Miles_per_Gallon\"]) ? \"\" + datum[\"upper_Miles_per_Gallon\"] : format(datum[\"upper_Miles_per_Gallon\"], \"\")) + \"; Ci0 of Miles_per_Gallon: \" + (!isValid(datum[\"lower_Miles_per_Gallon\"]) || !isFinite(+datum[\"lower_Miles_per_Gallon\"]) ? \"\" + datum[\"lower_Miles_per_Gallon\"] : format(datum[\"lower_Miles_per_Gallon\"], \"\")) + \"; Mean of Miles_per_Gallon: \" + (!isValid(datum[\"center_Miles_per_Gallon\"]) || !isFinite(+datum[\"center_Miles_per_Gallon\"]) ? \"\" + datum[\"center_Miles_per_Gallon\"] : format(datum[\"center_Miles_per_Gallon\"], \"\"))"
},
"x": {"scale": "x", "field": "year_Year"},
"y": {"scale": "y", "field": "lower_Miles_per_Gallon"},
@@ -74,7 +74,7 @@
"update": {
"stroke": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"Ci1 of Miles_per_Gallon\": format(datum[\"upper_Miles_per_Gallon\"], \"\"), \"Ci0 of Miles_per_Gallon\": format(datum[\"lower_Miles_per_Gallon\"], \"\"), \"Mean of Miles_per_Gallon\": format(datum[\"center_Miles_per_Gallon\"], \"\"), \"Year (year)\": timeFormat(datum[\"year_Year\"], '%b %d, %Y')}"
+ "signal": "{\"Ci1 of Miles_per_Gallon\": !isValid(datum[\"upper_Miles_per_Gallon\"]) || !isFinite(+datum[\"upper_Miles_per_Gallon\"]) ? \"\" + datum[\"upper_Miles_per_Gallon\"] : format(datum[\"upper_Miles_per_Gallon\"], \"\"), \"Ci0 of Miles_per_Gallon\": !isValid(datum[\"lower_Miles_per_Gallon\"]) || !isFinite(+datum[\"lower_Miles_per_Gallon\"]) ? \"\" + datum[\"lower_Miles_per_Gallon\"] : format(datum[\"lower_Miles_per_Gallon\"], \"\"), \"Mean of Miles_per_Gallon\": !isValid(datum[\"center_Miles_per_Gallon\"]) || !isFinite(+datum[\"center_Miles_per_Gallon\"]) ? \"\" + datum[\"center_Miles_per_Gallon\"] : format(datum[\"center_Miles_per_Gallon\"], \"\"), \"Year (year)\": !isValid(datum[\"year_Year\"]) || !isFinite(+datum[\"year_Year\"]) ? \"\" + datum[\"year_Year\"] : timeFormat(datum[\"year_Year\"], '%b %d, %Y')}"
},
"x": {"scale": "x", "field": "year_Year"},
"y": {"scale": "y", "field": "lower_Miles_per_Gallon"},
@@ -95,7 +95,7 @@
"update": {
"stroke": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"Ci1 of Miles_per_Gallon\": format(datum[\"upper_Miles_per_Gallon\"], \"\"), \"Ci0 of Miles_per_Gallon\": format(datum[\"lower_Miles_per_Gallon\"], \"\"), \"Mean of Miles_per_Gallon\": format(datum[\"center_Miles_per_Gallon\"], \"\"), \"Year (year)\": timeFormat(datum[\"year_Year\"], '%b %d, %Y')}"
+ "signal": "{\"Ci1 of Miles_per_Gallon\": !isValid(datum[\"upper_Miles_per_Gallon\"]) || !isFinite(+datum[\"upper_Miles_per_Gallon\"]) ? \"\" + datum[\"upper_Miles_per_Gallon\"] : format(datum[\"upper_Miles_per_Gallon\"], \"\"), \"Ci0 of Miles_per_Gallon\": !isValid(datum[\"lower_Miles_per_Gallon\"]) || !isFinite(+datum[\"lower_Miles_per_Gallon\"]) ? \"\" + datum[\"lower_Miles_per_Gallon\"] : format(datum[\"lower_Miles_per_Gallon\"], \"\"), \"Mean of Miles_per_Gallon\": !isValid(datum[\"center_Miles_per_Gallon\"]) || !isFinite(+datum[\"center_Miles_per_Gallon\"]) ? \"\" + datum[\"center_Miles_per_Gallon\"] : format(datum[\"center_Miles_per_Gallon\"], \"\"), \"Year (year)\": !isValid(datum[\"year_Year\"]) || !isFinite(+datum[\"year_Year\"]) ? \"\" + datum[\"year_Year\"] : timeFormat(datum[\"year_Year\"], '%b %d, %Y')}"
},
"x": {"scale": "x", "field": "year_Year"},
"y": {"scale": "y", "field": "upper_Miles_per_Gallon"},
diff --git a/examples/compiled/errorband_tooltip.vg.json b/examples/compiled/errorband_tooltip.vg.json
index 5dc465efe4..a1d49fb1b5 100644
--- a/examples/compiled/errorband_tooltip.vg.json
+++ b/examples/compiled/errorband_tooltip.vg.json
@@ -50,9 +50,11 @@
"opacity": {"value": 0.3},
"orient": {"value": "vertical"},
"fill": {"value": "#4c78a8"},
- "tooltip": {"signal": "format(datum[\"Miles_per_Gallon\"], \"\")"},
+ "tooltip": {
+ "signal": "!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")"
+ },
"description": {
- "signal": "\"Year (year): \" + (timeFormat(datum[\"year_Year\"], '%b %d, %Y')) + \"; Miles_per_Gallon: \" + (format(datum[\"lower_Miles_per_Gallon\"], \"\")) + \"; upper_Miles_per_Gallon: \" + (format(datum[\"upper_Miles_per_Gallon\"], \"\"))"
+ "signal": "\"Year (year): \" + (!isValid(datum[\"year_Year\"]) || !isFinite(+datum[\"year_Year\"]) ? \"\" + datum[\"year_Year\"] : timeFormat(datum[\"year_Year\"], '%b %d, %Y')) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"lower_Miles_per_Gallon\"]) || !isFinite(+datum[\"lower_Miles_per_Gallon\"]) ? \"\" + datum[\"lower_Miles_per_Gallon\"] : format(datum[\"lower_Miles_per_Gallon\"], \"\")) + \"; upper_Miles_per_Gallon: \" + (!isValid(datum[\"upper_Miles_per_Gallon\"]) || !isFinite(+datum[\"upper_Miles_per_Gallon\"]) ? \"\" + datum[\"upper_Miles_per_Gallon\"] : format(datum[\"upper_Miles_per_Gallon\"], \"\"))"
},
"x": {"scale": "x", "field": "year_Year"},
"y": {"scale": "y", "field": "lower_Miles_per_Gallon"},
diff --git a/examples/compiled/errorbar_2d_vertical_ticks.vg.json b/examples/compiled/errorbar_2d_vertical_ticks.vg.json
index 35c3dd8558..c33039b972 100644
--- a/examples/compiled/errorbar_2d_vertical_ticks.vg.json
+++ b/examples/compiled/errorbar_2d_vertical_ticks.vg.json
@@ -67,7 +67,7 @@
"opacity": {"value": 0.7},
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"Ci1 of Miles_per_Gallon\": format(datum[\"upper_Miles_per_Gallon\"], \"\"), \"Ci0 of Miles_per_Gallon\": format(datum[\"lower_Miles_per_Gallon\"], \"\"), \"Mean of Miles_per_Gallon\": format(datum[\"center_Miles_per_Gallon\"], \"\"), \"Year (year)\": timeFormat(datum[\"year_Year\"], '%b %d, %Y')}"
+ "signal": "{\"Ci1 of Miles_per_Gallon\": !isValid(datum[\"upper_Miles_per_Gallon\"]) || !isFinite(+datum[\"upper_Miles_per_Gallon\"]) ? \"\" + datum[\"upper_Miles_per_Gallon\"] : format(datum[\"upper_Miles_per_Gallon\"], \"\"), \"Ci0 of Miles_per_Gallon\": !isValid(datum[\"lower_Miles_per_Gallon\"]) || !isFinite(+datum[\"lower_Miles_per_Gallon\"]) ? \"\" + datum[\"lower_Miles_per_Gallon\"] : format(datum[\"lower_Miles_per_Gallon\"], \"\"), \"Mean of Miles_per_Gallon\": !isValid(datum[\"center_Miles_per_Gallon\"]) || !isFinite(+datum[\"center_Miles_per_Gallon\"]) ? \"\" + datum[\"center_Miles_per_Gallon\"] : format(datum[\"center_Miles_per_Gallon\"], \"\"), \"Year (year)\": !isValid(datum[\"year_Year\"]) || !isFinite(+datum[\"year_Year\"]) ? \"\" + datum[\"year_Year\"] : timeFormat(datum[\"year_Year\"], '%b %d, %Y')}"
},
"xc": {"scale": "x", "field": "year_Year"},
"yc": {"scale": "y", "field": "lower_Miles_per_Gallon"},
@@ -87,7 +87,7 @@
"opacity": {"value": 0.7},
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"Ci1 of Miles_per_Gallon\": format(datum[\"upper_Miles_per_Gallon\"], \"\"), \"Ci0 of Miles_per_Gallon\": format(datum[\"lower_Miles_per_Gallon\"], \"\"), \"Mean of Miles_per_Gallon\": format(datum[\"center_Miles_per_Gallon\"], \"\"), \"Year (year)\": timeFormat(datum[\"year_Year\"], '%b %d, %Y')}"
+ "signal": "{\"Ci1 of Miles_per_Gallon\": !isValid(datum[\"upper_Miles_per_Gallon\"]) || !isFinite(+datum[\"upper_Miles_per_Gallon\"]) ? \"\" + datum[\"upper_Miles_per_Gallon\"] : format(datum[\"upper_Miles_per_Gallon\"], \"\"), \"Ci0 of Miles_per_Gallon\": !isValid(datum[\"lower_Miles_per_Gallon\"]) || !isFinite(+datum[\"lower_Miles_per_Gallon\"]) ? \"\" + datum[\"lower_Miles_per_Gallon\"] : format(datum[\"lower_Miles_per_Gallon\"], \"\"), \"Mean of Miles_per_Gallon\": !isValid(datum[\"center_Miles_per_Gallon\"]) || !isFinite(+datum[\"center_Miles_per_Gallon\"]) ? \"\" + datum[\"center_Miles_per_Gallon\"] : format(datum[\"center_Miles_per_Gallon\"], \"\"), \"Year (year)\": !isValid(datum[\"year_Year\"]) || !isFinite(+datum[\"year_Year\"]) ? \"\" + datum[\"year_Year\"] : timeFormat(datum[\"year_Year\"], '%b %d, %Y')}"
},
"xc": {"scale": "x", "field": "year_Year"},
"yc": {"scale": "y", "field": "upper_Miles_per_Gallon"},
@@ -106,10 +106,10 @@
"ariaRoleDescription": {"value": "errorbar"},
"stroke": {"value": "black"},
"tooltip": {
- "signal": "{\"Ci1 of Miles_per_Gallon\": format(datum[\"upper_Miles_per_Gallon\"], \"\"), \"Ci0 of Miles_per_Gallon\": format(datum[\"lower_Miles_per_Gallon\"], \"\"), \"Mean of Miles_per_Gallon\": format(datum[\"center_Miles_per_Gallon\"], \"\"), \"Year (year)\": timeFormat(datum[\"year_Year\"], '%b %d, %Y')}"
+ "signal": "{\"Ci1 of Miles_per_Gallon\": !isValid(datum[\"upper_Miles_per_Gallon\"]) || !isFinite(+datum[\"upper_Miles_per_Gallon\"]) ? \"\" + datum[\"upper_Miles_per_Gallon\"] : format(datum[\"upper_Miles_per_Gallon\"], \"\"), \"Ci0 of Miles_per_Gallon\": !isValid(datum[\"lower_Miles_per_Gallon\"]) || !isFinite(+datum[\"lower_Miles_per_Gallon\"]) ? \"\" + datum[\"lower_Miles_per_Gallon\"] : format(datum[\"lower_Miles_per_Gallon\"], \"\"), \"Mean of Miles_per_Gallon\": !isValid(datum[\"center_Miles_per_Gallon\"]) || !isFinite(+datum[\"center_Miles_per_Gallon\"]) ? \"\" + datum[\"center_Miles_per_Gallon\"] : format(datum[\"center_Miles_per_Gallon\"], \"\"), \"Year (year)\": !isValid(datum[\"year_Year\"]) || !isFinite(+datum[\"year_Year\"]) ? \"\" + datum[\"year_Year\"] : timeFormat(datum[\"year_Year\"], '%b %d, %Y')}"
},
"description": {
- "signal": "\"Year (year): \" + (timeFormat(datum[\"year_Year\"], '%b %d, %Y')) + \"; Miles per Gallon (95% CIs): \" + (format(datum[\"lower_Miles_per_Gallon\"], \"\")) + \"; upper_Miles_per_Gallon: \" + (format(datum[\"upper_Miles_per_Gallon\"], \"\")) + \"; Ci1 of Miles_per_Gallon: \" + (format(datum[\"upper_Miles_per_Gallon\"], \"\")) + \"; Ci0 of Miles_per_Gallon: \" + (format(datum[\"lower_Miles_per_Gallon\"], \"\")) + \"; Mean of Miles_per_Gallon: \" + (format(datum[\"center_Miles_per_Gallon\"], \"\"))"
+ "signal": "\"Year (year): \" + (!isValid(datum[\"year_Year\"]) || !isFinite(+datum[\"year_Year\"]) ? \"\" + datum[\"year_Year\"] : timeFormat(datum[\"year_Year\"], '%b %d, %Y')) + \"; Miles per Gallon (95% CIs): \" + (!isValid(datum[\"lower_Miles_per_Gallon\"]) || !isFinite(+datum[\"lower_Miles_per_Gallon\"]) ? \"\" + datum[\"lower_Miles_per_Gallon\"] : format(datum[\"lower_Miles_per_Gallon\"], \"\")) + \"; upper_Miles_per_Gallon: \" + (!isValid(datum[\"upper_Miles_per_Gallon\"]) || !isFinite(+datum[\"upper_Miles_per_Gallon\"]) ? \"\" + datum[\"upper_Miles_per_Gallon\"] : format(datum[\"upper_Miles_per_Gallon\"], \"\")) + \"; Ci1 of Miles_per_Gallon: \" + (!isValid(datum[\"upper_Miles_per_Gallon\"]) || !isFinite(+datum[\"upper_Miles_per_Gallon\"]) ? \"\" + datum[\"upper_Miles_per_Gallon\"] : format(datum[\"upper_Miles_per_Gallon\"], \"\")) + \"; Ci0 of Miles_per_Gallon: \" + (!isValid(datum[\"lower_Miles_per_Gallon\"]) || !isFinite(+datum[\"lower_Miles_per_Gallon\"]) ? \"\" + datum[\"lower_Miles_per_Gallon\"] : format(datum[\"lower_Miles_per_Gallon\"], \"\")) + \"; Mean of Miles_per_Gallon: \" + (!isValid(datum[\"center_Miles_per_Gallon\"]) || !isFinite(+datum[\"center_Miles_per_Gallon\"]) ? \"\" + datum[\"center_Miles_per_Gallon\"] : format(datum[\"center_Miles_per_Gallon\"], \"\"))"
},
"x": {"scale": "x", "field": "year_Year"},
"y": {"scale": "y", "field": "lower_Miles_per_Gallon"},
diff --git a/examples/compiled/errorbar_aggregate.vg.json b/examples/compiled/errorbar_aggregate.vg.json
index 70df548211..4fabcb8091 100644
--- a/examples/compiled/errorbar_aggregate.vg.json
+++ b/examples/compiled/errorbar_aggregate.vg.json
@@ -66,7 +66,7 @@
"update": {
"stroke": {"value": "black"},
"description": {
- "signal": "\"age: \" + (isValid(datum[\"age\"]) ? datum[\"age\"] : \"\"+datum[\"age\"]) + \"; population: \" + (format(datum[\"min_people\"], \"\")) + \"; Max of people: \" + (format(datum[\"max_people\"], \"\"))"
+ "signal": "\"age: \" + (\"\" + datum[\"age\"]) + \"; population: \" + (!isValid(datum[\"min_people\"]) || !isFinite(+datum[\"min_people\"]) ? \"\" + datum[\"min_people\"] : format(datum[\"min_people\"], \"\")) + \"; Max of people: \" + (!isValid(datum[\"max_people\"]) || !isFinite(+datum[\"max_people\"]) ? \"\" + datum[\"max_people\"] : format(datum[\"max_people\"], \"\"))"
},
"x": {"scale": "x", "field": "age", "band": 0.5},
"y": {"scale": "y", "field": "min_people"},
@@ -84,7 +84,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "tick"},
"description": {
- "signal": "\"age: \" + (isValid(datum[\"age\"]) ? datum[\"age\"] : \"\"+datum[\"age\"]) + \"; population: \" + (format(datum[\"min_people\"], \"\"))"
+ "signal": "\"age: \" + (\"\" + datum[\"age\"]) + \"; population: \" + (!isValid(datum[\"min_people\"]) || !isFinite(+datum[\"min_people\"]) ? \"\" + datum[\"min_people\"] : format(datum[\"min_people\"], \"\"))"
},
"xc": {"scale": "x", "field": "age", "band": 0.5},
"yc": {"scale": "y", "field": "min_people"},
@@ -103,7 +103,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "tick"},
"description": {
- "signal": "\"age: \" + (isValid(datum[\"age\"]) ? datum[\"age\"] : \"\"+datum[\"age\"]) + \"; population: \" + (format(datum[\"max_people\"], \"\"))"
+ "signal": "\"age: \" + (\"\" + datum[\"age\"]) + \"; population: \" + (!isValid(datum[\"max_people\"]) || !isFinite(+datum[\"max_people\"]) ? \"\" + datum[\"max_people\"] : format(datum[\"max_people\"], \"\"))"
},
"xc": {"scale": "x", "field": "age", "band": 0.5},
"yc": {"scale": "y", "field": "max_people"},
@@ -123,7 +123,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"age: \" + (isValid(datum[\"age\"]) ? datum[\"age\"] : \"\"+datum[\"age\"]) + \"; population: \" + (format(datum[\"mean_people\"], \"\"))"
+ "signal": "\"age: \" + (\"\" + datum[\"age\"]) + \"; population: \" + (!isValid(datum[\"mean_people\"]) || !isFinite(+datum[\"mean_people\"]) ? \"\" + datum[\"mean_people\"] : format(datum[\"mean_people\"], \"\"))"
},
"x": {"scale": "x", "field": "age", "band": 0.5},
"y": {"scale": "y", "field": "mean_people"},
diff --git a/examples/compiled/errorbar_horizontal_aggregate.vg.json b/examples/compiled/errorbar_horizontal_aggregate.vg.json
index e1c5a726d4..1fb2fde1a9 100644
--- a/examples/compiled/errorbar_horizontal_aggregate.vg.json
+++ b/examples/compiled/errorbar_horizontal_aggregate.vg.json
@@ -66,7 +66,7 @@
"update": {
"stroke": {"value": "black"},
"description": {
- "signal": "\"population: \" + (format(datum[\"min_people\"], \"\")) + \"; age: \" + (isValid(datum[\"age\"]) ? datum[\"age\"] : \"\"+datum[\"age\"]) + \"; Max of people: \" + (format(datum[\"max_people\"], \"\"))"
+ "signal": "\"population: \" + (!isValid(datum[\"min_people\"]) || !isFinite(+datum[\"min_people\"]) ? \"\" + datum[\"min_people\"] : format(datum[\"min_people\"], \"\")) + \"; age: \" + (\"\" + datum[\"age\"]) + \"; Max of people: \" + (!isValid(datum[\"max_people\"]) || !isFinite(+datum[\"max_people\"]) ? \"\" + datum[\"max_people\"] : format(datum[\"max_people\"], \"\"))"
},
"x": {"scale": "x", "field": "min_people"},
"x2": {"scale": "x", "field": "max_people"},
@@ -84,7 +84,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "tick"},
"description": {
- "signal": "\"population: \" + (format(datum[\"min_people\"], \"\")) + \"; age: \" + (isValid(datum[\"age\"]) ? datum[\"age\"] : \"\"+datum[\"age\"])"
+ "signal": "\"population: \" + (!isValid(datum[\"min_people\"]) || !isFinite(+datum[\"min_people\"]) ? \"\" + datum[\"min_people\"] : format(datum[\"min_people\"], \"\")) + \"; age: \" + (\"\" + datum[\"age\"])"
},
"xc": {"scale": "x", "field": "min_people"},
"yc": {"scale": "y", "field": "age", "band": 0.5},
@@ -103,7 +103,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "tick"},
"description": {
- "signal": "\"population: \" + (format(datum[\"max_people\"], \"\")) + \"; age: \" + (isValid(datum[\"age\"]) ? datum[\"age\"] : \"\"+datum[\"age\"])"
+ "signal": "\"population: \" + (!isValid(datum[\"max_people\"]) || !isFinite(+datum[\"max_people\"]) ? \"\" + datum[\"max_people\"] : format(datum[\"max_people\"], \"\")) + \"; age: \" + (\"\" + datum[\"age\"])"
},
"xc": {"scale": "x", "field": "max_people"},
"yc": {"scale": "y", "field": "age", "band": 0.5},
@@ -123,7 +123,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"population: \" + (format(datum[\"mean_people\"], \"\")) + \"; age: \" + (isValid(datum[\"age\"]) ? datum[\"age\"] : \"\"+datum[\"age\"])"
+ "signal": "\"population: \" + (!isValid(datum[\"mean_people\"]) || !isFinite(+datum[\"mean_people\"]) ? \"\" + datum[\"mean_people\"] : format(datum[\"mean_people\"], \"\")) + \"; age: \" + (\"\" + datum[\"age\"])"
},
"x": {"scale": "x", "field": "mean_people"},
"y": {"scale": "y", "field": "age", "band": 0.5},
diff --git a/examples/compiled/errorbar_tooltip.vg.json b/examples/compiled/errorbar_tooltip.vg.json
index 21572cd9cd..9295757f2a 100644
--- a/examples/compiled/errorbar_tooltip.vg.json
+++ b/examples/compiled/errorbar_tooltip.vg.json
@@ -48,11 +48,9 @@
"update": {
"ariaRoleDescription": {"value": "errorbar"},
"stroke": {"value": "black"},
- "tooltip": {
- "signal": "isValid(datum[\"variety\"]) ? datum[\"variety\"] : \"\"+datum[\"variety\"]"
- },
+ "tooltip": {"signal": "\"\" + datum[\"variety\"]"},
"description": {
- "signal": "\"yield: \" + (format(datum[\"lower_yield\"], \"\")) + \"; variety: \" + (isValid(datum[\"variety\"]) ? datum[\"variety\"] : \"\"+datum[\"variety\"]) + \"; upper_yield: \" + (format(datum[\"upper_yield\"], \"\"))"
+ "signal": "\"yield: \" + (!isValid(datum[\"lower_yield\"]) || !isFinite(+datum[\"lower_yield\"]) ? \"\" + datum[\"lower_yield\"] : format(datum[\"lower_yield\"], \"\")) + \"; variety: \" + (\"\" + datum[\"variety\"]) + \"; upper_yield: \" + (!isValid(datum[\"upper_yield\"]) || !isFinite(+datum[\"upper_yield\"]) ? \"\" + datum[\"upper_yield\"] : format(datum[\"upper_yield\"], \"\"))"
},
"x": {"scale": "x", "field": "lower_yield"},
"x2": {"scale": "x", "field": "upper_yield"},
diff --git a/examples/compiled/facet_bullet.vg.json b/examples/compiled/facet_bullet.vg.json
index d594fea208..4d9b9df03f 100644
--- a/examples/compiled/facet_bullet.vg.json
+++ b/examples/compiled/facet_bullet.vg.json
@@ -198,9 +198,7 @@
"from": {"data": "row_domain"},
"sort": {"field": "datum[\"title\"]", "order": "ascending"},
"title": {
- "text": {
- "signal": "isValid(parent[\"title\"]) ? parent[\"title\"] : \"\"+parent[\"title\"]"
- },
+ "text": {"signal": "\"\" + parent[\"title\"]"},
"orient": "left",
"style": "guide-label",
"frame": "group",
@@ -339,7 +337,7 @@
"fill": {"value": "#eee"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"ranges[2]: \" + (format(datum[\"ranges.2\"], \"\"))"
+ "signal": "\"ranges[2]: \" + (!isValid(datum[\"ranges.2\"]) || !isFinite(+datum[\"ranges.2\"]) ? \"\" + datum[\"ranges.2\"] : format(datum[\"ranges.2\"], \"\"))"
},
"x": {"scale": "child_x", "field": "ranges\\.2\\._end"},
"x2": {"scale": "child_x", "field": "ranges\\.2\\._start"},
@@ -358,7 +356,7 @@
"fill": {"value": "#ddd"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"ranges[1]: \" + (format(datum[\"ranges.1\"], \"\"))"
+ "signal": "\"ranges[1]: \" + (!isValid(datum[\"ranges.1\"]) || !isFinite(+datum[\"ranges.1\"]) ? \"\" + datum[\"ranges.1\"] : format(datum[\"ranges.1\"], \"\"))"
},
"x": {"scale": "child_x", "field": "ranges\\.1\\._end"},
"x2": {"scale": "child_x", "field": "ranges\\.1\\._start"},
@@ -377,7 +375,7 @@
"fill": {"value": "#ccc"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"ranges[0]: \" + (format(datum[\"ranges.0\"], \"\"))"
+ "signal": "\"ranges[0]: \" + (!isValid(datum[\"ranges.0\"]) || !isFinite(+datum[\"ranges.0\"]) ? \"\" + datum[\"ranges.0\"] : format(datum[\"ranges.0\"], \"\"))"
},
"x": {"scale": "child_x", "field": "ranges\\.0\\._end"},
"x2": {"scale": "child_x", "field": "ranges\\.0\\._start"},
@@ -396,7 +394,7 @@
"fill": {"value": "lightsteelblue"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"measures[1]: \" + (format(datum[\"measures.1\"], \"\"))"
+ "signal": "\"measures[1]: \" + (!isValid(datum[\"measures.1\"]) || !isFinite(+datum[\"measures.1\"]) ? \"\" + datum[\"measures.1\"] : format(datum[\"measures.1\"], \"\"))"
},
"x": {"scale": "child_x", "field": "measures\\.1\\._end"},
"x2": {"scale": "child_x", "field": "measures\\.1\\._start"},
@@ -415,7 +413,7 @@
"fill": {"value": "steelblue"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"measures[0]: \" + (format(datum[\"measures.0\"], \"\"))"
+ "signal": "\"measures[0]: \" + (!isValid(datum[\"measures.0\"]) || !isFinite(+datum[\"measures.0\"]) ? \"\" + datum[\"measures.0\"] : format(datum[\"measures.0\"], \"\"))"
},
"x": {"scale": "child_x", "field": "measures\\.0\\._end"},
"x2": {"scale": "child_x", "field": "measures\\.0\\._start"},
@@ -435,7 +433,7 @@
"fill": {"value": "black"},
"ariaRoleDescription": {"value": "tick"},
"description": {
- "signal": "\"markers[0]: \" + (format(datum[\"markers.0\"], \"\"))"
+ "signal": "\"markers[0]: \" + (!isValid(datum[\"markers.0\"]) || !isFinite(+datum[\"markers.0\"]) ? \"\" + datum[\"markers.0\"] : format(datum[\"markers.0\"], \"\"))"
},
"xc": {"scale": "child_x", "field": "markers\\.0"},
"yc": {"signal": "child_height", "mult": 0.5},
diff --git a/examples/compiled/facet_column_facet_column_point_future.vg.json b/examples/compiled/facet_column_facet_column_point_future.vg.json
index 57f87487cb..3edc0e87e3 100644
--- a/examples/compiled/facet_column_facet_column_point_future.vg.json
+++ b/examples/compiled/facet_column_facet_column_point_future.vg.json
@@ -50,9 +50,7 @@
"from": {"data": "column_domain"},
"sort": {"field": "datum[\"Origin\"]", "order": "ascending"},
"title": {
- "text": {
- "signal": "isValid(parent[\"Origin\"]) ? parent[\"Origin\"] : \"\"+parent[\"Origin\"]"
- },
+ "text": {"signal": "\"\" + parent[\"Origin\"]"},
"style": "guide-label",
"frame": "group",
"offset": 10
@@ -108,9 +106,7 @@
"from": {"data": "child_column_domain"},
"sort": {"field": "datum[\"Cylinders\"]", "order": "ascending"},
"title": {
- "text": {
- "signal": "isValid(parent[\"Cylinders\"]) ? parent[\"Cylinders\"] : \"\"+parent[\"Cylinders\"]"
- },
+ "text": {"signal": "\"\" + parent[\"Cylinders\"]"},
"style": "guide-label",
"frame": "group",
"offset": 10
@@ -180,7 +176,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Acceleration: \" + (format(datum[\"Acceleration\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Acceleration: \" + (!isValid(datum[\"Acceleration\"]) || !isFinite(+datum[\"Acceleration\"]) ? \"\" + datum[\"Acceleration\"] : format(datum[\"Acceleration\"], \"\"))"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Acceleration"}
diff --git a/examples/compiled/facet_column_facet_row_point_future.vg.json b/examples/compiled/facet_column_facet_row_point_future.vg.json
index ad1c118a5f..3ef6f04c3a 100644
--- a/examples/compiled/facet_column_facet_row_point_future.vg.json
+++ b/examples/compiled/facet_column_facet_row_point_future.vg.json
@@ -46,9 +46,7 @@
"from": {"data": "column_domain"},
"sort": {"field": "datum[\"Origin\"]", "order": "ascending"},
"title": {
- "text": {
- "signal": "isValid(parent[\"Origin\"]) ? parent[\"Origin\"] : \"\"+parent[\"Origin\"]"
- },
+ "text": {"signal": "\"\" + parent[\"Origin\"]"},
"style": "guide-label",
"frame": "group",
"offset": 10
@@ -94,9 +92,7 @@
"from": {"data": "child_row_domain"},
"sort": {"field": "datum[\"Cylinders\"]", "order": "ascending"},
"title": {
- "text": {
- "signal": "isValid(parent[\"Cylinders\"]) ? parent[\"Cylinders\"] : \"\"+parent[\"Cylinders\"]"
- },
+ "text": {"signal": "\"\" + parent[\"Cylinders\"]"},
"orient": "left",
"style": "guide-label",
"frame": "group",
@@ -176,7 +172,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Acceleration: \" + (format(datum[\"Acceleration\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Acceleration: \" + (!isValid(datum[\"Acceleration\"]) || !isFinite(+datum[\"Acceleration\"]) ? \"\" + datum[\"Acceleration\"] : format(datum[\"Acceleration\"], \"\"))"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Acceleration"}
diff --git a/examples/compiled/facet_cross_independent_scale.vg.json b/examples/compiled/facet_cross_independent_scale.vg.json
index d6280b91b1..3fa88790e3 100644
--- a/examples/compiled/facet_cross_independent_scale.vg.json
+++ b/examples/compiled/facet_cross_independent_scale.vg.json
@@ -87,9 +87,7 @@
"from": {"data": "row_domain"},
"sort": {"field": "datum[\"r\"]", "order": "ascending"},
"title": {
- "text": {
- "signal": "isValid(parent[\"r\"]) ? parent[\"r\"] : \"\"+parent[\"r\"]"
- },
+ "text": {"signal": "\"\" + parent[\"r\"]"},
"orient": "left",
"style": "guide-label",
"frame": "group",
@@ -110,9 +108,7 @@
"from": {"data": "column_domain"},
"sort": {"field": "datum[\"c\"]", "order": "ascending"},
"title": {
- "text": {
- "signal": "isValid(parent[\"c\"]) ? parent[\"c\"] : \"\"+parent[\"c\"]"
- },
+ "text": {"signal": "\"\" + parent[\"c\"]"},
"style": "guide-label",
"frame": "group",
"offset": 10
@@ -166,7 +162,7 @@
"update": {
"fill": {"value": "#4c78a8"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (isValid(datum[\"b\"]) ? datum[\"b\"] : \"\"+datum[\"b\"])"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (\"\" + datum[\"b\"])"
},
"x": {"scale": "child_x", "field": "a"},
"width": {"signal": "max(0.25, bandwidth('child_x'))"},
diff --git a/examples/compiled/facet_custom.vg.json b/examples/compiled/facet_custom.vg.json
index 8efd0d24a6..c0d210c2f3 100644
--- a/examples/compiled/facet_custom.vg.json
+++ b/examples/compiled/facet_custom.vg.json
@@ -93,9 +93,7 @@
"from": {"data": "column_domain"},
"sort": {"field": "datum[\"gender\"]", "order": "ascending"},
"title": {
- "text": {
- "signal": "isValid(parent[\"gender\"]) ? parent[\"gender\"] : \"\"+parent[\"gender\"]"
- },
+ "text": {"signal": "\"\" + parent[\"gender\"]"},
"style": "guide-label",
"frame": "group",
"fontSize": 15,
@@ -148,7 +146,7 @@
"fill": {"scale": "color", "field": "gender"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"age: \" + (isValid(datum[\"age\"]) ? datum[\"age\"] : \"\"+datum[\"age\"]) + \"; population: \" + (format(datum[\"sum_people\"], \"\")) + \"; gender: \" + (isValid(datum[\"gender\"]) ? datum[\"gender\"] : \"\"+datum[\"gender\"])"
+ "signal": "\"age: \" + (\"\" + datum[\"age\"]) + \"; population: \" + (!isValid(datum[\"sum_people\"]) || !isFinite(+datum[\"sum_people\"]) ? \"\" + datum[\"sum_people\"] : format(datum[\"sum_people\"], \"\")) + \"; gender: \" + (\"\" + datum[\"gender\"])"
},
"x": {"scale": "x", "field": "age"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/facet_custom_header.vg.json b/examples/compiled/facet_custom_header.vg.json
index 8efd0d24a6..c0d210c2f3 100644
--- a/examples/compiled/facet_custom_header.vg.json
+++ b/examples/compiled/facet_custom_header.vg.json
@@ -93,9 +93,7 @@
"from": {"data": "column_domain"},
"sort": {"field": "datum[\"gender\"]", "order": "ascending"},
"title": {
- "text": {
- "signal": "isValid(parent[\"gender\"]) ? parent[\"gender\"] : \"\"+parent[\"gender\"]"
- },
+ "text": {"signal": "\"\" + parent[\"gender\"]"},
"style": "guide-label",
"frame": "group",
"fontSize": 15,
@@ -148,7 +146,7 @@
"fill": {"scale": "color", "field": "gender"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"age: \" + (isValid(datum[\"age\"]) ? datum[\"age\"] : \"\"+datum[\"age\"]) + \"; population: \" + (format(datum[\"sum_people\"], \"\")) + \"; gender: \" + (isValid(datum[\"gender\"]) ? datum[\"gender\"] : \"\"+datum[\"gender\"])"
+ "signal": "\"age: \" + (\"\" + datum[\"age\"]) + \"; population: \" + (!isValid(datum[\"sum_people\"]) || !isFinite(+datum[\"sum_people\"]) ? \"\" + datum[\"sum_people\"] : format(datum[\"sum_people\"], \"\")) + \"; gender: \" + (\"\" + datum[\"gender\"])"
},
"x": {"scale": "x", "field": "age"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/facet_grid_bar.vg.json b/examples/compiled/facet_grid_bar.vg.json
index ffe8d7fbb6..4c782e5a9f 100644
--- a/examples/compiled/facet_grid_bar.vg.json
+++ b/examples/compiled/facet_grid_bar.vg.json
@@ -105,9 +105,7 @@
"from": {"data": "row_domain"},
"sort": {"field": "datum[\"a\"]", "order": "ascending"},
"title": {
- "text": {
- "signal": "isValid(parent[\"a\"]) ? parent[\"a\"] : \"\"+parent[\"a\"]"
- },
+ "text": {"signal": "\"\" + parent[\"a\"]"},
"orient": "left",
"style": "guide-label",
"frame": "group",
@@ -125,9 +123,7 @@
"from": {"data": "column_domain"},
"sort": {"field": "datum[\"b\"]", "order": "ascending"},
"title": {
- "text": {
- "signal": "isValid(parent[\"b\"]) ? parent[\"b\"] : \"\"+parent[\"b\"]"
- },
+ "text": {"signal": "\"\" + parent[\"b\"]"},
"style": "guide-label",
"frame": "group",
"offset": 10
@@ -187,7 +183,7 @@
"fill": {"scale": "color", "field": "c"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"p: \" + (format(datum[\"p\"], \"%\")) + \"; c: \" + (isValid(datum[\"c\"]) ? datum[\"c\"] : \"\"+datum[\"c\"]) + \"; settings: \" + (isValid(datum[\"c\"]) ? datum[\"c\"] : \"\"+datum[\"c\"])"
+ "signal": "\"p: \" + (!isValid(datum[\"p\"]) || !isFinite(+datum[\"p\"]) ? \"\" + datum[\"p\"] : format(datum[\"p\"], \"%\")) + \"; c: \" + (\"\" + datum[\"c\"]) + \"; settings: \" + (\"\" + datum[\"c\"])"
},
"x": {"scale": "x", "field": "p_end"},
"x2": {"scale": "x", "field": "p_start"},
diff --git a/examples/compiled/facet_independent_scale.vg.json b/examples/compiled/facet_independent_scale.vg.json
index ec52febd7e..486029450d 100644
--- a/examples/compiled/facet_independent_scale.vg.json
+++ b/examples/compiled/facet_independent_scale.vg.json
@@ -92,9 +92,7 @@
"from": {"data": "column_domain"},
"sort": {"field": "datum[\"gender\"]", "order": "ascending"},
"title": {
- "text": {
- "signal": "isValid(parent[\"gender\"]) ? parent[\"gender\"] : \"\"+parent[\"gender\"]"
- },
+ "text": {"signal": "\"\" + parent[\"gender\"]"},
"style": "guide-label",
"frame": "group",
"offset": 10
@@ -143,7 +141,7 @@
"fill": {"scale": "color", "field": "gender"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"age: \" + (isValid(datum[\"age\"]) ? datum[\"age\"] : \"\"+datum[\"age\"]) + \"; population: \" + (format(datum[\"sum_people\"], \"\")) + \"; gender: \" + (isValid(datum[\"gender\"]) ? datum[\"gender\"] : \"\"+datum[\"gender\"])"
+ "signal": "\"age: \" + (\"\" + datum[\"age\"]) + \"; population: \" + (!isValid(datum[\"sum_people\"]) || !isFinite(+datum[\"sum_people\"]) ? \"\" + datum[\"sum_people\"] : format(datum[\"sum_people\"], \"\")) + \"; gender: \" + (\"\" + datum[\"gender\"])"
},
"x": {"scale": "child_x", "field": "age"},
"width": {"signal": "max(0.25, bandwidth('child_x'))"},
diff --git a/examples/compiled/facet_independent_scale_layer_broken.vg.json b/examples/compiled/facet_independent_scale_layer_broken.vg.json
index b91ed67ce5..9b20604bee 100644
--- a/examples/compiled/facet_independent_scale_layer_broken.vg.json
+++ b/examples/compiled/facet_independent_scale_layer_broken.vg.json
@@ -96,9 +96,7 @@
"from": {"data": "column_domain"},
"sort": {"field": "datum[\"gender\"]", "order": "ascending"},
"title": {
- "text": {
- "signal": "isValid(parent[\"gender\"]) ? parent[\"gender\"] : \"\"+parent[\"gender\"]"
- },
+ "text": {"signal": "\"\" + parent[\"gender\"]"},
"style": "guide-label",
"frame": "group",
"offset": 10
@@ -189,7 +187,7 @@
"update": {
"stroke": {"scale": "color", "field": "gender"},
"description": {
- "signal": "\"age: \" + (isValid(datum[\"age\"]) ? datum[\"age\"] : \"\"+datum[\"age\"]) + \"; population: \" + (format(datum[\"sum_people\"], \"\")) + \"; gender: \" + (isValid(datum[\"gender\"]) ? datum[\"gender\"] : \"\"+datum[\"gender\"])"
+ "signal": "\"age: \" + (\"\" + datum[\"age\"]) + \"; population: \" + (!isValid(datum[\"sum_people\"]) || !isFinite(+datum[\"sum_people\"]) ? \"\" + datum[\"sum_people\"] : format(datum[\"sum_people\"], \"\")) + \"; gender: \" + (\"\" + datum[\"gender\"])"
},
"x": {"scale": "child_x", "field": "age"},
"y": {"scale": "y", "field": "sum_people"},
@@ -212,7 +210,7 @@
"stroke": {"scale": "color", "field": "gender"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"age: \" + (isValid(datum[\"age\"]) ? datum[\"age\"] : \"\"+datum[\"age\"]) + \"; population: \" + (format(datum[\"sum_people\"], \"\")) + \"; gender: \" + (isValid(datum[\"gender\"]) ? datum[\"gender\"] : \"\"+datum[\"gender\"])"
+ "signal": "\"age: \" + (\"\" + datum[\"age\"]) + \"; population: \" + (!isValid(datum[\"sum_people\"]) || !isFinite(+datum[\"sum_people\"]) ? \"\" + datum[\"sum_people\"] : format(datum[\"sum_people\"], \"\")) + \"; gender: \" + (\"\" + datum[\"gender\"])"
},
"x": {"scale": "child_x", "field": "age"},
"y": {"scale": "y", "field": "sum_people"}
diff --git a/examples/compiled/facet_row_facet_row_point_future.vg.json b/examples/compiled/facet_row_facet_row_point_future.vg.json
index 89e8daaca4..52ae02e495 100644
--- a/examples/compiled/facet_row_facet_row_point_future.vg.json
+++ b/examples/compiled/facet_row_facet_row_point_future.vg.json
@@ -51,9 +51,7 @@
"from": {"data": "row_domain"},
"sort": {"field": "datum[\"Origin\"]", "order": "ascending"},
"title": {
- "text": {
- "signal": "isValid(parent[\"Origin\"]) ? parent[\"Origin\"] : \"\"+parent[\"Origin\"]"
- },
+ "text": {"signal": "\"\" + parent[\"Origin\"]"},
"orient": "left",
"style": "guide-label",
"frame": "group",
@@ -83,9 +81,7 @@
"from": {"data": "child_row_domain"},
"sort": {"field": "datum[\"Cylinders\"]", "order": "ascending"},
"title": {
- "text": {
- "signal": "isValid(parent[\"Cylinders\"]) ? parent[\"Cylinders\"] : \"\"+parent[\"Cylinders\"]"
- },
+ "text": {"signal": "\"\" + parent[\"Cylinders\"]"},
"orient": "left",
"style": "guide-label",
"frame": "group",
@@ -165,7 +161,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Acceleration: \" + (format(datum[\"Acceleration\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Acceleration: \" + (!isValid(datum[\"Acceleration\"]) || !isFinite(+datum[\"Acceleration\"]) ? \"\" + datum[\"Acceleration\"] : format(datum[\"Acceleration\"], \"\"))"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Acceleration"}
diff --git a/examples/compiled/geo_choropleth.vg.json b/examples/compiled/geo_choropleth.vg.json
index 857c5be0c1..9774503993 100644
--- a/examples/compiled/geo_choropleth.vg.json
+++ b/examples/compiled/geo_choropleth.vg.json
@@ -49,7 +49,7 @@
"fill": {"scale": "color", "field": "rate"},
"ariaRoleDescription": {"value": "geoshape"},
"description": {
- "signal": "\"rate: \" + (format(datum[\"rate\"], \"\"))"
+ "signal": "\"rate: \" + (!isValid(datum[\"rate\"]) || !isFinite(+datum[\"rate\"]) ? \"\" + datum[\"rate\"] : format(datum[\"rate\"], \"\"))"
}
}
},
diff --git a/examples/compiled/geo_circle.vg.json b/examples/compiled/geo_circle.vg.json
index 928b5138ea..8b3086b5ea 100644
--- a/examples/compiled/geo_circle.vg.json
+++ b/examples/compiled/geo_circle.vg.json
@@ -50,7 +50,7 @@
"fill": {"scale": "color", "field": "digit"},
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"longitude: \" + (format(datum[\"longitude\"], \"\")) + \"; latitude: \" + (format(datum[\"latitude\"], \"\")) + \"; digit: \" + (isValid(datum[\"digit\"]) ? datum[\"digit\"] : \"\"+datum[\"digit\"])"
+ "signal": "\"longitude: \" + (!isValid(datum[\"longitude\"]) || !isFinite(+datum[\"longitude\"]) ? \"\" + datum[\"longitude\"] : format(datum[\"longitude\"], \"\")) + \"; latitude: \" + (!isValid(datum[\"latitude\"]) || !isFinite(+datum[\"latitude\"]) ? \"\" + datum[\"latitude\"] : format(datum[\"latitude\"], \"\")) + \"; digit: \" + (\"\" + datum[\"digit\"])"
},
"x": {"field": "x"},
"y": {"field": "y"},
diff --git a/examples/compiled/geo_constant_value.vg.json b/examples/compiled/geo_constant_value.vg.json
index ebf40947e0..6efecf19f6 100644
--- a/examples/compiled/geo_constant_value.vg.json
+++ b/examples/compiled/geo_constant_value.vg.json
@@ -81,7 +81,7 @@
"fill": {"value": "gray"},
"ariaRoleDescription": {"value": "square"},
"description": {
- "signal": "\"longitude: \" + (format(datum[\"longitude\"], \"\")) + \"; latitude: \" + (format(datum[\"latitude\"], \"\"))"
+ "signal": "\"longitude: \" + (!isValid(datum[\"longitude\"]) || !isFinite(+datum[\"longitude\"]) ? \"\" + datum[\"longitude\"] : format(datum[\"longitude\"], \"\")) + \"; latitude: \" + (!isValid(datum[\"latitude\"]) || !isFinite(+datum[\"latitude\"]) ? \"\" + datum[\"latitude\"] : format(datum[\"latitude\"], \"\"))"
},
"x": {"field": "layer_0_x"},
"y": {"field": "layer_0_y"},
@@ -101,7 +101,7 @@
"fill": {"value": "steelblue"},
"ariaRoleDescription": {"value": "square"},
"description": {
- "signal": "\"latitude: \" + (format(datum[\"latitude\"], \"\"))"
+ "signal": "\"latitude: \" + (!isValid(datum[\"latitude\"]) || !isFinite(+datum[\"latitude\"]) ? \"\" + datum[\"latitude\"] : format(datum[\"latitude\"], \"\"))"
},
"x": {"field": "layer_1_x"},
"y": {"field": "layer_1_y"},
@@ -121,7 +121,7 @@
"fill": {"value": "firebrick"},
"ariaRoleDescription": {"value": "square"},
"description": {
- "signal": "\"longitude: \" + (format(datum[\"longitude\"], \"\"))"
+ "signal": "\"longitude: \" + (!isValid(datum[\"longitude\"]) || !isFinite(+datum[\"longitude\"]) ? \"\" + datum[\"longitude\"] : format(datum[\"longitude\"], \"\"))"
},
"x": {"field": "layer_2_x"},
"y": {"field": "layer_2_y"},
diff --git a/examples/compiled/geo_custom_projection.vg.json b/examples/compiled/geo_custom_projection.vg.json
index 11e3a1680d..5a5cd6d1d9 100644
--- a/examples/compiled/geo_custom_projection.vg.json
+++ b/examples/compiled/geo_custom_projection.vg.json
@@ -61,7 +61,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"longitude: \" + (format(datum[\"longitude\"], \"\")) + \"; latitude: \" + (format(datum[\"latitude\"], \"\"))"
+ "signal": "\"longitude: \" + (!isValid(datum[\"longitude\"]) || !isFinite(+datum[\"longitude\"]) ? \"\" + datum[\"longitude\"] : format(datum[\"longitude\"], \"\")) + \"; latitude: \" + (!isValid(datum[\"latitude\"]) || !isFinite(+datum[\"latitude\"]) ? \"\" + datum[\"latitude\"] : format(datum[\"latitude\"], \"\"))"
},
"x": {"field": "layer_1_x"},
"y": {"field": "layer_1_y"},
diff --git a/examples/compiled/geo_layer.vg.json b/examples/compiled/geo_layer.vg.json
index b2b66955c1..ce414eeecf 100644
--- a/examples/compiled/geo_layer.vg.json
+++ b/examples/compiled/geo_layer.vg.json
@@ -64,7 +64,7 @@
"fill": {"value": "steelblue"},
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"longitude: \" + (format(datum[\"longitude\"], \"\")) + \"; latitude: \" + (format(datum[\"latitude\"], \"\"))"
+ "signal": "\"longitude: \" + (!isValid(datum[\"longitude\"]) || !isFinite(+datum[\"longitude\"]) ? \"\" + datum[\"longitude\"] : format(datum[\"longitude\"], \"\")) + \"; latitude: \" + (!isValid(datum[\"latitude\"]) || !isFinite(+datum[\"latitude\"]) ? \"\" + datum[\"latitude\"] : format(datum[\"latitude\"], \"\"))"
},
"x": {"field": "layer_1_x"},
"y": {"field": "layer_1_y"},
diff --git a/examples/compiled/geo_layer_line_london.vg.json b/examples/compiled/geo_layer_line_london.vg.json
index c2bf00c0f3..1bcce72379 100644
--- a/examples/compiled/geo_layer_line_london.vg.json
+++ b/examples/compiled/geo_layer_line_london.vg.json
@@ -76,13 +76,11 @@
"fill": {"value": "black"},
"opacity": {"value": 0.6},
"description": {
- "signal": "\"cx: \" + (format(datum[\"cx\"], \"\")) + \"; cy: \" + (format(datum[\"cy\"], \"\")) + \"; bLabel: \" + (isValid(datum[\"bLabel\"]) ? datum[\"bLabel\"] : \"\"+datum[\"bLabel\"])"
+ "signal": "\"cx: \" + (!isValid(datum[\"cx\"]) || !isFinite(+datum[\"cx\"]) ? \"\" + datum[\"cx\"] : format(datum[\"cx\"], \"\")) + \"; cy: \" + (!isValid(datum[\"cy\"]) || !isFinite(+datum[\"cy\"]) ? \"\" + datum[\"cy\"] : format(datum[\"cy\"], \"\")) + \"; bLabel: \" + (\"\" + datum[\"bLabel\"])"
},
"x": {"field": "layer_1_x"},
"y": {"field": "layer_1_y"},
- "text": {
- "signal": "isValid(datum[\"bLabel\"]) ? datum[\"bLabel\"] : \"\"+datum[\"bLabel\"]"
- },
+ "text": {"signal": "\"\" + datum[\"bLabel\"]"},
"fontSize": {"value": 8},
"align": {"value": "center"},
"baseline": {"value": "middle"}
@@ -100,9 +98,7 @@
"fill": {"value": "transparent"},
"stroke": {"scale": "color", "field": "id"},
"ariaRoleDescription": {"value": "geoshape"},
- "description": {
- "signal": "\"id: \" + (isValid(datum[\"id\"]) ? datum[\"id\"] : \"\"+datum[\"id\"])"
- }
+ "description": {"signal": "\"id: \" + (\"\" + datum[\"id\"])"}
}
},
"transform": [{"type": "geoshape", "projection": "projection"}]
diff --git a/examples/compiled/geo_line.vg.json b/examples/compiled/geo_line.vg.json
index 6220f8efc7..0eb1824d6a 100644
--- a/examples/compiled/geo_line.vg.json
+++ b/examples/compiled/geo_line.vg.json
@@ -104,7 +104,7 @@
"fill": {"value": "gray"},
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"longitude: \" + (format(datum[\"longitude\"], \"\")) + \"; latitude: \" + (format(datum[\"latitude\"], \"\"))"
+ "signal": "\"longitude: \" + (!isValid(datum[\"longitude\"]) || !isFinite(+datum[\"longitude\"]) ? \"\" + datum[\"longitude\"] : format(datum[\"longitude\"], \"\")) + \"; latitude: \" + (!isValid(datum[\"latitude\"]) || !isFinite(+datum[\"latitude\"]) ? \"\" + datum[\"latitude\"] : format(datum[\"latitude\"], \"\"))"
},
"x": {"field": "layer_1_x"},
"y": {"field": "layer_1_y"},
@@ -123,7 +123,7 @@
"update": {
"stroke": {"value": "#4c78a8"},
"description": {
- "signal": "\"longitude: \" + (format(datum[\"longitude\"], \"\")) + \"; latitude: \" + (format(datum[\"latitude\"], \"\")) + \"; order: \" + (isValid(datum[\"order\"]) ? datum[\"order\"] : \"\"+datum[\"order\"])"
+ "signal": "\"longitude: \" + (!isValid(datum[\"longitude\"]) || !isFinite(+datum[\"longitude\"]) ? \"\" + datum[\"longitude\"] : format(datum[\"longitude\"], \"\")) + \"; latitude: \" + (!isValid(datum[\"latitude\"]) || !isFinite(+datum[\"latitude\"]) ? \"\" + datum[\"latitude\"] : format(datum[\"latitude\"], \"\")) + \"; order: \" + (\"\" + datum[\"order\"])"
},
"x": {"field": "layer_2_x"},
"y": {"field": "layer_2_y"}
diff --git a/examples/compiled/geo_point.vg.json b/examples/compiled/geo_point.vg.json
index 4991440538..e9fec8c375 100644
--- a/examples/compiled/geo_point.vg.json
+++ b/examples/compiled/geo_point.vg.json
@@ -45,7 +45,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"longitude: \" + (format(datum[\"longitude\"], \"\")) + \"; latitude: \" + (format(datum[\"latitude\"], \"\"))"
+ "signal": "\"longitude: \" + (!isValid(datum[\"longitude\"]) || !isFinite(+datum[\"longitude\"]) ? \"\" + datum[\"longitude\"] : format(datum[\"longitude\"], \"\")) + \"; latitude: \" + (!isValid(datum[\"latitude\"]) || !isFinite(+datum[\"latitude\"]) ? \"\" + datum[\"latitude\"] : format(datum[\"latitude\"], \"\"))"
},
"x": {"field": "x"},
"y": {"field": "y"},
diff --git a/examples/compiled/geo_repeat.vg.json b/examples/compiled/geo_repeat.vg.json
index 52b141ba78..202508a401 100644
--- a/examples/compiled/geo_repeat.vg.json
+++ b/examples/compiled/geo_repeat.vg.json
@@ -122,7 +122,7 @@
},
"ariaRoleDescription": {"value": "geoshape"},
"description": {
- "signal": "\"population: \" + (format(datum[\"population\"], \"\")) + \"; geo: \" + (isValid(datum[\"geo\"]) ? datum[\"geo\"] : \"\"+datum[\"geo\"])"
+ "signal": "\"population: \" + (!isValid(datum[\"population\"]) || !isFinite(+datum[\"population\"]) ? \"\" + datum[\"population\"] : format(datum[\"population\"], \"\")) + \"; geo: \" + (\"\" + datum[\"geo\"])"
}
}
},
@@ -167,7 +167,7 @@
},
"ariaRoleDescription": {"value": "geoshape"},
"description": {
- "signal": "\"engineers: \" + (format(datum[\"engineers\"], \"\")) + \"; geo: \" + (isValid(datum[\"geo\"]) ? datum[\"geo\"] : \"\"+datum[\"geo\"])"
+ "signal": "\"engineers: \" + (!isValid(datum[\"engineers\"]) || !isFinite(+datum[\"engineers\"]) ? \"\" + datum[\"engineers\"] : format(datum[\"engineers\"], \"\")) + \"; geo: \" + (\"\" + datum[\"geo\"])"
}
}
},
@@ -212,7 +212,7 @@
},
"ariaRoleDescription": {"value": "geoshape"},
"description": {
- "signal": "\"hurricanes: \" + (format(datum[\"hurricanes\"], \"\")) + \"; geo: \" + (isValid(datum[\"geo\"]) ? datum[\"geo\"] : \"\"+datum[\"geo\"])"
+ "signal": "\"hurricanes: \" + (!isValid(datum[\"hurricanes\"]) || !isFinite(+datum[\"hurricanes\"]) ? \"\" + datum[\"hurricanes\"] : format(datum[\"hurricanes\"], \"\")) + \"; geo: \" + (\"\" + datum[\"geo\"])"
}
}
},
diff --git a/examples/compiled/geo_rule.vg.json b/examples/compiled/geo_rule.vg.json
index a1e005b345..8bf3e79d89 100644
--- a/examples/compiled/geo_rule.vg.json
+++ b/examples/compiled/geo_rule.vg.json
@@ -112,7 +112,7 @@
"fill": {"value": "gray"},
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"longitude: \" + (format(datum[\"longitude\"], \"\")) + \"; latitude: \" + (format(datum[\"latitude\"], \"\"))"
+ "signal": "\"longitude: \" + (!isValid(datum[\"longitude\"]) || !isFinite(+datum[\"longitude\"]) ? \"\" + datum[\"longitude\"] : format(datum[\"longitude\"], \"\")) + \"; latitude: \" + (!isValid(datum[\"latitude\"]) || !isFinite(+datum[\"latitude\"]) ? \"\" + datum[\"latitude\"] : format(datum[\"latitude\"], \"\"))"
},
"x": {"field": "layer_1_x"},
"y": {"field": "layer_1_y"},
@@ -130,7 +130,7 @@
"update": {
"stroke": {"value": "black"},
"description": {
- "signal": "\"origin_longitude: \" + (format(datum[\"origin_longitude\"], \"\")) + \"; dest_longitude: \" + (format(datum[\"dest_longitude\"], \"\")) + \"; origin_latitude: \" + (format(datum[\"origin_latitude\"], \"\")) + \"; dest_latitude: \" + (format(datum[\"dest_latitude\"], \"\"))"
+ "signal": "\"origin_longitude: \" + (!isValid(datum[\"origin_longitude\"]) || !isFinite(+datum[\"origin_longitude\"]) ? \"\" + datum[\"origin_longitude\"] : format(datum[\"origin_longitude\"], \"\")) + \"; dest_longitude: \" + (!isValid(datum[\"dest_longitude\"]) || !isFinite(+datum[\"dest_longitude\"]) ? \"\" + datum[\"dest_longitude\"] : format(datum[\"dest_longitude\"], \"\")) + \"; origin_latitude: \" + (!isValid(datum[\"origin_latitude\"]) || !isFinite(+datum[\"origin_latitude\"]) ? \"\" + datum[\"origin_latitude\"] : format(datum[\"origin_latitude\"], \"\")) + \"; dest_latitude: \" + (!isValid(datum[\"dest_latitude\"]) || !isFinite(+datum[\"dest_latitude\"]) ? \"\" + datum[\"dest_latitude\"] : format(datum[\"dest_latitude\"], \"\"))"
},
"x": {"field": "layer_2_x"},
"x2": {"field": "layer_2_x2"},
diff --git a/examples/compiled/geo_text.vg.json b/examples/compiled/geo_text.vg.json
index 070f566b95..999ada6662 100644
--- a/examples/compiled/geo_text.vg.json
+++ b/examples/compiled/geo_text.vg.json
@@ -87,7 +87,7 @@
"fill": {"value": "orange"},
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"lon: \" + (format(datum[\"lon\"], \"\")) + \"; lat: \" + (format(datum[\"lat\"], \"\"))"
+ "signal": "\"lon: \" + (!isValid(datum[\"lon\"]) || !isFinite(+datum[\"lon\"]) ? \"\" + datum[\"lon\"] : format(datum[\"lon\"], \"\")) + \"; lat: \" + (!isValid(datum[\"lat\"]) || !isFinite(+datum[\"lat\"]) ? \"\" + datum[\"lat\"] : format(datum[\"lat\"], \"\"))"
},
"x": {"field": "layer_1_layer_0_x"},
"y": {"field": "layer_1_layer_0_y"},
@@ -105,13 +105,11 @@
"dy": {"value": -10},
"fill": {"value": "black"},
"description": {
- "signal": "\"lon: \" + (format(datum[\"lon\"], \"\")) + \"; lat: \" + (format(datum[\"lat\"], \"\")) + \"; city: \" + (isValid(datum[\"city\"]) ? datum[\"city\"] : \"\"+datum[\"city\"])"
+ "signal": "\"lon: \" + (!isValid(datum[\"lon\"]) || !isFinite(+datum[\"lon\"]) ? \"\" + datum[\"lon\"] : format(datum[\"lon\"], \"\")) + \"; lat: \" + (!isValid(datum[\"lat\"]) || !isFinite(+datum[\"lat\"]) ? \"\" + datum[\"lat\"] : format(datum[\"lat\"], \"\")) + \"; city: \" + (\"\" + datum[\"city\"])"
},
"x": {"field": "layer_1_layer_1_x"},
"y": {"field": "layer_1_layer_1_y"},
- "text": {
- "signal": "isValid(datum[\"city\"]) ? datum[\"city\"] : \"\"+datum[\"city\"]"
- },
+ "text": {"signal": "\"\" + datum[\"city\"]"},
"align": {"value": "center"},
"baseline": {"value": "middle"}
}
diff --git a/examples/compiled/geo_trellis.vg.json b/examples/compiled/geo_trellis.vg.json
index 23073cb4ae..6741935f37 100644
--- a/examples/compiled/geo_trellis.vg.json
+++ b/examples/compiled/geo_trellis.vg.json
@@ -72,9 +72,7 @@
"from": {"data": "row_domain"},
"sort": {"field": "datum[\"group\"]", "order": "ascending"},
"title": {
- "text": {
- "signal": "isValid(parent[\"group\"]) ? parent[\"group\"] : \"\"+parent[\"group\"]"
- },
+ "text": {"signal": "\"\" + parent[\"group\"]"},
"orient": "left",
"style": "guide-label",
"frame": "group",
@@ -107,7 +105,7 @@
"fill": {"scale": "color", "field": "pct"},
"ariaRoleDescription": {"value": "geoshape"},
"description": {
- "signal": "\"pct: \" + (format(datum[\"pct\"], \"\")) + \"; geo: \" + (isValid(datum[\"geo\"]) ? datum[\"geo\"] : \"\"+datum[\"geo\"])"
+ "signal": "\"pct: \" + (!isValid(datum[\"pct\"]) || !isFinite(+datum[\"pct\"]) ? \"\" + datum[\"pct\"] : format(datum[\"pct\"], \"\")) + \"; geo: \" + (\"\" + datum[\"geo\"])"
}
}
},
diff --git a/examples/compiled/hconcat_weather.vg.json b/examples/compiled/hconcat_weather.vg.json
index 7825dc9eef..851fa1a530 100644
--- a/examples/compiled/hconcat_weather.vg.json
+++ b/examples/compiled/hconcat_weather.vg.json
@@ -114,7 +114,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"date (month): \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of precipitation: \" + (format(datum[\"mean_precipitation\"], \"\"))"
+ "signal": "\"date (month): \" + (!isValid(datum[\"month_date\"]) || !isFinite(+datum[\"month_date\"]) ? \"\" + datum[\"month_date\"] : timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of precipitation: \" + (!isValid(datum[\"mean_precipitation\"]) || !isFinite(+datum[\"mean_precipitation\"]) ? \"\" + datum[\"mean_precipitation\"] : format(datum[\"mean_precipitation\"], \"\"))"
},
"x": {"scale": "concat_0_x", "field": "month_date"},
"width": {"signal": "max(0.25, bandwidth('concat_0_x'))"},
@@ -187,7 +187,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"temp_min (binned): \" + (!isValid(datum[\"bin_maxbins_10_temp_min\"]) || !isFinite(+datum[\"bin_maxbins_10_temp_min\"]) ? \"null\" : format(datum[\"bin_maxbins_10_temp_min\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_temp_min_end\"], \"\")) + \"; temp_max (binned): \" + (!isValid(datum[\"bin_maxbins_10_temp_max\"]) || !isFinite(+datum[\"bin_maxbins_10_temp_max\"]) ? \"null\" : format(datum[\"bin_maxbins_10_temp_max\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_temp_max_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"temp_min (binned): \" + (!isValid(datum[\"bin_maxbins_10_temp_min\"]) || !isFinite(+datum[\"bin_maxbins_10_temp_min\"]) ? \"\" + datum[\"bin_maxbins_10_temp_min\"] : format(datum[\"bin_maxbins_10_temp_min\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_temp_min_end\"], \"\")) + \"; temp_max (binned): \" + (!isValid(datum[\"bin_maxbins_10_temp_max\"]) || !isFinite(+datum[\"bin_maxbins_10_temp_max\"]) ? \"\" + datum[\"bin_maxbins_10_temp_max\"] : format(datum[\"bin_maxbins_10_temp_max\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_temp_max_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x": {
"signal": "scale(\"concat_1_x\", 0.5 * datum[\"bin_maxbins_10_temp_min\"] + 0.5 * datum[\"bin_maxbins_10_temp_min_end\"])"
diff --git a/examples/compiled/histogram.vg.json b/examples/compiled/histogram.vg.json
index 600bc069e8..39cf6d3a8f 100644
--- a/examples/compiled/histogram.vg.json
+++ b/examples/compiled/histogram.vg.json
@@ -55,7 +55,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"null\" : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"\" + datum[\"bin_maxbins_10_IMDB Rating\"] : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x2": {
"scale": "x",
diff --git a/examples/compiled/histogram_bin_change.vg.json b/examples/compiled/histogram_bin_change.vg.json
index cbeb5fd914..f979847942 100644
--- a/examples/compiled/histogram_bin_change.vg.json
+++ b/examples/compiled/histogram_bin_change.vg.json
@@ -55,7 +55,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_30_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_30_IMDB Rating\"]) ? \"null\" : format(datum[\"bin_maxbins_30_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_30_IMDB Rating_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_30_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_30_IMDB Rating\"]) ? \"\" + datum[\"bin_maxbins_30_IMDB Rating\"] : format(datum[\"bin_maxbins_30_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_30_IMDB Rating_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x2": {
"scale": "x",
diff --git a/examples/compiled/histogram_bin_spacing.vg.json b/examples/compiled/histogram_bin_spacing.vg.json
index 92e7e119d5..2573bb6db2 100644
--- a/examples/compiled/histogram_bin_spacing.vg.json
+++ b/examples/compiled/histogram_bin_spacing.vg.json
@@ -55,7 +55,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"null\" : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"\" + datum[\"bin_maxbins_10_IMDB Rating\"] : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x2": {
"scale": "x",
diff --git a/examples/compiled/histogram_bin_spacing_reverse.vg.json b/examples/compiled/histogram_bin_spacing_reverse.vg.json
index 201da13c9b..799addbc4e 100644
--- a/examples/compiled/histogram_bin_spacing_reverse.vg.json
+++ b/examples/compiled/histogram_bin_spacing_reverse.vg.json
@@ -55,7 +55,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"null\" : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"\" + datum[\"bin_maxbins_10_IMDB Rating\"] : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x2": {
"scale": "x",
diff --git a/examples/compiled/histogram_bin_transform.vg.json b/examples/compiled/histogram_bin_transform.vg.json
index c2979ec1bf..f6ede805c8 100644
--- a/examples/compiled/histogram_bin_transform.vg.json
+++ b/examples/compiled/histogram_bin_transform.vg.json
@@ -49,7 +49,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"binned rating\"]) || !isFinite(+datum[\"binned rating\"]) ? \"null\" : format(datum[\"binned rating\"], \"\") + \" – \" + format(datum[\"binned rating_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"binned rating\"]) || !isFinite(+datum[\"binned rating\"]) ? \"\" + datum[\"binned rating\"] : format(datum[\"binned rating\"], \"\") + \" – \" + format(datum[\"binned rating_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x2": {
"scale": "x",
diff --git a/examples/compiled/histogram_invalid_null.vg.json b/examples/compiled/histogram_invalid_null.vg.json
index cfa083c372..1fded013b2 100644
--- a/examples/compiled/histogram_invalid_null.vg.json
+++ b/examples/compiled/histogram_invalid_null.vg.json
@@ -51,7 +51,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"null\" : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"\" + datum[\"bin_maxbins_10_IMDB Rating\"] : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x2": {
"scale": "x",
diff --git a/examples/compiled/histogram_log.vg.json b/examples/compiled/histogram_log.vg.json
index 31cba9057c..3c145449e2 100644
--- a/examples/compiled/histogram_log.vg.json
+++ b/examples/compiled/histogram_log.vg.json
@@ -68,7 +68,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"x1: \" + (format(datum[\"x1\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\")) + \"; x2: \" + (format(datum[\"x2\"], \"\"))"
+ "signal": "\"x1: \" + (!isValid(datum[\"x1\"]) || !isFinite(+datum[\"x1\"]) ? \"\" + datum[\"x1\"] : format(datum[\"x1\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\")) + \"; x2: \" + (!isValid(datum[\"x2\"]) || !isFinite(+datum[\"x2\"]) ? \"\" + datum[\"x2\"] : format(datum[\"x2\"], \"\"))"
},
"x": {"scale": "x", "field": "x1"},
"x2": {"scale": "x", "field": "x2"},
diff --git a/examples/compiled/histogram_no_spacing.vg.json b/examples/compiled/histogram_no_spacing.vg.json
index b16ff5dfbc..c6063e8463 100644
--- a/examples/compiled/histogram_no_spacing.vg.json
+++ b/examples/compiled/histogram_no_spacing.vg.json
@@ -55,7 +55,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"null\" : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"\" + datum[\"bin_maxbins_10_IMDB Rating\"] : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x2": {
"scale": "x",
diff --git a/examples/compiled/histogram_nonlinear.vg.json b/examples/compiled/histogram_nonlinear.vg.json
index 0230f34fe8..3247e07e6a 100644
--- a/examples/compiled/histogram_nonlinear.vg.json
+++ b/examples/compiled/histogram_nonlinear.vg.json
@@ -59,7 +59,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"startTime: \" + (isValid(datum[\"startTime\"]) ? datum[\"startTime\"] : \"\"+datum[\"startTime\"]) + \"; residency: \" + (format(datum[\"residency\"], \"\")) + \"; endTime: \" + (isValid(datum[\"endTime\"]) ? datum[\"endTime\"] : \"\"+datum[\"endTime\"])"
+ "signal": "\"startTime: \" + (\"\" + datum[\"startTime\"]) + \"; residency: \" + (!isValid(datum[\"residency\"]) || !isFinite(+datum[\"residency\"]) ? \"\" + datum[\"residency\"] : format(datum[\"residency\"], \"\")) + \"; endTime: \" + (\"\" + datum[\"endTime\"])"
},
"x": {"scale": "x", "field": "startTime"},
"x2": {"scale": "x", "field": "endTime"},
diff --git a/examples/compiled/histogram_ordinal.vg.json b/examples/compiled/histogram_ordinal.vg.json
index 1b11b8bd79..2f49a10684 100644
--- a/examples/compiled/histogram_ordinal.vg.json
+++ b/examples/compiled/histogram_ordinal.vg.json
@@ -28,7 +28,7 @@
},
{
"type": "formula",
- "expr": "!isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"null\" : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\")",
+ "expr": "!isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"\" + datum[\"bin_maxbins_10_IMDB Rating\"] : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\")",
"as": "bin_maxbins_10_IMDB Rating_range"
},
{
@@ -63,7 +63,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"null\" : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"\" + datum[\"bin_maxbins_10_IMDB Rating\"] : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x": {"scale": "x", "field": "bin_maxbins_10_IMDB Rating_range"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/histogram_ordinal_sort.vg.json b/examples/compiled/histogram_ordinal_sort.vg.json
index a31354fb06..9f72105483 100644
--- a/examples/compiled/histogram_ordinal_sort.vg.json
+++ b/examples/compiled/histogram_ordinal_sort.vg.json
@@ -28,7 +28,7 @@
},
{
"type": "formula",
- "expr": "!isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"null\" : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\")",
+ "expr": "!isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"\" + datum[\"bin_maxbins_10_IMDB Rating\"] : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\")",
"as": "bin_maxbins_10_IMDB Rating_range"
}
]
@@ -69,7 +69,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"null\" : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"\" + datum[\"bin_maxbins_10_IMDB Rating\"] : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x": {"scale": "x", "field": "bin_maxbins_10_IMDB Rating_range"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/histogram_rel_freq.vg.json b/examples/compiled/histogram_rel_freq.vg.json
index 4b292dad5d..42083a94c6 100644
--- a/examples/compiled/histogram_rel_freq.vg.json
+++ b/examples/compiled/histogram_rel_freq.vg.json
@@ -67,12 +67,12 @@
"encode": {
"update": {
"tooltip": {
- "signal": "{\"Horsepower\": !isValid(datum[\"bin_Horsepwoer\"]) || !isFinite(+datum[\"bin_Horsepwoer\"]) ? \"null\" : format(datum[\"bin_Horsepwoer\"], \"\") + \" – \" + format(datum[\"bin_Horsepwoer_end\"], \"\"), \"Relative Frequency\": format(datum[\"PercentOfTotal\"], \".1~%\")}"
+ "signal": "{\"Horsepower\": !isValid(datum[\"bin_Horsepwoer\"]) || !isFinite(+datum[\"bin_Horsepwoer\"]) ? \"\" + datum[\"bin_Horsepwoer\"] : format(datum[\"bin_Horsepwoer\"], \"\") + \" – \" + format(datum[\"bin_Horsepwoer_end\"], \"\"), \"Relative Frequency\": !isValid(datum[\"PercentOfTotal\"]) || !isFinite(+datum[\"PercentOfTotal\"]) ? \"\" + datum[\"PercentOfTotal\"] : format(datum[\"PercentOfTotal\"], \".1~%\")}"
},
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Horsepower: \" + (!isValid(datum[\"bin_Horsepwoer\"]) || !isFinite(+datum[\"bin_Horsepwoer\"]) ? \"null\" : format(datum[\"bin_Horsepwoer\"], \"\") + \" – \" + format(datum[\"bin_Horsepwoer_end\"], \"\")) + \"; Relative Frequency: \" + (format(datum[\"PercentOfTotal\"], \".1~%\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"bin_Horsepwoer\"]) || !isFinite(+datum[\"bin_Horsepwoer\"]) ? \"\" + datum[\"bin_Horsepwoer\"] : format(datum[\"bin_Horsepwoer\"], \"\") + \" – \" + format(datum[\"bin_Horsepwoer_end\"], \"\")) + \"; Relative Frequency: \" + (!isValid(datum[\"PercentOfTotal\"]) || !isFinite(+datum[\"PercentOfTotal\"]) ? \"\" + datum[\"PercentOfTotal\"] : format(datum[\"PercentOfTotal\"], \".1~%\"))"
},
"x2": {
"scale": "x",
diff --git a/examples/compiled/histogram_reverse.vg.json b/examples/compiled/histogram_reverse.vg.json
index 7ea5fb71df..e86bb0773b 100644
--- a/examples/compiled/histogram_reverse.vg.json
+++ b/examples/compiled/histogram_reverse.vg.json
@@ -55,7 +55,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"null\" : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"\" + datum[\"bin_maxbins_10_IMDB Rating\"] : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x2": {
"scale": "x",
diff --git a/examples/compiled/interactive_1d_geo_brush.vg.json b/examples/compiled/interactive_1d_geo_brush.vg.json
index 1ea53884db..78aa0ea2b0 100644
--- a/examples/compiled/interactive_1d_geo_brush.vg.json
+++ b/examples/compiled/interactive_1d_geo_brush.vg.json
@@ -292,7 +292,7 @@
],
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"longitude: \" + (format(datum[\"longitude\"], \"\")) + \"; latitude: \" + (format(datum[\"latitude\"], \"\"))"
+ "signal": "\"longitude: \" + (!isValid(datum[\"longitude\"]) || !isFinite(+datum[\"longitude\"]) ? \"\" + datum[\"longitude\"] : format(datum[\"longitude\"], \"\")) + \"; latitude: \" + (!isValid(datum[\"latitude\"]) || !isFinite(+datum[\"latitude\"]) ? \"\" + datum[\"latitude\"] : format(datum[\"latitude\"], \"\"))"
},
"x": {"field": "layer_1_x"},
"y": {"field": "layer_1_y"},
diff --git a/examples/compiled/interactive_airport_crossfilter.vg.json b/examples/compiled/interactive_airport_crossfilter.vg.json
index 5aa92361d0..c975270ad9 100644
--- a/examples/compiled/interactive_airport_crossfilter.vg.json
+++ b/examples/compiled/interactive_airport_crossfilter.vg.json
@@ -505,7 +505,7 @@
],
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"longitude: \" + (format(datum[\"longitude\"], \"\")) + \"; latitude: \" + (format(datum[\"latitude\"], \"\")) + \"; routes: \" + (format(datum[\"routes\"], \"\"))"
+ "signal": "\"longitude: \" + (!isValid(datum[\"longitude\"]) || !isFinite(+datum[\"longitude\"]) ? \"\" + datum[\"longitude\"] : format(datum[\"longitude\"], \"\")) + \"; latitude: \" + (!isValid(datum[\"latitude\"]) || !isFinite(+datum[\"latitude\"]) ? \"\" + datum[\"latitude\"] : format(datum[\"latitude\"], \"\")) + \"; routes: \" + (!isValid(datum[\"routes\"]) || !isFinite(+datum[\"routes\"]) ? \"\" + datum[\"routes\"] : format(datum[\"routes\"], \"\"))"
},
"x": {"field": "concat_0_layer_1_x"},
"y": {"field": "concat_0_layer_1_y"},
@@ -591,7 +591,7 @@
"fill": {"value": "steelblue"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"distance (binned): \" + (!isValid(datum[\"bin_maxbins_20_distance\"]) || !isFinite(+datum[\"bin_maxbins_20_distance\"]) ? \"null\" : format(datum[\"bin_maxbins_20_distance\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_distance_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"distance (binned): \" + (!isValid(datum[\"bin_maxbins_20_distance\"]) || !isFinite(+datum[\"bin_maxbins_20_distance\"]) ? \"\" + datum[\"bin_maxbins_20_distance\"] : format(datum[\"bin_maxbins_20_distance\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_distance_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x2": {
"scale": "child__column_distance_x",
@@ -626,7 +626,7 @@
"fill": {"value": "goldenrod"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"distance (binned): \" + (!isValid(datum[\"bin_maxbins_20_distance\"]) || !isFinite(+datum[\"bin_maxbins_20_distance\"]) ? \"null\" : format(datum[\"bin_maxbins_20_distance\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_distance_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"distance (binned): \" + (!isValid(datum[\"bin_maxbins_20_distance\"]) || !isFinite(+datum[\"bin_maxbins_20_distance\"]) ? \"\" + datum[\"bin_maxbins_20_distance\"] : format(datum[\"bin_maxbins_20_distance\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_distance_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x2": {
"scale": "child__column_distance_x",
@@ -709,7 +709,7 @@
"fill": {"value": "steelblue"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"delay (binned): \" + (!isValid(datum[\"bin_maxbins_20_delay\"]) || !isFinite(+datum[\"bin_maxbins_20_delay\"]) ? \"null\" : format(datum[\"bin_maxbins_20_delay\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_delay_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"delay (binned): \" + (!isValid(datum[\"bin_maxbins_20_delay\"]) || !isFinite(+datum[\"bin_maxbins_20_delay\"]) ? \"\" + datum[\"bin_maxbins_20_delay\"] : format(datum[\"bin_maxbins_20_delay\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_delay_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x2": {
"scale": "child__column_delay_x",
@@ -741,7 +741,7 @@
"fill": {"value": "goldenrod"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"delay (binned): \" + (!isValid(datum[\"bin_maxbins_20_delay\"]) || !isFinite(+datum[\"bin_maxbins_20_delay\"]) ? \"null\" : format(datum[\"bin_maxbins_20_delay\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_delay_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"delay (binned): \" + (!isValid(datum[\"bin_maxbins_20_delay\"]) || !isFinite(+datum[\"bin_maxbins_20_delay\"]) ? \"\" + datum[\"bin_maxbins_20_delay\"] : format(datum[\"bin_maxbins_20_delay\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_delay_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x2": {
"scale": "child__column_delay_x",
diff --git a/examples/compiled/interactive_area_brush.vg.json b/examples/compiled/interactive_area_brush.vg.json
index 907f4329c6..b76ea1ac97 100644
--- a/examples/compiled/interactive_area_brush.vg.json
+++ b/examples/compiled/interactive_area_brush.vg.json
@@ -279,7 +279,7 @@
"orient": {"value": "vertical"},
"fill": {"value": "#4c78a8"},
"description": {
- "signal": "\"date (year-month): \" + (timeFormat(datum[\"yearmonth_date\"], timeUnitSpecifier([\"year\",\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Sum of count: \" + (format(datum[\"sum_count\"], \"\"))"
+ "signal": "\"date (year-month): \" + (!isValid(datum[\"yearmonth_date\"]) || !isFinite(+datum[\"yearmonth_date\"]) ? \"\" + datum[\"yearmonth_date\"] : timeFormat(datum[\"yearmonth_date\"], timeUnitSpecifier([\"year\",\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Sum of count: \" + (!isValid(datum[\"sum_count\"]) || !isFinite(+datum[\"sum_count\"]) ? \"\" + datum[\"sum_count\"] : format(datum[\"sum_count\"], \"\"))"
},
"x": {"scale": "x", "field": "yearmonth_date"},
"y": {"scale": "y", "field": "sum_count"},
@@ -302,7 +302,7 @@
"orient": {"value": "vertical"},
"fill": {"value": "goldenrod"},
"description": {
- "signal": "\"date (year-month): \" + (timeFormat(datum[\"yearmonth_date\"], timeUnitSpecifier([\"year\",\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Sum of count: \" + (format(datum[\"sum_count\"], \"\"))"
+ "signal": "\"date (year-month): \" + (!isValid(datum[\"yearmonth_date\"]) || !isFinite(+datum[\"yearmonth_date\"]) ? \"\" + datum[\"yearmonth_date\"] : timeFormat(datum[\"yearmonth_date\"], timeUnitSpecifier([\"year\",\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Sum of count: \" + (!isValid(datum[\"sum_count\"]) || !isFinite(+datum[\"sum_count\"]) ? \"\" + datum[\"sum_count\"] : format(datum[\"sum_count\"], \"\"))"
},
"x": {"scale": "x", "field": "yearmonth_date"},
"y": {"scale": "y", "field": "sum_count"},
diff --git a/examples/compiled/interactive_bar_select_highlight.vg.json b/examples/compiled/interactive_bar_select_highlight.vg.json
index 4c67db065f..0edaf568f5 100644
--- a/examples/compiled/interactive_bar_select_highlight.vg.json
+++ b/examples/compiled/interactive_bar_select_highlight.vg.json
@@ -164,7 +164,7 @@
],
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "x", "field": "a"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/interactive_bin_extent.vg.json b/examples/compiled/interactive_bin_extent.vg.json
index 2e577c871c..2b48a2b7a6 100644
--- a/examples/compiled/interactive_bin_extent.vg.json
+++ b/examples/compiled/interactive_bin_extent.vg.json
@@ -332,7 +332,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"time (binned): \" + (!isValid(datum[\"bin_maxbins_30_time\"]) || !isFinite(+datum[\"bin_maxbins_30_time\"]) ? \"null\" : format(datum[\"bin_maxbins_30_time\"], \"\") + \" – \" + format(datum[\"bin_maxbins_30_time_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"time (binned): \" + (!isValid(datum[\"bin_maxbins_30_time\"]) || !isFinite(+datum[\"bin_maxbins_30_time\"]) ? \"\" + datum[\"bin_maxbins_30_time\"] : format(datum[\"bin_maxbins_30_time\"], \"\") + \" – \" + format(datum[\"bin_maxbins_30_time_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x2": {
"scale": "concat_0_x",
@@ -458,7 +458,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"time (binned): \" + (!isValid(datum[\"bin_maxbins_30_extent_param_brush_time\"]) || !isFinite(+datum[\"bin_maxbins_30_extent_param_brush_time\"]) ? \"null\" : format(datum[\"bin_maxbins_30_extent_param_brush_time\"], \"\") + \" – \" + format(datum[\"bin_maxbins_30_extent_param_brush_time_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"time (binned): \" + (!isValid(datum[\"bin_maxbins_30_extent_param_brush_time\"]) || !isFinite(+datum[\"bin_maxbins_30_extent_param_brush_time\"]) ? \"\" + datum[\"bin_maxbins_30_extent_param_brush_time\"] : format(datum[\"bin_maxbins_30_extent_param_brush_time\"], \"\") + \" – \" + format(datum[\"bin_maxbins_30_extent_param_brush_time_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x2": {
"scale": "concat_1_x",
diff --git a/examples/compiled/interactive_bin_extent_bottom.vg.json b/examples/compiled/interactive_bin_extent_bottom.vg.json
index 12f6ec754c..8ca28283d3 100644
--- a/examples/compiled/interactive_bin_extent_bottom.vg.json
+++ b/examples/compiled/interactive_bin_extent_bottom.vg.json
@@ -127,7 +127,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"time (binned): \" + (!isValid(datum[\"bin_maxbins_30_extent_param_brush_time\"]) || !isFinite(+datum[\"bin_maxbins_30_extent_param_brush_time\"]) ? \"null\" : format(datum[\"bin_maxbins_30_extent_param_brush_time\"], \"\") + \" – \" + format(datum[\"bin_maxbins_30_extent_param_brush_time_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"time (binned): \" + (!isValid(datum[\"bin_maxbins_30_extent_param_brush_time\"]) || !isFinite(+datum[\"bin_maxbins_30_extent_param_brush_time\"]) ? \"\" + datum[\"bin_maxbins_30_extent_param_brush_time\"] : format(datum[\"bin_maxbins_30_extent_param_brush_time\"], \"\") + \" – \" + format(datum[\"bin_maxbins_30_extent_param_brush_time_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x2": {
"scale": "concat_0_x",
@@ -414,7 +414,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"time (binned): \" + (!isValid(datum[\"bin_maxbins_30_time\"]) || !isFinite(+datum[\"bin_maxbins_30_time\"]) ? \"null\" : format(datum[\"bin_maxbins_30_time\"], \"\") + \" – \" + format(datum[\"bin_maxbins_30_time_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"time (binned): \" + (!isValid(datum[\"bin_maxbins_30_time\"]) || !isFinite(+datum[\"bin_maxbins_30_time\"]) ? \"\" + datum[\"bin_maxbins_30_time\"] : format(datum[\"bin_maxbins_30_time\"], \"\") + \" – \" + format(datum[\"bin_maxbins_30_time_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x2": {
"scale": "concat_1_x",
diff --git a/examples/compiled/interactive_brush.vg.json b/examples/compiled/interactive_brush.vg.json
index 92e0c2623e..020ae5ae80 100644
--- a/examples/compiled/interactive_brush.vg.json
+++ b/examples/compiled/interactive_brush.vg.json
@@ -333,7 +333,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (\"\" + datum[\"Cylinders\"])"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"}
diff --git a/examples/compiled/interactive_concat_layer.vg.json b/examples/compiled/interactive_concat_layer.vg.json
index c3a2ba3a16..bb548bcd41 100644
--- a/examples/compiled/interactive_concat_layer.vg.json
+++ b/examples/compiled/interactive_concat_layer.vg.json
@@ -150,7 +150,7 @@
"update": {
"fill": {"scale": "color", "field": "__count"},
"description": {
- "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"null\" : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\")) + \"; Rotten Tomatoes Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_Rotten Tomatoes Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_Rotten Tomatoes Rating\"]) ? \"null\" : format(datum[\"bin_maxbins_10_Rotten Tomatoes Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_Rotten Tomatoes Rating_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"\" + datum[\"bin_maxbins_10_IMDB Rating\"] : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\")) + \"; Rotten Tomatoes Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_Rotten Tomatoes Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_Rotten Tomatoes Rating\"]) ? \"\" + datum[\"bin_maxbins_10_Rotten Tomatoes Rating\"] : format(datum[\"bin_maxbins_10_Rotten Tomatoes Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_Rotten Tomatoes Rating_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x2": {
"scale": "concat_0_x",
@@ -195,7 +195,7 @@
"stroke": {"value": "#666"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"null\" : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\")) + \"; Rotten Tomatoes Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_Rotten Tomatoes Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_Rotten Tomatoes Rating\"]) ? \"null\" : format(datum[\"bin_maxbins_10_Rotten Tomatoes Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_Rotten Tomatoes Rating_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"\" + datum[\"bin_maxbins_10_IMDB Rating\"] : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\")) + \"; Rotten Tomatoes Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_Rotten Tomatoes Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_Rotten Tomatoes Rating\"]) ? \"\" + datum[\"bin_maxbins_10_Rotten Tomatoes Rating\"] : format(datum[\"bin_maxbins_10_Rotten Tomatoes Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_Rotten Tomatoes Rating_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x": {
"signal": "scale(\"concat_0_x\", 0.5 * datum[\"bin_maxbins_10_IMDB Rating\"] + 0.5 * datum[\"bin_maxbins_10_IMDB Rating_end\"])"
@@ -322,7 +322,7 @@
],
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Major Genre: \" + (isValid(datum[\"Major Genre\"]) ? datum[\"Major Genre\"] : \"\"+datum[\"Major Genre\"]) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"Major Genre: \" + (\"\" + datum[\"Major Genre\"]) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x": {"scale": "concat_1_x", "field": "Major Genre"},
"width": {"signal": "max(0.25, bandwidth('concat_1_x'))"},
diff --git a/examples/compiled/interactive_crossfilter.vg.json b/examples/compiled/interactive_crossfilter.vg.json
index 8fb1c99ae6..bcf369906d 100644
--- a/examples/compiled/interactive_crossfilter.vg.json
+++ b/examples/compiled/interactive_crossfilter.vg.json
@@ -369,7 +369,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"distance (binned): \" + (!isValid(datum[\"bin_maxbins_20_distance\"]) || !isFinite(+datum[\"bin_maxbins_20_distance\"]) ? \"null\" : format(datum[\"bin_maxbins_20_distance\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_distance_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"distance (binned): \" + (!isValid(datum[\"bin_maxbins_20_distance\"]) || !isFinite(+datum[\"bin_maxbins_20_distance\"]) ? \"\" + datum[\"bin_maxbins_20_distance\"] : format(datum[\"bin_maxbins_20_distance\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_distance_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x2": {
"scale": "child__column_distance_x",
@@ -678,7 +678,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"delay (binned): \" + (!isValid(datum[\"bin_maxbins_20_delay\"]) || !isFinite(+datum[\"bin_maxbins_20_delay\"]) ? \"null\" : format(datum[\"bin_maxbins_20_delay\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_delay_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"delay (binned): \" + (!isValid(datum[\"bin_maxbins_20_delay\"]) || !isFinite(+datum[\"bin_maxbins_20_delay\"]) ? \"\" + datum[\"bin_maxbins_20_delay\"] : format(datum[\"bin_maxbins_20_delay\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_delay_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x2": {
"scale": "child__column_delay_x",
@@ -987,7 +987,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"time (binned): \" + (!isValid(datum[\"bin_maxbins_20_time\"]) || !isFinite(+datum[\"bin_maxbins_20_time\"]) ? \"null\" : format(datum[\"bin_maxbins_20_time\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_time_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"time (binned): \" + (!isValid(datum[\"bin_maxbins_20_time\"]) || !isFinite(+datum[\"bin_maxbins_20_time\"]) ? \"\" + datum[\"bin_maxbins_20_time\"] : format(datum[\"bin_maxbins_20_time\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_time_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x2": {
"scale": "child__column_time_x",
diff --git a/examples/compiled/interactive_dashboard_europe_pop.vg.json b/examples/compiled/interactive_dashboard_europe_pop.vg.json
index 5207bf1ccc..989135897d 100644
--- a/examples/compiled/interactive_dashboard_europe_pop.vg.json
+++ b/examples/compiled/interactive_dashboard_europe_pop.vg.json
@@ -615,7 +615,7 @@
],
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Population_ages_15_64_of_total: \" + (format(datum[\"Population_ages_15_64_of_total\"], \"\")) + \"; Country: \" + (isValid(datum[\"Country\"]) ? datum[\"Country\"] : \"\"+datum[\"Country\"])"
+ "signal": "\"Population_ages_15_64_of_total: \" + (!isValid(datum[\"Population_ages_15_64_of_total\"]) || !isFinite(+datum[\"Population_ages_15_64_of_total\"]) ? \"\" + datum[\"Population_ages_15_64_of_total\"] : format(datum[\"Population_ages_15_64_of_total\"], \"\")) + \"; Country: \" + (\"\" + datum[\"Country\"])"
},
"x": {
"scale": "concat_0_x",
@@ -942,7 +942,7 @@
],
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Population_ages_65_and_above_of_total: \" + (format(datum[\"Population_ages_65_and_above_of_total\"], \"\")) + \"; Country: \" + (isValid(datum[\"Country\"]) ? datum[\"Country\"] : \"\"+datum[\"Country\"])"
+ "signal": "\"Population_ages_65_and_above_of_total: \" + (!isValid(datum[\"Population_ages_65_and_above_of_total\"]) || !isFinite(+datum[\"Population_ages_65_and_above_of_total\"]) ? \"\" + datum[\"Population_ages_65_and_above_of_total\"] : format(datum[\"Population_ages_65_and_above_of_total\"], \"\")) + \"; Country: \" + (\"\" + datum[\"Country\"])"
},
"x": {
"scale": "concat_1_x",
@@ -1348,7 +1348,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Population_ages_65_and_above_of_total: \" + (format(datum[\"Population_ages_65_and_above_of_total\"], \"\")) + \"; Population_ages_15_64_of_total: \" + (format(datum[\"Population_ages_15_64_of_total\"], \"\"))"
+ "signal": "\"Population_ages_65_and_above_of_total: \" + (!isValid(datum[\"Population_ages_65_and_above_of_total\"]) || !isFinite(+datum[\"Population_ages_65_and_above_of_total\"]) ? \"\" + datum[\"Population_ages_65_and_above_of_total\"] : format(datum[\"Population_ages_65_and_above_of_total\"], \"\")) + \"; Population_ages_15_64_of_total: \" + (!isValid(datum[\"Population_ages_15_64_of_total\"]) || !isFinite(+datum[\"Population_ages_15_64_of_total\"]) ? \"\" + datum[\"Population_ages_15_64_of_total\"] : format(datum[\"Population_ages_15_64_of_total\"], \"\"))"
},
"x": {
"scale": "concat_2_x",
diff --git a/examples/compiled/interactive_geo_earthquakes.vg.json b/examples/compiled/interactive_geo_earthquakes.vg.json
index 8468689405..363a291806 100644
--- a/examples/compiled/interactive_geo_earthquakes.vg.json
+++ b/examples/compiled/interactive_geo_earthquakes.vg.json
@@ -113,12 +113,10 @@
"update": {
"opacity": {"value": 0.25},
"fill": {"value": "red"},
- "tooltip": {
- "signal": "{\"magnitude\": isValid(datum[\"magnitude\"]) ? datum[\"magnitude\"] : \"\"+datum[\"magnitude\"]}"
- },
+ "tooltip": {"signal": "{\"magnitude\": \"\" + datum[\"magnitude\"]}"},
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"longitude: \" + (format(datum[\"longitude\"], \"\")) + \"; latitude: \" + (format(datum[\"latitude\"], \"\")) + \"; magnitude: \" + (format(datum[\"magnitude\"], \"\"))"
+ "signal": "\"longitude: \" + (!isValid(datum[\"longitude\"]) || !isFinite(+datum[\"longitude\"]) ? \"\" + datum[\"longitude\"] : format(datum[\"longitude\"], \"\")) + \"; latitude: \" + (!isValid(datum[\"latitude\"]) || !isFinite(+datum[\"latitude\"]) ? \"\" + datum[\"latitude\"] : format(datum[\"latitude\"], \"\")) + \"; magnitude: \" + (!isValid(datum[\"magnitude\"]) || !isFinite(+datum[\"magnitude\"]) ? \"\" + datum[\"magnitude\"] : format(datum[\"magnitude\"], \"\"))"
},
"x": {"field": "layer_2_x"},
"y": {"field": "layer_2_y"},
diff --git a/examples/compiled/interactive_global_development.vg.json b/examples/compiled/interactive_global_development.vg.json
index abfdd0571a..3901b75889 100644
--- a/examples/compiled/interactive_global_development.vg.json
+++ b/examples/compiled/interactive_global_development.vg.json
@@ -223,14 +223,10 @@
"opacity": {"value": 0.06},
"fontSize": {"value": 100},
"fill": {"value": "black"},
- "description": {
- "signal": "\"year: \" + (isValid(datum[\"year\"]) ? datum[\"year\"] : \"\"+datum[\"year\"])"
- },
+ "description": {"signal": "\"year: \" + (\"\" + datum[\"year\"])"},
"x": {"value": 420},
"y": {"value": 250},
- "text": {
- "signal": "isValid(datum[\"year\"]) ? datum[\"year\"] : \"\"+datum[\"year\"]"
- },
+ "text": {"signal": "\"\" + datum[\"year\"]"},
"align": {"value": "center"},
"baseline": {"value": "middle"}
}
@@ -272,7 +268,7 @@
{"value": 0}
],
"description": {
- "signal": "\"fertility: \" + (format(datum[\"fertility\"], \"\")) + \"; life_expect: \" + (format(datum[\"life_expect\"], \"\")) + \"; year: \" + (isValid(datum[\"year\"]) ? datum[\"year\"] : \"\"+datum[\"year\"]) + \"; country: \" + (isValid(datum[\"country\"]) ? datum[\"country\"] : \"\"+datum[\"country\"])"
+ "signal": "\"fertility: \" + (!isValid(datum[\"fertility\"]) || !isFinite(+datum[\"fertility\"]) ? \"\" + datum[\"fertility\"] : format(datum[\"fertility\"], \"\")) + \"; life_expect: \" + (!isValid(datum[\"life_expect\"]) || !isFinite(+datum[\"life_expect\"]) ? \"\" + datum[\"life_expect\"] : format(datum[\"life_expect\"], \"\")) + \"; year: \" + (\"\" + datum[\"year\"]) + \"; country: \" + (\"\" + datum[\"country\"])"
},
"x": {"scale": "x", "field": "fertility"},
"y": {"scale": "y", "field": "life_expect"},
@@ -298,7 +294,7 @@
"fill": {"scale": "color", "field": "name"},
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"fertility: \" + (format(datum[\"fertility\"], \"\")) + \"; life_expect: \" + (format(datum[\"life_expect\"], \"\")) + \"; Region: \" + (isValid(datum[\"name\"]) ? datum[\"name\"] : \"\"+datum[\"name\"])"
+ "signal": "\"fertility: \" + (!isValid(datum[\"fertility\"]) || !isFinite(+datum[\"fertility\"]) ? \"\" + datum[\"fertility\"] : format(datum[\"fertility\"], \"\")) + \"; life_expect: \" + (!isValid(datum[\"life_expect\"]) || !isFinite(+datum[\"life_expect\"]) ? \"\" + datum[\"life_expect\"] : format(datum[\"life_expect\"], \"\")) + \"; Region: \" + (\"\" + datum[\"name\"])"
},
"x": {"scale": "x", "field": "fertility"},
"y": {"scale": "y", "field": "life_expect"},
@@ -318,13 +314,11 @@
"fontWeight": {"value": "bold"},
"fill": {"scale": "color", "field": "name"},
"description": {
- "signal": "\"fertility: \" + (format(datum[\"fertility\"], \"\")) + \"; life_expect: \" + (format(datum[\"life_expect\"], \"\")) + \"; Region: \" + (isValid(datum[\"name\"]) ? datum[\"name\"] : \"\"+datum[\"name\"]) + \"; country: \" + (isValid(datum[\"country\"]) ? datum[\"country\"] : \"\"+datum[\"country\"])"
+ "signal": "\"fertility: \" + (!isValid(datum[\"fertility\"]) || !isFinite(+datum[\"fertility\"]) ? \"\" + datum[\"fertility\"] : format(datum[\"fertility\"], \"\")) + \"; life_expect: \" + (!isValid(datum[\"life_expect\"]) || !isFinite(+datum[\"life_expect\"]) ? \"\" + datum[\"life_expect\"] : format(datum[\"life_expect\"], \"\")) + \"; Region: \" + (\"\" + datum[\"name\"]) + \"; country: \" + (\"\" + datum[\"country\"])"
},
"x": {"scale": "x", "field": "fertility"},
"y": {"scale": "y", "field": "life_expect", "offset": -12},
- "text": {
- "signal": "isValid(datum[\"country\"]) ? datum[\"country\"] : \"\"+datum[\"country\"]"
- },
+ "text": {"signal": "\"\" + datum[\"country\"]"},
"align": {"value": "center"},
"baseline": {"value": "middle"}
}
@@ -341,13 +335,11 @@
"fontSize": {"value": 12},
"fill": {"value": "gray"},
"description": {
- "signal": "\"fertility: \" + (format(datum[\"fertility\"], \"\")) + \"; life_expect: \" + (format(datum[\"life_expect\"], \"\")) + \"; year: \" + (isValid(datum[\"year\"]) ? datum[\"year\"] : \"\"+datum[\"year\"])"
+ "signal": "\"fertility: \" + (!isValid(datum[\"fertility\"]) || !isFinite(+datum[\"fertility\"]) ? \"\" + datum[\"fertility\"] : format(datum[\"fertility\"], \"\")) + \"; life_expect: \" + (!isValid(datum[\"life_expect\"]) || !isFinite(+datum[\"life_expect\"]) ? \"\" + datum[\"life_expect\"] : format(datum[\"life_expect\"], \"\")) + \"; year: \" + (\"\" + datum[\"year\"])"
},
"x": {"scale": "x", "field": "fertility"},
"y": {"scale": "y", "field": "life_expect", "offset": -12},
- "text": {
- "signal": "isValid(datum[\"year\"]) ? datum[\"year\"] : \"\"+datum[\"year\"]"
- },
+ "text": {"signal": "\"\" + datum[\"year\"]"},
"align": {"value": "center"},
"baseline": {"value": "middle"}
}
@@ -365,7 +357,7 @@
"fill": {"value": "gray"},
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"fertility: \" + (format(datum[\"fertility\"], \"\")) + \"; life_expect: \" + (format(datum[\"life_expect\"], \"\"))"
+ "signal": "\"fertility: \" + (!isValid(datum[\"fertility\"]) || !isFinite(+datum[\"fertility\"]) ? \"\" + datum[\"fertility\"] : format(datum[\"fertility\"], \"\")) + \"; life_expect: \" + (!isValid(datum[\"life_expect\"]) || !isFinite(+datum[\"life_expect\"]) ? \"\" + datum[\"life_expect\"] : format(datum[\"life_expect\"], \"\"))"
},
"x": {"scale": "x", "field": "fertility"},
"y": {"scale": "y", "field": "life_expect"},
diff --git a/examples/compiled/interactive_histogram_full_height_hover.vg.json b/examples/compiled/interactive_histogram_full_height_hover.vg.json
index ecb49a4857..3c77da2443 100644
--- a/examples/compiled/interactive_histogram_full_height_hover.vg.json
+++ b/examples/compiled/interactive_histogram_full_height_hover.vg.json
@@ -123,7 +123,7 @@
"encode": {
"update": {
"tooltip": {
- "signal": "{\"IMDB Rating (binned)\": !isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"null\" : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\"), \"Count of Records\": format(datum[\"__count\"], \"\")}"
+ "signal": "{\"IMDB Rating (binned)\": !isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"\" + datum[\"bin_maxbins_10_IMDB Rating\"] : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\"), \"Count of Records\": !isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\")}"
},
"fill": {"value": "#eee"},
"opacity": [
@@ -135,7 +135,7 @@
],
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"null\" : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"\" + datum[\"bin_maxbins_10_IMDB Rating\"] : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x2": {
"scale": "x",
@@ -167,7 +167,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"null\" : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"\" + datum[\"bin_maxbins_10_IMDB Rating\"] : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x2": {
"scale": "x",
diff --git a/examples/compiled/interactive_index_chart.vg.json b/examples/compiled/interactive_index_chart.vg.json
index d3f8508e41..769ad42161 100644
--- a/examples/compiled/interactive_index_chart.vg.json
+++ b/examples/compiled/interactive_index_chart.vg.json
@@ -170,7 +170,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y'))"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y'))"
},
"x": {"scale": "x", "field": "date"},
"y": {"signal": "height", "mult": 0.5}
@@ -227,7 +227,7 @@
"update": {
"stroke": {"scale": "color", "field": "symbol"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; indexed_price: \" + (format(datum[\"indexed_price\"], \"%\")) + \"; symbol: \" + (isValid(datum[\"symbol\"]) ? datum[\"symbol\"] : \"\"+datum[\"symbol\"])"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; indexed_price: \" + (!isValid(datum[\"indexed_price\"]) || !isFinite(+datum[\"indexed_price\"]) ? \"\" + datum[\"indexed_price\"] : format(datum[\"indexed_price\"], \"%\")) + \"; symbol: \" + (\"\" + datum[\"symbol\"])"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "indexed_price"},
@@ -250,7 +250,7 @@
"strokeWidth": {"value": 0.5},
"stroke": {"value": "firebrick"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y'))"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y'))"
},
"x": {"scale": "x", "field": "date"},
"y": {"value": 0},
@@ -270,12 +270,12 @@
"fontWeight": {"value": 100},
"fill": {"value": "firebrick"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; date (year-month): \" + (timeFormat(datum[\"yearmonth_date\"], timeUnitSpecifier([\"year\",\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"})))"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; date (year-month): \" + (!isValid(datum[\"yearmonth_date\"]) || !isFinite(+datum[\"yearmonth_date\"]) ? \"\" + datum[\"yearmonth_date\"] : timeFormat(datum[\"yearmonth_date\"], timeUnitSpecifier([\"year\",\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"})))"
},
"x": {"scale": "x", "field": "date"},
"y": {"value": 310},
"text": {
- "signal": "timeFormat(datum[\"yearmonth_date\"], timeUnitSpecifier([\"year\",\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))"
+ "signal": "!isValid(datum[\"yearmonth_date\"]) || !isFinite(+datum[\"yearmonth_date\"]) ? \"\" + datum[\"yearmonth_date\"] : timeFormat(datum[\"yearmonth_date\"], timeUnitSpecifier([\"year\",\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))"
},
"baseline": {"value": "middle"}
}
diff --git a/examples/compiled/interactive_layered_crossfilter.vg.json b/examples/compiled/interactive_layered_crossfilter.vg.json
index 7edf8e975b..bb9d54c694 100644
--- a/examples/compiled/interactive_layered_crossfilter.vg.json
+++ b/examples/compiled/interactive_layered_crossfilter.vg.json
@@ -426,7 +426,7 @@
"fill": {"value": "#ddd"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"distance (binned): \" + (!isValid(datum[\"bin_maxbins_20_distance\"]) || !isFinite(+datum[\"bin_maxbins_20_distance\"]) ? \"null\" : format(datum[\"bin_maxbins_20_distance\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_distance_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"distance (binned): \" + (!isValid(datum[\"bin_maxbins_20_distance\"]) || !isFinite(+datum[\"bin_maxbins_20_distance\"]) ? \"\" + datum[\"bin_maxbins_20_distance\"] : format(datum[\"bin_maxbins_20_distance\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_distance_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x2": {
"scale": "child__column_distance_x",
@@ -458,7 +458,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"distance (binned): \" + (!isValid(datum[\"bin_maxbins_20_distance\"]) || !isFinite(+datum[\"bin_maxbins_20_distance\"]) ? \"null\" : format(datum[\"bin_maxbins_20_distance\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_distance_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"distance (binned): \" + (!isValid(datum[\"bin_maxbins_20_distance\"]) || !isFinite(+datum[\"bin_maxbins_20_distance\"]) ? \"\" + datum[\"bin_maxbins_20_distance\"] : format(datum[\"bin_maxbins_20_distance\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_distance_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x2": {
"scale": "child__column_distance_x",
@@ -790,7 +790,7 @@
"fill": {"value": "#ddd"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"delay (binned): \" + (!isValid(datum[\"bin_maxbins_20_delay\"]) || !isFinite(+datum[\"bin_maxbins_20_delay\"]) ? \"null\" : format(datum[\"bin_maxbins_20_delay\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_delay_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"delay (binned): \" + (!isValid(datum[\"bin_maxbins_20_delay\"]) || !isFinite(+datum[\"bin_maxbins_20_delay\"]) ? \"\" + datum[\"bin_maxbins_20_delay\"] : format(datum[\"bin_maxbins_20_delay\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_delay_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x2": {
"scale": "child__column_delay_x",
@@ -822,7 +822,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"delay (binned): \" + (!isValid(datum[\"bin_maxbins_20_delay\"]) || !isFinite(+datum[\"bin_maxbins_20_delay\"]) ? \"null\" : format(datum[\"bin_maxbins_20_delay\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_delay_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"delay (binned): \" + (!isValid(datum[\"bin_maxbins_20_delay\"]) || !isFinite(+datum[\"bin_maxbins_20_delay\"]) ? \"\" + datum[\"bin_maxbins_20_delay\"] : format(datum[\"bin_maxbins_20_delay\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_delay_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x2": {
"scale": "child__column_delay_x",
@@ -1154,7 +1154,7 @@
"fill": {"value": "#ddd"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"time (binned): \" + (!isValid(datum[\"bin_maxbins_20_time\"]) || !isFinite(+datum[\"bin_maxbins_20_time\"]) ? \"null\" : format(datum[\"bin_maxbins_20_time\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_time_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"time (binned): \" + (!isValid(datum[\"bin_maxbins_20_time\"]) || !isFinite(+datum[\"bin_maxbins_20_time\"]) ? \"\" + datum[\"bin_maxbins_20_time\"] : format(datum[\"bin_maxbins_20_time\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_time_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x2": {
"scale": "child__column_time_x",
@@ -1186,7 +1186,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"time (binned): \" + (!isValid(datum[\"bin_maxbins_20_time\"]) || !isFinite(+datum[\"bin_maxbins_20_time\"]) ? \"null\" : format(datum[\"bin_maxbins_20_time\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_time_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"time (binned): \" + (!isValid(datum[\"bin_maxbins_20_time\"]) || !isFinite(+datum[\"bin_maxbins_20_time\"]) ? \"\" + datum[\"bin_maxbins_20_time\"] : format(datum[\"bin_maxbins_20_time\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_time_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x2": {
"scale": "child__column_time_x",
diff --git a/examples/compiled/interactive_layered_crossfilter_discrete.vg.json b/examples/compiled/interactive_layered_crossfilter_discrete.vg.json
index 3a58160721..5438086311 100644
--- a/examples/compiled/interactive_layered_crossfilter_discrete.vg.json
+++ b/examples/compiled/interactive_layered_crossfilter_discrete.vg.json
@@ -262,7 +262,7 @@
"fill": {"value": "#ddd"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"distance (binned): \" + (!isValid(datum[\"bin_maxbins_20_distance\"]) || !isFinite(+datum[\"bin_maxbins_20_distance\"]) ? \"null\" : format(datum[\"bin_maxbins_20_distance\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_distance_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"distance (binned): \" + (!isValid(datum[\"bin_maxbins_20_distance\"]) || !isFinite(+datum[\"bin_maxbins_20_distance\"]) ? \"\" + datum[\"bin_maxbins_20_distance\"] : format(datum[\"bin_maxbins_20_distance\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_distance_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x2": {
"scale": "child__column_distance_x",
@@ -294,7 +294,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"distance (binned): \" + (!isValid(datum[\"bin_maxbins_20_distance\"]) || !isFinite(+datum[\"bin_maxbins_20_distance\"]) ? \"null\" : format(datum[\"bin_maxbins_20_distance\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_distance_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"distance (binned): \" + (!isValid(datum[\"bin_maxbins_20_distance\"]) || !isFinite(+datum[\"bin_maxbins_20_distance\"]) ? \"\" + datum[\"bin_maxbins_20_distance\"] : format(datum[\"bin_maxbins_20_distance\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_distance_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x2": {
"scale": "child__column_distance_x",
@@ -417,7 +417,7 @@
"fill": {"value": "#ddd"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"delay (binned): \" + (!isValid(datum[\"bin_maxbins_20_delay\"]) || !isFinite(+datum[\"bin_maxbins_20_delay\"]) ? \"null\" : format(datum[\"bin_maxbins_20_delay\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_delay_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"delay (binned): \" + (!isValid(datum[\"bin_maxbins_20_delay\"]) || !isFinite(+datum[\"bin_maxbins_20_delay\"]) ? \"\" + datum[\"bin_maxbins_20_delay\"] : format(datum[\"bin_maxbins_20_delay\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_delay_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x2": {
"scale": "child__column_delay_x",
@@ -449,7 +449,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"delay (binned): \" + (!isValid(datum[\"bin_maxbins_20_delay\"]) || !isFinite(+datum[\"bin_maxbins_20_delay\"]) ? \"null\" : format(datum[\"bin_maxbins_20_delay\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_delay_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"delay (binned): \" + (!isValid(datum[\"bin_maxbins_20_delay\"]) || !isFinite(+datum[\"bin_maxbins_20_delay\"]) ? \"\" + datum[\"bin_maxbins_20_delay\"] : format(datum[\"bin_maxbins_20_delay\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_delay_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x2": {
"scale": "child__column_delay_x",
@@ -572,7 +572,7 @@
"fill": {"value": "#ddd"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"time (binned): \" + (!isValid(datum[\"bin_maxbins_20_time\"]) || !isFinite(+datum[\"bin_maxbins_20_time\"]) ? \"null\" : format(datum[\"bin_maxbins_20_time\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_time_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"time (binned): \" + (!isValid(datum[\"bin_maxbins_20_time\"]) || !isFinite(+datum[\"bin_maxbins_20_time\"]) ? \"\" + datum[\"bin_maxbins_20_time\"] : format(datum[\"bin_maxbins_20_time\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_time_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x2": {
"scale": "child__column_time_x",
@@ -604,7 +604,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"time (binned): \" + (!isValid(datum[\"bin_maxbins_20_time\"]) || !isFinite(+datum[\"bin_maxbins_20_time\"]) ? \"null\" : format(datum[\"bin_maxbins_20_time\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_time_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"time (binned): \" + (!isValid(datum[\"bin_maxbins_20_time\"]) || !isFinite(+datum[\"bin_maxbins_20_time\"]) ? \"\" + datum[\"bin_maxbins_20_time\"] : format(datum[\"bin_maxbins_20_time\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_time_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x2": {
"scale": "child__column_time_x",
diff --git a/examples/compiled/interactive_legend.vg.json b/examples/compiled/interactive_legend.vg.json
index 5a84804926..8d16bd1218 100644
--- a/examples/compiled/interactive_legend.vg.json
+++ b/examples/compiled/interactive_legend.vg.json
@@ -153,7 +153,7 @@
{"value": 0.2}
],
"description": {
- "signal": "\"date (year-month): \" + (timeFormat(datum[\"yearmonth_date\"], '%Y')) + \"; Sum of count: \" + (format(datum[\"sum_count\"], \"\")) + \"; series: \" + (isValid(datum[\"series\"]) ? datum[\"series\"] : \"\"+datum[\"series\"])"
+ "signal": "\"date (year-month): \" + (!isValid(datum[\"yearmonth_date\"]) || !isFinite(+datum[\"yearmonth_date\"]) ? \"\" + datum[\"yearmonth_date\"] : timeFormat(datum[\"yearmonth_date\"], '%Y')) + \"; Sum of count: \" + (!isValid(datum[\"sum_count\"]) || !isFinite(+datum[\"sum_count\"]) ? \"\" + datum[\"sum_count\"] : format(datum[\"sum_count\"], \"\")) + \"; series: \" + (\"\" + datum[\"series\"])"
},
"x": {"scale": "x", "field": "yearmonth_date"},
"y": {"scale": "y", "field": "sum_count_end"},
diff --git a/examples/compiled/interactive_legend_dblclick.vg.json b/examples/compiled/interactive_legend_dblclick.vg.json
index f8ab0ad7fa..48b393e35c 100644
--- a/examples/compiled/interactive_legend_dblclick.vg.json
+++ b/examples/compiled/interactive_legend_dblclick.vg.json
@@ -153,7 +153,7 @@
{"value": 0.2}
],
"description": {
- "signal": "\"date (year-month): \" + (timeFormat(datum[\"yearmonth_date\"], '%Y')) + \"; Sum of count: \" + (format(datum[\"sum_count\"], \"\")) + \"; series: \" + (isValid(datum[\"series\"]) ? datum[\"series\"] : \"\"+datum[\"series\"])"
+ "signal": "\"date (year-month): \" + (!isValid(datum[\"yearmonth_date\"]) || !isFinite(+datum[\"yearmonth_date\"]) ? \"\" + datum[\"yearmonth_date\"] : timeFormat(datum[\"yearmonth_date\"], '%Y')) + \"; Sum of count: \" + (!isValid(datum[\"sum_count\"]) || !isFinite(+datum[\"sum_count\"]) ? \"\" + datum[\"sum_count\"] : format(datum[\"sum_count\"], \"\")) + \"; series: \" + (\"\" + datum[\"series\"])"
},
"x": {"scale": "x", "field": "yearmonth_date"},
"y": {"scale": "y", "field": "sum_count_end"},
diff --git a/examples/compiled/interactive_line_brush_cursor.vg.json b/examples/compiled/interactive_line_brush_cursor.vg.json
index 783001ce45..243015db86 100644
--- a/examples/compiled/interactive_line_brush_cursor.vg.json
+++ b/examples/compiled/interactive_line_brush_cursor.vg.json
@@ -243,7 +243,7 @@
"update": {
"stroke": {"value": "#4c78a8"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"price\"], \"\"))"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\"))"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "price"},
diff --git a/examples/compiled/interactive_line_hover.vg.json b/examples/compiled/interactive_line_hover.vg.json
index 2327e2d624..d697cf45d8 100644
--- a/examples/compiled/interactive_line_hover.vg.json
+++ b/examples/compiled/interactive_line_hover.vg.json
@@ -123,7 +123,7 @@
{"value": 0.2}
],
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"price\"], \"\")) + \"; symbol: \" + (isValid(datum[\"symbol\"]) ? datum[\"symbol\"] : \"\"+datum[\"symbol\"])"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\")) + \"; symbol: \" + (\"\" + datum[\"symbol\"])"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "price"},
@@ -177,7 +177,7 @@
{"value": 0.2}
],
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"price\"], \"\")) + \"; symbol: \" + (isValid(datum[\"symbol\"]) ? datum[\"symbol\"] : \"\"+datum[\"symbol\"])"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\")) + \"; symbol: \" + (\"\" + datum[\"symbol\"])"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "price"},
@@ -214,7 +214,7 @@
],
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"max_date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"argmax_date\"][\"price\"], \"\")) + \"; symbol: \" + (isValid(datum[\"symbol\"]) ? datum[\"symbol\"] : \"\"+datum[\"symbol\"])"
+ "signal": "\"date: \" + (!isValid(datum[\"max_date\"]) || !isFinite(+datum[\"max_date\"]) ? \"\" + datum[\"max_date\"] : timeFormat(datum[\"max_date\"], '%b %d, %Y')) + \"; price: \" + (!isValid(datum[\"argmax_date\"][\"price\"]) || !isFinite(+datum[\"argmax_date\"][\"price\"]) ? \"\" + datum[\"argmax_date\"][\"price\"] : format(datum[\"argmax_date\"][\"price\"], \"\")) + \"; symbol: \" + (\"\" + datum[\"symbol\"])"
},
"x": {"scale": "x", "field": "max_date"},
"y": {"scale": "y", "field": "argmax_date[\"price\"]"},
@@ -248,13 +248,11 @@
{"value": 0.2}
],
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"max_date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"argmax_date\"][\"price\"], \"\")) + \"; symbol: \" + (isValid(datum[\"symbol\"]) ? datum[\"symbol\"] : \"\"+datum[\"symbol\"])"
+ "signal": "\"date: \" + (!isValid(datum[\"max_date\"]) || !isFinite(+datum[\"max_date\"]) ? \"\" + datum[\"max_date\"] : timeFormat(datum[\"max_date\"], '%b %d, %Y')) + \"; price: \" + (!isValid(datum[\"argmax_date\"][\"price\"]) || !isFinite(+datum[\"argmax_date\"][\"price\"]) ? \"\" + datum[\"argmax_date\"][\"price\"] : format(datum[\"argmax_date\"][\"price\"], \"\")) + \"; symbol: \" + (\"\" + datum[\"symbol\"])"
},
"x": {"scale": "x", "field": "max_date"},
"y": {"scale": "y", "field": "argmax_date[\"price\"]"},
- "text": {
- "signal": "isValid(datum[\"symbol\"]) ? datum[\"symbol\"] : \"\"+datum[\"symbol\"]"
- },
+ "text": {"signal": "\"\" + datum[\"symbol\"]"},
"baseline": {"value": "middle"}
}
}
diff --git a/examples/compiled/interactive_line_point_hover.vg.json b/examples/compiled/interactive_line_point_hover.vg.json
index ca3ae2083c..a59f2228d5 100644
--- a/examples/compiled/interactive_line_point_hover.vg.json
+++ b/examples/compiled/interactive_line_point_hover.vg.json
@@ -104,7 +104,7 @@
"update": {
"stroke": {"scale": "color", "field": "symbol"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"price\"], \"\")) + \"; symbol: \" + (isValid(datum[\"symbol\"]) ? datum[\"symbol\"] : \"\"+datum[\"symbol\"])"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\")) + \"; symbol: \" + (\"\" + datum[\"symbol\"])"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "price"},
@@ -132,12 +132,12 @@
{"value": 0}
],
"tooltip": {
- "signal": "{\"date\": timeFormat(datum[\"date\"], '%b %d, %Y'), \"price\": format(datum[\"price\"], \"\"), \"symbol\": isValid(datum[\"symbol\"]) ? datum[\"symbol\"] : \"\"+datum[\"symbol\"]}"
+ "signal": "{\"date\": !isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y'), \"price\": !isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\"), \"symbol\": \"\" + datum[\"symbol\"]}"
},
"fill": {"scale": "color", "field": "symbol"},
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"price\"], \"\")) + \"; symbol: \" + (isValid(datum[\"symbol\"]) ? datum[\"symbol\"] : \"\"+datum[\"symbol\"])"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\")) + \"; symbol: \" + (\"\" + datum[\"symbol\"])"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "price"},
diff --git a/examples/compiled/interactive_multi_line_label.vg.json b/examples/compiled/interactive_multi_line_label.vg.json
index 71842ccf8c..c465ae58cd 100644
--- a/examples/compiled/interactive_multi_line_label.vg.json
+++ b/examples/compiled/interactive_multi_line_label.vg.json
@@ -149,7 +149,7 @@
"update": {
"stroke": {"scale": "color", "field": "symbol"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"price\"], \"\")) + \"; symbol: \" + (isValid(datum[\"symbol\"]) ? datum[\"symbol\"] : \"\"+datum[\"symbol\"])"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\")) + \"; symbol: \" + (\"\" + datum[\"symbol\"])"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "price"},
@@ -180,7 +180,7 @@
"stroke": {"scale": "color", "field": "symbol"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"price\"], \"\")) + \"; symbol: \" + (isValid(datum[\"symbol\"]) ? datum[\"symbol\"] : \"\"+datum[\"symbol\"])"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\")) + \"; symbol: \" + (\"\" + datum[\"symbol\"])"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "price"}
@@ -219,7 +219,7 @@
"update": {
"stroke": {"value": "gray"},
"description": {
- "signal": "\"Min of date: \" + (timeFormat(datum[\"min_date\"], '%b %d, %Y'))"
+ "signal": "\"Min of date: \" + (!isValid(datum[\"min_date\"]) || !isFinite(+datum[\"min_date\"]) ? \"\" + datum[\"min_date\"] : timeFormat(datum[\"min_date\"], '%b %d, %Y'))"
},
"x": {"scale": "x", "field": "min_date"},
"y": {"value": 0},
@@ -242,11 +242,13 @@
"dy": {"value": -5},
"fill": {"value": "black"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"price\"], \"\"))"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\"))"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "price"},
- "text": {"signal": "format(datum[\"price\"], \"\")"},
+ "text": {
+ "signal": "!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\")"
+ },
"baseline": {"value": "middle"}
}
}
@@ -264,11 +266,13 @@
"dy": {"value": -5},
"fill": {"scale": "color", "field": "symbol"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"price\"], \"\")) + \"; symbol: \" + (isValid(datum[\"symbol\"]) ? datum[\"symbol\"] : \"\"+datum[\"symbol\"])"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\")) + \"; symbol: \" + (\"\" + datum[\"symbol\"])"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "price"},
- "text": {"signal": "format(datum[\"price\"], \"\")"},
+ "text": {
+ "signal": "!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\")"
+ },
"baseline": {"value": "middle"}
}
}
diff --git a/examples/compiled/interactive_multi_line_pivot_tooltip.svg b/examples/compiled/interactive_multi_line_pivot_tooltip.svg
index d485ee7fc1..4e5f142f57 100644
--- a/examples/compiled/interactive_multi_line_pivot_tooltip.svg
+++ b/examples/compiled/interactive_multi_line_pivot_tooltip.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/examples/compiled/interactive_multi_line_pivot_tooltip.vg.json b/examples/compiled/interactive_multi_line_pivot_tooltip.vg.json
index 167dc357ed..63ebc9c5ff 100644
--- a/examples/compiled/interactive_multi_line_pivot_tooltip.vg.json
+++ b/examples/compiled/interactive_multi_line_pivot_tooltip.vg.json
@@ -133,7 +133,7 @@
"update": {
"stroke": {"scale": "color", "field": "symbol"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"price\"], \"\")) + \"; symbol: \" + (isValid(datum[\"symbol\"]) ? datum[\"symbol\"] : \"\"+datum[\"symbol\"])"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\")) + \"; symbol: \" + (\"\" + datum[\"symbol\"])"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "price"},
@@ -158,7 +158,7 @@
"stroke": {"scale": "color", "field": "symbol"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"price\"], \"\")) + \"; symbol: \" + (isValid(datum[\"symbol\"]) ? datum[\"symbol\"] : \"\"+datum[\"symbol\"])"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\")) + \"; symbol: \" + (\"\" + datum[\"symbol\"])"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "price"}
@@ -182,10 +182,10 @@
{"value": 0}
],
"tooltip": {
- "signal": "{\"AAPL\": format(datum[\"AAPL\"], \"\"), \"AMZN\": format(datum[\"AMZN\"], \"\"), \"GOOG\": format(datum[\"GOOG\"], \"\"), \"IBM\": format(datum[\"IBM\"], \"\"), \"MSFT\": format(datum[\"MSFT\"], \"\")}"
+ "signal": "{\"AAPL\": !isValid(datum[\"AAPL\"]) || !isFinite(+datum[\"AAPL\"]) ? \"\" + datum[\"AAPL\"] : format(datum[\"AAPL\"], \"\"), \"AMZN\": !isValid(datum[\"AMZN\"]) || !isFinite(+datum[\"AMZN\"]) ? \"\" + datum[\"AMZN\"] : format(datum[\"AMZN\"], \"\"), \"GOOG\": !isValid(datum[\"GOOG\"]) || !isFinite(+datum[\"GOOG\"]) ? \"\" + datum[\"GOOG\"] : format(datum[\"GOOG\"], \"\"), \"IBM\": !isValid(datum[\"IBM\"]) || !isFinite(+datum[\"IBM\"]) ? \"\" + datum[\"IBM\"] : format(datum[\"IBM\"], \"\"), \"MSFT\": !isValid(datum[\"MSFT\"]) || !isFinite(+datum[\"MSFT\"]) ? \"\" + datum[\"MSFT\"] : format(datum[\"MSFT\"], \"\")}"
},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; AAPL: \" + (format(datum[\"AAPL\"], \"\")) + \"; AMZN: \" + (format(datum[\"AMZN\"], \"\")) + \"; GOOG: \" + (format(datum[\"GOOG\"], \"\")) + \"; IBM: \" + (format(datum[\"IBM\"], \"\")) + \"; MSFT: \" + (format(datum[\"MSFT\"], \"\"))"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; AAPL: \" + (!isValid(datum[\"AAPL\"]) || !isFinite(+datum[\"AAPL\"]) ? \"\" + datum[\"AAPL\"] : format(datum[\"AAPL\"], \"\")) + \"; AMZN: \" + (!isValid(datum[\"AMZN\"]) || !isFinite(+datum[\"AMZN\"]) ? \"\" + datum[\"AMZN\"] : format(datum[\"AMZN\"], \"\")) + \"; GOOG: \" + (!isValid(datum[\"GOOG\"]) || !isFinite(+datum[\"GOOG\"]) ? \"\" + datum[\"GOOG\"] : format(datum[\"GOOG\"], \"\")) + \"; IBM: \" + (!isValid(datum[\"IBM\"]) || !isFinite(+datum[\"IBM\"]) ? \"\" + datum[\"IBM\"] : format(datum[\"IBM\"], \"\")) + \"; MSFT: \" + (!isValid(datum[\"MSFT\"]) || !isFinite(+datum[\"MSFT\"]) ? \"\" + datum[\"MSFT\"] : format(datum[\"MSFT\"], \"\"))"
},
"x": {"scale": "x", "field": "date"},
"y": {"value": 0},
@@ -205,7 +205,7 @@
"stroke": {"value": "transparent"},
"isVoronoi": {"value": true},
"tooltip": {
- "signal": "{\"AAPL\": format(datum.datum[\"AAPL\"], \"\"), \"AMZN\": format(datum.datum[\"AMZN\"], \"\"), \"GOOG\": format(datum.datum[\"GOOG\"], \"\"), \"IBM\": format(datum.datum[\"IBM\"], \"\"), \"MSFT\": format(datum.datum[\"MSFT\"], \"\")}"
+ "signal": "{\"AAPL\": !isValid(datum.datum[\"AAPL\"]) || !isFinite(+datum.datum[\"AAPL\"]) ? \"\" + datum.datum[\"AAPL\"] : format(datum.datum[\"AAPL\"], \"\"), \"AMZN\": !isValid(datum.datum[\"AMZN\"]) || !isFinite(+datum.datum[\"AMZN\"]) ? \"\" + datum.datum[\"AMZN\"] : format(datum.datum[\"AMZN\"], \"\"), \"GOOG\": !isValid(datum.datum[\"GOOG\"]) || !isFinite(+datum.datum[\"GOOG\"]) ? \"\" + datum.datum[\"GOOG\"] : format(datum.datum[\"GOOG\"], \"\"), \"IBM\": !isValid(datum.datum[\"IBM\"]) || !isFinite(+datum.datum[\"IBM\"]) ? \"\" + datum.datum[\"IBM\"] : format(datum.datum[\"IBM\"], \"\"), \"MSFT\": !isValid(datum.datum[\"MSFT\"]) || !isFinite(+datum.datum[\"MSFT\"]) ? \"\" + datum.datum[\"MSFT\"] : format(datum.datum[\"MSFT\"], \"\")}"
}
}
},
diff --git a/examples/compiled/interactive_multi_line_tooltip.vg.json b/examples/compiled/interactive_multi_line_tooltip.vg.json
index 9b6c48a41e..4f9f5804eb 100644
--- a/examples/compiled/interactive_multi_line_tooltip.vg.json
+++ b/examples/compiled/interactive_multi_line_tooltip.vg.json
@@ -91,10 +91,10 @@
"update": {
"stroke": {"value": "orange"},
"tooltip": {
- "signal": "{\"date (year-month-date)\": timeFormat(datum[\"yearmonthdate_date\"], timeUnitSpecifier([\"year\",\"month\",\"date\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"})), \"temp_max\": format(datum[\"temp_max\"], \"\"), \"temp_min\": format(datum[\"temp_min\"], \"\")}"
+ "signal": "{\"date (year-month-date)\": !isValid(datum[\"yearmonthdate_date\"]) || !isFinite(+datum[\"yearmonthdate_date\"]) ? \"\" + datum[\"yearmonthdate_date\"] : timeFormat(datum[\"yearmonthdate_date\"], timeUnitSpecifier([\"year\",\"month\",\"date\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"})), \"temp_max\": !isValid(datum[\"temp_max\"]) || !isFinite(+datum[\"temp_max\"]) ? \"\" + datum[\"temp_max\"] : format(datum[\"temp_max\"], \"\"), \"temp_min\": !isValid(datum[\"temp_min\"]) || !isFinite(+datum[\"temp_min\"]) ? \"\" + datum[\"temp_min\"] : format(datum[\"temp_min\"], \"\")}"
},
"description": {
- "signal": "\"date (year-month-date): \" + (timeFormat(datum[\"yearmonthdate_date\"], timeUnitSpecifier([\"year\",\"month\",\"date\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; temp_max: \" + (format(datum[\"temp_max\"], \"\")) + \"; temp_min: \" + (format(datum[\"temp_min\"], \"\"))"
+ "signal": "\"date (year-month-date): \" + (!isValid(datum[\"yearmonthdate_date\"]) || !isFinite(+datum[\"yearmonthdate_date\"]) ? \"\" + datum[\"yearmonthdate_date\"] : timeFormat(datum[\"yearmonthdate_date\"], timeUnitSpecifier([\"year\",\"month\",\"date\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; temp_max: \" + (!isValid(datum[\"temp_max\"]) || !isFinite(+datum[\"temp_max\"]) ? \"\" + datum[\"temp_max\"] : format(datum[\"temp_max\"], \"\")) + \"; temp_min: \" + (!isValid(datum[\"temp_min\"]) || !isFinite(+datum[\"temp_min\"]) ? \"\" + datum[\"temp_min\"] : format(datum[\"temp_min\"], \"\"))"
},
"x": {"scale": "x", "field": "yearmonthdate_date"},
"y": {"scale": "y", "field": "temp_max"},
@@ -115,10 +115,10 @@
"update": {
"stroke": {"value": "red"},
"tooltip": {
- "signal": "{\"date (year-month-date)\": timeFormat(datum[\"yearmonthdate_date\"], timeUnitSpecifier([\"year\",\"month\",\"date\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"})), \"temp_max\": format(datum[\"temp_max\"], \"\"), \"temp_min\": format(datum[\"temp_min\"], \"\")}"
+ "signal": "{\"date (year-month-date)\": !isValid(datum[\"yearmonthdate_date\"]) || !isFinite(+datum[\"yearmonthdate_date\"]) ? \"\" + datum[\"yearmonthdate_date\"] : timeFormat(datum[\"yearmonthdate_date\"], timeUnitSpecifier([\"year\",\"month\",\"date\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"})), \"temp_max\": !isValid(datum[\"temp_max\"]) || !isFinite(+datum[\"temp_max\"]) ? \"\" + datum[\"temp_max\"] : format(datum[\"temp_max\"], \"\"), \"temp_min\": !isValid(datum[\"temp_min\"]) || !isFinite(+datum[\"temp_min\"]) ? \"\" + datum[\"temp_min\"] : format(datum[\"temp_min\"], \"\")}"
},
"description": {
- "signal": "\"date (year-month-date): \" + (timeFormat(datum[\"yearmonthdate_date\"], timeUnitSpecifier([\"year\",\"month\",\"date\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; temp_min: \" + (format(datum[\"temp_min\"], \"\")) + \"; temp_max: \" + (format(datum[\"temp_max\"], \"\"))"
+ "signal": "\"date (year-month-date): \" + (!isValid(datum[\"yearmonthdate_date\"]) || !isFinite(+datum[\"yearmonthdate_date\"]) ? \"\" + datum[\"yearmonthdate_date\"] : timeFormat(datum[\"yearmonthdate_date\"], timeUnitSpecifier([\"year\",\"month\",\"date\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; temp_min: \" + (!isValid(datum[\"temp_min\"]) || !isFinite(+datum[\"temp_min\"]) ? \"\" + datum[\"temp_min\"] : format(datum[\"temp_min\"], \"\")) + \"; temp_max: \" + (!isValid(datum[\"temp_max\"]) || !isFinite(+datum[\"temp_max\"]) ? \"\" + datum[\"temp_max\"] : format(datum[\"temp_max\"], \"\"))"
},
"x": {"scale": "x", "field": "yearmonthdate_date"},
"y": {"scale": "y", "field": "temp_min"},
@@ -144,10 +144,10 @@
{"value": "transparent"}
],
"tooltip": {
- "signal": "{\"date (year-month-date)\": timeFormat(datum[\"yearmonthdate_date\"], timeUnitSpecifier([\"year\",\"month\",\"date\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"})), \"temp_max\": format(datum[\"temp_max\"], \"\"), \"temp_min\": format(datum[\"temp_min\"], \"\")}"
+ "signal": "{\"date (year-month-date)\": !isValid(datum[\"yearmonthdate_date\"]) || !isFinite(+datum[\"yearmonthdate_date\"]) ? \"\" + datum[\"yearmonthdate_date\"] : timeFormat(datum[\"yearmonthdate_date\"], timeUnitSpecifier([\"year\",\"month\",\"date\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"})), \"temp_max\": !isValid(datum[\"temp_max\"]) || !isFinite(+datum[\"temp_max\"]) ? \"\" + datum[\"temp_max\"] : format(datum[\"temp_max\"], \"\"), \"temp_min\": !isValid(datum[\"temp_min\"]) || !isFinite(+datum[\"temp_min\"]) ? \"\" + datum[\"temp_min\"] : format(datum[\"temp_min\"], \"\")}"
},
"description": {
- "signal": "\"date (year-month-date): \" + (timeFormat(datum[\"yearmonthdate_date\"], timeUnitSpecifier([\"year\",\"month\",\"date\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; temp_max: \" + (format(datum[\"temp_max\"], \"\")) + \"; temp_min: \" + (format(datum[\"temp_min\"], \"\"))"
+ "signal": "\"date (year-month-date): \" + (!isValid(datum[\"yearmonthdate_date\"]) || !isFinite(+datum[\"yearmonthdate_date\"]) ? \"\" + datum[\"yearmonthdate_date\"] : timeFormat(datum[\"yearmonthdate_date\"], timeUnitSpecifier([\"year\",\"month\",\"date\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; temp_max: \" + (!isValid(datum[\"temp_max\"]) || !isFinite(+datum[\"temp_max\"]) ? \"\" + datum[\"temp_max\"] : format(datum[\"temp_max\"], \"\")) + \"; temp_min: \" + (!isValid(datum[\"temp_min\"]) || !isFinite(+datum[\"temp_min\"]) ? \"\" + datum[\"temp_min\"] : format(datum[\"temp_min\"], \"\"))"
},
"x": {"scale": "x", "field": "yearmonthdate_date"},
"y": {"value": 0},
diff --git a/examples/compiled/interactive_overview_detail.vg.json b/examples/compiled/interactive_overview_detail.vg.json
index 916805a00d..6803166103 100644
--- a/examples/compiled/interactive_overview_detail.vg.json
+++ b/examples/compiled/interactive_overview_detail.vg.json
@@ -96,7 +96,7 @@
"orient": {"value": "vertical"},
"fill": {"value": "#4c78a8"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"price\"], \"\"))"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\"))"
},
"x": {"scale": "concat_0_x", "field": "date"},
"y": {"scale": "concat_0_y", "field": "price_end"},
@@ -387,7 +387,7 @@
"orient": {"value": "vertical"},
"fill": {"value": "#4c78a8"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"price\"], \"\"))"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\"))"
},
"x": {"scale": "concat_1_x", "field": "date"},
"y": {"scale": "concat_1_y", "field": "price_end"},
diff --git a/examples/compiled/interactive_paintbrush.vg.json b/examples/compiled/interactive_paintbrush.vg.json
index 453313cf66..64f8d56541 100644
--- a/examples/compiled/interactive_paintbrush.vg.json
+++ b/examples/compiled/interactive_paintbrush.vg.json
@@ -86,7 +86,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\"))"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"},
diff --git a/examples/compiled/interactive_paintbrush_color.vg.json b/examples/compiled/interactive_paintbrush_color.vg.json
index c15d875689..8e051abd22 100644
--- a/examples/compiled/interactive_paintbrush_color.vg.json
+++ b/examples/compiled/interactive_paintbrush_color.vg.json
@@ -88,7 +88,7 @@
],
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (\"\" + datum[\"Cylinders\"])"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"},
diff --git a/examples/compiled/interactive_paintbrush_color_nearest.vg.json b/examples/compiled/interactive_paintbrush_color_nearest.vg.json
index f7d962fa2d..0eb1212639 100644
--- a/examples/compiled/interactive_paintbrush_color_nearest.vg.json
+++ b/examples/compiled/interactive_paintbrush_color_nearest.vg.json
@@ -92,7 +92,7 @@
],
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (\"\" + datum[\"Cylinders\"])"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"},
diff --git a/examples/compiled/interactive_paintbrush_interval.vg.json b/examples/compiled/interactive_paintbrush_interval.vg.json
index 647060779f..9871ddfe33 100644
--- a/examples/compiled/interactive_paintbrush_interval.vg.json
+++ b/examples/compiled/interactive_paintbrush_interval.vg.json
@@ -313,7 +313,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\"))"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"},
diff --git a/examples/compiled/interactive_paintbrush_simple_false.vg.json b/examples/compiled/interactive_paintbrush_simple_false.vg.json
index c5954a16e8..2e6f979f50 100644
--- a/examples/compiled/interactive_paintbrush_simple_false.vg.json
+++ b/examples/compiled/interactive_paintbrush_simple_false.vg.json
@@ -85,7 +85,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"},
diff --git a/examples/compiled/interactive_paintbrush_simple_true.vg.json b/examples/compiled/interactive_paintbrush_simple_true.vg.json
index 6e225de8b8..598a89b1d7 100644
--- a/examples/compiled/interactive_paintbrush_simple_true.vg.json
+++ b/examples/compiled/interactive_paintbrush_simple_true.vg.json
@@ -85,7 +85,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"},
diff --git a/examples/compiled/interactive_panzoom_splom.vg.json b/examples/compiled/interactive_panzoom_splom.vg.json
index ee08ac75c4..8dfe0c07c3 100644
--- a/examples/compiled/interactive_panzoom_splom.vg.json
+++ b/examples/compiled/interactive_panzoom_splom.vg.json
@@ -255,7 +255,7 @@
"stroke": {"scale": "color", "field": "Origin"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {
"scale": "child__row_Horsepowercolumn_Miles_per_Gallon_x",
@@ -457,7 +457,7 @@
"stroke": {"scale": "color", "field": "Origin"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Acceleration: \" + (format(datum[\"Acceleration\"], \"\")) + \"; Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Acceleration: \" + (!isValid(datum[\"Acceleration\"]) || !isFinite(+datum[\"Acceleration\"]) ? \"\" + datum[\"Acceleration\"] : format(datum[\"Acceleration\"], \"\")) + \"; Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {
"scale": "child__row_Horsepowercolumn_Acceleration_x",
@@ -638,7 +638,7 @@
"stroke": {"scale": "color", "field": "Origin"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {
"scale": "child__row_Horsepowercolumn_Horsepower_x",
@@ -842,7 +842,7 @@
"stroke": {"scale": "color", "field": "Origin"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Acceleration: \" + (format(datum[\"Acceleration\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Acceleration: \" + (!isValid(datum[\"Acceleration\"]) || !isFinite(+datum[\"Acceleration\"]) ? \"\" + datum[\"Acceleration\"] : format(datum[\"Acceleration\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {
"scale": "child__row_Accelerationcolumn_Miles_per_Gallon_x",
@@ -1023,7 +1023,7 @@
"stroke": {"scale": "color", "field": "Origin"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Acceleration: \" + (format(datum[\"Acceleration\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Acceleration: \" + (!isValid(datum[\"Acceleration\"]) || !isFinite(+datum[\"Acceleration\"]) ? \"\" + datum[\"Acceleration\"] : format(datum[\"Acceleration\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {
"scale": "child__row_Accelerationcolumn_Acceleration_x",
@@ -1225,7 +1225,7 @@
"stroke": {"scale": "color", "field": "Origin"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Acceleration: \" + (format(datum[\"Acceleration\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Acceleration: \" + (!isValid(datum[\"Acceleration\"]) || !isFinite(+datum[\"Acceleration\"]) ? \"\" + datum[\"Acceleration\"] : format(datum[\"Acceleration\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {
"scale": "child__row_Accelerationcolumn_Horsepower_x",
@@ -1406,7 +1406,7 @@
"stroke": {"scale": "color", "field": "Origin"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {
"scale": "child__row_Miles_per_Galloncolumn_Miles_per_Gallon_x",
@@ -1610,7 +1610,7 @@
"stroke": {"scale": "color", "field": "Origin"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Acceleration: \" + (format(datum[\"Acceleration\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Acceleration: \" + (!isValid(datum[\"Acceleration\"]) || !isFinite(+datum[\"Acceleration\"]) ? \"\" + datum[\"Acceleration\"] : format(datum[\"Acceleration\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {
"scale": "child__row_Miles_per_Galloncolumn_Acceleration_x",
@@ -1814,7 +1814,7 @@
"stroke": {"scale": "color", "field": "Origin"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {
"scale": "child__row_Miles_per_Galloncolumn_Horsepower_x",
diff --git a/examples/compiled/interactive_panzoom_vconcat_shared.vg.json b/examples/compiled/interactive_panzoom_vconcat_shared.vg.json
index ad089bb44d..166e7f1e41 100644
--- a/examples/compiled/interactive_panzoom_vconcat_shared.vg.json
+++ b/examples/compiled/interactive_panzoom_vconcat_shared.vg.json
@@ -184,7 +184,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\"))"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "concat_0_y", "field": "Miles_per_Gallon"}
@@ -267,7 +267,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Acceleration: \" + (format(datum[\"Acceleration\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Acceleration: \" + (!isValid(datum[\"Acceleration\"]) || !isFinite(+datum[\"Acceleration\"]) ? \"\" + datum[\"Acceleration\"] : format(datum[\"Acceleration\"], \"\"))"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "concat_1_y", "field": "Acceleration"}
diff --git a/examples/compiled/interactive_point_domainRaw_binding.vg.json b/examples/compiled/interactive_point_domainRaw_binding.vg.json
index ba4105024a..9b0e89f7e2 100644
--- a/examples/compiled/interactive_point_domainRaw_binding.vg.json
+++ b/examples/compiled/interactive_point_domainRaw_binding.vg.json
@@ -44,7 +44,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (format(datum[\"Cylinders\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (!isValid(datum[\"Cylinders\"]) || !isFinite(+datum[\"Cylinders\"]) ? \"\" + datum[\"Cylinders\"] : format(datum[\"Cylinders\"], \"\"))"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"},
diff --git a/examples/compiled/interactive_point_init.vg.json b/examples/compiled/interactive_point_init.vg.json
index 7ea5d46c2c..ce060232ad 100644
--- a/examples/compiled/interactive_point_init.vg.json
+++ b/examples/compiled/interactive_point_init.vg.json
@@ -111,7 +111,7 @@
],
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"},
diff --git a/examples/compiled/interactive_query_widgets.vg.json b/examples/compiled/interactive_query_widgets.vg.json
index 27a4d523a2..3aa8d02a5e 100644
--- a/examples/compiled/interactive_query_widgets.vg.json
+++ b/examples/compiled/interactive_query_widgets.vg.json
@@ -116,7 +116,7 @@
],
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"},
@@ -136,7 +136,7 @@
"fill": {"scale": "color", "field": "Origin"},
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"},
diff --git a/examples/compiled/interactive_seattle_weather.vg.json b/examples/compiled/interactive_seattle_weather.vg.json
index 020b67c7dc..627bb0713d 100644
--- a/examples/compiled/interactive_seattle_weather.vg.json
+++ b/examples/compiled/interactive_seattle_weather.vg.json
@@ -319,7 +319,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Date: \" + (timeFormat(datum[\"monthdate_date\"], '%b')) + \"; Maximum Daily Temperature (C): \" + (format(datum[\"temp_max\"], \"\")) + \"; Weather: \" + (isValid(datum[\"weather\"]) ? datum[\"weather\"] : \"\"+datum[\"weather\"]) + \"; Precipitation: \" + (format(datum[\"precipitation\"], \"\"))"
+ "signal": "\"Date: \" + (!isValid(datum[\"monthdate_date\"]) || !isFinite(+datum[\"monthdate_date\"]) ? \"\" + datum[\"monthdate_date\"] : timeFormat(datum[\"monthdate_date\"], '%b')) + \"; Maximum Daily Temperature (C): \" + (!isValid(datum[\"temp_max\"]) || !isFinite(+datum[\"temp_max\"]) ? \"\" + datum[\"temp_max\"] : format(datum[\"temp_max\"], \"\")) + \"; Weather: \" + (\"\" + datum[\"weather\"]) + \"; Precipitation: \" + (!isValid(datum[\"precipitation\"]) || !isFinite(+datum[\"precipitation\"]) ? \"\" + datum[\"precipitation\"] : format(datum[\"precipitation\"], \"\"))"
},
"x": {"scale": "concat_0_x", "field": "monthdate_date"},
"y": {"scale": "concat_0_y", "field": "temp_max"},
@@ -502,7 +502,7 @@
],
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Count of Records: \" + (format(datum[\"__count\"], \"\")) + \"; Weather: \" + (isValid(datum[\"weather\"]) ? datum[\"weather\"] : \"\"+datum[\"weather\"]) + \"; weather: \" + (isValid(datum[\"weather\"]) ? datum[\"weather\"] : \"\"+datum[\"weather\"])"
+ "signal": "\"Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\")) + \"; Weather: \" + (\"\" + datum[\"weather\"]) + \"; weather: \" + (\"\" + datum[\"weather\"])"
},
"x": {"scale": "concat_1_x", "field": "__count"},
"x2": {"scale": "concat_1_x", "value": 0},
diff --git a/examples/compiled/interactive_splom.vg.json b/examples/compiled/interactive_splom.vg.json
index adaf981d51..ebfd25fe1b 100644
--- a/examples/compiled/interactive_splom.vg.json
+++ b/examples/compiled/interactive_splom.vg.json
@@ -547,7 +547,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {
"scale": "child__row_Horsepowercolumn_Miles_per_Gallon_x",
@@ -1058,7 +1058,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Acceleration: \" + (format(datum[\"Acceleration\"], \"\")) + \"; Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Acceleration: \" + (!isValid(datum[\"Acceleration\"]) || !isFinite(+datum[\"Acceleration\"]) ? \"\" + datum[\"Acceleration\"] : format(datum[\"Acceleration\"], \"\")) + \"; Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {
"scale": "child__row_Horsepowercolumn_Acceleration_x",
@@ -1481,7 +1481,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {
"scale": "child__row_Horsepowercolumn_Horsepower_x",
@@ -1993,7 +1993,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Acceleration: \" + (format(datum[\"Acceleration\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Acceleration: \" + (!isValid(datum[\"Acceleration\"]) || !isFinite(+datum[\"Acceleration\"]) ? \"\" + datum[\"Acceleration\"] : format(datum[\"Acceleration\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {
"scale": "child__row_Accelerationcolumn_Miles_per_Gallon_x",
@@ -2418,7 +2418,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Acceleration: \" + (format(datum[\"Acceleration\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Acceleration: \" + (!isValid(datum[\"Acceleration\"]) || !isFinite(+datum[\"Acceleration\"]) ? \"\" + datum[\"Acceleration\"] : format(datum[\"Acceleration\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {
"scale": "child__row_Accelerationcolumn_Acceleration_x",
@@ -2926,7 +2926,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Acceleration: \" + (format(datum[\"Acceleration\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Acceleration: \" + (!isValid(datum[\"Acceleration\"]) || !isFinite(+datum[\"Acceleration\"]) ? \"\" + datum[\"Acceleration\"] : format(datum[\"Acceleration\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {
"scale": "child__row_Accelerationcolumn_Horsepower_x",
@@ -3353,7 +3353,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {
"scale": "child__row_Miles_per_Galloncolumn_Miles_per_Gallon_x",
@@ -3865,7 +3865,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Acceleration: \" + (format(datum[\"Acceleration\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Acceleration: \" + (!isValid(datum[\"Acceleration\"]) || !isFinite(+datum[\"Acceleration\"]) ? \"\" + datum[\"Acceleration\"] : format(datum[\"Acceleration\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {
"scale": "child__row_Miles_per_Galloncolumn_Acceleration_x",
@@ -4380,7 +4380,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {
"scale": "child__row_Miles_per_Galloncolumn_Horsepower_x",
diff --git a/examples/compiled/interactive_stocks_nearest_index.vg.json b/examples/compiled/interactive_stocks_nearest_index.vg.json
index b29d81cd45..43656d0038 100644
--- a/examples/compiled/interactive_stocks_nearest_index.vg.json
+++ b/examples/compiled/interactive_stocks_nearest_index.vg.json
@@ -126,7 +126,7 @@
"update": {
"stroke": {"scale": "color", "field": "symbol"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"price\"], \"\")) + \"; symbol: \" + (isValid(datum[\"symbol\"]) ? datum[\"symbol\"] : \"\"+datum[\"symbol\"])"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\")) + \"; symbol: \" + (\"\" + datum[\"symbol\"])"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "price"},
@@ -151,7 +151,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"price\"], \"\"))"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\"))"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "price"}
@@ -190,7 +190,7 @@
"update": {
"stroke": {"value": "black"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y'))"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y'))"
},
"x": {"scale": "x", "field": "date"},
"y": {"value": 0},
@@ -208,11 +208,13 @@
"update": {
"fill": {"value": "black"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y'))"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y'))"
},
"x": {"scale": "x", "field": "date"},
"y": {"value": 10},
- "text": {"signal": "timeFormat(datum[\"date\"], '%b %d, %Y')"},
+ "text": {
+ "signal": "!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')"
+ },
"baseline": {"value": "middle"}
}
}
diff --git a/examples/compiled/isotype_bar_chart.vg.json b/examples/compiled/isotype_bar_chart.vg.json
index 1146ff685a..77e9b085ef 100644
--- a/examples/compiled/isotype_bar_chart.vg.json
+++ b/examples/compiled/isotype_bar_chart.vg.json
@@ -64,9 +64,7 @@
"from": {"data": "row_domain"},
"sort": {"field": "datum[\"country\"]", "order": "ascending"},
"title": {
- "text": {
- "signal": "isValid(parent[\"country\"]) ? parent[\"country\"] : \"\"+parent[\"country\"]"
- },
+ "text": {"signal": "\"\" + parent[\"country\"]"},
"orient": "left",
"style": "guide-label",
"frame": "group",
@@ -100,7 +98,7 @@
"fill": {"scale": "color", "field": "animal"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"col: \" + (isValid(datum[\"col\"]) ? datum[\"col\"] : \"\"+datum[\"col\"]) + \"; animal: \" + (isValid(datum[\"animal\"]) ? datum[\"animal\"] : \"\"+datum[\"animal\"])"
+ "signal": "\"col: \" + (\"\" + datum[\"col\"]) + \"; animal: \" + (\"\" + datum[\"animal\"])"
},
"x": {"scale": "x", "field": "col"},
"y": {"scale": "y", "field": "animal"},
diff --git a/examples/compiled/isotype_bar_chart_emoji.vg.json b/examples/compiled/isotype_bar_chart_emoji.vg.json
index 89be8f2129..6316946ae6 100644
--- a/examples/compiled/isotype_bar_chart_emoji.vg.json
+++ b/examples/compiled/isotype_bar_chart_emoji.vg.json
@@ -84,9 +84,7 @@
"from": {"data": "row_domain"},
"sort": {"field": "datum[\"country\"]", "order": "ascending"},
"title": {
- "text": {
- "signal": "isValid(parent[\"country\"]) ? parent[\"country\"] : \"\"+parent[\"country\"]"
- },
+ "text": {"signal": "\"\" + parent[\"country\"]"},
"orient": "left",
"style": "guide-label",
"frame": "group",
@@ -119,13 +117,11 @@
"baseline": {"value": "middle"},
"fill": {"value": "black"},
"description": {
- "signal": "\"rank: \" + (isValid(datum[\"rank\"]) ? datum[\"rank\"] : \"\"+datum[\"rank\"]) + \"; animal: \" + (isValid(datum[\"animal\"]) ? datum[\"animal\"] : \"\"+datum[\"animal\"]) + \"; emoji: \" + (isValid(datum[\"emoji\"]) ? datum[\"emoji\"] : \"\"+datum[\"emoji\"])"
+ "signal": "\"rank: \" + (\"\" + datum[\"rank\"]) + \"; animal: \" + (\"\" + datum[\"animal\"]) + \"; emoji: \" + (\"\" + datum[\"emoji\"])"
},
"x": {"scale": "x", "field": "rank"},
"y": {"scale": "y", "field": "animal"},
- "text": {
- "signal": "isValid(datum[\"emoji\"]) ? datum[\"emoji\"] : \"\"+datum[\"emoji\"]"
- },
+ "text": {"signal": "\"\" + datum[\"emoji\"]"},
"fontSize": {"value": 65},
"align": {"value": "center"}
}
diff --git a/examples/compiled/isotype_grid.vg.json b/examples/compiled/isotype_grid.vg.json
index 6bcb4d6c7d..dca7260ff0 100644
--- a/examples/compiled/isotype_grid.vg.json
+++ b/examples/compiled/isotype_grid.vg.json
@@ -411,7 +411,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"col: \" + (isValid(datum[\"col\"]) ? datum[\"col\"] : \"\"+datum[\"col\"]) + \"; row: \" + (isValid(datum[\"row\"]) ? datum[\"row\"] : \"\"+datum[\"row\"])"
+ "signal": "\"col: \" + (\"\" + datum[\"col\"]) + \"; row: \" + (\"\" + datum[\"row\"])"
},
"x": {"scale": "x", "field": "col"},
"y": {"scale": "y", "field": "row"},
diff --git a/examples/compiled/joinaggregate_mean_difference.vg.json b/examples/compiled/joinaggregate_mean_difference.vg.json
index d3592f878a..322e89f0db 100644
--- a/examples/compiled/joinaggregate_mean_difference.vg.json
+++ b/examples/compiled/joinaggregate_mean_difference.vg.json
@@ -77,7 +77,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"IMDB Rating: \" + (format(datum[\"IMDB Rating\"], \"\")) + \"; Title: \" + (isValid(datum[\"Title\"]) ? datum[\"Title\"] : \"\"+datum[\"Title\"])"
+ "signal": "\"IMDB Rating: \" + (!isValid(datum[\"IMDB Rating\"]) || !isFinite(+datum[\"IMDB Rating\"]) ? \"\" + datum[\"IMDB Rating\"] : format(datum[\"IMDB Rating\"], \"\")) + \"; Title: \" + (\"\" + datum[\"Title\"])"
},
"x": {"scale": "x", "field": "IMDB Rating_end"},
"x2": {"scale": "x", "field": "IMDB Rating_start"},
@@ -95,7 +95,7 @@
"update": {
"stroke": {"value": "red"},
"description": {
- "signal": "\"Average of AverageRating: \" + (format(datum[\"average_AverageRating\"], \"\"))"
+ "signal": "\"Average of AverageRating: \" + (!isValid(datum[\"average_AverageRating\"]) || !isFinite(+datum[\"average_AverageRating\"]) ? \"\" + datum[\"average_AverageRating\"] : format(datum[\"average_AverageRating\"], \"\"))"
},
"x": {"scale": "x", "field": "average_AverageRating"},
"y": {"value": 0},
diff --git a/examples/compiled/joinaggregate_mean_difference_by_year.vg.json b/examples/compiled/joinaggregate_mean_difference_by_year.vg.json
index 611937a644..32ab5ee05f 100644
--- a/examples/compiled/joinaggregate_mean_difference_by_year.vg.json
+++ b/examples/compiled/joinaggregate_mean_difference_by_year.vg.json
@@ -79,7 +79,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"IMDB Rating: \" + (format(datum[\"IMDB Rating\"], \"\")) + \"; Title: \" + (isValid(datum[\"Title\"]) ? datum[\"Title\"] : \"\"+datum[\"Title\"])"
+ "signal": "\"IMDB Rating: \" + (!isValid(datum[\"IMDB Rating\"]) || !isFinite(+datum[\"IMDB Rating\"]) ? \"\" + datum[\"IMDB Rating\"] : format(datum[\"IMDB Rating\"], \"\")) + \"; Title: \" + (\"\" + datum[\"Title\"])"
},
"x": {"scale": "x", "field": "IMDB Rating_end"},
"x2": {"scale": "x", "field": "IMDB Rating_start"},
@@ -99,7 +99,7 @@
"fill": {"value": "red"},
"ariaRoleDescription": {"value": "tick"},
"description": {
- "signal": "\"AverageYearRating: \" + (format(datum[\"AverageYearRating\"], \"\")) + \"; Title: \" + (isValid(datum[\"Title\"]) ? datum[\"Title\"] : \"\"+datum[\"Title\"])"
+ "signal": "\"AverageYearRating: \" + (!isValid(datum[\"AverageYearRating\"]) || !isFinite(+datum[\"AverageYearRating\"]) ? \"\" + datum[\"AverageYearRating\"] : format(datum[\"AverageYearRating\"], \"\")) + \"; Title: \" + (\"\" + datum[\"Title\"])"
},
"xc": {"scale": "x", "field": "AverageYearRating"},
"yc": {"scale": "y", "field": "Title", "band": 0.5},
diff --git a/examples/compiled/joinaggregate_percent_of_total.vg.json b/examples/compiled/joinaggregate_percent_of_total.vg.json
index 2258fe7f1d..73cba8369f 100644
--- a/examples/compiled/joinaggregate_percent_of_total.vg.json
+++ b/examples/compiled/joinaggregate_percent_of_total.vg.json
@@ -64,7 +64,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"% of total Time: \" + (format(datum[\"PercentOfTotal\"], \"\")) + \"; Activity: \" + (isValid(datum[\"Activity\"]) ? datum[\"Activity\"] : \"\"+datum[\"Activity\"])"
+ "signal": "\"% of total Time: \" + (!isValid(datum[\"PercentOfTotal\"]) || !isFinite(+datum[\"PercentOfTotal\"]) ? \"\" + datum[\"PercentOfTotal\"] : format(datum[\"PercentOfTotal\"], \"\")) + \"; Activity: \" + (\"\" + datum[\"Activity\"])"
},
"x": {"scale": "x", "field": "PercentOfTotal_end"},
"x2": {"scale": "x", "field": "PercentOfTotal_start"},
diff --git a/examples/compiled/joinaggregate_residual_graph.vg.json b/examples/compiled/joinaggregate_residual_graph.vg.json
index 0071eaa8d0..ce670913ed 100644
--- a/examples/compiled/joinaggregate_residual_graph.vg.json
+++ b/examples/compiled/joinaggregate_residual_graph.vg.json
@@ -48,7 +48,7 @@
"stroke": {"scale": "color", "field": "RatingDelta"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Release Date: \" + (timeFormat(datum[\"Release Date\"], '%b %d, %Y')) + \"; Rating Delta: \" + (format(datum[\"RatingDelta\"], \"\"))"
+ "signal": "\"Release Date: \" + (!isValid(datum[\"Release Date\"]) || !isFinite(+datum[\"Release Date\"]) ? \"\" + datum[\"Release Date\"] : timeFormat(datum[\"Release Date\"], '%b %d, %Y')) + \"; Rating Delta: \" + (!isValid(datum[\"RatingDelta\"]) || !isFinite(+datum[\"RatingDelta\"]) ? \"\" + datum[\"RatingDelta\"] : format(datum[\"RatingDelta\"], \"\"))"
},
"x": {"scale": "x", "field": "Release Date"},
"y": {"scale": "y", "field": "RatingDelta"}
diff --git a/examples/compiled/layer_arc_label.vg.json b/examples/compiled/layer_arc_label.vg.json
index 6cf4119997..69b27088a2 100644
--- a/examples/compiled/layer_arc_label.vg.json
+++ b/examples/compiled/layer_arc_label.vg.json
@@ -66,7 +66,7 @@
"outerRadius": {"value": 80},
"fill": {"scale": "color", "field": "category"},
"description": {
- "signal": "\"value: \" + (format(datum[\"value\"], \"\")) + \"; category: \" + (isValid(datum[\"category\"]) ? datum[\"category\"] : \"\"+datum[\"category\"])"
+ "signal": "\"value: \" + (!isValid(datum[\"value\"]) || !isFinite(+datum[\"value\"]) ? \"\" + datum[\"value\"] : format(datum[\"value\"], \"\")) + \"; category: \" + (\"\" + datum[\"category\"])"
},
"x": {"signal": "width", "mult": 0.5},
"y": {"signal": "height", "mult": 0.5},
@@ -86,13 +86,11 @@
"radius": {"value": 90},
"fill": {"scale": "color", "field": "category"},
"description": {
- "signal": "\"value: \" + (format(datum[\"value\"], \"\")) + \"; category: \" + (isValid(datum[\"category\"]) ? datum[\"category\"] : \"\"+datum[\"category\"])"
+ "signal": "\"value: \" + (!isValid(datum[\"value\"]) || !isFinite(+datum[\"value\"]) ? \"\" + datum[\"value\"] : format(datum[\"value\"], \"\")) + \"; category: \" + (\"\" + datum[\"category\"])"
},
"x": {"signal": "width", "mult": 0.5},
"y": {"signal": "height", "mult": 0.5},
- "text": {
- "signal": "isValid(datum[\"category\"]) ? datum[\"category\"] : \"\"+datum[\"category\"]"
- },
+ "text": {"signal": "\"\" + datum[\"category\"]"},
"align": {"value": "center"},
"baseline": {"value": "middle"},
"theta": {
diff --git a/examples/compiled/layer_bar_annotations.vg.json b/examples/compiled/layer_bar_annotations.vg.json
index 0c4bd6ee71..1b6cf72147 100644
--- a/examples/compiled/layer_bar_annotations.vg.json
+++ b/examples/compiled/layer_bar_annotations.vg.json
@@ -76,7 +76,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Day: \" + (isValid(datum[\"Day\"]) ? datum[\"Day\"] : \"\"+datum[\"Day\"]) + \"; Value: \" + (format(datum[\"Value\"], \"\"))"
+ "signal": "\"Day: \" + (\"\" + datum[\"Day\"]) + \"; Value: \" + (!isValid(datum[\"Value\"]) || !isFinite(+datum[\"Value\"]) ? \"\" + datum[\"Value\"] : format(datum[\"Value\"], \"\"))"
},
"x": {"scale": "x", "field": "Day"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
@@ -95,7 +95,7 @@
"fill": {"value": "#e45755"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Day: \" + (isValid(datum[\"Day\"]) ? datum[\"Day\"] : \"\"+datum[\"Day\"]) + \"; PM2.5 Value: \" + (format(datum[\"baseline\"], \"\")) + \"; Value: \" + (format(datum[\"Value\"], \"\"))"
+ "signal": "\"Day: \" + (\"\" + datum[\"Day\"]) + \"; PM2.5 Value: \" + (!isValid(datum[\"baseline\"]) || !isFinite(+datum[\"baseline\"]) ? \"\" + datum[\"baseline\"] : format(datum[\"baseline\"], \"\")) + \"; Value: \" + (!isValid(datum[\"Value\"]) || !isFinite(+datum[\"Value\"]) ? \"\" + datum[\"Value\"] : format(datum[\"Value\"], \"\"))"
},
"x": {"scale": "x", "field": "Day"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/layer_bar_circle_grouped.vg.json b/examples/compiled/layer_bar_circle_grouped.vg.json
index 4de4dea6d2..9540c33138 100644
--- a/examples/compiled/layer_bar_circle_grouped.vg.json
+++ b/examples/compiled/layer_bar_circle_grouped.vg.json
@@ -74,7 +74,7 @@
"fill": {"scale": "color", "field": "group"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"category: \" + (isValid(datum[\"category\"]) ? datum[\"category\"] : \"\"+datum[\"category\"]) + \"; value: \" + (format(datum[\"value\"], \"\")) + \"; group: \" + (isValid(datum[\"group\"]) ? datum[\"group\"] : \"\"+datum[\"group\"])"
+ "signal": "\"category: \" + (\"\" + datum[\"category\"]) + \"; value: \" + (!isValid(datum[\"value\"]) || !isFinite(+datum[\"value\"]) ? \"\" + datum[\"value\"] : format(datum[\"value\"], \"\")) + \"; group: \" + (\"\" + datum[\"group\"])"
},
"x": {
"scale": "x",
@@ -98,7 +98,7 @@
"fill": {"value": "black"},
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"category: \" + (isValid(datum[\"category\"]) ? datum[\"category\"] : \"\"+datum[\"category\"]) + \"; half: \" + (format(datum[\"half\"], \"\")) + \"; group: \" + (isValid(datum[\"group\"]) ? datum[\"group\"] : \"\"+datum[\"group\"])"
+ "signal": "\"category: \" + (\"\" + datum[\"category\"]) + \"; half: \" + (!isValid(datum[\"half\"]) || !isFinite(+datum[\"half\"]) ? \"\" + datum[\"half\"] : format(datum[\"half\"], \"\")) + \"; group: \" + (\"\" + datum[\"group\"])"
},
"x": {
"scale": "x",
diff --git a/examples/compiled/layer_bar_fruit.vg.json b/examples/compiled/layer_bar_fruit.vg.json
index e7d01668fb..61f6e62980 100644
--- a/examples/compiled/layer_bar_fruit.vg.json
+++ b/examples/compiled/layer_bar_fruit.vg.json
@@ -66,7 +66,7 @@
"fill": {"scale": "color", "field": "count"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"count: \" + (format(datum[\"count\"], \"\")) + \"; name: \" + (isValid(datum[\"name\"]) ? datum[\"name\"] : \"\"+datum[\"name\"]) + \"; Number of fruit: \" + (format(datum[\"count\"], \"\"))"
+ "signal": "\"count: \" + (!isValid(datum[\"count\"]) || !isFinite(+datum[\"count\"]) ? \"\" + datum[\"count\"] : format(datum[\"count\"], \"\")) + \"; name: \" + (\"\" + datum[\"name\"]) + \"; Number of fruit: \" + (!isValid(datum[\"count\"]) || !isFinite(+datum[\"count\"]) ? \"\" + datum[\"count\"] : format(datum[\"count\"], \"\"))"
},
"x": {"scale": "x", "field": "count_end"},
"x2": {"scale": "x", "field": "count_start"},
@@ -90,7 +90,9 @@
],
"x": {"scale": "x", "field": "count", "offset": -4},
"y": {"scale": "y", "field": "name", "band": 0.5},
- "text": {"signal": "format(datum[\"count\"], \"\")"},
+ "text": {
+ "signal": "!isValid(datum[\"count\"]) || !isFinite(+datum[\"count\"]) ? \"\" + datum[\"count\"] : format(datum[\"count\"], \"\")"
+ },
"baseline": {"value": "middle"}
}
}
diff --git a/examples/compiled/layer_bar_grouped_line_ungrouped.vg.json b/examples/compiled/layer_bar_grouped_line_ungrouped.vg.json
index 6b9b4a3fc4..e35ce50755 100644
--- a/examples/compiled/layer_bar_grouped_line_ungrouped.vg.json
+++ b/examples/compiled/layer_bar_grouped_line_ungrouped.vg.json
@@ -72,7 +72,7 @@
"fill": {"scale": "color", "field": "group"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"category: \" + (isValid(datum[\"category\"]) ? datum[\"category\"] : \"\"+datum[\"category\"]) + \"; value: \" + (format(datum[\"value\"], \"\")) + \"; group: \" + (isValid(datum[\"group\"]) ? datum[\"group\"] : \"\"+datum[\"group\"])"
+ "signal": "\"category: \" + (\"\" + datum[\"category\"]) + \"; value: \" + (!isValid(datum[\"value\"]) || !isFinite(+datum[\"value\"]) ? \"\" + datum[\"value\"] : format(datum[\"value\"], \"\")) + \"; group: \" + (\"\" + datum[\"group\"])"
},
"x": {
"scale": "x",
@@ -95,7 +95,7 @@
"update": {
"stroke": {"value": "black"},
"description": {
- "signal": "\"category: \" + (isValid(datum[\"category\"]) ? datum[\"category\"] : \"\"+datum[\"category\"]) + \"; Mean of value: \" + (format(datum[\"mean_value\"], \"\"))"
+ "signal": "\"category: \" + (\"\" + datum[\"category\"]) + \"; Mean of value: \" + (!isValid(datum[\"mean_value\"]) || !isFinite(+datum[\"mean_value\"]) ? \"\" + datum[\"mean_value\"] : format(datum[\"mean_value\"], \"\"))"
},
"x": {"scale": "x", "field": "category", "band": 0.5},
"y": {"scale": "y", "field": "mean_value"},
diff --git a/examples/compiled/layer_bar_labels.vg.json b/examples/compiled/layer_bar_labels.vg.json
index 31d397cd71..6de9864da3 100644
--- a/examples/compiled/layer_bar_labels.vg.json
+++ b/examples/compiled/layer_bar_labels.vg.json
@@ -57,7 +57,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"b: \" + (format(datum[\"b\"], \"\")) + \"; a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"])"
+ "signal": "\"b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; a: \" + (\"\" + datum[\"a\"])"
},
"x": {"scale": "x", "field": "b_end"},
"x2": {"scale": "x", "field": "b_start"},
@@ -78,11 +78,13 @@
"dx": {"value": 3},
"fill": {"value": "black"},
"description": {
- "signal": "\"b: \" + (format(datum[\"b\"], \"\")) + \"; a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"])"
+ "signal": "\"b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; a: \" + (\"\" + datum[\"a\"])"
},
"x": {"scale": "x", "field": "b"},
"y": {"scale": "y", "field": "a", "band": 0.5},
- "text": {"signal": "format(datum[\"b\"], \"\")"}
+ "text": {
+ "signal": "!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")"
+ }
}
}
}
diff --git a/examples/compiled/layer_bar_labels_grey.vg.json b/examples/compiled/layer_bar_labels_grey.vg.json
index 8b77756483..371ea84a23 100644
--- a/examples/compiled/layer_bar_labels_grey.vg.json
+++ b/examples/compiled/layer_bar_labels_grey.vg.json
@@ -48,7 +48,7 @@
"fill": {"value": "#ddd"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Mean IMDB Ratings: \" + (format(datum[\"mean_IMDB Rating\"], \"\")) + \"; Major Genre: \" + (isValid(datum[\"Major Genre\"]) ? datum[\"Major Genre\"] : \"\"+datum[\"Major Genre\"])"
+ "signal": "\"Mean IMDB Ratings: \" + (!isValid(datum[\"mean_IMDB Rating\"]) || !isFinite(+datum[\"mean_IMDB Rating\"]) ? \"\" + datum[\"mean_IMDB Rating\"] : format(datum[\"mean_IMDB Rating\"], \"\")) + \"; Major Genre: \" + (\"\" + datum[\"Major Genre\"])"
},
"x": {"scale": "x", "field": "mean_IMDB Rating"},
"x2": {"scale": "x", "value": 0},
@@ -67,13 +67,11 @@
"align": {"value": "left"},
"fill": {"value": "black"},
"description": {
- "signal": "\"Major Genre: \" + (isValid(datum[\"Major Genre\"]) ? datum[\"Major Genre\"] : \"\"+datum[\"Major Genre\"]) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"Major Genre: \" + (\"\" + datum[\"Major Genre\"]) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x": {"value": 5},
"y": {"scale": "y", "field": "Major Genre", "band": 0.5},
- "text": {
- "signal": "isValid(datum[\"Major Genre\"]) ? datum[\"Major Genre\"] : \"\"+datum[\"Major Genre\"]"
- },
+ "text": {"signal": "\"\" + datum[\"Major Genre\"]"},
"baseline": {"value": "middle"}
}
}
diff --git a/examples/compiled/layer_bar_labels_style.vg.json b/examples/compiled/layer_bar_labels_style.vg.json
index dd0169cc9c..3304369950 100644
--- a/examples/compiled/layer_bar_labels_style.vg.json
+++ b/examples/compiled/layer_bar_labels_style.vg.json
@@ -56,7 +56,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"b: \" + (format(datum[\"b\"], \"\")) + \"; a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"])"
+ "signal": "\"b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; a: \" + (\"\" + datum[\"a\"])"
},
"x": {"scale": "x", "field": "b_end"},
"x2": {"scale": "x", "field": "b_start"},
@@ -74,11 +74,13 @@
"update": {
"fill": {"value": "black"},
"description": {
- "signal": "\"b: \" + (format(datum[\"b\"], \"\")) + \"; a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"])"
+ "signal": "\"b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; a: \" + (\"\" + datum[\"a\"])"
},
"x": {"scale": "x", "field": "b"},
"y": {"scale": "y", "field": "a", "band": 0.5},
- "text": {"signal": "format(datum[\"b\"], \"\")"}
+ "text": {
+ "signal": "!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")"
+ }
}
}
}
diff --git a/examples/compiled/layer_bar_line.vg.json b/examples/compiled/layer_bar_line.vg.json
index 3fb29c1577..ac4c3a093c 100644
--- a/examples/compiled/layer_bar_line.vg.json
+++ b/examples/compiled/layer_bar_line.vg.json
@@ -56,7 +56,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "x", "field": "a"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
@@ -75,7 +75,7 @@
"update": {
"stroke": {"value": "red"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "x", "field": "a", "band": 0.5},
"y": {"scale": "y", "field": "b"},
diff --git a/examples/compiled/layer_bar_line_union.vg.json b/examples/compiled/layer_bar_line_union.vg.json
index bce056d4f8..95eed21730 100644
--- a/examples/compiled/layer_bar_line_union.vg.json
+++ b/examples/compiled/layer_bar_line_union.vg.json
@@ -56,7 +56,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": {"scale": "x", "field": "a"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
@@ -75,7 +75,7 @@
"update": {
"stroke": {"value": "red"},
"description": {
- "signal": "\"b: \" + (isValid(datum[\"b\"]) ? datum[\"b\"] : \"\"+datum[\"b\"]) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"b: \" + (\"\" + datum[\"b\"]) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": {"scale": "x", "field": "b", "band": 0.5},
"y": {"scale": "y", "field": "c"},
diff --git a/examples/compiled/layer_bar_month.vg.json b/examples/compiled/layer_bar_month.vg.json
index 98c23e75f6..f2585a7edb 100644
--- a/examples/compiled/layer_bar_month.vg.json
+++ b/examples/compiled/layer_bar_month.vg.json
@@ -69,7 +69,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"date (month): \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of precipitation: \" + (format(datum[\"mean_precipitation\"], \"\"))"
+ "signal": "\"date (month): \" + (!isValid(datum[\"month_date\"]) || !isFinite(+datum[\"month_date\"]) ? \"\" + datum[\"month_date\"] : timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of precipitation: \" + (!isValid(datum[\"mean_precipitation\"]) || !isFinite(+datum[\"mean_precipitation\"]) ? \"\" + datum[\"mean_precipitation\"] : format(datum[\"mean_precipitation\"], \"\"))"
},
"x": {"scale": "x", "field": "month_date"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
@@ -87,7 +87,7 @@
"update": {
"stroke": {"value": "firebrick"},
"description": {
- "signal": "\"Mean of precipitation: \" + (format(datum[\"mean_precipitation\"], \"\"))"
+ "signal": "\"Mean of precipitation: \" + (!isValid(datum[\"mean_precipitation\"]) || !isFinite(+datum[\"mean_precipitation\"]) ? \"\" + datum[\"mean_precipitation\"] : format(datum[\"mean_precipitation\"], \"\"))"
},
"x": {"field": {"group": "width"}},
"x2": {"value": 0},
diff --git a/examples/compiled/layer_bar_tick_datum_grouped.vg.json b/examples/compiled/layer_bar_tick_datum_grouped.vg.json
index 335a19cc9d..a89d9a1e71 100644
--- a/examples/compiled/layer_bar_tick_datum_grouped.vg.json
+++ b/examples/compiled/layer_bar_tick_datum_grouped.vg.json
@@ -46,7 +46,7 @@
"fill": {"scale": "color", "field": "Origin"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; Mean of Acceleration: \" + (format(datum[\"mean_Acceleration\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Cylinders: \" + (\"\" + datum[\"Cylinders\"]) + \"; Mean of Acceleration: \" + (!isValid(datum[\"mean_Acceleration\"]) || !isFinite(+datum[\"mean_Acceleration\"]) ? \"\" + datum[\"mean_Acceleration\"] : format(datum[\"mean_Acceleration\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {
"scale": "x",
@@ -70,7 +70,7 @@
"fill": {"value": "black"},
"ariaRoleDescription": {"value": "tick"},
"description": {
- "signal": "\"Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Cylinders: \" + (\"\" + datum[\"Cylinders\"]) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"xc": {
"scale": "x",
diff --git a/examples/compiled/layer_boxplot_circle.vg.json b/examples/compiled/layer_boxplot_circle.vg.json
index 3186d3f671..5e4c4c82c7 100644
--- a/examples/compiled/layer_boxplot_circle.vg.json
+++ b/examples/compiled/layer_boxplot_circle.vg.json
@@ -130,7 +130,7 @@
"update": {
"stroke": {"value": "black"},
"tooltip": {
- "signal": "{\"Upper Whisker of population\": format(datum[\"upper_whisker_people\"], \"\"), \"Lower Whisker of population\": format(datum[\"lower_whisker_people\"], \"\"), \"age\": isValid(datum[\"age\"]) ? datum[\"age\"] : \"\"+datum[\"age\"]}"
+ "signal": "{\"Upper Whisker of population\": !isValid(datum[\"upper_whisker_people\"]) || !isFinite(+datum[\"upper_whisker_people\"]) ? \"\" + datum[\"upper_whisker_people\"] : format(datum[\"upper_whisker_people\"], \"\"), \"Lower Whisker of population\": !isValid(datum[\"lower_whisker_people\"]) || !isFinite(+datum[\"lower_whisker_people\"]) ? \"\" + datum[\"lower_whisker_people\"] : format(datum[\"lower_whisker_people\"], \"\"), \"age\": \"\" + datum[\"age\"]}"
},
"x": {"scale": "x", "field": "lower_whisker_people"},
"x2": {"scale": "x", "field": "lower_box_people"},
@@ -148,7 +148,7 @@
"update": {
"stroke": {"value": "black"},
"tooltip": {
- "signal": "{\"Upper Whisker of population\": format(datum[\"upper_whisker_people\"], \"\"), \"Lower Whisker of population\": format(datum[\"lower_whisker_people\"], \"\"), \"age\": isValid(datum[\"age\"]) ? datum[\"age\"] : \"\"+datum[\"age\"]}"
+ "signal": "{\"Upper Whisker of population\": !isValid(datum[\"upper_whisker_people\"]) || !isFinite(+datum[\"upper_whisker_people\"]) ? \"\" + datum[\"upper_whisker_people\"] : format(datum[\"upper_whisker_people\"], \"\"), \"Lower Whisker of population\": !isValid(datum[\"lower_whisker_people\"]) || !isFinite(+datum[\"lower_whisker_people\"]) ? \"\" + datum[\"lower_whisker_people\"] : format(datum[\"lower_whisker_people\"], \"\"), \"age\": \"\" + datum[\"age\"]}"
},
"x": {"scale": "x", "field": "upper_box_people"},
"x2": {"scale": "x", "field": "upper_whisker_people"},
@@ -166,10 +166,10 @@
"ariaRoleDescription": {"value": "box"},
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"Max of population\": format(datum[\"max_people\"], \"\"), \"Q3 of population\": format(datum[\"upper_box_people\"], \"\"), \"Median of population\": format(datum[\"mid_box_people\"], \"\"), \"Q1 of population\": format(datum[\"lower_box_people\"], \"\"), \"Min of population\": format(datum[\"min_people\"], \"\"), \"age\": isValid(datum[\"age\"]) ? datum[\"age\"] : \"\"+datum[\"age\"]}"
+ "signal": "{\"Max of population\": !isValid(datum[\"max_people\"]) || !isFinite(+datum[\"max_people\"]) ? \"\" + datum[\"max_people\"] : format(datum[\"max_people\"], \"\"), \"Q3 of population\": !isValid(datum[\"upper_box_people\"]) || !isFinite(+datum[\"upper_box_people\"]) ? \"\" + datum[\"upper_box_people\"] : format(datum[\"upper_box_people\"], \"\"), \"Median of population\": !isValid(datum[\"mid_box_people\"]) || !isFinite(+datum[\"mid_box_people\"]) ? \"\" + datum[\"mid_box_people\"] : format(datum[\"mid_box_people\"], \"\"), \"Q1 of population\": !isValid(datum[\"lower_box_people\"]) || !isFinite(+datum[\"lower_box_people\"]) ? \"\" + datum[\"lower_box_people\"] : format(datum[\"lower_box_people\"], \"\"), \"Min of population\": !isValid(datum[\"min_people\"]) || !isFinite(+datum[\"min_people\"]) ? \"\" + datum[\"min_people\"] : format(datum[\"min_people\"], \"\"), \"age\": \"\" + datum[\"age\"]}"
},
"description": {
- "signal": "\"population: \" + (format(datum[\"lower_box_people\"], \"\")) + \"; age: \" + (isValid(datum[\"age\"]) ? datum[\"age\"] : \"\"+datum[\"age\"]) + \"; upper_box_people: \" + (format(datum[\"upper_box_people\"], \"\")) + \"; Max of population: \" + (format(datum[\"max_people\"], \"\")) + \"; Q3 of population: \" + (format(datum[\"upper_box_people\"], \"\")) + \"; Median of population: \" + (format(datum[\"mid_box_people\"], \"\")) + \"; Q1 of population: \" + (format(datum[\"lower_box_people\"], \"\")) + \"; Min of population: \" + (format(datum[\"min_people\"], \"\"))"
+ "signal": "\"population: \" + (!isValid(datum[\"lower_box_people\"]) || !isFinite(+datum[\"lower_box_people\"]) ? \"\" + datum[\"lower_box_people\"] : format(datum[\"lower_box_people\"], \"\")) + \"; age: \" + (\"\" + datum[\"age\"]) + \"; upper_box_people: \" + (!isValid(datum[\"upper_box_people\"]) || !isFinite(+datum[\"upper_box_people\"]) ? \"\" + datum[\"upper_box_people\"] : format(datum[\"upper_box_people\"], \"\")) + \"; Max of population: \" + (!isValid(datum[\"max_people\"]) || !isFinite(+datum[\"max_people\"]) ? \"\" + datum[\"max_people\"] : format(datum[\"max_people\"], \"\")) + \"; Q3 of population: \" + (!isValid(datum[\"upper_box_people\"]) || !isFinite(+datum[\"upper_box_people\"]) ? \"\" + datum[\"upper_box_people\"] : format(datum[\"upper_box_people\"], \"\")) + \"; Median of population: \" + (!isValid(datum[\"mid_box_people\"]) || !isFinite(+datum[\"mid_box_people\"]) ? \"\" + datum[\"mid_box_people\"] : format(datum[\"mid_box_people\"], \"\")) + \"; Q1 of population: \" + (!isValid(datum[\"lower_box_people\"]) || !isFinite(+datum[\"lower_box_people\"]) ? \"\" + datum[\"lower_box_people\"] : format(datum[\"lower_box_people\"], \"\")) + \"; Min of population: \" + (!isValid(datum[\"min_people\"]) || !isFinite(+datum[\"min_people\"]) ? \"\" + datum[\"min_people\"] : format(datum[\"min_people\"], \"\"))"
},
"x": {"scale": "x", "field": "lower_box_people"},
"x2": {"scale": "x", "field": "upper_box_people"},
@@ -195,7 +195,7 @@
{"value": "white"}
],
"tooltip": {
- "signal": "{\"Max of population\": format(datum[\"max_people\"], \"\"), \"Q3 of population\": format(datum[\"upper_box_people\"], \"\"), \"Median of population\": format(datum[\"mid_box_people\"], \"\"), \"Q1 of population\": format(datum[\"lower_box_people\"], \"\"), \"Min of population\": format(datum[\"min_people\"], \"\"), \"age\": isValid(datum[\"age\"]) ? datum[\"age\"] : \"\"+datum[\"age\"]}"
+ "signal": "{\"Max of population\": !isValid(datum[\"max_people\"]) || !isFinite(+datum[\"max_people\"]) ? \"\" + datum[\"max_people\"] : format(datum[\"max_people\"], \"\"), \"Q3 of population\": !isValid(datum[\"upper_box_people\"]) || !isFinite(+datum[\"upper_box_people\"]) ? \"\" + datum[\"upper_box_people\"] : format(datum[\"upper_box_people\"], \"\"), \"Median of population\": !isValid(datum[\"mid_box_people\"]) || !isFinite(+datum[\"mid_box_people\"]) ? \"\" + datum[\"mid_box_people\"] : format(datum[\"mid_box_people\"], \"\"), \"Q1 of population\": !isValid(datum[\"lower_box_people\"]) || !isFinite(+datum[\"lower_box_people\"]) ? \"\" + datum[\"lower_box_people\"] : format(datum[\"lower_box_people\"], \"\"), \"Min of population\": !isValid(datum[\"min_people\"]) || !isFinite(+datum[\"min_people\"]) ? \"\" + datum[\"min_people\"] : format(datum[\"min_people\"], \"\"), \"age\": \"\" + datum[\"age\"]}"
},
"xc": {"scale": "x", "field": "mid_box_people"},
"yc": {"scale": "y", "field": "age", "band": 0.5},
@@ -215,7 +215,7 @@
"fill": {"value": "black"},
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"population: \" + (format(datum[\"people\"], \"\")) + \"; age: \" + (isValid(datum[\"age\"]) ? datum[\"age\"] : \"\"+datum[\"age\"])"
+ "signal": "\"population: \" + (!isValid(datum[\"people\"]) || !isFinite(+datum[\"people\"]) ? \"\" + datum[\"people\"] : format(datum[\"people\"], \"\")) + \"; age: \" + (\"\" + datum[\"age\"])"
},
"x": {"scale": "x", "field": "people"},
"y": {"scale": "y", "field": "age", "band": 0.5},
diff --git a/examples/compiled/layer_candlestick.vg.json b/examples/compiled/layer_candlestick.vg.json
index 22991e40bf..cd681c11aa 100644
--- a/examples/compiled/layer_candlestick.vg.json
+++ b/examples/compiled/layer_candlestick.vg.json
@@ -46,7 +46,7 @@
{"value": "#ae1325"}
],
"description": {
- "signal": "\"Date in 2009: \" + (timeFormat(datum[\"date\"], '%m/%d')) + \"; low: \" + (format(datum[\"low\"], \"\")) + \"; high: \" + (format(datum[\"high\"], \"\"))"
+ "signal": "\"Date in 2009: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%m/%d')) + \"; low: \" + (!isValid(datum[\"low\"]) || !isFinite(+datum[\"low\"]) ? \"\" + datum[\"low\"] : format(datum[\"low\"], \"\")) + \"; high: \" + (!isValid(datum[\"high\"]) || !isFinite(+datum[\"high\"]) ? \"\" + datum[\"high\"] : format(datum[\"high\"], \"\"))"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "low"},
@@ -67,7 +67,7 @@
],
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Date in 2009: \" + (timeFormat(datum[\"date\"], '%m/%d')) + \"; open: \" + (format(datum[\"open\"], \"\")) + \"; close: \" + (format(datum[\"close\"], \"\"))"
+ "signal": "\"Date in 2009: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%m/%d')) + \"; open: \" + (!isValid(datum[\"open\"]) || !isFinite(+datum[\"open\"]) ? \"\" + datum[\"open\"] : format(datum[\"open\"], \"\")) + \"; close: \" + (!isValid(datum[\"close\"]) || !isFinite(+datum[\"close\"]) ? \"\" + datum[\"close\"] : format(datum[\"close\"], \"\"))"
},
"xc": {"scale": "x", "field": "date"},
"width": {"value": 5},
diff --git a/examples/compiled/layer_circle_independent_color.vg.json b/examples/compiled/layer_circle_independent_color.vg.json
index 62237a8f09..43720fd9b9 100644
--- a/examples/compiled/layer_circle_independent_color.vg.json
+++ b/examples/compiled/layer_circle_independent_color.vg.json
@@ -100,7 +100,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"Acceleration (binned): \" + (!isValid(datum[\"bin_maxbins_10_Acceleration\"]) || !isFinite(+datum[\"bin_maxbins_10_Acceleration\"]) ? \"null\" : format(datum[\"bin_maxbins_10_Acceleration\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_Acceleration_end\"], \"\")) + \"; Horsepower (binned): \" + (!isValid(datum[\"bin_maxbins_10_Horsepower\"]) || !isFinite(+datum[\"bin_maxbins_10_Horsepower\"]) ? \"null\" : format(datum[\"bin_maxbins_10_Horsepower\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_Horsepower_end\"], \"\")) + \"; All Cars Count: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"Acceleration (binned): \" + (!isValid(datum[\"bin_maxbins_10_Acceleration\"]) || !isFinite(+datum[\"bin_maxbins_10_Acceleration\"]) ? \"\" + datum[\"bin_maxbins_10_Acceleration\"] : format(datum[\"bin_maxbins_10_Acceleration\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_Acceleration_end\"], \"\")) + \"; Horsepower (binned): \" + (!isValid(datum[\"bin_maxbins_10_Horsepower\"]) || !isFinite(+datum[\"bin_maxbins_10_Horsepower\"]) ? \"\" + datum[\"bin_maxbins_10_Horsepower\"] : format(datum[\"bin_maxbins_10_Horsepower\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_Horsepower_end\"], \"\")) + \"; All Cars Count: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x": {
"signal": "scale(\"x\", 0.5 * datum[\"bin_maxbins_10_Acceleration\"] + 0.5 * datum[\"bin_maxbins_10_Acceleration_end\"])"
@@ -123,7 +123,7 @@
"fill": {"value": "firebrick"},
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"Acceleration (binned): \" + (!isValid(datum[\"bin_maxbins_10_Acceleration\"]) || !isFinite(+datum[\"bin_maxbins_10_Acceleration\"]) ? \"null\" : format(datum[\"bin_maxbins_10_Acceleration\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_Acceleration_end\"], \"\")) + \"; Horsepower (binned): \" + (!isValid(datum[\"bin_maxbins_10_Horsepower\"]) || !isFinite(+datum[\"bin_maxbins_10_Horsepower\"]) ? \"null\" : format(datum[\"bin_maxbins_10_Horsepower\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_Horsepower_end\"], \"\")) + \"; Cars from Japan Count: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"Acceleration (binned): \" + (!isValid(datum[\"bin_maxbins_10_Acceleration\"]) || !isFinite(+datum[\"bin_maxbins_10_Acceleration\"]) ? \"\" + datum[\"bin_maxbins_10_Acceleration\"] : format(datum[\"bin_maxbins_10_Acceleration\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_Acceleration_end\"], \"\")) + \"; Horsepower (binned): \" + (!isValid(datum[\"bin_maxbins_10_Horsepower\"]) || !isFinite(+datum[\"bin_maxbins_10_Horsepower\"]) ? \"\" + datum[\"bin_maxbins_10_Horsepower\"] : format(datum[\"bin_maxbins_10_Horsepower\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_Horsepower_end\"], \"\")) + \"; Cars from Japan Count: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x": {
"signal": "scale(\"x\", 0.5 * datum[\"bin_maxbins_10_Acceleration\"] + 0.5 * datum[\"bin_maxbins_10_Acceleration_end\"])"
diff --git a/examples/compiled/layer_color_legend_left.vg.json b/examples/compiled/layer_color_legend_left.vg.json
index 0c26fae4bd..8d572839b3 100644
--- a/examples/compiled/layer_color_legend_left.vg.json
+++ b/examples/compiled/layer_color_legend_left.vg.json
@@ -51,7 +51,7 @@
"update": {
"stroke": {"scale": "color", "field": "symbol"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"price\"], \"\")) + \"; symbol: \" + (isValid(datum[\"symbol\"]) ? datum[\"symbol\"] : \"\"+datum[\"symbol\"])"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\")) + \"; symbol: \" + (\"\" + datum[\"symbol\"])"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "price"},
@@ -74,7 +74,7 @@
"fill": {"scale": "color", "field": "symbol"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"price\"], \"\")) + \"; symbol: \" + (isValid(datum[\"symbol\"]) ? datum[\"symbol\"] : \"\"+datum[\"symbol\"])"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\")) + \"; symbol: \" + (\"\" + datum[\"symbol\"])"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "price"}
diff --git a/examples/compiled/layer_cumulative_histogram.vg.json b/examples/compiled/layer_cumulative_histogram.vg.json
index a30fb31f9b..1851f070c9 100644
--- a/examples/compiled/layer_cumulative_histogram.vg.json
+++ b/examples/compiled/layer_cumulative_histogram.vg.json
@@ -91,7 +91,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"IMDB Rating: \" + (!isValid(datum[\"bin_IMDB_Rating\"]) || !isFinite(+datum[\"bin_IMDB_Rating\"]) ? \"null\" : format(datum[\"bin_IMDB_Rating\"], \"\") + \" – \" + format(datum[\"bin_IMDB_Rating_end\"], \"\")) + \"; Cumulative Count: \" + (format(datum[\"Cumulative Count\"], \"\"))"
+ "signal": "\"IMDB Rating: \" + (!isValid(datum[\"bin_IMDB_Rating\"]) || !isFinite(+datum[\"bin_IMDB_Rating\"]) ? \"\" + datum[\"bin_IMDB_Rating\"] : format(datum[\"bin_IMDB_Rating\"], \"\") + \" – \" + format(datum[\"bin_IMDB_Rating_end\"], \"\")) + \"; Cumulative Count: \" + (!isValid(datum[\"Cumulative Count\"]) || !isFinite(+datum[\"Cumulative Count\"]) ? \"\" + datum[\"Cumulative Count\"] : format(datum[\"Cumulative Count\"], \"\"))"
},
"x2": {
"scale": "x",
@@ -123,7 +123,7 @@
"fill": {"value": "yellow"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"IMDB Rating: \" + (!isValid(datum[\"bin_IMDB_Rating\"]) || !isFinite(+datum[\"bin_IMDB_Rating\"]) ? \"null\" : format(datum[\"bin_IMDB_Rating\"], \"\") + \" – \" + format(datum[\"bin_IMDB_Rating_end\"], \"\")) + \"; count: \" + (format(datum[\"count\"], \"\"))"
+ "signal": "\"IMDB Rating: \" + (!isValid(datum[\"bin_IMDB_Rating\"]) || !isFinite(+datum[\"bin_IMDB_Rating\"]) ? \"\" + datum[\"bin_IMDB_Rating\"] : format(datum[\"bin_IMDB_Rating\"], \"\") + \" – \" + format(datum[\"bin_IMDB_Rating_end\"], \"\")) + \"; count: \" + (!isValid(datum[\"count\"]) || !isFinite(+datum[\"count\"]) ? \"\" + datum[\"count\"] : format(datum[\"count\"], \"\"))"
},
"x2": {
"scale": "x",
diff --git a/examples/compiled/layer_dual_axis.vg.json b/examples/compiled/layer_dual_axis.vg.json
index c392140d04..c0c3cca6d7 100644
--- a/examples/compiled/layer_dual_axis.vg.json
+++ b/examples/compiled/layer_dual_axis.vg.json
@@ -46,7 +46,7 @@
"orient": {"value": "vertical"},
"fill": {"value": "#85C5A6"},
"description": {
- "signal": "\"date (month): \" + (timeFormat(datum[\"month_date\"], '%b')) + \"; Avg. Temperature (°C): \" + (format(datum[\"average_temp_max\"], \"\")) + \"; Average of temp_min: \" + (format(datum[\"average_temp_min\"], \"\"))"
+ "signal": "\"date (month): \" + (!isValid(datum[\"month_date\"]) || !isFinite(+datum[\"month_date\"]) ? \"\" + datum[\"month_date\"] : timeFormat(datum[\"month_date\"], '%b')) + \"; Avg. Temperature (°C): \" + (!isValid(datum[\"average_temp_max\"]) || !isFinite(+datum[\"average_temp_max\"]) ? \"\" + datum[\"average_temp_max\"] : format(datum[\"average_temp_max\"], \"\")) + \"; Average of temp_min: \" + (!isValid(datum[\"average_temp_min\"]) || !isFinite(+datum[\"average_temp_min\"]) ? \"\" + datum[\"average_temp_min\"] : format(datum[\"average_temp_min\"], \"\"))"
},
"x": {"scale": "x", "field": "month_date"},
"y": {"scale": "layer_0_y", "field": "average_temp_max"},
@@ -68,7 +68,7 @@
"stroke": {"value": "#85A9C5"},
"interpolate": {"value": "monotone"},
"description": {
- "signal": "\"date (month): \" + (timeFormat(datum[\"month_date\"], '%b')) + \"; Precipitation (inches): \" + (format(datum[\"average_precipitation\"], \"\"))"
+ "signal": "\"date (month): \" + (!isValid(datum[\"month_date\"]) || !isFinite(+datum[\"month_date\"]) ? \"\" + datum[\"month_date\"] : timeFormat(datum[\"month_date\"], '%b')) + \"; Precipitation (inches): \" + (!isValid(datum[\"average_precipitation\"]) || !isFinite(+datum[\"average_precipitation\"]) ? \"\" + datum[\"average_precipitation\"] : format(datum[\"average_precipitation\"], \"\"))"
},
"x": {"scale": "x", "field": "month_date"},
"y": {"scale": "layer_1_y", "field": "average_precipitation"},
diff --git a/examples/compiled/layer_falkensee.vg.json b/examples/compiled/layer_falkensee.vg.json
index c37431810b..f0bdee5a45 100644
--- a/examples/compiled/layer_falkensee.vg.json
+++ b/examples/compiled/layer_falkensee.vg.json
@@ -127,7 +127,7 @@
"update": {
"fill": {"scale": "color", "field": "event"},
"description": {
- "signal": "\"start (year): \" + (timeFormat(datum[\"year_start\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; end (year): \" + (timeFormat(datum[\"year_end\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; event: \" + (isValid(datum[\"event\"]) ? datum[\"event\"] : \"\"+datum[\"event\"])"
+ "signal": "\"start (year): \" + (!isValid(datum[\"year_start\"]) || !isFinite(+datum[\"year_start\"]) ? \"\" + datum[\"year_start\"] : timeFormat(datum[\"year_start\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; end (year): \" + (!isValid(datum[\"year_end\"]) || !isFinite(+datum[\"year_end\"]) ? \"\" + datum[\"year_end\"] : timeFormat(datum[\"year_end\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; event: \" + (\"\" + datum[\"event\"])"
},
"x": {"scale": "x", "field": "year_start"},
"x2": {"scale": "x", "field": "year_end"},
@@ -146,7 +146,7 @@
"update": {
"stroke": {"value": "#333"},
"description": {
- "signal": "\"year (year): \" + (timeFormat(datum[\"year_year\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; population: \" + (format(datum[\"population\"], \"\"))"
+ "signal": "\"year (year): \" + (!isValid(datum[\"year_year\"]) || !isFinite(+datum[\"year_year\"]) ? \"\" + datum[\"year_year\"] : timeFormat(datum[\"year_year\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; population: \" + (!isValid(datum[\"population\"]) || !isFinite(+datum[\"population\"]) ? \"\" + datum[\"population\"] : format(datum[\"population\"], \"\"))"
},
"x": {"scale": "x", "field": "year_year"},
"y": {"scale": "y", "field": "population"},
@@ -168,7 +168,7 @@
"stroke": {"value": "#333"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"year (year): \" + (timeFormat(datum[\"year_year\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; population: \" + (format(datum[\"population\"], \"\"))"
+ "signal": "\"year (year): \" + (!isValid(datum[\"year_year\"]) || !isFinite(+datum[\"year_year\"]) ? \"\" + datum[\"year_year\"] : timeFormat(datum[\"year_year\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; population: \" + (!isValid(datum[\"population\"]) || !isFinite(+datum[\"population\"]) ? \"\" + datum[\"population\"] : format(datum[\"population\"], \"\"))"
},
"x": {"scale": "x", "field": "year_year"},
"y": {"scale": "y", "field": "population"}
diff --git a/examples/compiled/layer_histogram.vg.json b/examples/compiled/layer_histogram.vg.json
index 256d7008e4..b04cdf5bc0 100644
--- a/examples/compiled/layer_histogram.vg.json
+++ b/examples/compiled/layer_histogram.vg.json
@@ -73,7 +73,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"distance (binned): \" + (!isValid(datum[\"bin_maxbins_10_distance\"]) || !isFinite(+datum[\"bin_maxbins_10_distance\"]) ? \"null\" : format(datum[\"bin_maxbins_10_distance\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_distance_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"distance (binned): \" + (!isValid(datum[\"bin_maxbins_10_distance\"]) || !isFinite(+datum[\"bin_maxbins_10_distance\"]) ? \"\" + datum[\"bin_maxbins_10_distance\"] : format(datum[\"bin_maxbins_10_distance\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_distance_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x2": {
"scale": "x",
@@ -104,7 +104,7 @@
"fill": {"value": "goldenrod"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"distance (binned): \" + (!isValid(datum[\"bin_maxbins_10_distance\"]) || !isFinite(+datum[\"bin_maxbins_10_distance\"]) ? \"null\" : format(datum[\"bin_maxbins_10_distance\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_distance_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"distance (binned): \" + (!isValid(datum[\"bin_maxbins_10_distance\"]) || !isFinite(+datum[\"bin_maxbins_10_distance\"]) ? \"\" + datum[\"bin_maxbins_10_distance\"] : format(datum[\"bin_maxbins_10_distance\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_distance_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x2": {
"scale": "x",
diff --git a/examples/compiled/layer_histogram_global_mean.vg.json b/examples/compiled/layer_histogram_global_mean.vg.json
index 126d24ebd1..5b6ebcbb7a 100644
--- a/examples/compiled/layer_histogram_global_mean.vg.json
+++ b/examples/compiled/layer_histogram_global_mean.vg.json
@@ -72,7 +72,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"null\" : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"\" + datum[\"bin_maxbins_10_IMDB Rating\"] : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x2": {
"scale": "x",
@@ -102,7 +102,7 @@
"update": {
"stroke": {"value": "red"},
"description": {
- "signal": "\"Mean of IMDB Rating: \" + (format(datum[\"mean_IMDB Rating\"], \"\"))"
+ "signal": "\"Mean of IMDB Rating: \" + (!isValid(datum[\"mean_IMDB Rating\"]) || !isFinite(+datum[\"mean_IMDB Rating\"]) ? \"\" + datum[\"mean_IMDB Rating\"] : format(datum[\"mean_IMDB Rating\"], \"\"))"
},
"x": {"scale": "x", "field": "mean_IMDB Rating"},
"y": {"value": 0},
diff --git a/examples/compiled/layer_likert.vg.json b/examples/compiled/layer_likert.vg.json
index 843a8a6a18..c71ebdd195 100644
--- a/examples/compiled/layer_likert.vg.json
+++ b/examples/compiled/layer_likert.vg.json
@@ -268,7 +268,7 @@
"fill": {"value": "#6EB4FD"},
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"value: \" + (format(datum[\"value\"], \"\")) + \"; name: \" + (isValid(datum[\"name\"]) ? datum[\"name\"] : \"\"+datum[\"name\"]) + \"; Number of Ratings: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"value: \" + (!isValid(datum[\"value\"]) || !isFinite(+datum[\"value\"]) ? \"\" + datum[\"value\"] : format(datum[\"value\"], \"\")) + \"; name: \" + (\"\" + datum[\"name\"]) + \"; Number of Ratings: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x": {"scale": "x", "field": "value"},
"y": {"scale": "y", "field": "name"},
@@ -288,7 +288,7 @@
"fill": {"value": "black"},
"ariaRoleDescription": {"value": "tick"},
"description": {
- "signal": "\"median: \" + (format(datum[\"median\"], \"\")) + \"; name: \" + (isValid(datum[\"name\"]) ? datum[\"name\"] : \"\"+datum[\"name\"])"
+ "signal": "\"median: \" + (!isValid(datum[\"median\"]) || !isFinite(+datum[\"median\"]) ? \"\" + datum[\"median\"] : format(datum[\"median\"], \"\")) + \"; name: \" + (\"\" + datum[\"name\"])"
},
"xc": {"scale": "x", "field": "median"},
"yc": {"scale": "y", "field": "name"},
@@ -307,13 +307,11 @@
"align": {"value": "right"},
"fill": {"value": "black"},
"description": {
- "signal": "\"name: \" + (isValid(datum[\"name\"]) ? datum[\"name\"] : \"\"+datum[\"name\"]) + \"; lo: \" + (isValid(datum[\"lo\"]) ? datum[\"lo\"] : \"\"+datum[\"lo\"])"
+ "signal": "\"name: \" + (\"\" + datum[\"name\"]) + \"; lo: \" + (\"\" + datum[\"lo\"])"
},
"x": {"value": -5},
"y": {"scale": "y", "field": "name"},
- "text": {
- "signal": "isValid(datum[\"lo\"]) ? datum[\"lo\"] : \"\"+datum[\"lo\"]"
- },
+ "text": {"signal": "\"\" + datum[\"lo\"]"},
"baseline": {"value": "middle"}
}
}
@@ -328,13 +326,11 @@
"align": {"value": "left"},
"fill": {"value": "black"},
"description": {
- "signal": "\"name: \" + (isValid(datum[\"name\"]) ? datum[\"name\"] : \"\"+datum[\"name\"]) + \"; hi: \" + (isValid(datum[\"hi\"]) ? datum[\"hi\"] : \"\"+datum[\"hi\"])"
+ "signal": "\"name: \" + (\"\" + datum[\"name\"]) + \"; hi: \" + (\"\" + datum[\"hi\"])"
},
"x": {"value": 255},
"y": {"scale": "y", "field": "name"},
- "text": {
- "signal": "isValid(datum[\"hi\"]) ? datum[\"hi\"] : \"\"+datum[\"hi\"]"
- },
+ "text": {"signal": "\"\" + datum[\"hi\"]"},
"baseline": {"value": "middle"}
}
}
diff --git a/examples/compiled/layer_line_co2_concentration.vg.json b/examples/compiled/layer_line_co2_concentration.vg.json
index 15ba2b5d35..5f5883358f 100644
--- a/examples/compiled/layer_line_co2_concentration.vg.json
+++ b/examples/compiled/layer_line_co2_concentration.vg.json
@@ -97,7 +97,7 @@
"update": {
"stroke": {"scale": "color", "field": "decade"},
"description": {
- "signal": "\"Year into Decade: \" + (format(datum[\"scaled_date\"], \"\")) + \"; CO2 concentration in ppm: \" + (format(datum[\"CO2\"], \"\")) + \"; decade: \" + (isValid(datum[\"decade\"]) ? datum[\"decade\"] : \"\"+datum[\"decade\"])"
+ "signal": "\"Year into Decade: \" + (!isValid(datum[\"scaled_date\"]) || !isFinite(+datum[\"scaled_date\"]) ? \"\" + datum[\"scaled_date\"] : format(datum[\"scaled_date\"], \"\")) + \"; CO2 concentration in ppm: \" + (!isValid(datum[\"CO2\"]) || !isFinite(+datum[\"CO2\"]) ? \"\" + datum[\"CO2\"] : format(datum[\"CO2\"], \"\")) + \"; decade: \" + (\"\" + datum[\"decade\"])"
},
"x": {"scale": "x", "field": "scaled_date"},
"y": {"scale": "y", "field": "CO2"},
@@ -121,9 +121,7 @@
"fill": {"scale": "color", "field": "decade"},
"x": {"scale": "x", "field": "min_scaled_date"},
"y": {"scale": "y", "field": "argmin_scaled_date[\"CO2\"]"},
- "text": {
- "signal": "isValid(datum[\"argmin_scaled_date\"][\"year\"]) ? datum[\"argmin_scaled_date\"][\"year\"] : \"\"+datum[\"argmin_scaled_date\"][\"year\"]"
- }
+ "text": {"signal": "\"\" + datum[\"argmin_scaled_date\"][\"year\"]"}
}
}
},
@@ -138,9 +136,7 @@
"fill": {"scale": "color", "field": "decade"},
"x": {"scale": "x", "field": "max_scaled_date"},
"y": {"scale": "y", "field": "argmax_scaled_date[\"CO2\"]"},
- "text": {
- "signal": "isValid(datum[\"argmax_scaled_date\"][\"year\"]) ? datum[\"argmax_scaled_date\"][\"year\"] : \"\"+datum[\"argmax_scaled_date\"][\"year\"]"
- },
+ "text": {"signal": "\"\" + datum[\"argmax_scaled_date\"][\"year\"]"},
"baseline": {"value": "middle"}
}
}
diff --git a/examples/compiled/layer_line_color_rule.vg.json b/examples/compiled/layer_line_color_rule.vg.json
index 745fe51101..4928f66499 100644
--- a/examples/compiled/layer_line_color_rule.vg.json
+++ b/examples/compiled/layer_line_color_rule.vg.json
@@ -58,7 +58,7 @@
"update": {
"stroke": {"scale": "color", "field": "symbol"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"price\"], \"\")) + \"; symbol: \" + (isValid(datum[\"symbol\"]) ? datum[\"symbol\"] : \"\"+datum[\"symbol\"])"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\")) + \"; symbol: \" + (\"\" + datum[\"symbol\"])"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "price"},
@@ -79,7 +79,7 @@
"update": {
"stroke": {"scale": "color", "field": "symbol"},
"description": {
- "signal": "\"Mean of price: \" + (format(datum[\"mean_price\"], \"\")) + \"; symbol: \" + (isValid(datum[\"symbol\"]) ? datum[\"symbol\"] : \"\"+datum[\"symbol\"])"
+ "signal": "\"Mean of price: \" + (!isValid(datum[\"mean_price\"]) || !isFinite(+datum[\"mean_price\"]) ? \"\" + datum[\"mean_price\"] : format(datum[\"mean_price\"], \"\")) + \"; symbol: \" + (\"\" + datum[\"symbol\"])"
},
"x": {"field": {"group": "width"}},
"x2": {"value": 0},
diff --git a/examples/compiled/layer_line_datum_rule.vg.json b/examples/compiled/layer_line_datum_rule.vg.json
index a9f632afc2..aa5b04fb79 100644
--- a/examples/compiled/layer_line_datum_rule.vg.json
+++ b/examples/compiled/layer_line_datum_rule.vg.json
@@ -41,7 +41,7 @@
"update": {
"stroke": {"scale": "color", "field": "symbol"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"price\"], \"\")) + \"; symbol: \" + (isValid(datum[\"symbol\"]) ? datum[\"symbol\"] : \"\"+datum[\"symbol\"])"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\")) + \"; symbol: \" + (\"\" + datum[\"symbol\"])"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "price"},
diff --git a/examples/compiled/layer_line_datum_rule_datetime.vg.json b/examples/compiled/layer_line_datum_rule_datetime.vg.json
index 0f6cca8f1e..dbb1924e06 100644
--- a/examples/compiled/layer_line_datum_rule_datetime.vg.json
+++ b/examples/compiled/layer_line_datum_rule_datetime.vg.json
@@ -41,7 +41,7 @@
"update": {
"stroke": {"scale": "color", "field": "symbol"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"price\"], \"\")) + \"; symbol: \" + (isValid(datum[\"symbol\"]) ? datum[\"symbol\"] : \"\"+datum[\"symbol\"])"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\")) + \"; symbol: \" + (\"\" + datum[\"symbol\"])"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "price"},
diff --git a/examples/compiled/layer_line_errorband_2d_horizontal_borders_strokedash.vg.json b/examples/compiled/layer_line_errorband_2d_horizontal_borders_strokedash.vg.json
index 8ba8495633..f4b699b3d1 100644
--- a/examples/compiled/layer_line_errorband_2d_horizontal_borders_strokedash.vg.json
+++ b/examples/compiled/layer_line_errorband_2d_horizontal_borders_strokedash.vg.json
@@ -51,10 +51,10 @@
"orient": {"value": "vertical"},
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"Ci1 of Miles_per_Gallon\": format(datum[\"upper_Miles_per_Gallon\"], \"\"), \"Ci0 of Miles_per_Gallon\": format(datum[\"lower_Miles_per_Gallon\"], \"\"), \"Mean of Miles_per_Gallon\": format(datum[\"center_Miles_per_Gallon\"], \"\"), \"Year (year)\": timeFormat(datum[\"year_Year\"], '%b %d, %Y')}"
+ "signal": "{\"Ci1 of Miles_per_Gallon\": !isValid(datum[\"upper_Miles_per_Gallon\"]) || !isFinite(+datum[\"upper_Miles_per_Gallon\"]) ? \"\" + datum[\"upper_Miles_per_Gallon\"] : format(datum[\"upper_Miles_per_Gallon\"], \"\"), \"Ci0 of Miles_per_Gallon\": !isValid(datum[\"lower_Miles_per_Gallon\"]) || !isFinite(+datum[\"lower_Miles_per_Gallon\"]) ? \"\" + datum[\"lower_Miles_per_Gallon\"] : format(datum[\"lower_Miles_per_Gallon\"], \"\"), \"Mean of Miles_per_Gallon\": !isValid(datum[\"center_Miles_per_Gallon\"]) || !isFinite(+datum[\"center_Miles_per_Gallon\"]) ? \"\" + datum[\"center_Miles_per_Gallon\"] : format(datum[\"center_Miles_per_Gallon\"], \"\"), \"Year (year)\": !isValid(datum[\"year_Year\"]) || !isFinite(+datum[\"year_Year\"]) ? \"\" + datum[\"year_Year\"] : timeFormat(datum[\"year_Year\"], '%b %d, %Y')}"
},
"description": {
- "signal": "\"Year (year): \" + (timeFormat(datum[\"year_Year\"], '%b %d, %Y')) + \"; Miles_per_Gallon: \" + (format(datum[\"lower_Miles_per_Gallon\"], \"\")) + \"; upper_Miles_per_Gallon: \" + (format(datum[\"upper_Miles_per_Gallon\"], \"\")) + \"; Ci1 of Miles_per_Gallon: \" + (format(datum[\"upper_Miles_per_Gallon\"], \"\")) + \"; Ci0 of Miles_per_Gallon: \" + (format(datum[\"lower_Miles_per_Gallon\"], \"\")) + \"; Mean of Miles_per_Gallon: \" + (format(datum[\"center_Miles_per_Gallon\"], \"\"))"
+ "signal": "\"Year (year): \" + (!isValid(datum[\"year_Year\"]) || !isFinite(+datum[\"year_Year\"]) ? \"\" + datum[\"year_Year\"] : timeFormat(datum[\"year_Year\"], '%b %d, %Y')) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"lower_Miles_per_Gallon\"]) || !isFinite(+datum[\"lower_Miles_per_Gallon\"]) ? \"\" + datum[\"lower_Miles_per_Gallon\"] : format(datum[\"lower_Miles_per_Gallon\"], \"\")) + \"; upper_Miles_per_Gallon: \" + (!isValid(datum[\"upper_Miles_per_Gallon\"]) || !isFinite(+datum[\"upper_Miles_per_Gallon\"]) ? \"\" + datum[\"upper_Miles_per_Gallon\"] : format(datum[\"upper_Miles_per_Gallon\"], \"\")) + \"; Ci1 of Miles_per_Gallon: \" + (!isValid(datum[\"upper_Miles_per_Gallon\"]) || !isFinite(+datum[\"upper_Miles_per_Gallon\"]) ? \"\" + datum[\"upper_Miles_per_Gallon\"] : format(datum[\"upper_Miles_per_Gallon\"], \"\")) + \"; Ci0 of Miles_per_Gallon: \" + (!isValid(datum[\"lower_Miles_per_Gallon\"]) || !isFinite(+datum[\"lower_Miles_per_Gallon\"]) ? \"\" + datum[\"lower_Miles_per_Gallon\"] : format(datum[\"lower_Miles_per_Gallon\"], \"\")) + \"; Mean of Miles_per_Gallon: \" + (!isValid(datum[\"center_Miles_per_Gallon\"]) || !isFinite(+datum[\"center_Miles_per_Gallon\"]) ? \"\" + datum[\"center_Miles_per_Gallon\"] : format(datum[\"center_Miles_per_Gallon\"], \"\"))"
},
"x": {"scale": "x", "field": "year_Year"},
"y": {"scale": "y", "field": "lower_Miles_per_Gallon"},
@@ -78,7 +78,7 @@
"strokeDash": {"value": [6, 4]},
"stroke": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"Ci1 of Miles_per_Gallon\": format(datum[\"upper_Miles_per_Gallon\"], \"\"), \"Ci0 of Miles_per_Gallon\": format(datum[\"lower_Miles_per_Gallon\"], \"\"), \"Mean of Miles_per_Gallon\": format(datum[\"center_Miles_per_Gallon\"], \"\"), \"Year (year)\": timeFormat(datum[\"year_Year\"], '%b %d, %Y')}"
+ "signal": "{\"Ci1 of Miles_per_Gallon\": !isValid(datum[\"upper_Miles_per_Gallon\"]) || !isFinite(+datum[\"upper_Miles_per_Gallon\"]) ? \"\" + datum[\"upper_Miles_per_Gallon\"] : format(datum[\"upper_Miles_per_Gallon\"], \"\"), \"Ci0 of Miles_per_Gallon\": !isValid(datum[\"lower_Miles_per_Gallon\"]) || !isFinite(+datum[\"lower_Miles_per_Gallon\"]) ? \"\" + datum[\"lower_Miles_per_Gallon\"] : format(datum[\"lower_Miles_per_Gallon\"], \"\"), \"Mean of Miles_per_Gallon\": !isValid(datum[\"center_Miles_per_Gallon\"]) || !isFinite(+datum[\"center_Miles_per_Gallon\"]) ? \"\" + datum[\"center_Miles_per_Gallon\"] : format(datum[\"center_Miles_per_Gallon\"], \"\"), \"Year (year)\": !isValid(datum[\"year_Year\"]) || !isFinite(+datum[\"year_Year\"]) ? \"\" + datum[\"year_Year\"] : timeFormat(datum[\"year_Year\"], '%b %d, %Y')}"
},
"x": {"scale": "x", "field": "year_Year"},
"y": {"scale": "y", "field": "lower_Miles_per_Gallon"},
@@ -101,7 +101,7 @@
"strokeDash": {"value": [6, 4]},
"stroke": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"Ci1 of Miles_per_Gallon\": format(datum[\"upper_Miles_per_Gallon\"], \"\"), \"Ci0 of Miles_per_Gallon\": format(datum[\"lower_Miles_per_Gallon\"], \"\"), \"Mean of Miles_per_Gallon\": format(datum[\"center_Miles_per_Gallon\"], \"\"), \"Year (year)\": timeFormat(datum[\"year_Year\"], '%b %d, %Y')}"
+ "signal": "{\"Ci1 of Miles_per_Gallon\": !isValid(datum[\"upper_Miles_per_Gallon\"]) || !isFinite(+datum[\"upper_Miles_per_Gallon\"]) ? \"\" + datum[\"upper_Miles_per_Gallon\"] : format(datum[\"upper_Miles_per_Gallon\"], \"\"), \"Ci0 of Miles_per_Gallon\": !isValid(datum[\"lower_Miles_per_Gallon\"]) || !isFinite(+datum[\"lower_Miles_per_Gallon\"]) ? \"\" + datum[\"lower_Miles_per_Gallon\"] : format(datum[\"lower_Miles_per_Gallon\"], \"\"), \"Mean of Miles_per_Gallon\": !isValid(datum[\"center_Miles_per_Gallon\"]) || !isFinite(+datum[\"center_Miles_per_Gallon\"]) ? \"\" + datum[\"center_Miles_per_Gallon\"] : format(datum[\"center_Miles_per_Gallon\"], \"\"), \"Year (year)\": !isValid(datum[\"year_Year\"]) || !isFinite(+datum[\"year_Year\"]) ? \"\" + datum[\"year_Year\"] : timeFormat(datum[\"year_Year\"], '%b %d, %Y')}"
},
"x": {"scale": "x", "field": "year_Year"},
"y": {"scale": "y", "field": "upper_Miles_per_Gallon"},
@@ -121,7 +121,7 @@
"update": {
"stroke": {"value": "#4c78a8"},
"description": {
- "signal": "\"Year (year): \" + (timeFormat(datum[\"year_Year\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of Miles_per_Gallon: \" + (format(datum[\"mean_Miles_per_Gallon\"], \"\"))"
+ "signal": "\"Year (year): \" + (!isValid(datum[\"year_Year\"]) || !isFinite(+datum[\"year_Year\"]) ? \"\" + datum[\"year_Year\"] : timeFormat(datum[\"year_Year\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of Miles_per_Gallon: \" + (!isValid(datum[\"mean_Miles_per_Gallon\"]) || !isFinite(+datum[\"mean_Miles_per_Gallon\"]) ? \"\" + datum[\"mean_Miles_per_Gallon\"] : format(datum[\"mean_Miles_per_Gallon\"], \"\"))"
},
"x": {"scale": "x", "field": "year_Year"},
"y": {"scale": "y", "field": "mean_Miles_per_Gallon"},
diff --git a/examples/compiled/layer_line_errorband_ci.vg.json b/examples/compiled/layer_line_errorband_ci.vg.json
index 2f467bc8c4..2f97019ee4 100644
--- a/examples/compiled/layer_line_errorband_ci.vg.json
+++ b/examples/compiled/layer_line_errorband_ci.vg.json
@@ -51,10 +51,10 @@
"orient": {"value": "vertical"},
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"Ci1 of Miles_per_Gallon\": format(datum[\"upper_Miles_per_Gallon\"], \"\"), \"Ci0 of Miles_per_Gallon\": format(datum[\"lower_Miles_per_Gallon\"], \"\"), \"Mean of Miles_per_Gallon\": format(datum[\"center_Miles_per_Gallon\"], \"\"), \"Year (year)\": timeFormat(datum[\"year_Year\"], '%b %d, %Y')}"
+ "signal": "{\"Ci1 of Miles_per_Gallon\": !isValid(datum[\"upper_Miles_per_Gallon\"]) || !isFinite(+datum[\"upper_Miles_per_Gallon\"]) ? \"\" + datum[\"upper_Miles_per_Gallon\"] : format(datum[\"upper_Miles_per_Gallon\"], \"\"), \"Ci0 of Miles_per_Gallon\": !isValid(datum[\"lower_Miles_per_Gallon\"]) || !isFinite(+datum[\"lower_Miles_per_Gallon\"]) ? \"\" + datum[\"lower_Miles_per_Gallon\"] : format(datum[\"lower_Miles_per_Gallon\"], \"\"), \"Mean of Miles_per_Gallon\": !isValid(datum[\"center_Miles_per_Gallon\"]) || !isFinite(+datum[\"center_Miles_per_Gallon\"]) ? \"\" + datum[\"center_Miles_per_Gallon\"] : format(datum[\"center_Miles_per_Gallon\"], \"\"), \"Year (year)\": !isValid(datum[\"year_Year\"]) || !isFinite(+datum[\"year_Year\"]) ? \"\" + datum[\"year_Year\"] : timeFormat(datum[\"year_Year\"], '%b %d, %Y')}"
},
"description": {
- "signal": "\"Year (year): \" + (timeFormat(datum[\"year_Year\"], '%b %d, %Y')) + \"; Mean of Miles per Gallon (95% CIs): \" + (format(datum[\"lower_Miles_per_Gallon\"], \"\")) + \"; upper_Miles_per_Gallon: \" + (format(datum[\"upper_Miles_per_Gallon\"], \"\")) + \"; Ci1 of Miles_per_Gallon: \" + (format(datum[\"upper_Miles_per_Gallon\"], \"\")) + \"; Ci0 of Miles_per_Gallon: \" + (format(datum[\"lower_Miles_per_Gallon\"], \"\")) + \"; Mean of Miles_per_Gallon: \" + (format(datum[\"center_Miles_per_Gallon\"], \"\"))"
+ "signal": "\"Year (year): \" + (!isValid(datum[\"year_Year\"]) || !isFinite(+datum[\"year_Year\"]) ? \"\" + datum[\"year_Year\"] : timeFormat(datum[\"year_Year\"], '%b %d, %Y')) + \"; Mean of Miles per Gallon (95% CIs): \" + (!isValid(datum[\"lower_Miles_per_Gallon\"]) || !isFinite(+datum[\"lower_Miles_per_Gallon\"]) ? \"\" + datum[\"lower_Miles_per_Gallon\"] : format(datum[\"lower_Miles_per_Gallon\"], \"\")) + \"; upper_Miles_per_Gallon: \" + (!isValid(datum[\"upper_Miles_per_Gallon\"]) || !isFinite(+datum[\"upper_Miles_per_Gallon\"]) ? \"\" + datum[\"upper_Miles_per_Gallon\"] : format(datum[\"upper_Miles_per_Gallon\"], \"\")) + \"; Ci1 of Miles_per_Gallon: \" + (!isValid(datum[\"upper_Miles_per_Gallon\"]) || !isFinite(+datum[\"upper_Miles_per_Gallon\"]) ? \"\" + datum[\"upper_Miles_per_Gallon\"] : format(datum[\"upper_Miles_per_Gallon\"], \"\")) + \"; Ci0 of Miles_per_Gallon: \" + (!isValid(datum[\"lower_Miles_per_Gallon\"]) || !isFinite(+datum[\"lower_Miles_per_Gallon\"]) ? \"\" + datum[\"lower_Miles_per_Gallon\"] : format(datum[\"lower_Miles_per_Gallon\"], \"\")) + \"; Mean of Miles_per_Gallon: \" + (!isValid(datum[\"center_Miles_per_Gallon\"]) || !isFinite(+datum[\"center_Miles_per_Gallon\"]) ? \"\" + datum[\"center_Miles_per_Gallon\"] : format(datum[\"center_Miles_per_Gallon\"], \"\"))"
},
"x": {"scale": "x", "field": "year_Year"},
"y": {"scale": "y", "field": "lower_Miles_per_Gallon"},
@@ -75,7 +75,7 @@
"update": {
"stroke": {"value": "#4c78a8"},
"description": {
- "signal": "\"Year (year): \" + (timeFormat(datum[\"year_Year\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of Miles_per_Gallon: \" + (format(datum[\"mean_Miles_per_Gallon\"], \"\"))"
+ "signal": "\"Year (year): \" + (!isValid(datum[\"year_Year\"]) || !isFinite(+datum[\"year_Year\"]) ? \"\" + datum[\"year_Year\"] : timeFormat(datum[\"year_Year\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of Miles_per_Gallon: \" + (!isValid(datum[\"mean_Miles_per_Gallon\"]) || !isFinite(+datum[\"mean_Miles_per_Gallon\"]) ? \"\" + datum[\"mean_Miles_per_Gallon\"] : format(datum[\"mean_Miles_per_Gallon\"], \"\"))"
},
"x": {"scale": "x", "field": "year_Year"},
"y": {"scale": "y", "field": "mean_Miles_per_Gallon"},
diff --git a/examples/compiled/layer_line_errorband_pre_aggregated.vg.json b/examples/compiled/layer_line_errorband_pre_aggregated.vg.json
index ec42299e65..130a9f07d6 100644
--- a/examples/compiled/layer_line_errorband_pre_aggregated.vg.json
+++ b/examples/compiled/layer_line_errorband_pre_aggregated.vg.json
@@ -71,10 +71,10 @@
"orient": {"value": "vertical"},
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"ci0\": format(datum[\"upper_ci1\"], \"\"), \"ci1\": format(datum[\"lower_ci1\"], \"\"), \"Year (year)\": timeFormat(datum[\"year_Year\"], '%b %d, %Y')}"
+ "signal": "{\"ci0\": !isValid(datum[\"upper_ci1\"]) || !isFinite(+datum[\"upper_ci1\"]) ? \"\" + datum[\"upper_ci1\"] : format(datum[\"upper_ci1\"], \"\"), \"ci1\": !isValid(datum[\"lower_ci1\"]) || !isFinite(+datum[\"lower_ci1\"]) ? \"\" + datum[\"lower_ci1\"] : format(datum[\"lower_ci1\"], \"\"), \"Year (year)\": !isValid(datum[\"year_Year\"]) || !isFinite(+datum[\"year_Year\"]) ? \"\" + datum[\"year_Year\"] : timeFormat(datum[\"year_Year\"], '%b %d, %Y')}"
},
"description": {
- "signal": "\"Year (year): \" + (timeFormat(datum[\"year_Year\"], '%b %d, %Y')) + \"; Mean of Miles per Gallon (95% CIs): \" + (format(datum[\"lower_ci1\"], \"\")) + \"; upper_ci1: \" + (format(datum[\"upper_ci1\"], \"\")) + \"; ci0: \" + (format(datum[\"upper_ci1\"], \"\")) + \"; ci1: \" + (format(datum[\"lower_ci1\"], \"\"))"
+ "signal": "\"Year (year): \" + (!isValid(datum[\"year_Year\"]) || !isFinite(+datum[\"year_Year\"]) ? \"\" + datum[\"year_Year\"] : timeFormat(datum[\"year_Year\"], '%b %d, %Y')) + \"; Mean of Miles per Gallon (95% CIs): \" + (!isValid(datum[\"lower_ci1\"]) || !isFinite(+datum[\"lower_ci1\"]) ? \"\" + datum[\"lower_ci1\"] : format(datum[\"lower_ci1\"], \"\")) + \"; upper_ci1: \" + (!isValid(datum[\"upper_ci1\"]) || !isFinite(+datum[\"upper_ci1\"]) ? \"\" + datum[\"upper_ci1\"] : format(datum[\"upper_ci1\"], \"\")) + \"; ci0: \" + (!isValid(datum[\"upper_ci1\"]) || !isFinite(+datum[\"upper_ci1\"]) ? \"\" + datum[\"upper_ci1\"] : format(datum[\"upper_ci1\"], \"\")) + \"; ci1: \" + (!isValid(datum[\"lower_ci1\"]) || !isFinite(+datum[\"lower_ci1\"]) ? \"\" + datum[\"lower_ci1\"] : format(datum[\"lower_ci1\"], \"\"))"
},
"x": {"scale": "x", "field": "year_Year"},
"y": {"scale": "y", "field": "lower_ci1"},
@@ -95,7 +95,7 @@
"update": {
"stroke": {"value": "#4c78a8"},
"description": {
- "signal": "\"Year (year): \" + (timeFormat(datum[\"year_Year\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; center: \" + (format(datum[\"center\"], \"\"))"
+ "signal": "\"Year (year): \" + (!isValid(datum[\"year_Year\"]) || !isFinite(+datum[\"year_Year\"]) ? \"\" + datum[\"year_Year\"] : timeFormat(datum[\"year_Year\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; center: \" + (!isValid(datum[\"center\"]) || !isFinite(+datum[\"center\"]) ? \"\" + datum[\"center\"] : format(datum[\"center\"], \"\"))"
},
"x": {"scale": "x", "field": "year_Year"},
"y": {"scale": "y", "field": "center"},
diff --git a/examples/compiled/layer_line_mean_point_raw.vg.json b/examples/compiled/layer_line_mean_point_raw.vg.json
index a631d91286..fbc97bd246 100644
--- a/examples/compiled/layer_line_mean_point_raw.vg.json
+++ b/examples/compiled/layer_line_mean_point_raw.vg.json
@@ -58,7 +58,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"date (year): \" + (timeFormat(datum[\"year_date\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; price: \" + (format(datum[\"price\"], \"\"))"
+ "signal": "\"date (year): \" + (!isValid(datum[\"year_date\"]) || !isFinite(+datum[\"year_date\"]) ? \"\" + datum[\"year_date\"] : timeFormat(datum[\"year_date\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\"))"
},
"x": {"scale": "x", "field": "year_date"},
"y": {"scale": "y", "field": "price"}
@@ -75,7 +75,7 @@
"update": {
"stroke": {"value": "#4c78a8"},
"description": {
- "signal": "\"date (year): \" + (timeFormat(datum[\"year_date\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of price: \" + (format(datum[\"mean_price\"], \"\"))"
+ "signal": "\"date (year): \" + (!isValid(datum[\"year_date\"]) || !isFinite(+datum[\"year_date\"]) ? \"\" + datum[\"year_date\"] : timeFormat(datum[\"year_date\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of price: \" + (!isValid(datum[\"mean_price\"]) || !isFinite(+datum[\"mean_price\"]) ? \"\" + datum[\"mean_price\"] : format(datum[\"mean_price\"], \"\"))"
},
"x": {"scale": "x", "field": "year_date"},
"y": {"scale": "y", "field": "mean_price"},
diff --git a/examples/compiled/layer_line_rolling_mean_point_raw.vg.json b/examples/compiled/layer_line_rolling_mean_point_raw.vg.json
index b4af2098c2..0cf4ad9546 100644
--- a/examples/compiled/layer_line_rolling_mean_point_raw.vg.json
+++ b/examples/compiled/layer_line_rolling_mean_point_raw.vg.json
@@ -47,7 +47,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; Max Temperature: \" + (format(datum[\"temp_max\"], \"\"))"
+ "signal": "\"Date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; Max Temperature: \" + (!isValid(datum[\"temp_max\"]) || !isFinite(+datum[\"temp_max\"]) ? \"\" + datum[\"temp_max\"] : format(datum[\"temp_max\"], \"\"))"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "temp_max"}
@@ -64,7 +64,7 @@
"update": {
"stroke": {"value": "red"},
"description": {
- "signal": "\"Date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; Rolling Mean of Max Temperature: \" + (format(datum[\"rolling_mean\"], \"\"))"
+ "signal": "\"Date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; Rolling Mean of Max Temperature: \" + (!isValid(datum[\"rolling_mean\"]) || !isFinite(+datum[\"rolling_mean\"]) ? \"\" + datum[\"rolling_mean\"] : format(datum[\"rolling_mean\"], \"\"))"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "rolling_mean"},
diff --git a/examples/compiled/layer_line_window.vg.json b/examples/compiled/layer_line_window.vg.json
index d5030a61e8..fe631a6564 100644
--- a/examples/compiled/layer_line_window.vg.json
+++ b/examples/compiled/layer_line_window.vg.json
@@ -497,7 +497,7 @@
"update": {
"stroke": {"scale": "color", "field": "system"},
"description": {
- "signal": "\"Trial: \" + (format(datum[\"row\"], \"\")) + \"; Frames Per Second (fps): \" + (format(datum[\"fps\"], \"\")) + \"; System: \" + (isValid(datum[\"system\"]) ? datum[\"system\"] : \"\"+datum[\"system\"])"
+ "signal": "\"Trial: \" + (!isValid(datum[\"row\"]) || !isFinite(+datum[\"row\"]) ? \"\" + datum[\"row\"] : format(datum[\"row\"], \"\")) + \"; Frames Per Second (fps): \" + (!isValid(datum[\"fps\"]) || !isFinite(+datum[\"fps\"]) ? \"\" + datum[\"fps\"] : format(datum[\"fps\"], \"\")) + \"; System: \" + (\"\" + datum[\"system\"])"
},
"x": {"scale": "x", "field": "row"},
"y": {"scale": "y", "field": "fps"},
@@ -537,7 +537,7 @@
"update": {
"stroke": {"scale": "color", "field": "system"},
"description": {
- "signal": "\"Trial: \" + (format(datum[\"row\"], \"\")) + \"; Frames Per Second (fps): \" + (format(datum[\"fps\"], \"\")) + \"; System: \" + (isValid(datum[\"system\"]) ? datum[\"system\"] : \"\"+datum[\"system\"])"
+ "signal": "\"Trial: \" + (!isValid(datum[\"row\"]) || !isFinite(+datum[\"row\"]) ? \"\" + datum[\"row\"] : format(datum[\"row\"], \"\")) + \"; Frames Per Second (fps): \" + (!isValid(datum[\"fps\"]) || !isFinite(+datum[\"fps\"]) ? \"\" + datum[\"fps\"] : format(datum[\"fps\"], \"\")) + \"; System: \" + (\"\" + datum[\"system\"])"
},
"x": {"scale": "x", "field": "row"},
"y": {"scale": "y", "field": "fps"},
diff --git a/examples/compiled/layer_null_data.vg.json b/examples/compiled/layer_null_data.vg.json
index ba3703026a..7a2906c740 100644
--- a/examples/compiled/layer_null_data.vg.json
+++ b/examples/compiled/layer_null_data.vg.json
@@ -77,7 +77,7 @@
"update": {
"stroke": {"value": "#4c78a8"},
"description": {
- "signal": "\"a (year-month-date): \" + (timeFormat(datum[\"yearmonthdate_a\"], '%d %b')) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a (year-month-date): \" + (!isValid(datum[\"yearmonthdate_a\"]) || !isFinite(+datum[\"yearmonthdate_a\"]) ? \"\" + datum[\"yearmonthdate_a\"] : timeFormat(datum[\"yearmonthdate_a\"], '%d %b')) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "x", "field": "yearmonthdate_a"},
"y": {"scale": "y", "field": "b"},
@@ -98,7 +98,7 @@
"fill": {"value": "red"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a (year-month-date): \" + (timeFormat(datum[\"yearmonthdate_a\"], timeUnitSpecifier([\"year\",\"month\",\"date\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"})))"
+ "signal": "\"a (year-month-date): \" + (!isValid(datum[\"yearmonthdate_a\"]) || !isFinite(+datum[\"yearmonthdate_a\"]) ? \"\" + datum[\"yearmonthdate_a\"] : timeFormat(datum[\"yearmonthdate_a\"], timeUnitSpecifier([\"year\",\"month\",\"date\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"})))"
},
"x2": {
"scale": "x",
diff --git a/examples/compiled/layer_overlay.vg.json b/examples/compiled/layer_overlay.vg.json
index 89c38c3ccb..7e51e82652 100644
--- a/examples/compiled/layer_overlay.vg.json
+++ b/examples/compiled/layer_overlay.vg.json
@@ -58,7 +58,7 @@
"update": {
"stroke": {"value": "darkred"},
"description": {
- "signal": "\"Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; Max of Horsepower: \" + (format(datum[\"max_Horsepower\"], \"\"))"
+ "signal": "\"Cylinders: \" + (\"\" + datum[\"Cylinders\"]) + \"; Max of Horsepower: \" + (!isValid(datum[\"max_Horsepower\"]) || !isFinite(+datum[\"max_Horsepower\"]) ? \"\" + datum[\"max_Horsepower\"] : format(datum[\"max_Horsepower\"], \"\"))"
},
"x": {"scale": "x", "field": "Cylinders"},
"y": {"scale": "y", "field": "max_Horsepower"},
@@ -79,7 +79,7 @@
"fill": {"value": "darkred"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; Max of Horsepower: \" + (format(datum[\"max_Horsepower\"], \"\"))"
+ "signal": "\"Cylinders: \" + (\"\" + datum[\"Cylinders\"]) + \"; Max of Horsepower: \" + (!isValid(datum[\"max_Horsepower\"]) || !isFinite(+datum[\"max_Horsepower\"]) ? \"\" + datum[\"max_Horsepower\"] : format(datum[\"max_Horsepower\"], \"\"))"
},
"x": {"scale": "x", "field": "Cylinders"},
"y": {"scale": "y", "field": "max_Horsepower"}
@@ -96,7 +96,7 @@
"update": {
"stroke": {"value": "#4c78a8"},
"description": {
- "signal": "\"Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; Min of Horsepower: \" + (format(datum[\"min_Horsepower\"], \"\"))"
+ "signal": "\"Cylinders: \" + (\"\" + datum[\"Cylinders\"]) + \"; Min of Horsepower: \" + (!isValid(datum[\"min_Horsepower\"]) || !isFinite(+datum[\"min_Horsepower\"]) ? \"\" + datum[\"min_Horsepower\"] : format(datum[\"min_Horsepower\"], \"\"))"
},
"x": {"scale": "x", "field": "Cylinders"},
"y": {"scale": "y", "field": "min_Horsepower"},
@@ -117,7 +117,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; Min of Horsepower: \" + (format(datum[\"min_Horsepower\"], \"\"))"
+ "signal": "\"Cylinders: \" + (\"\" + datum[\"Cylinders\"]) + \"; Min of Horsepower: \" + (!isValid(datum[\"min_Horsepower\"]) || !isFinite(+datum[\"min_Horsepower\"]) ? \"\" + datum[\"min_Horsepower\"] : format(datum[\"min_Horsepower\"], \"\"))"
},
"x": {"scale": "x", "field": "Cylinders"},
"y": {"scale": "y", "field": "min_Horsepower"}
diff --git a/examples/compiled/layer_point_errorbar_1d_horizontal.vg.json b/examples/compiled/layer_point_errorbar_1d_horizontal.vg.json
index 306057e4fd..08081ea891 100644
--- a/examples/compiled/layer_point_errorbar_1d_horizontal.vg.json
+++ b/examples/compiled/layer_point_errorbar_1d_horizontal.vg.json
@@ -62,10 +62,10 @@
"ariaRoleDescription": {"value": "errorbar"},
"stroke": {"value": "black"},
"tooltip": {
- "signal": "{\"Mean of yield\": format(datum[\"center_yield\"], \"\"), \"Mean + stderr of yield\": format(datum[\"upper_yield\"], \"\"), \"Mean - stderr of yield\": format(datum[\"lower_yield\"], \"\")}"
+ "signal": "{\"Mean of yield\": !isValid(datum[\"center_yield\"]) || !isFinite(+datum[\"center_yield\"]) ? \"\" + datum[\"center_yield\"] : format(datum[\"center_yield\"], \"\"), \"Mean + stderr of yield\": !isValid(datum[\"upper_yield\"]) || !isFinite(+datum[\"upper_yield\"]) ? \"\" + datum[\"upper_yield\"] : format(datum[\"upper_yield\"], \"\"), \"Mean - stderr of yield\": !isValid(datum[\"lower_yield\"]) || !isFinite(+datum[\"lower_yield\"]) ? \"\" + datum[\"lower_yield\"] : format(datum[\"lower_yield\"], \"\")}"
},
"description": {
- "signal": "\"yield: \" + (format(datum[\"lower_yield\"], \"\")) + \"; upper_yield: \" + (format(datum[\"upper_yield\"], \"\")) + \"; Mean of yield: \" + (format(datum[\"center_yield\"], \"\")) + \"; Mean + stderr of yield: \" + (format(datum[\"upper_yield\"], \"\")) + \"; Mean - stderr of yield: \" + (format(datum[\"lower_yield\"], \"\"))"
+ "signal": "\"yield: \" + (!isValid(datum[\"lower_yield\"]) || !isFinite(+datum[\"lower_yield\"]) ? \"\" + datum[\"lower_yield\"] : format(datum[\"lower_yield\"], \"\")) + \"; upper_yield: \" + (!isValid(datum[\"upper_yield\"]) || !isFinite(+datum[\"upper_yield\"]) ? \"\" + datum[\"upper_yield\"] : format(datum[\"upper_yield\"], \"\")) + \"; Mean of yield: \" + (!isValid(datum[\"center_yield\"]) || !isFinite(+datum[\"center_yield\"]) ? \"\" + datum[\"center_yield\"] : format(datum[\"center_yield\"], \"\")) + \"; Mean + stderr of yield: \" + (!isValid(datum[\"upper_yield\"]) || !isFinite(+datum[\"upper_yield\"]) ? \"\" + datum[\"upper_yield\"] : format(datum[\"upper_yield\"], \"\")) + \"; Mean - stderr of yield: \" + (!isValid(datum[\"lower_yield\"]) || !isFinite(+datum[\"lower_yield\"]) ? \"\" + datum[\"lower_yield\"] : format(datum[\"lower_yield\"], \"\"))"
},
"x": {"scale": "x", "field": "lower_yield"},
"x2": {"scale": "x", "field": "upper_yield"},
@@ -83,7 +83,7 @@
"fill": {"value": "black"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Mean of yield: \" + (format(datum[\"mean_yield\"], \"\"))"
+ "signal": "\"Mean of yield: \" + (!isValid(datum[\"mean_yield\"]) || !isFinite(+datum[\"mean_yield\"]) ? \"\" + datum[\"mean_yield\"] : format(datum[\"mean_yield\"], \"\"))"
},
"x": {"scale": "x", "field": "mean_yield"},
"y": {"signal": "height", "mult": 0.5}
diff --git a/examples/compiled/layer_point_errorbar_1d_vertical.vg.json b/examples/compiled/layer_point_errorbar_1d_vertical.vg.json
index 50011daa62..ed2db0e3c9 100644
--- a/examples/compiled/layer_point_errorbar_1d_vertical.vg.json
+++ b/examples/compiled/layer_point_errorbar_1d_vertical.vg.json
@@ -62,10 +62,10 @@
"ariaRoleDescription": {"value": "errorbar"},
"stroke": {"value": "black"},
"tooltip": {
- "signal": "{\"Mean of yield\": format(datum[\"center_yield\"], \"\"), \"Mean + stderr of yield\": format(datum[\"upper_yield\"], \"\"), \"Mean - stderr of yield\": format(datum[\"lower_yield\"], \"\")}"
+ "signal": "{\"Mean of yield\": !isValid(datum[\"center_yield\"]) || !isFinite(+datum[\"center_yield\"]) ? \"\" + datum[\"center_yield\"] : format(datum[\"center_yield\"], \"\"), \"Mean + stderr of yield\": !isValid(datum[\"upper_yield\"]) || !isFinite(+datum[\"upper_yield\"]) ? \"\" + datum[\"upper_yield\"] : format(datum[\"upper_yield\"], \"\"), \"Mean - stderr of yield\": !isValid(datum[\"lower_yield\"]) || !isFinite(+datum[\"lower_yield\"]) ? \"\" + datum[\"lower_yield\"] : format(datum[\"lower_yield\"], \"\")}"
},
"description": {
- "signal": "\"yield: \" + (format(datum[\"lower_yield\"], \"\")) + \"; upper_yield: \" + (format(datum[\"upper_yield\"], \"\")) + \"; Mean of yield: \" + (format(datum[\"center_yield\"], \"\")) + \"; Mean + stderr of yield: \" + (format(datum[\"upper_yield\"], \"\")) + \"; Mean - stderr of yield: \" + (format(datum[\"lower_yield\"], \"\"))"
+ "signal": "\"yield: \" + (!isValid(datum[\"lower_yield\"]) || !isFinite(+datum[\"lower_yield\"]) ? \"\" + datum[\"lower_yield\"] : format(datum[\"lower_yield\"], \"\")) + \"; upper_yield: \" + (!isValid(datum[\"upper_yield\"]) || !isFinite(+datum[\"upper_yield\"]) ? \"\" + datum[\"upper_yield\"] : format(datum[\"upper_yield\"], \"\")) + \"; Mean of yield: \" + (!isValid(datum[\"center_yield\"]) || !isFinite(+datum[\"center_yield\"]) ? \"\" + datum[\"center_yield\"] : format(datum[\"center_yield\"], \"\")) + \"; Mean + stderr of yield: \" + (!isValid(datum[\"upper_yield\"]) || !isFinite(+datum[\"upper_yield\"]) ? \"\" + datum[\"upper_yield\"] : format(datum[\"upper_yield\"], \"\")) + \"; Mean - stderr of yield: \" + (!isValid(datum[\"lower_yield\"]) || !isFinite(+datum[\"lower_yield\"]) ? \"\" + datum[\"lower_yield\"] : format(datum[\"lower_yield\"], \"\"))"
},
"x": {"signal": "width", "mult": 0.5},
"y": {"scale": "y", "field": "lower_yield"},
@@ -83,7 +83,7 @@
"fill": {"value": "black"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Mean of yield: \" + (format(datum[\"mean_yield\"], \"\"))"
+ "signal": "\"Mean of yield: \" + (!isValid(datum[\"mean_yield\"]) || !isFinite(+datum[\"mean_yield\"]) ? \"\" + datum[\"mean_yield\"] : format(datum[\"mean_yield\"], \"\"))"
},
"x": {"signal": "width", "mult": 0.5},
"y": {"scale": "y", "field": "mean_yield"}
diff --git a/examples/compiled/layer_point_errorbar_2d_horizontal.vg.json b/examples/compiled/layer_point_errorbar_2d_horizontal.vg.json
index 672ec33639..713031d5a4 100644
--- a/examples/compiled/layer_point_errorbar_2d_horizontal.vg.json
+++ b/examples/compiled/layer_point_errorbar_2d_horizontal.vg.json
@@ -65,10 +65,10 @@
"ariaRoleDescription": {"value": "errorbar"},
"stroke": {"value": "black"},
"tooltip": {
- "signal": "{\"Mean of yield\": format(datum[\"center_yield\"], \"\"), \"Mean + stderr of yield\": format(datum[\"upper_yield\"], \"\"), \"Mean - stderr of yield\": format(datum[\"lower_yield\"], \"\"), \"variety\": isValid(datum[\"variety\"]) ? datum[\"variety\"] : \"\"+datum[\"variety\"]}"
+ "signal": "{\"Mean of yield\": !isValid(datum[\"center_yield\"]) || !isFinite(+datum[\"center_yield\"]) ? \"\" + datum[\"center_yield\"] : format(datum[\"center_yield\"], \"\"), \"Mean + stderr of yield\": !isValid(datum[\"upper_yield\"]) || !isFinite(+datum[\"upper_yield\"]) ? \"\" + datum[\"upper_yield\"] : format(datum[\"upper_yield\"], \"\"), \"Mean - stderr of yield\": !isValid(datum[\"lower_yield\"]) || !isFinite(+datum[\"lower_yield\"]) ? \"\" + datum[\"lower_yield\"] : format(datum[\"lower_yield\"], \"\"), \"variety\": \"\" + datum[\"variety\"]}"
},
"description": {
- "signal": "\"yield: \" + (format(datum[\"lower_yield\"], \"\")) + \"; variety: \" + (isValid(datum[\"variety\"]) ? datum[\"variety\"] : \"\"+datum[\"variety\"]) + \"; upper_yield: \" + (format(datum[\"upper_yield\"], \"\")) + \"; Mean of yield: \" + (format(datum[\"center_yield\"], \"\")) + \"; Mean + stderr of yield: \" + (format(datum[\"upper_yield\"], \"\")) + \"; Mean - stderr of yield: \" + (format(datum[\"lower_yield\"], \"\"))"
+ "signal": "\"yield: \" + (!isValid(datum[\"lower_yield\"]) || !isFinite(+datum[\"lower_yield\"]) ? \"\" + datum[\"lower_yield\"] : format(datum[\"lower_yield\"], \"\")) + \"; variety: \" + (\"\" + datum[\"variety\"]) + \"; upper_yield: \" + (!isValid(datum[\"upper_yield\"]) || !isFinite(+datum[\"upper_yield\"]) ? \"\" + datum[\"upper_yield\"] : format(datum[\"upper_yield\"], \"\")) + \"; Mean of yield: \" + (!isValid(datum[\"center_yield\"]) || !isFinite(+datum[\"center_yield\"]) ? \"\" + datum[\"center_yield\"] : format(datum[\"center_yield\"], \"\")) + \"; Mean + stderr of yield: \" + (!isValid(datum[\"upper_yield\"]) || !isFinite(+datum[\"upper_yield\"]) ? \"\" + datum[\"upper_yield\"] : format(datum[\"upper_yield\"], \"\")) + \"; Mean - stderr of yield: \" + (!isValid(datum[\"lower_yield\"]) || !isFinite(+datum[\"lower_yield\"]) ? \"\" + datum[\"lower_yield\"] : format(datum[\"lower_yield\"], \"\"))"
},
"x": {"scale": "x", "field": "lower_yield"},
"x2": {"scale": "x", "field": "upper_yield"},
@@ -86,7 +86,7 @@
"fill": {"value": "black"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Mean of yield: \" + (format(datum[\"mean_yield\"], \"\")) + \"; variety: \" + (isValid(datum[\"variety\"]) ? datum[\"variety\"] : \"\"+datum[\"variety\"])"
+ "signal": "\"Mean of yield: \" + (!isValid(datum[\"mean_yield\"]) || !isFinite(+datum[\"mean_yield\"]) ? \"\" + datum[\"mean_yield\"] : format(datum[\"mean_yield\"], \"\")) + \"; variety: \" + (\"\" + datum[\"variety\"])"
},
"x": {"scale": "x", "field": "mean_yield"},
"y": {"scale": "y", "field": "variety", "band": 0.5}
diff --git a/examples/compiled/layer_point_errorbar_2d_horizontal_ci.vg.json b/examples/compiled/layer_point_errorbar_2d_horizontal_ci.vg.json
index be00cb942b..631a463f92 100644
--- a/examples/compiled/layer_point_errorbar_2d_horizontal_ci.vg.json
+++ b/examples/compiled/layer_point_errorbar_2d_horizontal_ci.vg.json
@@ -55,10 +55,10 @@
"ariaRoleDescription": {"value": "errorbar"},
"stroke": {"value": "black"},
"tooltip": {
- "signal": "{\"Ci1 of yield\": format(datum[\"upper_yield\"], \"\"), \"Ci0 of yield\": format(datum[\"lower_yield\"], \"\"), \"Mean of yield\": format(datum[\"center_yield\"], \"\"), \"variety\": isValid(datum[\"variety\"]) ? datum[\"variety\"] : \"\"+datum[\"variety\"]}"
+ "signal": "{\"Ci1 of yield\": !isValid(datum[\"upper_yield\"]) || !isFinite(+datum[\"upper_yield\"]) ? \"\" + datum[\"upper_yield\"] : format(datum[\"upper_yield\"], \"\"), \"Ci0 of yield\": !isValid(datum[\"lower_yield\"]) || !isFinite(+datum[\"lower_yield\"]) ? \"\" + datum[\"lower_yield\"] : format(datum[\"lower_yield\"], \"\"), \"Mean of yield\": !isValid(datum[\"center_yield\"]) || !isFinite(+datum[\"center_yield\"]) ? \"\" + datum[\"center_yield\"] : format(datum[\"center_yield\"], \"\"), \"variety\": \"\" + datum[\"variety\"]}"
},
"description": {
- "signal": "\"yield: \" + (format(datum[\"lower_yield\"], \"\")) + \"; variety: \" + (isValid(datum[\"variety\"]) ? datum[\"variety\"] : \"\"+datum[\"variety\"]) + \"; upper_yield: \" + (format(datum[\"upper_yield\"], \"\")) + \"; Ci1 of yield: \" + (format(datum[\"upper_yield\"], \"\")) + \"; Ci0 of yield: \" + (format(datum[\"lower_yield\"], \"\")) + \"; Mean of yield: \" + (format(datum[\"center_yield\"], \"\"))"
+ "signal": "\"yield: \" + (!isValid(datum[\"lower_yield\"]) || !isFinite(+datum[\"lower_yield\"]) ? \"\" + datum[\"lower_yield\"] : format(datum[\"lower_yield\"], \"\")) + \"; variety: \" + (\"\" + datum[\"variety\"]) + \"; upper_yield: \" + (!isValid(datum[\"upper_yield\"]) || !isFinite(+datum[\"upper_yield\"]) ? \"\" + datum[\"upper_yield\"] : format(datum[\"upper_yield\"], \"\")) + \"; Ci1 of yield: \" + (!isValid(datum[\"upper_yield\"]) || !isFinite(+datum[\"upper_yield\"]) ? \"\" + datum[\"upper_yield\"] : format(datum[\"upper_yield\"], \"\")) + \"; Ci0 of yield: \" + (!isValid(datum[\"lower_yield\"]) || !isFinite(+datum[\"lower_yield\"]) ? \"\" + datum[\"lower_yield\"] : format(datum[\"lower_yield\"], \"\")) + \"; Mean of yield: \" + (!isValid(datum[\"center_yield\"]) || !isFinite(+datum[\"center_yield\"]) ? \"\" + datum[\"center_yield\"] : format(datum[\"center_yield\"], \"\"))"
},
"x": {"scale": "x", "field": "lower_yield"},
"x2": {"scale": "x", "field": "upper_yield"},
@@ -76,7 +76,7 @@
"fill": {"value": "black"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Mean of yield: \" + (format(datum[\"mean_yield\"], \"\")) + \"; variety: \" + (isValid(datum[\"variety\"]) ? datum[\"variety\"] : \"\"+datum[\"variety\"])"
+ "signal": "\"Mean of yield: \" + (!isValid(datum[\"mean_yield\"]) || !isFinite(+datum[\"mean_yield\"]) ? \"\" + datum[\"mean_yield\"] : format(datum[\"mean_yield\"], \"\")) + \"; variety: \" + (\"\" + datum[\"variety\"])"
},
"x": {"scale": "x", "field": "mean_yield"},
"y": {"scale": "y", "field": "variety", "band": 0.5}
diff --git a/examples/compiled/layer_point_errorbar_2d_horizontal_color_encoding.vg.json b/examples/compiled/layer_point_errorbar_2d_horizontal_color_encoding.vg.json
index eea7d71aef..3a54f5ab82 100644
--- a/examples/compiled/layer_point_errorbar_2d_horizontal_color_encoding.vg.json
+++ b/examples/compiled/layer_point_errorbar_2d_horizontal_color_encoding.vg.json
@@ -82,7 +82,7 @@
"opacity": {"value": 0.7},
"fill": {"value": "#4682b4"},
"tooltip": {
- "signal": "{\"Mean of yield\": format(datum[\"center_yield\"], \"\"), \"Mean + stderr of yield\": format(datum[\"upper_yield\"], \"\"), \"Mean - stderr of yield\": format(datum[\"lower_yield\"], \"\"), \"variety\": isValid(datum[\"variety\"]) ? datum[\"variety\"] : \"\"+datum[\"variety\"]}"
+ "signal": "{\"Mean of yield\": !isValid(datum[\"center_yield\"]) || !isFinite(+datum[\"center_yield\"]) ? \"\" + datum[\"center_yield\"] : format(datum[\"center_yield\"], \"\"), \"Mean + stderr of yield\": !isValid(datum[\"upper_yield\"]) || !isFinite(+datum[\"upper_yield\"]) ? \"\" + datum[\"upper_yield\"] : format(datum[\"upper_yield\"], \"\"), \"Mean - stderr of yield\": !isValid(datum[\"lower_yield\"]) || !isFinite(+datum[\"lower_yield\"]) ? \"\" + datum[\"lower_yield\"] : format(datum[\"lower_yield\"], \"\"), \"variety\": \"\" + datum[\"variety\"]}"
},
"xc": {"scale": "x", "field": "lower_yield"},
"yc": {"scale": "y", "field": "variety", "band": 0.5},
@@ -102,7 +102,7 @@
"opacity": {"value": 0.7},
"fill": {"value": "#4682b4"},
"tooltip": {
- "signal": "{\"Mean of yield\": format(datum[\"center_yield\"], \"\"), \"Mean + stderr of yield\": format(datum[\"upper_yield\"], \"\"), \"Mean - stderr of yield\": format(datum[\"lower_yield\"], \"\"), \"variety\": isValid(datum[\"variety\"]) ? datum[\"variety\"] : \"\"+datum[\"variety\"]}"
+ "signal": "{\"Mean of yield\": !isValid(datum[\"center_yield\"]) || !isFinite(+datum[\"center_yield\"]) ? \"\" + datum[\"center_yield\"] : format(datum[\"center_yield\"], \"\"), \"Mean + stderr of yield\": !isValid(datum[\"upper_yield\"]) || !isFinite(+datum[\"upper_yield\"]) ? \"\" + datum[\"upper_yield\"] : format(datum[\"upper_yield\"], \"\"), \"Mean - stderr of yield\": !isValid(datum[\"lower_yield\"]) || !isFinite(+datum[\"lower_yield\"]) ? \"\" + datum[\"lower_yield\"] : format(datum[\"lower_yield\"], \"\"), \"variety\": \"\" + datum[\"variety\"]}"
},
"xc": {"scale": "x", "field": "upper_yield"},
"yc": {"scale": "y", "field": "variety", "band": 0.5},
@@ -121,10 +121,10 @@
"ariaRoleDescription": {"value": "errorbar"},
"stroke": {"value": "#4682b4"},
"tooltip": {
- "signal": "{\"Mean of yield\": format(datum[\"center_yield\"], \"\"), \"Mean + stderr of yield\": format(datum[\"upper_yield\"], \"\"), \"Mean - stderr of yield\": format(datum[\"lower_yield\"], \"\"), \"variety\": isValid(datum[\"variety\"]) ? datum[\"variety\"] : \"\"+datum[\"variety\"]}"
+ "signal": "{\"Mean of yield\": !isValid(datum[\"center_yield\"]) || !isFinite(+datum[\"center_yield\"]) ? \"\" + datum[\"center_yield\"] : format(datum[\"center_yield\"], \"\"), \"Mean + stderr of yield\": !isValid(datum[\"upper_yield\"]) || !isFinite(+datum[\"upper_yield\"]) ? \"\" + datum[\"upper_yield\"] : format(datum[\"upper_yield\"], \"\"), \"Mean - stderr of yield\": !isValid(datum[\"lower_yield\"]) || !isFinite(+datum[\"lower_yield\"]) ? \"\" + datum[\"lower_yield\"] : format(datum[\"lower_yield\"], \"\"), \"variety\": \"\" + datum[\"variety\"]}"
},
"description": {
- "signal": "\"yield: \" + (format(datum[\"lower_yield\"], \"\")) + \"; variety: \" + (isValid(datum[\"variety\"]) ? datum[\"variety\"] : \"\"+datum[\"variety\"]) + \"; upper_yield: \" + (format(datum[\"upper_yield\"], \"\")) + \"; Mean of yield: \" + (format(datum[\"center_yield\"], \"\")) + \"; Mean + stderr of yield: \" + (format(datum[\"upper_yield\"], \"\")) + \"; Mean - stderr of yield: \" + (format(datum[\"lower_yield\"], \"\"))"
+ "signal": "\"yield: \" + (!isValid(datum[\"lower_yield\"]) || !isFinite(+datum[\"lower_yield\"]) ? \"\" + datum[\"lower_yield\"] : format(datum[\"lower_yield\"], \"\")) + \"; variety: \" + (\"\" + datum[\"variety\"]) + \"; upper_yield: \" + (!isValid(datum[\"upper_yield\"]) || !isFinite(+datum[\"upper_yield\"]) ? \"\" + datum[\"upper_yield\"] : format(datum[\"upper_yield\"], \"\")) + \"; Mean of yield: \" + (!isValid(datum[\"center_yield\"]) || !isFinite(+datum[\"center_yield\"]) ? \"\" + datum[\"center_yield\"] : format(datum[\"center_yield\"], \"\")) + \"; Mean + stderr of yield: \" + (!isValid(datum[\"upper_yield\"]) || !isFinite(+datum[\"upper_yield\"]) ? \"\" + datum[\"upper_yield\"] : format(datum[\"upper_yield\"], \"\")) + \"; Mean - stderr of yield: \" + (!isValid(datum[\"lower_yield\"]) || !isFinite(+datum[\"lower_yield\"]) ? \"\" + datum[\"lower_yield\"] : format(datum[\"lower_yield\"], \"\"))"
},
"x": {"scale": "x", "field": "lower_yield"},
"x2": {"scale": "x", "field": "upper_yield"},
@@ -142,7 +142,7 @@
"fill": {"value": "black"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Mean of yield: \" + (format(datum[\"mean_yield\"], \"\")) + \"; variety: \" + (isValid(datum[\"variety\"]) ? datum[\"variety\"] : \"\"+datum[\"variety\"])"
+ "signal": "\"Mean of yield: \" + (!isValid(datum[\"mean_yield\"]) || !isFinite(+datum[\"mean_yield\"]) ? \"\" + datum[\"mean_yield\"] : format(datum[\"mean_yield\"], \"\")) + \"; variety: \" + (\"\" + datum[\"variety\"])"
},
"x": {"scale": "x", "field": "mean_yield"},
"y": {"scale": "y", "field": "variety", "band": 0.5}
diff --git a/examples/compiled/layer_point_errorbar_2d_horizontal_custom_ticks.vg.json b/examples/compiled/layer_point_errorbar_2d_horizontal_custom_ticks.vg.json
index b36cf09ebf..2f277f141f 100644
--- a/examples/compiled/layer_point_errorbar_2d_horizontal_custom_ticks.vg.json
+++ b/examples/compiled/layer_point_errorbar_2d_horizontal_custom_ticks.vg.json
@@ -82,7 +82,7 @@
"opacity": {"value": 0.7},
"fill": {"value": "teal"},
"tooltip": {
- "signal": "{\"Mean of yield\": format(datum[\"center_yield\"], \"\"), \"Mean + stderr of yield\": format(datum[\"upper_yield\"], \"\"), \"Mean - stderr of yield\": format(datum[\"lower_yield\"], \"\"), \"variety\": isValid(datum[\"variety\"]) ? datum[\"variety\"] : \"\"+datum[\"variety\"]}"
+ "signal": "{\"Mean of yield\": !isValid(datum[\"center_yield\"]) || !isFinite(+datum[\"center_yield\"]) ? \"\" + datum[\"center_yield\"] : format(datum[\"center_yield\"], \"\"), \"Mean + stderr of yield\": !isValid(datum[\"upper_yield\"]) || !isFinite(+datum[\"upper_yield\"]) ? \"\" + datum[\"upper_yield\"] : format(datum[\"upper_yield\"], \"\"), \"Mean - stderr of yield\": !isValid(datum[\"lower_yield\"]) || !isFinite(+datum[\"lower_yield\"]) ? \"\" + datum[\"lower_yield\"] : format(datum[\"lower_yield\"], \"\"), \"variety\": \"\" + datum[\"variety\"]}"
},
"xc": {"scale": "x", "field": "lower_yield"},
"yc": {"scale": "y", "field": "variety", "band": 0.5},
@@ -102,7 +102,7 @@
"opacity": {"value": 0.7},
"fill": {"value": "teal"},
"tooltip": {
- "signal": "{\"Mean of yield\": format(datum[\"center_yield\"], \"\"), \"Mean + stderr of yield\": format(datum[\"upper_yield\"], \"\"), \"Mean - stderr of yield\": format(datum[\"lower_yield\"], \"\"), \"variety\": isValid(datum[\"variety\"]) ? datum[\"variety\"] : \"\"+datum[\"variety\"]}"
+ "signal": "{\"Mean of yield\": !isValid(datum[\"center_yield\"]) || !isFinite(+datum[\"center_yield\"]) ? \"\" + datum[\"center_yield\"] : format(datum[\"center_yield\"], \"\"), \"Mean + stderr of yield\": !isValid(datum[\"upper_yield\"]) || !isFinite(+datum[\"upper_yield\"]) ? \"\" + datum[\"upper_yield\"] : format(datum[\"upper_yield\"], \"\"), \"Mean - stderr of yield\": !isValid(datum[\"lower_yield\"]) || !isFinite(+datum[\"lower_yield\"]) ? \"\" + datum[\"lower_yield\"] : format(datum[\"lower_yield\"], \"\"), \"variety\": \"\" + datum[\"variety\"]}"
},
"xc": {"scale": "x", "field": "upper_yield"},
"yc": {"scale": "y", "field": "variety", "band": 0.5},
@@ -121,10 +121,10 @@
"ariaRoleDescription": {"value": "errorbar"},
"stroke": {"value": "black"},
"tooltip": {
- "signal": "{\"Mean of yield\": format(datum[\"center_yield\"], \"\"), \"Mean + stderr of yield\": format(datum[\"upper_yield\"], \"\"), \"Mean - stderr of yield\": format(datum[\"lower_yield\"], \"\"), \"variety\": isValid(datum[\"variety\"]) ? datum[\"variety\"] : \"\"+datum[\"variety\"]}"
+ "signal": "{\"Mean of yield\": !isValid(datum[\"center_yield\"]) || !isFinite(+datum[\"center_yield\"]) ? \"\" + datum[\"center_yield\"] : format(datum[\"center_yield\"], \"\"), \"Mean + stderr of yield\": !isValid(datum[\"upper_yield\"]) || !isFinite(+datum[\"upper_yield\"]) ? \"\" + datum[\"upper_yield\"] : format(datum[\"upper_yield\"], \"\"), \"Mean - stderr of yield\": !isValid(datum[\"lower_yield\"]) || !isFinite(+datum[\"lower_yield\"]) ? \"\" + datum[\"lower_yield\"] : format(datum[\"lower_yield\"], \"\"), \"variety\": \"\" + datum[\"variety\"]}"
},
"description": {
- "signal": "\"yield: \" + (format(datum[\"lower_yield\"], \"\")) + \"; variety: \" + (isValid(datum[\"variety\"]) ? datum[\"variety\"] : \"\"+datum[\"variety\"]) + \"; upper_yield: \" + (format(datum[\"upper_yield\"], \"\")) + \"; Mean of yield: \" + (format(datum[\"center_yield\"], \"\")) + \"; Mean + stderr of yield: \" + (format(datum[\"upper_yield\"], \"\")) + \"; Mean - stderr of yield: \" + (format(datum[\"lower_yield\"], \"\"))"
+ "signal": "\"yield: \" + (!isValid(datum[\"lower_yield\"]) || !isFinite(+datum[\"lower_yield\"]) ? \"\" + datum[\"lower_yield\"] : format(datum[\"lower_yield\"], \"\")) + \"; variety: \" + (\"\" + datum[\"variety\"]) + \"; upper_yield: \" + (!isValid(datum[\"upper_yield\"]) || !isFinite(+datum[\"upper_yield\"]) ? \"\" + datum[\"upper_yield\"] : format(datum[\"upper_yield\"], \"\")) + \"; Mean of yield: \" + (!isValid(datum[\"center_yield\"]) || !isFinite(+datum[\"center_yield\"]) ? \"\" + datum[\"center_yield\"] : format(datum[\"center_yield\"], \"\")) + \"; Mean + stderr of yield: \" + (!isValid(datum[\"upper_yield\"]) || !isFinite(+datum[\"upper_yield\"]) ? \"\" + datum[\"upper_yield\"] : format(datum[\"upper_yield\"], \"\")) + \"; Mean - stderr of yield: \" + (!isValid(datum[\"lower_yield\"]) || !isFinite(+datum[\"lower_yield\"]) ? \"\" + datum[\"lower_yield\"] : format(datum[\"lower_yield\"], \"\"))"
},
"x": {"scale": "x", "field": "lower_yield"},
"x2": {"scale": "x", "field": "upper_yield"},
@@ -142,7 +142,7 @@
"fill": {"value": "black"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Mean of yield: \" + (format(datum[\"mean_yield\"], \"\")) + \"; variety: \" + (isValid(datum[\"variety\"]) ? datum[\"variety\"] : \"\"+datum[\"variety\"])"
+ "signal": "\"Mean of yield: \" + (!isValid(datum[\"mean_yield\"]) || !isFinite(+datum[\"mean_yield\"]) ? \"\" + datum[\"mean_yield\"] : format(datum[\"mean_yield\"], \"\")) + \"; variety: \" + (\"\" + datum[\"variety\"])"
},
"x": {"scale": "x", "field": "mean_yield"},
"y": {"scale": "y", "field": "variety", "band": 0.5}
diff --git a/examples/compiled/layer_point_errorbar_2d_horizontal_iqr.vg.json b/examples/compiled/layer_point_errorbar_2d_horizontal_iqr.vg.json
index e7e4e26212..62a57bf185 100644
--- a/examples/compiled/layer_point_errorbar_2d_horizontal_iqr.vg.json
+++ b/examples/compiled/layer_point_errorbar_2d_horizontal_iqr.vg.json
@@ -55,10 +55,10 @@
"ariaRoleDescription": {"value": "errorbar"},
"stroke": {"value": "black"},
"tooltip": {
- "signal": "{\"Q3 of yield\": format(datum[\"upper_yield\"], \"\"), \"Q1 of yield\": format(datum[\"lower_yield\"], \"\"), \"Median of yield\": format(datum[\"center_yield\"], \"\"), \"variety\": isValid(datum[\"variety\"]) ? datum[\"variety\"] : \"\"+datum[\"variety\"]}"
+ "signal": "{\"Q3 of yield\": !isValid(datum[\"upper_yield\"]) || !isFinite(+datum[\"upper_yield\"]) ? \"\" + datum[\"upper_yield\"] : format(datum[\"upper_yield\"], \"\"), \"Q1 of yield\": !isValid(datum[\"lower_yield\"]) || !isFinite(+datum[\"lower_yield\"]) ? \"\" + datum[\"lower_yield\"] : format(datum[\"lower_yield\"], \"\"), \"Median of yield\": !isValid(datum[\"center_yield\"]) || !isFinite(+datum[\"center_yield\"]) ? \"\" + datum[\"center_yield\"] : format(datum[\"center_yield\"], \"\"), \"variety\": \"\" + datum[\"variety\"]}"
},
"description": {
- "signal": "\"yield: \" + (format(datum[\"lower_yield\"], \"\")) + \"; variety: \" + (isValid(datum[\"variety\"]) ? datum[\"variety\"] : \"\"+datum[\"variety\"]) + \"; upper_yield: \" + (format(datum[\"upper_yield\"], \"\")) + \"; Q3 of yield: \" + (format(datum[\"upper_yield\"], \"\")) + \"; Q1 of yield: \" + (format(datum[\"lower_yield\"], \"\")) + \"; Median of yield: \" + (format(datum[\"center_yield\"], \"\"))"
+ "signal": "\"yield: \" + (!isValid(datum[\"lower_yield\"]) || !isFinite(+datum[\"lower_yield\"]) ? \"\" + datum[\"lower_yield\"] : format(datum[\"lower_yield\"], \"\")) + \"; variety: \" + (\"\" + datum[\"variety\"]) + \"; upper_yield: \" + (!isValid(datum[\"upper_yield\"]) || !isFinite(+datum[\"upper_yield\"]) ? \"\" + datum[\"upper_yield\"] : format(datum[\"upper_yield\"], \"\")) + \"; Q3 of yield: \" + (!isValid(datum[\"upper_yield\"]) || !isFinite(+datum[\"upper_yield\"]) ? \"\" + datum[\"upper_yield\"] : format(datum[\"upper_yield\"], \"\")) + \"; Q1 of yield: \" + (!isValid(datum[\"lower_yield\"]) || !isFinite(+datum[\"lower_yield\"]) ? \"\" + datum[\"lower_yield\"] : format(datum[\"lower_yield\"], \"\")) + \"; Median of yield: \" + (!isValid(datum[\"center_yield\"]) || !isFinite(+datum[\"center_yield\"]) ? \"\" + datum[\"center_yield\"] : format(datum[\"center_yield\"], \"\"))"
},
"x": {"scale": "x", "field": "lower_yield"},
"x2": {"scale": "x", "field": "upper_yield"},
@@ -76,7 +76,7 @@
"fill": {"value": "black"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Median of yield: \" + (format(datum[\"median_yield\"], \"\")) + \"; variety: \" + (isValid(datum[\"variety\"]) ? datum[\"variety\"] : \"\"+datum[\"variety\"])"
+ "signal": "\"Median of yield: \" + (!isValid(datum[\"median_yield\"]) || !isFinite(+datum[\"median_yield\"]) ? \"\" + datum[\"median_yield\"] : format(datum[\"median_yield\"], \"\")) + \"; variety: \" + (\"\" + datum[\"variety\"])"
},
"x": {"scale": "x", "field": "median_yield"},
"y": {"scale": "y", "field": "variety", "band": 0.5}
diff --git a/examples/compiled/layer_point_errorbar_2d_horizontal_stdev.vg.json b/examples/compiled/layer_point_errorbar_2d_horizontal_stdev.vg.json
index 76ec714e4b..9895afca21 100644
--- a/examples/compiled/layer_point_errorbar_2d_horizontal_stdev.vg.json
+++ b/examples/compiled/layer_point_errorbar_2d_horizontal_stdev.vg.json
@@ -65,10 +65,10 @@
"ariaRoleDescription": {"value": "errorbar"},
"stroke": {"value": "black"},
"tooltip": {
- "signal": "{\"Mean of yield\": format(datum[\"center_yield\"], \"\"), \"Mean + stdev of yield\": format(datum[\"upper_yield\"], \"\"), \"Mean - stdev of yield\": format(datum[\"lower_yield\"], \"\"), \"variety\": isValid(datum[\"variety\"]) ? datum[\"variety\"] : \"\"+datum[\"variety\"]}"
+ "signal": "{\"Mean of yield\": !isValid(datum[\"center_yield\"]) || !isFinite(+datum[\"center_yield\"]) ? \"\" + datum[\"center_yield\"] : format(datum[\"center_yield\"], \"\"), \"Mean + stdev of yield\": !isValid(datum[\"upper_yield\"]) || !isFinite(+datum[\"upper_yield\"]) ? \"\" + datum[\"upper_yield\"] : format(datum[\"upper_yield\"], \"\"), \"Mean - stdev of yield\": !isValid(datum[\"lower_yield\"]) || !isFinite(+datum[\"lower_yield\"]) ? \"\" + datum[\"lower_yield\"] : format(datum[\"lower_yield\"], \"\"), \"variety\": \"\" + datum[\"variety\"]}"
},
"description": {
- "signal": "\"yield: \" + (format(datum[\"lower_yield\"], \"\")) + \"; variety: \" + (isValid(datum[\"variety\"]) ? datum[\"variety\"] : \"\"+datum[\"variety\"]) + \"; upper_yield: \" + (format(datum[\"upper_yield\"], \"\")) + \"; Mean of yield: \" + (format(datum[\"center_yield\"], \"\")) + \"; Mean + stdev of yield: \" + (format(datum[\"upper_yield\"], \"\")) + \"; Mean - stdev of yield: \" + (format(datum[\"lower_yield\"], \"\"))"
+ "signal": "\"yield: \" + (!isValid(datum[\"lower_yield\"]) || !isFinite(+datum[\"lower_yield\"]) ? \"\" + datum[\"lower_yield\"] : format(datum[\"lower_yield\"], \"\")) + \"; variety: \" + (\"\" + datum[\"variety\"]) + \"; upper_yield: \" + (!isValid(datum[\"upper_yield\"]) || !isFinite(+datum[\"upper_yield\"]) ? \"\" + datum[\"upper_yield\"] : format(datum[\"upper_yield\"], \"\")) + \"; Mean of yield: \" + (!isValid(datum[\"center_yield\"]) || !isFinite(+datum[\"center_yield\"]) ? \"\" + datum[\"center_yield\"] : format(datum[\"center_yield\"], \"\")) + \"; Mean + stdev of yield: \" + (!isValid(datum[\"upper_yield\"]) || !isFinite(+datum[\"upper_yield\"]) ? \"\" + datum[\"upper_yield\"] : format(datum[\"upper_yield\"], \"\")) + \"; Mean - stdev of yield: \" + (!isValid(datum[\"lower_yield\"]) || !isFinite(+datum[\"lower_yield\"]) ? \"\" + datum[\"lower_yield\"] : format(datum[\"lower_yield\"], \"\"))"
},
"x": {"scale": "x", "field": "lower_yield"},
"x2": {"scale": "x", "field": "upper_yield"},
@@ -86,7 +86,7 @@
"fill": {"value": "black"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Mean of yield: \" + (format(datum[\"mean_yield\"], \"\")) + \"; variety: \" + (isValid(datum[\"variety\"]) ? datum[\"variety\"] : \"\"+datum[\"variety\"])"
+ "signal": "\"Mean of yield: \" + (!isValid(datum[\"mean_yield\"]) || !isFinite(+datum[\"mean_yield\"]) ? \"\" + datum[\"mean_yield\"] : format(datum[\"mean_yield\"], \"\")) + \"; variety: \" + (\"\" + datum[\"variety\"])"
},
"x": {"scale": "x", "field": "mean_yield"},
"y": {"scale": "y", "field": "variety", "band": 0.5}
diff --git a/examples/compiled/layer_point_errorbar_2d_vertical.vg.json b/examples/compiled/layer_point_errorbar_2d_vertical.vg.json
index 40ebf0cb7b..126f4d8275 100644
--- a/examples/compiled/layer_point_errorbar_2d_vertical.vg.json
+++ b/examples/compiled/layer_point_errorbar_2d_vertical.vg.json
@@ -65,10 +65,10 @@
"ariaRoleDescription": {"value": "errorbar"},
"stroke": {"value": "black"},
"tooltip": {
- "signal": "{\"Mean of yield\": format(datum[\"center_yield\"], \"\"), \"Mean + stderr of yield\": format(datum[\"upper_yield\"], \"\"), \"Mean - stderr of yield\": format(datum[\"lower_yield\"], \"\"), \"variety\": isValid(datum[\"variety\"]) ? datum[\"variety\"] : \"\"+datum[\"variety\"]}"
+ "signal": "{\"Mean of yield\": !isValid(datum[\"center_yield\"]) || !isFinite(+datum[\"center_yield\"]) ? \"\" + datum[\"center_yield\"] : format(datum[\"center_yield\"], \"\"), \"Mean + stderr of yield\": !isValid(datum[\"upper_yield\"]) || !isFinite(+datum[\"upper_yield\"]) ? \"\" + datum[\"upper_yield\"] : format(datum[\"upper_yield\"], \"\"), \"Mean - stderr of yield\": !isValid(datum[\"lower_yield\"]) || !isFinite(+datum[\"lower_yield\"]) ? \"\" + datum[\"lower_yield\"] : format(datum[\"lower_yield\"], \"\"), \"variety\": \"\" + datum[\"variety\"]}"
},
"description": {
- "signal": "\"variety: \" + (isValid(datum[\"variety\"]) ? datum[\"variety\"] : \"\"+datum[\"variety\"]) + \"; yield: \" + (format(datum[\"lower_yield\"], \"\")) + \"; upper_yield: \" + (format(datum[\"upper_yield\"], \"\")) + \"; Mean of yield: \" + (format(datum[\"center_yield\"], \"\")) + \"; Mean + stderr of yield: \" + (format(datum[\"upper_yield\"], \"\")) + \"; Mean - stderr of yield: \" + (format(datum[\"lower_yield\"], \"\"))"
+ "signal": "\"variety: \" + (\"\" + datum[\"variety\"]) + \"; yield: \" + (!isValid(datum[\"lower_yield\"]) || !isFinite(+datum[\"lower_yield\"]) ? \"\" + datum[\"lower_yield\"] : format(datum[\"lower_yield\"], \"\")) + \"; upper_yield: \" + (!isValid(datum[\"upper_yield\"]) || !isFinite(+datum[\"upper_yield\"]) ? \"\" + datum[\"upper_yield\"] : format(datum[\"upper_yield\"], \"\")) + \"; Mean of yield: \" + (!isValid(datum[\"center_yield\"]) || !isFinite(+datum[\"center_yield\"]) ? \"\" + datum[\"center_yield\"] : format(datum[\"center_yield\"], \"\")) + \"; Mean + stderr of yield: \" + (!isValid(datum[\"upper_yield\"]) || !isFinite(+datum[\"upper_yield\"]) ? \"\" + datum[\"upper_yield\"] : format(datum[\"upper_yield\"], \"\")) + \"; Mean - stderr of yield: \" + (!isValid(datum[\"lower_yield\"]) || !isFinite(+datum[\"lower_yield\"]) ? \"\" + datum[\"lower_yield\"] : format(datum[\"lower_yield\"], \"\"))"
},
"x": {"scale": "x", "field": "variety", "band": 0.5},
"y": {"scale": "y", "field": "lower_yield"},
@@ -86,7 +86,7 @@
"fill": {"value": "black"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"variety: \" + (isValid(datum[\"variety\"]) ? datum[\"variety\"] : \"\"+datum[\"variety\"]) + \"; Mean of yield: \" + (format(datum[\"mean_yield\"], \"\"))"
+ "signal": "\"variety: \" + (\"\" + datum[\"variety\"]) + \"; Mean of yield: \" + (!isValid(datum[\"mean_yield\"]) || !isFinite(+datum[\"mean_yield\"]) ? \"\" + datum[\"mean_yield\"] : format(datum[\"mean_yield\"], \"\"))"
},
"x": {"scale": "x", "field": "variety", "band": 0.5},
"y": {"scale": "y", "field": "mean_yield"}
diff --git a/examples/compiled/layer_point_errorbar_ci.vg.json b/examples/compiled/layer_point_errorbar_ci.vg.json
index b315247154..46a715af4a 100644
--- a/examples/compiled/layer_point_errorbar_ci.vg.json
+++ b/examples/compiled/layer_point_errorbar_ci.vg.json
@@ -55,7 +55,7 @@
"fill": {"value": "black"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Barley Yield: \" + (format(datum[\"mean_yield\"], \"\")) + \"; variety: \" + (isValid(datum[\"variety\"]) ? datum[\"variety\"] : \"\"+datum[\"variety\"])"
+ "signal": "\"Barley Yield: \" + (!isValid(datum[\"mean_yield\"]) || !isFinite(+datum[\"mean_yield\"]) ? \"\" + datum[\"mean_yield\"] : format(datum[\"mean_yield\"], \"\")) + \"; variety: \" + (\"\" + datum[\"variety\"])"
},
"x": {"scale": "x", "field": "mean_yield"},
"y": {"scale": "y", "field": "variety", "band": 0.5}
@@ -72,10 +72,10 @@
"ariaRoleDescription": {"value": "errorbar"},
"stroke": {"value": "black"},
"tooltip": {
- "signal": "{\"Ci1 of yield\": format(datum[\"upper_yield\"], \"\"), \"Ci0 of yield\": format(datum[\"lower_yield\"], \"\"), \"Mean of yield\": format(datum[\"center_yield\"], \"\"), \"variety\": isValid(datum[\"variety\"]) ? datum[\"variety\"] : \"\"+datum[\"variety\"]}"
+ "signal": "{\"Ci1 of yield\": !isValid(datum[\"upper_yield\"]) || !isFinite(+datum[\"upper_yield\"]) ? \"\" + datum[\"upper_yield\"] : format(datum[\"upper_yield\"], \"\"), \"Ci0 of yield\": !isValid(datum[\"lower_yield\"]) || !isFinite(+datum[\"lower_yield\"]) ? \"\" + datum[\"lower_yield\"] : format(datum[\"lower_yield\"], \"\"), \"Mean of yield\": !isValid(datum[\"center_yield\"]) || !isFinite(+datum[\"center_yield\"]) ? \"\" + datum[\"center_yield\"] : format(datum[\"center_yield\"], \"\"), \"variety\": \"\" + datum[\"variety\"]}"
},
"description": {
- "signal": "\"Barley Yield: \" + (format(datum[\"lower_yield\"], \"\")) + \"; variety: \" + (isValid(datum[\"variety\"]) ? datum[\"variety\"] : \"\"+datum[\"variety\"]) + \"; upper_yield: \" + (format(datum[\"upper_yield\"], \"\")) + \"; Ci1 of yield: \" + (format(datum[\"upper_yield\"], \"\")) + \"; Ci0 of yield: \" + (format(datum[\"lower_yield\"], \"\")) + \"; Mean of yield: \" + (format(datum[\"center_yield\"], \"\"))"
+ "signal": "\"Barley Yield: \" + (!isValid(datum[\"lower_yield\"]) || !isFinite(+datum[\"lower_yield\"]) ? \"\" + datum[\"lower_yield\"] : format(datum[\"lower_yield\"], \"\")) + \"; variety: \" + (\"\" + datum[\"variety\"]) + \"; upper_yield: \" + (!isValid(datum[\"upper_yield\"]) || !isFinite(+datum[\"upper_yield\"]) ? \"\" + datum[\"upper_yield\"] : format(datum[\"upper_yield\"], \"\")) + \"; Ci1 of yield: \" + (!isValid(datum[\"upper_yield\"]) || !isFinite(+datum[\"upper_yield\"]) ? \"\" + datum[\"upper_yield\"] : format(datum[\"upper_yield\"], \"\")) + \"; Ci0 of yield: \" + (!isValid(datum[\"lower_yield\"]) || !isFinite(+datum[\"lower_yield\"]) ? \"\" + datum[\"lower_yield\"] : format(datum[\"lower_yield\"], \"\")) + \"; Mean of yield: \" + (!isValid(datum[\"center_yield\"]) || !isFinite(+datum[\"center_yield\"]) ? \"\" + datum[\"center_yield\"] : format(datum[\"center_yield\"], \"\"))"
},
"x": {"scale": "x", "field": "lower_yield"},
"x2": {"scale": "x", "field": "upper_yield"},
diff --git a/examples/compiled/layer_point_errorbar_pre_aggregated_asymmetric_error.vg.json b/examples/compiled/layer_point_errorbar_pre_aggregated_asymmetric_error.vg.json
index c4920cf063..388d213f70 100644
--- a/examples/compiled/layer_point_errorbar_pre_aggregated_asymmetric_error.vg.json
+++ b/examples/compiled/layer_point_errorbar_pre_aggregated_asymmetric_error.vg.json
@@ -80,10 +80,10 @@
"ariaRoleDescription": {"value": "errorbar"},
"stroke": {"value": "black"},
"tooltip": {
- "signal": "{\"yield_center\": format(datum[\"yield_center\"], \"\"), \"yield_center + yield_error\": format(datum[\"upper_yield_center\"], \"\"), \"yield_center + yield_error2\": format(datum[\"lower_yield_center\"], \"\"), \"variety\": isValid(datum[\"variety\"]) ? datum[\"variety\"] : \"\"+datum[\"variety\"]}"
+ "signal": "{\"yield_center\": !isValid(datum[\"yield_center\"]) || !isFinite(+datum[\"yield_center\"]) ? \"\" + datum[\"yield_center\"] : format(datum[\"yield_center\"], \"\"), \"yield_center + yield_error\": !isValid(datum[\"upper_yield_center\"]) || !isFinite(+datum[\"upper_yield_center\"]) ? \"\" + datum[\"upper_yield_center\"] : format(datum[\"upper_yield_center\"], \"\"), \"yield_center + yield_error2\": !isValid(datum[\"lower_yield_center\"]) || !isFinite(+datum[\"lower_yield_center\"]) ? \"\" + datum[\"lower_yield_center\"] : format(datum[\"lower_yield_center\"], \"\"), \"variety\": \"\" + datum[\"variety\"]}"
},
"description": {
- "signal": "\"yield: \" + (format(datum[\"lower_yield_center\"], \"\")) + \"; variety: \" + (isValid(datum[\"variety\"]) ? datum[\"variety\"] : \"\"+datum[\"variety\"]) + \"; upper_yield_center: \" + (format(datum[\"upper_yield_center\"], \"\")) + \"; yield_center: \" + (format(datum[\"yield_center\"], \"\")) + \"; yield_center + yield_error: \" + (format(datum[\"upper_yield_center\"], \"\")) + \"; yield_center + yield_error2: \" + (format(datum[\"lower_yield_center\"], \"\"))"
+ "signal": "\"yield: \" + (!isValid(datum[\"lower_yield_center\"]) || !isFinite(+datum[\"lower_yield_center\"]) ? \"\" + datum[\"lower_yield_center\"] : format(datum[\"lower_yield_center\"], \"\")) + \"; variety: \" + (\"\" + datum[\"variety\"]) + \"; upper_yield_center: \" + (!isValid(datum[\"upper_yield_center\"]) || !isFinite(+datum[\"upper_yield_center\"]) ? \"\" + datum[\"upper_yield_center\"] : format(datum[\"upper_yield_center\"], \"\")) + \"; yield_center: \" + (!isValid(datum[\"yield_center\"]) || !isFinite(+datum[\"yield_center\"]) ? \"\" + datum[\"yield_center\"] : format(datum[\"yield_center\"], \"\")) + \"; yield_center + yield_error: \" + (!isValid(datum[\"upper_yield_center\"]) || !isFinite(+datum[\"upper_yield_center\"]) ? \"\" + datum[\"upper_yield_center\"] : format(datum[\"upper_yield_center\"], \"\")) + \"; yield_center + yield_error2: \" + (!isValid(datum[\"lower_yield_center\"]) || !isFinite(+datum[\"lower_yield_center\"]) ? \"\" + datum[\"lower_yield_center\"] : format(datum[\"lower_yield_center\"], \"\"))"
},
"x": {"scale": "x", "field": "lower_yield_center"},
"x2": {"scale": "x", "field": "upper_yield_center"},
@@ -102,7 +102,7 @@
"fill": {"value": "black"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"yield_center: \" + (format(datum[\"yield_center\"], \"\")) + \"; variety: \" + (isValid(datum[\"variety\"]) ? datum[\"variety\"] : \"\"+datum[\"variety\"])"
+ "signal": "\"yield_center: \" + (!isValid(datum[\"yield_center\"]) || !isFinite(+datum[\"yield_center\"]) ? \"\" + datum[\"yield_center\"] : format(datum[\"yield_center\"], \"\")) + \"; variety: \" + (\"\" + datum[\"variety\"])"
},
"x": {"scale": "x", "field": "yield_center"},
"y": {"scale": "y", "field": "variety", "band": 0.5}
diff --git a/examples/compiled/layer_point_errorbar_pre_aggregated_symmetric_error.vg.json b/examples/compiled/layer_point_errorbar_pre_aggregated_symmetric_error.vg.json
index 05fc1ffb53..73fba47952 100644
--- a/examples/compiled/layer_point_errorbar_pre_aggregated_symmetric_error.vg.json
+++ b/examples/compiled/layer_point_errorbar_pre_aggregated_symmetric_error.vg.json
@@ -68,10 +68,10 @@
"ariaRoleDescription": {"value": "errorbar"},
"stroke": {"value": "black"},
"tooltip": {
- "signal": "{\"yield_center\": format(datum[\"yield_center\"], \"\"), \"yield_center + yield_error\": format(datum[\"upper_yield_center\"], \"\"), \"yield_center - yield_error\": format(datum[\"lower_yield_center\"], \"\"), \"variety\": isValid(datum[\"variety\"]) ? datum[\"variety\"] : \"\"+datum[\"variety\"]}"
+ "signal": "{\"yield_center\": !isValid(datum[\"yield_center\"]) || !isFinite(+datum[\"yield_center\"]) ? \"\" + datum[\"yield_center\"] : format(datum[\"yield_center\"], \"\"), \"yield_center + yield_error\": !isValid(datum[\"upper_yield_center\"]) || !isFinite(+datum[\"upper_yield_center\"]) ? \"\" + datum[\"upper_yield_center\"] : format(datum[\"upper_yield_center\"], \"\"), \"yield_center - yield_error\": !isValid(datum[\"lower_yield_center\"]) || !isFinite(+datum[\"lower_yield_center\"]) ? \"\" + datum[\"lower_yield_center\"] : format(datum[\"lower_yield_center\"], \"\"), \"variety\": \"\" + datum[\"variety\"]}"
},
"description": {
- "signal": "\"yield: \" + (format(datum[\"lower_yield_center\"], \"\")) + \"; variety: \" + (isValid(datum[\"variety\"]) ? datum[\"variety\"] : \"\"+datum[\"variety\"]) + \"; upper_yield_center: \" + (format(datum[\"upper_yield_center\"], \"\")) + \"; yield_center: \" + (format(datum[\"yield_center\"], \"\")) + \"; yield_center + yield_error: \" + (format(datum[\"upper_yield_center\"], \"\")) + \"; yield_center - yield_error: \" + (format(datum[\"lower_yield_center\"], \"\"))"
+ "signal": "\"yield: \" + (!isValid(datum[\"lower_yield_center\"]) || !isFinite(+datum[\"lower_yield_center\"]) ? \"\" + datum[\"lower_yield_center\"] : format(datum[\"lower_yield_center\"], \"\")) + \"; variety: \" + (\"\" + datum[\"variety\"]) + \"; upper_yield_center: \" + (!isValid(datum[\"upper_yield_center\"]) || !isFinite(+datum[\"upper_yield_center\"]) ? \"\" + datum[\"upper_yield_center\"] : format(datum[\"upper_yield_center\"], \"\")) + \"; yield_center: \" + (!isValid(datum[\"yield_center\"]) || !isFinite(+datum[\"yield_center\"]) ? \"\" + datum[\"yield_center\"] : format(datum[\"yield_center\"], \"\")) + \"; yield_center + yield_error: \" + (!isValid(datum[\"upper_yield_center\"]) || !isFinite(+datum[\"upper_yield_center\"]) ? \"\" + datum[\"upper_yield_center\"] : format(datum[\"upper_yield_center\"], \"\")) + \"; yield_center - yield_error: \" + (!isValid(datum[\"lower_yield_center\"]) || !isFinite(+datum[\"lower_yield_center\"]) ? \"\" + datum[\"lower_yield_center\"] : format(datum[\"lower_yield_center\"], \"\"))"
},
"x": {"scale": "x", "field": "lower_yield_center"},
"x2": {"scale": "x", "field": "upper_yield_center"},
@@ -90,7 +90,7 @@
"fill": {"value": "black"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"yield_center: \" + (format(datum[\"yield_center\"], \"\")) + \"; variety: \" + (isValid(datum[\"variety\"]) ? datum[\"variety\"] : \"\"+datum[\"variety\"])"
+ "signal": "\"yield_center: \" + (!isValid(datum[\"yield_center\"]) || !isFinite(+datum[\"yield_center\"]) ? \"\" + datum[\"yield_center\"] : format(datum[\"yield_center\"], \"\")) + \"; variety: \" + (\"\" + datum[\"variety\"])"
},
"x": {"scale": "x", "field": "yield_center"},
"y": {"scale": "y", "field": "variety", "band": 0.5}
diff --git a/examples/compiled/layer_point_errorbar_pre_aggregated_upper_lower.vg.json b/examples/compiled/layer_point_errorbar_pre_aggregated_upper_lower.vg.json
index 7ee0833181..93bbecae38 100644
--- a/examples/compiled/layer_point_errorbar_pre_aggregated_upper_lower.vg.json
+++ b/examples/compiled/layer_point_errorbar_pre_aggregated_upper_lower.vg.json
@@ -80,10 +80,10 @@
"ariaRoleDescription": {"value": "errorbar"},
"stroke": {"value": "black"},
"tooltip": {
- "signal": "{\"lower_yield\": format(datum[\"upper_upper_yield\"], \"\"), \"upper_yield\": format(datum[\"lower_upper_yield\"], \"\"), \"variety\": isValid(datum[\"variety\"]) ? datum[\"variety\"] : \"\"+datum[\"variety\"]}"
+ "signal": "{\"lower_yield\": !isValid(datum[\"upper_upper_yield\"]) || !isFinite(+datum[\"upper_upper_yield\"]) ? \"\" + datum[\"upper_upper_yield\"] : format(datum[\"upper_upper_yield\"], \"\"), \"upper_yield\": !isValid(datum[\"lower_upper_yield\"]) || !isFinite(+datum[\"lower_upper_yield\"]) ? \"\" + datum[\"lower_upper_yield\"] : format(datum[\"lower_upper_yield\"], \"\"), \"variety\": \"\" + datum[\"variety\"]}"
},
"description": {
- "signal": "\"yield: \" + (format(datum[\"lower_upper_yield\"], \"\")) + \"; variety: \" + (isValid(datum[\"variety\"]) ? datum[\"variety\"] : \"\"+datum[\"variety\"]) + \"; upper_upper_yield: \" + (format(datum[\"upper_upper_yield\"], \"\")) + \"; lower_yield: \" + (format(datum[\"upper_upper_yield\"], \"\")) + \"; upper_yield: \" + (format(datum[\"lower_upper_yield\"], \"\"))"
+ "signal": "\"yield: \" + (!isValid(datum[\"lower_upper_yield\"]) || !isFinite(+datum[\"lower_upper_yield\"]) ? \"\" + datum[\"lower_upper_yield\"] : format(datum[\"lower_upper_yield\"], \"\")) + \"; variety: \" + (\"\" + datum[\"variety\"]) + \"; upper_upper_yield: \" + (!isValid(datum[\"upper_upper_yield\"]) || !isFinite(+datum[\"upper_upper_yield\"]) ? \"\" + datum[\"upper_upper_yield\"] : format(datum[\"upper_upper_yield\"], \"\")) + \"; lower_yield: \" + (!isValid(datum[\"upper_upper_yield\"]) || !isFinite(+datum[\"upper_upper_yield\"]) ? \"\" + datum[\"upper_upper_yield\"] : format(datum[\"upper_upper_yield\"], \"\")) + \"; upper_yield: \" + (!isValid(datum[\"lower_upper_yield\"]) || !isFinite(+datum[\"lower_upper_yield\"]) ? \"\" + datum[\"lower_upper_yield\"] : format(datum[\"lower_upper_yield\"], \"\"))"
},
"x": {"scale": "x", "field": "lower_upper_yield"},
"x2": {"scale": "x", "field": "upper_upper_yield"},
@@ -102,7 +102,7 @@
"fill": {"value": "black"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"center: \" + (format(datum[\"center\"], \"\")) + \"; variety: \" + (isValid(datum[\"variety\"]) ? datum[\"variety\"] : \"\"+datum[\"variety\"])"
+ "signal": "\"center: \" + (!isValid(datum[\"center\"]) || !isFinite(+datum[\"center\"]) ? \"\" + datum[\"center\"] : format(datum[\"center\"], \"\")) + \"; variety: \" + (\"\" + datum[\"variety\"])"
},
"x": {"scale": "x", "field": "center"},
"y": {"scale": "y", "field": "variety", "band": 0.5}
diff --git a/examples/compiled/layer_point_errorbar_stdev.vg.json b/examples/compiled/layer_point_errorbar_stdev.vg.json
index a94650dfa7..fb1b56b7a1 100644
--- a/examples/compiled/layer_point_errorbar_stdev.vg.json
+++ b/examples/compiled/layer_point_errorbar_stdev.vg.json
@@ -65,7 +65,7 @@
"fill": {"value": "black"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Barley Yield: \" + (format(datum[\"mean_yield\"], \"\")) + \"; variety: \" + (isValid(datum[\"variety\"]) ? datum[\"variety\"] : \"\"+datum[\"variety\"])"
+ "signal": "\"Barley Yield: \" + (!isValid(datum[\"mean_yield\"]) || !isFinite(+datum[\"mean_yield\"]) ? \"\" + datum[\"mean_yield\"] : format(datum[\"mean_yield\"], \"\")) + \"; variety: \" + (\"\" + datum[\"variety\"])"
},
"x": {"scale": "x", "field": "mean_yield"},
"y": {"scale": "y", "field": "variety", "band": 0.5}
@@ -82,10 +82,10 @@
"ariaRoleDescription": {"value": "errorbar"},
"stroke": {"value": "black"},
"tooltip": {
- "signal": "{\"Mean of Barley Yield\": format(datum[\"center_yield\"], \"\"), \"Mean + stdev of Barley Yield\": format(datum[\"upper_yield\"], \"\"), \"Mean - stdev of Barley Yield\": format(datum[\"lower_yield\"], \"\"), \"variety\": isValid(datum[\"variety\"]) ? datum[\"variety\"] : \"\"+datum[\"variety\"]}"
+ "signal": "{\"Mean of Barley Yield\": !isValid(datum[\"center_yield\"]) || !isFinite(+datum[\"center_yield\"]) ? \"\" + datum[\"center_yield\"] : format(datum[\"center_yield\"], \"\"), \"Mean + stdev of Barley Yield\": !isValid(datum[\"upper_yield\"]) || !isFinite(+datum[\"upper_yield\"]) ? \"\" + datum[\"upper_yield\"] : format(datum[\"upper_yield\"], \"\"), \"Mean - stdev of Barley Yield\": !isValid(datum[\"lower_yield\"]) || !isFinite(+datum[\"lower_yield\"]) ? \"\" + datum[\"lower_yield\"] : format(datum[\"lower_yield\"], \"\"), \"variety\": \"\" + datum[\"variety\"]}"
},
"description": {
- "signal": "\"Barley Yield: \" + (format(datum[\"lower_yield\"], \"\")) + \"; variety: \" + (isValid(datum[\"variety\"]) ? datum[\"variety\"] : \"\"+datum[\"variety\"]) + \"; upper_yield: \" + (format(datum[\"upper_yield\"], \"\")) + \"; Mean of Barley Yield: \" + (format(datum[\"center_yield\"], \"\")) + \"; Mean + stdev of Barley Yield: \" + (format(datum[\"upper_yield\"], \"\")) + \"; Mean - stdev of Barley Yield: \" + (format(datum[\"lower_yield\"], \"\"))"
+ "signal": "\"Barley Yield: \" + (!isValid(datum[\"lower_yield\"]) || !isFinite(+datum[\"lower_yield\"]) ? \"\" + datum[\"lower_yield\"] : format(datum[\"lower_yield\"], \"\")) + \"; variety: \" + (\"\" + datum[\"variety\"]) + \"; upper_yield: \" + (!isValid(datum[\"upper_yield\"]) || !isFinite(+datum[\"upper_yield\"]) ? \"\" + datum[\"upper_yield\"] : format(datum[\"upper_yield\"], \"\")) + \"; Mean of Barley Yield: \" + (!isValid(datum[\"center_yield\"]) || !isFinite(+datum[\"center_yield\"]) ? \"\" + datum[\"center_yield\"] : format(datum[\"center_yield\"], \"\")) + \"; Mean + stdev of Barley Yield: \" + (!isValid(datum[\"upper_yield\"]) || !isFinite(+datum[\"upper_yield\"]) ? \"\" + datum[\"upper_yield\"] : format(datum[\"upper_yield\"], \"\")) + \"; Mean - stdev of Barley Yield: \" + (!isValid(datum[\"lower_yield\"]) || !isFinite(+datum[\"lower_yield\"]) ? \"\" + datum[\"lower_yield\"] : format(datum[\"lower_yield\"], \"\"))"
},
"x": {"scale": "x", "field": "lower_yield"},
"x2": {"scale": "x", "field": "upper_yield"},
diff --git a/examples/compiled/layer_point_line_loess.vg.json b/examples/compiled/layer_point_line_loess.vg.json
index df7e23bf0c..e5edb34679 100644
--- a/examples/compiled/layer_point_line_loess.vg.json
+++ b/examples/compiled/layer_point_line_loess.vg.json
@@ -42,7 +42,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Rotten Tomatoes Rating: \" + (format(datum[\"Rotten Tomatoes Rating\"], \"\")) + \"; IMDB Rating: \" + (format(datum[\"IMDB Rating\"], \"\"))"
+ "signal": "\"Rotten Tomatoes Rating: \" + (!isValid(datum[\"Rotten Tomatoes Rating\"]) || !isFinite(+datum[\"Rotten Tomatoes Rating\"]) ? \"\" + datum[\"Rotten Tomatoes Rating\"] : format(datum[\"Rotten Tomatoes Rating\"], \"\")) + \"; IMDB Rating: \" + (!isValid(datum[\"IMDB Rating\"]) || !isFinite(+datum[\"IMDB Rating\"]) ? \"\" + datum[\"IMDB Rating\"] : format(datum[\"IMDB Rating\"], \"\"))"
},
"x": {"scale": "x", "field": "Rotten Tomatoes Rating"},
"y": {"scale": "y", "field": "IMDB Rating"}
@@ -59,7 +59,7 @@
"update": {
"stroke": {"value": "firebrick"},
"description": {
- "signal": "\"Rotten Tomatoes Rating: \" + (format(datum[\"Rotten Tomatoes Rating\"], \"\")) + \"; IMDB Rating: \" + (format(datum[\"IMDB Rating\"], \"\"))"
+ "signal": "\"Rotten Tomatoes Rating: \" + (!isValid(datum[\"Rotten Tomatoes Rating\"]) || !isFinite(+datum[\"Rotten Tomatoes Rating\"]) ? \"\" + datum[\"Rotten Tomatoes Rating\"] : format(datum[\"Rotten Tomatoes Rating\"], \"\")) + \"; IMDB Rating: \" + (!isValid(datum[\"IMDB Rating\"]) || !isFinite(+datum[\"IMDB Rating\"]) ? \"\" + datum[\"IMDB Rating\"] : format(datum[\"IMDB Rating\"], \"\"))"
},
"x": {"scale": "x", "field": "Rotten Tomatoes Rating"},
"y": {"scale": "y", "field": "IMDB Rating"},
diff --git a/examples/compiled/layer_point_line_regression.vg.json b/examples/compiled/layer_point_line_regression.vg.json
index f72a5174f7..f4d63e90af 100644
--- a/examples/compiled/layer_point_line_regression.vg.json
+++ b/examples/compiled/layer_point_line_regression.vg.json
@@ -60,7 +60,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Rotten Tomatoes Rating: \" + (format(datum[\"Rotten Tomatoes Rating\"], \"\")) + \"; IMDB Rating: \" + (format(datum[\"IMDB Rating\"], \"\"))"
+ "signal": "\"Rotten Tomatoes Rating: \" + (!isValid(datum[\"Rotten Tomatoes Rating\"]) || !isFinite(+datum[\"Rotten Tomatoes Rating\"]) ? \"\" + datum[\"Rotten Tomatoes Rating\"] : format(datum[\"Rotten Tomatoes Rating\"], \"\")) + \"; IMDB Rating: \" + (!isValid(datum[\"IMDB Rating\"]) || !isFinite(+datum[\"IMDB Rating\"]) ? \"\" + datum[\"IMDB Rating\"] : format(datum[\"IMDB Rating\"], \"\"))"
},
"x": {"scale": "x", "field": "Rotten Tomatoes Rating"},
"y": {"scale": "y", "field": "IMDB Rating"}
@@ -77,7 +77,7 @@
"update": {
"stroke": {"value": "firebrick"},
"description": {
- "signal": "\"Rotten Tomatoes Rating: \" + (format(datum[\"Rotten Tomatoes Rating\"], \"\")) + \"; IMDB Rating: \" + (format(datum[\"IMDB Rating\"], \"\"))"
+ "signal": "\"Rotten Tomatoes Rating: \" + (!isValid(datum[\"Rotten Tomatoes Rating\"]) || !isFinite(+datum[\"Rotten Tomatoes Rating\"]) ? \"\" + datum[\"Rotten Tomatoes Rating\"] : format(datum[\"Rotten Tomatoes Rating\"], \"\")) + \"; IMDB Rating: \" + (!isValid(datum[\"IMDB Rating\"]) || !isFinite(+datum[\"IMDB Rating\"]) ? \"\" + datum[\"IMDB Rating\"] : format(datum[\"IMDB Rating\"], \"\"))"
},
"x": {"scale": "x", "field": "Rotten Tomatoes Rating"},
"y": {"scale": "y", "field": "IMDB Rating"},
@@ -96,14 +96,10 @@
"update": {
"align": {"value": "right"},
"fill": {"value": "firebrick"},
- "description": {
- "signal": "\"R2: \" + (isValid(datum[\"R2\"]) ? datum[\"R2\"] : \"\"+datum[\"R2\"])"
- },
+ "description": {"signal": "\"R2: \" + (\"\" + datum[\"R2\"])"},
"x": {"field": {"group": "width"}},
"y": {"value": -5},
- "text": {
- "signal": "isValid(datum[\"R2\"]) ? datum[\"R2\"] : \"\"+datum[\"R2\"]"
- },
+ "text": {"signal": "\"\" + datum[\"R2\"]"},
"baseline": {"value": "middle"}
}
}
diff --git a/examples/compiled/layer_precipitation_mean.vg.json b/examples/compiled/layer_precipitation_mean.vg.json
index 6d2e5e4be2..7c2ed3c819 100644
--- a/examples/compiled/layer_precipitation_mean.vg.json
+++ b/examples/compiled/layer_precipitation_mean.vg.json
@@ -69,7 +69,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"date (month): \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of precipitation: \" + (format(datum[\"mean_precipitation\"], \"\"))"
+ "signal": "\"date (month): \" + (!isValid(datum[\"month_date\"]) || !isFinite(+datum[\"month_date\"]) ? \"\" + datum[\"month_date\"] : timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of precipitation: \" + (!isValid(datum[\"mean_precipitation\"]) || !isFinite(+datum[\"mean_precipitation\"]) ? \"\" + datum[\"mean_precipitation\"] : format(datum[\"mean_precipitation\"], \"\"))"
},
"x": {"scale": "x", "field": "month_date"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
@@ -87,7 +87,7 @@
"update": {
"stroke": {"value": "red"},
"description": {
- "signal": "\"Mean of precipitation: \" + (format(datum[\"mean_precipitation\"], \"\"))"
+ "signal": "\"Mean of precipitation: \" + (!isValid(datum[\"mean_precipitation\"]) || !isFinite(+datum[\"mean_precipitation\"]) ? \"\" + datum[\"mean_precipitation\"] : format(datum[\"mean_precipitation\"], \"\"))"
},
"x": {"field": {"group": "width"}},
"x2": {"value": 0},
diff --git a/examples/compiled/layer_ranged_dot.vg.json b/examples/compiled/layer_ranged_dot.vg.json
index 8f92d2cf7f..d44e843eb5 100644
--- a/examples/compiled/layer_ranged_dot.vg.json
+++ b/examples/compiled/layer_ranged_dot.vg.json
@@ -70,7 +70,7 @@
"update": {
"stroke": {"value": "#db646f"},
"description": {
- "signal": "\"Life Expectancy (years): \" + (format(datum[\"life_expect\"], \"\")) + \"; Country: \" + (isValid(datum[\"country\"]) ? datum[\"country\"] : \"\"+datum[\"country\"]) + \"; country: \" + (isValid(datum[\"country\"]) ? datum[\"country\"] : \"\"+datum[\"country\"])"
+ "signal": "\"Life Expectancy (years): \" + (!isValid(datum[\"life_expect\"]) || !isFinite(+datum[\"life_expect\"]) ? \"\" + datum[\"life_expect\"] : format(datum[\"life_expect\"], \"\")) + \"; Country: \" + (\"\" + datum[\"country\"]) + \"; country: \" + (\"\" + datum[\"country\"])"
},
"x": {"scale": "x", "field": "life_expect"},
"y": {"scale": "y", "field": "country"},
@@ -93,7 +93,7 @@
"fill": {"scale": "color", "field": "year"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Life Expectancy (years): \" + (format(datum[\"life_expect\"], \"\")) + \"; Country: \" + (isValid(datum[\"country\"]) ? datum[\"country\"] : \"\"+datum[\"country\"]) + \"; Year: \" + (isValid(datum[\"year\"]) ? datum[\"year\"] : \"\"+datum[\"year\"])"
+ "signal": "\"Life Expectancy (years): \" + (!isValid(datum[\"life_expect\"]) || !isFinite(+datum[\"life_expect\"]) ? \"\" + datum[\"life_expect\"] : format(datum[\"life_expect\"], \"\")) + \"; Country: \" + (\"\" + datum[\"country\"]) + \"; Year: \" + (\"\" + datum[\"year\"])"
},
"x": {"scale": "x", "field": "life_expect"},
"y": {"scale": "y", "field": "country"},
diff --git a/examples/compiled/layer_rect_extent.vg.json b/examples/compiled/layer_rect_extent.vg.json
index c39f0deb41..a0e83e69e6 100644
--- a/examples/compiled/layer_rect_extent.vg.json
+++ b/examples/compiled/layer_rect_extent.vg.json
@@ -69,7 +69,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles per Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles per Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\"))"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"}
@@ -85,7 +85,7 @@
"update": {
"stroke": {"value": "black"},
"description": {
- "signal": "\"Min of Miles_per_Gallon: \" + (format(datum[\"min_Miles_per_Gallon\"], \"\"))"
+ "signal": "\"Min of Miles_per_Gallon: \" + (!isValid(datum[\"min_Miles_per_Gallon\"]) || !isFinite(+datum[\"min_Miles_per_Gallon\"]) ? \"\" + datum[\"min_Miles_per_Gallon\"] : format(datum[\"min_Miles_per_Gallon\"], \"\"))"
},
"x": {"field": {"group": "width"}},
"x2": {"value": 0},
@@ -102,7 +102,7 @@
"update": {
"stroke": {"value": "black"},
"description": {
- "signal": "\"Max of Miles_per_Gallon: \" + (format(datum[\"max_Miles_per_Gallon\"], \"\"))"
+ "signal": "\"Max of Miles_per_Gallon: \" + (!isValid(datum[\"max_Miles_per_Gallon\"]) || !isFinite(+datum[\"max_Miles_per_Gallon\"]) ? \"\" + datum[\"max_Miles_per_Gallon\"] : format(datum[\"max_Miles_per_Gallon\"], \"\"))"
},
"x": {"field": {"group": "width"}},
"x2": {"value": 0},
@@ -120,7 +120,7 @@
"fill": {"value": "#4c78a8"},
"opacity": {"value": 0.2},
"description": {
- "signal": "\"Max of Miles_per_Gallon: \" + (format(datum[\"max_Miles_per_Gallon\"], \"\")) + \"; Min of Miles_per_Gallon: \" + (format(datum[\"min_Miles_per_Gallon\"], \"\"))"
+ "signal": "\"Max of Miles_per_Gallon: \" + (!isValid(datum[\"max_Miles_per_Gallon\"]) || !isFinite(+datum[\"max_Miles_per_Gallon\"]) ? \"\" + datum[\"max_Miles_per_Gallon\"] : format(datum[\"max_Miles_per_Gallon\"], \"\")) + \"; Min of Miles_per_Gallon: \" + (!isValid(datum[\"min_Miles_per_Gallon\"]) || !isFinite(+datum[\"min_Miles_per_Gallon\"]) ? \"\" + datum[\"min_Miles_per_Gallon\"] : format(datum[\"min_Miles_per_Gallon\"], \"\"))"
},
"x": {"field": {"group": "width"}},
"x2": {"value": 0},
diff --git a/examples/compiled/layer_scatter_errorband_1D_stdev_global_mean.vg.json b/examples/compiled/layer_scatter_errorband_1D_stdev_global_mean.vg.json
index bc686f03d5..95aaee3509 100644
--- a/examples/compiled/layer_scatter_errorband_1D_stdev_global_mean.vg.json
+++ b/examples/compiled/layer_scatter_errorband_1D_stdev_global_mean.vg.json
@@ -83,7 +83,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\"))"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"}
@@ -100,10 +100,10 @@
"opacity": {"value": 0.2},
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"Mean of Miles per Gallon\": format(datum[\"center_Miles_per_Gallon\"], \"\"), \"Mean + stdev of Miles per Gallon\": format(datum[\"upper_Miles_per_Gallon\"], \"\"), \"Mean - stdev of Miles per Gallon\": format(datum[\"lower_Miles_per_Gallon\"], \"\")}"
+ "signal": "{\"Mean of Miles per Gallon\": !isValid(datum[\"center_Miles_per_Gallon\"]) || !isFinite(+datum[\"center_Miles_per_Gallon\"]) ? \"\" + datum[\"center_Miles_per_Gallon\"] : format(datum[\"center_Miles_per_Gallon\"], \"\"), \"Mean + stdev of Miles per Gallon\": !isValid(datum[\"upper_Miles_per_Gallon\"]) || !isFinite(+datum[\"upper_Miles_per_Gallon\"]) ? \"\" + datum[\"upper_Miles_per_Gallon\"] : format(datum[\"upper_Miles_per_Gallon\"], \"\"), \"Mean - stdev of Miles per Gallon\": !isValid(datum[\"lower_Miles_per_Gallon\"]) || !isFinite(+datum[\"lower_Miles_per_Gallon\"]) ? \"\" + datum[\"lower_Miles_per_Gallon\"] : format(datum[\"lower_Miles_per_Gallon\"], \"\")}"
},
"description": {
- "signal": "\"Miles per Gallon: \" + (format(datum[\"lower_Miles_per_Gallon\"], \"\")) + \"; upper_Miles_per_Gallon: \" + (format(datum[\"upper_Miles_per_Gallon\"], \"\")) + \"; Mean of Miles per Gallon: \" + (format(datum[\"center_Miles_per_Gallon\"], \"\")) + \"; Mean + stdev of Miles per Gallon: \" + (format(datum[\"upper_Miles_per_Gallon\"], \"\")) + \"; Mean - stdev of Miles per Gallon: \" + (format(datum[\"lower_Miles_per_Gallon\"], \"\"))"
+ "signal": "\"Miles per Gallon: \" + (!isValid(datum[\"lower_Miles_per_Gallon\"]) || !isFinite(+datum[\"lower_Miles_per_Gallon\"]) ? \"\" + datum[\"lower_Miles_per_Gallon\"] : format(datum[\"lower_Miles_per_Gallon\"], \"\")) + \"; upper_Miles_per_Gallon: \" + (!isValid(datum[\"upper_Miles_per_Gallon\"]) || !isFinite(+datum[\"upper_Miles_per_Gallon\"]) ? \"\" + datum[\"upper_Miles_per_Gallon\"] : format(datum[\"upper_Miles_per_Gallon\"], \"\")) + \"; Mean of Miles per Gallon: \" + (!isValid(datum[\"center_Miles_per_Gallon\"]) || !isFinite(+datum[\"center_Miles_per_Gallon\"]) ? \"\" + datum[\"center_Miles_per_Gallon\"] : format(datum[\"center_Miles_per_Gallon\"], \"\")) + \"; Mean + stdev of Miles per Gallon: \" + (!isValid(datum[\"upper_Miles_per_Gallon\"]) || !isFinite(+datum[\"upper_Miles_per_Gallon\"]) ? \"\" + datum[\"upper_Miles_per_Gallon\"] : format(datum[\"upper_Miles_per_Gallon\"], \"\")) + \"; Mean - stdev of Miles per Gallon: \" + (!isValid(datum[\"lower_Miles_per_Gallon\"]) || !isFinite(+datum[\"lower_Miles_per_Gallon\"]) ? \"\" + datum[\"lower_Miles_per_Gallon\"] : format(datum[\"lower_Miles_per_Gallon\"], \"\"))"
},
"x": {"field": {"group": "width"}},
"x2": {"value": 0},
@@ -121,7 +121,7 @@
"update": {
"stroke": {"value": "black"},
"description": {
- "signal": "\"Mean of Miles_per_Gallon: \" + (format(datum[\"mean_Miles_per_Gallon\"], \"\"))"
+ "signal": "\"Mean of Miles_per_Gallon: \" + (!isValid(datum[\"mean_Miles_per_Gallon\"]) || !isFinite(+datum[\"mean_Miles_per_Gallon\"]) ? \"\" + datum[\"mean_Miles_per_Gallon\"] : format(datum[\"mean_Miles_per_Gallon\"], \"\"))"
},
"x": {"field": {"group": "width"}},
"x2": {"value": 0},
diff --git a/examples/compiled/layer_scatter_errorband_1d_stdev.vg.json b/examples/compiled/layer_scatter_errorband_1d_stdev.vg.json
index e19f0d8252..5a75c8cc5c 100644
--- a/examples/compiled/layer_scatter_errorband_1d_stdev.vg.json
+++ b/examples/compiled/layer_scatter_errorband_1d_stdev.vg.json
@@ -58,7 +58,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\"))"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"}
@@ -75,10 +75,10 @@
"opacity": {"value": 0.3},
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"Mean of Miles per Gallon\": format(datum[\"center_Miles_per_Gallon\"], \"\"), \"Mean + stdev of Miles per Gallon\": format(datum[\"upper_Miles_per_Gallon\"], \"\"), \"Mean - stdev of Miles per Gallon\": format(datum[\"lower_Miles_per_Gallon\"], \"\")}"
+ "signal": "{\"Mean of Miles per Gallon\": !isValid(datum[\"center_Miles_per_Gallon\"]) || !isFinite(+datum[\"center_Miles_per_Gallon\"]) ? \"\" + datum[\"center_Miles_per_Gallon\"] : format(datum[\"center_Miles_per_Gallon\"], \"\"), \"Mean + stdev of Miles per Gallon\": !isValid(datum[\"upper_Miles_per_Gallon\"]) || !isFinite(+datum[\"upper_Miles_per_Gallon\"]) ? \"\" + datum[\"upper_Miles_per_Gallon\"] : format(datum[\"upper_Miles_per_Gallon\"], \"\"), \"Mean - stdev of Miles per Gallon\": !isValid(datum[\"lower_Miles_per_Gallon\"]) || !isFinite(+datum[\"lower_Miles_per_Gallon\"]) ? \"\" + datum[\"lower_Miles_per_Gallon\"] : format(datum[\"lower_Miles_per_Gallon\"], \"\")}"
},
"description": {
- "signal": "\"Miles per Gallon: \" + (format(datum[\"lower_Miles_per_Gallon\"], \"\")) + \"; upper_Miles_per_Gallon: \" + (format(datum[\"upper_Miles_per_Gallon\"], \"\")) + \"; Mean of Miles per Gallon: \" + (format(datum[\"center_Miles_per_Gallon\"], \"\")) + \"; Mean + stdev of Miles per Gallon: \" + (format(datum[\"upper_Miles_per_Gallon\"], \"\")) + \"; Mean - stdev of Miles per Gallon: \" + (format(datum[\"lower_Miles_per_Gallon\"], \"\"))"
+ "signal": "\"Miles per Gallon: \" + (!isValid(datum[\"lower_Miles_per_Gallon\"]) || !isFinite(+datum[\"lower_Miles_per_Gallon\"]) ? \"\" + datum[\"lower_Miles_per_Gallon\"] : format(datum[\"lower_Miles_per_Gallon\"], \"\")) + \"; upper_Miles_per_Gallon: \" + (!isValid(datum[\"upper_Miles_per_Gallon\"]) || !isFinite(+datum[\"upper_Miles_per_Gallon\"]) ? \"\" + datum[\"upper_Miles_per_Gallon\"] : format(datum[\"upper_Miles_per_Gallon\"], \"\")) + \"; Mean of Miles per Gallon: \" + (!isValid(datum[\"center_Miles_per_Gallon\"]) || !isFinite(+datum[\"center_Miles_per_Gallon\"]) ? \"\" + datum[\"center_Miles_per_Gallon\"] : format(datum[\"center_Miles_per_Gallon\"], \"\")) + \"; Mean + stdev of Miles per Gallon: \" + (!isValid(datum[\"upper_Miles_per_Gallon\"]) || !isFinite(+datum[\"upper_Miles_per_Gallon\"]) ? \"\" + datum[\"upper_Miles_per_Gallon\"] : format(datum[\"upper_Miles_per_Gallon\"], \"\")) + \"; Mean - stdev of Miles per Gallon: \" + (!isValid(datum[\"lower_Miles_per_Gallon\"]) || !isFinite(+datum[\"lower_Miles_per_Gallon\"]) ? \"\" + datum[\"lower_Miles_per_Gallon\"] : format(datum[\"lower_Miles_per_Gallon\"], \"\"))"
},
"x": {"field": {"group": "width"}},
"x2": {"value": 0},
diff --git a/examples/compiled/layer_single_color.vg.json b/examples/compiled/layer_single_color.vg.json
index 7c881ef0c2..720f863172 100644
--- a/examples/compiled/layer_single_color.vg.json
+++ b/examples/compiled/layer_single_color.vg.json
@@ -40,7 +40,7 @@
"update": {
"stroke": {"scale": "color", "field": "symbol"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"price\"], \"\")) + \"; symbol: \" + (isValid(datum[\"symbol\"]) ? datum[\"symbol\"] : \"\"+datum[\"symbol\"])"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\")) + \"; symbol: \" + (\"\" + datum[\"symbol\"])"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "price"},
diff --git a/examples/compiled/layer_text_heatmap.vg.json b/examples/compiled/layer_text_heatmap.vg.json
index 4f005e6d2d..2d26070ca4 100644
--- a/examples/compiled/layer_text_heatmap.vg.json
+++ b/examples/compiled/layer_text_heatmap.vg.json
@@ -45,7 +45,7 @@
"update": {
"fill": {"scale": "color", "field": "num_cars"},
"description": {
- "signal": "\"Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; Count of Records: \" + (format(datum[\"num_cars\"], \"\"))"
+ "signal": "\"Cylinders: \" + (\"\" + datum[\"Cylinders\"]) + \"; Origin: \" + (\"\" + datum[\"Origin\"]) + \"; Count of Records: \" + (!isValid(datum[\"num_cars\"]) || !isFinite(+datum[\"num_cars\"]) ? \"\" + datum[\"num_cars\"] : format(datum[\"num_cars\"], \"\"))"
},
"x": {"scale": "x", "field": "Cylinders"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
@@ -66,11 +66,13 @@
{"value": "white"}
],
"description": {
- "signal": "\"Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; num_cars: \" + (format(datum[\"num_cars\"], \"\"))"
+ "signal": "\"Cylinders: \" + (\"\" + datum[\"Cylinders\"]) + \"; Origin: \" + (\"\" + datum[\"Origin\"]) + \"; num_cars: \" + (!isValid(datum[\"num_cars\"]) || !isFinite(+datum[\"num_cars\"]) ? \"\" + datum[\"num_cars\"] : format(datum[\"num_cars\"], \"\"))"
},
"x": {"scale": "x", "field": "Cylinders", "band": 0.5},
"y": {"scale": "y", "field": "Origin", "band": 0.5},
- "text": {"signal": "format(datum[\"num_cars\"], \"\")"},
+ "text": {
+ "signal": "!isValid(datum[\"num_cars\"]) || !isFinite(+datum[\"num_cars\"]) ? \"\" + datum[\"num_cars\"] : format(datum[\"num_cars\"], \"\")"
+ },
"align": {"value": "center"},
"baseline": {"value": "middle"}
}
diff --git a/examples/compiled/layer_text_heatmap_joinaggregate.vg.json b/examples/compiled/layer_text_heatmap_joinaggregate.vg.json
index 030416d423..553f9536bc 100644
--- a/examples/compiled/layer_text_heatmap_joinaggregate.vg.json
+++ b/examples/compiled/layer_text_heatmap_joinaggregate.vg.json
@@ -56,7 +56,7 @@
"update": {
"fill": {"scale": "layer_0_color", "field": "num_cars"},
"description": {
- "signal": "\"Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; Count of Records: \" + (format(datum[\"num_cars\"], \"\"))"
+ "signal": "\"Cylinders: \" + (\"\" + datum[\"Cylinders\"]) + \"; Origin: \" + (\"\" + datum[\"Origin\"]) + \"; Count of Records: \" + (!isValid(datum[\"num_cars\"]) || !isFinite(+datum[\"num_cars\"]) ? \"\" + datum[\"num_cars\"] : format(datum[\"num_cars\"], \"\"))"
},
"x": {"scale": "x", "field": "Cylinders"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
@@ -74,11 +74,13 @@
"update": {
"fill": {"scale": "layer_1_color", "field": "more_than_half"},
"description": {
- "signal": "\"Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; more_than_half: \" + (isValid(datum[\"more_than_half\"]) ? datum[\"more_than_half\"] : \"\"+datum[\"more_than_half\"]) + \"; num_cars: \" + (format(datum[\"num_cars\"], \"\"))"
+ "signal": "\"Cylinders: \" + (\"\" + datum[\"Cylinders\"]) + \"; Origin: \" + (\"\" + datum[\"Origin\"]) + \"; more_than_half: \" + (\"\" + datum[\"more_than_half\"]) + \"; num_cars: \" + (!isValid(datum[\"num_cars\"]) || !isFinite(+datum[\"num_cars\"]) ? \"\" + datum[\"num_cars\"] : format(datum[\"num_cars\"], \"\"))"
},
"x": {"scale": "x", "field": "Cylinders", "band": 0.5},
"y": {"scale": "y", "field": "Origin", "band": 0.5},
- "text": {"signal": "format(datum[\"num_cars\"], \"\")"},
+ "text": {
+ "signal": "!isValid(datum[\"num_cars\"]) || !isFinite(+datum[\"num_cars\"]) ? \"\" + datum[\"num_cars\"] : format(datum[\"num_cars\"], \"\")"
+ },
"align": {"value": "center"},
"baseline": {"value": "middle"}
}
diff --git a/examples/compiled/layer_timeunit_rect.vg.json b/examples/compiled/layer_timeunit_rect.vg.json
index 48330e6112..43e7f4651d 100644
--- a/examples/compiled/layer_timeunit_rect.vg.json
+++ b/examples/compiled/layer_timeunit_rect.vg.json
@@ -75,7 +75,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"month: \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of precipitation: \" + (format(datum[\"mean_precipitation\"], \"\"))"
+ "signal": "\"month: \" + (!isValid(datum[\"month_date\"]) || !isFinite(+datum[\"month_date\"]) ? \"\" + datum[\"month_date\"] : timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of precipitation: \" + (!isValid(datum[\"mean_precipitation\"]) || !isFinite(+datum[\"mean_precipitation\"]) ? \"\" + datum[\"mean_precipitation\"] : format(datum[\"mean_precipitation\"], \"\"))"
},
"x2": {
"scale": "x",
@@ -106,7 +106,7 @@
"opacity": {"value": 0.5},
"fill": {"value": "grey"},
"description": {
- "signal": "\"date (month): \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; date_end (month): \" + (timeFormat(datum[\"month_date_end\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"})))"
+ "signal": "\"date (month): \" + (!isValid(datum[\"month_date\"]) || !isFinite(+datum[\"month_date\"]) ? \"\" + datum[\"month_date\"] : timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; date_end (month): \" + (!isValid(datum[\"month_date_end\"]) || !isFinite(+datum[\"month_date_end\"]) ? \"\" + datum[\"month_date_end\"] : timeFormat(datum[\"month_date_end\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"})))"
},
"x": {"scale": "x", "field": "month_date"},
"x2": {"scale": "x", "field": "month_date_end"},
diff --git a/examples/compiled/line.vg.json b/examples/compiled/line.vg.json
index 77f85ccfb7..0c27a82776 100644
--- a/examples/compiled/line.vg.json
+++ b/examples/compiled/line.vg.json
@@ -25,7 +25,7 @@
"update": {
"stroke": {"value": "#4c78a8"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"price\"], \"\"))"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\"))"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "price"},
diff --git a/examples/compiled/line_bump.vg.json b/examples/compiled/line_bump.vg.json
index d3a55459e6..da9dc33bbc 100644
--- a/examples/compiled/line_bump.vg.json
+++ b/examples/compiled/line_bump.vg.json
@@ -56,7 +56,7 @@
"update": {
"stroke": {"value": "#4c78a8"},
"description": {
- "signal": "\"build: \" + (format(datum[\"build\"], \"\")) + \"; result: \" + (isValid(datum[\"result\"]) ? datum[\"result\"] : \"\"+datum[\"result\"])"
+ "signal": "\"build: \" + (!isValid(datum[\"build\"]) || !isFinite(+datum[\"build\"]) ? \"\" + datum[\"build\"] : format(datum[\"build\"], \"\")) + \"; result: \" + (\"\" + datum[\"result\"])"
},
"x": {"scale": "x", "field": "build"},
"y": {"scale": "y", "field": "result"},
@@ -78,7 +78,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"build: \" + (format(datum[\"build\"], \"\")) + \"; result: \" + (isValid(datum[\"result\"]) ? datum[\"result\"] : \"\"+datum[\"result\"])"
+ "signal": "\"build: \" + (!isValid(datum[\"build\"]) || !isFinite(+datum[\"build\"]) ? \"\" + datum[\"build\"] : format(datum[\"build\"], \"\")) + \"; result: \" + (\"\" + datum[\"result\"])"
},
"x": {"scale": "x", "field": "build"},
"y": {"scale": "y", "field": "result"}
diff --git a/examples/compiled/line_calculate.vg.json b/examples/compiled/line_calculate.vg.json
index c069334ac9..279e07563b 100644
--- a/examples/compiled/line_calculate.vg.json
+++ b/examples/compiled/line_calculate.vg.json
@@ -43,7 +43,7 @@
"update": {
"stroke": {"value": "#4c78a8"},
"description": {
- "signal": "\"date (month): \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of temp_range: \" + (format(datum[\"mean_temp_range\"], \"\"))"
+ "signal": "\"date (month): \" + (!isValid(datum[\"month_date\"]) || !isFinite(+datum[\"month_date\"]) ? \"\" + datum[\"month_date\"] : timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of temp_range: \" + (!isValid(datum[\"mean_temp_range\"]) || !isFinite(+datum[\"mean_temp_range\"]) ? \"\" + datum[\"mean_temp_range\"] : format(datum[\"mean_temp_range\"], \"\"))"
},
"x": {"scale": "x", "field": "month_date"},
"y": {"scale": "y", "field": "mean_temp_range"},
diff --git a/examples/compiled/line_color.vg.json b/examples/compiled/line_color.vg.json
index 2e26ac8418..b105a3d389 100644
--- a/examples/compiled/line_color.vg.json
+++ b/examples/compiled/line_color.vg.json
@@ -41,7 +41,7 @@
"update": {
"stroke": {"scale": "color", "field": "symbol"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"price\"], \"\")) + \"; symbol: \" + (isValid(datum[\"symbol\"]) ? datum[\"symbol\"] : \"\"+datum[\"symbol\"])"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\")) + \"; symbol: \" + (\"\" + datum[\"symbol\"])"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "price"},
diff --git a/examples/compiled/line_color_binned.vg.json b/examples/compiled/line_color_binned.vg.json
index dece517269..b060d6fc2f 100644
--- a/examples/compiled/line_color_binned.vg.json
+++ b/examples/compiled/line_color_binned.vg.json
@@ -73,7 +73,7 @@
"field": "bin_maxbins_6_Acceleration"
},
"description": {
- "signal": "\"Year: \" + (timeFormat(datum[\"Year\"], '%b %d, %Y')) + \"; Mean of Horsepower: \" + (format(datum[\"mean_Horsepower\"], \"\")) + \"; Acceleration (binned): \" + (!isValid(datum[\"bin_maxbins_6_Acceleration\"]) || !isFinite(+datum[\"bin_maxbins_6_Acceleration\"]) ? \"null\" : format(datum[\"bin_maxbins_6_Acceleration\"], \"\") + \" – \" + format(datum[\"bin_maxbins_6_Acceleration_end\"], \"\"))"
+ "signal": "\"Year: \" + (!isValid(datum[\"Year\"]) || !isFinite(+datum[\"Year\"]) ? \"\" + datum[\"Year\"] : timeFormat(datum[\"Year\"], '%b %d, %Y')) + \"; Mean of Horsepower: \" + (!isValid(datum[\"mean_Horsepower\"]) || !isFinite(+datum[\"mean_Horsepower\"]) ? \"\" + datum[\"mean_Horsepower\"] : format(datum[\"mean_Horsepower\"], \"\")) + \"; Acceleration (binned): \" + (!isValid(datum[\"bin_maxbins_6_Acceleration\"]) || !isFinite(+datum[\"bin_maxbins_6_Acceleration\"]) ? \"\" + datum[\"bin_maxbins_6_Acceleration\"] : format(datum[\"bin_maxbins_6_Acceleration\"], \"\") + \" – \" + format(datum[\"bin_maxbins_6_Acceleration_end\"], \"\"))"
},
"x": {"scale": "x", "field": "Year"},
"y": {"scale": "y", "field": "mean_Horsepower"},
diff --git a/examples/compiled/line_color_halo.svg b/examples/compiled/line_color_halo.svg
index f08442b38c..d92a2bfbf7 100644
--- a/examples/compiled/line_color_halo.svg
+++ b/examples/compiled/line_color_halo.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/examples/compiled/line_color_halo.vg.json b/examples/compiled/line_color_halo.vg.json
index b7509154b1..91fef15575 100644
--- a/examples/compiled/line_color_halo.vg.json
+++ b/examples/compiled/line_color_halo.vg.json
@@ -34,7 +34,7 @@
"stroke": {"value": "white"},
"strokeWidth": {"value": 4},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"AAPL\"], \"\"))"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (!isValid(datum[\"AAPL\"]) || !isFinite(+datum[\"AAPL\"]) ? \"\" + datum[\"AAPL\"] : format(datum[\"AAPL\"], \"\"))"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "AAPL"},
@@ -54,7 +54,7 @@
"update": {
"stroke": {"scale": "stroke", "value": "AAPL"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"AAPL\"], \"\"))"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (!isValid(datum[\"AAPL\"]) || !isFinite(+datum[\"AAPL\"]) ? \"\" + datum[\"AAPL\"] : format(datum[\"AAPL\"], \"\"))"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "AAPL"},
@@ -75,7 +75,7 @@
"stroke": {"value": "white"},
"strokeWidth": {"value": 4},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"AMZN\"], \"\"))"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (!isValid(datum[\"AMZN\"]) || !isFinite(+datum[\"AMZN\"]) ? \"\" + datum[\"AMZN\"] : format(datum[\"AMZN\"], \"\"))"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "AMZN"},
@@ -95,7 +95,7 @@
"update": {
"stroke": {"scale": "stroke", "value": "AMZN"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"AMZN\"], \"\"))"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (!isValid(datum[\"AMZN\"]) || !isFinite(+datum[\"AMZN\"]) ? \"\" + datum[\"AMZN\"] : format(datum[\"AMZN\"], \"\"))"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "AMZN"},
@@ -116,7 +116,7 @@
"stroke": {"value": "white"},
"strokeWidth": {"value": 4},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"GOOG\"], \"\"))"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (!isValid(datum[\"GOOG\"]) || !isFinite(+datum[\"GOOG\"]) ? \"\" + datum[\"GOOG\"] : format(datum[\"GOOG\"], \"\"))"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "GOOG"},
@@ -136,7 +136,7 @@
"update": {
"stroke": {"scale": "stroke", "value": "GOOG"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"GOOG\"], \"\"))"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (!isValid(datum[\"GOOG\"]) || !isFinite(+datum[\"GOOG\"]) ? \"\" + datum[\"GOOG\"] : format(datum[\"GOOG\"], \"\"))"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "GOOG"},
@@ -157,7 +157,7 @@
"stroke": {"value": "white"},
"strokeWidth": {"value": 4},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"IBM\"], \"\"))"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (!isValid(datum[\"IBM\"]) || !isFinite(+datum[\"IBM\"]) ? \"\" + datum[\"IBM\"] : format(datum[\"IBM\"], \"\"))"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "IBM"},
@@ -177,7 +177,7 @@
"update": {
"stroke": {"scale": "stroke", "value": "IBM"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"IBM\"], \"\"))"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (!isValid(datum[\"IBM\"]) || !isFinite(+datum[\"IBM\"]) ? \"\" + datum[\"IBM\"] : format(datum[\"IBM\"], \"\"))"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "IBM"},
@@ -198,7 +198,7 @@
"stroke": {"value": "white"},
"strokeWidth": {"value": 4},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"MSFT\"], \"\"))"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (!isValid(datum[\"MSFT\"]) || !isFinite(+datum[\"MSFT\"]) ? \"\" + datum[\"MSFT\"] : format(datum[\"MSFT\"], \"\"))"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "MSFT"},
@@ -218,7 +218,7 @@
"update": {
"stroke": {"scale": "stroke", "value": "MSFT"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"MSFT\"], \"\"))"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (!isValid(datum[\"MSFT\"]) || !isFinite(+datum[\"MSFT\"]) ? \"\" + datum[\"MSFT\"] : format(datum[\"MSFT\"], \"\"))"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "MSFT"},
diff --git a/examples/compiled/line_color_label.vg.json b/examples/compiled/line_color_label.vg.json
index c2be6122c2..ace89dd8d9 100644
--- a/examples/compiled/line_color_label.vg.json
+++ b/examples/compiled/line_color_label.vg.json
@@ -59,7 +59,7 @@
"update": {
"stroke": {"scale": "color", "field": "symbol"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"price\"], \"\")) + \"; symbol: \" + (isValid(datum[\"symbol\"]) ? datum[\"symbol\"] : \"\"+datum[\"symbol\"])"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\")) + \"; symbol: \" + (\"\" + datum[\"symbol\"])"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "price"},
@@ -81,7 +81,7 @@
"fill": {"scale": "color", "field": "symbol"},
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"Max of date: \" + (timeFormat(datum[\"max_date\"], '%b %d, %Y')) + \"; price for max date: \" + (format(datum[\"argmax_date\"][\"price\"], \"\")) + \"; symbol: \" + (isValid(datum[\"symbol\"]) ? datum[\"symbol\"] : \"\"+datum[\"symbol\"])"
+ "signal": "\"Max of date: \" + (!isValid(datum[\"max_date\"]) || !isFinite(+datum[\"max_date\"]) ? \"\" + datum[\"max_date\"] : timeFormat(datum[\"max_date\"], '%b %d, %Y')) + \"; price for max date: \" + (!isValid(datum[\"argmax_date\"][\"price\"]) || !isFinite(+datum[\"argmax_date\"][\"price\"]) ? \"\" + datum[\"argmax_date\"][\"price\"] : format(datum[\"argmax_date\"][\"price\"], \"\")) + \"; symbol: \" + (\"\" + datum[\"symbol\"])"
},
"x": {"scale": "x", "field": "max_date"},
"y": {"scale": "y", "field": "argmax_date[\"price\"]"},
@@ -100,13 +100,11 @@
"dx": {"value": 4},
"fill": {"scale": "color", "field": "symbol"},
"description": {
- "signal": "\"Max of date: \" + (timeFormat(datum[\"max_date\"], '%b %d, %Y')) + \"; price for max date: \" + (format(datum[\"argmax_date\"][\"price\"], \"\")) + \"; symbol: \" + (isValid(datum[\"symbol\"]) ? datum[\"symbol\"] : \"\"+datum[\"symbol\"])"
+ "signal": "\"Max of date: \" + (!isValid(datum[\"max_date\"]) || !isFinite(+datum[\"max_date\"]) ? \"\" + datum[\"max_date\"] : timeFormat(datum[\"max_date\"], '%b %d, %Y')) + \"; price for max date: \" + (!isValid(datum[\"argmax_date\"][\"price\"]) || !isFinite(+datum[\"argmax_date\"][\"price\"]) ? \"\" + datum[\"argmax_date\"][\"price\"] : format(datum[\"argmax_date\"][\"price\"], \"\")) + \"; symbol: \" + (\"\" + datum[\"symbol\"])"
},
"x": {"scale": "x", "field": "max_date"},
"y": {"scale": "y", "field": "argmax_date[\"price\"]"},
- "text": {
- "signal": "isValid(datum[\"symbol\"]) ? datum[\"symbol\"] : \"\"+datum[\"symbol\"]"
- },
+ "text": {"signal": "\"\" + datum[\"symbol\"]"},
"baseline": {"value": "middle"}
}
}
diff --git a/examples/compiled/line_concat_facet.vg.json b/examples/compiled/line_concat_facet.vg.json
index b49bc9058e..2cdd2f6628 100644
--- a/examples/compiled/line_concat_facet.vg.json
+++ b/examples/compiled/line_concat_facet.vg.json
@@ -87,7 +87,7 @@
"sort": {"field": "datum[\"year_date\"]", "order": "ascending"},
"title": {
"text": {
- "signal": "timeFormat(parent[\"year_date\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))"
+ "signal": "!isValid(parent[\"year_date\"]) || !isFinite(+parent[\"year_date\"]) ? \"\" + parent[\"year_date\"] : timeFormat(parent[\"year_date\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))"
},
"orient": "left",
"style": "guide-label",
@@ -158,7 +158,7 @@
"update": {
"stroke": {"value": "#4c78a8"},
"description": {
- "signal": "\"date (month): \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of precipitation: \" + (format(datum[\"mean_precipitation\"], \"\"))"
+ "signal": "\"date (month): \" + (!isValid(datum[\"month_date\"]) || !isFinite(+datum[\"month_date\"]) ? \"\" + datum[\"month_date\"] : timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of precipitation: \" + (!isValid(datum[\"mean_precipitation\"]) || !isFinite(+datum[\"mean_precipitation\"]) ? \"\" + datum[\"mean_precipitation\"] : format(datum[\"mean_precipitation\"], \"\"))"
},
"x": {"scale": "concat_0_x", "field": "month_date"},
"y": {"scale": "concat_0_y", "field": "mean_precipitation"},
@@ -209,7 +209,7 @@
"update": {
"stroke": {"value": "#4c78a8"},
"description": {
- "signal": "\"date (month): \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of precipitation: \" + (format(datum[\"mean_precipitation\"], \"\"))"
+ "signal": "\"date (month): \" + (!isValid(datum[\"month_date\"]) || !isFinite(+datum[\"month_date\"]) ? \"\" + datum[\"month_date\"] : timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of precipitation: \" + (!isValid(datum[\"mean_precipitation\"]) || !isFinite(+datum[\"mean_precipitation\"]) ? \"\" + datum[\"mean_precipitation\"] : format(datum[\"mean_precipitation\"], \"\"))"
},
"x": {"scale": "concat_1_x", "field": "month_date"},
"y": {"scale": "concat_1_y", "field": "mean_precipitation"},
diff --git a/examples/compiled/line_conditional_axis.vg.json b/examples/compiled/line_conditional_axis.vg.json
index 6c05b7f055..2a7c219970 100644
--- a/examples/compiled/line_conditional_axis.vg.json
+++ b/examples/compiled/line_conditional_axis.vg.json
@@ -31,7 +31,7 @@
"update": {
"stroke": {"value": "#4c78a8"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"price\"], \"\"))"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\"))"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "price"},
diff --git a/examples/compiled/line_conditional_axis_config.vg.json b/examples/compiled/line_conditional_axis_config.vg.json
index bd056a50f1..8fb8d886fe 100644
--- a/examples/compiled/line_conditional_axis_config.vg.json
+++ b/examples/compiled/line_conditional_axis_config.vg.json
@@ -31,7 +31,7 @@
"update": {
"stroke": {"value": "#4c78a8"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"price\"], \"\"))"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\"))"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "price"},
diff --git a/examples/compiled/line_dashed_part.vg.json b/examples/compiled/line_dashed_part.vg.json
index 350663b7c1..0150494f82 100644
--- a/examples/compiled/line_dashed_part.vg.json
+++ b/examples/compiled/line_dashed_part.vg.json
@@ -55,7 +55,7 @@
"stroke": {"value": "#4c78a8"},
"strokeDash": {"scale": "strokeDash", "field": "predicted"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; predicted: \" + (isValid(datum[\"predicted\"]) ? datum[\"predicted\"] : \"\"+datum[\"predicted\"])"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; predicted: \" + (\"\" + datum[\"predicted\"])"
},
"x": {"scale": "x", "field": "a"},
"y": {"scale": "y", "field": "b"},
diff --git a/examples/compiled/line_detail.vg.json b/examples/compiled/line_detail.vg.json
index 0276288e37..d808c12d46 100644
--- a/examples/compiled/line_detail.vg.json
+++ b/examples/compiled/line_detail.vg.json
@@ -41,7 +41,7 @@
"update": {
"stroke": {"value": "#4c78a8"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"price\"], \"\")) + \"; symbol: \" + (isValid(datum[\"symbol\"]) ? datum[\"symbol\"] : \"\"+datum[\"symbol\"])"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\")) + \"; symbol: \" + (\"\" + datum[\"symbol\"])"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "price"},
diff --git a/examples/compiled/line_domainminmax.vg.json b/examples/compiled/line_domainminmax.vg.json
index aac2b6b0fb..ea1e7a58cc 100644
--- a/examples/compiled/line_domainminmax.vg.json
+++ b/examples/compiled/line_domainminmax.vg.json
@@ -25,7 +25,7 @@
"update": {
"stroke": {"value": "#4c78a8"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"price\"], \"\"))"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\"))"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "price"},
diff --git a/examples/compiled/line_encoding_impute_keyvals.vg.json b/examples/compiled/line_encoding_impute_keyvals.vg.json
index 293921bc4f..c3cdda4dc0 100644
--- a/examples/compiled/line_encoding_impute_keyvals.vg.json
+++ b/examples/compiled/line_encoding_impute_keyvals.vg.json
@@ -63,7 +63,7 @@
"update": {
"stroke": {"scale": "color", "field": "c"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (isValid(datum[\"c\"]) ? datum[\"c\"] : \"\"+datum[\"c\"])"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (\"\" + datum[\"c\"])"
},
"x": {"scale": "x", "field": "a"},
"y": {"scale": "y", "field": "b"},
diff --git a/examples/compiled/line_encoding_impute_keyvals_sequence.vg.json b/examples/compiled/line_encoding_impute_keyvals_sequence.vg.json
index 75e21802f8..668f4013dd 100644
--- a/examples/compiled/line_encoding_impute_keyvals_sequence.vg.json
+++ b/examples/compiled/line_encoding_impute_keyvals_sequence.vg.json
@@ -63,7 +63,7 @@
"update": {
"stroke": {"scale": "color", "field": "c"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (isValid(datum[\"c\"]) ? datum[\"c\"] : \"\"+datum[\"c\"])"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (\"\" + datum[\"c\"])"
},
"x": {"scale": "x", "field": "a"},
"y": {"scale": "y", "field": "b"},
diff --git a/examples/compiled/line_impute_frame.vg.json b/examples/compiled/line_impute_frame.vg.json
index f59fd4baa3..bb2f308051 100644
--- a/examples/compiled/line_impute_frame.vg.json
+++ b/examples/compiled/line_impute_frame.vg.json
@@ -76,7 +76,7 @@
"update": {
"stroke": {"scale": "color", "field": "c"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (isValid(datum[\"c\"]) ? datum[\"c\"] : \"\"+datum[\"c\"])"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (\"\" + datum[\"c\"])"
},
"x": {"scale": "x", "field": "a"},
"y": {"scale": "y", "field": "b"},
diff --git a/examples/compiled/line_impute_keyvals.vg.json b/examples/compiled/line_impute_keyvals.vg.json
index 293921bc4f..c3cdda4dc0 100644
--- a/examples/compiled/line_impute_keyvals.vg.json
+++ b/examples/compiled/line_impute_keyvals.vg.json
@@ -63,7 +63,7 @@
"update": {
"stroke": {"scale": "color", "field": "c"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (isValid(datum[\"c\"]) ? datum[\"c\"] : \"\"+datum[\"c\"])"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (\"\" + datum[\"c\"])"
},
"x": {"scale": "x", "field": "a"},
"y": {"scale": "y", "field": "b"},
diff --git a/examples/compiled/line_impute_method.vg.json b/examples/compiled/line_impute_method.vg.json
index 997693037a..4accf19377 100644
--- a/examples/compiled/line_impute_method.vg.json
+++ b/examples/compiled/line_impute_method.vg.json
@@ -76,7 +76,7 @@
"update": {
"stroke": {"scale": "color", "field": "c"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (isValid(datum[\"c\"]) ? datum[\"c\"] : \"\"+datum[\"c\"])"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (\"\" + datum[\"c\"])"
},
"x": {"scale": "x", "field": "a"},
"y": {"scale": "y", "field": "b"},
diff --git a/examples/compiled/line_impute_transform_frame.vg.json b/examples/compiled/line_impute_transform_frame.vg.json
index f59fd4baa3..bb2f308051 100644
--- a/examples/compiled/line_impute_transform_frame.vg.json
+++ b/examples/compiled/line_impute_transform_frame.vg.json
@@ -76,7 +76,7 @@
"update": {
"stroke": {"scale": "color", "field": "c"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (isValid(datum[\"c\"]) ? datum[\"c\"] : \"\"+datum[\"c\"])"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (\"\" + datum[\"c\"])"
},
"x": {"scale": "x", "field": "a"},
"y": {"scale": "y", "field": "b"},
diff --git a/examples/compiled/line_impute_transform_value.vg.json b/examples/compiled/line_impute_transform_value.vg.json
index 9b3af4cdbf..3d9b11de9a 100644
--- a/examples/compiled/line_impute_transform_value.vg.json
+++ b/examples/compiled/line_impute_transform_value.vg.json
@@ -62,7 +62,7 @@
"update": {
"stroke": {"scale": "color", "field": "c"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (isValid(datum[\"c\"]) ? datum[\"c\"] : \"\"+datum[\"c\"])"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (\"\" + datum[\"c\"])"
},
"x": {"scale": "x", "field": "a"},
"y": {"scale": "y", "field": "b"},
diff --git a/examples/compiled/line_impute_value.vg.json b/examples/compiled/line_impute_value.vg.json
index 9b3af4cdbf..3d9b11de9a 100644
--- a/examples/compiled/line_impute_value.vg.json
+++ b/examples/compiled/line_impute_value.vg.json
@@ -62,7 +62,7 @@
"update": {
"stroke": {"scale": "color", "field": "c"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (isValid(datum[\"c\"]) ? datum[\"c\"] : \"\"+datum[\"c\"])"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (\"\" + datum[\"c\"])"
},
"x": {"scale": "x", "field": "a"},
"y": {"scale": "y", "field": "b"},
diff --git a/examples/compiled/line_inside_domain_using_clip.vg.json b/examples/compiled/line_inside_domain_using_clip.vg.json
index 73cab45975..eff25ee10a 100644
--- a/examples/compiled/line_inside_domain_using_clip.vg.json
+++ b/examples/compiled/line_inside_domain_using_clip.vg.json
@@ -40,7 +40,7 @@
"update": {
"stroke": {"value": "#4c78a8"},
"description": {
- "signal": "\"wavelength: \" + (format(datum[\"wavelength\"], \"\")) + \"; power: \" + (format(datum[\"power\"], \"\"))"
+ "signal": "\"wavelength: \" + (!isValid(datum[\"wavelength\"]) || !isFinite(+datum[\"wavelength\"]) ? \"\" + datum[\"wavelength\"] : format(datum[\"wavelength\"], \"\")) + \"; power: \" + (!isValid(datum[\"power\"]) || !isFinite(+datum[\"power\"]) ? \"\" + datum[\"power\"] : format(datum[\"power\"], \"\"))"
},
"x": {"scale": "x", "field": "wavelength"},
"y": {"scale": "y", "field": "power"},
diff --git a/examples/compiled/line_inside_domain_using_transform.vg.json b/examples/compiled/line_inside_domain_using_transform.vg.json
index 4a169af075..516517a6cb 100644
--- a/examples/compiled/line_inside_domain_using_transform.vg.json
+++ b/examples/compiled/line_inside_domain_using_transform.vg.json
@@ -40,7 +40,7 @@
"update": {
"stroke": {"value": "#4c78a8"},
"description": {
- "signal": "\"wavelength: \" + (format(datum[\"wavelength\"], \"\")) + \"; power: \" + (format(datum[\"power\"], \"\"))"
+ "signal": "\"wavelength: \" + (!isValid(datum[\"wavelength\"]) || !isFinite(+datum[\"wavelength\"]) ? \"\" + datum[\"wavelength\"] : format(datum[\"wavelength\"], \"\")) + \"; power: \" + (!isValid(datum[\"power\"]) || !isFinite(+datum[\"power\"]) ? \"\" + datum[\"power\"] : format(datum[\"power\"], \"\"))"
},
"x": {"scale": "x", "field": "wavelength"},
"y": {"scale": "y", "field": "power"},
diff --git a/examples/compiled/line_invalid_null.svg b/examples/compiled/line_invalid_null.svg
index 8fe8462a54..91d2307543 100644
--- a/examples/compiled/line_invalid_null.svg
+++ b/examples/compiled/line_invalid_null.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/examples/compiled/line_invalid_null.vg.json b/examples/compiled/line_invalid_null.vg.json
index 2f728a52c4..1fcf99510d 100644
--- a/examples/compiled/line_invalid_null.vg.json
+++ b/examples/compiled/line_invalid_null.vg.json
@@ -39,7 +39,7 @@
"update": {
"stroke": {"value": "#4c78a8"},
"description": {
- "signal": "\"x: \" + (format(datum[\"x\"], \"\")) + \"; y: \" + (format(datum[\"y\"], \"\"))"
+ "signal": "\"x: \" + (!isValid(datum[\"x\"]) || !isFinite(+datum[\"x\"]) ? \"\" + datum[\"x\"] : format(datum[\"x\"], \"\")) + \"; y: \" + (!isValid(datum[\"y\"]) || !isFinite(+datum[\"y\"]) ? \"\" + datum[\"y\"] : format(datum[\"y\"], \"\"))"
},
"x": [
{
diff --git a/examples/compiled/line_max_year.vg.json b/examples/compiled/line_max_year.vg.json
index 9499315646..669e897f8c 100644
--- a/examples/compiled/line_max_year.vg.json
+++ b/examples/compiled/line_max_year.vg.json
@@ -41,7 +41,7 @@
"update": {
"stroke": {"value": "#4c78a8"},
"description": {
- "signal": "\"date (year-month): \" + (timeFormat(datum[\"yearmonth_date\"], timeUnitSpecifier([\"year\",\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Max of temp_max: \" + (format(datum[\"max_temp_max\"], \"\"))"
+ "signal": "\"date (year-month): \" + (!isValid(datum[\"yearmonth_date\"]) || !isFinite(+datum[\"yearmonth_date\"]) ? \"\" + datum[\"yearmonth_date\"] : timeFormat(datum[\"yearmonth_date\"], timeUnitSpecifier([\"year\",\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Max of temp_max: \" + (!isValid(datum[\"max_temp_max\"]) || !isFinite(+datum[\"max_temp_max\"]) ? \"\" + datum[\"max_temp_max\"] : format(datum[\"max_temp_max\"], \"\"))"
},
"x": {"scale": "x", "field": "yearmonth_date"},
"y": {"scale": "y", "field": "max_temp_max"},
diff --git a/examples/compiled/line_mean_month.vg.json b/examples/compiled/line_mean_month.vg.json
index 68b8c11809..c6c45dd5f2 100644
--- a/examples/compiled/line_mean_month.vg.json
+++ b/examples/compiled/line_mean_month.vg.json
@@ -38,7 +38,7 @@
"update": {
"stroke": {"value": "#4c78a8"},
"description": {
- "signal": "\"date (month): \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of precipitation: \" + (format(datum[\"mean_precipitation\"], \"\"))"
+ "signal": "\"date (month): \" + (!isValid(datum[\"month_date\"]) || !isFinite(+datum[\"month_date\"]) ? \"\" + datum[\"month_date\"] : timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of precipitation: \" + (!isValid(datum[\"mean_precipitation\"]) || !isFinite(+datum[\"mean_precipitation\"]) ? \"\" + datum[\"mean_precipitation\"] : format(datum[\"mean_precipitation\"], \"\"))"
},
"x": {"scale": "x", "field": "month_date"},
"y": {"scale": "y", "field": "mean_precipitation"},
diff --git a/examples/compiled/line_mean_year.vg.json b/examples/compiled/line_mean_year.vg.json
index 00e5abe839..4d99bdebf0 100644
--- a/examples/compiled/line_mean_year.vg.json
+++ b/examples/compiled/line_mean_year.vg.json
@@ -38,7 +38,7 @@
"update": {
"stroke": {"value": "#4c78a8"},
"description": {
- "signal": "\"date (year): \" + (timeFormat(datum[\"year_date\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of temp_max: \" + (format(datum[\"mean_temp_max\"], \"\"))"
+ "signal": "\"date (year): \" + (!isValid(datum[\"year_date\"]) || !isFinite(+datum[\"year_date\"]) ? \"\" + datum[\"year_date\"] : timeFormat(datum[\"year_date\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of temp_max: \" + (!isValid(datum[\"mean_temp_max\"]) || !isFinite(+datum[\"mean_temp_max\"]) ? \"\" + datum[\"mean_temp_max\"] : format(datum[\"mean_temp_max\"], \"\"))"
},
"x": {"scale": "x", "field": "year_date"},
"y": {"scale": "y", "field": "mean_temp_max"},
diff --git a/examples/compiled/line_monotone.vg.json b/examples/compiled/line_monotone.vg.json
index 979a056181..97fd2d25ee 100644
--- a/examples/compiled/line_monotone.vg.json
+++ b/examples/compiled/line_monotone.vg.json
@@ -25,7 +25,7 @@
"interpolate": {"value": "monotone"},
"stroke": {"value": "#4c78a8"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"price\"], \"\"))"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\"))"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "price"},
diff --git a/examples/compiled/line_month.vg.json b/examples/compiled/line_month.vg.json
index ddec4ddc82..a5ccc45654 100644
--- a/examples/compiled/line_month.vg.json
+++ b/examples/compiled/line_month.vg.json
@@ -39,7 +39,7 @@
"interpolate": {"value": "monotone"},
"stroke": {"value": "#4c78a8"},
"description": {
- "signal": "\"date (month): \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of temp_max: \" + (format(datum[\"mean_temp_max\"], \"\"))"
+ "signal": "\"date (month): \" + (!isValid(datum[\"month_date\"]) || !isFinite(+datum[\"month_date\"]) ? \"\" + datum[\"month_date\"] : timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of temp_max: \" + (!isValid(datum[\"mean_temp_max\"]) || !isFinite(+datum[\"mean_temp_max\"]) ? \"\" + datum[\"mean_temp_max\"] : format(datum[\"mean_temp_max\"], \"\"))"
},
"x": {"scale": "x", "field": "month_date"},
"y": {"scale": "y", "field": "mean_temp_max"},
diff --git a/examples/compiled/line_month_center_band.vg.json b/examples/compiled/line_month_center_band.vg.json
index 03b1c30f23..0bdb478144 100644
--- a/examples/compiled/line_month_center_band.vg.json
+++ b/examples/compiled/line_month_center_band.vg.json
@@ -40,7 +40,7 @@
"interpolate": {"value": "monotone"},
"stroke": {"value": "#4c78a8"},
"description": {
- "signal": "\"date (month): \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of temp_max: \" + (format(datum[\"mean_temp_max\"], \"\"))"
+ "signal": "\"date (month): \" + (!isValid(datum[\"month_date\"]) || !isFinite(+datum[\"month_date\"]) ? \"\" + datum[\"month_date\"] : timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of temp_max: \" + (!isValid(datum[\"mean_temp_max\"]) || !isFinite(+datum[\"mean_temp_max\"]) ? \"\" + datum[\"mean_temp_max\"] : format(datum[\"mean_temp_max\"], \"\"))"
},
"x": {
"signal": "scale(\"x\", 0.5 * datum[\"month_date\"] + 0.5 * datum[\"month_date_end\"])"
diff --git a/examples/compiled/line_month_center_band_offset.vg.json b/examples/compiled/line_month_center_band_offset.vg.json
index c89e017563..830d8564bb 100644
--- a/examples/compiled/line_month_center_band_offset.vg.json
+++ b/examples/compiled/line_month_center_band_offset.vg.json
@@ -42,7 +42,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"date (month): \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of precipitation: \" + (format(datum[\"mean_precipitation\"], \"\"))"
+ "signal": "\"date (month): \" + (!isValid(datum[\"month_date\"]) || !isFinite(+datum[\"month_date\"]) ? \"\" + datum[\"month_date\"] : timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of precipitation: \" + (!isValid(datum[\"mean_precipitation\"]) || !isFinite(+datum[\"mean_precipitation\"]) ? \"\" + datum[\"mean_precipitation\"] : format(datum[\"mean_precipitation\"], \"\"))"
},
"x2": {
"scale": "x",
diff --git a/examples/compiled/line_narrow_2year_span.vg.json b/examples/compiled/line_narrow_2year_span.vg.json
index 098235082b..dd9d26fc30 100644
--- a/examples/compiled/line_narrow_2year_span.vg.json
+++ b/examples/compiled/line_narrow_2year_span.vg.json
@@ -45,7 +45,7 @@
"update": {
"stroke": {"value": "#4c78a8"},
"description": {
- "signal": "\"date (year): \" + (timeFormat(datum[\"year_step_2_date\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Average of price: \" + (format(datum[\"average_price\"], \"\"))"
+ "signal": "\"date (year): \" + (!isValid(datum[\"year_step_2_date\"]) || !isFinite(+datum[\"year_step_2_date\"]) ? \"\" + datum[\"year_step_2_date\"] : timeFormat(datum[\"year_step_2_date\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Average of price: \" + (!isValid(datum[\"average_price\"]) || !isFinite(+datum[\"average_price\"]) ? \"\" + datum[\"average_price\"] : format(datum[\"average_price\"], \"\"))"
},
"x": {"scale": "x", "field": "year_step_2_date"},
"y": {"scale": "y", "field": "average_price"},
diff --git a/examples/compiled/line_narrow_year_span.vg.json b/examples/compiled/line_narrow_year_span.vg.json
index 1f63be521a..9c414f2bb4 100644
--- a/examples/compiled/line_narrow_year_span.vg.json
+++ b/examples/compiled/line_narrow_year_span.vg.json
@@ -44,7 +44,7 @@
"update": {
"stroke": {"value": "#4c78a8"},
"description": {
- "signal": "\"date (year): \" + (timeFormat(datum[\"year_date\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Average of price: \" + (format(datum[\"average_price\"], \"\"))"
+ "signal": "\"date (year): \" + (!isValid(datum[\"year_date\"]) || !isFinite(+datum[\"year_date\"]) ? \"\" + datum[\"year_date\"] : timeFormat(datum[\"year_date\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Average of price: \" + (!isValid(datum[\"average_price\"]) || !isFinite(+datum[\"average_price\"]) ? \"\" + datum[\"average_price\"] : format(datum[\"average_price\"], \"\"))"
},
"x": {"scale": "x", "field": "year_date"},
"y": {"scale": "y", "field": "average_price"},
diff --git a/examples/compiled/line_narrow_yearmonth_span.vg.json b/examples/compiled/line_narrow_yearmonth_span.vg.json
index 6eb37d6108..eaadbad36d 100644
--- a/examples/compiled/line_narrow_yearmonth_span.vg.json
+++ b/examples/compiled/line_narrow_yearmonth_span.vg.json
@@ -57,11 +57,11 @@
"encode": {
"update": {
"tooltip": {
- "signal": "{\"date (year-month)\": timeFormat(datum[\"yearmonth_date\"], timeUnitSpecifier([\"year\",\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"})), \"Average of price\": format(datum[\"average_price\"], \"\")}"
+ "signal": "{\"date (year-month)\": !isValid(datum[\"yearmonth_date\"]) || !isFinite(+datum[\"yearmonth_date\"]) ? \"\" + datum[\"yearmonth_date\"] : timeFormat(datum[\"yearmonth_date\"], timeUnitSpecifier([\"year\",\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"})), \"Average of price\": !isValid(datum[\"average_price\"]) || !isFinite(+datum[\"average_price\"]) ? \"\" + datum[\"average_price\"] : format(datum[\"average_price\"], \"\")}"
},
"stroke": {"value": "#4c78a8"},
"description": {
- "signal": "\"date (year-month): \" + (timeFormat(datum[\"yearmonth_date\"], timeUnitSpecifier([\"year\",\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Average of price: \" + (format(datum[\"average_price\"], \"\"))"
+ "signal": "\"date (year-month): \" + (!isValid(datum[\"yearmonth_date\"]) || !isFinite(+datum[\"yearmonth_date\"]) ? \"\" + datum[\"yearmonth_date\"] : timeFormat(datum[\"yearmonth_date\"], timeUnitSpecifier([\"year\",\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Average of price: \" + (!isValid(datum[\"average_price\"]) || !isFinite(+datum[\"average_price\"]) ? \"\" + datum[\"average_price\"] : format(datum[\"average_price\"], \"\"))"
},
"x": {"scale": "x", "field": "yearmonth_date"},
"y": {"scale": "y", "field": "average_price"},
@@ -80,12 +80,12 @@
"update": {
"opacity": {"value": 1},
"tooltip": {
- "signal": "{\"date (year-month)\": timeFormat(datum[\"yearmonth_date\"], timeUnitSpecifier([\"year\",\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"})), \"Average of price\": format(datum[\"average_price\"], \"\")}"
+ "signal": "{\"date (year-month)\": !isValid(datum[\"yearmonth_date\"]) || !isFinite(+datum[\"yearmonth_date\"]) ? \"\" + datum[\"yearmonth_date\"] : timeFormat(datum[\"yearmonth_date\"], timeUnitSpecifier([\"year\",\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"})), \"Average of price\": !isValid(datum[\"average_price\"]) || !isFinite(+datum[\"average_price\"]) ? \"\" + datum[\"average_price\"] : format(datum[\"average_price\"], \"\")}"
},
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"date (year-month): \" + (timeFormat(datum[\"yearmonth_date\"], timeUnitSpecifier([\"year\",\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Average of price: \" + (format(datum[\"average_price\"], \"\"))"
+ "signal": "\"date (year-month): \" + (!isValid(datum[\"yearmonth_date\"]) || !isFinite(+datum[\"yearmonth_date\"]) ? \"\" + datum[\"yearmonth_date\"] : timeFormat(datum[\"yearmonth_date\"], timeUnitSpecifier([\"year\",\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Average of price: \" + (!isValid(datum[\"average_price\"]) || !isFinite(+datum[\"average_price\"]) ? \"\" + datum[\"average_price\"] : format(datum[\"average_price\"], \"\"))"
},
"x": {"scale": "x", "field": "yearmonth_date"},
"y": {"scale": "y", "field": "average_price"}
diff --git a/examples/compiled/line_narrow_yearquarter_span.vg.json b/examples/compiled/line_narrow_yearquarter_span.vg.json
index f1a0ab4aa9..1e673fa3de 100644
--- a/examples/compiled/line_narrow_yearquarter_span.vg.json
+++ b/examples/compiled/line_narrow_yearquarter_span.vg.json
@@ -44,7 +44,7 @@
"update": {
"stroke": {"value": "#4c78a8"},
"description": {
- "signal": "\"date (year-quarter): \" + (timeFormat(datum[\"yearquarter_date\"], timeUnitSpecifier([\"year\",\"quarter\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Average of price: \" + (format(datum[\"average_price\"], \"\"))"
+ "signal": "\"date (year-quarter): \" + (!isValid(datum[\"yearquarter_date\"]) || !isFinite(+datum[\"yearquarter_date\"]) ? \"\" + datum[\"yearquarter_date\"] : timeFormat(datum[\"yearquarter_date\"], timeUnitSpecifier([\"year\",\"quarter\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Average of price: \" + (!isValid(datum[\"average_price\"]) || !isFinite(+datum[\"average_price\"]) ? \"\" + datum[\"average_price\"] : format(datum[\"average_price\"], \"\"))"
},
"x": {"scale": "x", "field": "yearquarter_date"},
"y": {"scale": "y", "field": "average_price"},
diff --git a/examples/compiled/line_outside_domain.vg.json b/examples/compiled/line_outside_domain.vg.json
index b11608b894..9d4c552e66 100644
--- a/examples/compiled/line_outside_domain.vg.json
+++ b/examples/compiled/line_outside_domain.vg.json
@@ -39,7 +39,7 @@
"update": {
"stroke": {"value": "#4c78a8"},
"description": {
- "signal": "\"wavelength: \" + (format(datum[\"wavelength\"], \"\")) + \"; power: \" + (format(datum[\"power\"], \"\"))"
+ "signal": "\"wavelength: \" + (!isValid(datum[\"wavelength\"]) || !isFinite(+datum[\"wavelength\"]) ? \"\" + datum[\"wavelength\"] : format(datum[\"wavelength\"], \"\")) + \"; power: \" + (!isValid(datum[\"power\"]) || !isFinite(+datum[\"power\"]) ? \"\" + datum[\"power\"] : format(datum[\"power\"], \"\"))"
},
"x": {"scale": "x", "field": "wavelength"},
"y": {"scale": "y", "field": "power"},
diff --git a/examples/compiled/line_overlay.vg.json b/examples/compiled/line_overlay.vg.json
index 6cf07f6de8..5e57863f3c 100644
--- a/examples/compiled/line_overlay.vg.json
+++ b/examples/compiled/line_overlay.vg.json
@@ -66,7 +66,7 @@
"update": {
"stroke": {"scale": "color", "field": "symbol"},
"description": {
- "signal": "\"date (year): \" + (timeFormat(datum[\"year_date\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of price: \" + (format(datum[\"mean_price\"], \"\")) + \"; symbol: \" + (isValid(datum[\"symbol\"]) ? datum[\"symbol\"] : \"\"+datum[\"symbol\"])"
+ "signal": "\"date (year): \" + (!isValid(datum[\"year_date\"]) || !isFinite(+datum[\"year_date\"]) ? \"\" + datum[\"year_date\"] : timeFormat(datum[\"year_date\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of price: \" + (!isValid(datum[\"mean_price\"]) || !isFinite(+datum[\"mean_price\"]) ? \"\" + datum[\"mean_price\"] : format(datum[\"mean_price\"], \"\")) + \"; symbol: \" + (\"\" + datum[\"symbol\"])"
},
"x": {"scale": "x", "field": "year_date"},
"y": {"scale": "y", "field": "mean_price"},
@@ -89,7 +89,7 @@
"fill": {"scale": "color", "field": "symbol"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"date (year): \" + (timeFormat(datum[\"year_date\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of price: \" + (format(datum[\"mean_price\"], \"\")) + \"; symbol: \" + (isValid(datum[\"symbol\"]) ? datum[\"symbol\"] : \"\"+datum[\"symbol\"])"
+ "signal": "\"date (year): \" + (!isValid(datum[\"year_date\"]) || !isFinite(+datum[\"year_date\"]) ? \"\" + datum[\"year_date\"] : timeFormat(datum[\"year_date\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of price: \" + (!isValid(datum[\"mean_price\"]) || !isFinite(+datum[\"mean_price\"]) ? \"\" + datum[\"mean_price\"] : format(datum[\"mean_price\"], \"\")) + \"; symbol: \" + (\"\" + datum[\"symbol\"])"
},
"x": {"scale": "x", "field": "year_date"},
"y": {"scale": "y", "field": "mean_price"}
diff --git a/examples/compiled/line_overlay_stroked.vg.json b/examples/compiled/line_overlay_stroked.vg.json
index 457b9fbf1e..f1a3fe161b 100644
--- a/examples/compiled/line_overlay_stroked.vg.json
+++ b/examples/compiled/line_overlay_stroked.vg.json
@@ -66,7 +66,7 @@
"update": {
"stroke": {"scale": "color", "field": "symbol"},
"description": {
- "signal": "\"date (year): \" + (timeFormat(datum[\"year_date\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of price: \" + (format(datum[\"mean_price\"], \"\")) + \"; symbol: \" + (isValid(datum[\"symbol\"]) ? datum[\"symbol\"] : \"\"+datum[\"symbol\"])"
+ "signal": "\"date (year): \" + (!isValid(datum[\"year_date\"]) || !isFinite(+datum[\"year_date\"]) ? \"\" + datum[\"year_date\"] : timeFormat(datum[\"year_date\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of price: \" + (!isValid(datum[\"mean_price\"]) || !isFinite(+datum[\"mean_price\"]) ? \"\" + datum[\"mean_price\"] : format(datum[\"mean_price\"], \"\")) + \"; symbol: \" + (\"\" + datum[\"symbol\"])"
},
"x": {"scale": "x", "field": "year_date"},
"y": {"scale": "y", "field": "mean_price"},
@@ -90,7 +90,7 @@
"stroke": {"scale": "color", "field": "symbol"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"date (year): \" + (timeFormat(datum[\"year_date\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of price: \" + (format(datum[\"mean_price\"], \"\")) + \"; symbol: \" + (isValid(datum[\"symbol\"]) ? datum[\"symbol\"] : \"\"+datum[\"symbol\"])"
+ "signal": "\"date (year): \" + (!isValid(datum[\"year_date\"]) || !isFinite(+datum[\"year_date\"]) ? \"\" + datum[\"year_date\"] : timeFormat(datum[\"year_date\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of price: \" + (!isValid(datum[\"mean_price\"]) || !isFinite(+datum[\"mean_price\"]) ? \"\" + datum[\"mean_price\"] : format(datum[\"mean_price\"], \"\")) + \"; symbol: \" + (\"\" + datum[\"symbol\"])"
},
"x": {"scale": "x", "field": "year_date"},
"y": {"scale": "y", "field": "mean_price"}
diff --git a/examples/compiled/line_params.vg.json b/examples/compiled/line_params.vg.json
index fff864cdd8..ec4264874b 100644
--- a/examples/compiled/line_params.vg.json
+++ b/examples/compiled/line_params.vg.json
@@ -84,7 +84,7 @@
"tension": {"signal": "tension"},
"stroke": {"value": "#4c78a8"},
"description": {
- "signal": "\"u: \" + (format(datum[\"u\"], \"\")) + \"; v: \" + (format(datum[\"v\"], \"\"))"
+ "signal": "\"u: \" + (!isValid(datum[\"u\"]) || !isFinite(+datum[\"u\"]) ? \"\" + datum[\"u\"] : format(datum[\"u\"], \"\")) + \"; v: \" + (!isValid(datum[\"v\"]) || !isFinite(+datum[\"v\"]) ? \"\" + datum[\"v\"] : format(datum[\"v\"], \"\"))"
},
"x": {"scale": "x", "field": "u"},
"y": {"scale": "y", "field": "v"},
diff --git a/examples/compiled/line_quarter_legend.vg.json b/examples/compiled/line_quarter_legend.vg.json
index 32a109b83f..e766d44bd3 100644
--- a/examples/compiled/line_quarter_legend.vg.json
+++ b/examples/compiled/line_quarter_legend.vg.json
@@ -62,7 +62,7 @@
"update": {
"stroke": {"scale": "color", "field": "quarter_date"},
"description": {
- "signal": "\"date (year): \" + (timeFormat(datum[\"year_date\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of price: \" + (format(datum[\"mean_price\"], \"\")) + \"; date (quarter): \" + (timeFormat(datum[\"quarter_date\"], timeUnitSpecifier([\"quarter\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"})))"
+ "signal": "\"date (year): \" + (!isValid(datum[\"year_date\"]) || !isFinite(+datum[\"year_date\"]) ? \"\" + datum[\"year_date\"] : timeFormat(datum[\"year_date\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of price: \" + (!isValid(datum[\"mean_price\"]) || !isFinite(+datum[\"mean_price\"]) ? \"\" + datum[\"mean_price\"] : format(datum[\"mean_price\"], \"\")) + \"; date (quarter): \" + (!isValid(datum[\"quarter_date\"]) || !isFinite(+datum[\"quarter_date\"]) ? \"\" + datum[\"quarter_date\"] : timeFormat(datum[\"quarter_date\"], timeUnitSpecifier([\"quarter\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"})))"
},
"x": {"scale": "x", "field": "year_date"},
"y": {"scale": "y", "field": "mean_price"},
diff --git a/examples/compiled/line_shape_overlay.vg.json b/examples/compiled/line_shape_overlay.vg.json
index bd4a016275..56742fde65 100644
--- a/examples/compiled/line_shape_overlay.vg.json
+++ b/examples/compiled/line_shape_overlay.vg.json
@@ -35,7 +35,7 @@
"update": {
"stroke": {"value": "#4c78a8"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"price\"], \"\"))"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\"))"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "price"},
@@ -56,7 +56,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"price\"], \"\"))"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\"))"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "price"},
diff --git a/examples/compiled/line_skip_invalid.vg.json b/examples/compiled/line_skip_invalid.vg.json
index cdef5d73ac..a016ad1333 100644
--- a/examples/compiled/line_skip_invalid.vg.json
+++ b/examples/compiled/line_skip_invalid.vg.json
@@ -37,7 +37,7 @@
"update": {
"stroke": {"value": "#4c78a8"},
"description": {
- "signal": "\"x: \" + (format(datum[\"x\"], \"\")) + \"; y: \" + (format(datum[\"y\"], \"\"))"
+ "signal": "\"x: \" + (!isValid(datum[\"x\"]) || !isFinite(+datum[\"x\"]) ? \"\" + datum[\"x\"] : format(datum[\"x\"], \"\")) + \"; y: \" + (!isValid(datum[\"y\"]) || !isFinite(+datum[\"y\"]) ? \"\" + datum[\"y\"] : format(datum[\"y\"], \"\"))"
},
"x": {"scale": "x", "field": "x"},
"y": {"scale": "y", "field": "y"},
diff --git a/examples/compiled/line_skip_invalid_mid.vg.json b/examples/compiled/line_skip_invalid_mid.vg.json
index 5a64cd39be..9176e0ac70 100644
--- a/examples/compiled/line_skip_invalid_mid.vg.json
+++ b/examples/compiled/line_skip_invalid_mid.vg.json
@@ -37,7 +37,7 @@
"update": {
"stroke": {"value": "#4c78a8"},
"description": {
- "signal": "\"x: \" + (format(datum[\"x\"], \"\")) + \"; y: \" + (format(datum[\"y\"], \"\"))"
+ "signal": "\"x: \" + (!isValid(datum[\"x\"]) || !isFinite(+datum[\"x\"]) ? \"\" + datum[\"x\"] : format(datum[\"x\"], \"\")) + \"; y: \" + (!isValid(datum[\"y\"]) || !isFinite(+datum[\"y\"]) ? \"\" + datum[\"y\"] : format(datum[\"y\"], \"\"))"
},
"x": {"scale": "x", "field": "x"},
"y": {"scale": "y", "field": "y"},
diff --git a/examples/compiled/line_skip_invalid_mid_cap_square.vg.json b/examples/compiled/line_skip_invalid_mid_cap_square.vg.json
index d8a543ba92..d51d738635 100644
--- a/examples/compiled/line_skip_invalid_mid_cap_square.vg.json
+++ b/examples/compiled/line_skip_invalid_mid_cap_square.vg.json
@@ -38,7 +38,7 @@
"strokeCap": {"value": "square"},
"stroke": {"value": "#4c78a8"},
"description": {
- "signal": "\"x: \" + (format(datum[\"x\"], \"\")) + \"; y: \" + (format(datum[\"y\"], \"\"))"
+ "signal": "\"x: \" + (!isValid(datum[\"x\"]) || !isFinite(+datum[\"x\"]) ? \"\" + datum[\"x\"] : format(datum[\"x\"], \"\")) + \"; y: \" + (!isValid(datum[\"y\"]) || !isFinite(+datum[\"y\"]) ? \"\" + datum[\"y\"] : format(datum[\"y\"], \"\"))"
},
"x": {"scale": "x", "field": "x"},
"y": {"scale": "y", "field": "y"},
diff --git a/examples/compiled/line_skip_invalid_mid_overlay.vg.json b/examples/compiled/line_skip_invalid_mid_overlay.vg.json
index 728e6a6987..123ccc68ab 100644
--- a/examples/compiled/line_skip_invalid_mid_overlay.vg.json
+++ b/examples/compiled/line_skip_invalid_mid_overlay.vg.json
@@ -47,7 +47,7 @@
"update": {
"stroke": {"value": "#4c78a8"},
"description": {
- "signal": "\"x: \" + (format(datum[\"x\"], \"\")) + \"; y: \" + (format(datum[\"y\"], \"\"))"
+ "signal": "\"x: \" + (!isValid(datum[\"x\"]) || !isFinite(+datum[\"x\"]) ? \"\" + datum[\"x\"] : format(datum[\"x\"], \"\")) + \"; y: \" + (!isValid(datum[\"y\"]) || !isFinite(+datum[\"y\"]) ? \"\" + datum[\"y\"] : format(datum[\"y\"], \"\"))"
},
"x": {"scale": "x", "field": "x"},
"y": {"scale": "y", "field": "y"},
@@ -68,7 +68,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"x: \" + (format(datum[\"x\"], \"\")) + \"; y: \" + (format(datum[\"y\"], \"\"))"
+ "signal": "\"x: \" + (!isValid(datum[\"x\"]) || !isFinite(+datum[\"x\"]) ? \"\" + datum[\"x\"] : format(datum[\"x\"], \"\")) + \"; y: \" + (!isValid(datum[\"y\"]) || !isFinite(+datum[\"y\"]) ? \"\" + datum[\"y\"] : format(datum[\"y\"], \"\"))"
},
"x": {"scale": "x", "field": "x"},
"y": {"scale": "y", "field": "y"}
diff --git a/examples/compiled/line_slope.vg.json b/examples/compiled/line_slope.vg.json
index 57c9786f33..6cd884fb19 100644
--- a/examples/compiled/line_slope.vg.json
+++ b/examples/compiled/line_slope.vg.json
@@ -56,7 +56,7 @@
"update": {
"stroke": {"scale": "color", "field": "site"},
"description": {
- "signal": "\"year: \" + (isValid(datum[\"year\"]) ? datum[\"year\"] : \"\"+datum[\"year\"]) + \"; Median of yield: \" + (format(datum[\"median_yield\"], \"\")) + \"; site: \" + (isValid(datum[\"site\"]) ? datum[\"site\"] : \"\"+datum[\"site\"])"
+ "signal": "\"year: \" + (\"\" + datum[\"year\"]) + \"; Median of yield: \" + (!isValid(datum[\"median_yield\"]) || !isFinite(+datum[\"median_yield\"]) ? \"\" + datum[\"median_yield\"] : format(datum[\"median_yield\"], \"\")) + \"; site: \" + (\"\" + datum[\"site\"])"
},
"x": {"scale": "x", "field": "year"},
"y": {"scale": "y", "field": "median_yield"},
diff --git a/examples/compiled/line_sort_axis.vg.json b/examples/compiled/line_sort_axis.vg.json
index 87adf2251c..970db9686c 100644
--- a/examples/compiled/line_sort_axis.vg.json
+++ b/examples/compiled/line_sort_axis.vg.json
@@ -43,7 +43,7 @@
"update": {
"stroke": {"value": "#4c78a8"},
"description": {
- "signal": "\"Name: \" + (isValid(datum[\"Name\"]) ? datum[\"Name\"] : \"\"+datum[\"Name\"]) + \"; Score: \" + (format(datum[\"Score\"], \"\"))"
+ "signal": "\"Name: \" + (\"\" + datum[\"Name\"]) + \"; Score: \" + (!isValid(datum[\"Score\"]) || !isFinite(+datum[\"Score\"]) ? \"\" + datum[\"Score\"] : format(datum[\"Score\"], \"\"))"
},
"x": {"scale": "x", "field": "Name"},
"y": {"scale": "y", "field": "Score"},
diff --git a/examples/compiled/line_step.vg.json b/examples/compiled/line_step.vg.json
index 6ee8a72817..4b2173c270 100644
--- a/examples/compiled/line_step.vg.json
+++ b/examples/compiled/line_step.vg.json
@@ -26,7 +26,7 @@
"interpolate": {"value": "step-after"},
"stroke": {"value": "#4c78a8"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"price\"], \"\"))"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\"))"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "price"},
diff --git a/examples/compiled/line_strokedash.vg.json b/examples/compiled/line_strokedash.vg.json
index 73a7854920..5a255e095f 100644
--- a/examples/compiled/line_strokedash.vg.json
+++ b/examples/compiled/line_strokedash.vg.json
@@ -42,7 +42,7 @@
"stroke": {"value": "#4c78a8"},
"strokeDash": {"scale": "strokeDash", "field": "symbol"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"price\"], \"\")) + \"; symbol: \" + (isValid(datum[\"symbol\"]) ? datum[\"symbol\"] : \"\"+datum[\"symbol\"])"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\")) + \"; symbol: \" + (\"\" + datum[\"symbol\"])"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "price"},
diff --git a/examples/compiled/line_timestamp_domain.vg.json b/examples/compiled/line_timestamp_domain.vg.json
index 47e225e866..82dab07339 100644
--- a/examples/compiled/line_timestamp_domain.vg.json
+++ b/examples/compiled/line_timestamp_domain.vg.json
@@ -34,7 +34,7 @@
"update": {
"stroke": {"value": "#4c78a8"},
"description": {
- "signal": "\"ts: \" + (timeFormat(datum[\"ts\"], '%b %d, %Y')) + \"; v: \" + (format(datum[\"v\"], \"\"))"
+ "signal": "\"ts: \" + (!isValid(datum[\"ts\"]) || !isFinite(+datum[\"ts\"]) ? \"\" + datum[\"ts\"] : timeFormat(datum[\"ts\"], '%b %d, %Y')) + \"; v: \" + (!isValid(datum[\"v\"]) || !isFinite(+datum[\"v\"]) ? \"\" + datum[\"v\"] : format(datum[\"v\"], \"\"))"
},
"x": {"scale": "x", "field": "ts"},
"y": {"scale": "y", "field": "v"},
diff --git a/examples/compiled/line_timeunit_transform.vg.json b/examples/compiled/line_timeunit_transform.vg.json
index 7cdf3e1bf9..feb15956cd 100644
--- a/examples/compiled/line_timeunit_transform.vg.json
+++ b/examples/compiled/line_timeunit_transform.vg.json
@@ -42,7 +42,7 @@
"update": {
"stroke": {"value": "#4c78a8"},
"description": {
- "signal": "\"month: \" + (timeFormat(datum[\"month\"], '%b')) + \"; Max of temp_max: \" + (format(datum[\"max_temp_max\"], \"\"))"
+ "signal": "\"month: \" + (!isValid(datum[\"month\"]) || !isFinite(+datum[\"month\"]) ? \"\" + datum[\"month\"] : timeFormat(datum[\"month\"], '%b')) + \"; Max of temp_max: \" + (!isValid(datum[\"max_temp_max\"]) || !isFinite(+datum[\"max_temp_max\"]) ? \"\" + datum[\"max_temp_max\"] : format(datum[\"max_temp_max\"], \"\"))"
},
"x": {"scale": "x", "field": "month"},
"y": {"scale": "y", "field": "max_temp_max"},
diff --git a/examples/compiled/lookup.vg.json b/examples/compiled/lookup.vg.json
index 461db2d4fd..14b7cd4c22 100644
--- a/examples/compiled/lookup.vg.json
+++ b/examples/compiled/lookup.vg.json
@@ -54,7 +54,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"group: \" + (isValid(datum[\"group\"]) ? datum[\"group\"] : \"\"+datum[\"group\"]) + \"; Mean of age: \" + (format(datum[\"mean_age\"], \"\"))"
+ "signal": "\"group: \" + (\"\" + datum[\"group\"]) + \"; Mean of age: \" + (!isValid(datum[\"mean_age\"]) || !isFinite(+datum[\"mean_age\"]) ? \"\" + datum[\"mean_age\"] : format(datum[\"mean_age\"], \"\"))"
},
"x": {"scale": "x", "field": "group"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/nested_concat_align.vg.json b/examples/compiled/nested_concat_align.vg.json
index 9ff83c64eb..1c787966ab 100644
--- a/examples/compiled/nested_concat_align.vg.json
+++ b/examples/compiled/nested_concat_align.vg.json
@@ -193,7 +193,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Rotten Tomatoes Rating (binned): \" + (!isValid(datum[\"bin_maxbins_20_Rotten Tomatoes Rating\"]) || !isFinite(+datum[\"bin_maxbins_20_Rotten Tomatoes Rating\"]) ? \"null\" : format(datum[\"bin_maxbins_20_Rotten Tomatoes Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_Rotten Tomatoes Rating_end\"], \"\")) + \"; Count: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"Rotten Tomatoes Rating (binned): \" + (!isValid(datum[\"bin_maxbins_20_Rotten Tomatoes Rating\"]) || !isFinite(+datum[\"bin_maxbins_20_Rotten Tomatoes Rating\"]) ? \"\" + datum[\"bin_maxbins_20_Rotten Tomatoes Rating\"] : format(datum[\"bin_maxbins_20_Rotten Tomatoes Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_Rotten Tomatoes Rating_end\"], \"\")) + \"; Count: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x2": {
"scale": "child__column_Rotten_Tomatoes_Rating_x",
@@ -278,7 +278,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_20_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_20_IMDB Rating\"]) ? \"null\" : format(datum[\"bin_maxbins_20_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_IMDB Rating_end\"], \"\")) + \"; Count: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_20_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_20_IMDB Rating\"]) ? \"\" + datum[\"bin_maxbins_20_IMDB Rating\"] : format(datum[\"bin_maxbins_20_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_IMDB Rating_end\"], \"\")) + \"; Count: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x2": {
"scale": "child__column_IMDB_Rating_x",
@@ -368,7 +368,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"US Gross (binned): \" + (!isValid(datum[\"bin_maxbins_20_US Gross\"]) || !isFinite(+datum[\"bin_maxbins_20_US Gross\"]) ? \"null\" : format(datum[\"bin_maxbins_20_US Gross\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_US Gross_end\"], \"\")) + \"; Count: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"US Gross (binned): \" + (!isValid(datum[\"bin_maxbins_20_US Gross\"]) || !isFinite(+datum[\"bin_maxbins_20_US Gross\"]) ? \"\" + datum[\"bin_maxbins_20_US Gross\"] : format(datum[\"bin_maxbins_20_US Gross\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_US Gross_end\"], \"\")) + \"; Count: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x2": {
"scale": "child__column_US_Gross_x",
@@ -450,7 +450,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Worldwide Gross (binned): \" + (!isValid(datum[\"bin_maxbins_20_Worldwide Gross\"]) || !isFinite(+datum[\"bin_maxbins_20_Worldwide Gross\"]) ? \"null\" : format(datum[\"bin_maxbins_20_Worldwide Gross\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_Worldwide Gross_end\"], \"\")) + \"; Count: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"Worldwide Gross (binned): \" + (!isValid(datum[\"bin_maxbins_20_Worldwide Gross\"]) || !isFinite(+datum[\"bin_maxbins_20_Worldwide Gross\"]) ? \"\" + datum[\"bin_maxbins_20_Worldwide Gross\"] : format(datum[\"bin_maxbins_20_Worldwide Gross\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_Worldwide Gross_end\"], \"\")) + \"; Count: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x2": {
"scale": "child__column_Worldwide_Gross_x",
diff --git a/examples/compiled/parallel_coordinate.vg.json b/examples/compiled/parallel_coordinate.vg.json
index 35d0cb7a13..b8d1d2cd48 100644
--- a/examples/compiled/parallel_coordinate.vg.json
+++ b/examples/compiled/parallel_coordinate.vg.json
@@ -70,7 +70,7 @@
"update": {
"stroke": {"value": "#ccc"},
"description": {
- "signal": "\"key: \" + (isValid(datum[\"key\"]) ? datum[\"key\"] : \"\"+datum[\"key\"]) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"key: \" + (\"\" + datum[\"key\"]) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x": {"scale": "x", "field": "key", "band": 0.5},
"y": {"value": 0},
@@ -106,10 +106,10 @@
"stroke": {"scale": "color", "field": "Species"},
"opacity": {"value": 0.3},
"tooltip": {
- "signal": "{\"Beak Length (mm)\": format(datum[\"Beak Length (mm)\"], \"\"), \"Beak Depth (mm)\": format(datum[\"Beak Depth (mm)\"], \"\"), \"Flipper Length (mm)\": format(datum[\"Flipper Length (mm)\"], \"\"), \"Body Mass (g)\": format(datum[\"Body Mass (g)\"], \"\")}"
+ "signal": "{\"Beak Length (mm)\": !isValid(datum[\"Beak Length (mm)\"]) || !isFinite(+datum[\"Beak Length (mm)\"]) ? \"\" + datum[\"Beak Length (mm)\"] : format(datum[\"Beak Length (mm)\"], \"\"), \"Beak Depth (mm)\": !isValid(datum[\"Beak Depth (mm)\"]) || !isFinite(+datum[\"Beak Depth (mm)\"]) ? \"\" + datum[\"Beak Depth (mm)\"] : format(datum[\"Beak Depth (mm)\"], \"\"), \"Flipper Length (mm)\": !isValid(datum[\"Flipper Length (mm)\"]) || !isFinite(+datum[\"Flipper Length (mm)\"]) ? \"\" + datum[\"Flipper Length (mm)\"] : format(datum[\"Flipper Length (mm)\"], \"\"), \"Body Mass (g)\": !isValid(datum[\"Body Mass (g)\"]) || !isFinite(+datum[\"Body Mass (g)\"]) ? \"\" + datum[\"Body Mass (g)\"] : format(datum[\"Body Mass (g)\"], \"\")}"
},
"description": {
- "signal": "\"key: \" + (isValid(datum[\"key\"]) ? datum[\"key\"] : \"\"+datum[\"key\"]) + \"; norm_val: \" + (format(datum[\"norm_val\"], \"\")) + \"; Species: \" + (isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"]) + \"; index: \" + (isValid(datum[\"index\"]) ? datum[\"index\"] : \"\"+datum[\"index\"]) + \"; Beak Length (mm): \" + (format(datum[\"Beak Length (mm)\"], \"\")) + \"; Beak Depth (mm): \" + (format(datum[\"Beak Depth (mm)\"], \"\")) + \"; Flipper Length (mm): \" + (format(datum[\"Flipper Length (mm)\"], \"\")) + \"; Body Mass (g): \" + (format(datum[\"Body Mass (g)\"], \"\"))"
+ "signal": "\"key: \" + (\"\" + datum[\"key\"]) + \"; norm_val: \" + (!isValid(datum[\"norm_val\"]) || !isFinite(+datum[\"norm_val\"]) ? \"\" + datum[\"norm_val\"] : format(datum[\"norm_val\"], \"\")) + \"; Species: \" + (\"\" + datum[\"Species\"]) + \"; index: \" + (\"\" + datum[\"index\"]) + \"; Beak Length (mm): \" + (!isValid(datum[\"Beak Length (mm)\"]) || !isFinite(+datum[\"Beak Length (mm)\"]) ? \"\" + datum[\"Beak Length (mm)\"] : format(datum[\"Beak Length (mm)\"], \"\")) + \"; Beak Depth (mm): \" + (!isValid(datum[\"Beak Depth (mm)\"]) || !isFinite(+datum[\"Beak Depth (mm)\"]) ? \"\" + datum[\"Beak Depth (mm)\"] : format(datum[\"Beak Depth (mm)\"], \"\")) + \"; Flipper Length (mm): \" + (!isValid(datum[\"Flipper Length (mm)\"]) || !isFinite(+datum[\"Flipper Length (mm)\"]) ? \"\" + datum[\"Flipper Length (mm)\"] : format(datum[\"Flipper Length (mm)\"], \"\")) + \"; Body Mass (g): \" + (!isValid(datum[\"Body Mass (g)\"]) || !isFinite(+datum[\"Body Mass (g)\"]) ? \"\" + datum[\"Body Mass (g)\"] : format(datum[\"Body Mass (g)\"], \"\"))"
},
"x": {"scale": "x", "field": "key", "band": 0.5},
"y": {"scale": "y", "field": "norm_val"},
@@ -130,11 +130,13 @@
"update": {
"fill": {"value": "black"},
"description": {
- "signal": "\"key: \" + (isValid(datum[\"key\"]) ? datum[\"key\"] : \"\"+datum[\"key\"]) + \"; Max of max: \" + (format(datum[\"max_max\"], \"\"))"
+ "signal": "\"key: \" + (\"\" + datum[\"key\"]) + \"; Max of max: \" + (!isValid(datum[\"max_max\"]) || !isFinite(+datum[\"max_max\"]) ? \"\" + datum[\"max_max\"] : format(datum[\"max_max\"], \"\"))"
},
"x": {"scale": "x", "field": "key", "band": 0.5},
"y": {"value": 0},
- "text": {"signal": "format(datum[\"max_max\"], \"\")"}
+ "text": {
+ "signal": "!isValid(datum[\"max_max\"]) || !isFinite(+datum[\"max_max\"]) ? \"\" + datum[\"max_max\"] : format(datum[\"max_max\"], \"\")"
+ }
}
}
},
@@ -148,9 +150,7 @@
"opacity": {"value": 0.7},
"fill": {"value": "#ccc"},
"ariaRoleDescription": {"value": "tick"},
- "description": {
- "signal": "\"key: \" + (isValid(datum[\"key\"]) ? datum[\"key\"] : \"\"+datum[\"key\"])"
- },
+ "description": {"signal": "\"key: \" + (\"\" + datum[\"key\"])"},
"xc": {"scale": "x", "field": "key", "band": 0.5},
"yc": {"value": 0},
"width": {"value": 8},
@@ -167,11 +167,13 @@
"update": {
"fill": {"value": "black"},
"description": {
- "signal": "\"key: \" + (isValid(datum[\"key\"]) ? datum[\"key\"] : \"\"+datum[\"key\"]) + \"; Min of mid: \" + (format(datum[\"min_mid\"], \"\"))"
+ "signal": "\"key: \" + (\"\" + datum[\"key\"]) + \"; Min of mid: \" + (!isValid(datum[\"min_mid\"]) || !isFinite(+datum[\"min_mid\"]) ? \"\" + datum[\"min_mid\"] : format(datum[\"min_mid\"], \"\"))"
},
"x": {"scale": "x", "field": "key", "band": 0.5},
"y": {"value": 150},
- "text": {"signal": "format(datum[\"min_mid\"], \"\")"}
+ "text": {
+ "signal": "!isValid(datum[\"min_mid\"]) || !isFinite(+datum[\"min_mid\"]) ? \"\" + datum[\"min_mid\"] : format(datum[\"min_mid\"], \"\")"
+ }
}
}
},
@@ -185,9 +187,7 @@
"opacity": {"value": 0.7},
"fill": {"value": "#ccc"},
"ariaRoleDescription": {"value": "tick"},
- "description": {
- "signal": "\"key: \" + (isValid(datum[\"key\"]) ? datum[\"key\"] : \"\"+datum[\"key\"])"
- },
+ "description": {"signal": "\"key: \" + (\"\" + datum[\"key\"])"},
"xc": {"scale": "x", "field": "key", "band": 0.5},
"yc": {"value": 150},
"width": {"value": 8},
@@ -204,11 +204,13 @@
"update": {
"fill": {"value": "black"},
"description": {
- "signal": "\"key: \" + (isValid(datum[\"key\"]) ? datum[\"key\"] : \"\"+datum[\"key\"]) + \"; Min of min: \" + (format(datum[\"min_min\"], \"\"))"
+ "signal": "\"key: \" + (\"\" + datum[\"key\"]) + \"; Min of min: \" + (!isValid(datum[\"min_min\"]) || !isFinite(+datum[\"min_min\"]) ? \"\" + datum[\"min_min\"] : format(datum[\"min_min\"], \"\"))"
},
"x": {"scale": "x", "field": "key", "band": 0.5},
"y": {"value": 300},
- "text": {"signal": "format(datum[\"min_min\"], \"\")"}
+ "text": {
+ "signal": "!isValid(datum[\"min_min\"]) || !isFinite(+datum[\"min_min\"]) ? \"\" + datum[\"min_min\"] : format(datum[\"min_min\"], \"\")"
+ }
}
}
},
@@ -222,9 +224,7 @@
"opacity": {"value": 0.7},
"fill": {"value": "#ccc"},
"ariaRoleDescription": {"value": "tick"},
- "description": {
- "signal": "\"key: \" + (isValid(datum[\"key\"]) ? datum[\"key\"] : \"\"+datum[\"key\"])"
- },
+ "description": {"signal": "\"key: \" + (\"\" + datum[\"key\"])"},
"xc": {"scale": "x", "field": "key", "band": 0.5},
"yc": {"value": 300},
"width": {"value": 8},
diff --git a/examples/compiled/param_expr.vg.json b/examples/compiled/param_expr.vg.json
index 8a5e816f5e..2f437ae4a9 100644
--- a/examples/compiled/param_expr.vg.json
+++ b/examples/compiled/param_expr.vg.json
@@ -76,7 +76,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\"))"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"}
diff --git a/examples/compiled/param_search_input.vg.json b/examples/compiled/param_search_input.vg.json
index 1825a135a6..b3d3721e0f 100644
--- a/examples/compiled/param_search_input.vg.json
+++ b/examples/compiled/param_search_input.vg.json
@@ -39,12 +39,10 @@
],
"fill": {"value": "transparent"},
"stroke": {"value": "#4c78a8"},
- "tooltip": {
- "signal": "isValid(datum[\"Name\"]) ? datum[\"Name\"] : \"\"+datum[\"Name\"]"
- },
+ "tooltip": {"signal": "\"\" + datum[\"Name\"]"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Name: \" + (isValid(datum[\"Name\"]) ? datum[\"Name\"] : \"\"+datum[\"Name\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Name: \" + (\"\" + datum[\"Name\"])"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"}
diff --git a/examples/compiled/point_1d.vg.json b/examples/compiled/point_1d.vg.json
index f23c53c31e..688755d670 100644
--- a/examples/compiled/point_1d.vg.json
+++ b/examples/compiled/point_1d.vg.json
@@ -31,7 +31,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"IMDB Rating: \" + (format(datum[\"IMDB Rating\"], \"\"))"
+ "signal": "\"IMDB Rating: \" + (!isValid(datum[\"IMDB Rating\"]) || !isFinite(+datum[\"IMDB Rating\"]) ? \"\" + datum[\"IMDB Rating\"] : format(datum[\"IMDB Rating\"], \"\"))"
},
"x": {"scale": "x", "field": "IMDB Rating"},
"y": {"signal": "height", "mult": 0.5}
diff --git a/examples/compiled/point_1d_array.vg.json b/examples/compiled/point_1d_array.vg.json
index b3e45e3c40..24d9ceb453 100644
--- a/examples/compiled/point_1d_array.vg.json
+++ b/examples/compiled/point_1d_array.vg.json
@@ -39,9 +39,7 @@
"fill": {"value": "transparent"},
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
- "description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"])"
- },
+ "description": {"signal": "\"a: \" + (\"\" + datum[\"a\"])"},
"x": {"scale": "x", "field": "a"},
"y": {"signal": "height", "mult": 0.5}
}
diff --git a/examples/compiled/point_2d.vg.json b/examples/compiled/point_2d.vg.json
index 86c0194c92..0a82413f75 100644
--- a/examples/compiled/point_2d.vg.json
+++ b/examples/compiled/point_2d.vg.json
@@ -32,7 +32,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\"))"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"}
diff --git a/examples/compiled/point_2d_aggregate.vg.json b/examples/compiled/point_2d_aggregate.vg.json
index 39bd35f1e1..b98a9e8e1d 100644
--- a/examples/compiled/point_2d_aggregate.vg.json
+++ b/examples/compiled/point_2d_aggregate.vg.json
@@ -56,7 +56,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; Average of b: \" + (format(datum[\"average_b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; Average of b: \" + (!isValid(datum[\"average_b\"]) || !isFinite(+datum[\"average_b\"]) ? \"\" + datum[\"average_b\"] : format(datum[\"average_b\"], \"\"))"
},
"x": {"scale": "x", "field": "a"},
"y": {"scale": "y", "field": "average_b"}
diff --git a/examples/compiled/point_2d_array.vg.json b/examples/compiled/point_2d_array.vg.json
index 4d565f22bb..ef8e86079b 100644
--- a/examples/compiled/point_2d_array.vg.json
+++ b/examples/compiled/point_2d_array.vg.json
@@ -50,7 +50,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "x", "field": "a"},
"y": {"scale": "y", "field": "b"}
diff --git a/examples/compiled/point_2d_array_named.vg.json b/examples/compiled/point_2d_array_named.vg.json
index 86fbe0d6ce..fbbd3eee1b 100644
--- a/examples/compiled/point_2d_array_named.vg.json
+++ b/examples/compiled/point_2d_array_named.vg.json
@@ -50,7 +50,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "plotname_x", "field": "a"},
"y": {"scale": "plotname_y", "field": "b"}
diff --git a/examples/compiled/point_2d_config_no_zero.vg.json b/examples/compiled/point_2d_config_no_zero.vg.json
index b6de1de0d2..1ef7d34a13 100644
--- a/examples/compiled/point_2d_config_no_zero.vg.json
+++ b/examples/compiled/point_2d_config_no_zero.vg.json
@@ -32,7 +32,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\"))"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"}
diff --git a/examples/compiled/point_2d_tooltip.vg.json b/examples/compiled/point_2d_tooltip.vg.json
index bbf0769acf..1a506f14a6 100644
--- a/examples/compiled/point_2d_tooltip.vg.json
+++ b/examples/compiled/point_2d_tooltip.vg.json
@@ -29,13 +29,13 @@
"update": {
"opacity": {"value": 0.7},
"tooltip": {
- "signal": "{\"Horsepower\": format(datum[\"Horsepower\"], \"\"), \"Miles_per_Gallon\": format(datum[\"Miles_per_Gallon\"], \"\")}"
+ "signal": "{\"Horsepower\": !isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\"), \"Miles_per_Gallon\": !isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")}"
},
"fill": {"value": "transparent"},
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\"))"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"}
diff --git a/examples/compiled/point_2d_tooltip_data.vg.json b/examples/compiled/point_2d_tooltip_data.vg.json
index e0ec9419ba..d887d81f3e 100644
--- a/examples/compiled/point_2d_tooltip_data.vg.json
+++ b/examples/compiled/point_2d_tooltip_data.vg.json
@@ -33,7 +33,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\"))"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"}
diff --git a/examples/compiled/point_aggregate_detail.vg.json b/examples/compiled/point_aggregate_detail.vg.json
index d1e9ee06a4..7024468ad9 100644
--- a/examples/compiled/point_aggregate_detail.vg.json
+++ b/examples/compiled/point_aggregate_detail.vg.json
@@ -38,7 +38,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Mean of Horsepower: \" + (format(datum[\"mean_Horsepower\"], \"\")) + \"; Mean of Displacement: \" + (format(datum[\"mean_Displacement\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Mean of Horsepower: \" + (!isValid(datum[\"mean_Horsepower\"]) || !isFinite(+datum[\"mean_Horsepower\"]) ? \"\" + datum[\"mean_Horsepower\"] : format(datum[\"mean_Horsepower\"], \"\")) + \"; Mean of Displacement: \" + (!isValid(datum[\"mean_Displacement\"]) || !isFinite(+datum[\"mean_Displacement\"]) ? \"\" + datum[\"mean_Displacement\"] : format(datum[\"mean_Displacement\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {"scale": "x", "field": "mean_Horsepower"},
"y": {"scale": "y", "field": "mean_Displacement"}
diff --git a/examples/compiled/point_background.vg.json b/examples/compiled/point_background.vg.json
index 1050f913d3..ba5587392f 100644
--- a/examples/compiled/point_background.vg.json
+++ b/examples/compiled/point_background.vg.json
@@ -33,7 +33,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\"))"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"}
diff --git a/examples/compiled/point_binned_color.vg.json b/examples/compiled/point_binned_color.vg.json
index 73e8cc2af5..6c9b685f3b 100644
--- a/examples/compiled/point_binned_color.vg.json
+++ b/examples/compiled/point_binned_color.vg.json
@@ -48,7 +48,7 @@
"stroke": {"scale": "color", "field": "bin_maxbins_6_Acceleration"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Acceleration (binned): \" + (!isValid(datum[\"bin_maxbins_6_Acceleration\"]) || !isFinite(+datum[\"bin_maxbins_6_Acceleration\"]) ? \"null\" : format(datum[\"bin_maxbins_6_Acceleration\"], \"\") + \" – \" + format(datum[\"bin_maxbins_6_Acceleration_end\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Acceleration (binned): \" + (!isValid(datum[\"bin_maxbins_6_Acceleration\"]) || !isFinite(+datum[\"bin_maxbins_6_Acceleration\"]) ? \"\" + datum[\"bin_maxbins_6_Acceleration\"] : format(datum[\"bin_maxbins_6_Acceleration\"], \"\") + \" – \" + format(datum[\"bin_maxbins_6_Acceleration_end\"], \"\"))"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"}
diff --git a/examples/compiled/point_binned_opacity.vg.json b/examples/compiled/point_binned_opacity.vg.json
index e066217c86..cb3c59732f 100644
--- a/examples/compiled/point_binned_opacity.vg.json
+++ b/examples/compiled/point_binned_opacity.vg.json
@@ -50,7 +50,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Acceleration (binned): \" + (!isValid(datum[\"bin_maxbins_6_Acceleration\"]) || !isFinite(+datum[\"bin_maxbins_6_Acceleration\"]) ? \"null\" : format(datum[\"bin_maxbins_6_Acceleration\"], \"\") + \" – \" + format(datum[\"bin_maxbins_6_Acceleration_end\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Acceleration (binned): \" + (!isValid(datum[\"bin_maxbins_6_Acceleration\"]) || !isFinite(+datum[\"bin_maxbins_6_Acceleration\"]) ? \"\" + datum[\"bin_maxbins_6_Acceleration\"] : format(datum[\"bin_maxbins_6_Acceleration\"], \"\") + \" – \" + format(datum[\"bin_maxbins_6_Acceleration_end\"], \"\"))"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"}
diff --git a/examples/compiled/point_binned_size.vg.json b/examples/compiled/point_binned_size.vg.json
index 428efc1be2..2712123b70 100644
--- a/examples/compiled/point_binned_size.vg.json
+++ b/examples/compiled/point_binned_size.vg.json
@@ -48,7 +48,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Acceleration (binned): \" + (!isValid(datum[\"bin_maxbins_6_Acceleration\"]) || !isFinite(+datum[\"bin_maxbins_6_Acceleration\"]) ? \"null\" : format(datum[\"bin_maxbins_6_Acceleration\"], \"\") + \" – \" + format(datum[\"bin_maxbins_6_Acceleration_end\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Acceleration (binned): \" + (!isValid(datum[\"bin_maxbins_6_Acceleration\"]) || !isFinite(+datum[\"bin_maxbins_6_Acceleration\"]) ? \"\" + datum[\"bin_maxbins_6_Acceleration\"] : format(datum[\"bin_maxbins_6_Acceleration\"], \"\") + \" – \" + format(datum[\"bin_maxbins_6_Acceleration_end\"], \"\"))"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"},
diff --git a/examples/compiled/point_bubble.vg.json b/examples/compiled/point_bubble.vg.json
index 811539ba58..0a1d8b0261 100644
--- a/examples/compiled/point_bubble.vg.json
+++ b/examples/compiled/point_bubble.vg.json
@@ -32,7 +32,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Acceleration: \" + (format(datum[\"Acceleration\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Acceleration: \" + (!isValid(datum[\"Acceleration\"]) || !isFinite(+datum[\"Acceleration\"]) ? \"\" + datum[\"Acceleration\"] : format(datum[\"Acceleration\"], \"\"))"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"},
diff --git a/examples/compiled/point_color.vg.json b/examples/compiled/point_color.vg.json
index cbd8b67d8d..fa29fe48f0 100644
--- a/examples/compiled/point_color.vg.json
+++ b/examples/compiled/point_color.vg.json
@@ -31,7 +31,7 @@
"stroke": {"scale": "color", "field": "Origin"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"}
diff --git a/examples/compiled/point_color_custom.vg.json b/examples/compiled/point_color_custom.vg.json
index 1ba45469dc..de55df36dc 100644
--- a/examples/compiled/point_color_custom.vg.json
+++ b/examples/compiled/point_color_custom.vg.json
@@ -31,7 +31,7 @@
"stroke": {"scale": "color", "field": "Origin"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"}
diff --git a/examples/compiled/point_color_ordinal.vg.json b/examples/compiled/point_color_ordinal.vg.json
index cb4297e10a..acfd19b3b5 100644
--- a/examples/compiled/point_color_ordinal.vg.json
+++ b/examples/compiled/point_color_ordinal.vg.json
@@ -31,7 +31,7 @@
"stroke": {"scale": "color", "field": "Cylinders"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (\"\" + datum[\"Cylinders\"])"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"}
diff --git a/examples/compiled/point_color_quantitative.vg.json b/examples/compiled/point_color_quantitative.vg.json
index a2b21d7840..4d2a01bd25 100644
--- a/examples/compiled/point_color_quantitative.vg.json
+++ b/examples/compiled/point_color_quantitative.vg.json
@@ -31,7 +31,7 @@
"stroke": {"scale": "color", "field": "Displacement"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Displacement: \" + (format(datum[\"Displacement\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Displacement: \" + (!isValid(datum[\"Displacement\"]) || !isFinite(+datum[\"Displacement\"]) ? \"\" + datum[\"Displacement\"] : format(datum[\"Displacement\"], \"\"))"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"}
diff --git a/examples/compiled/point_color_shape_constant.vg.json b/examples/compiled/point_color_shape_constant.vg.json
index ae6d13e081..3a9536eb12 100644
--- a/examples/compiled/point_color_shape_constant.vg.json
+++ b/examples/compiled/point_color_shape_constant.vg.json
@@ -31,7 +31,7 @@
"stroke": {"value": "#ff9900"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\"))"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"},
diff --git a/examples/compiled/point_color_with_shape.vg.json b/examples/compiled/point_color_with_shape.vg.json
index 5b8dc629db..567d240d83 100644
--- a/examples/compiled/point_color_with_shape.vg.json
+++ b/examples/compiled/point_color_with_shape.vg.json
@@ -32,7 +32,7 @@
"stroke": {"scale": "color", "field": "Species"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Flipper Length (mm): \" + (format(datum[\"Flipper Length (mm)\"], \"\")) + \"; Body Mass (g): \" + (format(datum[\"Body Mass (g)\"], \"\")) + \"; Species: \" + (isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"])"
+ "signal": "\"Flipper Length (mm): \" + (!isValid(datum[\"Flipper Length (mm)\"]) || !isFinite(+datum[\"Flipper Length (mm)\"]) ? \"\" + datum[\"Flipper Length (mm)\"] : format(datum[\"Flipper Length (mm)\"], \"\")) + \"; Body Mass (g): \" + (!isValid(datum[\"Body Mass (g)\"]) || !isFinite(+datum[\"Body Mass (g)\"]) ? \"\" + datum[\"Body Mass (g)\"] : format(datum[\"Body Mass (g)\"], \"\")) + \"; Species: \" + (\"\" + datum[\"Species\"])"
},
"x": {"scale": "x", "field": "Flipper Length (mm)"},
"y": {"scale": "y", "field": "Body Mass (g)"},
diff --git a/examples/compiled/point_colorramp_size.vg.json b/examples/compiled/point_colorramp_size.vg.json
index 6da8802863..1563204761 100644
--- a/examples/compiled/point_colorramp_size.vg.json
+++ b/examples/compiled/point_colorramp_size.vg.json
@@ -31,7 +31,7 @@
"stroke": {"scale": "color", "field": "Miles_per_Gallon"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Acceleration: \" + (format(datum[\"Acceleration\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Acceleration: \" + (!isValid(datum[\"Acceleration\"]) || !isFinite(+datum[\"Acceleration\"]) ? \"\" + datum[\"Acceleration\"] : format(datum[\"Acceleration\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\"))"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Acceleration"},
diff --git a/examples/compiled/point_diverging_color.vg.json b/examples/compiled/point_diverging_color.vg.json
index ab0aaadb9b..23a4886940 100644
--- a/examples/compiled/point_diverging_color.vg.json
+++ b/examples/compiled/point_diverging_color.vg.json
@@ -32,7 +32,7 @@
"stroke": {"scale": "color", "field": "Weight_in_lbs"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Weight_in_lbs: \" + (format(datum[\"Weight_in_lbs\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Weight_in_lbs: \" + (!isValid(datum[\"Weight_in_lbs\"]) || !isFinite(+datum[\"Weight_in_lbs\"]) ? \"\" + datum[\"Weight_in_lbs\"] : format(datum[\"Weight_in_lbs\"], \"\"))"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"}
diff --git a/examples/compiled/point_dot_timeunit_color.vg.json b/examples/compiled/point_dot_timeunit_color.vg.json
index b1ae3e43ed..ee75565fc9 100644
--- a/examples/compiled/point_dot_timeunit_color.vg.json
+++ b/examples/compiled/point_dot_timeunit_color.vg.json
@@ -43,7 +43,7 @@
"stroke": {"scale": "color", "field": "yearmonth_date"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Mean of temp_max: \" + (format(datum[\"mean_temp_max\"], \"\")) + \"; date (year-month): \" + (timeFormat(datum[\"yearmonth_date\"], timeUnitSpecifier([\"year\",\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"})))"
+ "signal": "\"Mean of temp_max: \" + (!isValid(datum[\"mean_temp_max\"]) || !isFinite(+datum[\"mean_temp_max\"]) ? \"\" + datum[\"mean_temp_max\"] : format(datum[\"mean_temp_max\"], \"\")) + \"; date (year-month): \" + (!isValid(datum[\"yearmonth_date\"]) || !isFinite(+datum[\"yearmonth_date\"]) ? \"\" + datum[\"yearmonth_date\"] : timeFormat(datum[\"yearmonth_date\"], timeUnitSpecifier([\"year\",\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"})))"
},
"x": {"scale": "x", "field": "mean_temp_max"},
"y": {"signal": "height", "mult": 0.5}
diff --git a/examples/compiled/point_filled.vg.json b/examples/compiled/point_filled.vg.json
index 0b7ec96697..04610682c8 100644
--- a/examples/compiled/point_filled.vg.json
+++ b/examples/compiled/point_filled.vg.json
@@ -30,7 +30,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\"))"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"}
diff --git a/examples/compiled/point_grouped.vg.json b/examples/compiled/point_grouped.vg.json
index fd7434a952..4f95251fb5 100644
--- a/examples/compiled/point_grouped.vg.json
+++ b/examples/compiled/point_grouped.vg.json
@@ -50,7 +50,7 @@
"stroke": {"scale": "color", "field": "group"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"category: \" + (isValid(datum[\"category\"]) ? datum[\"category\"] : \"\"+datum[\"category\"]) + \"; value: \" + (format(datum[\"value\"], \"\")) + \"; group: \" + (isValid(datum[\"group\"]) ? datum[\"group\"] : \"\"+datum[\"group\"])"
+ "signal": "\"category: \" + (\"\" + datum[\"category\"]) + \"; value: \" + (!isValid(datum[\"value\"]) || !isFinite(+datum[\"value\"]) ? \"\" + datum[\"value\"] : format(datum[\"value\"], \"\")) + \"; group: \" + (\"\" + datum[\"group\"])"
},
"x": {
"scale": "x",
diff --git a/examples/compiled/point_href.vg.json b/examples/compiled/point_href.vg.json
index 05beaf13b0..d9701c5c0b 100644
--- a/examples/compiled/point_href.vg.json
+++ b/examples/compiled/point_href.vg.json
@@ -36,15 +36,11 @@
"cursor": {"value": "pointer"},
"fill": {"value": "transparent"},
"stroke": {"scale": "color", "field": "Origin"},
- "tooltip": {
- "signal": "isValid(datum[\"Name\"]) ? datum[\"Name\"] : \"\"+datum[\"Name\"]"
- },
- "href": {
- "signal": "isValid(datum[\"url\"]) ? datum[\"url\"] : \"\"+datum[\"url\"]"
- },
+ "tooltip": {"signal": "\"\" + datum[\"Name\"]"},
+ "href": {"signal": "\"\" + datum[\"url\"]"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; Name: \" + (isValid(datum[\"Name\"]) ? datum[\"Name\"] : \"\"+datum[\"Name\"]) + \"; url: \" + (isValid(datum[\"url\"]) ? datum[\"url\"] : \"\"+datum[\"url\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"]) + \"; Name: \" + (\"\" + datum[\"Name\"]) + \"; url: \" + (\"\" + datum[\"url\"])"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"}
diff --git a/examples/compiled/point_invalid_color.svg b/examples/compiled/point_invalid_color.svg
index a0151281c8..99b571f873 100644
--- a/examples/compiled/point_invalid_color.svg
+++ b/examples/compiled/point_invalid_color.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/examples/compiled/point_invalid_color.vg.json b/examples/compiled/point_invalid_color.vg.json
index 5c03dd5ff7..b14de9b8ec 100644
--- a/examples/compiled/point_invalid_color.vg.json
+++ b/examples/compiled/point_invalid_color.vg.json
@@ -27,7 +27,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"IMDB Rating: \" + (format(datum[\"IMDB Rating\"], \"\")) + \"; Rotten Tomatoes Rating: \" + (format(datum[\"Rotten Tomatoes Rating\"], \"\"))"
+ "signal": "\"IMDB Rating: \" + (!isValid(datum[\"IMDB Rating\"]) || !isFinite(+datum[\"IMDB Rating\"]) ? \"\" + datum[\"IMDB Rating\"] : format(datum[\"IMDB Rating\"], \"\")) + \"; Rotten Tomatoes Rating: \" + (!isValid(datum[\"Rotten Tomatoes Rating\"]) || !isFinite(+datum[\"Rotten Tomatoes Rating\"]) ? \"\" + datum[\"Rotten Tomatoes Rating\"] : format(datum[\"Rotten Tomatoes Rating\"], \"\"))"
},
"x": [
{
diff --git a/examples/compiled/point_invalid_size_show.svg b/examples/compiled/point_invalid_size_show.svg
index 2ae4ee19d6..b045566a3e 100644
--- a/examples/compiled/point_invalid_size_show.svg
+++ b/examples/compiled/point_invalid_size_show.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/examples/compiled/point_invalid_size_show.vg.json b/examples/compiled/point_invalid_size_show.vg.json
index 7453159e6f..c69fd16acc 100644
--- a/examples/compiled/point_invalid_size_show.vg.json
+++ b/examples/compiled/point_invalid_size_show.vg.json
@@ -47,7 +47,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": [
{
diff --git a/examples/compiled/point_label_null.png b/examples/compiled/point_label_null.png
new file mode 100644
index 0000000000..eb536cf6ef
Binary files /dev/null and b/examples/compiled/point_label_null.png differ
diff --git a/examples/compiled/point_label_null.svg b/examples/compiled/point_label_null.svg
new file mode 100644
index 0000000000..694abe0432
--- /dev/null
+++ b/examples/compiled/point_label_null.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/examples/compiled/point_label_null.vg.json b/examples/compiled/point_label_null.vg.json
new file mode 100644
index 0000000000..5ea1561e7c
--- /dev/null
+++ b/examples/compiled/point_label_null.vg.json
@@ -0,0 +1,174 @@
+{
+ "$schema": "https://vega.github.io/schema/vega/v5.json",
+ "background": "white",
+ "padding": 5,
+ "width": 200,
+ "height": 200,
+ "style": "cell",
+ "data": [
+ {
+ "name": "source_0",
+ "values": [
+ {"a": "Jan 1, 2000", "b": 28},
+ {"a": "Jan 2, 2000", "b": 55},
+ {"a": "Jan 3, 2000", "b": null},
+ {"a": "Jan 4, 2000", "b": 65},
+ {"a": "Jan 5, 2000", "b": 43},
+ {"a": null, "b": 50}
+ ]
+ },
+ {
+ "name": "data_0",
+ "source": "source_0",
+ "transform": [
+ {"type": "formula", "expr": "toDate(datum[\"a\"])", "as": "a"},
+ {
+ "field": "a",
+ "type": "timeunit",
+ "units": ["year", "month", "date"],
+ "as": ["yearmonthdate_a", "yearmonthdate_a_end"]
+ }
+ ]
+ }
+ ],
+ "marks": [
+ {
+ "name": "layer_0_marks",
+ "type": "symbol",
+ "style": ["point"],
+ "from": {"data": "data_0"},
+ "encode": {
+ "update": {
+ "opacity": {"value": 0.7},
+ "fill": {"value": "transparent"},
+ "stroke": {"value": "#4c78a8"},
+ "ariaRoleDescription": {"value": "point"},
+ "description": {
+ "signal": "\"a (year-month-date): \" + (!isValid(datum[\"yearmonthdate_a\"]) || !isFinite(+datum[\"yearmonthdate_a\"]) ? \"\" + datum[\"yearmonthdate_a\"] : timeFormat(datum[\"yearmonthdate_a\"], '%d %b')) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
+ },
+ "x": [
+ {
+ "test": "!isValid(datum[\"yearmonthdate_a\"]) || !isFinite(+datum[\"yearmonthdate_a\"])",
+ "signal": "scale('x', domain('x')[0])"
+ },
+ {"scale": "x", "field": "yearmonthdate_a"}
+ ],
+ "y": [
+ {
+ "test": "!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"])",
+ "scale": "y",
+ "value": 0
+ },
+ {"scale": "y", "field": "b"}
+ ]
+ }
+ }
+ },
+ {
+ "name": "layer_1_marks",
+ "type": "text",
+ "style": ["text"],
+ "from": {"data": "data_0"},
+ "encode": {
+ "update": {
+ "baseline": {"value": "bottom"},
+ "fill": {"value": "black"},
+ "description": {
+ "signal": "\"a (year-month-date): \" + (!isValid(datum[\"yearmonthdate_a\"]) || !isFinite(+datum[\"yearmonthdate_a\"]) ? \"\" + datum[\"yearmonthdate_a\"] : timeFormat(datum[\"yearmonthdate_a\"], '%d %b')) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
+ },
+ "x": [
+ {
+ "test": "!isValid(datum[\"yearmonthdate_a\"]) || !isFinite(+datum[\"yearmonthdate_a\"])",
+ "signal": "scale('x', domain('x')[0])"
+ },
+ {"scale": "x", "field": "yearmonthdate_a"}
+ ],
+ "y": [
+ {
+ "test": "!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"])",
+ "scale": "y",
+ "value": 0
+ },
+ {"scale": "y", "field": "b"}
+ ],
+ "text": {
+ "signal": "!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")"
+ },
+ "align": {"value": "center"}
+ }
+ }
+ }
+ ],
+ "scales": [
+ {
+ "name": "x",
+ "type": "time",
+ "domain": {"data": "data_0", "field": "yearmonthdate_a"},
+ "range": [0, {"signal": "width"}]
+ },
+ {
+ "name": "y",
+ "type": "linear",
+ "domain": {"data": "data_0", "field": "b"},
+ "range": [{"signal": "height"}, 0],
+ "nice": true,
+ "zero": true
+ }
+ ],
+ "axes": [
+ {
+ "scale": "x",
+ "orient": "bottom",
+ "gridScale": "y",
+ "grid": true,
+ "tickCount": {"signal": "ceil(width/40)"},
+ "tickMinStep": {
+ "signal": "datetime(2001, 0, 2, 0, 0, 0, 0) - datetime(2001, 0, 1, 0, 0, 0, 0)"
+ },
+ "domain": false,
+ "labels": false,
+ "aria": false,
+ "maxExtent": 0,
+ "minExtent": 0,
+ "ticks": false,
+ "zindex": 0
+ },
+ {
+ "scale": "y",
+ "orient": "left",
+ "gridScale": "x",
+ "grid": true,
+ "tickCount": {"signal": "ceil(height/40)"},
+ "domain": false,
+ "labels": false,
+ "aria": false,
+ "maxExtent": 0,
+ "minExtent": 0,
+ "ticks": false,
+ "zindex": 0
+ },
+ {
+ "scale": "x",
+ "orient": "bottom",
+ "grid": false,
+ "title": "a (year-month-date)",
+ "format": "%d %b",
+ "labelFlush": true,
+ "labelOverlap": true,
+ "tickCount": {"signal": "ceil(width/40)"},
+ "tickMinStep": {
+ "signal": "datetime(2001, 0, 2, 0, 0, 0, 0) - datetime(2001, 0, 1, 0, 0, 0, 0)"
+ },
+ "zindex": 0
+ },
+ {
+ "scale": "y",
+ "orient": "left",
+ "grid": false,
+ "title": "b",
+ "labelOverlap": true,
+ "tickCount": {"signal": "ceil(height/40)"},
+ "zindex": 0
+ }
+ ]
+}
diff --git a/examples/compiled/point_label_null_date.png b/examples/compiled/point_label_null_date.png
new file mode 100644
index 0000000000..a5e11003ed
Binary files /dev/null and b/examples/compiled/point_label_null_date.png differ
diff --git a/examples/compiled/point_label_null_date.svg b/examples/compiled/point_label_null_date.svg
new file mode 100644
index 0000000000..e471b06374
--- /dev/null
+++ b/examples/compiled/point_label_null_date.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/examples/compiled/point_label_null_date.vg.json b/examples/compiled/point_label_null_date.vg.json
new file mode 100644
index 0000000000..b792900595
--- /dev/null
+++ b/examples/compiled/point_label_null_date.vg.json
@@ -0,0 +1,177 @@
+{
+ "$schema": "https://vega.github.io/schema/vega/v5.json",
+ "background": "white",
+ "padding": 5,
+ "width": 200,
+ "height": 200,
+ "style": "cell",
+ "data": [
+ {
+ "name": "source_0",
+ "values": [
+ {"a": "Jan 1, 2000", "b": 28},
+ {"a": "Jan 2, 2000", "b": 55},
+ {"a": "Jan 3, 2000", "b": null},
+ {"a": "Jan 4, 2000", "b": 65},
+ {"a": "Jan 5, 2000", "b": 43},
+ {"a": null, "b": 50}
+ ]
+ },
+ {
+ "name": "data_0",
+ "source": "source_0",
+ "transform": [
+ {"type": "formula", "expr": "toDate(datum[\"a\"])", "as": "a"},
+ {
+ "field": "a",
+ "type": "timeunit",
+ "units": ["year", "month", "date"],
+ "as": ["yearmonthdate_a", "yearmonthdate_a_end"]
+ }
+ ]
+ }
+ ],
+ "marks": [
+ {
+ "name": "layer_0_marks",
+ "type": "symbol",
+ "style": ["point"],
+ "from": {"data": "data_0"},
+ "encode": {
+ "update": {
+ "opacity": {"value": 0.7},
+ "tooltip": {
+ "signal": "{\"a (year-month-date)\": !isValid(datum[\"yearmonthdate_a\"]) || !isFinite(+datum[\"yearmonthdate_a\"]) ? \"\" + datum[\"yearmonthdate_a\"] : timeFormat(datum[\"yearmonthdate_a\"], '%d %b'), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
+ },
+ "fill": {"value": "transparent"},
+ "stroke": {"value": "#4c78a8"},
+ "ariaRoleDescription": {"value": "point"},
+ "description": {
+ "signal": "\"a (year-month-date): \" + (!isValid(datum[\"yearmonthdate_a\"]) || !isFinite(+datum[\"yearmonthdate_a\"]) ? \"\" + datum[\"yearmonthdate_a\"] : timeFormat(datum[\"yearmonthdate_a\"], '%d %b')) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
+ },
+ "x": [
+ {
+ "test": "!isValid(datum[\"yearmonthdate_a\"]) || !isFinite(+datum[\"yearmonthdate_a\"])",
+ "signal": "scale('x', domain('x')[0])"
+ },
+ {"scale": "x", "field": "yearmonthdate_a"}
+ ],
+ "y": [
+ {
+ "test": "!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"])",
+ "scale": "y",
+ "value": 0
+ },
+ {"scale": "y", "field": "b"}
+ ]
+ }
+ }
+ },
+ {
+ "name": "layer_1_marks",
+ "type": "text",
+ "style": ["text"],
+ "from": {"data": "data_0"},
+ "encode": {
+ "update": {
+ "baseline": {"value": "bottom"},
+ "fill": {"value": "black"},
+ "description": {
+ "signal": "\"a (year-month-date): \" + (!isValid(datum[\"yearmonthdate_a\"]) || !isFinite(+datum[\"yearmonthdate_a\"]) ? \"\" + datum[\"yearmonthdate_a\"] : timeFormat(datum[\"yearmonthdate_a\"], '%d %b')) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
+ },
+ "x": [
+ {
+ "test": "!isValid(datum[\"yearmonthdate_a\"]) || !isFinite(+datum[\"yearmonthdate_a\"])",
+ "signal": "scale('x', domain('x')[0])"
+ },
+ {"scale": "x", "field": "yearmonthdate_a"}
+ ],
+ "y": [
+ {
+ "test": "!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"])",
+ "scale": "y",
+ "value": 0
+ },
+ {"scale": "y", "field": "b"}
+ ],
+ "text": {
+ "signal": "!isValid(datum[\"yearmonthdate_a\"]) || !isFinite(+datum[\"yearmonthdate_a\"]) ? \"\" + datum[\"yearmonthdate_a\"] : timeFormat(datum[\"yearmonthdate_a\"], '%d %b')"
+ },
+ "align": {"value": "center"}
+ }
+ }
+ }
+ ],
+ "scales": [
+ {
+ "name": "x",
+ "type": "time",
+ "domain": {"data": "data_0", "field": "yearmonthdate_a"},
+ "range": [0, {"signal": "width"}]
+ },
+ {
+ "name": "y",
+ "type": "linear",
+ "domain": {"data": "data_0", "field": "b"},
+ "range": [{"signal": "height"}, 0],
+ "nice": true,
+ "zero": true
+ }
+ ],
+ "axes": [
+ {
+ "scale": "x",
+ "orient": "bottom",
+ "gridScale": "y",
+ "grid": true,
+ "tickCount": {"signal": "ceil(width/40)"},
+ "tickMinStep": {
+ "signal": "datetime(2001, 0, 2, 0, 0, 0, 0) - datetime(2001, 0, 1, 0, 0, 0, 0)"
+ },
+ "domain": false,
+ "labels": false,
+ "aria": false,
+ "maxExtent": 0,
+ "minExtent": 0,
+ "ticks": false,
+ "zindex": 0
+ },
+ {
+ "scale": "y",
+ "orient": "left",
+ "gridScale": "x",
+ "grid": true,
+ "tickCount": {"signal": "ceil(height/40)"},
+ "domain": false,
+ "labels": false,
+ "aria": false,
+ "maxExtent": 0,
+ "minExtent": 0,
+ "ticks": false,
+ "zindex": 0
+ },
+ {
+ "scale": "x",
+ "orient": "bottom",
+ "grid": false,
+ "title": "a (year-month-date)",
+ "format": "%d %b",
+ "labelFlush": true,
+ "labelOverlap": true,
+ "tickCount": {"signal": "ceil(width/40)"},
+ "tickMinStep": {
+ "signal": "datetime(2001, 0, 2, 0, 0, 0, 0) - datetime(2001, 0, 1, 0, 0, 0, 0)"
+ },
+ "zindex": 0
+ },
+ {
+ "scale": "y",
+ "orient": "left",
+ "grid": false,
+ "title": "b",
+ "labelOverlap": true,
+ "tickCount": {"signal": "ceil(height/40)"},
+ "zindex": 0
+ }
+ ]
+}
diff --git a/examples/compiled/point_log.vg.json b/examples/compiled/point_log.vg.json
index 93acc01217..eaf2f464d0 100644
--- a/examples/compiled/point_log.vg.json
+++ b/examples/compiled/point_log.vg.json
@@ -43,7 +43,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"x: \" + (format(datum[\"x\"], \"\")) + \"; y: \" + (format(datum[\"y\"], \"\"))"
+ "signal": "\"x: \" + (!isValid(datum[\"x\"]) || !isFinite(+datum[\"x\"]) ? \"\" + datum[\"x\"] : format(datum[\"x\"], \"\")) + \"; y: \" + (!isValid(datum[\"y\"]) || !isFinite(+datum[\"y\"]) ? \"\" + datum[\"y\"] : format(datum[\"y\"], \"\"))"
},
"x": {"scale": "x", "field": "x"},
"y": {"scale": "y", "field": "y"}
diff --git a/examples/compiled/point_no_axis_domain_grid.vg.json b/examples/compiled/point_no_axis_domain_grid.vg.json
index d2f7b2ca1b..0a77092cc6 100644
--- a/examples/compiled/point_no_axis_domain_grid.vg.json
+++ b/examples/compiled/point_no_axis_domain_grid.vg.json
@@ -32,7 +32,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\"))"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"}
diff --git a/examples/compiled/point_offset_random.vg.json b/examples/compiled/point_offset_random.vg.json
index 2bac04a707..09cbdb0c89 100644
--- a/examples/compiled/point_offset_random.vg.json
+++ b/examples/compiled/point_offset_random.vg.json
@@ -39,7 +39,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; random: \" + (format(datum[\"random\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Cylinders: \" + (\"\" + datum[\"Cylinders\"]) + \"; random: \" + (!isValid(datum[\"random\"]) || !isFinite(+datum[\"random\"]) ? \"\" + datum[\"random\"] : format(datum[\"random\"], \"\"))"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {
diff --git a/examples/compiled/point_ordinal_bin_offset_random.vg.json b/examples/compiled/point_ordinal_bin_offset_random.vg.json
index 87ccc18ce6..78b5b8330b 100644
--- a/examples/compiled/point_ordinal_bin_offset_random.vg.json
+++ b/examples/compiled/point_ordinal_bin_offset_random.vg.json
@@ -28,7 +28,7 @@
},
{
"type": "formula",
- "expr": "!isValid(datum[\"bin_maxbins_10_Miles_per_Gallon\"]) || !isFinite(+datum[\"bin_maxbins_10_Miles_per_Gallon\"]) ? \"null\" : format(datum[\"bin_maxbins_10_Miles_per_Gallon\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_Miles_per_Gallon_end\"], \"\")",
+ "expr": "!isValid(datum[\"bin_maxbins_10_Miles_per_Gallon\"]) || !isFinite(+datum[\"bin_maxbins_10_Miles_per_Gallon\"]) ? \"\" + datum[\"bin_maxbins_10_Miles_per_Gallon\"] : format(datum[\"bin_maxbins_10_Miles_per_Gallon\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_Miles_per_Gallon_end\"], \"\")",
"as": "bin_maxbins_10_Miles_per_Gallon_range"
},
{"type": "formula", "expr": "random()", "as": "random"},
@@ -59,7 +59,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon (binned): \" + (!isValid(datum[\"bin_maxbins_10_Miles_per_Gallon\"]) || !isFinite(+datum[\"bin_maxbins_10_Miles_per_Gallon\"]) ? \"null\" : format(datum[\"bin_maxbins_10_Miles_per_Gallon\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_Miles_per_Gallon_end\"], \"\")) + \"; random: \" + (format(datum[\"random\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon (binned): \" + (!isValid(datum[\"bin_maxbins_10_Miles_per_Gallon\"]) || !isFinite(+datum[\"bin_maxbins_10_Miles_per_Gallon\"]) ? \"\" + datum[\"bin_maxbins_10_Miles_per_Gallon\"] : format(datum[\"bin_maxbins_10_Miles_per_Gallon\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_Miles_per_Gallon_end\"], \"\")) + \"; random: \" + (!isValid(datum[\"random\"]) || !isFinite(+datum[\"random\"]) ? \"\" + datum[\"random\"] : format(datum[\"random\"], \"\"))"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {
diff --git a/examples/compiled/point_ordinal_color.vg.json b/examples/compiled/point_ordinal_color.vg.json
index 2d312ab37c..30f1f59467 100644
--- a/examples/compiled/point_ordinal_color.vg.json
+++ b/examples/compiled/point_ordinal_color.vg.json
@@ -41,7 +41,7 @@
"stroke": {"scale": "color", "field": "a"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"x: \" + (format(datum[\"x\"], \"\")) + \"; y: \" + (format(datum[\"y\"], \"\")) + \"; a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"])"
+ "signal": "\"x: \" + (!isValid(datum[\"x\"]) || !isFinite(+datum[\"x\"]) ? \"\" + datum[\"x\"] : format(datum[\"x\"], \"\")) + \"; y: \" + (!isValid(datum[\"y\"]) || !isFinite(+datum[\"y\"]) ? \"\" + datum[\"y\"] : format(datum[\"y\"], \"\")) + \"; a: \" + (\"\" + datum[\"a\"])"
},
"x": {"scale": "x", "field": "x"},
"y": {"scale": "y", "field": "y"}
diff --git a/examples/compiled/point_params.vg.json b/examples/compiled/point_params.vg.json
index f04fa9e882..f55042d791 100644
--- a/examples/compiled/point_params.vg.json
+++ b/examples/compiled/point_params.vg.json
@@ -76,7 +76,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\"))"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"}
diff --git a/examples/compiled/point_quantile_quantile.vg.json b/examples/compiled/point_quantile_quantile.vg.json
index 4c326c4229..bd2baa1962 100644
--- a/examples/compiled/point_quantile_quantile.vg.json
+++ b/examples/compiled/point_quantile_quantile.vg.json
@@ -61,7 +61,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"unif: \" + (format(datum[\"unif\"], \"\")) + \"; v: \" + (format(datum[\"v\"], \"\"))"
+ "signal": "\"unif: \" + (!isValid(datum[\"unif\"]) || !isFinite(+datum[\"unif\"]) ? \"\" + datum[\"unif\"] : format(datum[\"unif\"], \"\")) + \"; v: \" + (!isValid(datum[\"v\"]) || !isFinite(+datum[\"v\"]) ? \"\" + datum[\"v\"] : format(datum[\"v\"], \"\"))"
},
"x": {"scale": "concat_0_x", "field": "unif"},
"y": {"scale": "concat_0_y", "field": "v"}
@@ -142,7 +142,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"norm: \" + (format(datum[\"norm\"], \"\")) + \"; v: \" + (format(datum[\"v\"], \"\"))"
+ "signal": "\"norm: \" + (!isValid(datum[\"norm\"]) || !isFinite(+datum[\"norm\"]) ? \"\" + datum[\"norm\"] : format(datum[\"norm\"], \"\")) + \"; v: \" + (!isValid(datum[\"v\"]) || !isFinite(+datum[\"v\"]) ? \"\" + datum[\"v\"] : format(datum[\"v\"], \"\"))"
},
"x": {"scale": "concat_1_x", "field": "norm"},
"y": {"scale": "concat_1_y", "field": "v"}
diff --git a/examples/compiled/point_scale_range_field.vg.json b/examples/compiled/point_scale_range_field.vg.json
index d85f7f063e..d1353f5612 100644
--- a/examples/compiled/point_scale_range_field.vg.json
+++ b/examples/compiled/point_scale_range_field.vg.json
@@ -34,7 +34,7 @@
"fill": {"scale": "color", "field": "l"},
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"y: \" + (isValid(datum[\"y\"]) ? datum[\"y\"] : \"\"+datum[\"y\"]) + \"; l: \" + (isValid(datum[\"l\"]) ? datum[\"l\"] : \"\"+datum[\"l\"])"
+ "signal": "\"y: \" + (\"\" + datum[\"y\"]) + \"; l: \" + (\"\" + datum[\"l\"])"
},
"x": {"signal": "width", "mult": 0.5},
"y": {"scale": "y", "field": "y"},
diff --git a/examples/compiled/point_shape_custom.vg.json b/examples/compiled/point_shape_custom.vg.json
index 96e9f6e858..9fbac5def3 100644
--- a/examples/compiled/point_shape_custom.vg.json
+++ b/examples/compiled/point_shape_custom.vg.json
@@ -32,7 +32,7 @@
"stroke": {"scale": "color", "field": "Cylinders"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; Weight_in_lbs: \" + (format(datum[\"Weight_in_lbs\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (\"\" + datum[\"Cylinders\"]) + \"; Weight_in_lbs: \" + (!isValid(datum[\"Weight_in_lbs\"]) || !isFinite(+datum[\"Weight_in_lbs\"]) ? \"\" + datum[\"Weight_in_lbs\"] : format(datum[\"Weight_in_lbs\"], \"\"))"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"},
diff --git a/examples/compiled/point_tooltip.vg.json b/examples/compiled/point_tooltip.vg.json
index 613142f091..79a1af5323 100644
--- a/examples/compiled/point_tooltip.vg.json
+++ b/examples/compiled/point_tooltip.vg.json
@@ -30,12 +30,10 @@
"opacity": {"value": 0.7},
"fill": {"value": "transparent"},
"stroke": {"value": "#4c78a8"},
- "tooltip": {
- "signal": "isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]"
- },
+ "tooltip": {"signal": "\"\" + datum[\"Origin\"]"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"}
diff --git a/examples/compiled/rect_binned_heatmap.vg.json b/examples/compiled/rect_binned_heatmap.vg.json
index 164e6c3a05..3d98f24b3a 100644
--- a/examples/compiled/rect_binned_heatmap.vg.json
+++ b/examples/compiled/rect_binned_heatmap.vg.json
@@ -76,7 +76,7 @@
"update": {
"fill": {"scale": "color", "field": "__count"},
"description": {
- "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_60_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_60_IMDB Rating\"]) ? \"null\" : format(datum[\"bin_maxbins_60_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_60_IMDB Rating_end\"], \"\")) + \"; Rotten Tomatoes Rating (binned): \" + (!isValid(datum[\"bin_maxbins_40_Rotten Tomatoes Rating\"]) || !isFinite(+datum[\"bin_maxbins_40_Rotten Tomatoes Rating\"]) ? \"null\" : format(datum[\"bin_maxbins_40_Rotten Tomatoes Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_40_Rotten Tomatoes Rating_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_60_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_60_IMDB Rating\"]) ? \"\" + datum[\"bin_maxbins_60_IMDB Rating\"] : format(datum[\"bin_maxbins_60_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_60_IMDB Rating_end\"], \"\")) + \"; Rotten Tomatoes Rating (binned): \" + (!isValid(datum[\"bin_maxbins_40_Rotten Tomatoes Rating\"]) || !isFinite(+datum[\"bin_maxbins_40_Rotten Tomatoes Rating\"]) ? \"\" + datum[\"bin_maxbins_40_Rotten Tomatoes Rating\"] : format(datum[\"bin_maxbins_40_Rotten Tomatoes Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_40_Rotten Tomatoes Rating_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x2": {
"scale": "x",
diff --git a/examples/compiled/rect_heatmap.vg.json b/examples/compiled/rect_heatmap.vg.json
index 5afa68acb2..48916b5a26 100644
--- a/examples/compiled/rect_heatmap.vg.json
+++ b/examples/compiled/rect_heatmap.vg.json
@@ -39,7 +39,7 @@
"update": {
"fill": {"scale": "color", "field": "mean_Horsepower"},
"description": {
- "signal": "\"Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; Mean of Horsepower: \" + (format(datum[\"mean_Horsepower\"], \"\"))"
+ "signal": "\"Cylinders: \" + (\"\" + datum[\"Cylinders\"]) + \"; Origin: \" + (\"\" + datum[\"Origin\"]) + \"; Mean of Horsepower: \" + (!isValid(datum[\"mean_Horsepower\"]) || !isFinite(+datum[\"mean_Horsepower\"]) ? \"\" + datum[\"mean_Horsepower\"] : format(datum[\"mean_Horsepower\"], \"\"))"
},
"x": {"scale": "x", "field": "Cylinders"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/rect_heatmap_weather.vg.json b/examples/compiled/rect_heatmap_weather.vg.json
index 6c00cfca80..69668a9777 100644
--- a/examples/compiled/rect_heatmap_weather.vg.json
+++ b/examples/compiled/rect_heatmap_weather.vg.json
@@ -58,7 +58,7 @@
"update": {
"fill": {"scale": "color", "field": "max_temp_max"},
"description": {
- "signal": "\"Day: \" + (timeFormat(datum[\"date_date\"], '%e')) + \"; Month: \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Max of temp_max: \" + (format(datum[\"max_temp_max\"], \"\"))"
+ "signal": "\"Day: \" + (!isValid(datum[\"date_date\"]) || !isFinite(+datum[\"date_date\"]) ? \"\" + datum[\"date_date\"] : timeFormat(datum[\"date_date\"], '%e')) + \"; Month: \" + (!isValid(datum[\"month_date\"]) || !isFinite(+datum[\"month_date\"]) ? \"\" + datum[\"month_date\"] : timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Max of temp_max: \" + (!isValid(datum[\"max_temp_max\"]) || !isFinite(+datum[\"max_temp_max\"]) ? \"\" + datum[\"max_temp_max\"] : format(datum[\"max_temp_max\"], \"\"))"
},
"x": {"scale": "x", "field": "date_date"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/rect_heatmap_weather_temporal_center_band.vg.json b/examples/compiled/rect_heatmap_weather_temporal_center_band.vg.json
index ddafffe73d..d47084c0ba 100644
--- a/examples/compiled/rect_heatmap_weather_temporal_center_band.vg.json
+++ b/examples/compiled/rect_heatmap_weather_temporal_center_band.vg.json
@@ -83,7 +83,7 @@
"update": {
"fill": {"scale": "color", "field": "max_temp_max"},
"description": {
- "signal": "\"Day: \" + (timeFormat(datum[\"date_date\"], '%e')) + \"; Month: \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Max of temp_max: \" + (format(datum[\"max_temp_max\"], \"\"))"
+ "signal": "\"Day: \" + (!isValid(datum[\"date_date\"]) || !isFinite(+datum[\"date_date\"]) ? \"\" + datum[\"date_date\"] : timeFormat(datum[\"date_date\"], '%e')) + \"; Month: \" + (!isValid(datum[\"month_date\"]) || !isFinite(+datum[\"month_date\"]) ? \"\" + datum[\"month_date\"] : timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Max of temp_max: \" + (!isValid(datum[\"max_temp_max\"]) || !isFinite(+datum[\"max_temp_max\"]) ? \"\" + datum[\"max_temp_max\"] : format(datum[\"max_temp_max\"], \"\"))"
},
"x2": {
"scale": "x",
diff --git a/examples/compiled/rect_heatmap_weather_temporal_center_band_config.vg.json b/examples/compiled/rect_heatmap_weather_temporal_center_band_config.vg.json
index ddafffe73d..d47084c0ba 100644
--- a/examples/compiled/rect_heatmap_weather_temporal_center_band_config.vg.json
+++ b/examples/compiled/rect_heatmap_weather_temporal_center_band_config.vg.json
@@ -83,7 +83,7 @@
"update": {
"fill": {"scale": "color", "field": "max_temp_max"},
"description": {
- "signal": "\"Day: \" + (timeFormat(datum[\"date_date\"], '%e')) + \"; Month: \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Max of temp_max: \" + (format(datum[\"max_temp_max\"], \"\"))"
+ "signal": "\"Day: \" + (!isValid(datum[\"date_date\"]) || !isFinite(+datum[\"date_date\"]) ? \"\" + datum[\"date_date\"] : timeFormat(datum[\"date_date\"], '%e')) + \"; Month: \" + (!isValid(datum[\"month_date\"]) || !isFinite(+datum[\"month_date\"]) ? \"\" + datum[\"month_date\"] : timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Max of temp_max: \" + (!isValid(datum[\"max_temp_max\"]) || !isFinite(+datum[\"max_temp_max\"]) ? \"\" + datum[\"max_temp_max\"] : format(datum[\"max_temp_max\"], \"\"))"
},
"x2": {
"scale": "x",
diff --git a/examples/compiled/rect_lasagna.vg.json b/examples/compiled/rect_lasagna.vg.json
index 95f0ff9d87..282d4dcb27 100644
--- a/examples/compiled/rect_lasagna.vg.json
+++ b/examples/compiled/rect_lasagna.vg.json
@@ -42,7 +42,7 @@
"update": {
"fill": {"scale": "color", "field": "sum_price"},
"description": {
- "signal": "\"Time: \" + (timeFormat(datum[\"yearmonthdate_date\"], '%Y')) + \"; symbol: \" + (isValid(datum[\"symbol\"]) ? datum[\"symbol\"] : \"\"+datum[\"symbol\"]) + \"; Price: \" + (format(datum[\"sum_price\"], \"\"))"
+ "signal": "\"Time: \" + (!isValid(datum[\"yearmonthdate_date\"]) || !isFinite(+datum[\"yearmonthdate_date\"]) ? \"\" + datum[\"yearmonthdate_date\"] : timeFormat(datum[\"yearmonthdate_date\"], '%Y')) + \"; symbol: \" + (\"\" + datum[\"symbol\"]) + \"; Price: \" + (!isValid(datum[\"sum_price\"]) || !isFinite(+datum[\"sum_price\"]) ? \"\" + datum[\"sum_price\"] : format(datum[\"sum_price\"], \"\"))"
},
"x": {"scale": "x", "field": "yearmonthdate_date"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/rect_mosaic_labelled.vg.json b/examples/compiled/rect_mosaic_labelled.vg.json
index 5d3eff6724..ad7aa7b981 100644
--- a/examples/compiled/rect_mosaic_labelled.vg.json
+++ b/examples/compiled/rect_mosaic_labelled.vg.json
@@ -110,13 +110,11 @@
"baseline": {"value": "middle"},
"fill": {"scale": "color", "field": "Origin"},
"description": {
- "signal": "\"Origin: \" + (format(datum[\"min_xc\"], \"\"))"
+ "signal": "\"Origin: \" + (!isValid(datum[\"min_xc\"]) || !isFinite(+datum[\"min_xc\"]) ? \"\" + datum[\"min_xc\"] : format(datum[\"min_xc\"], \"\"))"
},
"x": {"scale": "x", "field": "min_xc"},
"y": {"signal": "concat_0_height", "mult": 0.5},
- "text": {
- "signal": "isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]"
- }
+ "text": {"signal": "\"\" + datum[\"Origin\"]"}
}
}
}
@@ -155,10 +153,10 @@
"fill": {"scale": "color", "field": "Origin"},
"opacity": {"scale": "opacity", "field": "Cylinders"},
"tooltip": {
- "signal": "{\"Origin\": isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"], \"Cylinders\": format(datum[\"Cylinders\"], \"\")}"
+ "signal": "{\"Origin\": \"\" + datum[\"Origin\"], \"Cylinders\": !isValid(datum[\"Cylinders\"]) || !isFinite(+datum[\"Cylinders\"]) ? \"\" + datum[\"Cylinders\"] : format(datum[\"Cylinders\"], \"\")}"
},
"description": {
- "signal": "\"x: \" + (format(datum[\"x\"], \"\")) + \"; y: \" + (format(datum[\"y\"], \"\")) + \"; x2: \" + (format(datum[\"x2\"], \"\")) + \"; y2: \" + (format(datum[\"y2\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; Cylinders: \" + (format(datum[\"Cylinders\"], \"\"))"
+ "signal": "\"x: \" + (!isValid(datum[\"x\"]) || !isFinite(+datum[\"x\"]) ? \"\" + datum[\"x\"] : format(datum[\"x\"], \"\")) + \"; y: \" + (!isValid(datum[\"y\"]) || !isFinite(+datum[\"y\"]) ? \"\" + datum[\"y\"] : format(datum[\"y\"], \"\")) + \"; x2: \" + (!isValid(datum[\"x2\"]) || !isFinite(+datum[\"x2\"]) ? \"\" + datum[\"x2\"] : format(datum[\"x2\"], \"\")) + \"; y2: \" + (!isValid(datum[\"y2\"]) || !isFinite(+datum[\"y2\"]) ? \"\" + datum[\"y2\"] : format(datum[\"y2\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"]) + \"; Cylinders: \" + (!isValid(datum[\"Cylinders\"]) || !isFinite(+datum[\"Cylinders\"]) ? \"\" + datum[\"Cylinders\"] : format(datum[\"Cylinders\"], \"\"))"
},
"x": {"scale": "x", "field": "x"},
"x2": {"scale": "x", "field": "x2"},
@@ -177,13 +175,11 @@
"baseline": {"value": "middle"},
"fill": {"value": "black"},
"description": {
- "signal": "\"xc: \" + (format(datum[\"xc\"], \"\")) + \"; yc: \" + (format(datum[\"yc\"], \"\")) + \"; Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"])"
+ "signal": "\"xc: \" + (!isValid(datum[\"xc\"]) || !isFinite(+datum[\"xc\"]) ? \"\" + datum[\"xc\"] : format(datum[\"xc\"], \"\")) + \"; yc: \" + (!isValid(datum[\"yc\"]) || !isFinite(+datum[\"yc\"]) ? \"\" + datum[\"yc\"] : format(datum[\"yc\"], \"\")) + \"; Cylinders: \" + (\"\" + datum[\"Cylinders\"])"
},
"x": {"scale": "x", "field": "xc"},
"y": {"scale": "concat_1_y", "field": "yc"},
- "text": {
- "signal": "isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]"
- },
+ "text": {"signal": "\"\" + datum[\"Cylinders\"]"},
"align": {"value": "center"}
}
}
diff --git a/examples/compiled/rect_mosaic_labelled_with_offset.vg.json b/examples/compiled/rect_mosaic_labelled_with_offset.vg.json
index f2c7e000f8..c14bbae570 100644
--- a/examples/compiled/rect_mosaic_labelled_with_offset.vg.json
+++ b/examples/compiled/rect_mosaic_labelled_with_offset.vg.json
@@ -147,13 +147,11 @@
"baseline": {"value": "middle"},
"fill": {"scale": "color", "field": "Origin"},
"description": {
- "signal": "\"Origin: \" + (format(datum[\"min_xc\"], \"\"))"
+ "signal": "\"Origin: \" + (!isValid(datum[\"min_xc\"]) || !isFinite(+datum[\"min_xc\"]) ? \"\" + datum[\"min_xc\"] : format(datum[\"min_xc\"], \"\"))"
},
"x": {"scale": "x", "field": "min_xc"},
"y": {"signal": "concat_0_height", "mult": 0.5},
- "text": {
- "signal": "isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]"
- }
+ "text": {"signal": "\"\" + datum[\"Origin\"]"}
}
}
}
@@ -192,10 +190,10 @@
"fill": {"scale": "color", "field": "Origin"},
"opacity": {"scale": "opacity", "field": "Cylinders"},
"tooltip": {
- "signal": "{\"Origin\": isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"], \"Cylinders\": format(datum[\"Cylinders\"], \"\")}"
+ "signal": "{\"Origin\": \"\" + datum[\"Origin\"], \"Cylinders\": !isValid(datum[\"Cylinders\"]) || !isFinite(+datum[\"Cylinders\"]) ? \"\" + datum[\"Cylinders\"] : format(datum[\"Cylinders\"], \"\")}"
},
"description": {
- "signal": "\"nx: \" + (format(datum[\"nx\"], \"\")) + \"; ny: \" + (format(datum[\"ny\"], \"\")) + \"; nx2: \" + (format(datum[\"nx2\"], \"\")) + \"; ny2: \" + (format(datum[\"ny2\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; Cylinders: \" + (format(datum[\"Cylinders\"], \"\"))"
+ "signal": "\"nx: \" + (!isValid(datum[\"nx\"]) || !isFinite(+datum[\"nx\"]) ? \"\" + datum[\"nx\"] : format(datum[\"nx\"], \"\")) + \"; ny: \" + (!isValid(datum[\"ny\"]) || !isFinite(+datum[\"ny\"]) ? \"\" + datum[\"ny\"] : format(datum[\"ny\"], \"\")) + \"; nx2: \" + (!isValid(datum[\"nx2\"]) || !isFinite(+datum[\"nx2\"]) ? \"\" + datum[\"nx2\"] : format(datum[\"nx2\"], \"\")) + \"; ny2: \" + (!isValid(datum[\"ny2\"]) || !isFinite(+datum[\"ny2\"]) ? \"\" + datum[\"ny2\"] : format(datum[\"ny2\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"]) + \"; Cylinders: \" + (!isValid(datum[\"Cylinders\"]) || !isFinite(+datum[\"Cylinders\"]) ? \"\" + datum[\"Cylinders\"] : format(datum[\"Cylinders\"], \"\"))"
},
"x": {"scale": "x", "field": "nx"},
"x2": {"scale": "x", "field": "nx2"},
@@ -214,13 +212,11 @@
"baseline": {"value": "middle"},
"fill": {"value": "black"},
"description": {
- "signal": "\"xc: \" + (format(datum[\"xc\"], \"\")) + \"; yc: \" + (format(datum[\"yc\"], \"\")) + \"; Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"])"
+ "signal": "\"xc: \" + (!isValid(datum[\"xc\"]) || !isFinite(+datum[\"xc\"]) ? \"\" + datum[\"xc\"] : format(datum[\"xc\"], \"\")) + \"; yc: \" + (!isValid(datum[\"yc\"]) || !isFinite(+datum[\"yc\"]) ? \"\" + datum[\"yc\"] : format(datum[\"yc\"], \"\")) + \"; Cylinders: \" + (\"\" + datum[\"Cylinders\"])"
},
"x": {"scale": "x", "field": "xc"},
"y": {"scale": "concat_1_y", "field": "yc"},
- "text": {
- "signal": "isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]"
- },
+ "text": {"signal": "\"\" + datum[\"Cylinders\"]"},
"align": {"value": "center"}
}
}
diff --git a/examples/compiled/rect_mosaic_simple.vg.json b/examples/compiled/rect_mosaic_simple.vg.json
index 337a015354..88a3bec550 100644
--- a/examples/compiled/rect_mosaic_simple.vg.json
+++ b/examples/compiled/rect_mosaic_simple.vg.json
@@ -59,10 +59,10 @@
"fill": {"scale": "color", "field": "Origin"},
"opacity": {"scale": "opacity", "field": "Cylinders"},
"tooltip": {
- "signal": "{\"Origin\": isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"], \"Cylinders\": format(datum[\"Cylinders\"], \"\")}"
+ "signal": "{\"Origin\": \"\" + datum[\"Origin\"], \"Cylinders\": !isValid(datum[\"Cylinders\"]) || !isFinite(+datum[\"Cylinders\"]) ? \"\" + datum[\"Cylinders\"] : format(datum[\"Cylinders\"], \"\")}"
},
"description": {
- "signal": "\"x: \" + (format(datum[\"x\"], \"\")) + \"; y: \" + (format(datum[\"y\"], \"\")) + \"; x2: \" + (format(datum[\"x2\"], \"\")) + \"; y2: \" + (format(datum[\"y2\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; Cylinders: \" + (format(datum[\"Cylinders\"], \"\"))"
+ "signal": "\"x: \" + (!isValid(datum[\"x\"]) || !isFinite(+datum[\"x\"]) ? \"\" + datum[\"x\"] : format(datum[\"x\"], \"\")) + \"; y: \" + (!isValid(datum[\"y\"]) || !isFinite(+datum[\"y\"]) ? \"\" + datum[\"y\"] : format(datum[\"y\"], \"\")) + \"; x2: \" + (!isValid(datum[\"x2\"]) || !isFinite(+datum[\"x2\"]) ? \"\" + datum[\"x2\"] : format(datum[\"x2\"], \"\")) + \"; y2: \" + (!isValid(datum[\"y2\"]) || !isFinite(+datum[\"y2\"]) ? \"\" + datum[\"y2\"] : format(datum[\"y2\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"]) + \"; Cylinders: \" + (!isValid(datum[\"Cylinders\"]) || !isFinite(+datum[\"Cylinders\"]) ? \"\" + datum[\"Cylinders\"] : format(datum[\"Cylinders\"], \"\"))"
},
"x": {"scale": "x", "field": "x"},
"x2": {"scale": "x", "field": "x2"},
diff --git a/examples/compiled/repeat_child_layer.vg.json b/examples/compiled/repeat_child_layer.vg.json
index 3cbfc36f98..33da8709c0 100644
--- a/examples/compiled/repeat_child_layer.vg.json
+++ b/examples/compiled/repeat_child_layer.vg.json
@@ -111,7 +111,7 @@
"stroke": {"scale": "color", "field": "location"},
"opacity": {"value": 0.2},
"description": {
- "signal": "\"date (month): \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of temp_max: \" + (format(datum[\"mean_temp_max\"], \"\")) + \"; location: \" + (isValid(datum[\"location\"]) ? datum[\"location\"] : \"\"+datum[\"location\"]) + \"; date (year): \" + (timeFormat(datum[\"year_date\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"})))"
+ "signal": "\"date (month): \" + (!isValid(datum[\"month_date\"]) || !isFinite(+datum[\"month_date\"]) ? \"\" + datum[\"month_date\"] : timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of temp_max: \" + (!isValid(datum[\"mean_temp_max\"]) || !isFinite(+datum[\"mean_temp_max\"]) ? \"\" + datum[\"mean_temp_max\"] : format(datum[\"mean_temp_max\"], \"\")) + \"; location: \" + (\"\" + datum[\"location\"]) + \"; date (year): \" + (!isValid(datum[\"year_date\"]) || !isFinite(+datum[\"year_date\"]) ? \"\" + datum[\"year_date\"] : timeFormat(datum[\"year_date\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"})))"
},
"x": {
"scale": "child__column_temp_max_x",
@@ -158,7 +158,7 @@
"update": {
"stroke": {"scale": "color", "field": "location"},
"description": {
- "signal": "\"date (month): \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of temp_max: \" + (format(datum[\"mean_temp_max\"], \"\")) + \"; location: \" + (isValid(datum[\"location\"]) ? datum[\"location\"] : \"\"+datum[\"location\"])"
+ "signal": "\"date (month): \" + (!isValid(datum[\"month_date\"]) || !isFinite(+datum[\"month_date\"]) ? \"\" + datum[\"month_date\"] : timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of temp_max: \" + (!isValid(datum[\"mean_temp_max\"]) || !isFinite(+datum[\"mean_temp_max\"]) ? \"\" + datum[\"mean_temp_max\"] : format(datum[\"mean_temp_max\"], \"\")) + \"; location: \" + (\"\" + datum[\"location\"])"
},
"x": {
"scale": "child__column_temp_max_x",
@@ -259,7 +259,7 @@
"stroke": {"scale": "color", "field": "location"},
"opacity": {"value": 0.2},
"description": {
- "signal": "\"date (month): \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of precipitation: \" + (format(datum[\"mean_precipitation\"], \"\")) + \"; location: \" + (isValid(datum[\"location\"]) ? datum[\"location\"] : \"\"+datum[\"location\"]) + \"; date (year): \" + (timeFormat(datum[\"year_date\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"})))"
+ "signal": "\"date (month): \" + (!isValid(datum[\"month_date\"]) || !isFinite(+datum[\"month_date\"]) ? \"\" + datum[\"month_date\"] : timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of precipitation: \" + (!isValid(datum[\"mean_precipitation\"]) || !isFinite(+datum[\"mean_precipitation\"]) ? \"\" + datum[\"mean_precipitation\"] : format(datum[\"mean_precipitation\"], \"\")) + \"; location: \" + (\"\" + datum[\"location\"]) + \"; date (year): \" + (!isValid(datum[\"year_date\"]) || !isFinite(+datum[\"year_date\"]) ? \"\" + datum[\"year_date\"] : timeFormat(datum[\"year_date\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"})))"
},
"x": {
"scale": "child__column_precipitation_x",
@@ -306,7 +306,7 @@
"update": {
"stroke": {"scale": "color", "field": "location"},
"description": {
- "signal": "\"date (month): \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of precipitation: \" + (format(datum[\"mean_precipitation\"], \"\")) + \"; location: \" + (isValid(datum[\"location\"]) ? datum[\"location\"] : \"\"+datum[\"location\"])"
+ "signal": "\"date (month): \" + (!isValid(datum[\"month_date\"]) || !isFinite(+datum[\"month_date\"]) ? \"\" + datum[\"month_date\"] : timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of precipitation: \" + (!isValid(datum[\"mean_precipitation\"]) || !isFinite(+datum[\"mean_precipitation\"]) ? \"\" + datum[\"mean_precipitation\"] : format(datum[\"mean_precipitation\"], \"\")) + \"; location: \" + (\"\" + datum[\"location\"])"
},
"x": {
"scale": "child__column_precipitation_x",
@@ -405,7 +405,7 @@
"stroke": {"scale": "color", "field": "location"},
"opacity": {"value": 0.2},
"description": {
- "signal": "\"date (month): \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of wind: \" + (format(datum[\"mean_wind\"], \"\")) + \"; location: \" + (isValid(datum[\"location\"]) ? datum[\"location\"] : \"\"+datum[\"location\"]) + \"; date (year): \" + (timeFormat(datum[\"year_date\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"})))"
+ "signal": "\"date (month): \" + (!isValid(datum[\"month_date\"]) || !isFinite(+datum[\"month_date\"]) ? \"\" + datum[\"month_date\"] : timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of wind: \" + (!isValid(datum[\"mean_wind\"]) || !isFinite(+datum[\"mean_wind\"]) ? \"\" + datum[\"mean_wind\"] : format(datum[\"mean_wind\"], \"\")) + \"; location: \" + (\"\" + datum[\"location\"]) + \"; date (year): \" + (!isValid(datum[\"year_date\"]) || !isFinite(+datum[\"year_date\"]) ? \"\" + datum[\"year_date\"] : timeFormat(datum[\"year_date\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"})))"
},
"x": {"scale": "child__column_wind_x", "field": "month_date"},
"y": {"scale": "child__column_wind_y", "field": "mean_wind"},
@@ -444,7 +444,7 @@
"update": {
"stroke": {"scale": "color", "field": "location"},
"description": {
- "signal": "\"date (month): \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of wind: \" + (format(datum[\"mean_wind\"], \"\")) + \"; location: \" + (isValid(datum[\"location\"]) ? datum[\"location\"] : \"\"+datum[\"location\"])"
+ "signal": "\"date (month): \" + (!isValid(datum[\"month_date\"]) || !isFinite(+datum[\"month_date\"]) ? \"\" + datum[\"month_date\"] : timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of wind: \" + (!isValid(datum[\"mean_wind\"]) || !isFinite(+datum[\"mean_wind\"]) ? \"\" + datum[\"mean_wind\"] : format(datum[\"mean_wind\"], \"\")) + \"; location: \" + (\"\" + datum[\"location\"])"
},
"x": {"scale": "child__column_wind_x", "field": "month_date"},
"y": {"scale": "child__column_wind_y", "field": "mean_wind"},
diff --git a/examples/compiled/repeat_histogram.vg.json b/examples/compiled/repeat_histogram.vg.json
index 7a9df0329c..77f211957f 100644
--- a/examples/compiled/repeat_histogram.vg.json
+++ b/examples/compiled/repeat_histogram.vg.json
@@ -235,7 +235,7 @@
"fill": {"scale": "color", "field": "Origin"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Horsepower (binned): \" + (!isValid(datum[\"bin_maxbins_10_Horsepower\"]) || !isFinite(+datum[\"bin_maxbins_10_Horsepower\"]) ? \"null\" : format(datum[\"bin_maxbins_10_Horsepower\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_Horsepower_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Horsepower (binned): \" + (!isValid(datum[\"bin_maxbins_10_Horsepower\"]) || !isFinite(+datum[\"bin_maxbins_10_Horsepower\"]) ? \"\" + datum[\"bin_maxbins_10_Horsepower\"] : format(datum[\"bin_maxbins_10_Horsepower\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_Horsepower_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x2": {
"scale": "child__Horsepower_x",
@@ -314,7 +314,7 @@
"fill": {"scale": "color", "field": "Origin"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Miles_per_Gallon (binned): \" + (!isValid(datum[\"bin_maxbins_10_Miles_per_Gallon\"]) || !isFinite(+datum[\"bin_maxbins_10_Miles_per_Gallon\"]) ? \"null\" : format(datum[\"bin_maxbins_10_Miles_per_Gallon\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_Miles_per_Gallon_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Miles_per_Gallon (binned): \" + (!isValid(datum[\"bin_maxbins_10_Miles_per_Gallon\"]) || !isFinite(+datum[\"bin_maxbins_10_Miles_per_Gallon\"]) ? \"\" + datum[\"bin_maxbins_10_Miles_per_Gallon\"] : format(datum[\"bin_maxbins_10_Miles_per_Gallon\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_Miles_per_Gallon_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x2": {
"scale": "child__Miles_per_Gallon_x",
@@ -399,7 +399,7 @@
"fill": {"scale": "color", "field": "Origin"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Acceleration (binned): \" + (!isValid(datum[\"bin_maxbins_10_Acceleration\"]) || !isFinite(+datum[\"bin_maxbins_10_Acceleration\"]) ? \"null\" : format(datum[\"bin_maxbins_10_Acceleration\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_Acceleration_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Acceleration (binned): \" + (!isValid(datum[\"bin_maxbins_10_Acceleration\"]) || !isFinite(+datum[\"bin_maxbins_10_Acceleration\"]) ? \"\" + datum[\"bin_maxbins_10_Acceleration\"] : format(datum[\"bin_maxbins_10_Acceleration\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_Acceleration_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x2": {
"scale": "child__Acceleration_x",
@@ -478,7 +478,7 @@
"fill": {"scale": "color", "field": "Origin"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Displacement (binned): \" + (!isValid(datum[\"bin_maxbins_10_Displacement\"]) || !isFinite(+datum[\"bin_maxbins_10_Displacement\"]) ? \"null\" : format(datum[\"bin_maxbins_10_Displacement\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_Displacement_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Displacement (binned): \" + (!isValid(datum[\"bin_maxbins_10_Displacement\"]) || !isFinite(+datum[\"bin_maxbins_10_Displacement\"]) ? \"\" + datum[\"bin_maxbins_10_Displacement\"] : format(datum[\"bin_maxbins_10_Displacement\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_Displacement_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x2": {
"scale": "child__Displacement_x",
diff --git a/examples/compiled/repeat_histogram_autosize.vg.json b/examples/compiled/repeat_histogram_autosize.vg.json
index 5039068319..826672ce53 100644
--- a/examples/compiled/repeat_histogram_autosize.vg.json
+++ b/examples/compiled/repeat_histogram_autosize.vg.json
@@ -110,7 +110,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Horsepower (binned): \" + (!isValid(datum[\"bin_maxbins_10_Horsepower\"]) || !isFinite(+datum[\"bin_maxbins_10_Horsepower\"]) ? \"null\" : format(datum[\"bin_maxbins_10_Horsepower\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_Horsepower_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"Horsepower (binned): \" + (!isValid(datum[\"bin_maxbins_10_Horsepower\"]) || !isFinite(+datum[\"bin_maxbins_10_Horsepower\"]) ? \"\" + datum[\"bin_maxbins_10_Horsepower\"] : format(datum[\"bin_maxbins_10_Horsepower\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_Horsepower_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x2": {
"scale": "child__Horsepower_x",
@@ -189,7 +189,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Miles_per_Gallon (binned): \" + (!isValid(datum[\"bin_maxbins_10_Miles_per_Gallon\"]) || !isFinite(+datum[\"bin_maxbins_10_Miles_per_Gallon\"]) ? \"null\" : format(datum[\"bin_maxbins_10_Miles_per_Gallon\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_Miles_per_Gallon_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"Miles_per_Gallon (binned): \" + (!isValid(datum[\"bin_maxbins_10_Miles_per_Gallon\"]) || !isFinite(+datum[\"bin_maxbins_10_Miles_per_Gallon\"]) ? \"\" + datum[\"bin_maxbins_10_Miles_per_Gallon\"] : format(datum[\"bin_maxbins_10_Miles_per_Gallon\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_Miles_per_Gallon_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x2": {
"scale": "child__Miles_per_Gallon_x",
diff --git a/examples/compiled/repeat_histogram_flights.vg.json b/examples/compiled/repeat_histogram_flights.vg.json
index b44321b2fe..930e9d335b 100644
--- a/examples/compiled/repeat_histogram_flights.vg.json
+++ b/examples/compiled/repeat_histogram_flights.vg.json
@@ -133,7 +133,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"distance (binned): \" + (!isValid(datum[\"bin_maxbins_20_distance\"]) || !isFinite(+datum[\"bin_maxbins_20_distance\"]) ? \"null\" : format(datum[\"bin_maxbins_20_distance\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_distance_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"distance (binned): \" + (!isValid(datum[\"bin_maxbins_20_distance\"]) || !isFinite(+datum[\"bin_maxbins_20_distance\"]) ? \"\" + datum[\"bin_maxbins_20_distance\"] : format(datum[\"bin_maxbins_20_distance\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_distance_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x2": {
"scale": "child__column_distance_x",
@@ -212,7 +212,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"delay (binned): \" + (!isValid(datum[\"bin_maxbins_20_delay\"]) || !isFinite(+datum[\"bin_maxbins_20_delay\"]) ? \"null\" : format(datum[\"bin_maxbins_20_delay\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_delay_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"delay (binned): \" + (!isValid(datum[\"bin_maxbins_20_delay\"]) || !isFinite(+datum[\"bin_maxbins_20_delay\"]) ? \"\" + datum[\"bin_maxbins_20_delay\"] : format(datum[\"bin_maxbins_20_delay\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_delay_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x2": {
"scale": "child__column_delay_x",
@@ -291,7 +291,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"time (binned): \" + (!isValid(datum[\"bin_maxbins_20_time\"]) || !isFinite(+datum[\"bin_maxbins_20_time\"]) ? \"null\" : format(datum[\"bin_maxbins_20_time\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_time_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"time (binned): \" + (!isValid(datum[\"bin_maxbins_20_time\"]) || !isFinite(+datum[\"bin_maxbins_20_time\"]) ? \"\" + datum[\"bin_maxbins_20_time\"] : format(datum[\"bin_maxbins_20_time\"], \"\") + \" – \" + format(datum[\"bin_maxbins_20_time_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x2": {
"scale": "child__column_time_x",
diff --git a/examples/compiled/repeat_independent_colors.vg.json b/examples/compiled/repeat_independent_colors.vg.json
index 3794e6b9e6..574c64ebdb 100644
--- a/examples/compiled/repeat_independent_colors.vg.json
+++ b/examples/compiled/repeat_independent_colors.vg.json
@@ -47,7 +47,7 @@
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {"scale": "child__column_Origin_x", "field": "Horsepower"},
"y": {
@@ -149,7 +149,7 @@
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (\"\" + datum[\"Cylinders\"])"
},
"x": {
"scale": "child__column_Cylinders_x",
diff --git a/examples/compiled/repeat_layer.vg.json b/examples/compiled/repeat_layer.vg.json
index 3fba1104a4..9ecf0f71a6 100644
--- a/examples/compiled/repeat_layer.vg.json
+++ b/examples/compiled/repeat_layer.vg.json
@@ -53,7 +53,7 @@
"update": {
"stroke": {"scale": "color", "value": "US Gross"},
"description": {
- "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"null\" : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\")) + \"; Mean of US and Worldwide Gross: \" + (format(datum[\"mean_US Gross\"], \"\"))"
+ "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"\" + datum[\"bin_maxbins_10_IMDB Rating\"] : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\")) + \"; Mean of US and Worldwide Gross: \" + (!isValid(datum[\"mean_US Gross\"]) || !isFinite(+datum[\"mean_US Gross\"]) ? \"\" + datum[\"mean_US Gross\"] : format(datum[\"mean_US Gross\"], \"\"))"
},
"x": {
"signal": "scale(\"x\", 0.5 * datum[\"bin_maxbins_10_IMDB Rating\"] + 0.5 * datum[\"bin_maxbins_10_IMDB Rating_end\"])"
@@ -75,7 +75,7 @@
"update": {
"stroke": {"scale": "color", "value": "Worldwide Gross"},
"description": {
- "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"null\" : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\")) + \"; Mean of US and Worldwide Gross: \" + (format(datum[\"mean_Worldwide Gross\"], \"\"))"
+ "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"\" + datum[\"bin_maxbins_10_IMDB Rating\"] : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\")) + \"; Mean of US and Worldwide Gross: \" + (!isValid(datum[\"mean_Worldwide Gross\"]) || !isFinite(+datum[\"mean_Worldwide Gross\"]) ? \"\" + datum[\"mean_Worldwide Gross\"] : format(datum[\"mean_Worldwide Gross\"], \"\"))"
},
"x": {
"signal": "scale(\"x\", 0.5 * datum[\"bin_maxbins_10_IMDB Rating\"] + 0.5 * datum[\"bin_maxbins_10_IMDB Rating_end\"])"
diff --git a/examples/compiled/repeat_line_weather.vg.json b/examples/compiled/repeat_line_weather.vg.json
index 2294df0f51..1d185762da 100644
--- a/examples/compiled/repeat_line_weather.vg.json
+++ b/examples/compiled/repeat_line_weather.vg.json
@@ -66,7 +66,7 @@
"update": {
"stroke": {"scale": "color", "field": "location"},
"description": {
- "signal": "\"date (month): \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of temp_max: \" + (format(datum[\"mean_temp_max\"], \"\")) + \"; location: \" + (isValid(datum[\"location\"]) ? datum[\"location\"] : \"\"+datum[\"location\"])"
+ "signal": "\"date (month): \" + (!isValid(datum[\"month_date\"]) || !isFinite(+datum[\"month_date\"]) ? \"\" + datum[\"month_date\"] : timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of temp_max: \" + (!isValid(datum[\"mean_temp_max\"]) || !isFinite(+datum[\"mean_temp_max\"]) ? \"\" + datum[\"mean_temp_max\"] : format(datum[\"mean_temp_max\"], \"\")) + \"; location: \" + (\"\" + datum[\"location\"])"
},
"x": {"scale": "child__temp_max_x", "field": "month_date"},
"y": {"scale": "child__temp_max_y", "field": "mean_temp_max"},
@@ -174,7 +174,7 @@
"update": {
"stroke": {"scale": "color", "field": "location"},
"description": {
- "signal": "\"date (month): \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of precipitation: \" + (format(datum[\"mean_precipitation\"], \"\")) + \"; location: \" + (isValid(datum[\"location\"]) ? datum[\"location\"] : \"\"+datum[\"location\"])"
+ "signal": "\"date (month): \" + (!isValid(datum[\"month_date\"]) || !isFinite(+datum[\"month_date\"]) ? \"\" + datum[\"month_date\"] : timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of precipitation: \" + (!isValid(datum[\"mean_precipitation\"]) || !isFinite(+datum[\"mean_precipitation\"]) ? \"\" + datum[\"mean_precipitation\"] : format(datum[\"mean_precipitation\"], \"\")) + \"; location: \" + (\"\" + datum[\"location\"])"
},
"x": {
"scale": "child__precipitation_x",
@@ -288,7 +288,7 @@
"update": {
"stroke": {"scale": "color", "field": "location"},
"description": {
- "signal": "\"date (month): \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of wind: \" + (format(datum[\"mean_wind\"], \"\")) + \"; location: \" + (isValid(datum[\"location\"]) ? datum[\"location\"] : \"\"+datum[\"location\"])"
+ "signal": "\"date (month): \" + (!isValid(datum[\"month_date\"]) || !isFinite(+datum[\"month_date\"]) ? \"\" + datum[\"month_date\"] : timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of wind: \" + (!isValid(datum[\"mean_wind\"]) || !isFinite(+datum[\"mean_wind\"]) ? \"\" + datum[\"mean_wind\"] : format(datum[\"mean_wind\"], \"\")) + \"; location: \" + (\"\" + datum[\"location\"])"
},
"x": {"scale": "child__wind_x", "field": "month_date"},
"y": {"scale": "child__wind_y", "field": "mean_wind"},
diff --git a/examples/compiled/repeat_splom.vg.json b/examples/compiled/repeat_splom.vg.json
index 78473dbd04..c910370899 100644
--- a/examples/compiled/repeat_splom.vg.json
+++ b/examples/compiled/repeat_splom.vg.json
@@ -138,7 +138,7 @@
"stroke": {"scale": "color", "field": "Species"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Body Mass (g): \" + (format(datum[\"Body Mass (g)\"], \"\")) + \"; Beak Length (mm): \" + (format(datum[\"Beak Length (mm)\"], \"\")) + \"; Species: \" + (isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"])"
+ "signal": "\"Body Mass (g): \" + (!isValid(datum[\"Body Mass (g)\"]) || !isFinite(+datum[\"Body Mass (g)\"]) ? \"\" + datum[\"Body Mass (g)\"] : format(datum[\"Body Mass (g)\"], \"\")) + \"; Beak Length (mm): \" + (!isValid(datum[\"Beak Length (mm)\"]) || !isFinite(+datum[\"Beak Length (mm)\"]) ? \"\" + datum[\"Beak Length (mm)\"] : format(datum[\"Beak Length (mm)\"], \"\")) + \"; Species: \" + (\"\" + datum[\"Species\"])"
},
"x": {
"scale": "child__row_Beak_Length__mm_column_Body_Mass__g__x",
@@ -225,7 +225,7 @@
"stroke": {"scale": "color", "field": "Species"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Flipper Length (mm): \" + (format(datum[\"Flipper Length (mm)\"], \"\")) + \"; Beak Length (mm): \" + (format(datum[\"Beak Length (mm)\"], \"\")) + \"; Species: \" + (isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"])"
+ "signal": "\"Flipper Length (mm): \" + (!isValid(datum[\"Flipper Length (mm)\"]) || !isFinite(+datum[\"Flipper Length (mm)\"]) ? \"\" + datum[\"Flipper Length (mm)\"] : format(datum[\"Flipper Length (mm)\"], \"\")) + \"; Beak Length (mm): \" + (!isValid(datum[\"Beak Length (mm)\"]) || !isFinite(+datum[\"Beak Length (mm)\"]) ? \"\" + datum[\"Beak Length (mm)\"] : format(datum[\"Beak Length (mm)\"], \"\")) + \"; Species: \" + (\"\" + datum[\"Species\"])"
},
"x": {
"scale": "child__row_Beak_Length__mm_column_Flipper_Length__mm__x",
@@ -312,7 +312,7 @@
"stroke": {"scale": "color", "field": "Species"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Beak Depth (mm): \" + (format(datum[\"Beak Depth (mm)\"], \"\")) + \"; Beak Length (mm): \" + (format(datum[\"Beak Length (mm)\"], \"\")) + \"; Species: \" + (isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"])"
+ "signal": "\"Beak Depth (mm): \" + (!isValid(datum[\"Beak Depth (mm)\"]) || !isFinite(+datum[\"Beak Depth (mm)\"]) ? \"\" + datum[\"Beak Depth (mm)\"] : format(datum[\"Beak Depth (mm)\"], \"\")) + \"; Beak Length (mm): \" + (!isValid(datum[\"Beak Length (mm)\"]) || !isFinite(+datum[\"Beak Length (mm)\"]) ? \"\" + datum[\"Beak Length (mm)\"] : format(datum[\"Beak Length (mm)\"], \"\")) + \"; Species: \" + (\"\" + datum[\"Species\"])"
},
"x": {
"scale": "child__row_Beak_Length__mm_column_Beak_Depth__mm__x",
@@ -399,7 +399,7 @@
"stroke": {"scale": "color", "field": "Species"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Beak Length (mm): \" + (format(datum[\"Beak Length (mm)\"], \"\")) + \"; Species: \" + (isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"])"
+ "signal": "\"Beak Length (mm): \" + (!isValid(datum[\"Beak Length (mm)\"]) || !isFinite(+datum[\"Beak Length (mm)\"]) ? \"\" + datum[\"Beak Length (mm)\"] : format(datum[\"Beak Length (mm)\"], \"\")) + \"; Species: \" + (\"\" + datum[\"Species\"])"
},
"x": {
"scale": "child__row_Beak_Length__mm_column_Beak_Length__mm__x",
@@ -486,7 +486,7 @@
"stroke": {"scale": "color", "field": "Species"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Body Mass (g): \" + (format(datum[\"Body Mass (g)\"], \"\")) + \"; Beak Depth (mm): \" + (format(datum[\"Beak Depth (mm)\"], \"\")) + \"; Species: \" + (isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"])"
+ "signal": "\"Body Mass (g): \" + (!isValid(datum[\"Body Mass (g)\"]) || !isFinite(+datum[\"Body Mass (g)\"]) ? \"\" + datum[\"Body Mass (g)\"] : format(datum[\"Body Mass (g)\"], \"\")) + \"; Beak Depth (mm): \" + (!isValid(datum[\"Beak Depth (mm)\"]) || !isFinite(+datum[\"Beak Depth (mm)\"]) ? \"\" + datum[\"Beak Depth (mm)\"] : format(datum[\"Beak Depth (mm)\"], \"\")) + \"; Species: \" + (\"\" + datum[\"Species\"])"
},
"x": {
"scale": "child__row_Beak_Depth__mm_column_Body_Mass__g__x",
@@ -573,7 +573,7 @@
"stroke": {"scale": "color", "field": "Species"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Flipper Length (mm): \" + (format(datum[\"Flipper Length (mm)\"], \"\")) + \"; Beak Depth (mm): \" + (format(datum[\"Beak Depth (mm)\"], \"\")) + \"; Species: \" + (isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"])"
+ "signal": "\"Flipper Length (mm): \" + (!isValid(datum[\"Flipper Length (mm)\"]) || !isFinite(+datum[\"Flipper Length (mm)\"]) ? \"\" + datum[\"Flipper Length (mm)\"] : format(datum[\"Flipper Length (mm)\"], \"\")) + \"; Beak Depth (mm): \" + (!isValid(datum[\"Beak Depth (mm)\"]) || !isFinite(+datum[\"Beak Depth (mm)\"]) ? \"\" + datum[\"Beak Depth (mm)\"] : format(datum[\"Beak Depth (mm)\"], \"\")) + \"; Species: \" + (\"\" + datum[\"Species\"])"
},
"x": {
"scale": "child__row_Beak_Depth__mm_column_Flipper_Length__mm__x",
@@ -660,7 +660,7 @@
"stroke": {"scale": "color", "field": "Species"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Beak Depth (mm): \" + (format(datum[\"Beak Depth (mm)\"], \"\")) + \"; Species: \" + (isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"])"
+ "signal": "\"Beak Depth (mm): \" + (!isValid(datum[\"Beak Depth (mm)\"]) || !isFinite(+datum[\"Beak Depth (mm)\"]) ? \"\" + datum[\"Beak Depth (mm)\"] : format(datum[\"Beak Depth (mm)\"], \"\")) + \"; Species: \" + (\"\" + datum[\"Species\"])"
},
"x": {
"scale": "child__row_Beak_Depth__mm_column_Beak_Depth__mm__x",
@@ -747,7 +747,7 @@
"stroke": {"scale": "color", "field": "Species"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Beak Length (mm): \" + (format(datum[\"Beak Length (mm)\"], \"\")) + \"; Beak Depth (mm): \" + (format(datum[\"Beak Depth (mm)\"], \"\")) + \"; Species: \" + (isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"])"
+ "signal": "\"Beak Length (mm): \" + (!isValid(datum[\"Beak Length (mm)\"]) || !isFinite(+datum[\"Beak Length (mm)\"]) ? \"\" + datum[\"Beak Length (mm)\"] : format(datum[\"Beak Length (mm)\"], \"\")) + \"; Beak Depth (mm): \" + (!isValid(datum[\"Beak Depth (mm)\"]) || !isFinite(+datum[\"Beak Depth (mm)\"]) ? \"\" + datum[\"Beak Depth (mm)\"] : format(datum[\"Beak Depth (mm)\"], \"\")) + \"; Species: \" + (\"\" + datum[\"Species\"])"
},
"x": {
"scale": "child__row_Beak_Depth__mm_column_Beak_Length__mm__x",
@@ -834,7 +834,7 @@
"stroke": {"scale": "color", "field": "Species"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Body Mass (g): \" + (format(datum[\"Body Mass (g)\"], \"\")) + \"; Flipper Length (mm): \" + (format(datum[\"Flipper Length (mm)\"], \"\")) + \"; Species: \" + (isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"])"
+ "signal": "\"Body Mass (g): \" + (!isValid(datum[\"Body Mass (g)\"]) || !isFinite(+datum[\"Body Mass (g)\"]) ? \"\" + datum[\"Body Mass (g)\"] : format(datum[\"Body Mass (g)\"], \"\")) + \"; Flipper Length (mm): \" + (!isValid(datum[\"Flipper Length (mm)\"]) || !isFinite(+datum[\"Flipper Length (mm)\"]) ? \"\" + datum[\"Flipper Length (mm)\"] : format(datum[\"Flipper Length (mm)\"], \"\")) + \"; Species: \" + (\"\" + datum[\"Species\"])"
},
"x": {
"scale": "child__row_Flipper_Length__mm_column_Body_Mass__g__x",
@@ -921,7 +921,7 @@
"stroke": {"scale": "color", "field": "Species"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Flipper Length (mm): \" + (format(datum[\"Flipper Length (mm)\"], \"\")) + \"; Species: \" + (isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"])"
+ "signal": "\"Flipper Length (mm): \" + (!isValid(datum[\"Flipper Length (mm)\"]) || !isFinite(+datum[\"Flipper Length (mm)\"]) ? \"\" + datum[\"Flipper Length (mm)\"] : format(datum[\"Flipper Length (mm)\"], \"\")) + \"; Species: \" + (\"\" + datum[\"Species\"])"
},
"x": {
"scale": "child__row_Flipper_Length__mm_column_Flipper_Length__mm__x",
@@ -1008,7 +1008,7 @@
"stroke": {"scale": "color", "field": "Species"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Beak Depth (mm): \" + (format(datum[\"Beak Depth (mm)\"], \"\")) + \"; Flipper Length (mm): \" + (format(datum[\"Flipper Length (mm)\"], \"\")) + \"; Species: \" + (isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"])"
+ "signal": "\"Beak Depth (mm): \" + (!isValid(datum[\"Beak Depth (mm)\"]) || !isFinite(+datum[\"Beak Depth (mm)\"]) ? \"\" + datum[\"Beak Depth (mm)\"] : format(datum[\"Beak Depth (mm)\"], \"\")) + \"; Flipper Length (mm): \" + (!isValid(datum[\"Flipper Length (mm)\"]) || !isFinite(+datum[\"Flipper Length (mm)\"]) ? \"\" + datum[\"Flipper Length (mm)\"] : format(datum[\"Flipper Length (mm)\"], \"\")) + \"; Species: \" + (\"\" + datum[\"Species\"])"
},
"x": {
"scale": "child__row_Flipper_Length__mm_column_Beak_Depth__mm__x",
@@ -1095,7 +1095,7 @@
"stroke": {"scale": "color", "field": "Species"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Beak Length (mm): \" + (format(datum[\"Beak Length (mm)\"], \"\")) + \"; Flipper Length (mm): \" + (format(datum[\"Flipper Length (mm)\"], \"\")) + \"; Species: \" + (isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"])"
+ "signal": "\"Beak Length (mm): \" + (!isValid(datum[\"Beak Length (mm)\"]) || !isFinite(+datum[\"Beak Length (mm)\"]) ? \"\" + datum[\"Beak Length (mm)\"] : format(datum[\"Beak Length (mm)\"], \"\")) + \"; Flipper Length (mm): \" + (!isValid(datum[\"Flipper Length (mm)\"]) || !isFinite(+datum[\"Flipper Length (mm)\"]) ? \"\" + datum[\"Flipper Length (mm)\"] : format(datum[\"Flipper Length (mm)\"], \"\")) + \"; Species: \" + (\"\" + datum[\"Species\"])"
},
"x": {
"scale": "child__row_Flipper_Length__mm_column_Beak_Length__mm__x",
@@ -1182,7 +1182,7 @@
"stroke": {"scale": "color", "field": "Species"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Body Mass (g): \" + (format(datum[\"Body Mass (g)\"], \"\")) + \"; Species: \" + (isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"])"
+ "signal": "\"Body Mass (g): \" + (!isValid(datum[\"Body Mass (g)\"]) || !isFinite(+datum[\"Body Mass (g)\"]) ? \"\" + datum[\"Body Mass (g)\"] : format(datum[\"Body Mass (g)\"], \"\")) + \"; Species: \" + (\"\" + datum[\"Species\"])"
},
"x": {
"scale": "child__row_Body_Mass__g_column_Body_Mass__g__x",
@@ -1269,7 +1269,7 @@
"stroke": {"scale": "color", "field": "Species"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Flipper Length (mm): \" + (format(datum[\"Flipper Length (mm)\"], \"\")) + \"; Body Mass (g): \" + (format(datum[\"Body Mass (g)\"], \"\")) + \"; Species: \" + (isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"])"
+ "signal": "\"Flipper Length (mm): \" + (!isValid(datum[\"Flipper Length (mm)\"]) || !isFinite(+datum[\"Flipper Length (mm)\"]) ? \"\" + datum[\"Flipper Length (mm)\"] : format(datum[\"Flipper Length (mm)\"], \"\")) + \"; Body Mass (g): \" + (!isValid(datum[\"Body Mass (g)\"]) || !isFinite(+datum[\"Body Mass (g)\"]) ? \"\" + datum[\"Body Mass (g)\"] : format(datum[\"Body Mass (g)\"], \"\")) + \"; Species: \" + (\"\" + datum[\"Species\"])"
},
"x": {
"scale": "child__row_Body_Mass__g_column_Flipper_Length__mm__x",
@@ -1356,7 +1356,7 @@
"stroke": {"scale": "color", "field": "Species"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Beak Depth (mm): \" + (format(datum[\"Beak Depth (mm)\"], \"\")) + \"; Body Mass (g): \" + (format(datum[\"Body Mass (g)\"], \"\")) + \"; Species: \" + (isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"])"
+ "signal": "\"Beak Depth (mm): \" + (!isValid(datum[\"Beak Depth (mm)\"]) || !isFinite(+datum[\"Beak Depth (mm)\"]) ? \"\" + datum[\"Beak Depth (mm)\"] : format(datum[\"Beak Depth (mm)\"], \"\")) + \"; Body Mass (g): \" + (!isValid(datum[\"Body Mass (g)\"]) || !isFinite(+datum[\"Body Mass (g)\"]) ? \"\" + datum[\"Body Mass (g)\"] : format(datum[\"Body Mass (g)\"], \"\")) + \"; Species: \" + (\"\" + datum[\"Species\"])"
},
"x": {
"scale": "child__row_Body_Mass__g_column_Beak_Depth__mm__x",
@@ -1443,7 +1443,7 @@
"stroke": {"scale": "color", "field": "Species"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Beak Length (mm): \" + (format(datum[\"Beak Length (mm)\"], \"\")) + \"; Body Mass (g): \" + (format(datum[\"Body Mass (g)\"], \"\")) + \"; Species: \" + (isValid(datum[\"Species\"]) ? datum[\"Species\"] : \"\"+datum[\"Species\"])"
+ "signal": "\"Beak Length (mm): \" + (!isValid(datum[\"Beak Length (mm)\"]) || !isFinite(+datum[\"Beak Length (mm)\"]) ? \"\" + datum[\"Beak Length (mm)\"] : format(datum[\"Beak Length (mm)\"], \"\")) + \"; Body Mass (g): \" + (!isValid(datum[\"Body Mass (g)\"]) || !isFinite(+datum[\"Body Mass (g)\"]) ? \"\" + datum[\"Body Mass (g)\"] : format(datum[\"Body Mass (g)\"], \"\")) + \"; Species: \" + (\"\" + datum[\"Species\"])"
},
"x": {
"scale": "child__row_Body_Mass__g_column_Beak_Length__mm__x",
diff --git a/examples/compiled/repeat_splom_cars.vg.json b/examples/compiled/repeat_splom_cars.vg.json
index 08e9d5ab95..12a4292bbd 100644
--- a/examples/compiled/repeat_splom_cars.vg.json
+++ b/examples/compiled/repeat_splom_cars.vg.json
@@ -74,7 +74,7 @@
"stroke": {"scale": "color", "field": "Origin"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Displacement: \" + (format(datum[\"Displacement\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Displacement: \" + (!isValid(datum[\"Displacement\"]) || !isFinite(+datum[\"Displacement\"]) ? \"\" + datum[\"Displacement\"] : format(datum[\"Displacement\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {
"scale": "child__row_Displacementcolumn_Horsepower_x",
@@ -161,7 +161,7 @@
"stroke": {"scale": "color", "field": "Origin"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Displacement: \" + (format(datum[\"Displacement\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Displacement: \" + (!isValid(datum[\"Displacement\"]) || !isFinite(+datum[\"Displacement\"]) ? \"\" + datum[\"Displacement\"] : format(datum[\"Displacement\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {
"scale": "child__row_Displacementcolumn_Miles_per_Gallon_x",
@@ -248,7 +248,7 @@
"stroke": {"scale": "color", "field": "Origin"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {
"scale": "child__row_Miles_per_Galloncolumn_Horsepower_x",
@@ -335,7 +335,7 @@
"stroke": {"scale": "color", "field": "Origin"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {
"scale": "child__row_Miles_per_Galloncolumn_Miles_per_Gallon_x",
diff --git a/examples/compiled/rule_color_mean.vg.json b/examples/compiled/rule_color_mean.vg.json
index b0de789e6c..90034bbe4f 100644
--- a/examples/compiled/rule_color_mean.vg.json
+++ b/examples/compiled/rule_color_mean.vg.json
@@ -36,7 +36,7 @@
"update": {
"stroke": {"scale": "color", "field": "symbol"},
"description": {
- "signal": "\"Mean of price: \" + (format(datum[\"mean_price\"], \"\")) + \"; symbol: \" + (isValid(datum[\"symbol\"]) ? datum[\"symbol\"] : \"\"+datum[\"symbol\"])"
+ "signal": "\"Mean of price: \" + (!isValid(datum[\"mean_price\"]) || !isFinite(+datum[\"mean_price\"]) ? \"\" + datum[\"mean_price\"] : format(datum[\"mean_price\"], \"\")) + \"; symbol: \" + (\"\" + datum[\"symbol\"])"
},
"x": {"field": {"group": "width"}},
"x2": {"value": 0},
diff --git a/examples/compiled/rule_extent.vg.json b/examples/compiled/rule_extent.vg.json
index c83df692fc..8272a16f93 100644
--- a/examples/compiled/rule_extent.vg.json
+++ b/examples/compiled/rule_extent.vg.json
@@ -39,7 +39,7 @@
"update": {
"stroke": {"value": "black"},
"description": {
- "signal": "\"Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; Min of Horsepower: \" + (format(datum[\"min_Horsepower\"], \"\")) + \"; Max of Horsepower: \" + (format(datum[\"max_Horsepower\"], \"\"))"
+ "signal": "\"Origin: \" + (\"\" + datum[\"Origin\"]) + \"; Min of Horsepower: \" + (!isValid(datum[\"min_Horsepower\"]) || !isFinite(+datum[\"min_Horsepower\"]) ? \"\" + datum[\"min_Horsepower\"] : format(datum[\"min_Horsepower\"], \"\")) + \"; Max of Horsepower: \" + (!isValid(datum[\"max_Horsepower\"]) || !isFinite(+datum[\"max_Horsepower\"]) ? \"\" + datum[\"max_Horsepower\"] : format(datum[\"max_Horsepower\"], \"\"))"
},
"x": {"scale": "x", "field": "Origin", "band": 0.5},
"y": {"scale": "y", "field": "min_Horsepower"},
diff --git a/examples/compiled/sample_scatterplot.vg.json b/examples/compiled/sample_scatterplot.vg.json
index 0699cf1e21..72a6ce778b 100644
--- a/examples/compiled/sample_scatterplot.vg.json
+++ b/examples/compiled/sample_scatterplot.vg.json
@@ -53,7 +53,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\"))"
},
"x": {"scale": "concat_0_x", "field": "Horsepower"},
"y": {"scale": "concat_0_y", "field": "Miles_per_Gallon"}
@@ -134,7 +134,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\"))"
},
"x": {"scale": "concat_1_x", "field": "Horsepower"},
"y": {"scale": "concat_1_y", "field": "Miles_per_Gallon"}
diff --git a/examples/compiled/scatter_image.vg.json b/examples/compiled/scatter_image.vg.json
index 4bfe28fce6..c9c7fc3743 100644
--- a/examples/compiled/scatter_image.vg.json
+++ b/examples/compiled/scatter_image.vg.json
@@ -34,15 +34,13 @@
"encode": {
"update": {
"description": {
- "signal": "\"x: \" + (format(datum[\"x\"], \"\")) + \"; y: \" + (format(datum[\"y\"], \"\")) + \"; img: \" + (isValid(datum[\"img\"]) ? datum[\"img\"] : \"\"+datum[\"img\"])"
+ "signal": "\"x: \" + (!isValid(datum[\"x\"]) || !isFinite(+datum[\"x\"]) ? \"\" + datum[\"x\"] : format(datum[\"x\"], \"\")) + \"; y: \" + (!isValid(datum[\"y\"]) || !isFinite(+datum[\"y\"]) ? \"\" + datum[\"y\"] : format(datum[\"y\"], \"\")) + \"; img: \" + (\"\" + datum[\"img\"])"
},
"xc": {"scale": "x", "field": "x"},
"width": {"value": 50},
"yc": {"scale": "y", "field": "y"},
"height": {"value": 50},
- "url": {
- "signal": "isValid(datum[\"img\"]) ? datum[\"img\"] : \"\"+datum[\"img\"]"
- }
+ "url": {"signal": "\"\" + datum[\"img\"]"}
}
}
}
diff --git a/examples/compiled/selection_bind_cylyr.vg.json b/examples/compiled/selection_bind_cylyr.vg.json
index 9afdab62a9..60990d3af0 100644
--- a/examples/compiled/selection_bind_cylyr.vg.json
+++ b/examples/compiled/selection_bind_cylyr.vg.json
@@ -83,7 +83,7 @@
],
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"},
diff --git a/examples/compiled/selection_bind_origin.vg.json b/examples/compiled/selection_bind_origin.vg.json
index e7935ec60f..7729e84f8c 100644
--- a/examples/compiled/selection_bind_origin.vg.json
+++ b/examples/compiled/selection_bind_origin.vg.json
@@ -72,7 +72,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (\"\" + datum[\"Cylinders\"])"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"}
diff --git a/examples/compiled/selection_brush_timeunit.vg.json b/examples/compiled/selection_brush_timeunit.vg.json
index 9be393bf80..0230198241 100644
--- a/examples/compiled/selection_brush_timeunit.vg.json
+++ b/examples/compiled/selection_brush_timeunit.vg.json
@@ -312,7 +312,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"date (seconds): \" + (timeFormat(datum[\"seconds_date\"], timeUnitSpecifier([\"seconds\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; price: \" + (format(datum[\"price\"], \"\"))"
+ "signal": "\"date (seconds): \" + (!isValid(datum[\"seconds_date\"]) || !isFinite(+datum[\"seconds_date\"]) ? \"\" + datum[\"seconds_date\"] : timeFormat(datum[\"seconds_date\"], timeUnitSpecifier([\"seconds\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\"))"
},
"x": {"scale": "concat_0_x", "field": "seconds_date"},
"y": {"scale": "concat_0_y", "field": "price"}
@@ -448,7 +448,7 @@
"stroke": {"value": "goldenrod"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"date (minutes): \" + (timeFormat(datum[\"minutes_date\"], timeUnitSpecifier([\"minutes\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; price: \" + (format(datum[\"price\"], \"\"))"
+ "signal": "\"date (minutes): \" + (!isValid(datum[\"minutes_date\"]) || !isFinite(+datum[\"minutes_date\"]) ? \"\" + datum[\"minutes_date\"] : timeFormat(datum[\"minutes_date\"], timeUnitSpecifier([\"minutes\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\"))"
},
"x": {"scale": "concat_1_x", "field": "minutes_date"},
"y": {"scale": "concat_1_y", "field": "price"}
diff --git a/examples/compiled/selection_clear_brush.vg.json b/examples/compiled/selection_clear_brush.vg.json
index 46be5c26dc..a5de9df286 100644
--- a/examples/compiled/selection_clear_brush.vg.json
+++ b/examples/compiled/selection_clear_brush.vg.json
@@ -332,7 +332,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (\"\" + datum[\"Cylinders\"])"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"}
diff --git a/examples/compiled/selection_composition_and.vg.json b/examples/compiled/selection_composition_and.vg.json
index ed2b4334e8..98001c0ec0 100644
--- a/examples/compiled/selection_composition_and.vg.json
+++ b/examples/compiled/selection_composition_and.vg.json
@@ -582,7 +582,7 @@
{"value": "grey"}
],
"description": {
- "signal": "\"Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"Cylinders: \" + (\"\" + datum[\"Cylinders\"]) + \"; Origin: \" + (\"\" + datum[\"Origin\"]) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x": {"scale": "x", "field": "Cylinders"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/selection_composition_or.vg.json b/examples/compiled/selection_composition_or.vg.json
index 86b967ca1b..24b2bc26f7 100644
--- a/examples/compiled/selection_composition_or.vg.json
+++ b/examples/compiled/selection_composition_or.vg.json
@@ -582,7 +582,7 @@
{"value": "grey"}
],
"description": {
- "signal": "\"Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"Cylinders: \" + (\"\" + datum[\"Cylinders\"]) + \"; Origin: \" + (\"\" + datum[\"Origin\"]) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x": {"scale": "x", "field": "Cylinders"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/selection_concat.vg.json b/examples/compiled/selection_concat.vg.json
index 5cf2a29f53..ce7429501b 100644
--- a/examples/compiled/selection_concat.vg.json
+++ b/examples/compiled/selection_concat.vg.json
@@ -345,7 +345,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Horsepower: \" + (format(datum[\"Horsepower\"], \"\"))"
+ "signal": "\"Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\"))"
},
"x": {"scale": "concat_0_x", "field": "Miles_per_Gallon"},
"y": {"scale": "concat_0_y", "field": "Horsepower"}
@@ -594,7 +594,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Displacement: \" + (format(datum[\"Displacement\"], \"\")) + \"; Acceleration: \" + (format(datum[\"Acceleration\"], \"\"))"
+ "signal": "\"Displacement: \" + (!isValid(datum[\"Displacement\"]) || !isFinite(+datum[\"Displacement\"]) ? \"\" + datum[\"Displacement\"] : format(datum[\"Displacement\"], \"\")) + \"; Acceleration: \" + (!isValid(datum[\"Acceleration\"]) || !isFinite(+datum[\"Acceleration\"]) ? \"\" + datum[\"Acceleration\"] : format(datum[\"Acceleration\"], \"\"))"
},
"x": {"scale": "concat_1_x", "field": "Displacement"},
"y": {"scale": "concat_1_y", "field": "Acceleration"}
diff --git a/examples/compiled/selection_filter.vg.json b/examples/compiled/selection_filter.vg.json
index 505a39faf7..a5fba5d0b5 100644
--- a/examples/compiled/selection_filter.vg.json
+++ b/examples/compiled/selection_filter.vg.json
@@ -342,7 +342,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\"))"
},
"x": {"scale": "concat_0_x", "field": "Horsepower"},
"y": {"scale": "concat_0_y", "field": "Miles_per_Gallon"}
@@ -472,7 +472,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Acceleration: \" + (format(datum[\"Acceleration\"], \"\")) + \"; Displacement: \" + (format(datum[\"Displacement\"], \"\"))"
+ "signal": "\"Acceleration: \" + (!isValid(datum[\"Acceleration\"]) || !isFinite(+datum[\"Acceleration\"]) ? \"\" + datum[\"Acceleration\"] : format(datum[\"Acceleration\"], \"\")) + \"; Displacement: \" + (!isValid(datum[\"Displacement\"]) || !isFinite(+datum[\"Displacement\"]) ? \"\" + datum[\"Displacement\"] : format(datum[\"Displacement\"], \"\"))"
},
"x": {"scale": "concat_1_x", "field": "Acceleration"},
"y": {"scale": "concat_1_y", "field": "Displacement"}
diff --git a/examples/compiled/selection_filter_composition.vg.json b/examples/compiled/selection_filter_composition.vg.json
index 26922b2d98..de2667de51 100644
--- a/examples/compiled/selection_filter_composition.vg.json
+++ b/examples/compiled/selection_filter_composition.vg.json
@@ -342,7 +342,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\"))"
},
"x": {"scale": "concat_0_x", "field": "Horsepower"},
"y": {"scale": "concat_0_y", "field": "Miles_per_Gallon"}
@@ -472,7 +472,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Acceleration: \" + (format(datum[\"Acceleration\"], \"\")) + \"; Displacement: \" + (format(datum[\"Displacement\"], \"\"))"
+ "signal": "\"Acceleration: \" + (!isValid(datum[\"Acceleration\"]) || !isFinite(+datum[\"Acceleration\"]) ? \"\" + datum[\"Acceleration\"] : format(datum[\"Acceleration\"], \"\")) + \"; Displacement: \" + (!isValid(datum[\"Displacement\"]) || !isFinite(+datum[\"Displacement\"]) ? \"\" + datum[\"Displacement\"] : format(datum[\"Displacement\"], \"\"))"
},
"x": {"scale": "concat_1_x", "field": "Acceleration"},
"y": {"scale": "concat_1_y", "field": "Displacement"}
diff --git a/examples/compiled/selection_filter_false.vg.json b/examples/compiled/selection_filter_false.vg.json
index 0511ef0c40..f1336620c9 100644
--- a/examples/compiled/selection_filter_false.vg.json
+++ b/examples/compiled/selection_filter_false.vg.json
@@ -342,7 +342,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\"))"
},
"x": {"scale": "concat_0_x", "field": "Horsepower"},
"y": {"scale": "concat_0_y", "field": "Miles_per_Gallon"}
@@ -472,7 +472,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Acceleration: \" + (format(datum[\"Acceleration\"], \"\")) + \"; Displacement: \" + (format(datum[\"Displacement\"], \"\"))"
+ "signal": "\"Acceleration: \" + (!isValid(datum[\"Acceleration\"]) || !isFinite(+datum[\"Acceleration\"]) ? \"\" + datum[\"Acceleration\"] : format(datum[\"Acceleration\"], \"\")) + \"; Displacement: \" + (!isValid(datum[\"Displacement\"]) || !isFinite(+datum[\"Displacement\"]) ? \"\" + datum[\"Displacement\"] : format(datum[\"Displacement\"], \"\"))"
},
"x": {"scale": "concat_1_x", "field": "Acceleration"},
"y": {"scale": "concat_1_y", "field": "Displacement"}
diff --git a/examples/compiled/selection_filter_true.vg.json b/examples/compiled/selection_filter_true.vg.json
index 505a39faf7..a5fba5d0b5 100644
--- a/examples/compiled/selection_filter_true.vg.json
+++ b/examples/compiled/selection_filter_true.vg.json
@@ -342,7 +342,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\"))"
},
"x": {"scale": "concat_0_x", "field": "Horsepower"},
"y": {"scale": "concat_0_y", "field": "Miles_per_Gallon"}
@@ -472,7 +472,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Acceleration: \" + (format(datum[\"Acceleration\"], \"\")) + \"; Displacement: \" + (format(datum[\"Displacement\"], \"\"))"
+ "signal": "\"Acceleration: \" + (!isValid(datum[\"Acceleration\"]) || !isFinite(+datum[\"Acceleration\"]) ? \"\" + datum[\"Acceleration\"] : format(datum[\"Acceleration\"], \"\")) + \"; Displacement: \" + (!isValid(datum[\"Displacement\"]) || !isFinite(+datum[\"Displacement\"]) ? \"\" + datum[\"Displacement\"] : format(datum[\"Displacement\"], \"\"))"
},
"x": {"scale": "concat_1_x", "field": "Acceleration"},
"y": {"scale": "concat_1_y", "field": "Displacement"}
diff --git a/examples/compiled/selection_heatmap.vg.json b/examples/compiled/selection_heatmap.vg.json
index c3d9ddae10..f439f6647c 100644
--- a/examples/compiled/selection_heatmap.vg.json
+++ b/examples/compiled/selection_heatmap.vg.json
@@ -118,7 +118,7 @@
{"value": 0}
],
"description": {
- "signal": "\"predicted: \" + (isValid(datum[\"predicted\"]) ? datum[\"predicted\"] : \"\"+datum[\"predicted\"]) + \"; actual: \" + (isValid(datum[\"actual\"]) ? datum[\"actual\"] : \"\"+datum[\"actual\"]) + \"; count: \" + (format(datum[\"count\"], \"\"))"
+ "signal": "\"predicted: \" + (\"\" + datum[\"predicted\"]) + \"; actual: \" + (\"\" + datum[\"actual\"]) + \"; count: \" + (!isValid(datum[\"count\"]) || !isFinite(+datum[\"count\"]) ? \"\" + datum[\"count\"] : format(datum[\"count\"], \"\"))"
},
"x": {"scale": "x", "field": "predicted"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/selection_insert.vg.json b/examples/compiled/selection_insert.vg.json
index 4fe9089c4e..ecf4f9a215 100644
--- a/examples/compiled/selection_insert.vg.json
+++ b/examples/compiled/selection_insert.vg.json
@@ -76,7 +76,7 @@
],
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (\"\" + datum[\"Cylinders\"])"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"},
diff --git a/examples/compiled/selection_interval_mark_style.vg.json b/examples/compiled/selection_interval_mark_style.vg.json
index 0a2dc34025..70f19ab881 100644
--- a/examples/compiled/selection_interval_mark_style.vg.json
+++ b/examples/compiled/selection_interval_mark_style.vg.json
@@ -575,7 +575,7 @@
"update": {
"fill": {"scale": "color", "field": "__count"},
"description": {
- "signal": "\"Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"Cylinders: \" + (\"\" + datum[\"Cylinders\"]) + \"; Origin: \" + (\"\" + datum[\"Origin\"]) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x": {"scale": "x", "field": "Cylinders"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/selection_layer_bar_month.vg.json b/examples/compiled/selection_layer_bar_month.vg.json
index 557cc28d0a..08f7b77c0c 100644
--- a/examples/compiled/selection_layer_bar_month.vg.json
+++ b/examples/compiled/selection_layer_bar_month.vg.json
@@ -294,7 +294,7 @@
],
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"date (month): \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of precipitation: \" + (format(datum[\"mean_precipitation\"], \"\"))"
+ "signal": "\"date (month): \" + (!isValid(datum[\"month_date\"]) || !isFinite(+datum[\"month_date\"]) ? \"\" + datum[\"month_date\"] : timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of precipitation: \" + (!isValid(datum[\"mean_precipitation\"]) || !isFinite(+datum[\"mean_precipitation\"]) ? \"\" + datum[\"mean_precipitation\"] : format(datum[\"mean_precipitation\"], \"\"))"
},
"x": {"scale": "x", "field": "month_date"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
@@ -313,7 +313,7 @@
"update": {
"stroke": {"value": "firebrick"},
"description": {
- "signal": "\"Mean of precipitation: \" + (format(datum[\"mean_precipitation\"], \"\"))"
+ "signal": "\"Mean of precipitation: \" + (!isValid(datum[\"mean_precipitation\"]) || !isFinite(+datum[\"mean_precipitation\"]) ? \"\" + datum[\"mean_precipitation\"] : format(datum[\"mean_precipitation\"], \"\"))"
},
"x": {"field": {"group": "width"}},
"x2": {"value": 0},
diff --git a/examples/compiled/selection_multi_condition.vg.json b/examples/compiled/selection_multi_condition.vg.json
index 641e46c6e7..70a42a5c66 100644
--- a/examples/compiled/selection_multi_condition.vg.json
+++ b/examples/compiled/selection_multi_condition.vg.json
@@ -365,7 +365,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\"))"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"}
diff --git a/examples/compiled/selection_project_binned_interval.vg.json b/examples/compiled/selection_project_binned_interval.vg.json
index 72735d4648..2c9a611032 100644
--- a/examples/compiled/selection_project_binned_interval.vg.json
+++ b/examples/compiled/selection_project_binned_interval.vg.json
@@ -302,7 +302,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Acceleration (binned): \" + (!isValid(datum[\"bin_maxbins_10_Acceleration\"]) || !isFinite(+datum[\"bin_maxbins_10_Acceleration\"]) ? \"null\" : format(datum[\"bin_maxbins_10_Acceleration\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_Acceleration_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"Acceleration (binned): \" + (!isValid(datum[\"bin_maxbins_10_Acceleration\"]) || !isFinite(+datum[\"bin_maxbins_10_Acceleration\"]) ? \"\" + datum[\"bin_maxbins_10_Acceleration\"] : format(datum[\"bin_maxbins_10_Acceleration\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_Acceleration_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x2": {
"scale": "x",
@@ -334,7 +334,7 @@
"fill": {"value": "goldenrod"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Acceleration (binned): \" + (!isValid(datum[\"bin_maxbins_10_Acceleration\"]) || !isFinite(+datum[\"bin_maxbins_10_Acceleration\"]) ? \"null\" : format(datum[\"bin_maxbins_10_Acceleration\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_Acceleration_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"Acceleration (binned): \" + (!isValid(datum[\"bin_maxbins_10_Acceleration\"]) || !isFinite(+datum[\"bin_maxbins_10_Acceleration\"]) ? \"\" + datum[\"bin_maxbins_10_Acceleration\"] : format(datum[\"bin_maxbins_10_Acceleration\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_Acceleration_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x2": {
"scale": "x",
diff --git a/examples/compiled/selection_project_interval.vg.json b/examples/compiled/selection_project_interval.vg.json
index c15ad980ed..59975fab46 100644
--- a/examples/compiled/selection_project_interval.vg.json
+++ b/examples/compiled/selection_project_interval.vg.json
@@ -305,7 +305,7 @@
{"value": "grey"}
],
"description": {
- "signal": "\"Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"Cylinders: \" + (\"\" + datum[\"Cylinders\"]) + \"; Origin: \" + (\"\" + datum[\"Origin\"]) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x": {"scale": "x", "field": "Cylinders"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/selection_project_interval_x.vg.json b/examples/compiled/selection_project_interval_x.vg.json
index 103c8a902d..279f1d8138 100644
--- a/examples/compiled/selection_project_interval_x.vg.json
+++ b/examples/compiled/selection_project_interval_x.vg.json
@@ -248,7 +248,7 @@
{"value": "grey"}
],
"description": {
- "signal": "\"Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"Cylinders: \" + (\"\" + datum[\"Cylinders\"]) + \"; Origin: \" + (\"\" + datum[\"Origin\"]) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x": {"scale": "x", "field": "Cylinders"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/selection_project_interval_x_y.vg.json b/examples/compiled/selection_project_interval_x_y.vg.json
index c15ad980ed..59975fab46 100644
--- a/examples/compiled/selection_project_interval_x_y.vg.json
+++ b/examples/compiled/selection_project_interval_x_y.vg.json
@@ -305,7 +305,7 @@
{"value": "grey"}
],
"description": {
- "signal": "\"Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"Cylinders: \" + (\"\" + datum[\"Cylinders\"]) + \"; Origin: \" + (\"\" + datum[\"Origin\"]) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x": {"scale": "x", "field": "Cylinders"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/selection_project_interval_y.vg.json b/examples/compiled/selection_project_interval_y.vg.json
index cbb7ea7b21..44900fbe6e 100644
--- a/examples/compiled/selection_project_interval_y.vg.json
+++ b/examples/compiled/selection_project_interval_y.vg.json
@@ -248,7 +248,7 @@
{"value": "grey"}
],
"description": {
- "signal": "\"Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"Cylinders: \" + (\"\" + datum[\"Cylinders\"]) + \"; Origin: \" + (\"\" + datum[\"Origin\"]) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x": {"scale": "x", "field": "Cylinders"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/selection_project_multi.vg.json b/examples/compiled/selection_project_multi.vg.json
index 88afcd2dae..e878b8ff4e 100644
--- a/examples/compiled/selection_project_multi.vg.json
+++ b/examples/compiled/selection_project_multi.vg.json
@@ -88,7 +88,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (\"\" + datum[\"Cylinders\"])"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"},
diff --git a/examples/compiled/selection_project_multi_cylinders.vg.json b/examples/compiled/selection_project_multi_cylinders.vg.json
index 65e4a56ba1..8eaf5eb3ed 100644
--- a/examples/compiled/selection_project_multi_cylinders.vg.json
+++ b/examples/compiled/selection_project_multi_cylinders.vg.json
@@ -88,7 +88,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (\"\" + datum[\"Cylinders\"])"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"},
diff --git a/examples/compiled/selection_project_multi_cylinders_origin.vg.json b/examples/compiled/selection_project_multi_cylinders_origin.vg.json
index c2915a3315..b27f10105d 100644
--- a/examples/compiled/selection_project_multi_cylinders_origin.vg.json
+++ b/examples/compiled/selection_project_multi_cylinders_origin.vg.json
@@ -91,7 +91,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (\"\" + datum[\"Cylinders\"]) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"},
diff --git a/examples/compiled/selection_project_multi_origin.vg.json b/examples/compiled/selection_project_multi_origin.vg.json
index fe2706224b..4fbb61b2ab 100644
--- a/examples/compiled/selection_project_multi_origin.vg.json
+++ b/examples/compiled/selection_project_multi_origin.vg.json
@@ -85,7 +85,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (\"\" + datum[\"Cylinders\"]) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"},
diff --git a/examples/compiled/selection_project_single.vg.json b/examples/compiled/selection_project_single.vg.json
index e65908bfec..ee61191551 100644
--- a/examples/compiled/selection_project_single.vg.json
+++ b/examples/compiled/selection_project_single.vg.json
@@ -77,7 +77,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (\"\" + datum[\"Cylinders\"])"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"},
diff --git a/examples/compiled/selection_project_single_cylinders.vg.json b/examples/compiled/selection_project_single_cylinders.vg.json
index 45bc7d1c36..6bf0ff7456 100644
--- a/examples/compiled/selection_project_single_cylinders.vg.json
+++ b/examples/compiled/selection_project_single_cylinders.vg.json
@@ -77,7 +77,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (\"\" + datum[\"Cylinders\"])"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"},
diff --git a/examples/compiled/selection_project_single_cylinders_origin.vg.json b/examples/compiled/selection_project_single_cylinders_origin.vg.json
index e057d5b625..aa1b284113 100644
--- a/examples/compiled/selection_project_single_cylinders_origin.vg.json
+++ b/examples/compiled/selection_project_single_cylinders_origin.vg.json
@@ -80,7 +80,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (\"\" + datum[\"Cylinders\"]) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"},
diff --git a/examples/compiled/selection_project_single_origin.vg.json b/examples/compiled/selection_project_single_origin.vg.json
index 9f6e5e4d74..957dabaa5a 100644
--- a/examples/compiled/selection_project_single_origin.vg.json
+++ b/examples/compiled/selection_project_single_origin.vg.json
@@ -74,7 +74,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (\"\" + datum[\"Cylinders\"]) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"},
diff --git a/examples/compiled/selection_resolution_global.vg.json b/examples/compiled/selection_resolution_global.vg.json
index 42b5206125..bbdb32f342 100644
--- a/examples/compiled/selection_resolution_global.vg.json
+++ b/examples/compiled/selection_resolution_global.vg.json
@@ -388,7 +388,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {
"scale": "child__row_Horsepowercolumn_Miles_per_Gallon_x",
@@ -803,7 +803,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Acceleration: \" + (format(datum[\"Acceleration\"], \"\")) + \"; Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Acceleration: \" + (!isValid(datum[\"Acceleration\"]) || !isFinite(+datum[\"Acceleration\"]) ? \"\" + datum[\"Acceleration\"] : format(datum[\"Acceleration\"], \"\")) + \"; Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {
"scale": "child__row_Horsepowercolumn_Acceleration_x",
@@ -1153,7 +1153,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {
"scale": "child__row_Horsepowercolumn_Horsepower_x",
@@ -1567,7 +1567,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Acceleration: \" + (format(datum[\"Acceleration\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Acceleration: \" + (!isValid(datum[\"Acceleration\"]) || !isFinite(+datum[\"Acceleration\"]) ? \"\" + datum[\"Acceleration\"] : format(datum[\"Acceleration\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {
"scale": "child__row_Accelerationcolumn_Miles_per_Gallon_x",
@@ -1919,7 +1919,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Acceleration: \" + (format(datum[\"Acceleration\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Acceleration: \" + (!isValid(datum[\"Acceleration\"]) || !isFinite(+datum[\"Acceleration\"]) ? \"\" + datum[\"Acceleration\"] : format(datum[\"Acceleration\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {
"scale": "child__row_Accelerationcolumn_Acceleration_x",
@@ -2331,7 +2331,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Acceleration: \" + (format(datum[\"Acceleration\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Acceleration: \" + (!isValid(datum[\"Acceleration\"]) || !isFinite(+datum[\"Acceleration\"]) ? \"\" + datum[\"Acceleration\"] : format(datum[\"Acceleration\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {
"scale": "child__row_Accelerationcolumn_Horsepower_x",
@@ -2685,7 +2685,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {
"scale": "child__row_Miles_per_Galloncolumn_Miles_per_Gallon_x",
@@ -3099,7 +3099,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Acceleration: \" + (format(datum[\"Acceleration\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Acceleration: \" + (!isValid(datum[\"Acceleration\"]) || !isFinite(+datum[\"Acceleration\"]) ? \"\" + datum[\"Acceleration\"] : format(datum[\"Acceleration\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {
"scale": "child__row_Miles_per_Galloncolumn_Acceleration_x",
@@ -3516,7 +3516,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {
"scale": "child__row_Miles_per_Galloncolumn_Horsepower_x",
diff --git a/examples/compiled/selection_resolution_intersect.vg.json b/examples/compiled/selection_resolution_intersect.vg.json
index 2ff4c477e6..445d82884d 100644
--- a/examples/compiled/selection_resolution_intersect.vg.json
+++ b/examples/compiled/selection_resolution_intersect.vg.json
@@ -364,7 +364,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {
"scale": "child__row_Horsepowercolumn_Miles_per_Gallon_x",
@@ -731,7 +731,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Acceleration: \" + (format(datum[\"Acceleration\"], \"\")) + \"; Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Acceleration: \" + (!isValid(datum[\"Acceleration\"]) || !isFinite(+datum[\"Acceleration\"]) ? \"\" + datum[\"Acceleration\"] : format(datum[\"Acceleration\"], \"\")) + \"; Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {
"scale": "child__row_Horsepowercolumn_Acceleration_x",
@@ -1033,7 +1033,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {
"scale": "child__row_Horsepowercolumn_Horsepower_x",
@@ -1399,7 +1399,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Acceleration: \" + (format(datum[\"Acceleration\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Acceleration: \" + (!isValid(datum[\"Acceleration\"]) || !isFinite(+datum[\"Acceleration\"]) ? \"\" + datum[\"Acceleration\"] : format(datum[\"Acceleration\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {
"scale": "child__row_Accelerationcolumn_Miles_per_Gallon_x",
@@ -1703,7 +1703,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Acceleration: \" + (format(datum[\"Acceleration\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Acceleration: \" + (!isValid(datum[\"Acceleration\"]) || !isFinite(+datum[\"Acceleration\"]) ? \"\" + datum[\"Acceleration\"] : format(datum[\"Acceleration\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {
"scale": "child__row_Accelerationcolumn_Acceleration_x",
@@ -2067,7 +2067,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Acceleration: \" + (format(datum[\"Acceleration\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Acceleration: \" + (!isValid(datum[\"Acceleration\"]) || !isFinite(+datum[\"Acceleration\"]) ? \"\" + datum[\"Acceleration\"] : format(datum[\"Acceleration\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {
"scale": "child__row_Accelerationcolumn_Horsepower_x",
@@ -2373,7 +2373,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {
"scale": "child__row_Miles_per_Galloncolumn_Miles_per_Gallon_x",
@@ -2739,7 +2739,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Acceleration: \" + (format(datum[\"Acceleration\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Acceleration: \" + (!isValid(datum[\"Acceleration\"]) || !isFinite(+datum[\"Acceleration\"]) ? \"\" + datum[\"Acceleration\"] : format(datum[\"Acceleration\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {
"scale": "child__row_Miles_per_Galloncolumn_Acceleration_x",
@@ -3108,7 +3108,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {
"scale": "child__row_Miles_per_Galloncolumn_Horsepower_x",
diff --git a/examples/compiled/selection_resolution_union.vg.json b/examples/compiled/selection_resolution_union.vg.json
index 98b8832080..cdb0bce5f2 100644
--- a/examples/compiled/selection_resolution_union.vg.json
+++ b/examples/compiled/selection_resolution_union.vg.json
@@ -364,7 +364,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {
"scale": "child__row_Horsepowercolumn_Miles_per_Gallon_x",
@@ -731,7 +731,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Acceleration: \" + (format(datum[\"Acceleration\"], \"\")) + \"; Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Acceleration: \" + (!isValid(datum[\"Acceleration\"]) || !isFinite(+datum[\"Acceleration\"]) ? \"\" + datum[\"Acceleration\"] : format(datum[\"Acceleration\"], \"\")) + \"; Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {
"scale": "child__row_Horsepowercolumn_Acceleration_x",
@@ -1033,7 +1033,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {
"scale": "child__row_Horsepowercolumn_Horsepower_x",
@@ -1399,7 +1399,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Acceleration: \" + (format(datum[\"Acceleration\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Acceleration: \" + (!isValid(datum[\"Acceleration\"]) || !isFinite(+datum[\"Acceleration\"]) ? \"\" + datum[\"Acceleration\"] : format(datum[\"Acceleration\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {
"scale": "child__row_Accelerationcolumn_Miles_per_Gallon_x",
@@ -1703,7 +1703,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Acceleration: \" + (format(datum[\"Acceleration\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Acceleration: \" + (!isValid(datum[\"Acceleration\"]) || !isFinite(+datum[\"Acceleration\"]) ? \"\" + datum[\"Acceleration\"] : format(datum[\"Acceleration\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {
"scale": "child__row_Accelerationcolumn_Acceleration_x",
@@ -2067,7 +2067,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Acceleration: \" + (format(datum[\"Acceleration\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Acceleration: \" + (!isValid(datum[\"Acceleration\"]) || !isFinite(+datum[\"Acceleration\"]) ? \"\" + datum[\"Acceleration\"] : format(datum[\"Acceleration\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {
"scale": "child__row_Accelerationcolumn_Horsepower_x",
@@ -2373,7 +2373,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {
"scale": "child__row_Miles_per_Galloncolumn_Miles_per_Gallon_x",
@@ -2739,7 +2739,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Acceleration: \" + (format(datum[\"Acceleration\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Acceleration: \" + (!isValid(datum[\"Acceleration\"]) || !isFinite(+datum[\"Acceleration\"]) ? \"\" + datum[\"Acceleration\"] : format(datum[\"Acceleration\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {
"scale": "child__row_Miles_per_Galloncolumn_Acceleration_x",
@@ -3108,7 +3108,7 @@
],
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {
"scale": "child__row_Miles_per_Galloncolumn_Horsepower_x",
diff --git a/examples/compiled/selection_toggle_altKey.vg.json b/examples/compiled/selection_toggle_altKey.vg.json
index 02f223abcc..a2afe91486 100644
--- a/examples/compiled/selection_toggle_altKey.vg.json
+++ b/examples/compiled/selection_toggle_altKey.vg.json
@@ -87,7 +87,7 @@
],
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (\"\" + datum[\"Cylinders\"])"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"},
diff --git a/examples/compiled/selection_toggle_altKey_shiftKey.vg.json b/examples/compiled/selection_toggle_altKey_shiftKey.vg.json
index 7875b981b1..1e1d87c282 100644
--- a/examples/compiled/selection_toggle_altKey_shiftKey.vg.json
+++ b/examples/compiled/selection_toggle_altKey_shiftKey.vg.json
@@ -87,7 +87,7 @@
],
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (\"\" + datum[\"Cylinders\"])"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"},
diff --git a/examples/compiled/selection_toggle_shiftKey.vg.json b/examples/compiled/selection_toggle_shiftKey.vg.json
index d135317d00..057263aaa7 100644
--- a/examples/compiled/selection_toggle_shiftKey.vg.json
+++ b/examples/compiled/selection_toggle_shiftKey.vg.json
@@ -87,7 +87,7 @@
],
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (\"\" + datum[\"Cylinders\"])"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"},
diff --git a/examples/compiled/selection_translate_brush_drag.vg.json b/examples/compiled/selection_translate_brush_drag.vg.json
index 8a50639047..fe52a71056 100644
--- a/examples/compiled/selection_translate_brush_drag.vg.json
+++ b/examples/compiled/selection_translate_brush_drag.vg.json
@@ -317,7 +317,7 @@
],
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; Cylinders: \" + (format(datum[\"Cylinders\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"]) + \"; Cylinders: \" + (!isValid(datum[\"Cylinders\"]) || !isFinite(+datum[\"Cylinders\"]) ? \"\" + datum[\"Cylinders\"] : format(datum[\"Cylinders\"], \"\"))"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"},
diff --git a/examples/compiled/selection_translate_brush_shift-drag.vg.json b/examples/compiled/selection_translate_brush_shift-drag.vg.json
index cabe504f56..431722edb6 100644
--- a/examples/compiled/selection_translate_brush_shift-drag.vg.json
+++ b/examples/compiled/selection_translate_brush_shift-drag.vg.json
@@ -319,7 +319,7 @@
],
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; Cylinders: \" + (format(datum[\"Cylinders\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"]) + \"; Cylinders: \" + (!isValid(datum[\"Cylinders\"]) || !isFinite(+datum[\"Cylinders\"]) ? \"\" + datum[\"Cylinders\"] : format(datum[\"Cylinders\"], \"\"))"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"},
diff --git a/examples/compiled/selection_translate_scatterplot_drag.vg.json b/examples/compiled/selection_translate_scatterplot_drag.vg.json
index de26031214..1ad9495e39 100644
--- a/examples/compiled/selection_translate_scatterplot_drag.vg.json
+++ b/examples/compiled/selection_translate_scatterplot_drag.vg.json
@@ -145,7 +145,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (format(datum[\"Cylinders\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (!isValid(datum[\"Cylinders\"]) || !isFinite(+datum[\"Cylinders\"]) ? \"\" + datum[\"Cylinders\"] : format(datum[\"Cylinders\"], \"\"))"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"},
diff --git a/examples/compiled/selection_translate_scatterplot_shift-drag.vg.json b/examples/compiled/selection_translate_scatterplot_shift-drag.vg.json
index 8421703180..3e74d1e3c6 100644
--- a/examples/compiled/selection_translate_scatterplot_shift-drag.vg.json
+++ b/examples/compiled/selection_translate_scatterplot_shift-drag.vg.json
@@ -155,7 +155,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (format(datum[\"Cylinders\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (!isValid(datum[\"Cylinders\"]) || !isFinite(+datum[\"Cylinders\"]) ? \"\" + datum[\"Cylinders\"] : format(datum[\"Cylinders\"], \"\"))"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"},
diff --git a/examples/compiled/selection_type_interval.vg.json b/examples/compiled/selection_type_interval.vg.json
index c15ad980ed..59975fab46 100644
--- a/examples/compiled/selection_type_interval.vg.json
+++ b/examples/compiled/selection_type_interval.vg.json
@@ -305,7 +305,7 @@
{"value": "grey"}
],
"description": {
- "signal": "\"Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"Cylinders: \" + (\"\" + datum[\"Cylinders\"]) + \"; Origin: \" + (\"\" + datum[\"Origin\"]) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x": {"scale": "x", "field": "Cylinders"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/selection_type_interval_invert.vg.json b/examples/compiled/selection_type_interval_invert.vg.json
index 93286d2692..632ada0b5f 100644
--- a/examples/compiled/selection_type_interval_invert.vg.json
+++ b/examples/compiled/selection_type_interval_invert.vg.json
@@ -304,7 +304,7 @@
{"scale": "color", "field": "__count"}
],
"description": {
- "signal": "\"Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"Cylinders: \" + (\"\" + datum[\"Cylinders\"]) + \"; Origin: \" + (\"\" + datum[\"Origin\"]) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x": {"scale": "x", "field": "Cylinders"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/selection_type_point.vg.json b/examples/compiled/selection_type_point.vg.json
index 77df606b03..1feea4ad17 100644
--- a/examples/compiled/selection_type_point.vg.json
+++ b/examples/compiled/selection_type_point.vg.json
@@ -94,7 +94,7 @@
{"value": "grey"}
],
"description": {
- "signal": "\"Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"Cylinders: \" + (\"\" + datum[\"Cylinders\"]) + \"; Origin: \" + (\"\" + datum[\"Origin\"]) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x": {"scale": "x", "field": "Cylinders"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/selection_type_point_zorder.vg.json b/examples/compiled/selection_type_point_zorder.vg.json
index aee261c023..f4c154ed81 100644
--- a/examples/compiled/selection_type_point_zorder.vg.json
+++ b/examples/compiled/selection_type_point_zorder.vg.json
@@ -93,7 +93,7 @@
],
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\"))"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"},
diff --git a/examples/compiled/selection_type_single_dblclick.vg.json b/examples/compiled/selection_type_single_dblclick.vg.json
index 29abd06d18..d204d7846b 100644
--- a/examples/compiled/selection_type_single_dblclick.vg.json
+++ b/examples/compiled/selection_type_single_dblclick.vg.json
@@ -94,7 +94,7 @@
{"value": "grey"}
],
"description": {
- "signal": "\"Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"Cylinders: \" + (\"\" + datum[\"Cylinders\"]) + \"; Origin: \" + (\"\" + datum[\"Origin\"]) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x": {"scale": "x", "field": "Cylinders"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/selection_type_single_pointerover.vg.json b/examples/compiled/selection_type_single_pointerover.vg.json
index bacea56be8..cf9b6fb299 100644
--- a/examples/compiled/selection_type_single_pointerover.vg.json
+++ b/examples/compiled/selection_type_single_pointerover.vg.json
@@ -94,7 +94,7 @@
{"value": "grey"}
],
"description": {
- "signal": "\"Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"Cylinders: \" + (\"\" + datum[\"Cylinders\"]) + \"; Origin: \" + (\"\" + datum[\"Origin\"]) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x": {"scale": "x", "field": "Cylinders"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/selection_zoom_brush_shift-wheel.vg.json b/examples/compiled/selection_zoom_brush_shift-wheel.vg.json
index bfe0f59406..2a3fceba35 100644
--- a/examples/compiled/selection_zoom_brush_shift-wheel.vg.json
+++ b/examples/compiled/selection_zoom_brush_shift-wheel.vg.json
@@ -319,7 +319,7 @@
],
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; Cylinders: \" + (format(datum[\"Cylinders\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"]) + \"; Cylinders: \" + (!isValid(datum[\"Cylinders\"]) || !isFinite(+datum[\"Cylinders\"]) ? \"\" + datum[\"Cylinders\"] : format(datum[\"Cylinders\"], \"\"))"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"},
diff --git a/examples/compiled/selection_zoom_brush_wheel.vg.json b/examples/compiled/selection_zoom_brush_wheel.vg.json
index 8a50639047..fe52a71056 100644
--- a/examples/compiled/selection_zoom_brush_wheel.vg.json
+++ b/examples/compiled/selection_zoom_brush_wheel.vg.json
@@ -317,7 +317,7 @@
],
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; Cylinders: \" + (format(datum[\"Cylinders\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"]) + \"; Cylinders: \" + (!isValid(datum[\"Cylinders\"]) || !isFinite(+datum[\"Cylinders\"]) ? \"\" + datum[\"Cylinders\"] : format(datum[\"Cylinders\"], \"\"))"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"},
diff --git a/examples/compiled/selection_zoom_scatterplot_shift-wheel.vg.json b/examples/compiled/selection_zoom_scatterplot_shift-wheel.vg.json
index 999a1258c1..40a8623141 100644
--- a/examples/compiled/selection_zoom_scatterplot_shift-wheel.vg.json
+++ b/examples/compiled/selection_zoom_scatterplot_shift-wheel.vg.json
@@ -159,7 +159,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (format(datum[\"Cylinders\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (!isValid(datum[\"Cylinders\"]) || !isFinite(+datum[\"Cylinders\"]) ? \"\" + datum[\"Cylinders\"] : format(datum[\"Cylinders\"], \"\"))"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"},
diff --git a/examples/compiled/selection_zoom_scatterplot_wheel.vg.json b/examples/compiled/selection_zoom_scatterplot_wheel.vg.json
index de26031214..1ad9495e39 100644
--- a/examples/compiled/selection_zoom_scatterplot_wheel.vg.json
+++ b/examples/compiled/selection_zoom_scatterplot_wheel.vg.json
@@ -145,7 +145,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (format(datum[\"Cylinders\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (!isValid(datum[\"Cylinders\"]) || !isFinite(+datum[\"Cylinders\"]) ? \"\" + datum[\"Cylinders\"] : format(datum[\"Cylinders\"], \"\"))"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"},
diff --git a/examples/compiled/sequence_line.vg.json b/examples/compiled/sequence_line.vg.json
index 6e52704d22..e3f2c8bb5f 100644
--- a/examples/compiled/sequence_line.vg.json
+++ b/examples/compiled/sequence_line.vg.json
@@ -26,7 +26,7 @@
"update": {
"stroke": {"value": "#4c78a8"},
"description": {
- "signal": "\"x: \" + (format(datum[\"x\"], \"\")) + \"; sin(x): \" + (format(datum[\"sin(x)\"], \"\"))"
+ "signal": "\"x: \" + (!isValid(datum[\"x\"]) || !isFinite(+datum[\"x\"]) ? \"\" + datum[\"x\"] : format(datum[\"x\"], \"\")) + \"; sin(x): \" + (!isValid(datum[\"sin(x)\"]) || !isFinite(+datum[\"sin(x)\"]) ? \"\" + datum[\"sin(x)\"] : format(datum[\"sin(x)\"], \"\"))"
},
"x": {"scale": "x", "field": "x"},
"y": {"scale": "y", "field": "sin(x)"},
diff --git a/examples/compiled/sequence_line_fold.vg.json b/examples/compiled/sequence_line_fold.vg.json
index 20f4cc474e..ed077d719e 100644
--- a/examples/compiled/sequence_line_fold.vg.json
+++ b/examples/compiled/sequence_line_fold.vg.json
@@ -45,7 +45,7 @@
"update": {
"stroke": {"scale": "color", "field": "key"},
"description": {
- "signal": "\"x: \" + (format(datum[\"x\"], \"\")) + \"; value: \" + (format(datum[\"value\"], \"\")) + \"; key: \" + (isValid(datum[\"key\"]) ? datum[\"key\"] : \"\"+datum[\"key\"])"
+ "signal": "\"x: \" + (!isValid(datum[\"x\"]) || !isFinite(+datum[\"x\"]) ? \"\" + datum[\"x\"] : format(datum[\"x\"], \"\")) + \"; value: \" + (!isValid(datum[\"value\"]) || !isFinite(+datum[\"value\"]) ? \"\" + datum[\"value\"] : format(datum[\"value\"], \"\")) + \"; key: \" + (\"\" + datum[\"key\"])"
},
"x": {"scale": "x", "field": "x"},
"y": {"scale": "y", "field": "value"},
diff --git a/examples/compiled/square.vg.json b/examples/compiled/square.vg.json
index cb1691ed44..bd5b99e584 100644
--- a/examples/compiled/square.vg.json
+++ b/examples/compiled/square.vg.json
@@ -30,7 +30,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "square"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\"))"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"},
diff --git a/examples/compiled/stacked_area.vg.json b/examples/compiled/stacked_area.vg.json
index 1002440af6..c17104f907 100644
--- a/examples/compiled/stacked_area.vg.json
+++ b/examples/compiled/stacked_area.vg.json
@@ -72,7 +72,7 @@
"orient": {"value": "vertical"},
"fill": {"scale": "color", "field": "series"},
"description": {
- "signal": "\"date (year-month): \" + (timeFormat(datum[\"yearmonth_date\"], '%Y')) + \"; Sum of count: \" + (format(datum[\"sum_count\"], \"\")) + \"; series: \" + (isValid(datum[\"series\"]) ? datum[\"series\"] : \"\"+datum[\"series\"])"
+ "signal": "\"date (year-month): \" + (!isValid(datum[\"yearmonth_date\"]) || !isFinite(+datum[\"yearmonth_date\"]) ? \"\" + datum[\"yearmonth_date\"] : timeFormat(datum[\"yearmonth_date\"], '%Y')) + \"; Sum of count: \" + (!isValid(datum[\"sum_count\"]) || !isFinite(+datum[\"sum_count\"]) ? \"\" + datum[\"sum_count\"] : format(datum[\"sum_count\"], \"\")) + \"; series: \" + (\"\" + datum[\"series\"])"
},
"x": {"scale": "x", "field": "yearmonth_date"},
"y": {"scale": "y", "field": "sum_count_end"},
diff --git a/examples/compiled/stacked_area_binned.vg.json b/examples/compiled/stacked_area_binned.vg.json
index 039489e9b3..e5465dd5d3 100644
--- a/examples/compiled/stacked_area_binned.vg.json
+++ b/examples/compiled/stacked_area_binned.vg.json
@@ -91,7 +91,7 @@
"orient": {"value": "vertical"},
"fill": {"scale": "color", "field": "Major Genre"},
"description": {
- "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"null\" : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\")) + \"; Major Genre: \" + (isValid(datum[\"Major Genre\"]) ? datum[\"Major Genre\"] : \"\"+datum[\"Major Genre\"])"
+ "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"\" + datum[\"bin_maxbins_10_IMDB Rating\"] : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\")) + \"; Major Genre: \" + (\"\" + datum[\"Major Genre\"])"
},
"x": {"scale": "x", "field": "bin_maxbins_10_IMDB Rating_mid"},
"y": {"scale": "y", "field": "__count_end"},
diff --git a/examples/compiled/stacked_area_normalize.vg.json b/examples/compiled/stacked_area_normalize.vg.json
index 7fe880210b..6439738bf0 100644
--- a/examples/compiled/stacked_area_normalize.vg.json
+++ b/examples/compiled/stacked_area_normalize.vg.json
@@ -72,7 +72,7 @@
"orient": {"value": "vertical"},
"fill": {"scale": "color", "field": "series"},
"description": {
- "signal": "\"date (year-month): \" + (timeFormat(datum[\"yearmonth_date\"], '%Y')) + \"; Sum of count: \" + (format(datum[\"sum_count_end\"]-datum[\"sum_count_start\"], \".0%\")) + \"; series: \" + (isValid(datum[\"series\"]) ? datum[\"series\"] : \"\"+datum[\"series\"])"
+ "signal": "\"date (year-month): \" + (!isValid(datum[\"yearmonth_date\"]) || !isFinite(+datum[\"yearmonth_date\"]) ? \"\" + datum[\"yearmonth_date\"] : timeFormat(datum[\"yearmonth_date\"], '%Y')) + \"; Sum of count: \" + (!isValid(datum[\"sum_count_end\"]-datum[\"sum_count_start\"]) || !isFinite(+datum[\"sum_count_end\"]-datum[\"sum_count_start\"]) ? \"\" + datum[\"sum_count_end\"]-datum[\"sum_count_start\"] : format(datum[\"sum_count_end\"]-datum[\"sum_count_start\"], \".0%\")) + \"; series: \" + (\"\" + datum[\"series\"])"
},
"x": {"scale": "x", "field": "yearmonth_date"},
"y": {"scale": "y", "field": "sum_count_end"},
diff --git a/examples/compiled/stacked_area_ordinal.vg.json b/examples/compiled/stacked_area_ordinal.vg.json
index ae4df38f7f..59e9954938 100644
--- a/examples/compiled/stacked_area_ordinal.vg.json
+++ b/examples/compiled/stacked_area_ordinal.vg.json
@@ -73,7 +73,7 @@
"orient": {"value": "vertical"},
"fill": {"scale": "color", "field": "Cylinders"},
"description": {
- "signal": "\"Year (year): \" + (timeFormat(datum[\"year_Year\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Sum of Weight_in_lbs: \" + (format(datum[\"sum_Weight_in_lbs\"], \"\")) + \"; Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"])"
+ "signal": "\"Year (year): \" + (!isValid(datum[\"year_Year\"]) || !isFinite(+datum[\"year_Year\"]) ? \"\" + datum[\"year_Year\"] : timeFormat(datum[\"year_Year\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Sum of Weight_in_lbs: \" + (!isValid(datum[\"sum_Weight_in_lbs\"]) || !isFinite(+datum[\"sum_Weight_in_lbs\"]) ? \"\" + datum[\"sum_Weight_in_lbs\"] : format(datum[\"sum_Weight_in_lbs\"], \"\")) + \"; Cylinders: \" + (\"\" + datum[\"Cylinders\"])"
},
"x": {"scale": "x", "field": "year_Year"},
"y": {"scale": "y", "field": "sum_Weight_in_lbs_end"},
diff --git a/examples/compiled/stacked_area_overlay.vg.json b/examples/compiled/stacked_area_overlay.vg.json
index 86c2460d0f..caad6d6cc8 100644
--- a/examples/compiled/stacked_area_overlay.vg.json
+++ b/examples/compiled/stacked_area_overlay.vg.json
@@ -79,7 +79,7 @@
"orient": {"value": "vertical"},
"fill": {"scale": "color", "field": "gender"},
"description": {
- "signal": "\"age: \" + (isValid(datum[\"age\"]) ? datum[\"age\"] : \"\"+datum[\"age\"]) + \"; Sum of people: \" + (format(datum[\"sum_people\"], \"\")) + \"; gender: \" + (isValid(datum[\"gender\"]) ? datum[\"gender\"] : \"\"+datum[\"gender\"])"
+ "signal": "\"age: \" + (\"\" + datum[\"age\"]) + \"; Sum of people: \" + (!isValid(datum[\"sum_people\"]) || !isFinite(+datum[\"sum_people\"]) ? \"\" + datum[\"sum_people\"] : format(datum[\"sum_people\"], \"\")) + \"; gender: \" + (\"\" + datum[\"gender\"])"
},
"x": {"scale": "x", "field": "age"},
"y": {"scale": "y", "field": "sum_people_end"},
@@ -120,7 +120,7 @@
"stroke": {"scale": "color", "field": "gender"},
"opacity": {"value": 0.7},
"description": {
- "signal": "\"age: \" + (isValid(datum[\"age\"]) ? datum[\"age\"] : \"\"+datum[\"age\"]) + \"; Sum of people: \" + (format(datum[\"sum_people\"], \"\")) + \"; gender: \" + (isValid(datum[\"gender\"]) ? datum[\"gender\"] : \"\"+datum[\"gender\"])"
+ "signal": "\"age: \" + (\"\" + datum[\"age\"]) + \"; Sum of people: \" + (!isValid(datum[\"sum_people\"]) || !isFinite(+datum[\"sum_people\"]) ? \"\" + datum[\"sum_people\"] : format(datum[\"sum_people\"], \"\")) + \"; gender: \" + (\"\" + datum[\"gender\"])"
},
"x": {"scale": "x", "field": "age"},
"y": {"scale": "y", "field": "sum_people_end"},
diff --git a/examples/compiled/stacked_area_stream.vg.json b/examples/compiled/stacked_area_stream.vg.json
index de72f1315a..c72fee4f2b 100644
--- a/examples/compiled/stacked_area_stream.vg.json
+++ b/examples/compiled/stacked_area_stream.vg.json
@@ -72,7 +72,7 @@
"orient": {"value": "vertical"},
"fill": {"scale": "color", "field": "series"},
"description": {
- "signal": "\"date (year-month): \" + (timeFormat(datum[\"yearmonth_date\"], '%Y')) + \"; Sum of count: \" + (format(datum[\"sum_count\"], \"\")) + \"; series: \" + (isValid(datum[\"series\"]) ? datum[\"series\"] : \"\"+datum[\"series\"])"
+ "signal": "\"date (year-month): \" + (!isValid(datum[\"yearmonth_date\"]) || !isFinite(+datum[\"yearmonth_date\"]) ? \"\" + datum[\"yearmonth_date\"] : timeFormat(datum[\"yearmonth_date\"], '%Y')) + \"; Sum of count: \" + (!isValid(datum[\"sum_count\"]) || !isFinite(+datum[\"sum_count\"]) ? \"\" + datum[\"sum_count\"] : format(datum[\"sum_count\"], \"\")) + \"; series: \" + (\"\" + datum[\"series\"])"
},
"x": {"scale": "x", "field": "yearmonth_date"},
"y": {"scale": "y", "field": "sum_count_end"},
diff --git a/examples/compiled/stacked_area_without_agg.vg.json b/examples/compiled/stacked_area_without_agg.vg.json
index 54cff92590..e27ab58bc6 100644
--- a/examples/compiled/stacked_area_without_agg.vg.json
+++ b/examples/compiled/stacked_area_without_agg.vg.json
@@ -71,7 +71,7 @@
"orient": {"value": "vertical"},
"fill": {"scale": "color", "field": "c"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (isValid(datum[\"c\"]) ? datum[\"c\"] : \"\"+datum[\"c\"])"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (\"\" + datum[\"c\"])"
},
"x": {"scale": "x", "field": "a"},
"y": {"scale": "y", "field": "b_end"},
@@ -111,7 +111,7 @@
"update": {
"stroke": {"scale": "color", "field": "c"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (isValid(datum[\"c\"]) ? datum[\"c\"] : \"\"+datum[\"c\"])"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (\"\" + datum[\"c\"])"
},
"x": {"scale": "x", "field": "a"},
"y": {"scale": "y", "field": "b_end"},
diff --git a/examples/compiled/stacked_bar_1d.vg.json b/examples/compiled/stacked_bar_1d.vg.json
index 743ebb1d35..859c82633c 100644
--- a/examples/compiled/stacked_bar_1d.vg.json
+++ b/examples/compiled/stacked_bar_1d.vg.json
@@ -44,7 +44,7 @@
"fill": {"scale": "color", "field": "Origin"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Sum of Acceleration: \" + (format(datum[\"sum_Acceleration\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Sum of Acceleration: \" + (!isValid(datum[\"sum_Acceleration\"]) || !isFinite(+datum[\"sum_Acceleration\"]) ? \"\" + datum[\"sum_Acceleration\"] : format(datum[\"sum_Acceleration\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {"scale": "x", "field": "sum_Acceleration_end"},
"x2": {"scale": "x", "field": "sum_Acceleration_start"},
diff --git a/examples/compiled/stacked_bar_count.vg.json b/examples/compiled/stacked_bar_count.vg.json
index 122e0b7c50..f1f9b66b9d 100644
--- a/examples/compiled/stacked_bar_count.vg.json
+++ b/examples/compiled/stacked_bar_count.vg.json
@@ -52,7 +52,7 @@
"fill": {"scale": "color", "field": "weather"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"date (month): \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\")) + \"; weather: \" + (isValid(datum[\"weather\"]) ? datum[\"weather\"] : \"\"+datum[\"weather\"])"
+ "signal": "\"date (month): \" + (!isValid(datum[\"month_date\"]) || !isFinite(+datum[\"month_date\"]) ? \"\" + datum[\"month_date\"] : timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\")) + \"; weather: \" + (\"\" + datum[\"weather\"])"
},
"x": {"scale": "x", "field": "month_date"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/stacked_bar_count_corner_radius_config.vg.json b/examples/compiled/stacked_bar_count_corner_radius_config.vg.json
index 71509e63d7..a893cbf1d6 100644
--- a/examples/compiled/stacked_bar_count_corner_radius_config.vg.json
+++ b/examples/compiled/stacked_bar_count_corner_radius_config.vg.json
@@ -95,7 +95,7 @@
"fill": {"scale": "color", "field": "weather"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"date (month): \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\")) + \"; weather: \" + (isValid(datum[\"weather\"]) ? datum[\"weather\"] : \"\"+datum[\"weather\"])"
+ "signal": "\"date (month): \" + (!isValid(datum[\"month_date\"]) || !isFinite(+datum[\"month_date\"]) ? \"\" + datum[\"month_date\"] : timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\")) + \"; weather: \" + (\"\" + datum[\"weather\"])"
},
"width": {"field": {"group": "width"}},
"y": {"scale": "y", "field": "__count_end"},
diff --git a/examples/compiled/stacked_bar_count_corner_radius_mark.vg.json b/examples/compiled/stacked_bar_count_corner_radius_mark.vg.json
index 0c06b8c8ec..23a3a87991 100644
--- a/examples/compiled/stacked_bar_count_corner_radius_mark.vg.json
+++ b/examples/compiled/stacked_bar_count_corner_radius_mark.vg.json
@@ -95,7 +95,7 @@
"fill": {"scale": "color", "field": "weather"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"date (month): \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\")) + \"; weather: \" + (isValid(datum[\"weather\"]) ? datum[\"weather\"] : \"\"+datum[\"weather\"])"
+ "signal": "\"date (month): \" + (!isValid(datum[\"month_date\"]) || !isFinite(+datum[\"month_date\"]) ? \"\" + datum[\"month_date\"] : timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\")) + \"; weather: \" + (\"\" + datum[\"weather\"])"
},
"width": {"field": {"group": "width"}},
"y": {"scale": "y", "field": "__count_end"},
diff --git a/examples/compiled/stacked_bar_count_corner_radius_mark_x.vg.json b/examples/compiled/stacked_bar_count_corner_radius_mark_x.vg.json
index 984baf0d17..0d29a2e9fc 100644
--- a/examples/compiled/stacked_bar_count_corner_radius_mark_x.vg.json
+++ b/examples/compiled/stacked_bar_count_corner_radius_mark_x.vg.json
@@ -95,7 +95,7 @@
"fill": {"scale": "color", "field": "weather"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Count of Records: \" + (format(datum[\"__count\"], \"\")) + \"; date (month): \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; weather: \" + (isValid(datum[\"weather\"]) ? datum[\"weather\"] : \"\"+datum[\"weather\"])"
+ "signal": "\"Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\")) + \"; date (month): \" + (!isValid(datum[\"month_date\"]) || !isFinite(+datum[\"month_date\"]) ? \"\" + datum[\"month_date\"] : timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; weather: \" + (\"\" + datum[\"weather\"])"
},
"x": {"scale": "x", "field": "__count_end"},
"x2": {"scale": "x", "field": "__count_start"},
diff --git a/examples/compiled/stacked_bar_count_corner_radius_stroke.vg.json b/examples/compiled/stacked_bar_count_corner_radius_stroke.vg.json
index 15bd6cdf6c..56e537a724 100644
--- a/examples/compiled/stacked_bar_count_corner_radius_stroke.vg.json
+++ b/examples/compiled/stacked_bar_count_corner_radius_stroke.vg.json
@@ -99,7 +99,7 @@
"fill": {"scale": "color", "field": "weather"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"date (month): \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\")) + \"; weather: \" + (isValid(datum[\"weather\"]) ? datum[\"weather\"] : \"\"+datum[\"weather\"])"
+ "signal": "\"date (month): \" + (!isValid(datum[\"month_date\"]) || !isFinite(+datum[\"month_date\"]) ? \"\" + datum[\"month_date\"] : timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\")) + \"; weather: \" + (\"\" + datum[\"weather\"])"
},
"width": {"field": {"group": "width"}},
"y": {"scale": "y", "field": "__count_end"},
diff --git a/examples/compiled/stacked_bar_h.vg.json b/examples/compiled/stacked_bar_h.vg.json
index 2d7351dc7a..9656d0c279 100644
--- a/examples/compiled/stacked_bar_h.vg.json
+++ b/examples/compiled/stacked_bar_h.vg.json
@@ -50,7 +50,7 @@
"fill": {"scale": "color", "field": "site"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Sum of yield: \" + (format(datum[\"sum_yield\"], \"\")) + \"; variety: \" + (isValid(datum[\"variety\"]) ? datum[\"variety\"] : \"\"+datum[\"variety\"]) + \"; site: \" + (isValid(datum[\"site\"]) ? datum[\"site\"] : \"\"+datum[\"site\"])"
+ "signal": "\"Sum of yield: \" + (!isValid(datum[\"sum_yield\"]) || !isFinite(+datum[\"sum_yield\"]) ? \"\" + datum[\"sum_yield\"] : format(datum[\"sum_yield\"], \"\")) + \"; variety: \" + (\"\" + datum[\"variety\"]) + \"; site: \" + (\"\" + datum[\"site\"])"
},
"x": {"scale": "x", "field": "sum_yield_end"},
"x2": {"scale": "x", "field": "sum_yield_start"},
diff --git a/examples/compiled/stacked_bar_h_normalized_labeled.vg.json b/examples/compiled/stacked_bar_h_normalized_labeled.vg.json
index 87e5d5c356..8f792cca8a 100644
--- a/examples/compiled/stacked_bar_h_normalized_labeled.vg.json
+++ b/examples/compiled/stacked_bar_h_normalized_labeled.vg.json
@@ -72,7 +72,7 @@
"fill": {"scale": "color", "field": "gender"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"population: \" + (format(datum[\"sum_people_end\"]-datum[\"sum_people_start\"], \".0%\")) + \"; age: \" + (isValid(datum[\"age\"]) ? datum[\"age\"] : \"\"+datum[\"age\"]) + \"; gender: \" + (isValid(datum[\"gender\"]) ? datum[\"gender\"] : \"\"+datum[\"gender\"])"
+ "signal": "\"population: \" + (!isValid(datum[\"sum_people_end\"]-datum[\"sum_people_start\"]) || !isFinite(+datum[\"sum_people_end\"]-datum[\"sum_people_start\"]) ? \"\" + datum[\"sum_people_end\"]-datum[\"sum_people_start\"] : format(datum[\"sum_people_end\"]-datum[\"sum_people_start\"], \".0%\")) + \"; age: \" + (\"\" + datum[\"age\"]) + \"; gender: \" + (\"\" + datum[\"gender\"])"
},
"x": {"scale": "x", "field": "sum_people_end"},
"x2": {"scale": "x", "field": "sum_people_start"},
@@ -91,13 +91,15 @@
"opacity": {"value": 0.9},
"fill": {"value": "white"},
"description": {
- "signal": "\"population: \" + (format(datum[\"sum_people_end\"]-datum[\"sum_people_start\"], \".0%\")) + \"; age: \" + (isValid(datum[\"age\"]) ? datum[\"age\"] : \"\"+datum[\"age\"]) + \"; gender: \" + (isValid(datum[\"gender\"]) ? datum[\"gender\"] : \"\"+datum[\"gender\"])"
+ "signal": "\"population: \" + (!isValid(datum[\"sum_people_end\"]-datum[\"sum_people_start\"]) || !isFinite(+datum[\"sum_people_end\"]-datum[\"sum_people_start\"]) ? \"\" + datum[\"sum_people_end\"]-datum[\"sum_people_start\"] : format(datum[\"sum_people_end\"]-datum[\"sum_people_start\"], \".0%\")) + \"; age: \" + (\"\" + datum[\"age\"]) + \"; gender: \" + (\"\" + datum[\"gender\"])"
},
"x": {
"signal": "scale(\"x\", 0.5 * datum[\"sum_people_start\"] + 0.5 * datum[\"sum_people_end\"])"
},
"y": {"scale": "y", "field": "age", "band": 0.5},
- "text": {"signal": "format(datum[\"sum_people\"], \"\")"},
+ "text": {
+ "signal": "!isValid(datum[\"sum_people\"]) || !isFinite(+datum[\"sum_people\"]) ? \"\" + datum[\"sum_people\"] : format(datum[\"sum_people\"], \"\")"
+ },
"align": {"value": "center"},
"baseline": {"value": "middle"}
}
diff --git a/examples/compiled/stacked_bar_h_order.vg.json b/examples/compiled/stacked_bar_h_order.vg.json
index bf3acb95fb..36e3693985 100644
--- a/examples/compiled/stacked_bar_h_order.vg.json
+++ b/examples/compiled/stacked_bar_h_order.vg.json
@@ -50,7 +50,7 @@
"fill": {"scale": "color", "field": "site"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Sum of yield: \" + (format(datum[\"sum_yield\"], \"\")) + \"; variety: \" + (isValid(datum[\"variety\"]) ? datum[\"variety\"] : \"\"+datum[\"variety\"]) + \"; site: \" + (isValid(datum[\"site\"]) ? datum[\"site\"] : \"\"+datum[\"site\"])"
+ "signal": "\"Sum of yield: \" + (!isValid(datum[\"sum_yield\"]) || !isFinite(+datum[\"sum_yield\"]) ? \"\" + datum[\"sum_yield\"] : format(datum[\"sum_yield\"], \"\")) + \"; variety: \" + (\"\" + datum[\"variety\"]) + \"; site: \" + (\"\" + datum[\"site\"])"
},
"x": {"scale": "x", "field": "sum_yield_end"},
"x2": {"scale": "x", "field": "sum_yield_start"},
diff --git a/examples/compiled/stacked_bar_h_order_custom.vg.json b/examples/compiled/stacked_bar_h_order_custom.vg.json
index b1bd41de1e..b71b68e50a 100644
--- a/examples/compiled/stacked_bar_h_order_custom.vg.json
+++ b/examples/compiled/stacked_bar_h_order_custom.vg.json
@@ -55,7 +55,7 @@
"fill": {"scale": "color", "field": "site"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Sum of yield: \" + (format(datum[\"sum_yield\"], \"\")) + \"; variety: \" + (isValid(datum[\"variety\"]) ? datum[\"variety\"] : \"\"+datum[\"variety\"]) + \"; site: \" + (isValid(datum[\"site\"]) ? datum[\"site\"] : \"\"+datum[\"site\"]) + \"; siteOrder: \" + (isValid(datum[\"siteOrder\"]) ? datum[\"siteOrder\"] : \"\"+datum[\"siteOrder\"])"
+ "signal": "\"Sum of yield: \" + (!isValid(datum[\"sum_yield\"]) || !isFinite(+datum[\"sum_yield\"]) ? \"\" + datum[\"sum_yield\"] : format(datum[\"sum_yield\"], \"\")) + \"; variety: \" + (\"\" + datum[\"variety\"]) + \"; site: \" + (\"\" + datum[\"site\"]) + \"; siteOrder: \" + (\"\" + datum[\"siteOrder\"])"
},
"x": {"scale": "x", "field": "sum_yield_end"},
"x2": {"scale": "x", "field": "sum_yield_start"},
diff --git a/examples/compiled/stacked_bar_normalize.vg.json b/examples/compiled/stacked_bar_normalize.vg.json
index 08df66d85e..951056a414 100644
--- a/examples/compiled/stacked_bar_normalize.vg.json
+++ b/examples/compiled/stacked_bar_normalize.vg.json
@@ -56,7 +56,7 @@
"fill": {"scale": "color", "field": "gender"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"age: \" + (isValid(datum[\"age\"]) ? datum[\"age\"] : \"\"+datum[\"age\"]) + \"; population: \" + (format(datum[\"sum_people_end\"]-datum[\"sum_people_start\"], \".0%\")) + \"; gender: \" + (isValid(datum[\"gender\"]) ? datum[\"gender\"] : \"\"+datum[\"gender\"])"
+ "signal": "\"age: \" + (\"\" + datum[\"age\"]) + \"; population: \" + (!isValid(datum[\"sum_people_end\"]-datum[\"sum_people_start\"]) || !isFinite(+datum[\"sum_people_end\"]-datum[\"sum_people_start\"]) ? \"\" + datum[\"sum_people_end\"]-datum[\"sum_people_start\"] : format(datum[\"sum_people_end\"]-datum[\"sum_people_start\"], \".0%\")) + \"; gender: \" + (\"\" + datum[\"gender\"])"
},
"x": {"scale": "x", "field": "age"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/stacked_bar_population.vg.json b/examples/compiled/stacked_bar_population.vg.json
index 89196843e0..b6450ec099 100644
--- a/examples/compiled/stacked_bar_population.vg.json
+++ b/examples/compiled/stacked_bar_population.vg.json
@@ -57,7 +57,7 @@
"fill": {"scale": "color", "field": "gender"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"age: \" + (isValid(datum[\"age\"]) ? datum[\"age\"] : \"\"+datum[\"age\"]) + \"; population: \" + (format(datum[\"sum_people\"], \"\")) + \"; gender: \" + (isValid(datum[\"gender\"]) ? datum[\"gender\"] : \"\"+datum[\"gender\"])"
+ "signal": "\"age: \" + (\"\" + datum[\"age\"]) + \"; population: \" + (!isValid(datum[\"sum_people\"]) || !isFinite(+datum[\"sum_people\"]) ? \"\" + datum[\"sum_people\"] : format(datum[\"sum_people\"], \"\")) + \"; gender: \" + (\"\" + datum[\"gender\"])"
},
"x": {"scale": "x", "field": "age"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/stacked_bar_population_transform.vg.json b/examples/compiled/stacked_bar_population_transform.vg.json
index 1d5c55b211..3feef2d252 100644
--- a/examples/compiled/stacked_bar_population_transform.vg.json
+++ b/examples/compiled/stacked_bar_population_transform.vg.json
@@ -50,7 +50,7 @@
"fill": {"scale": "color", "field": "gender"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"age: \" + (isValid(datum[\"age\"]) ? datum[\"age\"] : \"\"+datum[\"age\"]) + \"; population: \" + (format(datum[\"v1\"], \"\")) + \"; v2: \" + (format(datum[\"v2\"], \"\")) + \"; gender: \" + (isValid(datum[\"gender\"]) ? datum[\"gender\"] : \"\"+datum[\"gender\"])"
+ "signal": "\"age: \" + (\"\" + datum[\"age\"]) + \"; population: \" + (!isValid(datum[\"v1\"]) || !isFinite(+datum[\"v1\"]) ? \"\" + datum[\"v1\"] : format(datum[\"v1\"], \"\")) + \"; v2: \" + (!isValid(datum[\"v2\"]) || !isFinite(+datum[\"v2\"]) ? \"\" + datum[\"v2\"] : format(datum[\"v2\"], \"\")) + \"; gender: \" + (\"\" + datum[\"gender\"])"
},
"x": {"scale": "x", "field": "age"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/stacked_bar_size.vg.json b/examples/compiled/stacked_bar_size.vg.json
index 7008e2f790..0634acd20f 100644
--- a/examples/compiled/stacked_bar_size.vg.json
+++ b/examples/compiled/stacked_bar_size.vg.json
@@ -53,7 +53,7 @@
"opacity": {"value": 0.5},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"date (month): \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\")) + \"; weather: \" + (isValid(datum[\"weather\"]) ? datum[\"weather\"] : \"\"+datum[\"weather\"])"
+ "signal": "\"date (month): \" + (!isValid(datum[\"month_date\"]) || !isFinite(+datum[\"month_date\"]) ? \"\" + datum[\"month_date\"] : timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\")) + \"; weather: \" + (\"\" + datum[\"weather\"])"
},
"xc": {"scale": "x", "field": "month_date", "band": 0.5},
"width": {"scale": "size", "field": "weather"},
diff --git a/examples/compiled/stacked_bar_sum_opacity.vg.json b/examples/compiled/stacked_bar_sum_opacity.vg.json
index 6492caecc1..4ea55ca1a5 100644
--- a/examples/compiled/stacked_bar_sum_opacity.vg.json
+++ b/examples/compiled/stacked_bar_sum_opacity.vg.json
@@ -58,7 +58,7 @@
"opacity": {"scale": "opacity", "field": "people"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"age: \" + (isValid(datum[\"age\"]) ? datum[\"age\"] : \"\"+datum[\"age\"]) + \"; population: \" + (format(datum[\"sum_people\"], \"\")) + \"; people: \" + (format(datum[\"people\"], \"\"))"
+ "signal": "\"age: \" + (\"\" + datum[\"age\"]) + \"; population: \" + (!isValid(datum[\"sum_people\"]) || !isFinite(+datum[\"sum_people\"]) ? \"\" + datum[\"sum_people\"] : format(datum[\"sum_people\"], \"\")) + \"; people: \" + (!isValid(datum[\"people\"]) || !isFinite(+datum[\"people\"]) ? \"\" + datum[\"people\"] : format(datum[\"people\"], \"\"))"
},
"x": {"scale": "x", "field": "age"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/stacked_bar_unaggregate.vg.json b/examples/compiled/stacked_bar_unaggregate.vg.json
index 92509ade9d..837751708a 100644
--- a/examples/compiled/stacked_bar_unaggregate.vg.json
+++ b/examples/compiled/stacked_bar_unaggregate.vg.json
@@ -51,7 +51,7 @@
"fill": {"scale": "color", "field": "c"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (isValid(datum[\"c\"]) ? datum[\"c\"] : \"\"+datum[\"c\"])"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (\"\" + datum[\"c\"])"
},
"x": {"scale": "x", "field": "a"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/stacked_bar_v.vg.json b/examples/compiled/stacked_bar_v.vg.json
index a0409fbb63..56ee6b5d22 100644
--- a/examples/compiled/stacked_bar_v.vg.json
+++ b/examples/compiled/stacked_bar_v.vg.json
@@ -50,7 +50,7 @@
"fill": {"scale": "color", "field": "site"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"variety: \" + (isValid(datum[\"variety\"]) ? datum[\"variety\"] : \"\"+datum[\"variety\"]) + \"; Sum of yield: \" + (format(datum[\"sum_yield\"], \"\")) + \"; site: \" + (isValid(datum[\"site\"]) ? datum[\"site\"] : \"\"+datum[\"site\"])"
+ "signal": "\"variety: \" + (\"\" + datum[\"variety\"]) + \"; Sum of yield: \" + (!isValid(datum[\"sum_yield\"]) || !isFinite(+datum[\"sum_yield\"]) ? \"\" + datum[\"sum_yield\"] : format(datum[\"sum_yield\"], \"\")) + \"; site: \" + (\"\" + datum[\"site\"])"
},
"x": {"scale": "x", "field": "variety"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/stacked_bar_v_ascending.vg.json b/examples/compiled/stacked_bar_v_ascending.vg.json
index 9581042ae0..3d5c8c54d3 100644
--- a/examples/compiled/stacked_bar_v_ascending.vg.json
+++ b/examples/compiled/stacked_bar_v_ascending.vg.json
@@ -50,7 +50,7 @@
"fill": {"scale": "color", "field": "site"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"variety: \" + (isValid(datum[\"variety\"]) ? datum[\"variety\"] : \"\"+datum[\"variety\"]) + \"; Sum of yield: \" + (format(datum[\"sum_yield\"], \"\")) + \"; site: \" + (isValid(datum[\"site\"]) ? datum[\"site\"] : \"\"+datum[\"site\"])"
+ "signal": "\"variety: \" + (\"\" + datum[\"variety\"]) + \"; Sum of yield: \" + (!isValid(datum[\"sum_yield\"]) || !isFinite(+datum[\"sum_yield\"]) ? \"\" + datum[\"sum_yield\"] : format(datum[\"sum_yield\"], \"\")) + \"; site: \" + (\"\" + datum[\"site\"])"
},
"x": {"scale": "x", "field": "variety"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/stacked_bar_weather.vg.json b/examples/compiled/stacked_bar_weather.vg.json
index 14721fff3b..93704bcdb3 100644
--- a/examples/compiled/stacked_bar_weather.vg.json
+++ b/examples/compiled/stacked_bar_weather.vg.json
@@ -52,7 +52,7 @@
"fill": {"scale": "color", "field": "weather"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Month of the year: \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\")) + \"; Weather type: \" + (isValid(datum[\"weather\"]) ? datum[\"weather\"] : \"\"+datum[\"weather\"])"
+ "signal": "\"Month of the year: \" + (!isValid(datum[\"month_date\"]) || !isFinite(+datum[\"month_date\"]) ? \"\" + datum[\"month_date\"] : timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\")) + \"; Weather type: \" + (\"\" + datum[\"weather\"])"
},
"x": {"scale": "x", "field": "month_date"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/test_aggregate_nested.vg.json b/examples/compiled/test_aggregate_nested.vg.json
index 65bda28edf..85d4026248 100644
--- a/examples/compiled/test_aggregate_nested.vg.json
+++ b/examples/compiled/test_aggregate_nested.vg.json
@@ -87,7 +87,7 @@
"fill": {"scale": "color", "field": "properties\\.site"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Sum of properties.yield: \" + (format(datum[\"sum_properties.yield\"], \"\")) + \"; properties.variety: \" + (isValid(datum[\"properties.variety\"]) ? datum[\"properties.variety\"] : \"\"+datum[\"properties.variety\"]) + \"; site: \" + (isValid(datum[\"properties.site\"]) ? datum[\"properties.site\"] : \"\"+datum[\"properties.site\"])"
+ "signal": "\"Sum of properties.yield: \" + (!isValid(datum[\"sum_properties.yield\"]) || !isFinite(+datum[\"sum_properties.yield\"]) ? \"\" + datum[\"sum_properties.yield\"] : format(datum[\"sum_properties.yield\"], \"\")) + \"; properties.variety: \" + (\"\" + datum[\"properties.variety\"]) + \"; site: \" + (\"\" + datum[\"properties.site\"])"
},
"x": {"scale": "x", "field": "sum_properties\\.yield_end"},
"x2": {"scale": "x", "field": "sum_properties\\.yield_start"},
diff --git a/examples/compiled/test_field_with_spaces.vg.json b/examples/compiled/test_field_with_spaces.vg.json
index 8632fb9390..ad9ec3d9da 100644
--- a/examples/compiled/test_field_with_spaces.vg.json
+++ b/examples/compiled/test_field_with_spaces.vg.json
@@ -45,7 +45,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a b: \" + (format(datum[\"a b\"], \"\")) + \"; c d: \" + (format(datum[\"c d\"], \"\"))"
+ "signal": "\"a b: \" + (!isValid(datum[\"a b\"]) || !isFinite(+datum[\"a b\"]) ? \"\" + datum[\"a b\"] : format(datum[\"a b\"], \"\")) + \"; c d: \" + (!isValid(datum[\"c d\"]) || !isFinite(+datum[\"c d\"]) ? \"\" + datum[\"c d\"] : format(datum[\"c d\"], \"\"))"
},
"x": {"scale": "x", "field": "a b"},
"y": {"scale": "y", "field": "c d"}
diff --git a/examples/compiled/test_invalid_break_paths_filter_domains.svg b/examples/compiled/test_invalid_break_paths_filter_domains.svg
index c91dd809d5..8af37fd9c4 100644
--- a/examples/compiled/test_invalid_break_paths_filter_domains.svg
+++ b/examples/compiled/test_invalid_break_paths_filter_domains.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/examples/compiled/test_invalid_break_paths_filter_domains.vg.json b/examples/compiled/test_invalid_break_paths_filter_domains.vg.json
index bef469315b..a8e8cf7165 100644
--- a/examples/compiled/test_invalid_break_paths_filter_domains.vg.json
+++ b/examples/compiled/test_invalid_break_paths_filter_domains.vg.json
@@ -180,11 +180,11 @@
"fill": {"value": "transparent"},
"stroke": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_0_concat_0_x", "field": "a"},
"y": {"scale": "concat_0_concat_0_y", "field": "b"}
@@ -262,11 +262,11 @@
"update": {
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"xc": {"scale": "concat_0_concat_1_x", "field": "a"},
"width": {"value": 5},
@@ -347,10 +347,10 @@
"update": {
"stroke": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_0_concat_2_x", "field": "a"},
"y": {"scale": "concat_0_concat_2_y", "field": "b"},
@@ -370,11 +370,11 @@
"opacity": {"value": 1},
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_0_concat_2_x", "field": "a"},
"y": {"scale": "concat_0_concat_2_y", "field": "b"}
@@ -454,10 +454,10 @@
"orient": {"value": "vertical"},
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_0_concat_3_x", "field": "a"},
"y": {"scale": "concat_0_concat_3_y", "field": "b_end"},
@@ -549,11 +549,11 @@
"fill": {"value": "transparent"},
"stroke": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_1_concat_0_x", "field": "a"},
"y": {"scale": "concat_1_concat_0_y", "field": "b"}
@@ -617,11 +617,11 @@
"update": {
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_1_concat_1_x", "field": "a"},
"width": {
@@ -690,10 +690,10 @@
"update": {
"stroke": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_1_concat_2_x", "field": "a"},
"y": {"scale": "concat_1_concat_2_y", "field": "b"},
@@ -713,11 +713,11 @@
"opacity": {"value": 1},
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_1_concat_2_x", "field": "a"},
"y": {"scale": "concat_1_concat_2_y", "field": "b"}
@@ -783,10 +783,10 @@
"orient": {"value": "vertical"},
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_1_concat_3_x", "field": "a"},
"y": {"scale": "concat_1_concat_3_y", "field": "b_end"},
diff --git a/examples/compiled/test_invalid_break_paths_show_domains.svg b/examples/compiled/test_invalid_break_paths_show_domains.svg
index 8bd25d26d9..9e26282bfb 100644
--- a/examples/compiled/test_invalid_break_paths_show_domains.svg
+++ b/examples/compiled/test_invalid_break_paths_show_domains.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/examples/compiled/test_invalid_break_paths_show_domains.vg.json b/examples/compiled/test_invalid_break_paths_show_domains.vg.json
index 4fa60a64a7..4fdd43b2a4 100644
--- a/examples/compiled/test_invalid_break_paths_show_domains.vg.json
+++ b/examples/compiled/test_invalid_break_paths_show_domains.vg.json
@@ -172,11 +172,11 @@
"fill": {"value": "transparent"},
"stroke": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_0_concat_0_x", "field": "a"},
"y": {"scale": "concat_0_concat_0_y", "field": "b"}
@@ -254,11 +254,11 @@
"update": {
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"xc": {"scale": "concat_0_concat_1_x", "field": "a"},
"width": {"value": 5},
@@ -339,10 +339,10 @@
"update": {
"stroke": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_0_concat_2_x", "field": "a"},
"y": {"scale": "concat_0_concat_2_y", "field": "b"},
@@ -362,11 +362,11 @@
"opacity": {"value": 1},
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_0_concat_2_x", "field": "a"},
"y": {"scale": "concat_0_concat_2_y", "field": "b"}
@@ -446,10 +446,10 @@
"orient": {"value": "vertical"},
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_0_concat_3_x", "field": "a"},
"y": {"scale": "concat_0_concat_3_y", "field": "b_end"},
@@ -541,11 +541,11 @@
"fill": {"value": "transparent"},
"stroke": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_1_concat_0_x", "field": "a"},
"y": {"scale": "concat_1_concat_0_y", "field": "b"}
@@ -609,11 +609,11 @@
"update": {
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_1_concat_1_x", "field": "a"},
"width": {
@@ -682,10 +682,10 @@
"update": {
"stroke": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_1_concat_2_x", "field": "a"},
"y": {"scale": "concat_1_concat_2_y", "field": "b"},
@@ -705,11 +705,11 @@
"opacity": {"value": 1},
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_1_concat_2_x", "field": "a"},
"y": {"scale": "concat_1_concat_2_y", "field": "b"}
@@ -775,10 +775,10 @@
"orient": {"value": "vertical"},
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_1_concat_3_x", "field": "a"},
"y": {"scale": "concat_1_concat_3_y", "field": "b_end"},
diff --git a/examples/compiled/test_invalid_break_paths_show_path_domains.svg b/examples/compiled/test_invalid_break_paths_show_path_domains.svg
index fd3f096e5f..ac6f9c6ab0 100644
--- a/examples/compiled/test_invalid_break_paths_show_path_domains.svg
+++ b/examples/compiled/test_invalid_break_paths_show_path_domains.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/examples/compiled/test_invalid_break_paths_show_path_domains.vg.json b/examples/compiled/test_invalid_break_paths_show_path_domains.vg.json
index 8920562bae..9befa9ae32 100644
--- a/examples/compiled/test_invalid_break_paths_show_path_domains.vg.json
+++ b/examples/compiled/test_invalid_break_paths_show_path_domains.vg.json
@@ -160,11 +160,11 @@
"fill": {"value": "transparent"},
"stroke": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_0_concat_0_x", "field": "a"},
"y": {"scale": "concat_0_concat_0_y", "field": "b"}
@@ -242,11 +242,11 @@
"update": {
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"xc": {"scale": "concat_0_concat_1_x", "field": "a"},
"width": {"value": 5},
@@ -327,10 +327,10 @@
"update": {
"stroke": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_0_concat_2_x", "field": "a"},
"y": {"scale": "concat_0_concat_2_y", "field": "b"},
@@ -350,11 +350,11 @@
"opacity": {"value": 1},
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_0_concat_2_x", "field": "a"},
"y": {"scale": "concat_0_concat_2_y", "field": "b"}
@@ -434,10 +434,10 @@
"orient": {"value": "vertical"},
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_0_concat_3_x", "field": "a"},
"y": {"scale": "concat_0_concat_3_y", "field": "b_end"},
@@ -529,11 +529,11 @@
"fill": {"value": "transparent"},
"stroke": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_1_concat_0_x", "field": "a"},
"y": {"scale": "concat_1_concat_0_y", "field": "b"}
@@ -597,11 +597,11 @@
"update": {
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_1_concat_1_x", "field": "a"},
"width": {
@@ -670,10 +670,10 @@
"update": {
"stroke": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_1_concat_2_x", "field": "a"},
"y": {"scale": "concat_1_concat_2_y", "field": "b"},
@@ -693,11 +693,11 @@
"opacity": {"value": 1},
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_1_concat_2_x", "field": "a"},
"y": {"scale": "concat_1_concat_2_y", "field": "b"}
@@ -763,10 +763,10 @@
"orient": {"value": "vertical"},
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_1_concat_3_x", "field": "a"},
"y": {"scale": "concat_1_concat_3_y", "field": "b_end"},
diff --git a/examples/compiled/test_invalid_color_filter.vg.json b/examples/compiled/test_invalid_color_filter.vg.json
index 22fbdcb340..e2d45c9f82 100644
--- a/examples/compiled/test_invalid_color_filter.vg.json
+++ b/examples/compiled/test_invalid_color_filter.vg.json
@@ -174,11 +174,11 @@
"fill": {"value": "transparent"},
"stroke": {"scale": "color", "field": "c"},
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": {"scale": "concat_0_concat_0_x", "field": "a"},
"y": {"scale": "concat_0_concat_0_y", "field": "b"}
@@ -256,11 +256,11 @@
"update": {
"fill": {"scale": "color", "field": "c"},
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"xc": {"scale": "concat_0_concat_1_x", "field": "a"},
"width": {"value": 5},
@@ -360,10 +360,10 @@
"update": {
"stroke": {"scale": "color", "field": "c"},
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": {"scale": "concat_0_concat_2_x", "field": "a"},
"y": {"scale": "concat_0_concat_2_y", "field": "b"}
@@ -382,11 +382,11 @@
"opacity": {"value": 1},
"fill": {"scale": "color", "field": "c"},
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": {"scale": "concat_0_concat_2_x", "field": "a"},
"y": {"scale": "concat_0_concat_2_y", "field": "b"}
@@ -483,10 +483,10 @@
"orient": {"value": "vertical"},
"fill": {"scale": "color", "field": "c"},
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": {"scale": "concat_0_concat_3_x", "field": "a"},
"y": {"scale": "concat_0_concat_3_y", "field": "b_end"},
@@ -582,11 +582,11 @@
"fill": {"value": "transparent"},
"stroke": {"scale": "color", "field": "c"},
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": {"scale": "concat_1_concat_0_x", "field": "a"},
"y": {"scale": "concat_1_concat_0_y", "field": "b"}
@@ -650,11 +650,11 @@
"update": {
"fill": {"scale": "color", "field": "c"},
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": {"scale": "concat_1_concat_1_x", "field": "a"},
"width": {
@@ -742,10 +742,10 @@
"update": {
"stroke": {"scale": "color", "field": "c"},
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": {"scale": "concat_1_concat_2_x", "field": "a"},
"y": {"scale": "concat_1_concat_2_y", "field": "b"}
@@ -764,11 +764,11 @@
"opacity": {"value": 1},
"fill": {"scale": "color", "field": "c"},
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": {"scale": "concat_1_concat_2_x", "field": "a"},
"y": {"scale": "concat_1_concat_2_y", "field": "b"}
@@ -851,10 +851,10 @@
"orient": {"value": "vertical"},
"fill": {"scale": "color", "field": "c"},
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": {"scale": "concat_1_concat_3_x", "field": "a"},
"y": {"scale": "concat_1_concat_3_y", "field": "b_end"},
diff --git a/examples/compiled/test_invalid_color_filter_but_include_in_scale_invalid.svg b/examples/compiled/test_invalid_color_filter_but_include_in_scale_invalid.svg
index bb48b40d80..25a209cc7e 100644
--- a/examples/compiled/test_invalid_color_filter_but_include_in_scale_invalid.svg
+++ b/examples/compiled/test_invalid_color_filter_but_include_in_scale_invalid.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/examples/compiled/test_invalid_color_filter_but_include_in_scale_invalid.vg.json b/examples/compiled/test_invalid_color_filter_but_include_in_scale_invalid.vg.json
index 9947ced8b4..681015b1e2 100644
--- a/examples/compiled/test_invalid_color_filter_but_include_in_scale_invalid.vg.json
+++ b/examples/compiled/test_invalid_color_filter_but_include_in_scale_invalid.vg.json
@@ -180,11 +180,11 @@
{"scale": "color", "field": "c"}
],
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": {"scale": "concat_0_concat_0_x", "field": "a"},
"y": {"scale": "concat_0_concat_0_y", "field": "b"}
@@ -268,11 +268,11 @@
{"scale": "color", "field": "c"}
],
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"xc": {"scale": "concat_0_concat_1_x", "field": "a"},
"width": {"value": 5},
@@ -378,10 +378,10 @@
{"scale": "color", "field": "c"}
],
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": {"scale": "concat_0_concat_2_x", "field": "a"},
"y": {"scale": "concat_0_concat_2_y", "field": "b"}
@@ -406,11 +406,11 @@
{"scale": "color", "field": "c"}
],
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": {"scale": "concat_0_concat_2_x", "field": "a"},
"y": {"scale": "concat_0_concat_2_y", "field": "b"}
@@ -513,10 +513,10 @@
{"scale": "color", "field": "c"}
],
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": {"scale": "concat_0_concat_3_x", "field": "a"},
"y": {"scale": "concat_0_concat_3_y", "field": "b_end"},
@@ -618,11 +618,11 @@
{"scale": "color", "field": "c"}
],
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": {"scale": "concat_1_concat_0_x", "field": "a"},
"y": {"scale": "concat_1_concat_0_y", "field": "b"}
@@ -692,11 +692,11 @@
{"scale": "color", "field": "c"}
],
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": {"scale": "concat_1_concat_1_x", "field": "a"},
"width": {
@@ -790,10 +790,10 @@
{"scale": "color", "field": "c"}
],
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": {"scale": "concat_1_concat_2_x", "field": "a"},
"y": {"scale": "concat_1_concat_2_y", "field": "b"}
@@ -818,11 +818,11 @@
{"scale": "color", "field": "c"}
],
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": {"scale": "concat_1_concat_2_x", "field": "a"},
"y": {"scale": "concat_1_concat_2_y", "field": "b"}
@@ -911,10 +911,10 @@
{"scale": "color", "field": "c"}
],
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": {"scale": "concat_1_concat_3_x", "field": "a"},
"y": {"scale": "concat_1_concat_3_y", "field": "b_end"},
diff --git a/examples/compiled/test_invalid_color_show.svg b/examples/compiled/test_invalid_color_show.svg
index 0da6eb7437..e727c52953 100644
--- a/examples/compiled/test_invalid_color_show.svg
+++ b/examples/compiled/test_invalid_color_show.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/examples/compiled/test_invalid_color_show.vg.json b/examples/compiled/test_invalid_color_show.vg.json
index 0c326eb84a..b86c0cd5ab 100644
--- a/examples/compiled/test_invalid_color_show.vg.json
+++ b/examples/compiled/test_invalid_color_show.vg.json
@@ -144,11 +144,11 @@
{"scale": "color", "field": "c"}
],
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": [
{
@@ -246,11 +246,11 @@
{"scale": "color", "field": "c"}
],
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"xc": [
{
@@ -362,10 +362,10 @@
{"scale": "color", "field": "c"}
],
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": [
{
@@ -403,11 +403,11 @@
{"scale": "color", "field": "c"}
],
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": [
{
@@ -523,10 +523,10 @@
{"scale": "color", "field": "c"}
],
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": [
{
@@ -634,11 +634,11 @@
{"scale": "color", "field": "c"}
],
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": {"scale": "concat_1_concat_0_x", "field": "a"},
"y": [
@@ -715,11 +715,11 @@
{"scale": "color", "field": "c"}
],
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": {"scale": "concat_1_concat_1_x", "field": "a"},
"width": {
@@ -813,10 +813,10 @@
{"scale": "color", "field": "c"}
],
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": {"scale": "concat_1_concat_2_x", "field": "a"},
"y": [
@@ -848,11 +848,11 @@
{"scale": "color", "field": "c"}
],
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": {"scale": "concat_1_concat_2_x", "field": "a"},
"y": [
@@ -948,10 +948,10 @@
{"scale": "color", "field": "c"}
],
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": {"scale": "concat_1_concat_3_x", "field": "a"},
"y": {"scale": "concat_1_concat_3_y", "field": "b_end"},
diff --git a/examples/compiled/test_invalid_color_size_config_scale.svg b/examples/compiled/test_invalid_color_size_config_scale.svg
index 641c8d1c4d..0ab4f73e43 100644
--- a/examples/compiled/test_invalid_color_size_config_scale.svg
+++ b/examples/compiled/test_invalid_color_size_config_scale.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/examples/compiled/test_invalid_color_size_config_scale.vg.json b/examples/compiled/test_invalid_color_size_config_scale.vg.json
index 66bc925dcd..90777a67a2 100644
--- a/examples/compiled/test_invalid_color_size_config_scale.vg.json
+++ b/examples/compiled/test_invalid_color_size_config_scale.vg.json
@@ -62,11 +62,11 @@
{"scale": "color", "field": "c"}
],
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": {"scale": "concat_0_x", "field": "a"},
"y": {"scale": "concat_0_y", "field": "b"}
@@ -147,11 +147,11 @@
"fill": {"value": "transparent"},
"stroke": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": {"scale": "concat_1_x", "field": "a"},
"y": {"scale": "concat_1_y", "field": "b"},
diff --git a/examples/compiled/test_invalid_color_size_mark_filter_only.vg.json b/examples/compiled/test_invalid_color_size_mark_filter_only.vg.json
index 01d38a2c2c..1f6e31ceeb 100644
--- a/examples/compiled/test_invalid_color_size_mark_filter_only.vg.json
+++ b/examples/compiled/test_invalid_color_size_mark_filter_only.vg.json
@@ -56,11 +56,11 @@
"fill": {"value": "transparent"},
"stroke": {"scale": "color", "field": "c"},
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": {"scale": "concat_0_x", "field": "a"},
"y": {"scale": "concat_0_y", "field": "b"}
@@ -141,11 +141,11 @@
"fill": {"value": "transparent"},
"stroke": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": {"scale": "concat_1_x", "field": "a"},
"y": {"scale": "concat_1_y", "field": "b"},
diff --git a/examples/compiled/test_invalid_color_size_mark_show_only.svg b/examples/compiled/test_invalid_color_size_mark_show_only.svg
index fbe2695055..547fad019c 100644
--- a/examples/compiled/test_invalid_color_size_mark_show_only.svg
+++ b/examples/compiled/test_invalid_color_size_mark_show_only.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/examples/compiled/test_invalid_color_size_mark_show_only.vg.json b/examples/compiled/test_invalid_color_size_mark_show_only.vg.json
index 6c756d6227..8e22b1698d 100644
--- a/examples/compiled/test_invalid_color_size_mark_show_only.vg.json
+++ b/examples/compiled/test_invalid_color_size_mark_show_only.vg.json
@@ -52,11 +52,11 @@
{"scale": "color", "field": "c"}
],
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": [
{
@@ -151,11 +151,11 @@
"fill": {"value": "transparent"},
"stroke": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": [
{
diff --git a/examples/compiled/test_invalid_default.svg b/examples/compiled/test_invalid_default.svg
index fd3f096e5f..ac6f9c6ab0 100644
--- a/examples/compiled/test_invalid_default.svg
+++ b/examples/compiled/test_invalid_default.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/examples/compiled/test_invalid_default.vg.json b/examples/compiled/test_invalid_default.vg.json
index 8920562bae..9befa9ae32 100644
--- a/examples/compiled/test_invalid_default.vg.json
+++ b/examples/compiled/test_invalid_default.vg.json
@@ -160,11 +160,11 @@
"fill": {"value": "transparent"},
"stroke": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_0_concat_0_x", "field": "a"},
"y": {"scale": "concat_0_concat_0_y", "field": "b"}
@@ -242,11 +242,11 @@
"update": {
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"xc": {"scale": "concat_0_concat_1_x", "field": "a"},
"width": {"value": 5},
@@ -327,10 +327,10 @@
"update": {
"stroke": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_0_concat_2_x", "field": "a"},
"y": {"scale": "concat_0_concat_2_y", "field": "b"},
@@ -350,11 +350,11 @@
"opacity": {"value": 1},
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_0_concat_2_x", "field": "a"},
"y": {"scale": "concat_0_concat_2_y", "field": "b"}
@@ -434,10 +434,10 @@
"orient": {"value": "vertical"},
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_0_concat_3_x", "field": "a"},
"y": {"scale": "concat_0_concat_3_y", "field": "b_end"},
@@ -529,11 +529,11 @@
"fill": {"value": "transparent"},
"stroke": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_1_concat_0_x", "field": "a"},
"y": {"scale": "concat_1_concat_0_y", "field": "b"}
@@ -597,11 +597,11 @@
"update": {
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_1_concat_1_x", "field": "a"},
"width": {
@@ -670,10 +670,10 @@
"update": {
"stroke": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_1_concat_2_x", "field": "a"},
"y": {"scale": "concat_1_concat_2_y", "field": "b"},
@@ -693,11 +693,11 @@
"opacity": {"value": 1},
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_1_concat_2_x", "field": "a"},
"y": {"scale": "concat_1_concat_2_y", "field": "b"}
@@ -763,10 +763,10 @@
"orient": {"value": "vertical"},
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_1_concat_3_x", "field": "a"},
"y": {"scale": "concat_1_concat_3_y", "field": "b_end"},
diff --git a/examples/compiled/test_invalid_filter.vg.json b/examples/compiled/test_invalid_filter.vg.json
index 0b5c1a789e..f4ab5ed9f4 100644
--- a/examples/compiled/test_invalid_filter.vg.json
+++ b/examples/compiled/test_invalid_filter.vg.json
@@ -168,11 +168,11 @@
"fill": {"value": "transparent"},
"stroke": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_0_concat_0_x", "field": "a"},
"y": {"scale": "concat_0_concat_0_y", "field": "b"}
@@ -250,11 +250,11 @@
"update": {
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"xc": {"scale": "concat_0_concat_1_x", "field": "a"},
"width": {"value": 5},
@@ -335,10 +335,10 @@
"update": {
"stroke": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_0_concat_2_x", "field": "a"},
"y": {"scale": "concat_0_concat_2_y", "field": "b"}
@@ -355,11 +355,11 @@
"opacity": {"value": 1},
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_0_concat_2_x", "field": "a"},
"y": {"scale": "concat_0_concat_2_y", "field": "b"}
@@ -439,10 +439,10 @@
"orient": {"value": "vertical"},
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_0_concat_3_x", "field": "a"},
"y": {"scale": "concat_0_concat_3_y", "field": "b_end"},
@@ -531,11 +531,11 @@
"fill": {"value": "transparent"},
"stroke": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_1_concat_0_x", "field": "a"},
"y": {"scale": "concat_1_concat_0_y", "field": "b"}
@@ -599,11 +599,11 @@
"update": {
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_1_concat_1_x", "field": "a"},
"width": {
@@ -672,10 +672,10 @@
"update": {
"stroke": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_1_concat_2_x", "field": "a"},
"y": {"scale": "concat_1_concat_2_y", "field": "b"}
@@ -692,11 +692,11 @@
"opacity": {"value": 1},
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_1_concat_2_x", "field": "a"},
"y": {"scale": "concat_1_concat_2_y", "field": "b"}
@@ -762,10 +762,10 @@
"orient": {"value": "vertical"},
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_1_concat_3_x", "field": "a"},
"y": {"scale": "concat_1_concat_3_y", "field": "b_end"},
diff --git a/examples/compiled/test_invalid_null.svg b/examples/compiled/test_invalid_null.svg
index f4635611ae..a1ca2d816b 100644
--- a/examples/compiled/test_invalid_null.svg
+++ b/examples/compiled/test_invalid_null.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/examples/compiled/test_invalid_null.vg.json b/examples/compiled/test_invalid_null.vg.json
index d4134b54da..70452409c8 100644
--- a/examples/compiled/test_invalid_null.vg.json
+++ b/examples/compiled/test_invalid_null.vg.json
@@ -132,11 +132,11 @@
"fill": {"value": "transparent"},
"stroke": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": [
{
@@ -228,11 +228,11 @@
"update": {
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"xc": [
{
@@ -319,10 +319,10 @@
"update": {
"stroke": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": [
{
@@ -352,11 +352,11 @@
"opacity": {"value": 1},
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": [
{
@@ -449,10 +449,10 @@
"orient": {"value": "vertical"},
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": [
{
@@ -547,11 +547,11 @@
"fill": {"value": "transparent"},
"stroke": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_1_concat_0_x", "field": "a"},
"y": [
@@ -622,11 +622,11 @@
"update": {
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_1_concat_1_x", "field": "a"},
"width": {
@@ -695,10 +695,10 @@
"update": {
"stroke": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_1_concat_2_x", "field": "a"},
"y": [
@@ -722,11 +722,11 @@
"opacity": {"value": 1},
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_1_concat_2_x", "field": "a"},
"y": [
@@ -799,10 +799,10 @@
"orient": {"value": "vertical"},
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_1_concat_3_x", "field": "a"},
"y": {"scale": "concat_1_concat_3_y", "field": "b_end"},
diff --git a/examples/compiled/test_invalid_opacity_filter.vg.json b/examples/compiled/test_invalid_opacity_filter.vg.json
index 688632fa11..6ee8005ac5 100644
--- a/examples/compiled/test_invalid_opacity_filter.vg.json
+++ b/examples/compiled/test_invalid_opacity_filter.vg.json
@@ -174,11 +174,11 @@
"fill": {"value": "transparent"},
"stroke": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": {"scale": "concat_0_concat_0_x", "field": "a"},
"y": {"scale": "concat_0_concat_0_y", "field": "b"}
@@ -257,11 +257,11 @@
"fill": {"value": "#4c78a8"},
"opacity": {"scale": "opacity", "field": "c"},
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"xc": {"scale": "concat_0_concat_1_x", "field": "a"},
"width": {"value": 5},
@@ -362,10 +362,10 @@
"stroke": {"value": "#4c78a8"},
"opacity": {"scale": "opacity", "field": "c"},
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": {"scale": "concat_0_concat_2_x", "field": "a"},
"y": {"scale": "concat_0_concat_2_y", "field": "b"}
@@ -384,11 +384,11 @@
"opacity": {"scale": "opacity", "field": "c"},
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": {"scale": "concat_0_concat_2_x", "field": "a"},
"y": {"scale": "concat_0_concat_2_y", "field": "b"}
@@ -486,10 +486,10 @@
"fill": {"value": "#4c78a8"},
"opacity": {"scale": "opacity", "field": "c"},
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": {"scale": "concat_0_concat_3_x", "field": "a"},
"y": {"scale": "concat_0_concat_3_y", "field": "b_end"},
@@ -585,11 +585,11 @@
"fill": {"value": "transparent"},
"stroke": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": {"scale": "concat_1_concat_0_x", "field": "a"},
"y": {"scale": "concat_1_concat_0_y", "field": "b"}
@@ -654,11 +654,11 @@
"fill": {"value": "#4c78a8"},
"opacity": {"scale": "opacity", "field": "c"},
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": {"scale": "concat_1_concat_1_x", "field": "a"},
"width": {
@@ -747,10 +747,10 @@
"stroke": {"value": "#4c78a8"},
"opacity": {"scale": "opacity", "field": "c"},
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": {"scale": "concat_1_concat_2_x", "field": "a"},
"y": {"scale": "concat_1_concat_2_y", "field": "b"}
@@ -769,11 +769,11 @@
"opacity": {"scale": "opacity", "field": "c"},
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": {"scale": "concat_1_concat_2_x", "field": "a"},
"y": {"scale": "concat_1_concat_2_y", "field": "b"}
@@ -857,10 +857,10 @@
"fill": {"value": "#4c78a8"},
"opacity": {"scale": "opacity", "field": "c"},
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": {"scale": "concat_1_concat_3_x", "field": "a"},
"y": {"scale": "concat_1_concat_3_y", "field": "b_end"},
diff --git a/examples/compiled/test_invalid_opacity_filter_but_include_in_scale_invalid.svg b/examples/compiled/test_invalid_opacity_filter_but_include_in_scale_invalid.svg
index 67540caf76..37ab9c2e33 100644
--- a/examples/compiled/test_invalid_opacity_filter_but_include_in_scale_invalid.svg
+++ b/examples/compiled/test_invalid_opacity_filter_but_include_in_scale_invalid.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/examples/compiled/test_invalid_opacity_filter_but_include_in_scale_invalid.vg.json b/examples/compiled/test_invalid_opacity_filter_but_include_in_scale_invalid.vg.json
index da3940ae50..4e9a48327c 100644
--- a/examples/compiled/test_invalid_opacity_filter_but_include_in_scale_invalid.vg.json
+++ b/examples/compiled/test_invalid_opacity_filter_but_include_in_scale_invalid.vg.json
@@ -180,11 +180,11 @@
"fill": {"value": "transparent"},
"stroke": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": {"scale": "concat_0_concat_0_x", "field": "a"},
"y": {"scale": "concat_0_concat_0_y", "field": "b"}
@@ -269,11 +269,11 @@
{"scale": "opacity", "field": "c"}
],
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"xc": {"scale": "concat_0_concat_1_x", "field": "a"},
"width": {"value": 5},
@@ -380,10 +380,10 @@
{"scale": "opacity", "field": "c"}
],
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": {"scale": "concat_0_concat_2_x", "field": "a"},
"y": {"scale": "concat_0_concat_2_y", "field": "b"}
@@ -408,11 +408,11 @@
],
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": {"scale": "concat_0_concat_2_x", "field": "a"},
"y": {"scale": "concat_0_concat_2_y", "field": "b"}
@@ -516,10 +516,10 @@
{"scale": "opacity", "field": "c"}
],
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": {"scale": "concat_0_concat_3_x", "field": "a"},
"y": {"scale": "concat_0_concat_3_y", "field": "b_end"},
@@ -621,11 +621,11 @@
"fill": {"value": "transparent"},
"stroke": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": {"scale": "concat_1_concat_0_x", "field": "a"},
"y": {"scale": "concat_1_concat_0_y", "field": "b"}
@@ -696,11 +696,11 @@
{"scale": "opacity", "field": "c"}
],
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": {"scale": "concat_1_concat_1_x", "field": "a"},
"width": {
@@ -795,10 +795,10 @@
{"scale": "opacity", "field": "c"}
],
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": {"scale": "concat_1_concat_2_x", "field": "a"},
"y": {"scale": "concat_1_concat_2_y", "field": "b"}
@@ -823,11 +823,11 @@
],
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": {"scale": "concat_1_concat_2_x", "field": "a"},
"y": {"scale": "concat_1_concat_2_y", "field": "b"}
@@ -917,10 +917,10 @@
{"scale": "opacity", "field": "c"}
],
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": {"scale": "concat_1_concat_3_x", "field": "a"},
"y": {"scale": "concat_1_concat_3_y", "field": "b_end"},
diff --git a/examples/compiled/test_invalid_opacity_show.svg b/examples/compiled/test_invalid_opacity_show.svg
index 3330670d5f..1638d52e7a 100644
--- a/examples/compiled/test_invalid_opacity_show.svg
+++ b/examples/compiled/test_invalid_opacity_show.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/examples/compiled/test_invalid_opacity_show.vg.json b/examples/compiled/test_invalid_opacity_show.vg.json
index 00ad629972..1ae049224e 100644
--- a/examples/compiled/test_invalid_opacity_show.vg.json
+++ b/examples/compiled/test_invalid_opacity_show.vg.json
@@ -144,11 +144,11 @@
"fill": {"value": "transparent"},
"stroke": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": [
{
@@ -247,11 +247,11 @@
{"scale": "opacity", "field": "c"}
],
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"xc": [
{
@@ -364,10 +364,10 @@
{"scale": "opacity", "field": "c"}
],
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": [
{
@@ -405,11 +405,11 @@
],
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": [
{
@@ -526,10 +526,10 @@
{"scale": "opacity", "field": "c"}
],
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": [
{
@@ -637,11 +637,11 @@
"fill": {"value": "transparent"},
"stroke": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": {"scale": "concat_1_concat_0_x", "field": "a"},
"y": [
@@ -719,11 +719,11 @@
{"scale": "opacity", "field": "c"}
],
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": {"scale": "concat_1_concat_1_x", "field": "a"},
"width": {
@@ -818,10 +818,10 @@
{"scale": "opacity", "field": "c"}
],
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": {"scale": "concat_1_concat_2_x", "field": "a"},
"y": [
@@ -853,11 +853,11 @@
],
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": {"scale": "concat_1_concat_2_x", "field": "a"},
"y": [
@@ -954,10 +954,10 @@
{"scale": "opacity", "field": "c"}
],
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\"), \"c\": format(datum[\"c\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"), \"c\": !isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\")}"
},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (format(datum[\"c\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; c: \" + (!isValid(datum[\"c\"]) || !isFinite(+datum[\"c\"]) ? \"\" + datum[\"c\"] : format(datum[\"c\"], \"\"))"
},
"x": {"scale": "concat_1_concat_3_x", "field": "a"},
"y": {"scale": "concat_1_concat_3_y", "field": "b_end"},
diff --git a/examples/compiled/test_invalid_show.svg b/examples/compiled/test_invalid_show.svg
index f4635611ae..a1ca2d816b 100644
--- a/examples/compiled/test_invalid_show.svg
+++ b/examples/compiled/test_invalid_show.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/examples/compiled/test_invalid_show.vg.json b/examples/compiled/test_invalid_show.vg.json
index d4134b54da..70452409c8 100644
--- a/examples/compiled/test_invalid_show.vg.json
+++ b/examples/compiled/test_invalid_show.vg.json
@@ -132,11 +132,11 @@
"fill": {"value": "transparent"},
"stroke": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": [
{
@@ -228,11 +228,11 @@
"update": {
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"xc": [
{
@@ -319,10 +319,10 @@
"update": {
"stroke": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": [
{
@@ -352,11 +352,11 @@
"opacity": {"value": 1},
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": [
{
@@ -449,10 +449,10 @@
"orient": {"value": "vertical"},
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": format(datum[\"a\"], \"\"), \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": !isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\"), \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": [
{
@@ -547,11 +547,11 @@
"fill": {"value": "transparent"},
"stroke": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_1_concat_0_x", "field": "a"},
"y": [
@@ -622,11 +622,11 @@
"update": {
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_1_concat_1_x", "field": "a"},
"width": {
@@ -695,10 +695,10 @@
"update": {
"stroke": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_1_concat_2_x", "field": "a"},
"y": [
@@ -722,11 +722,11 @@
"opacity": {"value": 1},
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_1_concat_2_x", "field": "a"},
"y": [
@@ -799,10 +799,10 @@
"orient": {"value": "vertical"},
"fill": {"value": "#4c78a8"},
"tooltip": {
- "signal": "{\"a\": isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"], \"b\": format(datum[\"b\"], \"\")}"
+ "signal": "{\"a\": \"\" + datum[\"a\"], \"b\": !isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")}"
},
"description": {
- "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (\"\" + datum[\"a\"]) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "concat_1_concat_3_x", "field": "a"},
"y": {"scale": "concat_1_concat_3_y", "field": "b_end"},
diff --git a/examples/compiled/test_subobject.vg.json b/examples/compiled/test_subobject.vg.json
index d3e94e7d59..2e0165df69 100644
--- a/examples/compiled/test_subobject.vg.json
+++ b/examples/compiled/test_subobject.vg.json
@@ -50,7 +50,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"source\\.reco: \" + (format(datum[\"source.reco\"], \"\")) + \"; source\\.yes: \" + (format(datum[\"source.yes\"], \"\"))"
+ "signal": "\"source\\.reco: \" + (!isValid(datum[\"source.reco\"]) || !isFinite(+datum[\"source.reco\"]) ? \"\" + datum[\"source.reco\"] : format(datum[\"source.reco\"], \"\")) + \"; source\\.yes: \" + (!isValid(datum[\"source.yes\"]) || !isFinite(+datum[\"source.yes\"]) ? \"\" + datum[\"source.yes\"] : format(datum[\"source.yes\"], \"\"))"
},
"x": {"scale": "x", "field": "source\\.reco"},
"y": {"scale": "y", "field": "source\\.yes"}
diff --git a/examples/compiled/test_subobject_missing.vg.json b/examples/compiled/test_subobject_missing.vg.json
index 588e3cbfb1..7bdaaf2265 100644
--- a/examples/compiled/test_subobject_missing.vg.json
+++ b/examples/compiled/test_subobject_missing.vg.json
@@ -44,7 +44,7 @@
"update": {
"stroke": {"value": "#4c78a8"},
"description": {
- "signal": "\"rank: \" + (isValid(datum[\"rank\"]) ? datum[\"rank\"] : \"\"+datum[\"rank\"]) + \"; options.price: \" + (format(datum[\"options.price\"], \"\"))"
+ "signal": "\"rank: \" + (\"\" + datum[\"rank\"]) + \"; options.price: \" + (!isValid(datum[\"options.price\"]) || !isFinite(+datum[\"options.price\"]) ? \"\" + datum[\"options.price\"] : format(datum[\"options.price\"], \"\"))"
},
"x": {"scale": "x", "field": "rank"},
"y": {"scale": "y", "field": "options\\.price"},
diff --git a/examples/compiled/test_subobject_nested.vg.json b/examples/compiled/test_subobject_nested.vg.json
index bb50617f54..aa962ab50f 100644
--- a/examples/compiled/test_subobject_nested.vg.json
+++ b/examples/compiled/test_subobject_nested.vg.json
@@ -60,7 +60,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"source.reco: \" + (format(datum[\"source.reco\"], \"\")) + \"; source.yes: \" + (format(datum[\"source.yes\"], \"\"))"
+ "signal": "\"source.reco: \" + (!isValid(datum[\"source.reco\"]) || !isFinite(+datum[\"source.reco\"]) ? \"\" + datum[\"source.reco\"] : format(datum[\"source.reco\"], \"\")) + \"; source.yes: \" + (!isValid(datum[\"source.yes\"]) || !isFinite(+datum[\"source.yes\"]) ? \"\" + datum[\"source.yes\"] : format(datum[\"source.yes\"], \"\"))"
},
"x": {"scale": "x", "field": "source\\.reco"},
"y": {"scale": "y", "field": "source\\.yes"}
diff --git a/examples/compiled/text_format.vg.json b/examples/compiled/text_format.vg.json
index 87a3487c9c..475080009a 100644
--- a/examples/compiled/text_format.vg.json
+++ b/examples/compiled/text_format.vg.json
@@ -37,11 +37,13 @@
"update": {
"fill": {"value": "black"},
"description": {
- "signal": "\"Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; Mean of Horsepower: \" + (format(datum[\"mean_Horsepower\"], \".2f\"))"
+ "signal": "\"Origin: \" + (\"\" + datum[\"Origin\"]) + \"; Mean of Horsepower: \" + (!isValid(datum[\"mean_Horsepower\"]) || !isFinite(+datum[\"mean_Horsepower\"]) ? \"\" + datum[\"mean_Horsepower\"] : format(datum[\"mean_Horsepower\"], \".2f\"))"
},
"x": {"signal": "width", "mult": 0.5},
"y": {"scale": "y", "field": "Origin"},
- "text": {"signal": "format(datum[\"mean_Horsepower\"], \".2f\")"},
+ "text": {
+ "signal": "!isValid(datum[\"mean_Horsepower\"]) || !isFinite(+datum[\"mean_Horsepower\"]) ? \"\" + datum[\"mean_Horsepower\"] : format(datum[\"mean_Horsepower\"], \".2f\")"
+ },
"align": {"value": "center"},
"baseline": {"value": "middle"}
}
diff --git a/examples/compiled/text_params.vg.json b/examples/compiled/text_params.vg.json
index 6eedf2e1e0..5e4a851285 100644
--- a/examples/compiled/text_params.vg.json
+++ b/examples/compiled/text_params.vg.json
@@ -107,7 +107,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "x", "field": "a"},
"y": {"scale": "y", "field": "b"}
@@ -133,13 +133,11 @@
"fontStyle": {"signal": "fontStyle"},
"fill": {"value": "black"},
"description": {
- "signal": "\"a: \" + (format(datum[\"a\"], \"\")) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; label: \" + (isValid(datum[\"label\"]) ? datum[\"label\"] : \"\"+datum[\"label\"])"
+ "signal": "\"a: \" + (!isValid(datum[\"a\"]) || !isFinite(+datum[\"a\"]) ? \"\" + datum[\"a\"] : format(datum[\"a\"], \"\")) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\")) + \"; label: \" + (\"\" + datum[\"label\"])"
},
"x": {"scale": "x", "field": "a", "offset": {"signal": "xOffset"}},
"y": {"scale": "y", "field": "b", "offset": {"signal": "yOffset"}},
- "text": {
- "signal": "isValid(datum[\"label\"]) ? datum[\"label\"] : \"\"+datum[\"label\"]"
- }
+ "text": {"signal": "\"\" + datum[\"label\"]"}
}
}
}
diff --git a/examples/compiled/text_scatterplot_colored.vg.json b/examples/compiled/text_scatterplot_colored.vg.json
index 5c6b6971ec..50e674be91 100644
--- a/examples/compiled/text_scatterplot_colored.vg.json
+++ b/examples/compiled/text_scatterplot_colored.vg.json
@@ -29,13 +29,11 @@
"update": {
"fill": {"scale": "color", "field": "Origin"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; OriginInitial: \" + (isValid(datum[\"OriginInitial\"]) ? datum[\"OriginInitial\"] : \"\"+datum[\"OriginInitial\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Origin: \" + (\"\" + datum[\"Origin\"]) + \"; OriginInitial: \" + (\"\" + datum[\"OriginInitial\"])"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"},
- "text": {
- "signal": "isValid(datum[\"OriginInitial\"]) ? datum[\"OriginInitial\"] : \"\"+datum[\"OriginInitial\"]"
- },
+ "text": {"signal": "\"\" + datum[\"OriginInitial\"]"},
"align": {"value": "center"},
"baseline": {"value": "middle"}
}
diff --git a/examples/compiled/text_tooltip_image.vg.json b/examples/compiled/text_tooltip_image.vg.json
index dc2bdf8265..aca6c898aa 100644
--- a/examples/compiled/text_tooltip_image.vg.json
+++ b/examples/compiled/text_tooltip_image.vg.json
@@ -32,17 +32,11 @@
"encode": {
"update": {
"fill": {"value": "black"},
- "tooltip": {
- "signal": "{\"image\": isValid(datum[\"image\"]) ? datum[\"image\"] : \"\"+datum[\"image\"]}"
- },
- "description": {
- "signal": "\"image: \" + (isValid(datum[\"image\"]) ? datum[\"image\"] : \"\"+datum[\"image\"])"
- },
+ "tooltip": {"signal": "{\"image\": \"\" + datum[\"image\"]}"},
+ "description": {"signal": "\"image: \" + (\"\" + datum[\"image\"])"},
"x": {"signal": "width", "mult": 0.5},
"y": {"scale": "y", "field": "image"},
- "text": {
- "signal": "isValid(datum[\"image\"]) ? datum[\"image\"] : \"\"+datum[\"image\"]"
- },
+ "text": {"signal": "\"\" + datum[\"image\"]"},
"align": {"value": "center"},
"baseline": {"value": "middle"}
}
diff --git a/examples/compiled/tick_dot.vg.json b/examples/compiled/tick_dot.vg.json
index d8b575c0b5..30cca90c00 100644
--- a/examples/compiled/tick_dot.vg.json
+++ b/examples/compiled/tick_dot.vg.json
@@ -30,7 +30,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "tick"},
"description": {
- "signal": "\"precipitation: \" + (format(datum[\"precipitation\"], \"\"))"
+ "signal": "\"precipitation: \" + (!isValid(datum[\"precipitation\"]) || !isFinite(+datum[\"precipitation\"]) ? \"\" + datum[\"precipitation\"] : format(datum[\"precipitation\"], \"\"))"
},
"xc": {"scale": "x", "field": "precipitation"},
"yc": {"signal": "height", "mult": 0.5},
diff --git a/examples/compiled/tick_dot_thickness.vg.json b/examples/compiled/tick_dot_thickness.vg.json
index 962912839c..175cd4a3dc 100644
--- a/examples/compiled/tick_dot_thickness.vg.json
+++ b/examples/compiled/tick_dot_thickness.vg.json
@@ -30,7 +30,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "tick"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\"))"
},
"xc": {"scale": "x", "field": "Horsepower"},
"yc": {"signal": "height", "mult": 0.5},
diff --git a/examples/compiled/tick_grouped.vg.json b/examples/compiled/tick_grouped.vg.json
index 2bb4b56c33..43bbe7f135 100644
--- a/examples/compiled/tick_grouped.vg.json
+++ b/examples/compiled/tick_grouped.vg.json
@@ -49,7 +49,7 @@
"fill": {"scale": "color", "field": "group"},
"ariaRoleDescription": {"value": "tick"},
"description": {
- "signal": "\"category: \" + (isValid(datum[\"category\"]) ? datum[\"category\"] : \"\"+datum[\"category\"]) + \"; value: \" + (format(datum[\"value\"], \"\")) + \"; group: \" + (isValid(datum[\"group\"]) ? datum[\"group\"] : \"\"+datum[\"group\"])"
+ "signal": "\"category: \" + (\"\" + datum[\"category\"]) + \"; value: \" + (!isValid(datum[\"value\"]) || !isFinite(+datum[\"value\"]) ? \"\" + datum[\"value\"] : format(datum[\"value\"], \"\")) + \"; group: \" + (\"\" + datum[\"group\"])"
},
"xc": {
"scale": "x",
diff --git a/examples/compiled/tick_sort.vg.json b/examples/compiled/tick_sort.vg.json
index e54fb4aed0..15b62cec59 100644
--- a/examples/compiled/tick_sort.vg.json
+++ b/examples/compiled/tick_sort.vg.json
@@ -30,7 +30,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "tick"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\"))"
},
"xc": {"scale": "x", "field": "Horsepower"},
"yc": {"signal": "height", "mult": 0.5},
diff --git a/examples/compiled/tick_strip.vg.json b/examples/compiled/tick_strip.vg.json
index d27a6f5fb6..c2e610fafe 100644
--- a/examples/compiled/tick_strip.vg.json
+++ b/examples/compiled/tick_strip.vg.json
@@ -37,7 +37,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "tick"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Cylinders: \" + (\"\" + datum[\"Cylinders\"])"
},
"xc": {"scale": "x", "field": "Horsepower"},
"yc": {"scale": "y", "field": "Cylinders"},
diff --git a/examples/compiled/tick_strip_tick_band.vg.json b/examples/compiled/tick_strip_tick_band.vg.json
index 4302d64a9d..0b962cb385 100644
--- a/examples/compiled/tick_strip_tick_band.vg.json
+++ b/examples/compiled/tick_strip_tick_band.vg.json
@@ -33,7 +33,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "tick"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Cylinders: \" + (\"\" + datum[\"Cylinders\"])"
},
"xc": {"scale": "x", "field": "Horsepower"},
"yc": {"scale": "y", "field": "Cylinders", "band": 0.5},
diff --git a/examples/compiled/time_custom_step.vg.json b/examples/compiled/time_custom_step.vg.json
index f6ed2a1bf3..3bea461522 100644
--- a/examples/compiled/time_custom_step.vg.json
+++ b/examples/compiled/time_custom_step.vg.json
@@ -65,7 +65,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"date (minutes): \" + (timeFormat(datum[\"minutes_step_5_date\"], timeUnitSpecifier([\"minutes\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Sum of distance: \" + (format(datum[\"sum_distance\"], \"\"))"
+ "signal": "\"date (minutes): \" + (!isValid(datum[\"minutes_step_5_date\"]) || !isFinite(+datum[\"minutes_step_5_date\"]) ? \"\" + datum[\"minutes_step_5_date\"] : timeFormat(datum[\"minutes_step_5_date\"], timeUnitSpecifier([\"minutes\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Sum of distance: \" + (!isValid(datum[\"sum_distance\"]) || !isFinite(+datum[\"sum_distance\"]) ? \"\" + datum[\"sum_distance\"] : format(datum[\"sum_distance\"], \"\"))"
},
"x2": {
"scale": "x",
diff --git a/examples/compiled/time_output_utc_scale.vg.json b/examples/compiled/time_output_utc_scale.vg.json
index 772419de5f..1d692e10cc 100644
--- a/examples/compiled/time_output_utc_scale.vg.json
+++ b/examples/compiled/time_output_utc_scale.vg.json
@@ -45,7 +45,7 @@
"update": {
"stroke": {"value": "#4c78a8"},
"description": {
- "signal": "\"date (year-month-date-hours-minutes): \" + (utcFormat(datum[\"yearmonthdatehoursminutes_date\"], timeUnitSpecifier([\"year\",\"month\",\"date\",\"hours\",\"minutes\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; price: \" + (format(datum[\"price\"], \"\"))"
+ "signal": "\"date (year-month-date-hours-minutes): \" + (!isValid(datum[\"yearmonthdatehoursminutes_date\"]) || !isFinite(+datum[\"yearmonthdatehoursminutes_date\"]) ? \"\" + datum[\"yearmonthdatehoursminutes_date\"] : utcFormat(datum[\"yearmonthdatehoursminutes_date\"], timeUnitSpecifier([\"year\",\"month\",\"date\",\"hours\",\"minutes\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\"))"
},
"x": {"scale": "x", "field": "yearmonthdatehoursminutes_date"},
"y": {"scale": "y", "field": "price"},
diff --git a/examples/compiled/time_output_utc_timeunit.vg.json b/examples/compiled/time_output_utc_timeunit.vg.json
index 5d4be95d66..1c6335d7ff 100644
--- a/examples/compiled/time_output_utc_timeunit.vg.json
+++ b/examples/compiled/time_output_utc_timeunit.vg.json
@@ -46,7 +46,7 @@
"update": {
"stroke": {"value": "#4c78a8"},
"description": {
- "signal": "\"date (year-month-date-hours-minutes): \" + (timeFormat(datum[\"utcyearmonthdatehoursminutes_date\"], timeUnitSpecifier([\"year\",\"month\",\"date\",\"hours\",\"minutes\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; price: \" + (format(datum[\"price\"], \"\"))"
+ "signal": "\"date (year-month-date-hours-minutes): \" + (!isValid(datum[\"utcyearmonthdatehoursminutes_date\"]) || !isFinite(+datum[\"utcyearmonthdatehoursminutes_date\"]) ? \"\" + datum[\"utcyearmonthdatehoursminutes_date\"] : timeFormat(datum[\"utcyearmonthdatehoursminutes_date\"], timeUnitSpecifier([\"year\",\"month\",\"date\",\"hours\",\"minutes\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\"))"
},
"x": {"scale": "x", "field": "utcyearmonthdatehoursminutes_date"},
"y": {"scale": "y", "field": "price"},
diff --git a/examples/compiled/time_parse_binnedutc.vg.json b/examples/compiled/time_parse_binnedutc.vg.json
index 55dc8f7d78..7cf10765b4 100644
--- a/examples/compiled/time_parse_binnedutc.vg.json
+++ b/examples/compiled/time_parse_binnedutc.vg.json
@@ -40,7 +40,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"time: \" + (timeFormat(datum[\"date\"], timeUnitSpecifier([\"year\",\"month\",\"date\",\"hours\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"})))"
+ "signal": "\"time: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], timeUnitSpecifier([\"year\",\"month\",\"date\",\"hours\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"})))"
},
"x": {"field": {"group": "width"}},
"x2": {"value": 0},
diff --git a/examples/compiled/time_parse_local.vg.json b/examples/compiled/time_parse_local.vg.json
index 83690debb1..0ab150ec71 100644
--- a/examples/compiled/time_parse_local.vg.json
+++ b/examples/compiled/time_parse_local.vg.json
@@ -47,7 +47,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"time: \" + (timeFormat(datum[\"hoursminutes_date\"], timeUnitSpecifier([\"hours\",\"minutes\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"})))"
+ "signal": "\"time: \" + (!isValid(datum[\"hoursminutes_date\"]) || !isFinite(+datum[\"hoursminutes_date\"]) ? \"\" + datum[\"hoursminutes_date\"] : timeFormat(datum[\"hoursminutes_date\"], timeUnitSpecifier([\"hours\",\"minutes\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"})))"
},
"x": {"signal": "width", "mult": 0.5},
"y": {"scale": "y", "field": "hoursminutes_date"}
diff --git a/examples/compiled/time_parse_utc.vg.json b/examples/compiled/time_parse_utc.vg.json
index 244ed944cd..118930b01d 100644
--- a/examples/compiled/time_parse_utc.vg.json
+++ b/examples/compiled/time_parse_utc.vg.json
@@ -45,7 +45,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"time: \" + (timeFormat(datum[\"utchours_date\"], timeUnitSpecifier([\"hours\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"})))"
+ "signal": "\"time: \" + (!isValid(datum[\"utchours_date\"]) || !isFinite(+datum[\"utchours_date\"]) ? \"\" + datum[\"utchours_date\"] : timeFormat(datum[\"utchours_date\"], timeUnitSpecifier([\"hours\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"})))"
},
"x": {"signal": "width", "mult": 0.5},
"y": {"scale": "y", "field": "utchours_date"}
diff --git a/examples/compiled/time_parse_utc_format.vg.json b/examples/compiled/time_parse_utc_format.vg.json
index df4379d2f8..49a42400f9 100644
--- a/examples/compiled/time_parse_utc_format.vg.json
+++ b/examples/compiled/time_parse_utc_format.vg.json
@@ -51,7 +51,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"time: \" + (timeFormat(datum[\"hoursminutes_date\"], timeUnitSpecifier([\"hours\",\"minutes\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"})))"
+ "signal": "\"time: \" + (!isValid(datum[\"hoursminutes_date\"]) || !isFinite(+datum[\"hoursminutes_date\"]) ? \"\" + datum[\"hoursminutes_date\"] : timeFormat(datum[\"hoursminutes_date\"], timeUnitSpecifier([\"hours\",\"minutes\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"})))"
},
"x": {"signal": "width", "mult": 0.5},
"y": {"scale": "y", "field": "hoursminutes_date"}
diff --git a/examples/compiled/trail_color.vg.json b/examples/compiled/trail_color.vg.json
index 0a52240e35..9d1990a69c 100644
--- a/examples/compiled/trail_color.vg.json
+++ b/examples/compiled/trail_color.vg.json
@@ -41,7 +41,7 @@
"update": {
"fill": {"scale": "color", "field": "symbol"},
"description": {
- "signal": "\"date: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (format(datum[\"price\"], \"\")) + \"; symbol: \" + (isValid(datum[\"symbol\"]) ? datum[\"symbol\"] : \"\"+datum[\"symbol\"])"
+ "signal": "\"date: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\")) + \"; symbol: \" + (\"\" + datum[\"symbol\"])"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "price"},
diff --git a/examples/compiled/trail_comet.vg.json b/examples/compiled/trail_comet.vg.json
index a003de90f3..6919b9edb7 100644
--- a/examples/compiled/trail_comet.vg.json
+++ b/examples/compiled/trail_comet.vg.json
@@ -81,9 +81,7 @@
"from": {"data": "column_domain"},
"sort": {"field": "datum[\"site\"]", "order": "ascending"},
"title": {
- "text": {
- "signal": "isValid(parent[\"site\"]) ? parent[\"site\"] : \"\"+parent[\"site\"]"
- },
+ "text": {"signal": "\"\" + parent[\"site\"]"},
"style": "guide-label",
"frame": "group",
"offset": 10
@@ -152,10 +150,10 @@
"update": {
"fill": {"scale": "color", "field": "delta"},
"tooltip": {
- "signal": "{\"year\": format(datum[\"year\"], \"\"), \"yield\": isValid(datum[\"yield\"]) ? datum[\"yield\"] : \"\"+datum[\"yield\"]}"
+ "signal": "{\"year\": !isValid(datum[\"year\"]) || !isFinite(+datum[\"year\"]) ? \"\" + datum[\"year\"] : format(datum[\"year\"], \"\"), \"yield\": \"\" + datum[\"yield\"]}"
},
"description": {
- "signal": "\"year: \" + (isValid(datum[\"year\"]) ? datum[\"year\"] : \"\"+datum[\"year\"]) + \"; Variety: \" + (isValid(datum[\"variety\"]) ? datum[\"variety\"] : \"\"+datum[\"variety\"]) + \"; Yield Delta (%): \" + (format(datum[\"delta\"], \"\")) + \"; Barley Yield (bushels/acre): \" + (format(datum[\"yield\"], \"\")) + \"; yield: \" + (isValid(datum[\"yield\"]) ? datum[\"yield\"] : \"\"+datum[\"yield\"])"
+ "signal": "\"year: \" + (\"\" + datum[\"year\"]) + \"; Variety: \" + (\"\" + datum[\"variety\"]) + \"; Yield Delta (%): \" + (!isValid(datum[\"delta\"]) || !isFinite(+datum[\"delta\"]) ? \"\" + datum[\"delta\"] : format(datum[\"delta\"], \"\")) + \"; Barley Yield (bushels/acre): \" + (!isValid(datum[\"yield\"]) || !isFinite(+datum[\"yield\"]) ? \"\" + datum[\"yield\"] : format(datum[\"yield\"], \"\")) + \"; yield: \" + (\"\" + datum[\"yield\"])"
},
"x": {"scale": "x", "field": "year"},
"y": {"scale": "y", "field": "variety"},
diff --git a/examples/compiled/trellis_anscombe.vg.json b/examples/compiled/trellis_anscombe.vg.json
index 9d9d2d8be6..5b0659974d 100644
--- a/examples/compiled/trellis_anscombe.vg.json
+++ b/examples/compiled/trellis_anscombe.vg.json
@@ -63,9 +63,7 @@
"from": {"data": "column_domain"},
"sort": {"field": "datum[\"Series\"]", "order": "ascending"},
"title": {
- "text": {
- "signal": "isValid(parent[\"Series\"]) ? parent[\"Series\"] : \"\"+parent[\"Series\"]"
- },
+ "text": {"signal": "\"\" + parent[\"Series\"]"},
"style": "guide-label",
"frame": "group",
"offset": 10
@@ -118,7 +116,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"X: \" + (format(datum[\"X\"], \"\")) + \"; Y: \" + (format(datum[\"Y\"], \"\"))"
+ "signal": "\"X: \" + (!isValid(datum[\"X\"]) || !isFinite(+datum[\"X\"]) ? \"\" + datum[\"X\"] : format(datum[\"X\"], \"\")) + \"; Y: \" + (!isValid(datum[\"Y\"]) || !isFinite(+datum[\"Y\"]) ? \"\" + datum[\"Y\"] : format(datum[\"Y\"], \"\"))"
},
"x": {"scale": "x", "field": "X"},
"y": {"scale": "y", "field": "Y"},
diff --git a/examples/compiled/trellis_area.vg.json b/examples/compiled/trellis_area.vg.json
index 87b9e4f635..af3493fc23 100644
--- a/examples/compiled/trellis_area.vg.json
+++ b/examples/compiled/trellis_area.vg.json
@@ -64,9 +64,7 @@
"from": {"data": "row_domain"},
"sort": {"field": "datum[\"symbol\"]", "order": "ascending"},
"title": {
- "text": {
- "signal": "isValid(parent[\"symbol\"]) ? parent[\"symbol\"] : \"\"+parent[\"symbol\"]"
- },
+ "text": {"signal": "\"\" + parent[\"symbol\"]"},
"orient": "left",
"style": "guide-label",
"frame": "group",
@@ -146,7 +144,7 @@
"orient": {"value": "vertical"},
"fill": {"scale": "color", "field": "symbol"},
"description": {
- "signal": "\"Time: \" + (timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; Price: \" + (format(datum[\"price\"], \"\")) + \"; symbol: \" + (isValid(datum[\"symbol\"]) ? datum[\"symbol\"] : \"\"+datum[\"symbol\"])"
+ "signal": "\"Time: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%b %d, %Y')) + \"; Price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\")) + \"; symbol: \" + (\"\" + datum[\"symbol\"])"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "price_end"},
diff --git a/examples/compiled/trellis_area_seattle.vg.json b/examples/compiled/trellis_area_seattle.vg.json
index b8f0d14013..ca0357477a 100644
--- a/examples/compiled/trellis_area_seattle.vg.json
+++ b/examples/compiled/trellis_area_seattle.vg.json
@@ -166,7 +166,7 @@
"orient": {"value": "vertical"},
"fill": {"value": "#4c78a8"},
"description": {
- "signal": "\"Month: \" + (timeFormat(datum[\"monthdate_date\"], '%b')) + \"; Mean of temperature: \" + (format(datum[\"mean_temperature\"], \"\"))"
+ "signal": "\"Month: \" + (!isValid(datum[\"monthdate_date\"]) || !isFinite(+datum[\"monthdate_date\"]) ? \"\" + datum[\"monthdate_date\"] : timeFormat(datum[\"monthdate_date\"], '%b')) + \"; Mean of temperature: \" + (!isValid(datum[\"mean_temperature\"]) || !isFinite(+datum[\"mean_temperature\"]) ? \"\" + datum[\"mean_temperature\"] : format(datum[\"mean_temperature\"], \"\"))"
},
"x": {"scale": "x", "field": "monthdate_date"},
"y": {"scale": "y", "field": "mean_temperature"},
diff --git a/examples/compiled/trellis_area_sort_array.vg.json b/examples/compiled/trellis_area_sort_array.vg.json
index 8c16d76389..4c62b78194 100644
--- a/examples/compiled/trellis_area_sort_array.vg.json
+++ b/examples/compiled/trellis_area_sort_array.vg.json
@@ -80,9 +80,7 @@
"order": "ascending"
},
"title": {
- "text": {
- "signal": "isValid(parent[\"symbol\"]) ? parent[\"symbol\"] : \"\"+parent[\"symbol\"]"
- },
+ "text": {"signal": "\"\" + parent[\"symbol\"]"},
"orient": "left",
"style": "guide-label",
"frame": "group",
@@ -175,7 +173,7 @@
"orient": {"value": "vertical"},
"fill": {"scale": "color", "field": "symbol"},
"description": {
- "signal": "\"Time: \" + (timeFormat(datum[\"date\"], '%Y')) + \"; Price: \" + (format(datum[\"price\"], \"\")) + \"; symbol: \" + (isValid(datum[\"symbol\"]) ? datum[\"symbol\"] : \"\"+datum[\"symbol\"])"
+ "signal": "\"Time: \" + (!isValid(datum[\"date\"]) || !isFinite(+datum[\"date\"]) ? \"\" + datum[\"date\"] : timeFormat(datum[\"date\"], '%Y')) + \"; Price: \" + (!isValid(datum[\"price\"]) || !isFinite(+datum[\"price\"]) ? \"\" + datum[\"price\"] : format(datum[\"price\"], \"\")) + \"; symbol: \" + (\"\" + datum[\"symbol\"])"
},
"x": {"scale": "x", "field": "date"},
"y": {"scale": "y", "field": "price_end"},
diff --git a/examples/compiled/trellis_bar.vg.json b/examples/compiled/trellis_bar.vg.json
index a8b3fef14a..b9d1283c58 100644
--- a/examples/compiled/trellis_bar.vg.json
+++ b/examples/compiled/trellis_bar.vg.json
@@ -76,9 +76,7 @@
"from": {"data": "row_domain"},
"sort": {"field": "datum[\"gender\"]", "order": "ascending"},
"title": {
- "text": {
- "signal": "isValid(parent[\"gender\"]) ? parent[\"gender\"] : \"\"+parent[\"gender\"]"
- },
+ "text": {"signal": "\"\" + parent[\"gender\"]"},
"orient": "left",
"style": "guide-label",
"frame": "group",
@@ -140,7 +138,7 @@
"fill": {"scale": "color", "field": "gender"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"age: \" + (isValid(datum[\"age\"]) ? datum[\"age\"] : \"\"+datum[\"age\"]) + \"; population: \" + (format(datum[\"sum_people\"], \"\")) + \"; gender: \" + (isValid(datum[\"gender\"]) ? datum[\"gender\"] : \"\"+datum[\"gender\"])"
+ "signal": "\"age: \" + (\"\" + datum[\"age\"]) + \"; population: \" + (!isValid(datum[\"sum_people\"]) || !isFinite(+datum[\"sum_people\"]) ? \"\" + datum[\"sum_people\"] : format(datum[\"sum_people\"], \"\")) + \"; gender: \" + (\"\" + datum[\"gender\"])"
},
"x": {"scale": "x", "field": "age"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/trellis_bar_histogram.vg.json b/examples/compiled/trellis_bar_histogram.vg.json
index f806696d61..bf07410461 100644
--- a/examples/compiled/trellis_bar_histogram.vg.json
+++ b/examples/compiled/trellis_bar_histogram.vg.json
@@ -74,9 +74,7 @@
"from": {"data": "row_domain"},
"sort": {"field": "datum[\"Origin\"]", "order": "ascending"},
"title": {
- "text": {
- "signal": "isValid(parent[\"Origin\"]) ? parent[\"Origin\"] : \"\"+parent[\"Origin\"]"
- },
+ "text": {"signal": "\"\" + parent[\"Origin\"]"},
"orient": "left",
"style": "guide-label",
"frame": "group",
@@ -138,7 +136,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Horsepower (binned): \" + (!isValid(datum[\"bin_maxbins_15_Horsepower\"]) || !isFinite(+datum[\"bin_maxbins_15_Horsepower\"]) ? \"null\" : format(datum[\"bin_maxbins_15_Horsepower\"], \"\") + \" – \" + format(datum[\"bin_maxbins_15_Horsepower_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"Horsepower (binned): \" + (!isValid(datum[\"bin_maxbins_15_Horsepower\"]) || !isFinite(+datum[\"bin_maxbins_15_Horsepower\"]) ? \"\" + datum[\"bin_maxbins_15_Horsepower\"] : format(datum[\"bin_maxbins_15_Horsepower\"], \"\") + \" – \" + format(datum[\"bin_maxbins_15_Horsepower_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x2": {
"scale": "x",
diff --git a/examples/compiled/trellis_bar_histogram_label_rotated.vg.json b/examples/compiled/trellis_bar_histogram_label_rotated.vg.json
index bcec41df77..ca1440f71d 100644
--- a/examples/compiled/trellis_bar_histogram_label_rotated.vg.json
+++ b/examples/compiled/trellis_bar_histogram_label_rotated.vg.json
@@ -74,9 +74,7 @@
"from": {"data": "row_domain"},
"sort": {"field": "datum[\"Origin\"]", "order": "ascending"},
"title": {
- "text": {
- "signal": "isValid(parent[\"Origin\"]) ? parent[\"Origin\"] : \"\"+parent[\"Origin\"]"
- },
+ "text": {"signal": "\"\" + parent[\"Origin\"]"},
"orient": "left",
"style": "guide-label",
"frame": "group",
@@ -141,7 +139,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Horsepower (binned): \" + (!isValid(datum[\"bin_maxbins_15_Horsepower\"]) || !isFinite(+datum[\"bin_maxbins_15_Horsepower\"]) ? \"null\" : format(datum[\"bin_maxbins_15_Horsepower\"], \"\") + \" – \" + format(datum[\"bin_maxbins_15_Horsepower_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"Horsepower (binned): \" + (!isValid(datum[\"bin_maxbins_15_Horsepower\"]) || !isFinite(+datum[\"bin_maxbins_15_Horsepower\"]) ? \"\" + datum[\"bin_maxbins_15_Horsepower\"] : format(datum[\"bin_maxbins_15_Horsepower\"], \"\") + \" – \" + format(datum[\"bin_maxbins_15_Horsepower_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x2": {
"scale": "x",
diff --git a/examples/compiled/trellis_bar_no_header.vg.json b/examples/compiled/trellis_bar_no_header.vg.json
index 0e859595af..e34c16cad3 100644
--- a/examples/compiled/trellis_bar_no_header.vg.json
+++ b/examples/compiled/trellis_bar_no_header.vg.json
@@ -114,7 +114,7 @@
"fill": {"scale": "color", "field": "gender"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"age: \" + (isValid(datum[\"age\"]) ? datum[\"age\"] : \"\"+datum[\"age\"]) + \"; population: \" + (format(datum[\"sum_people\"], \"\")) + \"; gender: \" + (isValid(datum[\"gender\"]) ? datum[\"gender\"] : \"\"+datum[\"gender\"])"
+ "signal": "\"age: \" + (\"\" + datum[\"age\"]) + \"; population: \" + (!isValid(datum[\"sum_people\"]) || !isFinite(+datum[\"sum_people\"]) ? \"\" + datum[\"sum_people\"] : format(datum[\"sum_people\"], \"\")) + \"; gender: \" + (\"\" + datum[\"gender\"])"
},
"x": {"scale": "x", "field": "age"},
"width": {"signal": "max(0.25, bandwidth('x'))"},
diff --git a/examples/compiled/trellis_barley.vg.json b/examples/compiled/trellis_barley.vg.json
index b7ffc699ed..78357a6447 100644
--- a/examples/compiled/trellis_barley.vg.json
+++ b/examples/compiled/trellis_barley.vg.json
@@ -117,9 +117,7 @@
"name": "trellis_barley_cell",
"type": "group",
"title": {
- "text": {
- "signal": "isValid(parent[\"site\"]) ? parent[\"site\"] : \"\"+parent[\"site\"]"
- },
+ "text": {"signal": "\"\" + parent[\"site\"]"},
"style": "guide-label",
"frame": "group",
"offset": 10
@@ -178,7 +176,7 @@
"stroke": {"scale": "trellis_barley_color", "field": "year"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Median of yield: \" + (format(datum[\"median_yield\"], \"\")) + \"; variety: \" + (isValid(datum[\"variety\"]) ? datum[\"variety\"] : \"\"+datum[\"variety\"]) + \"; year: \" + (isValid(datum[\"year\"]) ? datum[\"year\"] : \"\"+datum[\"year\"])"
+ "signal": "\"Median of yield: \" + (!isValid(datum[\"median_yield\"]) || !isFinite(+datum[\"median_yield\"]) ? \"\" + datum[\"median_yield\"] : format(datum[\"median_yield\"], \"\")) + \"; variety: \" + (\"\" + datum[\"variety\"]) + \"; year: \" + (\"\" + datum[\"year\"])"
},
"x": {"scale": "trellis_barley_x", "field": "median_yield"},
"y": {"scale": "trellis_barley_y", "field": "variety"}
diff --git a/examples/compiled/trellis_barley_independent.vg.json b/examples/compiled/trellis_barley_independent.vg.json
index d52e6df79a..261b6da69c 100644
--- a/examples/compiled/trellis_barley_independent.vg.json
+++ b/examples/compiled/trellis_barley_independent.vg.json
@@ -43,9 +43,7 @@
"name": "trellis_barley_cell",
"type": "group",
"title": {
- "text": {
- "signal": "isValid(parent[\"site\"]) ? parent[\"site\"] : \"\"+parent[\"site\"]"
- },
+ "text": {"signal": "\"\" + parent[\"site\"]"},
"style": "guide-label",
"frame": "group",
"offset": 10
@@ -104,7 +102,7 @@
"stroke": {"scale": "trellis_barley_color", "field": "year"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Median of yield: \" + (format(datum[\"median_yield\"], \"\")) + \"; variety: \" + (isValid(datum[\"variety\"]) ? datum[\"variety\"] : \"\"+datum[\"variety\"]) + \"; year: \" + (isValid(datum[\"year\"]) ? datum[\"year\"] : \"\"+datum[\"year\"])"
+ "signal": "\"Median of yield: \" + (!isValid(datum[\"median_yield\"]) || !isFinite(+datum[\"median_yield\"]) ? \"\" + datum[\"median_yield\"] : format(datum[\"median_yield\"], \"\")) + \"; variety: \" + (\"\" + datum[\"variety\"]) + \"; year: \" + (\"\" + datum[\"year\"])"
},
"x": {"scale": "trellis_barley_x", "field": "median_yield"},
"y": {"scale": "trellis_barley_y", "field": "variety"}
diff --git a/examples/compiled/trellis_barley_layer_median.vg.json b/examples/compiled/trellis_barley_layer_median.vg.json
index 0ad02b1fba..1d40934a4a 100644
--- a/examples/compiled/trellis_barley_layer_median.vg.json
+++ b/examples/compiled/trellis_barley_layer_median.vg.json
@@ -87,9 +87,7 @@
"from": {"data": "trellis_barley_row_domain"},
"sort": {"field": "datum[\"median_yield\"]", "order": "ascending"},
"title": {
- "text": {
- "signal": "isValid(parent[\"site\"]) ? parent[\"site\"] : \"\"+parent[\"site\"]"
- },
+ "text": {"signal": "\"\" + parent[\"site\"]"},
"orient": "left",
"style": "guide-label",
"frame": "group",
@@ -200,7 +198,7 @@
"stroke": {"scale": "trellis_barley_color", "field": "year"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Median of yield: \" + (format(datum[\"median_yield\"], \"\")) + \"; variety: \" + (isValid(datum[\"variety\"]) ? datum[\"variety\"] : \"\"+datum[\"variety\"]) + \"; year: \" + (isValid(datum[\"year\"]) ? datum[\"year\"] : \"\"+datum[\"year\"])"
+ "signal": "\"Median of yield: \" + (!isValid(datum[\"median_yield\"]) || !isFinite(+datum[\"median_yield\"]) ? \"\" + datum[\"median_yield\"] : format(datum[\"median_yield\"], \"\")) + \"; variety: \" + (\"\" + datum[\"variety\"]) + \"; year: \" + (\"\" + datum[\"year\"])"
},
"x": {"scale": "trellis_barley_x", "field": "median_yield"},
"y": {"scale": "trellis_barley_y", "field": "variety"}
@@ -216,7 +214,7 @@
"update": {
"stroke": {"value": "black"},
"description": {
- "signal": "\"Median of yield: \" + (format(datum[\"median_yield\"], \"\"))"
+ "signal": "\"Median of yield: \" + (!isValid(datum[\"median_yield\"]) || !isFinite(+datum[\"median_yield\"]) ? \"\" + datum[\"median_yield\"] : format(datum[\"median_yield\"], \"\"))"
},
"x": {"scale": "trellis_barley_x", "field": "median_yield"},
"y": {"value": 0},
diff --git a/examples/compiled/trellis_column_year.vg.json b/examples/compiled/trellis_column_year.vg.json
index 6a82655cc2..02f5b1677c 100644
--- a/examples/compiled/trellis_column_year.vg.json
+++ b/examples/compiled/trellis_column_year.vg.json
@@ -83,7 +83,7 @@
"sort": {"field": "datum[\"year_date\"]", "order": "ascending"},
"title": {
"text": {
- "signal": "timeFormat(parent[\"year_date\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))"
+ "signal": "!isValid(parent[\"year_date\"]) || !isFinite(+parent[\"year_date\"]) ? \"\" + parent[\"year_date\"] : timeFormat(parent[\"year_date\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))"
},
"style": "guide-label",
"frame": "group",
@@ -158,7 +158,7 @@
"update": {
"stroke": {"scale": "color", "field": "symbol"},
"description": {
- "signal": "\"date (quarter): \" + (timeFormat(datum[\"quarter_date\"], timeUnitSpecifier([\"quarter\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of price: \" + (format(datum[\"mean_price\"], \"\")) + \"; symbol: \" + (isValid(datum[\"symbol\"]) ? datum[\"symbol\"] : \"\"+datum[\"symbol\"])"
+ "signal": "\"date (quarter): \" + (!isValid(datum[\"quarter_date\"]) || !isFinite(+datum[\"quarter_date\"]) ? \"\" + datum[\"quarter_date\"] : timeFormat(datum[\"quarter_date\"], timeUnitSpecifier([\"quarter\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of price: \" + (!isValid(datum[\"mean_price\"]) || !isFinite(+datum[\"mean_price\"]) ? \"\" + datum[\"mean_price\"] : format(datum[\"mean_price\"], \"\")) + \"; symbol: \" + (\"\" + datum[\"symbol\"])"
},
"x": {"scale": "x", "field": "quarter_date"},
"y": {"scale": "y", "field": "mean_price"},
diff --git a/examples/compiled/trellis_cross_sort.vg.json b/examples/compiled/trellis_cross_sort.vg.json
index 8ab89d4082..5b3dd4c86a 100644
--- a/examples/compiled/trellis_cross_sort.vg.json
+++ b/examples/compiled/trellis_cross_sort.vg.json
@@ -157,9 +157,7 @@
"from": {"data": "row_domain"},
"sort": {"field": "datum[\"median_y\"]", "order": "ascending"},
"title": {
- "text": {
- "signal": "isValid(parent[\"b\"]) ? parent[\"b\"] : \"\"+parent[\"b\"]"
- },
+ "text": {"signal": "\"\" + parent[\"b\"]"},
"orient": "left",
"style": "guide-label",
"frame": "group",
@@ -185,9 +183,7 @@
"from": {"data": "column_domain"},
"sort": {"field": "datum[\"median_x\"]", "order": "ascending"},
"title": {
- "text": {
- "signal": "isValid(parent[\"a\"]) ? parent[\"a\"] : \"\"+parent[\"a\"]"
- },
+ "text": {"signal": "\"\" + parent[\"a\"]"},
"style": "guide-label",
"frame": "group",
"offset": 10
@@ -299,7 +295,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"x: \" + (format(datum[\"x\"], \"\")) + \"; y: \" + (format(datum[\"y\"], \"\"))"
+ "signal": "\"x: \" + (!isValid(datum[\"x\"]) || !isFinite(+datum[\"x\"]) ? \"\" + datum[\"x\"] : format(datum[\"x\"], \"\")) + \"; y: \" + (!isValid(datum[\"y\"]) || !isFinite(+datum[\"y\"]) ? \"\" + datum[\"y\"] : format(datum[\"y\"], \"\"))"
},
"x": {"scale": "x", "field": "x"},
"y": {"scale": "y", "field": "y"}
@@ -315,7 +311,7 @@
"update": {
"stroke": {"value": "black"},
"description": {
- "signal": "\"Median of median_x_by_a: \" + (format(datum[\"median_median_x_by_a\"], \"\"))"
+ "signal": "\"Median of median_x_by_a: \" + (!isValid(datum[\"median_median_x_by_a\"]) || !isFinite(+datum[\"median_median_x_by_a\"]) ? \"\" + datum[\"median_median_x_by_a\"] : format(datum[\"median_median_x_by_a\"], \"\"))"
},
"x": {"scale": "x", "field": "median_median_x_by_a"},
"y": {"value": 0},
@@ -332,7 +328,7 @@
"update": {
"stroke": {"value": "black"},
"description": {
- "signal": "\"Median of median_y_by_b: \" + (format(datum[\"median_median_y_by_b\"], \"\"))"
+ "signal": "\"Median of median_y_by_b: \" + (!isValid(datum[\"median_median_y_by_b\"]) || !isFinite(+datum[\"median_median_y_by_b\"]) ? \"\" + datum[\"median_median_y_by_b\"] : format(datum[\"median_median_y_by_b\"], \"\"))"
},
"x": {"field": {"group": "width"}},
"x2": {"value": 0},
diff --git a/examples/compiled/trellis_cross_sort_array.vg.json b/examples/compiled/trellis_cross_sort_array.vg.json
index 0862fbb7fa..a2c913a9e6 100644
--- a/examples/compiled/trellis_cross_sort_array.vg.json
+++ b/examples/compiled/trellis_cross_sort_array.vg.json
@@ -153,9 +153,7 @@
"from": {"data": "row_domain"},
"sort": {"field": "datum[\"row_b_sort_index\"]", "order": "ascending"},
"title": {
- "text": {
- "signal": "isValid(parent[\"b\"]) ? parent[\"b\"] : \"\"+parent[\"b\"]"
- },
+ "text": {"signal": "\"\" + parent[\"b\"]"},
"orient": "left",
"style": "guide-label",
"frame": "group",
@@ -181,9 +179,7 @@
"from": {"data": "column_domain"},
"sort": {"field": "datum[\"column_a_sort_index\"]", "order": "ascending"},
"title": {
- "text": {
- "signal": "isValid(parent[\"a\"]) ? parent[\"a\"] : \"\"+parent[\"a\"]"
- },
+ "text": {"signal": "\"\" + parent[\"a\"]"},
"style": "guide-label",
"frame": "group",
"offset": 10
@@ -298,7 +294,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"x: \" + (format(datum[\"x\"], \"\")) + \"; y: \" + (format(datum[\"y\"], \"\"))"
+ "signal": "\"x: \" + (!isValid(datum[\"x\"]) || !isFinite(+datum[\"x\"]) ? \"\" + datum[\"x\"] : format(datum[\"x\"], \"\")) + \"; y: \" + (!isValid(datum[\"y\"]) || !isFinite(+datum[\"y\"]) ? \"\" + datum[\"y\"] : format(datum[\"y\"], \"\"))"
},
"x": {"scale": "x", "field": "x"},
"y": {"scale": "y", "field": "y"}
@@ -314,7 +310,7 @@
"update": {
"stroke": {"value": "black"},
"description": {
- "signal": "\"Median of median_x_by_a: \" + (format(datum[\"median_median_x_by_a\"], \"\"))"
+ "signal": "\"Median of median_x_by_a: \" + (!isValid(datum[\"median_median_x_by_a\"]) || !isFinite(+datum[\"median_median_x_by_a\"]) ? \"\" + datum[\"median_median_x_by_a\"] : format(datum[\"median_median_x_by_a\"], \"\"))"
},
"x": {"scale": "x", "field": "median_median_x_by_a"},
"y": {"value": 0},
@@ -331,7 +327,7 @@
"update": {
"stroke": {"value": "black"},
"description": {
- "signal": "\"Median of median_y_by_b: \" + (format(datum[\"median_median_y_by_b\"], \"\"))"
+ "signal": "\"Median of median_y_by_b: \" + (!isValid(datum[\"median_median_y_by_b\"]) || !isFinite(+datum[\"median_median_y_by_b\"]) ? \"\" + datum[\"median_median_y_by_b\"] : format(datum[\"median_median_y_by_b\"], \"\"))"
},
"x": {"field": {"group": "width"}},
"x2": {"value": 0},
diff --git a/examples/compiled/trellis_line_quarter.vg.json b/examples/compiled/trellis_line_quarter.vg.json
index ff4c8da8da..9359937307 100644
--- a/examples/compiled/trellis_line_quarter.vg.json
+++ b/examples/compiled/trellis_line_quarter.vg.json
@@ -87,7 +87,7 @@
"sort": {"field": "datum[\"year_date\"]", "order": "ascending"},
"title": {
"text": {
- "signal": "timeFormat(parent[\"year_date\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))"
+ "signal": "!isValid(parent[\"year_date\"]) || !isFinite(+parent[\"year_date\"]) ? \"\" + parent[\"year_date\"] : timeFormat(parent[\"year_date\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))"
},
"style": "guide-label",
"frame": "group",
@@ -146,7 +146,7 @@
"stroke": {"scale": "color", "field": "symbol"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"date (quarter): \" + (timeFormat(datum[\"quarter_date\"], timeUnitSpecifier([\"quarter\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of price: \" + (format(datum[\"mean_price\"], \"\")) + \"; symbol: \" + (isValid(datum[\"symbol\"]) ? datum[\"symbol\"] : \"\"+datum[\"symbol\"])"
+ "signal": "\"date (quarter): \" + (!isValid(datum[\"quarter_date\"]) || !isFinite(+datum[\"quarter_date\"]) ? \"\" + datum[\"quarter_date\"] : timeFormat(datum[\"quarter_date\"], timeUnitSpecifier([\"quarter\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of price: \" + (!isValid(datum[\"mean_price\"]) || !isFinite(+datum[\"mean_price\"]) ? \"\" + datum[\"mean_price\"] : format(datum[\"mean_price\"], \"\")) + \"; symbol: \" + (\"\" + datum[\"symbol\"])"
},
"x": {"scale": "x", "field": "quarter_date"},
"y": {"scale": "y", "field": "mean_price"}
diff --git a/examples/compiled/trellis_row_column.vg.json b/examples/compiled/trellis_row_column.vg.json
index 395389a005..1c254ce72a 100644
--- a/examples/compiled/trellis_row_column.vg.json
+++ b/examples/compiled/trellis_row_column.vg.json
@@ -61,9 +61,7 @@
"from": {"data": "row_domain"},
"sort": {"field": "datum[\"Cylinders\"]", "order": "ascending"},
"title": {
- "text": {
- "signal": "isValid(parent[\"Cylinders\"]) ? parent[\"Cylinders\"] : \"\"+parent[\"Cylinders\"]"
- },
+ "text": {"signal": "\"\" + parent[\"Cylinders\"]"},
"orient": "left",
"style": "guide-label",
"frame": "group",
@@ -89,9 +87,7 @@
"from": {"data": "column_domain"},
"sort": {"field": "datum[\"Origin\"]", "order": "ascending"},
"title": {
- "text": {
- "signal": "isValid(parent[\"Origin\"]) ? parent[\"Origin\"] : \"\"+parent[\"Origin\"]"
- },
+ "text": {"signal": "\"\" + parent[\"Origin\"]"},
"style": "guide-label",
"frame": "group",
"offset": 10
@@ -153,7 +149,7 @@
"stroke": {"scale": "color", "field": "Cylinders"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"])"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\")) + \"; Cylinders: \" + (\"\" + datum[\"Cylinders\"]) + \"; Origin: \" + (\"\" + datum[\"Origin\"])"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"},
diff --git a/examples/compiled/trellis_scatter.vg.json b/examples/compiled/trellis_scatter.vg.json
index 7c22029457..52645e880a 100644
--- a/examples/compiled/trellis_scatter.vg.json
+++ b/examples/compiled/trellis_scatter.vg.json
@@ -93,9 +93,7 @@
"name": "cell",
"type": "group",
"title": {
- "text": {
- "signal": "isValid(parent[\"MPAA Rating\"]) ? parent[\"MPAA Rating\"] : \"\"+parent[\"MPAA Rating\"]"
- },
+ "text": {"signal": "\"\" + parent[\"MPAA Rating\"]"},
"style": "guide-label",
"frame": "group",
"offset": 10
@@ -128,7 +126,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Worldwide Gross: \" + (format(datum[\"Worldwide Gross\"], \"\")) + \"; US DVD Sales: \" + (format(datum[\"US DVD Sales\"], \"\"))"
+ "signal": "\"Worldwide Gross: \" + (!isValid(datum[\"Worldwide Gross\"]) || !isFinite(+datum[\"Worldwide Gross\"]) ? \"\" + datum[\"Worldwide Gross\"] : format(datum[\"Worldwide Gross\"], \"\")) + \"; US DVD Sales: \" + (!isValid(datum[\"US DVD Sales\"]) || !isFinite(+datum[\"US DVD Sales\"]) ? \"\" + datum[\"US DVD Sales\"] : format(datum[\"US DVD Sales\"], \"\"))"
},
"x": {"scale": "x", "field": "Worldwide Gross"},
"y": {"scale": "y", "field": "US DVD Sales"}
diff --git a/examples/compiled/trellis_scatter_binned_row.vg.json b/examples/compiled/trellis_scatter_binned_row.vg.json
index 144e70789d..d95a5c70df 100644
--- a/examples/compiled/trellis_scatter_binned_row.vg.json
+++ b/examples/compiled/trellis_scatter_binned_row.vg.json
@@ -79,7 +79,7 @@
},
"title": {
"text": {
- "signal": "!isValid(parent[\"bin_maxbins_6_Acceleration\"]) || !isFinite(+parent[\"bin_maxbins_6_Acceleration\"]) ? \"null\" : format(parent[\"bin_maxbins_6_Acceleration\"], \"\") + \" – \" + format(parent[\"bin_maxbins_6_Acceleration_end\"], \"\")"
+ "signal": "!isValid(parent[\"bin_maxbins_6_Acceleration\"]) || !isFinite(+parent[\"bin_maxbins_6_Acceleration\"]) ? \"\" + parent[\"bin_maxbins_6_Acceleration\"] : format(parent[\"bin_maxbins_6_Acceleration\"], \"\") + \" – \" + format(parent[\"bin_maxbins_6_Acceleration_end\"], \"\")"
},
"orient": "left",
"style": "guide-label",
@@ -154,7 +154,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Horsepower: \" + (format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\"))"
+ "signal": "\"Horsepower: \" + (!isValid(datum[\"Horsepower\"]) || !isFinite(+datum[\"Horsepower\"]) ? \"\" + datum[\"Horsepower\"] : format(datum[\"Horsepower\"], \"\")) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\"))"
},
"x": {"scale": "x", "field": "Horsepower"},
"y": {"scale": "y", "field": "Miles_per_Gallon"}
diff --git a/examples/compiled/trellis_scatter_small.vg.json b/examples/compiled/trellis_scatter_small.vg.json
index 2b5fffdf06..0d9b929c95 100644
--- a/examples/compiled/trellis_scatter_small.vg.json
+++ b/examples/compiled/trellis_scatter_small.vg.json
@@ -62,9 +62,7 @@
"from": {"data": "column_domain"},
"sort": {"field": "datum[\"MPAA Rating\"]", "order": "ascending"},
"title": {
- "text": {
- "signal": "isValid(parent[\"MPAA Rating\"]) ? parent[\"MPAA Rating\"] : \"\"+parent[\"MPAA Rating\"]"
- },
+ "text": {"signal": "\"\" + parent[\"MPAA Rating\"]"},
"style": "guide-label",
"frame": "group",
"offset": 10
@@ -122,7 +120,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"Worldwide Gross: \" + (format(datum[\"Worldwide Gross\"], \"\")) + \"; US DVD Sales: \" + (format(datum[\"US DVD Sales\"], \"\"))"
+ "signal": "\"Worldwide Gross: \" + (!isValid(datum[\"Worldwide Gross\"]) || !isFinite(+datum[\"Worldwide Gross\"]) ? \"\" + datum[\"Worldwide Gross\"] : format(datum[\"Worldwide Gross\"], \"\")) + \"; US DVD Sales: \" + (!isValid(datum[\"US DVD Sales\"]) || !isFinite(+datum[\"US DVD Sales\"]) ? \"\" + datum[\"US DVD Sales\"] : format(datum[\"US DVD Sales\"], \"\"))"
},
"x": {"scale": "x", "field": "Worldwide Gross"},
"y": {"scale": "y", "field": "US DVD Sales"}
diff --git a/examples/compiled/trellis_selections.vg.json b/examples/compiled/trellis_selections.vg.json
index 07bbe60e26..89b47d506b 100644
--- a/examples/compiled/trellis_selections.vg.json
+++ b/examples/compiled/trellis_selections.vg.json
@@ -101,9 +101,7 @@
"from": {"data": "column_domain"},
"sort": {"field": "datum[\"Series\"]", "order": "ascending"},
"title": {
- "text": {
- "signal": "isValid(parent[\"Series\"]) ? parent[\"Series\"] : \"\"+parent[\"Series\"]"
- },
+ "text": {"signal": "\"\" + parent[\"Series\"]"},
"style": "guide-label",
"frame": "group",
"offset": 10
@@ -492,7 +490,7 @@
],
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"X: \" + (format(datum[\"X\"], \"\")) + \"; Y: \" + (format(datum[\"Y\"], \"\"))"
+ "signal": "\"X: \" + (!isValid(datum[\"X\"]) || !isFinite(+datum[\"X\"]) ? \"\" + datum[\"X\"] : format(datum[\"X\"], \"\")) + \"; Y: \" + (!isValid(datum[\"Y\"]) || !isFinite(+datum[\"Y\"]) ? \"\" + datum[\"Y\"] : format(datum[\"Y\"], \"\"))"
},
"x": {"scale": "x", "field": "X"},
"y": {"scale": "y", "field": "Y"},
diff --git a/examples/compiled/trellis_stacked_bar.vg.json b/examples/compiled/trellis_stacked_bar.vg.json
index 0291364369..573e0a7ee6 100644
--- a/examples/compiled/trellis_stacked_bar.vg.json
+++ b/examples/compiled/trellis_stacked_bar.vg.json
@@ -79,9 +79,7 @@
"from": {"data": "column_domain"},
"sort": {"field": "datum[\"year\"]", "order": "ascending"},
"title": {
- "text": {
- "signal": "isValid(parent[\"year\"]) ? parent[\"year\"] : \"\"+parent[\"year\"]"
- },
+ "text": {"signal": "\"\" + parent[\"year\"]"},
"style": "guide-label",
"frame": "group",
"offset": 10
@@ -133,7 +131,7 @@
"fill": {"scale": "color", "field": "site"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Sum of yield: \" + (format(datum[\"sum_yield\"], \"\")) + \"; variety: \" + (isValid(datum[\"variety\"]) ? datum[\"variety\"] : \"\"+datum[\"variety\"]) + \"; site: \" + (isValid(datum[\"site\"]) ? datum[\"site\"] : \"\"+datum[\"site\"])"
+ "signal": "\"Sum of yield: \" + (!isValid(datum[\"sum_yield\"]) || !isFinite(+datum[\"sum_yield\"]) ? \"\" + datum[\"sum_yield\"] : format(datum[\"sum_yield\"], \"\")) + \"; variety: \" + (\"\" + datum[\"variety\"]) + \"; site: \" + (\"\" + datum[\"site\"])"
},
"x": {"scale": "x", "field": "sum_yield_end"},
"x2": {"scale": "x", "field": "sum_yield_start"},
diff --git a/examples/compiled/vconcat_flatten.vg.json b/examples/compiled/vconcat_flatten.vg.json
index bb1d36a123..2140b39234 100644
--- a/examples/compiled/vconcat_flatten.vg.json
+++ b/examples/compiled/vconcat_flatten.vg.json
@@ -160,7 +160,7 @@
],
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"ra: \" + (format(datum[\"ra\"], \"\")) + \"; dec: \" + (format(datum[\"dec\"], \"\"))"
+ "signal": "\"ra: \" + (!isValid(datum[\"ra\"]) || !isFinite(+datum[\"ra\"]) ? \"\" + datum[\"ra\"] : format(datum[\"ra\"], \"\")) + \"; dec: \" + (!isValid(datum[\"dec\"]) || !isFinite(+datum[\"dec\"]) ? \"\" + datum[\"dec\"] : format(datum[\"dec\"], \"\"))"
},
"x": {"scale": "concat_0_x", "field": "ra"},
"y": {"scale": "concat_0_y", "field": "dec"},
@@ -260,7 +260,7 @@
"update": {
"stroke": {"value": "steelblue"},
"description": {
- "signal": "\"lc.time: \" + (format(datum[\"lc.time\"], \"\")) + \"; lc.mag: \" + (format(datum[\"lc.mag\"], \"\")) + \"; id: \" + (isValid(datum[\"id\"]) ? datum[\"id\"] : \"\"+datum[\"id\"])"
+ "signal": "\"lc.time: \" + (!isValid(datum[\"lc.time\"]) || !isFinite(+datum[\"lc.time\"]) ? \"\" + datum[\"lc.time\"] : format(datum[\"lc.time\"], \"\")) + \"; lc.mag: \" + (!isValid(datum[\"lc.mag\"]) || !isFinite(+datum[\"lc.mag\"]) ? \"\" + datum[\"lc.mag\"] : format(datum[\"lc.mag\"], \"\")) + \"; id: \" + (\"\" + datum[\"id\"])"
},
"x": {"scale": "concat_1_x", "field": "lc\\.time"},
"y": {"scale": "concat_1_y", "field": "lc\\.mag"},
diff --git a/examples/compiled/vconcat_weather.vg.json b/examples/compiled/vconcat_weather.vg.json
index 1e5829bd9d..ee6df5a6c7 100644
--- a/examples/compiled/vconcat_weather.vg.json
+++ b/examples/compiled/vconcat_weather.vg.json
@@ -114,7 +114,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"date (month): \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of precipitation: \" + (format(datum[\"mean_precipitation\"], \"\"))"
+ "signal": "\"date (month): \" + (!isValid(datum[\"month_date\"]) || !isFinite(+datum[\"month_date\"]) ? \"\" + datum[\"month_date\"] : timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of precipitation: \" + (!isValid(datum[\"mean_precipitation\"]) || !isFinite(+datum[\"mean_precipitation\"]) ? \"\" + datum[\"mean_precipitation\"] : format(datum[\"mean_precipitation\"], \"\"))"
},
"x": {"scale": "concat_0_x", "field": "month_date"},
"width": {"signal": "max(0.25, bandwidth('concat_0_x'))"},
@@ -187,7 +187,7 @@
"stroke": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"temp_min (binned): \" + (!isValid(datum[\"bin_maxbins_10_temp_min\"]) || !isFinite(+datum[\"bin_maxbins_10_temp_min\"]) ? \"null\" : format(datum[\"bin_maxbins_10_temp_min\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_temp_min_end\"], \"\")) + \"; temp_max (binned): \" + (!isValid(datum[\"bin_maxbins_10_temp_max\"]) || !isFinite(+datum[\"bin_maxbins_10_temp_max\"]) ? \"null\" : format(datum[\"bin_maxbins_10_temp_max\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_temp_max_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))"
+ "signal": "\"temp_min (binned): \" + (!isValid(datum[\"bin_maxbins_10_temp_min\"]) || !isFinite(+datum[\"bin_maxbins_10_temp_min\"]) ? \"\" + datum[\"bin_maxbins_10_temp_min\"] : format(datum[\"bin_maxbins_10_temp_min\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_temp_min_end\"], \"\")) + \"; temp_max (binned): \" + (!isValid(datum[\"bin_maxbins_10_temp_max\"]) || !isFinite(+datum[\"bin_maxbins_10_temp_max\"]) ? \"\" + datum[\"bin_maxbins_10_temp_max\"] : format(datum[\"bin_maxbins_10_temp_max\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_temp_max_end\"], \"\")) + \"; Count of Records: \" + (!isValid(datum[\"__count\"]) || !isFinite(+datum[\"__count\"]) ? \"\" + datum[\"__count\"] : format(datum[\"__count\"], \"\"))"
},
"x": {
"signal": "scale(\"concat_1_x\", 0.5 * datum[\"bin_maxbins_10_temp_min\"] + 0.5 * datum[\"bin_maxbins_10_temp_min_end\"])"
diff --git a/examples/compiled/waterfall_chart.vg.json b/examples/compiled/waterfall_chart.vg.json
index aac82a94bd..e5d07bcb5c 100644
--- a/examples/compiled/waterfall_chart.vg.json
+++ b/examples/compiled/waterfall_chart.vg.json
@@ -121,7 +121,7 @@
],
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"label: \" + (isValid(datum[\"label\"]) ? datum[\"label\"] : \"\"+datum[\"label\"]) + \"; Amount: \" + (format(datum[\"previous_sum\"], \"\")) + \"; sum: \" + (format(datum[\"sum\"], \"\"))"
+ "signal": "\"label: \" + (\"\" + datum[\"label\"]) + \"; Amount: \" + (!isValid(datum[\"previous_sum\"]) || !isFinite(+datum[\"previous_sum\"]) ? \"\" + datum[\"previous_sum\"] : format(datum[\"previous_sum\"], \"\")) + \"; sum: \" + (!isValid(datum[\"sum\"]) || !isFinite(+datum[\"sum\"]) ? \"\" + datum[\"sum\"] : format(datum[\"sum\"], \"\"))"
},
"xc": {"scale": "x", "field": "label", "band": 0.5},
"width": {"value": 45},
@@ -141,7 +141,7 @@
"strokeWidth": {"value": 2},
"stroke": {"value": "#404040"},
"description": {
- "signal": "\"label: \" + (isValid(datum[\"label\"]) ? datum[\"label\"] : \"\"+datum[\"label\"]) + \"; sum: \" + (format(datum[\"sum\"], \"\")) + \"; lead: \" + (isValid(datum[\"lead\"]) ? datum[\"lead\"] : \"\"+datum[\"lead\"])"
+ "signal": "\"label: \" + (\"\" + datum[\"label\"]) + \"; sum: \" + (!isValid(datum[\"sum\"]) || !isFinite(+datum[\"sum\"]) ? \"\" + datum[\"sum\"] : format(datum[\"sum\"], \"\")) + \"; lead: \" + (\"\" + datum[\"lead\"])"
},
"x": {"scale": "x", "field": "label", "offset": -22.5, "band": 0.5},
"x2": {"scale": "x", "field": "lead", "offset": 22.5, "band": 0.5},
@@ -160,13 +160,11 @@
"dy": {"signal": "datum.amount >= 0 ? -4 : 4"},
"fill": {"value": "#404040"},
"description": {
- "signal": "\"label: \" + (isValid(datum[\"label\"]) ? datum[\"label\"] : \"\"+datum[\"label\"]) + \"; sum: \" + (format(datum[\"sum\"], \"\"))"
+ "signal": "\"label: \" + (\"\" + datum[\"label\"]) + \"; sum: \" + (!isValid(datum[\"sum\"]) || !isFinite(+datum[\"sum\"]) ? \"\" + datum[\"sum\"] : format(datum[\"sum\"], \"\"))"
},
"x": {"scale": "x", "field": "label", "band": 0.5},
"y": {"scale": "y", "field": "sum"},
- "text": {
- "signal": "isValid(datum[\"sum\"]) ? datum[\"sum\"] : \"\"+datum[\"sum\"]"
- },
+ "text": {"signal": "\"\" + datum[\"sum\"]"},
"align": {"value": "center"}
}
}
@@ -188,13 +186,11 @@
{"value": "white"}
],
"description": {
- "signal": "\"label: \" + (isValid(datum[\"label\"]) ? datum[\"label\"] : \"\"+datum[\"label\"]) + \"; center: \" + (format(datum[\"center\"], \"\")) + \"; text_amount: \" + (isValid(datum[\"text_amount\"]) ? datum[\"text_amount\"] : \"\"+datum[\"text_amount\"])"
+ "signal": "\"label: \" + (\"\" + datum[\"label\"]) + \"; center: \" + (!isValid(datum[\"center\"]) || !isFinite(+datum[\"center\"]) ? \"\" + datum[\"center\"] : format(datum[\"center\"], \"\")) + \"; text_amount: \" + (\"\" + datum[\"text_amount\"])"
},
"x": {"scale": "x", "field": "label", "band": 0.5},
"y": {"scale": "y", "field": "center"},
- "text": {
- "signal": "isValid(datum[\"text_amount\"]) ? datum[\"text_amount\"] : \"\"+datum[\"text_amount\"]"
- },
+ "text": {"signal": "\"\" + datum[\"text_amount\"]"},
"align": {"value": "center"}
}
}
diff --git a/examples/compiled/wheat_wages.vg.json b/examples/compiled/wheat_wages.vg.json
index 37ef7419ae..3055481dc3 100644
--- a/examples/compiled/wheat_wages.vg.json
+++ b/examples/compiled/wheat_wages.vg.json
@@ -128,7 +128,7 @@
"stroke": {"value": "#999"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"year: \" + (!isValid(datum[\"year\"]) || !isFinite(+datum[\"year\"]) ? \"null\" : format(datum[\"year\"], \"d\") + \" – \" + format(datum[\"year_end\"], \"d\")) + \"; wheat: \" + (format(datum[\"wheat\"], \"\"))"
+ "signal": "\"year: \" + (!isValid(datum[\"year\"]) || !isFinite(+datum[\"year\"]) ? \"\" + datum[\"year\"] : format(datum[\"year\"], \"d\") + \" – \" + format(datum[\"year_end\"], \"d\")) + \"; wheat: \" + (!isValid(datum[\"wheat\"]) || !isFinite(+datum[\"wheat\"]) ? \"\" + datum[\"wheat\"] : format(datum[\"wheat\"], \"\"))"
},
"x2": {
"scale": "x",
@@ -160,7 +160,7 @@
"stroke": {"value": "#000"},
"strokeWidth": {"value": 0.6},
"description": {
- "signal": "\"year: \" + (format(datum[\"year\"], \"d\"))"
+ "signal": "\"year: \" + (!isValid(datum[\"year\"]) || !isFinite(+datum[\"year\"]) ? \"\" + datum[\"year\"] : format(datum[\"year\"], \"d\"))"
},
"x": {"scale": "x", "field": "year"},
"y": {"value": 0},
@@ -180,7 +180,7 @@
"orient": {"value": "vertical"},
"fill": {"value": "#a4cedb"},
"description": {
- "signal": "\"year: \" + (format(datum[\"year\"], \"d\")) + \"; wages: \" + (format(datum[\"wages\"], \"\"))"
+ "signal": "\"year: \" + (!isValid(datum[\"year\"]) || !isFinite(+datum[\"year\"]) ? \"\" + datum[\"year\"] : format(datum[\"year\"], \"d\")) + \"; wages: \" + (!isValid(datum[\"wages\"]) || !isFinite(+datum[\"wages\"]) ? \"\" + datum[\"wages\"] : format(datum[\"wages\"], \"\"))"
},
"x": {"scale": "x", "field": "year"},
"y": {"scale": "y", "field": "wages_end"},
@@ -202,7 +202,7 @@
"opacity": {"value": 0.7},
"stroke": {"value": "#000"},
"description": {
- "signal": "\"year: \" + (format(datum[\"year\"], \"d\")) + \"; wages: \" + (format(datum[\"wages\"], \"\"))"
+ "signal": "\"year: \" + (!isValid(datum[\"year\"]) || !isFinite(+datum[\"year\"]) ? \"\" + datum[\"year\"] : format(datum[\"year\"], \"d\")) + \"; wages: \" + (!isValid(datum[\"wages\"]) || !isFinite(+datum[\"wages\"]) ? \"\" + datum[\"wages\"] : format(datum[\"wages\"], \"\"))"
},
"x": {"scale": "x", "field": "year"},
"y": {"scale": "y", "field": "wages"},
@@ -222,7 +222,7 @@
"update": {
"stroke": {"value": "#EE8182"},
"description": {
- "signal": "\"year: \" + (format(datum[\"year\"], \"d\")) + \"; wages: \" + (format(datum[\"wages\"], \"\"))"
+ "signal": "\"year: \" + (!isValid(datum[\"year\"]) || !isFinite(+datum[\"year\"]) ? \"\" + datum[\"year\"] : format(datum[\"year\"], \"d\")) + \"; wages: \" + (!isValid(datum[\"wages\"]) || !isFinite(+datum[\"wages\"]) ? \"\" + datum[\"wages\"] : format(datum[\"wages\"], \"\"))"
},
"x": {"scale": "x", "field": "year"},
"y": {"scale": "y", "field": "wages", "offset": -2},
@@ -242,7 +242,7 @@
"stroke": {"value": "#000"},
"fill": {"scale": "fill", "field": "commonwealth"},
"description": {
- "signal": "\"start: \" + (format(datum[\"start\"], \"d\")) + \"; y: \" + (format(datum[\"y\"], \"\")) + \"; end: \" + (format(datum[\"end\"], \"\")) + \"; offset: \" + (format(datum[\"offset\"], \"\")) + \"; commonwealth: \" + (isValid(datum[\"commonwealth\"]) ? datum[\"commonwealth\"] : \"\"+datum[\"commonwealth\"])"
+ "signal": "\"start: \" + (!isValid(datum[\"start\"]) || !isFinite(+datum[\"start\"]) ? \"\" + datum[\"start\"] : format(datum[\"start\"], \"d\")) + \"; y: \" + (!isValid(datum[\"y\"]) || !isFinite(+datum[\"y\"]) ? \"\" + datum[\"y\"] : format(datum[\"y\"], \"\")) + \"; end: \" + (!isValid(datum[\"end\"]) || !isFinite(+datum[\"end\"]) ? \"\" + datum[\"end\"] : format(datum[\"end\"], \"\")) + \"; offset: \" + (!isValid(datum[\"offset\"]) || !isFinite(+datum[\"offset\"]) ? \"\" + datum[\"offset\"] : format(datum[\"offset\"], \"\")) + \"; commonwealth: \" + (\"\" + datum[\"commonwealth\"])"
},
"x": {"scale": "x", "field": "start"},
"x2": {"scale": "x", "field": "end"},
@@ -263,13 +263,11 @@
"fontStyle": {"value": "italic"},
"fill": {"value": "black"},
"description": {
- "signal": "\"x: \" + (format(datum[\"x\"], \"d\")) + \"; off2: \" + (format(datum[\"off2\"], \"\")) + \"; name: \" + (isValid(datum[\"name\"]) ? datum[\"name\"] : \"\"+datum[\"name\"])"
+ "signal": "\"x: \" + (!isValid(datum[\"x\"]) || !isFinite(+datum[\"x\"]) ? \"\" + datum[\"x\"] : format(datum[\"x\"], \"d\")) + \"; off2: \" + (!isValid(datum[\"off2\"]) || !isFinite(+datum[\"off2\"]) ? \"\" + datum[\"off2\"] : format(datum[\"off2\"], \"\")) + \"; name: \" + (\"\" + datum[\"name\"])"
},
"x": {"scale": "x", "field": "x"},
"y": {"scale": "y", "field": "off2", "offset": 16},
- "text": {
- "signal": "isValid(datum[\"name\"]) ? datum[\"name\"] : \"\"+datum[\"name\"]"
- },
+ "text": {"signal": "\"\" + datum[\"name\"]"},
"align": {"value": "center"}
}
}
diff --git a/examples/compiled/window_cumulative_running_average.vg.json b/examples/compiled/window_cumulative_running_average.vg.json
index 62da2036e4..711f1c7a67 100644
--- a/examples/compiled/window_cumulative_running_average.vg.json
+++ b/examples/compiled/window_cumulative_running_average.vg.json
@@ -60,7 +60,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "circle"},
"description": {
- "signal": "\"Year (year): \" + (timeFormat(datum[\"year_Year\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Miles_per_Gallon: \" + (format(datum[\"Miles_per_Gallon\"], \"\"))"
+ "signal": "\"Year (year): \" + (!isValid(datum[\"year_Year\"]) || !isFinite(+datum[\"year_Year\"]) ? \"\" + datum[\"year_Year\"] : timeFormat(datum[\"year_Year\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Miles_per_Gallon: \" + (!isValid(datum[\"Miles_per_Gallon\"]) || !isFinite(+datum[\"Miles_per_Gallon\"]) ? \"\" + datum[\"Miles_per_Gallon\"] : format(datum[\"Miles_per_Gallon\"], \"\"))"
},
"x": {"scale": "x", "field": "year_Year"},
"y": {"scale": "y", "field": "Miles_per_Gallon"},
@@ -78,7 +78,7 @@
"update": {
"stroke": {"value": "red"},
"description": {
- "signal": "\"Year (year): \" + (timeFormat(datum[\"year_Year\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Miles Per Gallon: \" + (format(datum[\"Average_MPG\"], \"\"))"
+ "signal": "\"Year (year): \" + (!isValid(datum[\"year_Year\"]) || !isFinite(+datum[\"year_Year\"]) ? \"\" + datum[\"year_Year\"] : timeFormat(datum[\"year_Year\"], timeUnitSpecifier([\"year\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Miles Per Gallon: \" + (!isValid(datum[\"Average_MPG\"]) || !isFinite(+datum[\"Average_MPG\"]) ? \"\" + datum[\"Average_MPG\"] : format(datum[\"Average_MPG\"], \"\"))"
},
"x": {"scale": "x", "field": "year_Year"},
"y": {"scale": "y", "field": "Average_MPG"},
diff --git a/examples/compiled/window_impute_null.vg.json b/examples/compiled/window_impute_null.vg.json
index 922f6c5453..31f5fc2036 100644
--- a/examples/compiled/window_impute_null.vg.json
+++ b/examples/compiled/window_impute_null.vg.json
@@ -68,7 +68,7 @@
"update": {
"stroke": {"value": "#4c78a8"},
"description": {
- "signal": "\"a (year-month-date): \" + (timeFormat(datum[\"yearmonthdate_a\"], '%d %b')) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a (year-month-date): \" + (!isValid(datum[\"yearmonthdate_a\"]) || !isFinite(+datum[\"yearmonthdate_a\"]) ? \"\" + datum[\"yearmonthdate_a\"] : timeFormat(datum[\"yearmonthdate_a\"], '%d %b')) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "x", "field": "yearmonthdate_a"},
"y": {"scale": "y", "field": "b"},
@@ -89,7 +89,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "point"},
"description": {
- "signal": "\"a (year-month-date): \" + (timeFormat(datum[\"yearmonthdate_a\"], '%d %b')) + \"; b: \" + (format(datum[\"b\"], \"\"))"
+ "signal": "\"a (year-month-date): \" + (!isValid(datum[\"yearmonthdate_a\"]) || !isFinite(+datum[\"yearmonthdate_a\"]) ? \"\" + datum[\"yearmonthdate_a\"] : timeFormat(datum[\"yearmonthdate_a\"], '%d %b')) + \"; b: \" + (!isValid(datum[\"b\"]) || !isFinite(+datum[\"b\"]) ? \"\" + datum[\"b\"] : format(datum[\"b\"], \"\"))"
},
"x": {"scale": "x", "field": "yearmonthdate_a"},
"y": {"scale": "y", "field": "b"}
diff --git a/examples/compiled/window_rank.vg.json b/examples/compiled/window_rank.vg.json
index 8da4d67e18..6d1ab644c3 100644
--- a/examples/compiled/window_rank.vg.json
+++ b/examples/compiled/window_rank.vg.json
@@ -81,7 +81,7 @@
"update": {
"stroke": {"scale": "color", "field": "team"},
"description": {
- "signal": "\"matchday: \" + (isValid(datum[\"matchday\"]) ? datum[\"matchday\"] : \"\"+datum[\"matchday\"]) + \"; rank: \" + (isValid(datum[\"rank\"]) ? datum[\"rank\"] : \"\"+datum[\"rank\"]) + \"; team: \" + (isValid(datum[\"team\"]) ? datum[\"team\"] : \"\"+datum[\"team\"])"
+ "signal": "\"matchday: \" + (\"\" + datum[\"matchday\"]) + \"; rank: \" + (\"\" + datum[\"rank\"]) + \"; team: \" + (\"\" + datum[\"team\"])"
},
"x": {"scale": "x", "field": "matchday"},
"y": {"scale": "y", "field": "rank"}
diff --git a/examples/compiled/window_top_k.vg.json b/examples/compiled/window_top_k.vg.json
index 23aec6d38c..ca98b0979a 100644
--- a/examples/compiled/window_top_k.vg.json
+++ b/examples/compiled/window_top_k.vg.json
@@ -85,7 +85,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"score: \" + (format(datum[\"score\"], \"\")) + \"; student: \" + (isValid(datum[\"student\"]) ? datum[\"student\"] : \"\"+datum[\"student\"])"
+ "signal": "\"score: \" + (!isValid(datum[\"score\"]) || !isFinite(+datum[\"score\"]) ? \"\" + datum[\"score\"] : format(datum[\"score\"], \"\")) + \"; student: \" + (\"\" + datum[\"student\"])"
},
"x": {"scale": "x", "field": "score_end"},
"x2": {"scale": "x", "field": "score_start"},
diff --git a/examples/compiled/window_top_k_others.vg.json b/examples/compiled/window_top_k_others.vg.json
index 106ca55477..b146ea229e 100644
--- a/examples/compiled/window_top_k_others.vg.json
+++ b/examples/compiled/window_top_k_others.vg.json
@@ -73,7 +73,7 @@
"fill": {"value": "#4c78a8"},
"ariaRoleDescription": {"value": "bar"},
"description": {
- "signal": "\"Mean of aggregate_gross: \" + (format(datum[\"mean_aggregate_gross\"], \"\")) + \"; ranked_director: \" + (isValid(datum[\"ranked_director\"]) ? datum[\"ranked_director\"] : \"\"+datum[\"ranked_director\"])"
+ "signal": "\"Mean of aggregate_gross: \" + (!isValid(datum[\"mean_aggregate_gross\"]) || !isFinite(+datum[\"mean_aggregate_gross\"]) ? \"\" + datum[\"mean_aggregate_gross\"] : format(datum[\"mean_aggregate_gross\"], \"\")) + \"; ranked_director: \" + (\"\" + datum[\"ranked_director\"])"
},
"x": {"scale": "x", "field": "mean_aggregate_gross"},
"x2": {"scale": "x", "value": 0},
diff --git a/examples/specs/normalized/point_label_null_date_normalized.vl.json b/examples/specs/normalized/point_label_null_date_normalized.vl.json
new file mode 100644
index 0000000000..e99829bb3d
--- /dev/null
+++ b/examples/specs/normalized/point_label_null_date_normalized.vl.json
@@ -0,0 +1,45 @@
+{
+ "$schema": "https://vega.github.io/schema/vega-lite/v5.json",
+ "data": {
+ "values": [
+ {"a": "Jan 1, 2000", "b": 28},
+ {"a": "Jan 2, 2000", "b": 55},
+ {"a": "Jan 3, 2000", "b": null},
+ {"a": "Jan 4, 2000", "b": 65},
+ {"a": "Jan 5, 2000", "b": 43},
+ {"a": null, "b": 50}
+ ]
+ },
+ "layer": [
+ {
+ "mark": {"type": "point", "invalid": "show", "tooltip": true},
+ "encoding": {
+ "x": {
+ "timeUnit": "yearmonthdate",
+ "field": "a",
+ "type": "temporal",
+ "axis": {"format": "%d %b"}
+ },
+ "y": {"field": "b", "type": "quantitative"}
+ }
+ },
+ {
+ "mark": {"type": "text", "invalid": "show", "baseline": "bottom"},
+ "encoding": {
+ "x": {
+ "timeUnit": "yearmonthdate",
+ "field": "a",
+ "type": "temporal",
+ "axis": {"format": "%d %b"}
+ },
+ "y": {"field": "b", "type": "quantitative"},
+ "text": {
+ "timeUnit": "yearmonthdate",
+ "field": "a",
+ "type": "temporal",
+ "axis": {"format": "%d %b"}
+ }
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/specs/normalized/point_label_null_normalized.vl.json b/examples/specs/normalized/point_label_null_normalized.vl.json
new file mode 100644
index 0000000000..4bccb7e0bd
--- /dev/null
+++ b/examples/specs/normalized/point_label_null_normalized.vl.json
@@ -0,0 +1,40 @@
+{
+ "$schema": "https://vega.github.io/schema/vega-lite/v5.json",
+ "data": {
+ "values": [
+ {"a": "Jan 1, 2000", "b": 28},
+ {"a": "Jan 2, 2000", "b": 55},
+ {"a": "Jan 3, 2000", "b": null},
+ {"a": "Jan 4, 2000", "b": 65},
+ {"a": "Jan 5, 2000", "b": 43},
+ {"a": null, "b": 50}
+ ]
+ },
+ "layer": [
+ {
+ "mark": {"type": "point", "invalid": "show"},
+ "encoding": {
+ "x": {
+ "timeUnit": "yearmonthdate",
+ "field": "a",
+ "type": "temporal",
+ "axis": {"format": "%d %b"}
+ },
+ "y": {"field": "b", "type": "quantitative"}
+ }
+ },
+ {
+ "mark": {"type": "text", "invalid": "show", "baseline": "bottom"},
+ "encoding": {
+ "x": {
+ "timeUnit": "yearmonthdate",
+ "field": "a",
+ "type": "temporal",
+ "axis": {"format": "%d %b"}
+ },
+ "y": {"field": "b", "type": "quantitative"},
+ "text": {"field": "b", "type": "quantitative"}
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/specs/point_label_null.vl.json b/examples/specs/point_label_null.vl.json
new file mode 100644
index 0000000000..162cd7e33e
--- /dev/null
+++ b/examples/specs/point_label_null.vl.json
@@ -0,0 +1,26 @@
+{
+ "$schema": "https://vega.github.io/schema/vega-lite/v5.json",
+ "data": {
+ "values": [
+ {"a": "Jan 1, 2000", "b": 28},
+ {"a": "Jan 2, 2000", "b": 55},
+ {"a": "Jan 3, 2000", "b": null},
+ {"a": "Jan 4, 2000", "b": 65},
+ {"a": "Jan 5, 2000", "b": 43},
+ {"a": null, "b": 50}
+ ]
+ },
+
+ "encoding": {
+ "x": {"timeUnit": "yearmonthdate", "field": "a", "type": "temporal", "axis": {"format": "%d %b"}},
+ "y": {"field": "b", "type": "quantitative"}
+ },
+ "layer": [{
+ "mark": {"type": "point", "invalid": "show"}
+ }, {
+ "mark": {"type": "text", "invalid": "show", "baseline": "bottom"},
+ "encoding": {
+ "text": {"field": "b", "type": "quantitative"}
+ }
+ }]
+}
diff --git a/examples/specs/point_label_null_date.vl.json b/examples/specs/point_label_null_date.vl.json
new file mode 100644
index 0000000000..ed7219ad51
--- /dev/null
+++ b/examples/specs/point_label_null_date.vl.json
@@ -0,0 +1,29 @@
+{
+ "$schema": "https://vega.github.io/schema/vega-lite/v5.json",
+ "data": {
+ "values": [
+ {"a": "Jan 1, 2000", "b": 28},
+ {"a": "Jan 2, 2000", "b": 55},
+ {"a": "Jan 3, 2000", "b": null},
+ {"a": "Jan 4, 2000", "b": 65},
+ {"a": "Jan 5, 2000", "b": 43},
+ {"a": null, "b": 50}
+ ]
+ },
+
+ "encoding": {
+ "x": {"timeUnit": "yearmonthdate", "field": "a", "type": "temporal", "axis": {"format": "%d %b"}},
+ "y": {"field": "b", "type": "quantitative"}
+ },
+ "layer": [{
+ "mark": {"type": "point", "invalid": "show", "tooltip": true},
+ "encoding": {
+ "x": {"timeUnit": "yearmonthdate", "field": "a", "type": "temporal"}
+ }
+ }, {
+ "mark": {"type": "text", "invalid": "show", "baseline": "bottom"},
+ "encoding": {
+ "text": {"timeUnit": "yearmonthdate", "field": "a", "type": "temporal", "axis": {"format": "%d %b"}}
+ }
+ }]
+}
diff --git a/site/docs/invaliddata.md b/site/docs/invaliddata.md
index 378e15faae..57fa233b4d 100644
--- a/site/docs/invaliddata.md
+++ b/site/docs/invaliddata.md
@@ -5,7 +5,7 @@ title: Modes for Handling Invalid Data
permalink: /docs/invalid-data.html
---
-This page discusses modes in Vega-Lite for handling invalid data (`null` and `NaN` in continuous scales).
+This page discusses modes in Vega-Lite for handling invalid data (`null` and `NaN` in continuous scales _without_ defined output for invalid values in `config.scale.invalid`).
The main configurations are [`mark.invalid`](#mark) and [`config.scale.invalid`](#scale). In addition, you can use [other Vega-Lite features including conditional encodings, layering, or window transform to handle invalid and missing data](#other).
diff --git a/src/channeldef.ts b/src/channeldef.ts
index 0b8b96f0eb..fd90a38ea7 100644
--- a/src/channeldef.ts
+++ b/src/channeldef.ts
@@ -398,7 +398,7 @@ export interface DatumDef<
// `F extends RepeatRef` probably should be `RepeatRef extends F` but there is likely a bug in TS.
}
-export interface FormatMixins {
+export interface FormatMixins {
/**
* When used with the default `"number"` and `"time"` format type, the text formatting pattern for labels of guides (axes, legends, headers) and text marks.
*
@@ -420,7 +420,7 @@ export interface FormatMixins {
* - `"time"` for temporal fields and ordinal and nominal fields with `timeUnit`.
* - `"number"` for quantitative fields as well as ordinal and nominal fields without `timeUnit`.
*/
- formatType?: 'number' | 'time' | string;
+ formatType?: FT;
}
export type StringDatumDef = DatumDef & FormatMixins;
@@ -974,7 +974,7 @@ export function defaultTitle(fieldDef: FieldDefBase, config: Config) {
return titleFormatter(fieldDef, config);
}
-export function getFormatMixins(fieldDef: TypedFieldDef | DatumDef) {
+export function getFormatMixins(fieldDef: TypedFieldDef | DatumDef): FormatMixins {
if (isStringFieldOrDatumDef(fieldDef)) {
const {format, formatType} = fieldDef;
return {format, formatType};
diff --git a/src/compile/axis/encode.ts b/src/compile/axis/encode.ts
index 4a42815813..59db638fc7 100644
--- a/src/compile/axis/encode.ts
+++ b/src/compile/axis/encode.ts
@@ -16,8 +16,7 @@ export function labels(model: UnitModel, channel: PositionScaleChannel, specifie
text: formatCustomType({
fieldOrDatumDef,
field: 'datum.value',
- format,
- formatType,
+ formatMixins: {format, formatType},
config
}),
...specifiedLabelsSpec
@@ -33,8 +32,10 @@ export function labels(model: UnitModel, channel: PositionScaleChannel, specifie
text: formatCustomType({
fieldOrDatumDef,
field: 'datum.value',
- format: config.normalizedNumberFormat,
- formatType: config.normalizedNumberFormatType,
+ formatMixins: {
+ format: config.normalizedNumberFormat,
+ formatType: config.normalizedNumberFormatType
+ },
config
}),
...specifiedLabelsSpec
@@ -44,8 +45,10 @@ export function labels(model: UnitModel, channel: PositionScaleChannel, specifie
text: formatCustomType({
fieldOrDatumDef,
field: 'datum.value',
- format: config.numberFormat,
- formatType: config.numberFormatType,
+ formatMixins: {
+ format: config.numberFormat,
+ formatType: config.numberFormatType
+ },
config
}),
...specifiedLabelsSpec
@@ -62,8 +65,10 @@ export function labels(model: UnitModel, channel: PositionScaleChannel, specifie
text: formatCustomType({
fieldOrDatumDef,
field: 'datum.value',
- format: config.timeFormat,
- formatType: config.timeFormatType,
+ formatMixins: {
+ format: config.timeFormat,
+ formatType: config.timeFormatType
+ },
config
}),
...specifiedLabelsSpec
diff --git a/src/compile/data/bin.ts b/src/compile/data/bin.ts
index 1c43602e77..74eaa7f3fc 100644
--- a/src/compile/data/bin.ts
+++ b/src/compile/data/bin.ts
@@ -25,7 +25,7 @@ function rangeFormula(model: ModelWithField, fieldDef: TypedFieldDef, ch
return {
formulaAs: vgField(fieldDef, {binSuffix: 'range', forAs: true}),
- formula: binFormatExpression(startField, endField, guide.format, guide.formatType, config)
+ formula: binFormatExpression(startField, endField, guide, config)
};
}
return {};
diff --git a/src/compile/format.ts b/src/compile/format.ts
index be42af2cdb..37787a52a2 100644
--- a/src/compile/format.ts
+++ b/src/compile/format.ts
@@ -5,6 +5,7 @@ import {
channelDefType,
DatumDef,
FieldDef,
+ FormatMixins,
isFieldDef,
isFieldOrDatumDefForTimeFormat,
isPositionFieldOrDatumDef,
@@ -21,7 +22,9 @@ import {isSignalRef} from '../vega.schema';
import {TimeUnit} from './../timeunit';
import {datumDefToExpr} from './mark/encode/valueref';
-export function isCustomFormatType(formatType: string) {
+export type CustomFormatType = Exclude;
+
+export function isCustomFormatType(formatType: string): formatType is CustomFormatType {
return formatType && formatType !== 'number' && formatType !== 'time';
}
@@ -33,24 +36,23 @@ export const BIN_RANGE_DELIMITER = ' \u2013 ';
export function formatSignalRef({
fieldOrDatumDef,
- format,
- formatType,
+ formatMixins,
expr,
normalizeStack,
config
}: {
fieldOrDatumDef: FieldDef | DatumDef;
- format: string | Dict;
- formatType: string;
+ formatMixins: FormatMixins;
expr?: 'datum' | 'parent' | 'datum.datum';
normalizeStack?: boolean;
config: Config;
}) {
+ const {formatType} = formatMixins;
+ let {format} = formatMixins;
if (isCustomFormatType(formatType)) {
return formatCustomType({
fieldOrDatumDef,
- format,
- formatType,
+ formatMixins: {...formatMixins, formatType},
expr,
config
});
@@ -64,16 +66,20 @@ export function formatSignalRef({
if (normalizeStack && config.normalizedNumberFormatType)
return formatCustomType({
fieldOrDatumDef,
- format: config.normalizedNumberFormat,
- formatType: config.normalizedNumberFormatType,
+ formatMixins: {
+ format: config.normalizedNumberFormat,
+ formatType: config.normalizedNumberFormatType
+ },
expr,
config
});
if (config.numberFormatType) {
return formatCustomType({
fieldOrDatumDef,
- format: config.numberFormat,
- formatType: config.numberFormatType,
+ formatMixins: {
+ format: config.numberFormat,
+ formatType: config.numberFormatType
+ },
expr,
config
});
@@ -87,8 +93,7 @@ export function formatSignalRef({
) {
return formatCustomType({
fieldOrDatumDef,
- format: config.timeFormat,
- formatType: config.timeFormatType,
+ formatMixins,
expr,
config
});
@@ -96,7 +101,7 @@ export function formatSignalRef({
}
if (isFieldOrDatumDefForTimeFormat(fieldOrDatumDef)) {
- const signal = timeFormatExpression({
+ const mainFormatExpr = timeFormatExpression({
field,
timeUnit: isFieldDef(fieldOrDatumDef) ? normalizeTimeUnit(fieldOrDatumDef.timeUnit)?.unit : undefined,
format,
@@ -104,6 +109,11 @@ export function formatSignalRef({
rawTimeFormat: config.timeFormat,
isUTCScale: isScaleFieldDef(fieldOrDatumDef) && fieldOrDatumDef.scale?.type === ScaleType.UTC
});
+
+ const signal = wrapFormatExprToHandleInvalidValues({
+ mainFormatExpr,
+ fieldExpr: field
+ });
return signal ? {signal} : undefined;
}
@@ -111,17 +121,23 @@ export function formatSignalRef({
if (isFieldDef(fieldOrDatumDef) && isBinning(fieldOrDatumDef.bin)) {
const endField = vgField(fieldOrDatumDef, {expr, binSuffix: 'end'});
return {
- signal: binFormatExpression(field, endField, format, formatType, config)
+ signal: binFormatExpression(field, endField, {format, formatType}, config)
};
} else if (format || channelDefType(fieldOrDatumDef) === 'quantitative') {
- return {
- signal: `${formatExpr(field, format)}`
- };
+ const signal = wrapFormatExprToHandleInvalidValues({
+ mainFormatExpr: builtInFormatExpr(field, format),
+ fieldExpr: field
+ });
+ return {signal};
} else {
- return {signal: `isValid(${field}) ? ${field} : ""+${field}`};
+ return {signal: toStringExpr(field)};
}
}
+function toStringExpr(expr: string) {
+ return `"" + ${expr}`;
+}
+
function fieldToFormat(
fieldOrDatumDef: FieldDef | DatumDef,
expr: 'datum' | 'parent' | 'datum.datum',
@@ -143,16 +159,14 @@ function fieldToFormat(
export function formatCustomType({
fieldOrDatumDef,
- format,
- formatType,
expr,
normalizeStack,
config,
+ formatMixins,
field
}: {
fieldOrDatumDef: FieldDef | DatumDef;
- format: string | Dict;
- formatType: string;
+ formatMixins: FormatMixins;
expr?: 'datum' | 'parent' | 'datum.datum';
normalizeStack?: boolean;
config: Config;
@@ -167,10 +181,15 @@ export function formatCustomType({
) {
const endField = vgField(fieldOrDatumDef, {expr, binSuffix: 'end'});
return {
- signal: binFormatExpression(field, endField, format, formatType, config)
+ signal: binFormatExpression(field, endField, formatMixins, config)
};
}
- return {signal: customFormatExpr(formatType, field, format)};
+ const {format, formatType} = formatMixins;
+ const signal = wrapFormatExprToHandleInvalidValues({
+ mainFormatExpr: customFormatExpr(formatType, field, format),
+ fieldExpr: field
+ });
+ return {signal};
}
export function guideFormat(
@@ -289,31 +308,54 @@ export function timeFormat({
return omitTimeFormatConfig ? undefined : config.timeFormat;
}
-function formatExpr(field: string, format: string) {
+function builtInFormatExpr(field: string, format: string) {
return `format(${field}, "${format || ''}")`;
}
-function binNumberFormatExpr(field: string, format: string | Dict, formatType: string, config: Config) {
+/**
+ * return format expr for number bin's start/end
+ */
+function binExtentFormatExpr(field: string, format: string | Dict, formatType: string, config: Config) {
if (isCustomFormatType(formatType)) {
return customFormatExpr(formatType, field, format);
}
+ format = (isString(format) ? format : undefined) ?? config.numberFormat;
+ return builtInFormatExpr(field, format);
+}
- return formatExpr(field, (isString(format) ? format : undefined) ?? config.numberFormat);
+function wrapFormatExprToHandleInvalidValues({
+ fieldExpr,
+ mainFormatExpr
+}: {
+ mainFormatExpr: string;
+ fieldExpr: string;
+}): string {
+ return `${fieldValidPredicate(fieldExpr, false)} ? ${toStringExpr(fieldExpr)} : ${mainFormatExpr}`;
}
export function binFormatExpression(
startField: string,
endField: string,
- format: string | Dict,
- formatType: string,
+ {format, formatType}: FormatMixins,
config: Config
): string {
if (format === undefined && formatType === undefined && config.customFormatTypes && config.numberFormatType) {
- return binFormatExpression(startField, endField, config.numberFormat, config.numberFormatType, config);
+ return binFormatExpression(
+ startField,
+ endField,
+ {
+ format: config.numberFormat,
+ formatType: config.numberFormatType
+ },
+ config
+ );
}
- const start = binNumberFormatExpr(startField, format, formatType, config);
- const end = binNumberFormatExpr(endField, format, formatType, config);
- return `${fieldValidPredicate(startField, false)} ? "null" : ${start} + "${BIN_RANGE_DELIMITER}" + ${end}`;
+ const start = binExtentFormatExpr(startField, format, formatType, config);
+ const end = binExtentFormatExpr(endField, format, formatType, config);
+ return wrapFormatExprToHandleInvalidValues({
+ fieldExpr: startField,
+ mainFormatExpr: `${start} + "${BIN_RANGE_DELIMITER}" + ${end}`
+ });
}
/**
diff --git a/src/compile/header/assemble.ts b/src/compile/header/assemble.ts
index 1bc29596fd..96bcde5911 100644
--- a/src/compile/header/assemble.ts
+++ b/src/compile/header/assemble.ts
@@ -131,8 +131,7 @@ export function assembleLabelTitle(
const titleTextExpr = formatSignalRef({
fieldOrDatumDef: facetFieldDef,
- format,
- formatType,
+ formatMixins: {format, formatType},
expr: 'parent',
config
}).signal;
diff --git a/src/compile/legend/encode.ts b/src/compile/legend/encode.ts
index 334e0b0381..4457fe0acd 100644
--- a/src/compile/legend/encode.ts
+++ b/src/compile/legend/encode.ts
@@ -156,8 +156,7 @@ export function labels(specifiedlabelsSpec: any, {fieldOrDatumDef, model, channe
text = formatCustomType({
fieldOrDatumDef,
field: 'datum.value',
- format,
- formatType,
+ formatMixins: {format, formatType},
config
});
} else if (format === undefined && formatType === undefined && config.customFormatTypes) {
@@ -165,8 +164,10 @@ export function labels(specifiedlabelsSpec: any, {fieldOrDatumDef, model, channe
text = formatCustomType({
fieldOrDatumDef,
field: 'datum.value',
- format: config.numberFormat,
- formatType: config.numberFormatType,
+ formatMixins: {
+ format: config.numberFormat,
+ formatType: config.numberFormatType
+ },
config
});
} else if (
@@ -178,8 +179,10 @@ export function labels(specifiedlabelsSpec: any, {fieldOrDatumDef, model, channe
text = formatCustomType({
fieldOrDatumDef,
field: 'datum.value',
- format: config.timeFormat,
- formatType: config.timeFormatType,
+ formatMixins: {
+ format: config.timeFormat,
+ formatType: config.timeFormatType
+ },
config
});
}
diff --git a/src/compile/mark/encode/text.ts b/src/compile/mark/encode/text.ts
index 9b1bfc2241..16d7fb8429 100644
--- a/src/compile/mark/encode/text.ts
+++ b/src/compile/mark/encode/text.ts
@@ -29,8 +29,8 @@ export function textRef(
return signalOrValueRef(channelDef.value);
}
if (isFieldOrDatumDef(channelDef)) {
- const {format, formatType} = getFormatMixins(channelDef);
- return formatSignalRef({fieldOrDatumDef: channelDef, format, formatType, expr, config});
+ const formatMixins = getFormatMixins(channelDef);
+ return formatSignalRef({fieldOrDatumDef: channelDef, formatMixins, expr, config});
}
}
return undefined;
diff --git a/src/compile/mark/encode/tooltip.ts b/src/compile/mark/encode/tooltip.ts
index 48f70ce3af..a3b5b68d39 100644
--- a/src/compile/mark/encode/tooltip.ts
+++ b/src/compile/mark/encode/tooltip.ts
@@ -107,8 +107,8 @@ export function tooltipData(
if (isBinned(fieldDef.bin) && fieldDef2) {
const startField = vgField(fieldDef, {expr});
const endField = vgField(fieldDef2, {expr});
- const {format, formatType} = getFormatMixins(fieldDef);
- value = binFormatExpression(startField, endField, format, formatType, formatConfig);
+ const formatMixins = getFormatMixins(fieldDef);
+ value = binFormatExpression(startField, endField, formatMixins, formatConfig);
toSkip[channel2] = true;
}
}
@@ -119,11 +119,10 @@ export function tooltipData(
stack.fieldChannel === channel &&
stack.offset === 'normalize'
) {
- const {format, formatType} = getFormatMixins(fieldDef);
+ const formatMixins = getFormatMixins(fieldDef);
value = formatSignalRef({
fieldOrDatumDef: fieldDef,
- format,
- formatType,
+ formatMixins,
expr,
config: formatConfig,
normalizeStack: true
diff --git a/src/invalid.ts b/src/invalid.ts
index 006d400d11..f767525229 100644
--- a/src/invalid.ts
+++ b/src/invalid.ts
@@ -8,7 +8,7 @@ import {isObject} from 'vega-util';
*/
export interface MarkInvalidMixins {
/**
- * Invalid data mode, which defines how the marks and corresponding scales should represent invalid values (`null` and `NaN` in continuous scales *without* defined output for invalid values).
+ * Invalid data mode, which defines how the marks and corresponding scales should represent invalid values (`null` and `NaN` in continuous scales *without* defined output for invalid values in `config.scale.invalid`).
*
* - `"filter"` — *Exclude* all invalid values from the visualization's *marks* and *scales*.
* For path marks (for line, area, trail), this option will create paths that connect valid points, as if the data rows with invalid values do not exist.
diff --git a/test/compile/format.test.ts b/test/compile/format.test.ts
index ada7be09f4..a9e688d9f7 100644
--- a/test/compile/format.test.ts
+++ b/test/compile/format.test.ts
@@ -161,8 +161,10 @@ describe('Format', () => {
expect(
formatSignalRef({
fieldOrDatumDef: {field: 'foo', type: 'ordinal'},
- format: '.2f',
- formatType: undefined,
+ formatMixins: {
+ format: '.2f',
+ formatType: undefined
+ },
expr: 'parent',
config: {}
})
@@ -175,8 +177,10 @@ describe('Format', () => {
expect(
formatSignalRef({
fieldOrDatumDef: {bin: true, field: 'foo', type: 'quantitative'},
- format: undefined,
- formatType: undefined,
+ formatMixins: {
+ format: undefined,
+ formatType: undefined
+ },
expr: 'parent',
config: {numberFormat: 'abc', numberFormatType: 'customFormatter'}
})
@@ -190,13 +194,15 @@ describe('Format', () => {
expect(
formatSignalRef({
fieldOrDatumDef: {datum: 200, type: 'quantitative'},
- format: '.2f',
- formatType: undefined,
+ formatMixins: {
+ format: '.2f',
+ formatType: undefined
+ },
expr: 'parent',
config: {}
})
).toEqual({
- signal: 'format(200, ".2f")'
+ signal: '!isValid(200) || !isFinite(+200) ? toString(200) : format(200, ".2f")'
});
});
@@ -204,8 +210,10 @@ describe('Format', () => {
expect(
formatSignalRef({
fieldOrDatumDef: {datum: 200, type: 'quantitative'},
- format: 'abc',
- formatType: 'customFormatter',
+ formatMixins: {
+ format: 'abc',
+ formatType: 'customFormatter'
+ },
expr: 'parent',
config: {}
})
@@ -218,8 +226,10 @@ describe('Format', () => {
expect(
formatSignalRef({
fieldOrDatumDef: {datum: 200, type: 'quantitative'},
- format: undefined,
- formatType: undefined,
+ formatMixins: {
+ format: undefined,
+ formatType: undefined
+ },
expr: 'parent',
config: {numberFormat: 'abc', numberFormatType: 'customFormatter', customFormatTypes: true}
})
@@ -232,8 +242,10 @@ describe('Format', () => {
expect(
formatSignalRef({
fieldOrDatumDef: {field: 'date', type: 'temporal'},
- format: undefined,
- formatType: undefined,
+ formatMixins: {
+ format: undefined,
+ formatType: undefined
+ },
expr: 'parent',
config: {timeFormat: 'abc', timeFormatType: 'customFormatter', customFormatTypes: true}
})
@@ -246,8 +258,7 @@ describe('Format', () => {
expect(
formatSignalRef({
fieldOrDatumDef: {datum: 200, type: 'quantitative'},
- format: undefined,
- formatType: undefined,
+ formatMixins: {},
expr: 'parent',
normalizeStack: true,
config: {
@@ -265,8 +276,7 @@ describe('Format', () => {
expect(
formatSignalRef({
fieldOrDatumDef: {datum: 200, type: 'quantitative'},
- format: undefined,
- formatType: undefined,
+ formatMixins: {},
expr: 'parent',
normalizeStack: true,
config: {