| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259 |
- {
- "data": [
- {
- "name": "legend",
- "values": null
- },
- {
- "name": "source",
- "values": null
- },
- {
- "name": "flatten",
- "source": "source"
- },
- {
- "name": "table",
- "source": "flatten",
- "transform": [
- {
- "type": "project",
- "fields": [
- {"signal" : "valuePath"},
- {"signal": "timestampPath"}
- ],
- "as": [
- "value",
- "timestamp"
- ]
- },
- {
- "type": "formula",
- "expr": "utcParse(datum.timestamp, '%Y-%m-%d %H:%M:%S%Z')",
- "as": "dateTime"
- }
- ]
- },
- {
- "name": "range",
- "source": "table",
- "transform": [
- {
- "type": "aggregate",
- "fields": ["dateTime", "dateTime", "value"],
- "ops": ["min", "max", "max"],
- "as": ["dateMinTemp", "dateMaxTemp", "maxValueTemp"]
- },
- {
- "type": "formula",
- "expr":"time(datum[\"dateMinTemp\"]) - timeWindow",
- "as": "dateMin"
- },
- {
- "type": "formula",
- "expr":"time(datum[\"dateMaxTemp\"]) + timeWindow",
- "as": "dateMax"
- },
- {
- "type": "formula",
- "expr": "datum[\"maxValueTemp\"] * 1.0",
- "as": "valueMax"
- }
- ]
- }
- ],
- "signals": [
- {
- "name": "timeWindow",
- "value": null
- },
- {
- "name": "maxTimeDifference",
- "update": "timeWindow * 5"
- },
- {
- "name": "detailDomain"
- }
- ],
- "marks": [
- {
- "type": "group",
- "name": "detail",
- "encode": {
- "update": {
- "height": {"signal": "detailHeight"},
- "width": {"signal": "width"}
- }
- },
- "scales": [
- {
- "name": "xDetail",
- "type": "time",
- "range": "width",
- "domain": {
- "data": "range",
- "fields": [
- "dateMin",
- "dateMax"
- ]
- },
- "domainRaw": {"signal": "detailDomain"}
- }
- ],
- "axes": [
- {"orient": "bottom", "scale": "xDetail"}
- ],
- "marks": [
- {
- "type": "group",
- "encode": {
- "update": {
- "height": {
- "field": {
- "group": "height"
- }
- },
- "width": {
- "field": {
- "group": "width"
- }
- },
- "clip": {
- "value": true
- }
- }
- }
- }
- ]
- },
- {
- "type": "group",
- "name": "overview",
- "encode": {
- "update": {
- "x": {"value": 0},
- "y": {"signal": "overviewHeightStart"},
- "height": {"signal": "overviewHeight"},
- "width": {"signal": "width"},
- "fill": {"value": "transparent"}
- }
- },
- "signals": [
- {
- "name": "brush",
- "on": [
- {
- "events": {"signal": "delta"},
- "update": "clampRange([anchor[0] + delta, anchor[1] + delta], 0, width)"
- }
- ]
- },
- {
- "name": "anchor", "value": null,
- "on": [{"events": "@brush:mousedown", "update": "slice(brush)"}]
- },
- {
- "name": "xdown", "value": 0,
- "on": [{"events": "@brush:mousedown", "update": "x()"}]
- },
- {
- "name": "delta", "value": 0,
- "on": [
- {
- "events": "[@brush:mousedown, window:mouseup] > window:mousemove!",
- "update": "x() - xdown"
- }
- ]
- },
- {
- "name": "detailDomain",
- "push": "outer",
- "on": [
- {
- "events": {"signal": "brush"},
- "update": "span(brush) ? invert('xOverview', brush) : null"
- }
- ]
- }
- ],
- "scales": [
- {
- "name": "xOverview",
- "type": "time",
- "range": "width",
- "domain": {"data": "range", "fields": ["dateMin", "dateMax"]}
- },
- {
- "name": "yOverview",
- "type": "linear",
- "range": [70, 0],
- "domain": {"data": "table", "field": "value"},
- "nice": true,
- "zero": false,
- "padding": 0
- }
- ],
- "axes": [
- {"orient": "bottom", "scale": "xOverview"}
- ],
- "marks": [
- {
- "type": "rect",
- "name": "brush",
- "encode": {
- "enter": {
- "y": {"value": 0},
- "height": {"value": 70},
- "fill": {"value": "#333"},
- "fillOpacity": {"value": 0.2}
- },
- "update": {
- "x": {"signal": "brush[0]"},
- "x2": {"signal": "brush[1]"}
- }
- }
- },
- {
- "type": "rect",
- "interactive": false,
- "encode": {
- "enter": {
- "y": {"value": 0},
- "height": {"value": 70},
- "width": {"value": 1},
- "fill": {"value": "firebrick"}
- },
- "update": {
- "x": {"signal": "brush[0]"}
- }
- }
- },
- {
- "type": "rect",
- "interactive": false,
- "encode": {
- "enter": {
- "y": {"value": 0},
- "height": {"value": 70},
- "width": {"value": 1},
- "fill": {"value": "firebrick"}
- },
- "update": {
- "x": {"signal": "brush[1]"}
- }
- }
- }
- ]
- }
- ]
- }
|