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: "github") {
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();