parse document position

This commit is contained in:
j 2018-03-13 18:40:37 +05:30
parent af0affb7bf
commit a7d70c15ea
3 changed files with 23 additions and 6 deletions

View file

@ -254,7 +254,7 @@ pandora.URL = (function() {
set[!state.item ? 'collectionView' : 'documentView'] = state.view; set[!state.item ? 'collectionView' : 'documentView'] = state.view;
} }
if (state.span) { if (state.span) {
if (Ox.isNumber(state.pan)) { if (Ox.isNumber(state.span)) {
set['documents.' + state.item] = {position: state.span}; set['documents.' + state.item] = {position: state.span};
} else { } else {
set['documents.' + state.item] = {name: state.span}; set['documents.' + state.item] = {name: state.span};

View file

@ -393,8 +393,17 @@ pandora.ui.textHTML = function(text) {
if (settings.name) { if (settings.name) {
element = that.find('*[data-name="' + settings.name + '"]'); element = that.find('*[data-name="' + settings.name + '"]');
if (element.length) { if (element.length) {
scrollTop = Math.max(that[0].scrollTop + element.offset().top - 48, 0); scrollTop = that[0].scrollTop + element.offset().top;
position = 100 * scrollTop / that[0].scrollHeight; if (pandora.user.ui.page == 'document') {
scrollTop -= 48;
} else {
scrollTop -= 80;
if (pandora.user.ui.showBrowser) {
scrollTop -= (112 + Ox.UI.SCROLLBAR_SIZE);
}
}
position = 100 * Math.max(scrollTop, 0) / that[0].scrollHeight;
} }
} }
scrollTo(position); scrollTo(position);

View file

@ -1994,9 +1994,11 @@ pandora.getSpan = function(state, val, callback) {
if (Ox.contains(['epub', 'pdf', 'txt'], extension)) { if (Ox.contains(['epub', 'pdf', 'txt'], extension)) {
state.span = Ox.limit(parseInt(val), 1, dimensions); state.span = Ox.limit(parseInt(val), 1, dimensions);
} else if (Ox.contains(['html'], extension)) { } else if (Ox.contains(['html'], extension)) {
//fixme: allow numbers or check names? if (pandora.isNumericalSpan(val)) {
//state.span = Ox.limit(parseInt(val), 0, 100); state.span = Ox.limit(parseInt(val), 0, 100);
state.span = val } else {
state.span = val;
}
} else if (Ox.contains(['gif', 'jpg', 'png'], extension)) { } else if (Ox.contains(['gif', 'jpg', 'png'], extension)) {
values = val.split(','); values = val.split(',');
if (values.length == 4) { if (values.length == 4) {
@ -2443,6 +2445,12 @@ pandora.isLicensed = function() {
return !pandora.site.license || pandora.site.license > +new Date(); return !pandora.site.license || pandora.site.license > +new Date();
}; };
pandora.isNumericalSpan = function(str) {
return str.split(',').every(function(str) {
return /^[0-9-\.:]+$/.test(str);
});
}
pandora.isPrintURL = function(url) { pandora.isPrintURL = function(url) {
url = url || document.location.href; url = url || document.location.href;
var hash = Ox.parseURL(url).hash; var hash = Ox.parseURL(url).hash;