2014-03-25 13:43:11 -07:00
|
|
|
<html>
|
|
|
|
|
<head>
|
2014-05-13 19:12:06 +03:00
|
|
|
<script src="/cosmopolite/static/cosmopolite.js" charset="UTF-8"></script>
|
2014-03-25 13:43:11 -07:00
|
|
|
<style>
|
|
|
|
|
a {
|
|
|
|
|
text-decoration: none;
|
|
|
|
|
}
|
|
|
|
|
</style>
|
|
|
|
|
</head>
|
|
|
|
|
<body>
|
|
|
|
|
<div>Google user: <span id="google_user"></span></div>
|
|
|
|
|
|
2014-05-11 15:43:45 +03:00
|
|
|
<div>
|
|
|
|
|
Subject: <input type="text" id="subject">
|
|
|
|
|
<input type="button" id="subscribe" value="Subscribe">
|
|
|
|
|
</div>
|
|
|
|
|
<div>
|
|
|
|
|
<select id="subscriptions"></select>
|
|
|
|
|
<input type="button" id="unsubscribe" value="Unsubscribe">
|
|
|
|
|
</div>
|
|
|
|
|
|
2014-05-10 15:47:33 +02:00
|
|
|
<hr>
|
2014-05-11 15:43:45 +03:00
|
|
|
|
|
|
|
|
<div>
|
|
|
|
|
Message: <input type="text" id="message">
|
|
|
|
|
</div>
|
|
|
|
|
<div>
|
|
|
|
|
<input type="button" id="send" value="Send">
|
2014-05-25 23:40:56 -07:00
|
|
|
<input type="button" id="pin" value="Pin">
|
2014-05-11 15:43:45 +03:00
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<hr>
|
|
|
|
|
|
2014-05-25 23:40:56 -07:00
|
|
|
<div id="pins"></div>
|
|
|
|
|
|
|
|
|
|
<hr>
|
|
|
|
|
|
2014-05-11 15:43:45 +03:00
|
|
|
<div id="messages"></div>
|
|
|
|
|
|
2014-03-25 13:43:11 -07:00
|
|
|
<script>
|
2014-05-10 15:47:33 +02:00
|
|
|
var subject = document.getElementById('subject');
|
|
|
|
|
var subscriptions = document.getElementById('subscriptions');
|
2014-05-11 15:43:45 +03:00
|
|
|
|
2014-05-10 15:47:33 +02:00
|
|
|
var message = document.getElementById('message');
|
2014-04-30 17:54:48 -07:00
|
|
|
|
2014-05-25 23:40:56 -07:00
|
|
|
var pins = document.getElementById('pins');
|
|
|
|
|
|
2014-05-11 19:34:42 +03:00
|
|
|
var messages = document.getElementById('messages');
|
2014-04-30 17:54:48 -07:00
|
|
|
|
2014-05-10 15:47:33 +02:00
|
|
|
var addMessage = function(message) {
|
|
|
|
|
var messageDiv = document.createElement('div');
|
2014-05-11 15:09:16 +03:00
|
|
|
messageDiv.appendChild(document.createTextNode(
|
2014-05-10 15:47:33 +02:00
|
|
|
(new Date(message['created'] * 1000)).toString() +
|
2014-05-11 15:09:16 +03:00
|
|
|
' <????-' + (Math.abs(message['sender'].hashCode()) % 10000) + '> ' +
|
2014-05-10 15:47:33 +02:00
|
|
|
message['message']
|
2014-05-11 15:09:16 +03:00
|
|
|
));
|
2014-05-10 15:47:33 +02:00
|
|
|
messages.appendChild(messageDiv);
|
|
|
|
|
};
|
|
|
|
|
|
2014-05-25 23:40:56 -07:00
|
|
|
var addPin = function(pin) {
|
|
|
|
|
var pinDiv = document.createElement('div');
|
|
|
|
|
pinDiv.appendChild(document.createTextNode(
|
|
|
|
|
(new Date(pin['created'] * 1000)).toString() +
|
|
|
|
|
' <????-' + (Math.abs(pin['sender'].hashCode()) % 10000) + '> ' +
|
|
|
|
|
pin['message']
|
|
|
|
|
));
|
|
|
|
|
pinDiv.pinId = pin['id'];
|
|
|
|
|
pins.appendChild(pinDiv);
|
|
|
|
|
};
|
|
|
|
|
|
2014-03-25 13:43:11 -07:00
|
|
|
window.addEventListener('load', function() {
|
|
|
|
|
var googleUser = document.getElementById('google_user');
|
|
|
|
|
|
|
|
|
|
var callbacks = {
|
|
|
|
|
onLogin: function(username, logout_url) {
|
|
|
|
|
googleUser.innerHTML =
|
|
|
|
|
username +
|
|
|
|
|
' <a href="' + logout_url + '" target="_blank">(log out)</a>';
|
|
|
|
|
},
|
|
|
|
|
onLogout: function(login_url) {
|
|
|
|
|
googleUser.innerHTML =
|
|
|
|
|
'<a href="' + login_url + '" target="_blank">(log in)</a>';
|
|
|
|
|
},
|
2014-05-10 15:47:33 +02:00
|
|
|
onMessage: function(message) {
|
2014-05-18 10:49:38 +03:00
|
|
|
if (subscriptions.value != message['subject']['name']) {
|
2014-05-10 15:47:33 +02:00
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
addMessage(message);
|
|
|
|
|
},
|
2014-05-25 23:40:56 -07:00
|
|
|
onPin: function(pin) {
|
|
|
|
|
if (subscriptions.value != pin['subject']['name']) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
addPin(pin);
|
|
|
|
|
},
|
|
|
|
|
onUnpin: function(pin) {
|
|
|
|
|
if (subscriptions.value != pin['subject']['name']) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
for (var i = 0; i < pins.childNodes.length; i++) {
|
|
|
|
|
var pinDiv = pins.childNodes[i];
|
|
|
|
|
if (pinDiv.pinId == pin['id']) {
|
|
|
|
|
pins.removeChild(pinDiv);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
2014-03-25 13:43:11 -07:00
|
|
|
};
|
|
|
|
|
|
2014-05-13 17:42:52 +03:00
|
|
|
var debug = new Cosmopolite(callbacks);
|
2014-03-25 13:43:11 -07:00
|
|
|
|
2014-05-10 15:47:33 +02:00
|
|
|
document.getElementById('subscribe').addEventListener('click', function() {
|
|
|
|
|
debug.subscribe(subject.value, -1);
|
|
|
|
|
var option = document.createElement('option');
|
|
|
|
|
option.text = subject.value;
|
|
|
|
|
subscriptions.options.add(option);
|
|
|
|
|
subscriptions.dispatchEvent(new CustomEvent('change'));
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
document.getElementById('unsubscribe').addEventListener('click', function() {
|
|
|
|
|
debug.unsubscribe(subscriptions.value);
|
|
|
|
|
subscriptions.options.remove(subscriptions.options.selectedIndex);
|
|
|
|
|
subscriptions.dispatchEvent(new CustomEvent('change'));
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
document.getElementById('send').addEventListener('click', function() {
|
2014-05-25 23:50:53 -07:00
|
|
|
debug.sendMessage(subscriptions.value, message.value);
|
2014-05-10 15:47:33 +02:00
|
|
|
});
|
|
|
|
|
|
2014-05-25 23:40:56 -07:00
|
|
|
document.getElementById('pin').addEventListener('click', function() {
|
|
|
|
|
debug.pin(subscriptions.value, message.value);
|
|
|
|
|
});
|
|
|
|
|
|
2014-05-10 15:47:33 +02:00
|
|
|
document.getElementById('subscriptions').addEventListener('change', function() {
|
|
|
|
|
messages.innerHTML = '';
|
2014-05-25 23:40:56 -07:00
|
|
|
pins.innerHTML = '';
|
2014-05-10 15:47:33 +02:00
|
|
|
if (!subscriptions.value) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
debug.getMessages(subscriptions.value).forEach(addMessage);
|
2014-05-25 23:40:56 -07:00
|
|
|
debug.getPins(subscriptions.value).forEach(addPin);
|
2014-05-10 15:47:33 +02:00
|
|
|
});
|
|
|
|
|
|
2014-03-25 13:43:11 -07:00
|
|
|
});
|
|
|
|
|
</script>
|
|
|
|
|
</body>
|
|
|
|
|
</html>
|