pWiki/index.html
Alex A. Naanou 0e4703b1b3 make wikiwords passive...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
2016-07-22 21:46:23 +03:00

127 lines
2.5 KiB
HTML
Executable File

<!DOCTYPE html>
<html>
<head>
<title>pWiki</title>
</head>
<style>
</style>
<script src="ext-lib/jquery.js"></script>
<script src="ext-lib/pouchdb.min.js"></script>
<script src="ext-lib/peer.min.js"></script>
<script src="wiki.js"></script>
<script>
var clear = () => {
delete localStorage['wiki-data']
delete localStorage['wiki-location']
}
var reload = () => {
$('.wiki')
.html(Wiki.get('./_view').text)
// XXX save...
localStorage['wiki-data'] = JSON.stringify(Wiki.__wiki_data)
localStorage['wiki-location'] = Wiki.location
$('title').text(Wiki.location)
}
var update_editor = function(){
// XXX make this update on enter...
$('.title')
.on('blur', () => {
Wiki.title = $('.title').text()
reload()
})
// live update text...
// XXX is this the right way to go for large documents???
$('.text')
.focus(() => {
console.log('EDITING...')
$('.text').prop('contenteditable', $('.text').prop('contenteditable') != 'true')
reload()
})
.on('keyup', () => {
if($('.text').prop('contenteditable') == 'true'){
Wiki.raw = clearWikiWords($('.text').clone()).html()
}
})
// XXX do this live, but on a timeout after user input...
// XXX need to place the cursor in the same position...
.blur(() => {
$('.text').prop('contenteditable', false)
reload()
})
}
var go = (path) => {
console.log('GO:', path)
path = path.trim()
path = path[0] == '[' ? path.slice(1, -1) : path
history.pushState({
wikipath: path
},
Wiki.title,
window.location)
Wiki.location = path
reload()
}
$(() => {
$(window).on('popstate', function(evt){
event.state
&& event.state.wikipath
&& go(event.state.wikipath)
})
// load stored data...
Wiki.__wiki_data = localStorage['wiki-data'] ?
JSON.parse(localStorage['wiki-data'])
: data
Wiki.__wiki_data.__proto__ = data
Wiki.location = localStorage['wiki-location'] || Wiki.location
reload()
//update_editor()
$(window).on('hashchange', function(evt){
evt.preventDefault()
var path = location.hash.slice(1)
var hash = path.split('#')
path = hash.shift()
hash = hash.pop() || ''
go(path)
if(hash.length > 0){
// XXX focus anchor...
}
})
})
</script>
<body>
<div class="wiki"></div>
<!--div class="path"></div>
<hr>
<h1 class="title" contenteditable tabindex=0></h1>
<div class="text" tabindex=0></div-->
</body>
</html>
<!-- vim:set sw=4 ts=4 : -->