PowerBI Query Generator for GitHub GraphQL API v4

by rockyintel

HTML

<!DOCTYPE html>
<html>

  <head>
    <title>GitHub ❤ PowerBI</title>
    <link rel="stylesheet" href="https://unpkg.com/marx-css/css/marx.min.css" />
  </head>

  <body>
    <h1>
    PowerBI Query Generator for GitHub GraphQL API v4
    </h1>
    <em>Based on a <a href="//gist.github.com/petrsvihlik/cc34a6cf1882d515139c5b27f37cf99e">Gist</a> by <a href="//twitter.com/PetrSvihlik">Rocky</a></em>
    <div>
      <label for="query"><a href="//developer.github.com/v4/explorer/">GitHub GraphQL query</a>:</label><br />
      <textarea oninput="generate()" rows="6" style="width: 100%;" type="text" id="query" placeholder="{
  organization(login: &quot;github&quot;) {
    name
  }
}
"></textarea>
      <br />
    </div>
    <label for="result"><a href="//docs.microsoft.com/en-us/power-bi/desktop-query-overview#advanced-editor">PowerBI code</a>:</label><br />
    <textarea id="result" rows="18" style="width: 100%;">

    </textarea>
  </body>

</html>

JavaScript

var template = `let
    Source = Web.Contents(
	"https://api.github.com/graphql",
	[
		Headers=[
			#"Method"="POST",
			#"Content-Type"="application/json",
			#"Authorization"="Bearer <your_personal_token_here>"
		],
		Content=Text.ToBinary("{""query"": ""##QUERY##""}")
	]
    ),
    #"JSON" = Json.Document(Source)
in
    #"JSON"`;



generate = function() {
	var queryElem = document.getElementById('query');
  var query = queryElem.value;
  if(!query)
  {
  	query = queryElem.placeholder;
  }
  var escapedQuery = query.replace(/"/g, '\\""').replace(/(\r\n|\n|\r)/gm,"").replace(/\s+/g,' ');
  var resultQuery = template.replace('##QUERY##', escapedQuery);
  document.getElementById('result').innerHTML = resultQuery;
};

generate();