79293847

Date: 2024-12-19 10:10:33
Score: 2.5
Natty:
Report link

After hours on this code, I finally obtained the correct visual with everything implemented.

In power BI, please provide to deneb :

Find the code here in Vega.

{
  "$schema": "https://vega.github.io/schema/vega/v5.json",
  "background": "transparent",  // Transparent background
  "width": 360,
  "height": 71,
  "data": [
    {
      "name": "dataset",
      "transform": [
        {
          "type": "formula",
          "expr": "utcOffset('seconds', timer, datum.DST_ClockDiffBtwLocationAndLocalOffset)",
          "as": "adjustedTime"
        },
        {
          "type": "formula",
          "expr": "(hours(datum.adjustedTime) + minutes(datum.adjustedTime) / 60)",
          "as": "currentTime"
        },
        {
          "type": "formula",
          "expr": "hours(datetime(datum.SiteSupportStartFrom)) + minutes(datetime(datum.SiteSupportStartFrom)) / 60",
          "as": "startSupportTime"
        },
        {
          "type": "formula",
          "expr": "hours(datetime(datum.SiteSupportDayTo)) + minutes(datetime(datum.SiteSupportDayTo)) / 60",
          "as": "endSupportTime"
        },
        {
          "type": "formula",
          "expr": "(datum.startSupportTime + datum.endSupportTime) / 2",
          "as": "midSupportTime"
        }
      ]
    }
  ],
  "signals": [
    {
      "name": "timer",
      "update": "now()",
      "on": [
        {
          "events": {"type": "timer", "throttle": 1000},
          "update": "now()"
        }
      ]
    },
    {
      "name": "adjustedDate",
      "update": "timeFormat(utcOffset('seconds', timer, data('dataset')[0].DST_ClockDiffBtwLocationAndLocalOffset), '%Y-%m-%d')"  // Adjusted date using offset
    }
  ],
  "scales": [
    {
      "name": "xscale",
      "type": "linear",
      "domain": [0, 24],
      "range": [0, 350]
    }
  ],
  "marks": [
    {
      "type": "rect",  // Grey background spanning 24 hours
      "encode": {
        "enter": {
          "x": {"scale": "xscale", "value": 0},
          "x2": {"scale": "xscale", "value": 24},
          "y": {"value": 18},
          "y2": {"value": 32},
          "fill": {"value": "lightgrey"}
        }
      }
    },
    {
      "type": "rect",
      "from": {"data": "dataset"},
      "encode": {
        "enter": {
          "x": {"scale": "xscale", "field": "startSupportTime"},
          "x2": {"scale": "xscale", "field": "endSupportTime"},
          "y": {"value": 15},
          "y2": {"value": 35},
          "fill": {"value": "lightgreen"}
        }
      }
    },
    {
      "type": "text",  // Text in the middle of the green rectangle
      "from": {"data": "dataset"},
      "encode": {
        "enter": {
          "x": {"scale": "xscale", "field": "midSupportTime"},
          "y": {"value": 25},
          "text": {"value": "IT Site Support hours"},
          "fill": {"value": "black"},
          "align": {"value": "center"},
          "baseline": {"value": "middle"},
          "fontSize": {"value": 10},
          "fontWeight": {"value": "bold"}
        }
      }
    },
    {
      "type": "rule",
      "from": {"data": "dataset"},
      "encode": {
        "enter": {
          "x": {"scale": "xscale", "field": "currentTime"},
          "y": {"value": 10},
          "y2": {"value": 45},
          "stroke": {"value": "red"},
          "strokeWidth": {"value": 2}
        },
        "update": {
          "x": {"scale": "xscale", "field": "currentTime"}
        }
      }
    },
    {
      "type": "text",
      "from": {"data": "dataset"},
      "encode": {
        "enter": {
          "x": {"scale": "xscale", "field": "currentTime"},
          "y": {"value": 8},  // Positioned near the red bar
          "align": {"value": "center"},
          "dy": {"value": 1},
          "fontSize": {"value": 10}
        },
        "update": {
          "text": {
            "signal": "timeFormat(utcOffset('seconds', timer, datum.DST_ClockDiffBtwLocationAndLocalOffset), '%H:%M')"
          },
          "fill": {
            "signal": "datum.currentTime >= datum.startSupportTime && datum.currentTime <= datum.endSupportTime ? 'darkgreen' : 'darkred'"
          }
        }
      }
    }
  ],
  "axes": [
    {
      "orient": "bottom",
      "scale": "xscale",
      "title": {"signal": "adjustedDate"},  // Dynamic title for the adjusted date
      "tickCount": 24
    }
  ]
}
Reasons:
  • RegEx Blacklisted phrase (2.5): please provide
  • Long answer (-1):
  • Has code block (-0.5):
  • Self-answer (0.5):
  • Low reputation (1):
Posted by: dgnoyon