Skip to content
Snippets Groups Projects
Commit d3d64524 authored by Ron Lucke's avatar Ron Lucke Committed by Jan-Hendrik Willms
Browse files

fix #3948

Closes #3948

Merge request studip/studip!2805
parent 16a6bbe0
No related branches found
No related tags found
No related merge requests found
...@@ -109,6 +109,7 @@ ...@@ -109,6 +109,7 @@
.cw-pdf-outer-container { .cw-pdf-outer-container {
position: relative; position: relative;
width: 100%; width: 100%;
overflow: hidden;
.cw-pdf-content { .cw-pdf-content {
display: flex; display: flex;
......
...@@ -131,8 +131,8 @@ ...@@ -131,8 +131,8 @@
</button> </button>
<select v-model="currentScale" :aria-label="$gettext('Zoom')" @change="updateZoom"> <select v-model="currentScale" :aria-label="$gettext('Zoom')" @change="updateZoom">
<option v-show="false" :value="currentScale">{{ formattedZoom }}%</option> <option v-show="false" :value="currentScale">{{ formattedZoom }}%</option>
<option v-for="(value, index) in scaleValues" :key="index" :value="value"> <option v-for="(value, index) in scaleValues" :key="index" :value="value.scale">
{{ value * 100 }}% {{ value.name }}
</option> </option>
</select> </select>
</div> </div>
...@@ -305,7 +305,7 @@ export default { ...@@ -305,7 +305,7 @@ export default {
pdfAnnotationLayer: null, pdfAnnotationLayer: null,
pdfAnnotation: false, pdfAnnotation: false,
pdfRotate: 0, pdfRotate: 0,
PdfViewer: null, pdfViewer: null,
pdfEventBus: null, pdfEventBus: null,
pdfLinkService: null, pdfLinkService: null,
pdfFindController: null, pdfFindController: null,
...@@ -322,8 +322,8 @@ export default { ...@@ -322,8 +322,8 @@ export default {
pageNum: 1, pageNum: 1,
pageCount: 0, pageCount: 0,
scale: 1, scale: 1,
baseScale: 1,
currentScale: 1, currentScale: 1,
scaleValues: [0.5, 1, 1.5, 2, 3, 4],
file: null, file: null,
srMessage: '', srMessage: '',
...@@ -361,10 +361,23 @@ export default { ...@@ -361,10 +361,23 @@ export default {
formattedZoom() { formattedZoom() {
return Number.parseInt(this.scale * 100, 10); return Number.parseInt(this.scale * 100, 10);
}, },
scaleValues() {
const defaultValues = [
{ name: '25%', scale: 0.25 },
{ name: '50%', scale: 0.5 },
{ name: '75%', scale: 0.75 },
{ name: '100%', scale: 1.0 },
{ name: '150%', scale: 1.5 },
{ name: '200%', scale: 2.0 },
{ name: '300%', scale: 3.0 },
];
return defaultValues.concat([{ name: this.$gettext('volle Breite'), scale: this.baseScale }]);
},
}, },
watch: { watch: {
scale(newValue) { scale(newValue) {
let overflow = newValue > 1 ? 'auto' : 'hidden'; let overflow = newValue > this.baseScale ? 'auto' : 'hidden';
let container = this.$refs.container; let container = this.$refs.container;
container.style.overflow = overflow; container.style.overflow = overflow;
this.currentScale = newValue; this.currentScale = newValue;
...@@ -473,9 +486,12 @@ export default { ...@@ -473,9 +486,12 @@ export default {
.getPage(parseInt(view.pageNum)) .getPage(parseInt(view.pageNum))
.then((pdfPage) => { .then((pdfPage) => {
view.pdfPage = pdfPage; view.pdfPage = pdfPage;
const width = outerContainer.offsetWidth;
view.baseScale = (width / pdfPage.view[2] / 1.33).toFixed(2);
view.scale = view.baseScale;
// Creating the page view with default parameters. // Creating the page view with default parameters.
let defaultViewport = pdfPage.getViewport({ let defaultViewport = pdfPage.getViewport({
scale: 1.35, scale: 1.0,
}); });
view.pdfBasePage = new PDFViewer({ view.pdfBasePage = new PDFViewer({
...@@ -512,8 +528,6 @@ export default { ...@@ -512,8 +528,6 @@ export default {
view.pdfViewer.setPdfPage(view.pdfPage); view.pdfViewer.setPdfPage(view.pdfPage);
// Set LinkService viewer // Set LinkService viewer
view.pdfLinkService.setViewer(view.pdfViewer); view.pdfLinkService.setViewer(view.pdfViewer);
// Set outer container height
outerContainer.style.height = container.offsetHeight + 'px';
view.renderPage(); view.renderPage();
}) })
.catch((err) => { .catch((err) => {
...@@ -610,12 +624,12 @@ export default { ...@@ -610,12 +624,12 @@ export default {
this.updateSrMessage(this.$gettext('gedreht')); this.updateSrMessage(this.$gettext('gedreht'));
}, },
zoomIn() { zoomIn() {
this.scale = this.scale < 4 ? (this.scale * 10 + 1) / 10 : this.scale; this.scale = this.scale < 4 ? ((this.scale * 10 + 1) / 10).toFixed(1) : this.scale;
this.renderPage(); this.renderPage();
this.updateSrMessage(this.$gettext('vergrößert')); this.updateSrMessage(this.$gettext('vergrößert'));
}, },
zoomOut() { zoomOut() {
this.scale = this.scale > 0.1 ? (this.scale * 10 - 1) / 10 : this.scale; this.scale = this.scale > 0.1 ? ((this.scale * 10 - 1) / 10).toFixed(1) : this.scale;
this.renderPage(); this.renderPage();
this.updateSrMessage(this.$gettext('verkleinert')); this.updateSrMessage(this.$gettext('verkleinert'));
}, },
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment