| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350 |
- {
- "data": [
- {},
- {},
- {},
- {},
- {},
- {
- "name": "ranks",
- "source": "table",
- "transform": [
- {
- "type": "window",
- "sort": {
- "field": "dateTime",
- "order": "ascending"
- },
- "ops": [
- "rank"
- ],
- "fields": [
- "value"
- ],
- "as": [
- "rank"
- ]
- },
- {
- "type": "formula",
- "expr": "datum.rank + 1",
- "as": "nextRank"
- },
- {
- "type": "formula",
- "expr": "datum.rank - 1",
- "as": "prevRank"
- }
- ]
- },
- {
- "name": "lookup",
- "source": "ranks",
- "transform": [
- {
- "type": "lookup",
- "from": "ranks",
- "key": "rank",
- "fields": [
- "nextRank"
- ],
- "as": [
- "nextObj"
- ]
- },
- {
- "type": "lookup",
- "from": "ranks",
- "key": "rank",
- "fields": [
- "prevRank"
- ],
- "as": [
- "prevObj"
- ]
- },
- {
- "type": "formula",
- "expr": "(datum.nextObj == null || datum.nextObj.dateTime - datum.dateTime > maxTimeDifference) ? null : datum.nextObj",
- "as": "obj"
- },
- {
- "type": "formula",
- "expr": "datum.prevObj == null ? data('range')[0].dateMin : (time(datum.prevObj.dateTime) + time(datum.dateTime)) / 2",
- "as": "dateStart"
- },
- {
- "type": "formula",
- "expr": "datum.nextObj == null ? data('range')[0].dateMax : (time(datum.nextObj.dateTime) + time(datum.dateTime)) / 2",
- "as": "dateEnd"
- }
- ]
- }
- ],
- "signals": [
- {},
- {},
- {},
- {
- "name": "tooltipSignal",
- "value": {},
- "on": [
- {
- "events": "@tooltip-hitarea:mouseover",
- "update": "datum"
- },
- {
- "events": "@tooltip-hitarea:mouseout",
- "update": "{}"
- }
- ]
- }
- ],
- "marks": [
- {
- "scales": [
- {},
- {
- "name": "yDetail",
- "type": "linear",
- "range": [390, 0],
- "domain": {
- "fields": [
- {"data": "range", "field": "valueMax"},
- {"data": "table", "field": "value"}
- ]
- },
- "nice": true,
- "zero": false,
- "padding": 0
- }
- ],
- "axes": [
- {},
- {"orient": "left", "scale": "yDetail"}
- ],
- "marks": [
- {
- "marks": [
- {
- "name": "tooltip-hitarea",
- "type": "rect",
- "interactive": true,
- "from": {
- "data": "lookup"
- },
- "encode": {
- "enter": {
- "tooltip": {
- "signal": null
- }
- },
- "update": {
- "x": {
- "scale": "xDetail",
- "field": "dateStart"
- },
- "x2": {
- "scale": "xDetail",
- "field": "dateEnd"
- },
- "y": {
- "scale": "yDetail",
- "band": 1
- },
- "y2": {
- "scale": "yDetail",
- "signal": "-1e+36"
- },
- "fill": {
- "value": "#00ff00"
- },
- "fillOpacity": {
- "value": 0.0
- }
- }
- }
- },
- {
- "type": "symbol",
- "from": {"data":"lookup"},
- "encode": {
- "update": {
- "shape": {"value": "circle"},
- "size": {"value": 30},
- "x": {"scale": "xDetail", "field": "dateTime"},
- "y": {"scale": "yDetail", "field": "value"},
- "color": {"value": "both"},
- "strokeWidth": {"value": 4},
- "fill": {"value": "steelblue"}
- }
- }
- },
- {
- "type": "rule",
- "from": {
- "data": "lookup"
- },
- "encode": {
- "update": {
- "x": {
- "scale": "xDetail",
- "field": "dateTime"
- },
- "x2": [
- {
- "test": "isValid(datum.obj)",
- "scale": "xDetail",
- "field": "obj.dateTime"
- },
- {
- "scale": "xDetail",
- "field": "dateTime"
- }
- ],
- "y": {
- "scale": "yDetail",
- "field": "value"
- },
- "y2": [
- {
- "test": "isValid(datum.obj)",
- "scale": "yDetail",
- "field": "obj.value"
- },
- {
- "scale": "yDetail",
- "field": "value"
- }
- ],
- "stroke": {
- "value": "steelblue"
- },
- "strokeWidth": {
- "value": 1
- }
- }
- }
- },
- {
- "type": "rule",
- "interactive": false,
- "zindex": 20,
- "encode": {
- "update": {
- "x": {
- "scale": "xDetail",
- "signal": "tooltipSignal.dateTime"
- },
- "y": {
- "scale": "yDetail",
- "band": 1
- },
- "y2": {
- "scale": "yDetail",
- "signal": "-1e+36"
- },
- "strokeOpacity": [
- {
- "test": "tooltipSignal.dateTime > 1",
- "value": 1
- },
- {
- "value": 0
- }
- ]
- }
- }
- }
- ]
- }
- ]
- },
- {
- "signals": [
- {
- "value": 0,
- "on": [
- {},
- {
- "events": "@overview:mousedown",
- "update": "[x(), x()]"
- },
- {
- "events": "[@overview:mousedown, window:mouseup] > window:mousemove!",
- "update": "[brush[0], clamp(x(), 0, width)]"
- }
- ]
- }
- ],
- "marks": [
- {},
- {},
- {},
- {
- "type": "symbol",
- "from": {"data":"table"},
- "encode": {
- "update": {
- "shape": {"value": "circle"},
- "size": {"value": 10},
- "x": {"scale": "xOverview", "field": "dateTime"},
- "y": {"scale": "yOverview", "field": "value"},
- "color": {"value": "both"},
- "strokeWidth": {"value": 4}
- }
- }
- },
- {
- "type": "rule",
- "from": {
- "data": "lookup"
- },
- "encode": {
- "update": {
- "x": {
- "scale": "xOverview",
- "field": "dateTime"
- },
- "x2": [
- {
- "test": "isValid(datum.obj)",
- "scale": "xOverview",
- "field": "obj.dateTime"
- },
- {
- "scale": "xOverview",
- "field": "dateTime"
- }
- ],
- "y": {
- "scale": "yOverview",
- "field": "value"
- },
- "y2": [
- {
- "test": "isValid(datum.obj)",
- "scale": "yOverview",
- "field": "obj.value"
- },
- {
- "scale": "yOverview",
- "field": "value"
- }
- ],
- "stroke": {
- "value": "steelblue"
- },
- "strokeWidth": {
- "value": 1
- }
- }
- }
- }
- ]
- }
- ]
- }
|