Auto-push
This commit is contained in:
79
docfiles/abuse.html
Normal file
79
docfiles/abuse.html
Normal file
@ -0,0 +1,79 @@
|
||||
<div class="ui icon violet message" style='margin: 3em 0'>
|
||||
<i class="user icon"></i>
|
||||
<div class="content">
|
||||
<h3 class="header">
|
||||
User-provided content
|
||||
</h3>
|
||||
<p>
|
||||
The content below is provided by a user, and is not endorsed by Microsoft. If you think it's not appropriate, please
|
||||
<a style='text-decoration:underline' id="abuse" href="#">report abuse</a>.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="ui small modal" id='abusemodal'>
|
||||
<div class="header">Report abuse</div>
|
||||
<div class="content">
|
||||
<div class="ui form">
|
||||
<div class="field">
|
||||
<label>Why do you find it offensive?</label>
|
||||
<textarea id='abusetext' rows="2"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="actions">
|
||||
<div class="ui ok button violet">
|
||||
<i class='ui flag icon'></i> Submit
|
||||
</div>
|
||||
<div class="ui cancel button">
|
||||
<i class='ui cancel icon'></i> Cancel
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="ui small modal" id='abusedone'>
|
||||
<div class="header">Report sent</div>
|
||||
<div class="content">
|
||||
<p>
|
||||
Thank you for helping keep PXT a friendly place!
|
||||
</p>
|
||||
</div>
|
||||
<div class="actions">
|
||||
<div class="ui ok green button">
|
||||
<i class='ui trophy icon'></i> OK
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
var id = "@id@";
|
||||
var now = Math.round(Date.now()/1000);
|
||||
$(".humantime").each(function() {
|
||||
$(this).text(
|
||||
describetime(now, parseInt($(this).data("time")))
|
||||
)
|
||||
})
|
||||
$("#abuse").click(function() {
|
||||
$("#abusemodal")
|
||||
.modal({
|
||||
onApprove: function() {
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: '/api/@id@/abusereports',
|
||||
data: JSON.stringify({
|
||||
text: $('#abusetext').val()
|
||||
}),
|
||||
success: function() {
|
||||
$("#abusedone").modal("show");
|
||||
},
|
||||
contentType: "application/json",
|
||||
dataType: 'json'
|
||||
});
|
||||
}
|
||||
})
|
||||
.modal("show");
|
||||
})
|
||||
})
|
||||
</script>
|
31
docfiles/appmeta.html
Normal file
31
docfiles/appmeta.html
Normal file
@ -0,0 +1,31 @@
|
||||
<title>@name@</title>
|
||||
<meta name="description" content="@description@" />
|
||||
|
||||
<link rel="manifest" href="/sim/sim.webmanifest">
|
||||
|
||||
<link rel="apple-touch-icon" href="@appLogo@">
|
||||
<link rel="icon" href="@appLogo@">
|
||||
<link rel="shortcut icon" href="@appLogo@">
|
||||
<meta name="mobile-web-app-capable" content="yes">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<meta name="apple-mobile-web-app-title" content="@name@">
|
||||
<meta name="application-name" content="@name@">
|
||||
<meta name="msapplication-TileColor" content="@accentColor@">
|
||||
<meta name="msapplication-TileImage" content="@appLogo@">
|
||||
<meta name="msapplication-config" content="/static/icons/browserconfig.xml">
|
||||
<meta name="theme-color" content="@accentColor@">
|
||||
|
||||
<meta name="twitter:card" content="summary" />
|
||||
<meta name="twitter:site" content="@ptwitter@" />
|
||||
<meta name="twitter:title" content="@name@" />
|
||||
<meta name="twitter:description" content="@description@" />
|
||||
<meta name="twitter:image" content="@cardLogo@" />
|
||||
|
||||
<meta property="og:title" content="@name@" />
|
||||
<meta property="og:site_name" content="@name@" />
|
||||
<meta property="og:description" content="@description@" />
|
||||
<meta property="og:image" content="@cardLogo@" />
|
||||
|
||||
<link rel="apple-touch-icon" href="@appLogo@">
|
||||
<link rel="icon" type="image/png" href="@appLogo@">
|
||||
<link rel="shortcut icon" href="@appLogo@">
|
1
docfiles/apptracking.html
Normal file
1
docfiles/apptracking.html
Normal file
@ -0,0 +1 @@
|
||||
<!-- @include tracking.html -->
|
30
docfiles/docs.html
Normal file
30
docfiles/docs.html
Normal file
@ -0,0 +1,30 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:og="http://ogp.me/ns#" xmlns:fb="http://www.facebook.com/2008/fbml">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>@name@</title>
|
||||
<meta name="Description" content="@description@" />
|
||||
|
||||
<!-- @include meta.html -->
|
||||
<!-- @include head.html -->
|
||||
|
||||
</head>
|
||||
|
||||
<body id='root' class='root'>
|
||||
|
||||
<!-- @include header.html -->
|
||||
|
||||
<div id="docs" class="ui main container mainbody">
|
||||
@breadcrumb@
|
||||
@body@
|
||||
@github@
|
||||
</div>
|
||||
|
||||
<!-- @include footer.html -->
|
||||
<!-- @include macros.html -->
|
||||
<!-- @include tracking.html -->
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
138
docfiles/docs.js
Normal file
138
docfiles/docs.js
Normal file
@ -0,0 +1,138 @@
|
||||
function describePlural(value, unit) {
|
||||
return value + " " + unit + (value == 1 ? "" : "s")
|
||||
}
|
||||
function describetime(now, other) {
|
||||
var seconds = now - other
|
||||
if (isNaN(seconds)) return ""
|
||||
var timeString
|
||||
if (seconds < 0)
|
||||
return "now"
|
||||
else if (seconds < 10)
|
||||
return "a few seconds ago"
|
||||
else if (seconds < 60)
|
||||
return " " + describePlural(Math.floor(seconds), "second") + " ago"
|
||||
else if (seconds < 2 * 60)
|
||||
return "a minute ago"
|
||||
else if (seconds < 60 * 60)
|
||||
return " " + describePlural(Math.floor(seconds / 60), "minute") + " ago"
|
||||
else if (seconds < 2 * 60 * 60)
|
||||
return "an hour ago";
|
||||
else if (seconds < 60 * 60 * 24)
|
||||
return " " + describePlural(Math.floor(seconds / 60 / 60), "hour") + " ago"
|
||||
else if (seconds < 60 * 60 * 24 * 30)
|
||||
return " " + describePlural(Math.floor(seconds / 60 / 60 / 24), "day") + " ago"
|
||||
else if (seconds < 60 * 60 * 24 * 365)
|
||||
return " " + describePlural(Math.floor(seconds / 60 / 60 / 24 / 30), "month") + " ago"
|
||||
else
|
||||
return " " + describePlural(Math.floor(seconds / 60 / 60 / 24 / 365), "year") + " ago"
|
||||
}
|
||||
|
||||
function isIE() {
|
||||
return /trident/i.test(navigator.userAgent);
|
||||
}
|
||||
|
||||
function dirAuto($el) {
|
||||
if ($el) {
|
||||
if (!isIE())
|
||||
$el.attr('dir', 'auto');
|
||||
else {
|
||||
var dir = /^[\s\.;:(+0-9]*[\u0591-\u07FF\uFB1D-\uFDFD\uFE70-\uFEFC]/i.test($el.text()) ? "rtl" : "ltr";
|
||||
$el.attr('dir', dir);
|
||||
}
|
||||
}
|
||||
return $el;
|
||||
}
|
||||
|
||||
function renderSnippets() {
|
||||
var codeElems = $('code')
|
||||
for (var i = 0; i < codeElems.length; i++) {
|
||||
codeElems[i].className = codeElems[i].className.replace('-ignore', '')
|
||||
}
|
||||
|
||||
var downloadScreenshots = /screenshots=1/i.test(window.location.href);
|
||||
var path = window.location.href.split('/').pop().split(/[?#]/)[0];
|
||||
ksRunnerReady(function() {
|
||||
pxt.runner.renderAsync({
|
||||
snippetClass: 'lang-blocks',
|
||||
signatureClass: 'lang-sig',
|
||||
blocksClass:'lang-block',
|
||||
shuffleClass: 'lang-shuffle',
|
||||
simulatorClass: 'lang-sim',
|
||||
linksClass: 'lang-cards',
|
||||
namespacesClass: 'lang-namespaces',
|
||||
codeCardClass: 'lang-codecard',
|
||||
packageClass: 'lang-package',
|
||||
projectClass: 'lang-project',
|
||||
snippetReplaceParent: true,
|
||||
simulator: true,
|
||||
hex: true,
|
||||
hexName: path,
|
||||
downloadScreenshots: downloadScreenshots
|
||||
}).done();
|
||||
});
|
||||
}
|
||||
|
||||
$(document).ready(function () {
|
||||
renderSnippets();
|
||||
|
||||
// don't show related videos
|
||||
$.fn.embed.settings.sources.youtube.url = '//www.youtube.com/embed/{id}?rel=0'
|
||||
|
||||
//This is an adapted version of the original template code in Semantic UI
|
||||
$.fn.embed.settings.templates.placeholder = function(image, icon) {
|
||||
var html = '';
|
||||
if(icon) {
|
||||
html += '<i class="' + icon + ' icon"></i>';
|
||||
}
|
||||
if(image) {
|
||||
//Remove the timestamp from the YouTube source URL
|
||||
image = image.replace(/\#t=([0-9]+m)?([0-9]+s)?/, "");
|
||||
html += '<img class="placeholder" src="' + image + '">';
|
||||
}
|
||||
return html;
|
||||
};
|
||||
//Again, this is a slightly modified version of the original Semantic UI source to support timestamped YouTube videos
|
||||
$.fn.embed.settings.templates.iframe = function(url, parameters) {
|
||||
var src = url;
|
||||
//The following if statement is all that is different from the original implementation
|
||||
var matches = src.match(/\#t=(([0-9]+)m)?(([0-9]+)s)?/);
|
||||
if (matches) {
|
||||
var minutes = matches[2] != undefined ? parseInt(matches[2]) : 0;
|
||||
var seconds = matches[4] != undefined ? parseInt(matches[4]) : 0;
|
||||
var param = "start=" + (minutes * 60 + seconds).toString();
|
||||
if (parameters) {
|
||||
parameters = param + "&" + parameters;
|
||||
}
|
||||
else {
|
||||
parameters = param;
|
||||
}
|
||||
src = src.replace(/\#t=([0-9]+m)?([0-9]+s)?/, "");
|
||||
}
|
||||
if (parameters) {
|
||||
src += (/\?/.test(url) ? '&' : '?') + parameters;
|
||||
}
|
||||
return ''
|
||||
+ '<iframe src="' + src + '"'
|
||||
+ ' width="100%" height="100%"'
|
||||
+ ' frameborder="0" scrolling="no" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>'
|
||||
;
|
||||
};
|
||||
|
||||
$('.ui.embed').embed();
|
||||
|
||||
$('.md-video-link').on("click", function () {
|
||||
var name = $(this).data("playerurl") || $(this).data("videosrc");
|
||||
$(this).find("img").remove();
|
||||
$(this).find("svg").remove();
|
||||
var outer = $('<div />', {
|
||||
"class": 'embed-responsive embed-responsive-16by9'
|
||||
});
|
||||
outer.appendTo($(this));
|
||||
$('<iframe>', {
|
||||
class: 'embed-responsive-item',
|
||||
src: name,
|
||||
frameborder: 0,
|
||||
scrolling: 'no'
|
||||
}).appendTo(outer);
|
||||
});
|
||||
});
|
73
docfiles/error.html
Normal file
73
docfiles/error.html
Normal file
@ -0,0 +1,73 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:og="http://ogp.me/ns#" xmlns:fb="http://www.facebook.com/2008/fbml">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Programming Experience Toolkit</title>
|
||||
<meta name="Description" content="Programming Experiences in Blocks and JavaScript for beginners." />
|
||||
|
||||
|
||||
<!-- @include head.html -->
|
||||
|
||||
</head>
|
||||
|
||||
<body id='root' class='root'>
|
||||
|
||||
|
||||
<style>
|
||||
.lead {
|
||||
margin-top: 2em;
|
||||
}
|
||||
|
||||
.smile {
|
||||
font-size: 200px;
|
||||
line-height: 0.6em;
|
||||
float: left;
|
||||
margin-right: 70px;
|
||||
margin-bottom: 100px;
|
||||
margin-left: 50px;
|
||||
display: none;
|
||||
font-weight: 200;
|
||||
color: #0091ff;
|
||||
}
|
||||
|
||||
@media screen and (min-width: 768px) {
|
||||
.smile {
|
||||
display: block;
|
||||
}
|
||||
#root .jumbotron {
|
||||
min-height: 20em;
|
||||
margin-bottom: 8em;
|
||||
}
|
||||
}
|
||||
|
||||
.message {
|
||||
opacity: 0.5;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="ui main text container mainbody">
|
||||
<div class="ui jumbotron">
|
||||
<div class='smile'>
|
||||
:(
|
||||
</div>
|
||||
|
||||
<h1 dir="auto">Sorry, the page is missing</h1>
|
||||
|
||||
<p dir="auto" class='message'>@-body-@</p>
|
||||
|
||||
<p dir="auto" class='lead'>
|
||||
You can go back to <a href="/">home page</a> or <a href="/contact">contact us</a>.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- @include macros.html -->
|
||||
<!-- @include tracking.html -->
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
15
docfiles/footer.html
Normal file
15
docfiles/footer.html
Normal file
@ -0,0 +1,15 @@
|
||||
<div class="ui inverted accent vertical footer segment">
|
||||
<div class="ui center aligned container">
|
||||
<div class="ui horizontal inverted small divided link list">
|
||||
<a class="item" href="https://www.pxt.io/" title="Programming Experience Toolkit">Powered by PXT</a>
|
||||
<a class="item" href="https://www.pxt.io/contact">Contact Us</a>
|
||||
<a class="item" href="https://www.pxt.io/privacy">Privacy & Cookies</a>
|
||||
<a class="item" href="https://www.pxt.io/legal">Terms Of Use</a>
|
||||
<a class="item" href="https://www.pxt.io/trademarks">Trademarks</a>
|
||||
<div class="item">© 2016 Microsoft</div>
|
||||
<!-- we need to force the browser to load this font -->
|
||||
<div style='font-family: Icons; color: #010101;' aria-hidden="true">.</div>
|
||||
</div>
|
||||
<a class="item" href="https://www.microsoft.com/"><img class="ui centered image" src="https://az851932.vo.msecnd.net/pub/pmapoirq" /></a>
|
||||
</div>
|
||||
</div>
|
1
docfiles/fork.css
Normal file
1
docfiles/fork.css
Normal file
@ -0,0 +1 @@
|
||||
/* To be overridden by fork (branded target) */
|
1
docfiles/fork.js
Normal file
1
docfiles/fork.js
Normal file
@ -0,0 +1 @@
|
||||
/* To be overridden by fork (branded target) */
|
32
docfiles/head.html
Normal file
32
docfiles/head.html
Normal file
@ -0,0 +1,32 @@
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
|
||||
<meta name="viewport" content="width=device-width,height=device-height,user-scalable=no,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0">
|
||||
|
||||
<link rel="stylesheet" href="/doccdn/semantic.css" />
|
||||
<link rel="stylesheet" href="/docfiles/style.css" />
|
||||
<link rel="stylesheet" href="/docfiles/vs.css" />
|
||||
<link rel="stylesheet" href="/docfiles/target.css" />
|
||||
<link rel="stylesheet" href="/docfiles/fork.css" />
|
||||
|
||||
<script src="/doccdn/jquery.js"></script>
|
||||
<script src="/doccdn/semantic.js"></script>
|
||||
<script src="/doccdn/lzma/lzma_worker-min.js"></script>
|
||||
|
||||
<script src="/--embed" type="text/javascript"></script>
|
||||
<script src="/docfiles/docs.js" type="text/javascript"></script>
|
||||
<script src="/docfiles/target.js" type="text/javascript"></script>
|
||||
<script src="/docfiles/fork.js" type="text/javascript"></script>
|
||||
|
||||
<style>
|
||||
@targetstyle@
|
||||
</style>
|
||||
|
||||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
// patch youtube in semantic
|
||||
if ($ && $.fn && $.fn.embed && $.fn.embed.settings && $.fn.embed.settings.sources && $.fn.embed.settings.sources.youtube) {
|
||||
$.fn.embed.settings.sources.youtube.url = '//www.youtube.com/embed/{id}?rel=0'
|
||||
}
|
||||
$('.ui.embed').embed();
|
||||
})
|
||||
</script>
|
9
docfiles/header.html
Normal file
9
docfiles/header.html
Normal file
@ -0,0 +1,9 @@
|
||||
<div class="ui fixed accent inverted menu">
|
||||
<div class="ui container">
|
||||
<a href="/" class="header item">
|
||||
@targetlogo@
|
||||
</a>
|
||||
<!-- Menu -->
|
||||
@menu@
|
||||
</div>
|
||||
</div>
|
BIN
docfiles/logo.png
Normal file
BIN
docfiles/logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 7.3 KiB |
95
docfiles/macros.html
Normal file
95
docfiles/macros.html
Normal file
@ -0,0 +1,95 @@
|
||||
<aside id=button class=box>
|
||||
<a class="ui primary button" href="@ARGS@">@BODY@</a>
|
||||
</aside>
|
||||
|
||||
<aside id=vimeo>
|
||||
<div class="ui two column stackable grid container">
|
||||
<div class="column">
|
||||
<div class="ui embed mdvid" data-source="vimeo" data-id="@ARGS@" data-placeholder="/thumbnail/1024/vimeo/@ARGS@" data-icon="video play">
|
||||
</div>
|
||||
</div></div>
|
||||
</aside>
|
||||
|
||||
<aside id=youtube>
|
||||
<div class="ui grid">
|
||||
<div class="ten wide column">
|
||||
<div class="ui embed mdvid" data-source="youtube" data-id="@ARGS@" data-placeholder="https://img.youtube.com/vi/@ARGS@/maxresdefault.jpg">
|
||||
</div>
|
||||
</div></div>
|
||||
</aside>
|
||||
|
||||
<aside id=section>
|
||||
<!-- section @ARGS@ -->
|
||||
</aside>
|
||||
|
||||
<aside id=hide class=box>
|
||||
<div style='display:none'>
|
||||
@BODY@
|
||||
</div>
|
||||
</aside>
|
||||
|
||||
<aside id=avatar class=box>
|
||||
<div class='avatar @ARGS@'>
|
||||
<div class='avatar-image'></div>
|
||||
<div class='ui compact message'>
|
||||
@BODY@
|
||||
</div>
|
||||
</div>
|
||||
</aside>
|
||||
|
||||
<aside id=hint class=box>
|
||||
<div class="ui info message">
|
||||
<div class="content">
|
||||
@BODY@
|
||||
</div>
|
||||
</div>
|
||||
</aside>
|
||||
|
||||
<!-- wrapped around ordinary content -->
|
||||
<aside id=main-container class=box>
|
||||
<div class="ui text">
|
||||
@BODY@
|
||||
</div>
|
||||
</aside>
|
||||
|
||||
<!-- used for 'column' box - they are collected and wrapped in 'column-container' -->
|
||||
<aside id=column class=aside>
|
||||
<div class='column'>
|
||||
@BODY@
|
||||
</div>
|
||||
</aside>
|
||||
<aside id=column-container class=box>
|
||||
<div class="ui three column stackable grid text">
|
||||
@BODY@
|
||||
</div>
|
||||
</aside>
|
||||
|
||||
|
||||
<!-- Menu on the top of the page -->
|
||||
<aside id=item class=menu>
|
||||
<a class="item" href="@LINK@">@NAME@</a>
|
||||
</aside>
|
||||
|
||||
<aside id=divider class=menu>
|
||||
<div class="divider"></div>
|
||||
</aside>
|
||||
|
||||
<aside id=top-dropdown class=menu>
|
||||
<div class="ui simple dropdown item" title="@TITLE@">
|
||||
@NAME@
|
||||
<i class="dropdown icon"></i>
|
||||
<div class="menu">
|
||||
@ITEMS@
|
||||
</div>
|
||||
</div>
|
||||
</aside>
|
||||
|
||||
<aside id=inner-dropdown class=menu>
|
||||
<div class="item" title="@TITLE@">
|
||||
<i class="dropdown icon"></i> @NAME@
|
||||
<div class="menu">
|
||||
@ITEMS@
|
||||
</div>
|
||||
</div>
|
||||
</aside>
|
||||
|
21
docfiles/meta.html
Normal file
21
docfiles/meta.html
Normal file
@ -0,0 +1,21 @@
|
||||
<!-- This file is typically overriden by the target, with own Twitter
|
||||
account etc. Most data is taken from the theme file though.
|
||||
-->
|
||||
|
||||
<meta name="twitter:card" content="summary" />
|
||||
<meta name="twitter:site" content="@twitter@" />
|
||||
<meta name="twitter:title" content="@name@" />
|
||||
<meta name="twitter:description" content="@description@" />
|
||||
<meta name="twitter:image" content="@cardLogo@" />
|
||||
|
||||
<meta property="og:title" content="@name@" />
|
||||
<meta property="og:site_name" content="PXT" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:description" content="@description@" />
|
||||
<meta property="fb:app_id" content="" />
|
||||
<meta property="og:image" content="@cardLogo@" />
|
||||
|
||||
<link rel="apple-touch-icon" href="@appLogo@">
|
||||
<link rel="icon" type="image/png" href="@appLogo@">
|
||||
<link rel="shortcut icon" href="@appLogo@">
|
||||
<meta name="theme-color" content="@accentColor@">
|
74
docfiles/script.html
Normal file
74
docfiles/script.html
Normal file
@ -0,0 +1,74 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:og="http://ogp.me/ns#" xmlns:fb="http://www.facebook.com/2008/fbml">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>@name@</title>
|
||||
<meta name="Description" content="@description@" />
|
||||
|
||||
<!-- @include meta.html -->
|
||||
<!-- @include head.html -->
|
||||
|
||||
<link rel="alternate" type="application/json+oembed" href="@oembedurl@&format=json" />
|
||||
<link rel="alternate" type="text/xml+oembed" href="@oembedurl@&format=xml" />
|
||||
</head>
|
||||
|
||||
<body id='root' class='root'>
|
||||
|
||||
|
||||
<!-- @include header.html -->
|
||||
<!-- @include macros.html -->
|
||||
<aside id=main-container class=box>
|
||||
@BODY@
|
||||
</aside>
|
||||
|
||||
|
||||
|
||||
<div class="ui main container mainbody">
|
||||
|
||||
@breadcrumb@
|
||||
|
||||
<!-- @include abuse.html -->
|
||||
<h1 class="ui header">
|
||||
<div class="ui content">
|
||||
@title@ <a href="/@versionsuff@#pub:@id@" class="ui primary button">Edit</a>
|
||||
<div class='sub header humantime' data-time="@time@">@humantime@</span>
|
||||
</div>
|
||||
</h1>
|
||||
<p class="ui content description">
|
||||
@description@
|
||||
</p>
|
||||
|
||||
<div class="ui container">
|
||||
<div style="position:relative;height:0;padding-bottom:70%;overflow:hidden;">
|
||||
<iframe style="position:absolute;top:0;left:0;width:100%;height:100%;" src="/@versionsuff@#sandbox:@id@" sandbox="allow-popups allow-scripts allow-same-origin"
|
||||
frameborder="0"></iframe>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@body@
|
||||
|
||||
<div class="ui container segment">
|
||||
<h4 class="description">Edit in <a href="https://code.visualstudio.com/">Visual Studio Code</a></h4>
|
||||
<pre style="white-space: pre-wrap;">
|
||||
# open a shell and run these commands
|
||||
pxt extract @id@
|
||||
cd @dirname@
|
||||
code .</pre>
|
||||
<p class="ui description">Do you need help installing the tools?
|
||||
<a href="@theme_embedUrl@/code">Follow these instructions!</a></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<script>
|
||||
const script = @JSON@;
|
||||
// do something with it
|
||||
</script>
|
||||
|
||||
<!-- @include footer.html -->
|
||||
<!-- @include tracking.html -->
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
100
docfiles/stream.html
Normal file
100
docfiles/stream.html
Normal file
@ -0,0 +1,100 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:og="http://ogp.me/ns#" xmlns:fb="http://www.facebook.com/2008/fbml">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Stream: @name@</title>
|
||||
<meta name="Description" content="Live data stream" />
|
||||
|
||||
|
||||
<!-- @include meta.html -->
|
||||
<!-- @include head.html -->
|
||||
|
||||
</head>
|
||||
|
||||
<body id='root' class='root'>
|
||||
|
||||
|
||||
<!-- @include header.html -->
|
||||
<!-- @include macros.html -->
|
||||
|
||||
<aside id=main-container class=box>
|
||||
<div style='display:none' class="ui text container segment">
|
||||
@BODY@
|
||||
</div>
|
||||
</aside>
|
||||
|
||||
|
||||
<div class="ui main container mainbody">
|
||||
|
||||
@breadcrumb@
|
||||
|
||||
<!-- @include abuse.html -->
|
||||
|
||||
<div class="ui container stackable grid">
|
||||
<div class="ui six wide column">
|
||||
<div class="ui card">
|
||||
<!-- <div class="image"><img src="..."></div> -->
|
||||
<div class="content">
|
||||
<div class="header">Stream: @title@</div>
|
||||
<div class="meta">
|
||||
<span class='humantime' data-time="@time@">@humantime@</span>
|
||||
<span class='right floated'>/@id@</span>
|
||||
</div>
|
||||
<div class="description">
|
||||
Live data powered by
|
||||
<img src="https://az851932.vo.msecnd.net/pub/hjlxsmaf" class="ui fluid image" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="extra content">
|
||||
|
||||
<div class="ui two buttons">
|
||||
<a href="/api/@id@/data?start=-24h" class="ui button">JSON</a>
|
||||
<a href="/api/@id@/data.csv?start=-24h" class="ui green button">CSV</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="ui card ten wide column">
|
||||
<h2>Streaming data in Excel 2016</h2>
|
||||
<p>The data stored in this stream can easily be imported into an Excel 2016 spreadsheet using
|
||||
<a href="https://support.office.com/en-us/article/Get-Transform-in-Excel-2016-881c63c6-37c5-4ca2-b616-59e18d75b4de">Get & Transform</a>.
|
||||
</p>
|
||||
<div class="ui segment">
|
||||
<p>Create a <b>Blank Workbook</b> in Excel 2016</p>
|
||||
</div>
|
||||
<div class="ui segment">
|
||||
<p>Click on <b>Data</b> » <b>New Query</b> » <b>From Other Sources</b> » <b>From Web</b>.
|
||||
</p>
|
||||
<img class="ui large centered image" src="https://az851932.vo.msecnd.net/pub/tipefycm" />
|
||||
</div>
|
||||
<div class="ui segment">
|
||||
<p>Enter the following URL and click on <b>Connect</b>.</p>
|
||||
<div class="ui fluid labeled input">
|
||||
<div class="ui label">URL</div>
|
||||
<input type="text" value="@apiroot@@id@/data.csv?start=-24h" readonly="" />
|
||||
</div>
|
||||
<img class="ui medium centered image" src="https://az851932.vo.msecnd.net/pub/jgyhkunq" />
|
||||
</div>
|
||||
<div class="ui segment">
|
||||
<p>Select <b>Anonymous</b> and click <b>Connect</b>.</p>
|
||||
<img class="ui medium centered image" src="https://az851932.vo.msecnd.net/pub/vvrkgcai" />
|
||||
</div>
|
||||
<div class="ui segment">
|
||||
<p>Click on <b>Close & Load</b>.</p>
|
||||
<img class="ui medium centered image" src="https://az851932.vo.msecnd.net/pub/lgwswrzo" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@body@
|
||||
|
||||
</div>
|
||||
|
||||
<!-- @include footer.html -->
|
||||
<!-- @include tracking.html -->
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
160
docfiles/style.css
Normal file
160
docfiles/style.css
Normal file
@ -0,0 +1,160 @@
|
||||
body#root {
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
div.listing
|
||||
{
|
||||
color:Black;
|
||||
border-style:none;
|
||||
margin: 0px 0px 0px 0px;
|
||||
font-size: 11pt;
|
||||
font-family: Consolas, "Andale Mono WT" , "Andale Mono" , "Lucida Console" , "Lucida Sans Typewriter" , "DejaVu Sans Mono" , "Bitstream Vera Sans Mono" , "Liberation Mono" , "Nimbus Mono L" , Monaco, "Courier New" , Courier, monospace;
|
||||
padding: 5px 5px 5px 5px;
|
||||
background: #f8f8f8;
|
||||
clear: both;
|
||||
|
||||
white-space: pre-wrap; /* css-3 */
|
||||
white-space: -moz-pre-wrap !important; /* Mozilla, since 1999 */
|
||||
white-space: -pre-wrap; /* Opera 4-6 */
|
||||
white-space: -o-pre-wrap; /* Opera 7 */
|
||||
word-wrap: break-word; /* Internet Explorer 5.5+ */
|
||||
}
|
||||
div.listing A:link
|
||||
{
|
||||
color:#000020;
|
||||
text-decoration: none;
|
||||
}
|
||||
div.listing A:visited
|
||||
{
|
||||
color:#000020;
|
||||
text-decoration: none;
|
||||
}
|
||||
div.listing A:active
|
||||
{
|
||||
color:#000080;
|
||||
text-decoration: none;
|
||||
}
|
||||
div.listing A:hover
|
||||
{
|
||||
color:#000080;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.mainbody {
|
||||
margin-top: 6em;
|
||||
margin-bottom: 3em;
|
||||
}
|
||||
|
||||
.prodname {
|
||||
font-weight: normal;
|
||||
font-size: 1.8em;
|
||||
margin-left: 0.5em;
|
||||
color: #ff7d00;
|
||||
}
|
||||
|
||||
#root .editor-image {
|
||||
margin: 2em auto;
|
||||
display: block;
|
||||
max-width: 80%;
|
||||
}
|
||||
|
||||
pre {
|
||||
padding: 16px;
|
||||
overflow: auto;
|
||||
font-size: 85%;
|
||||
line-height: 1.45;
|
||||
background-color: #f7f7f7;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
code {
|
||||
padding: 0;
|
||||
padding-top: 0.2em;
|
||||
padding-bottom: 0.2em;
|
||||
margin: 0;
|
||||
font-size: 85%;
|
||||
background-color: rgba(0,0,0,0.04);
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
code:before, code:after {
|
||||
letter-spacing: -0.2em;
|
||||
content: "\00a0";
|
||||
}
|
||||
|
||||
.ui[class*="5:3"].embed {
|
||||
padding-bottom: 83%;
|
||||
background:transparent !important;
|
||||
}
|
||||
|
||||
code {
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
code.lang-config, code.lang-package { display: none;}
|
||||
code.lang-blocks::before,
|
||||
code.lang-sig::before,
|
||||
code.lang-block::before,
|
||||
code.lang-shuffle::before,
|
||||
code.lang-sim::before,
|
||||
code.lang-cards::before,
|
||||
code.lang-namespaces::before,
|
||||
code.lang-codecard::before
|
||||
{
|
||||
content:"...";
|
||||
position: absolute;
|
||||
top:calc(50% - 0.5em);
|
||||
left:calc(50% - 5em);
|
||||
}
|
||||
code.lang-blocks,
|
||||
code.lang-sig,
|
||||
code.lang-block,
|
||||
code.lang-shuffle,
|
||||
code.lang-sim,
|
||||
code.lang-cards,
|
||||
code.lang-namespaces,
|
||||
code.lang-codecard
|
||||
{
|
||||
color:transparent;
|
||||
}
|
||||
|
||||
code.lang-typescript {
|
||||
background: none !important;
|
||||
}
|
||||
|
||||
/* Limit width of text so that it's readable
|
||||
*/
|
||||
|
||||
.ui.text p,
|
||||
.ui.text li {
|
||||
max-width: 45em;
|
||||
}
|
||||
|
||||
/* wrap cards header */
|
||||
.ui.card > .content > .header {
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
|
||||
svg {
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.blocklyText {
|
||||
font-family:'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace !important;
|
||||
}
|
||||
|
||||
.blocklyCheckbox,
|
||||
.blocklyLed {
|
||||
fill: #ff3030 !important;
|
||||
text-shadow: 0px 0px 6px #f00;
|
||||
font-size: 17pt !important;
|
||||
}
|
||||
|
||||
.ui.card .blocklyPreview {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
width: calc(100% - 1em);
|
||||
max-height: calc(100% - 1em);
|
||||
}
|
1
docfiles/target.css
Normal file
1
docfiles/target.css
Normal file
@ -0,0 +1 @@
|
||||
/* To be overridden by target */
|
1
docfiles/target.js
Normal file
1
docfiles/target.js
Normal file
@ -0,0 +1 @@
|
||||
/* To be overridden by target */
|
26
docfiles/tracking.html
Normal file
26
docfiles/tracking.html
Normal file
@ -0,0 +1,26 @@
|
||||
<script type="text/javascript">
|
||||
var appInsights=window.appInsights||function(config){
|
||||
function i(config){t[config]=function(){var i=arguments;t.queue.push(function(){t[config].apply(t,i)})}}var t={config:config},u=document,e=window,o="script",s="AuthenticatedUserContext",h="start",c="stop",l="Track",a=l+"Event",v=l+"Page",y=u.createElement(o),r,f;y.src=config.url||"https://az416426.vo.msecnd.net/scripts/a/ai.0.js";u.getElementsByTagName(o)[0].parentNode.appendChild(y);try{t.cookie=u.cookie}catch(p){}for(t.queue=[],t.version="1.0",r=["Event","Exception","Metric","PageView","Trace","Dependency"];r.length;)i("track"+r.pop());return i("set"+s),i("clear"+s),i(h+a),i(c+a),i(h+v),i(c+v),i("flush"),config.disableExceptionTracking||(r="onerror",i("_"+r),f=e[r],e[r]=function(config,i,u,e,o){var s=f&&f(config,i,u,e,o);return s!==!0&&t["_"+r](config,i,u,e,o),s}),t
|
||||
}({
|
||||
instrumentationKey:"9801ed01-c40f-46ec-aa40-2a1742a9e71c",
|
||||
disableAjaxTracking: true,
|
||||
overridePageViewDuration: false,
|
||||
disableExceptionTracking: true,
|
||||
isCookieUseDisabled: true,
|
||||
isStorageUseDisabled: true
|
||||
});
|
||||
window.appInsights=appInsights;
|
||||
appInsights.queue.push(function () {
|
||||
appInsights.context.addTelemetryInitializer(function (envelope) {
|
||||
if (typeof pxtConfig === "undefined") return;
|
||||
var telemetryItem = envelope.data.baseData;
|
||||
telemetryItem.properties = telemetryItem.properties || {};
|
||||
telemetryItem.properties["target"] = pxtConfig.targetId;
|
||||
telemetryItem.properties["version"] = pxtConfig.targetVersion;
|
||||
telemetryItem.properties["stage"] = (pxtConfig.relprefix || "/--").replace(/[^a-z]/ig, '')
|
||||
if (typeof window !== "undefined" && window.location && /[?&]electron=1/i.test(window.location.href))
|
||||
telemetryItem.properties["electron"] = 1;
|
||||
});
|
||||
});
|
||||
appInsights.trackPageView();
|
||||
</script>
|
68
docfiles/vs.css
Normal file
68
docfiles/vs.css
Normal file
@ -0,0 +1,68 @@
|
||||
/*
|
||||
|
||||
Visual Studio-like style based on original C# coloring by Jason Diamond <jason@diamond.name>
|
||||
|
||||
*/
|
||||
.hljs {
|
||||
display: block;
|
||||
overflow-x: auto;
|
||||
padding: 0.5em;
|
||||
background: white;
|
||||
color: black;
|
||||
}
|
||||
|
||||
.hljs-comment,
|
||||
.hljs-quote,
|
||||
.hljs-variable {
|
||||
color: #008000;
|
||||
}
|
||||
|
||||
.hljs-keyword,
|
||||
.hljs-selector-tag,
|
||||
.hljs-built_in,
|
||||
.hljs-name,
|
||||
.hljs-tag {
|
||||
color: #00f;
|
||||
}
|
||||
|
||||
.hljs-string,
|
||||
.hljs-title,
|
||||
.hljs-section,
|
||||
.hljs-attribute,
|
||||
.hljs-literal,
|
||||
.hljs-template-tag,
|
||||
.hljs-template-variable,
|
||||
.hljs-type,
|
||||
.hljs-addition {
|
||||
color: #a31515;
|
||||
}
|
||||
|
||||
.hljs-deletion,
|
||||
.hljs-selector-attr,
|
||||
.hljs-selector-pseudo,
|
||||
.hljs-meta {
|
||||
color: #2b91af;
|
||||
}
|
||||
|
||||
.hljs-doctag {
|
||||
color: #808080;
|
||||
}
|
||||
|
||||
.hljs-attr {
|
||||
color: #f00;
|
||||
}
|
||||
|
||||
.hljs-symbol,
|
||||
.hljs-bullet,
|
||||
.hljs-link {
|
||||
color: #00b0e8;
|
||||
}
|
||||
|
||||
|
||||
.hljs-emphasis {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.hljs-strong {
|
||||
font-weight: bold;
|
||||
}
|
Reference in New Issue
Block a user