Skip to content

Instantly share code, notes, and snippets.

@Sampath-Lokuge
Last active October 31, 2017 02:26
Show Gist options
  • Save Sampath-Lokuge/809866bc17ecaeb188117ec1a4866046 to your computer and use it in GitHub Desktop.
Save Sampath-Lokuge/809866bc17ecaeb188117ec1a4866046 to your computer and use it in GitHub Desktop.
Chart - 30-10-2017
@Sampath-Lokuge
Copy link
Author

//show Chart
  showChart(totalOfBudgetAndContingency: number, paidPercentage: number, remainingPercentageExcludingPaid: number, contingencyPercentage: number,
    spent: number, spentOnChart: number, remainingAmount: number, daysToGo: number, spentOverColor: string) {
    let chart = HighCharts.chart('chartContainerHome', {
      "chart": {
        "height": 400,
        "renderTo": "container",
        "plotBackgroundColor": null,
        "plotBackgroundImage": null,
        "plotBorderWidth": 0,
        "plotShadow": false,
        "backgroundColor": "white"
      },
      "credits": {
        "enabled": false
      },
      "tooltip": {
        "enabled": true
      },
      "title": {
        "useHtml": true,
        "text": "<div style=\"font-size: 1.6rem;\">Remaining</div><br><div style=\"font-size: 20px;color:" + spentOverColor + "\">" + remainingAmount.toLocaleString() + "</div>",
        "align": "center",
        "verticalAlign": "top",
        "y": 120,
      },
      "subtitle": {
        "useHtml": true,
        "text": "<div style=\"font-size: 12px;\">Days To Go<br><div style=\"font-size: 12px;\">" + daysToGo + "</div>",
        "align": "center",
        "verticalAlign": "top",
        "y": 165,
      },

      "pane": {
        "center": ["50%", "47%"],
        "size": "75%",
        "startAngle": -90,
        "endAngle": 90,
        "background": {
          "borderWidth": 0,
          "backgroundColor": "transparent",
          "innerRadius": "95%",
          "outerRadius": "100%",
          "shape": "arc"
        }
      },
      "yAxis": [{
        "lineWidth": 0,
        "min": 0,
        "max": totalOfBudgetAndContingency, /* Budget + Contingency */
        tickColor: 'white',
        tickWidth: 4,
        minorTickInterval: 'auto',
        minorTickLength: 3,
        minorTickPosition: 'inside',
        tickPixelInterval: 50,
        tickPosition: '',
        tickPositioner: (min, max) => {
          var ticks = [],
            tick = min,
            step = Math.round((max - min) / 10);
          while (tick < max - step / 2) {
            ticks.push(Math.round(tick));
            tick += step;
          }
          ticks.push(Math.round(max));
          return ticks;
        },
        tickLength: 30,

        "labels": {
          "enabled": true,
          distance: 30,
          style: {
            color: '#50a2a7',
            font: '11px Trebuchet MS, Verdana, sans-serif'
          }
        },
        "title": {
          "text": "",
          "useHTML": false,
          "y": 80
        },
        "pane": 0
      }],
      "plotOptions": {
        "series": {
          "enableMouseTracking": false
        },
        "pie": {
          "dataLabels": {
            "enabled": true,
            "distance": 0,
            "style": {
              "fontWeight": "bold",
              "color": "white",
              "textShadow": "0px 1px 2px black"
            }
          },
          "size": "75%",
          "startAngle": -90,
          "endAngle": 90,
          "center": ["50%", "47%"]
        },
        "gauge": {
          "dataLabels": {
            "enabled": false
          },
          "pivot": {
            "radius": 80,
            "borderWidth": 1,
            "borderColor": "transparent",
            "backgroundColor": "white"
          },
          "dial": {
            "radius": "100%",
            "backgroundColor": "#e9b44c",
            "borderColor": "",
            "baseWidth": 60,
            "topWidth": 1,
            "baseLength": "5%",
            "rearLength": "5%"
          }
        }
      },

      "series": [{
        "type": "pie",
        "name": "Budget",
        "innerSize": "80%",
        "data": [{
          "y": paidPercentage, /* Paid as percentage */
          "name": "",
          color: 'rgba(80,162,167, 0.3)'
        }, {
          "y": remainingPercentageExcludingPaid, /* Remaining as percentage excluding paid */
          "name": "",
          color: 'rgba(187,187,187, 0.2)'
        }, {
          "y": contingencyPercentage, /* Contingency as percentage */
          "name": "",
          color: 'rgba(155,41,21, 0.9)'
        }]
      }, {
        "type": "gauge",
        "name": "Spent",
        "data": [spentOnChart], /* Spent */
        "dial": {
          "rearLength": 0
        }
      }],
    });
  }

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment