<html>
<head>
<title>Ist heute Maschinendeck Treffen?</title>
<style>
body {
text-align: center;
font-family: Helvetica;
}
#state {
font-size: 25px;
}
</style>
</head>
<body>
<h1>Ist heute Maschinendeck Treffen?</h1>
<div id="state"></div>
<script>
document.querySelector('#state').innerHTML = ((new Date()).getDay() === 3) ? "Ja" : "Nein";
</script>
</body>
</html>
(function () {
var TODOModel = Promenade.Model.extend({
type: 'todo',
defaults: {
done: false,
description: ''
}
});
var TODOCollection = Promenade.Collection.extend({
model: TODOModel
});
var TODOController = Promenade.Controller.extend({
defineRoutes: function () {
this.handle('', 'defaultRoute');
this.handle('create', 'createTodo');
},
defaultRoute: function () {
this.app.redirect('create');
},
createTodo: function () {
this.app.view.contentRegion.show(new TODOListView({
collection: this.app.todoCollection
}));
}
});
var TODONewView = Promenade.View.extend({
tagName: 'form',
template: 'new',
events: {
'submit': 'handleSubmit'
},
handleSubmit: function (e) {
this.collection.add(new TODOModel({
description: this.getDescriptionText()
}));
// Cancel the default form behavior:
return false;
},
getDescriptionText: function () {
return this.$el.find('input').val();
}
});
var TODOItemView = Promenade.View.extend({
tagName: 'li',
template: 'item',
events: {
'click input': 'toggleDone'
},
toggleDone: function () {
this.model.set(
'done',
!this.model.get('done')
);
this.$el.toggleClass(
'done',
this.model.get('done')
);
}
});
var TODOListView = Promenade.CollectionView.extend({
tagName: 'div',
template: 'list',
layout: {
'new': '.new-region',
'outlet': '.outlet-region'
},
itemClass: TODOItemView,
initialize: function () {
Promenade.CollectionView.prototype.initialize.apply(this, arguments);
this.newRegion.show(new TODONewView({
collection: this.collection
}));
}
});
var TODOApplication = Promenade.Application.extend({
models: [
TODOCollection
],
controllers: [
TODOController
],
view: Promenade.View.extend({
el: document.body,
layout: {
'content': ''
}
})
});
window.app = new TODOApplication();
app.initializes.then(function () {
Backbone.history.start();
console.log('Done!');
});
})();
Output
You can jump to the latest bin by adding /latest
to your URL
Keyboard Shortcuts
Shortcut | Action |
---|---|
ctrl + [num] | Toggle nth panel |
ctrl + 0 | Close focused panel |
ctrl + enter | Re-render output. If console visible: run JS in console |
Ctrl + l | Clear the console |
ctrl + / | Toggle comment on selected lines |
ctrl + ] | Indents selected lines |
ctrl + [ | Unindents selected lines |
tab | Code complete & Emmet expand |
ctrl + shift + L | Beautify code in active panel |
ctrl + s | Save & lock current Bin from further changes |
ctrl + shift + s | Open the share options |
ctrl + y | Archive Bin |
Complete list of JS Bin shortcuts |
JS Bin URLs
URL | Action |
---|---|
/ | Show the full rendered output. This content will update in real time as it's updated from the /edit url. |
/edit | Edit the current bin |
/watch | Follow a Code Casting session |
/embed | Create an embeddable version of the bin |
/latest | Load the very latest bin (/latest goes in place of the revision) |
/[username]/last | View the last edited bin for this user |
/[username]/last/edit | Edit the last edited bin for this user |
/[username]/last/watch | Follow the Code Casting session for the latest bin for this user |
/quiet | Remove analytics and edit button from rendered output |
.js | Load only the JavaScript for a bin |
.css | Load only the CSS for a bin |
Except for username prefixed urls, the url may start with http://jsbin.com/abc and the url fragments can be added to the url to view it differently. |