minimal support for txt documents
This commit is contained in:
parent
3c69c0c101
commit
94d57028cd
10 changed files with 761 additions and 5 deletions
100
static/js/TXTViewer.js
Normal file
100
static/js/TXTViewer.js
Normal file
|
|
@ -0,0 +1,100 @@
|
|||
'use strict';
|
||||
|
||||
/*@
|
||||
Ox.TXTViewer <f> TXT Viewer
|
||||
options <o> Options
|
||||
center <[n]|s|'auto'> Center ([x, y] or 'auto')
|
||||
height <n|384> Viewer height in px
|
||||
maxZoom <n|16> Maximum zoom (minimum zoom is 'fit')
|
||||
txtjsURL <s|'/static/txt.js/'> URL to txt.js
|
||||
url <s|''> TXT URL
|
||||
width <n|512> Viewer width in px
|
||||
zoom <n|s|'fit'> Zoom (number or 'fit' or 'fill')
|
||||
self <o> Shared private variable
|
||||
([options[, self]]) -> <o:OxElement> TXT Viewer
|
||||
center <!> Center changed
|
||||
center <[n]|s> Center
|
||||
zoom <!> Zoom changed
|
||||
zoom <n|s> Zoom
|
||||
page <!> Page changed
|
||||
page <n|s> Page
|
||||
@*/
|
||||
Ox.TXTViewer = function(options, self) {
|
||||
|
||||
self = self || {};
|
||||
var that = Ox.Element({}, self)
|
||||
.defaults({
|
||||
center: 'auto',
|
||||
height: 384,
|
||||
page: 1,
|
||||
maxZoom: 16,
|
||||
url: '',
|
||||
width: 512,
|
||||
zoom: 'fit'
|
||||
})
|
||||
.options(options || {})
|
||||
.update({
|
||||
center: function() {
|
||||
setCenterAndZoom();
|
||||
},
|
||||
page: updatePage,
|
||||
// allow for setting height and width at the same time
|
||||
height: updateSize,
|
||||
url: function() {
|
||||
self.$iframe.postMessage('txt', {txt: self.options.url});
|
||||
},
|
||||
width: updateSize,
|
||||
zoom: function() {
|
||||
setCenterAndZoom();
|
||||
}
|
||||
})
|
||||
.addClass('OxTXTViewer')
|
||||
.on({
|
||||
})
|
||||
.bindEvent({
|
||||
});
|
||||
|
||||
self.$iframe = Ox.Element('<iframe>')
|
||||
.attr({
|
||||
frameborder: 0,
|
||||
height: self.options.height + 'px',
|
||||
src: '/static/txt.js/?' + pandora.getVersion() + '&file=' + encodeURIComponent(self.options.url),
|
||||
width: self.options.width + 'px'
|
||||
})
|
||||
.onMessage(function(data, event) {
|
||||
that.triggerEvent(event, data);
|
||||
})
|
||||
.appendTo(that);
|
||||
|
||||
updateSize();
|
||||
|
||||
function setCenterAndZoom() {
|
||||
}
|
||||
|
||||
function updatePage() {
|
||||
self.$iframe.postMessage('page', {page: self.options.page});
|
||||
}
|
||||
|
||||
function updateSize() {
|
||||
that.css({
|
||||
height: self.options.height + 'px',
|
||||
width: self.options.width + 'px',
|
||||
});
|
||||
self.$iframe.css({
|
||||
height: self.options.height + 'px',
|
||||
width: self.options.width + 'px',
|
||||
});
|
||||
}
|
||||
|
||||
/*@
|
||||
postMessage <f> postMessage
|
||||
(event, data) -> <o> post message to txt.js
|
||||
@*/
|
||||
that.postMessage = function(event, data) {
|
||||
self.$iframe.postMessage(event, data);
|
||||
}
|
||||
|
||||
return that;
|
||||
};
|
||||
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue