forked from 0x2620/pandora
168 lines
5 KiB
JavaScript
168 lines
5 KiB
JavaScript
|
'use strict';
|
||
|
|
||
|
|
||
|
pandora.ui.pageDialog = function(options, self) {
|
||
|
self = self || {}
|
||
|
self.options = Ox.extend({
|
||
|
}, options);
|
||
|
|
||
|
console.log(options)
|
||
|
|
||
|
var dialogHeight = Math.round((window.innerHeight - 48) * 0.9) - 24,
|
||
|
dialogWidth = Math.round(window.innerWidth * 0.9) - 48,
|
||
|
isItemView = !pandora.$ui.documentsDialog,
|
||
|
|
||
|
$content = Ox.Element(),
|
||
|
|
||
|
that = Ox.Dialog({
|
||
|
closeButton: true,
|
||
|
content: $content,
|
||
|
focus: false,
|
||
|
height: dialogHeight,
|
||
|
maximizeButton: true,
|
||
|
minHeight: 256,
|
||
|
minWidth: 512,
|
||
|
padding: 0,
|
||
|
removeOnClose: true,
|
||
|
title: '',
|
||
|
width: dialogWidth
|
||
|
})
|
||
|
.bindEvent({
|
||
|
close: function() {
|
||
|
delete pandora.$ui.pageDialog;
|
||
|
},
|
||
|
resize: function(data) {
|
||
|
dialogHeight = data.height;
|
||
|
dialogWidth = data.width;
|
||
|
$content.options({
|
||
|
height: dialogHeight,
|
||
|
width: dialogWidth
|
||
|
});
|
||
|
},
|
||
|
}),
|
||
|
|
||
|
$infoButton = Ox.Button({
|
||
|
title: 'info',
|
||
|
tooltip: Ox._('Open PDF'),
|
||
|
type: 'image'
|
||
|
})
|
||
|
.css({
|
||
|
position: 'absolute',
|
||
|
right: '24px',
|
||
|
top: '4px'
|
||
|
})
|
||
|
.bindEvent({
|
||
|
click: function(data) {
|
||
|
that.close();
|
||
|
pandora.URL.push(`/documents/${self.options.document}/${self.options.page}`);
|
||
|
}
|
||
|
}),
|
||
|
|
||
|
$selectButton = Ox.ButtonGroup({
|
||
|
buttons: [
|
||
|
{id: 'previous', title: 'left', tooltip: Ox._('Previous')},
|
||
|
{id: 'next', title: 'right', tooltip: Ox._('Next')}
|
||
|
],
|
||
|
type: 'image'
|
||
|
})
|
||
|
.css({
|
||
|
position: 'absolute',
|
||
|
right: '44px',
|
||
|
top: '4px'
|
||
|
})
|
||
|
[self.options.pages.length > 1 ? 'show' : 'hide']()
|
||
|
.bindEvent({
|
||
|
click: function(data) {
|
||
|
var pageIdx = self.options.pages.indexOf(self.options.page)
|
||
|
if (data.id == 'previous') {
|
||
|
pageIdx--
|
||
|
} else {
|
||
|
pageIdx++
|
||
|
}
|
||
|
if (pageIdx < 0) {
|
||
|
pageIdx = self.options.pages.length - 1
|
||
|
} else if (pageIdx >= self.options.pages.length) {
|
||
|
pageIdx = 0
|
||
|
}
|
||
|
that.update({
|
||
|
page: self.options.pages[pageIdx]
|
||
|
})
|
||
|
}
|
||
|
});
|
||
|
|
||
|
$(that.find('.OxBar')[0])
|
||
|
.append($infoButton)
|
||
|
.append($selectButton);
|
||
|
// fixme: why is this needed?
|
||
|
$(that.find('.OxContent')[0]).css({overflow: 'hidden'});
|
||
|
|
||
|
setTitle();
|
||
|
setContent();
|
||
|
|
||
|
function setContent() {
|
||
|
var url = `/documents/${self.options.document}/1024p${self.options.page}.jpg`
|
||
|
if (self.options.query) {
|
||
|
url += '?q=' + encodeURIComponent(self.options.query)
|
||
|
}
|
||
|
$content.replaceWith(
|
||
|
$content = (
|
||
|
Ox.ImageViewer({
|
||
|
area: [],
|
||
|
height: dialogHeight,
|
||
|
imageHeight: self.options.dimensions[1],
|
||
|
imagePreviewURL: url.replace('/1024p', `/${self.options.size}p`),
|
||
|
imageURL: url,
|
||
|
imageWidth: self.options.dimensions[0],
|
||
|
width: dialogWidth
|
||
|
})
|
||
|
)
|
||
|
.bindEvent({
|
||
|
center: function(data) {
|
||
|
/*
|
||
|
pandora.UI.set(
|
||
|
'documents.' + item.id,
|
||
|
{position: $content.getArea().map(Math.round)}
|
||
|
);
|
||
|
*/
|
||
|
},
|
||
|
key_escape: function() {
|
||
|
pandora.$ui.pageDialog.close();
|
||
|
},
|
||
|
page: function(data) {
|
||
|
/*
|
||
|
pandora.UI.set(
|
||
|
'documents.' + item.id,
|
||
|
{position: data.page}
|
||
|
);
|
||
|
*/
|
||
|
},
|
||
|
zoom: function(data) {
|
||
|
/*
|
||
|
pandora.UI.set(
|
||
|
'documents.' + item.id,
|
||
|
{position: $content.getArea().map(Math.round)}
|
||
|
);
|
||
|
*/
|
||
|
}
|
||
|
})
|
||
|
);
|
||
|
}
|
||
|
|
||
|
function setTitle() {
|
||
|
that.options({
|
||
|
title: (self.options.title || "") + " Page " + self.options.page
|
||
|
});
|
||
|
}
|
||
|
|
||
|
|
||
|
that.update = function(options) {
|
||
|
self.options = Ox.extend(self.options, options)
|
||
|
setTitle();
|
||
|
setContent();
|
||
|
};
|
||
|
|
||
|
return that;
|
||
|
|
||
|
};
|
||
|
|