Files
Yajbir Singh f1b860b25c
Some checks failed
check / markdownlint (push) Has been cancelled
check / spellchecker (push) Has been cancelled
updated
2025-12-11 19:03:17 +05:30

282 lines
9.6 KiB
JavaScript

/*
* (c) Copyright Ascensio System SIA 2010-2024
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at 20A-6 Ernesta Birznieka-Upish
* street, Riga, Latvia, EU, LV-1050.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
window.onload = function()
{
var holder = document.getElementById("mainPanel");
holder.ondragover = function(e)
{
var isFile = false;
if (e.dataTransfer.types)
{
for (var i = 0, length = e.dataTransfer.types.length; i < length; ++i)
{
var type = e.dataTransfer.types[i].toLowerCase();
if (type == "files" && e.dataTransfer.items && e.dataTransfer.items.length == 1)
{
var item = e.dataTransfer.items[0];
if (item.kind && "file" == item.kind.toLowerCase())
{
isFile = true;
break;
}
}
}
}
e.dataTransfer.dropEffect = isFile ? "copy" : "none";
e.preventDefault();
return false;
};
holder.ondrop = function(e)
{
var file = e.dataTransfer.files ? e.dataTransfer.files[0] : null;
if (!file)
{
e.preventDefault();
return false;
}
var reader = new FileReader();
reader.onload = function(e) {
window.Viewer.open(e.target.result);
};
reader.readAsArrayBuffer(file);
return false;
};
var g_positionSplitter = 200;
var g_positionSplitterW = 5;
var g_mainHeaderHeight = 50;
window.onresize = function()
{
AscViewer.checkApplicationScale();
document.getElementById("leftPanel").style.width = g_positionSplitter + "px";
document.getElementById("buttonBookmarks").style.left = "10px";
document.getElementById("buttonBookmarks").style.width = ((g_positionSplitter >> 1) - 20) + "px";
document.getElementById("buttonThumbnails").style.left = ((g_positionSplitter >> 1) + 10) + "px";
document.getElementById("buttonThumbnails").style.width = ((g_positionSplitter >> 1) - 20) + "px";
document.getElementById("panelBookmarks").style.width = g_positionSplitter + "px";
document.getElementById("panelThumbnails").style.width = g_positionSplitter + "px";
document.getElementById("mainPanel").style.left = g_positionSplitter + g_positionSplitterW + "px";
document.getElementById("mainPanel").style.width = window.innerWidth - g_positionSplitter - g_positionSplitterW + "px";
document.getElementById("mainPanel").style.height = (window.innerHeight - g_mainHeaderHeight) + "px";
document.getElementById("mainPanelHeader").style.left = g_positionSplitter + g_positionSplitterW + "px";
document.getElementById("mainPanelHeader").style.width = window.innerWidth - g_positionSplitter - g_positionSplitterW + "px";
var footerPanelStyle = document.getElementById("headerPanel");
footerPanelStyle.style.left = ((window.innerWidth - g_positionSplitter - g_positionSplitterW - footerPanelStyle.offsetWidth) >> 1) + "px";
footerPanelStyle.style.top = ((g_mainHeaderHeight - footerPanelStyle.offsetHeight) >> 1) + "px";
var trackBarH = 50;
var tabsBarH = 50;
var panelH = window.innerHeight - tabsBarH;
document.getElementById("panelThimbnailsNatural").style.height = panelH - trackBarH + "px";
document.getElementById("zoomPanel").style.top = panelH - trackBarH + "px";
document.getElementById("zoomPanel").style.height = trackBarH + "px";
document.getElementById("zoomPanel").style.left = "10px";
document.getElementById("zoomPanel").style.width = g_positionSplitter - 20 + "px";
document.getElementById("splitter").style.left = g_positionSplitter + "px";
document.getElementById("splitter").style.width = g_positionSplitterW + "px";
window.Viewer && window.Viewer.resize();
window.Thumbnails && window.Thumbnails.resize();
};
window.onresize();
window.initTrackBars();
document.getElementById("buttonBookmarks").onclick = function()
{
document.getElementById("panelBookmarks").style.display = "block";
document.getElementById("panelThumbnails").style.display = "none";
};
document.getElementById("buttonThumbnails").onclick = function()
{
document.getElementById("panelBookmarks").style.display = "none";
document.getElementById("panelThumbnails").style.display = "block";
};
var g_positionSplitterPosOld = 0;
document.getElementById("splitter").onmousedown = function(e)
{
g_isSplitterMoving = true;
document.getElementById("leftPanel").style.pointerEvents = "none";
document.getElementById("mainPanel").style.pointerEvents = "none";
document.getElementById("splitter").style.pointerEvents = "none";
g_positionSplitterPosOld = g_positionSplitter;
var xPos = (e.pageX === undefined) ? e.clientX : e.pageX;
document.body.style.cursor = "w-resize";
document.body.onmousemove = function(e)
{
document.body.style.cursor = "w-resize";
var xPosNew = (e.pageX === undefined) ? e.clientX : e.pageX;
g_positionSplitter = g_positionSplitterPosOld + (xPosNew - xPos);
window.onresize();
};
document.body.onmouseup = function(e)
{
document.getElementById("leftPanel").style.pointerEvents = "";
document.getElementById("mainPanel").style.pointerEvents = "";
document.getElementById("splitter").style.pointerEvents = "";
document.body.onmousemove = function(e) {};
document.body.onmouseup = function(e) {};
document.body.style.cursor = "default";
};
};
document.getElementById("splitter").onmouseup = function(e)
{
document.getElementById("leftPanel").style.pointerEvents = "";
document.getElementById("mainPanel").style.pointerEvents = "";
document.getElementById("splitter").style.pointerEvents = "";
document.body.onmousemove = function(e) {};
document.body.onmouseup = function(e) {};
};
var options = {};
//options.enginePath = "./../src/engine/"; // FOR NO-MINIMIZED TEST (index.html)
//options.theme = { type : "dark" };
//options.fontsPath = "https://url_to_fonts/";
window.Viewer = new window.AscViewer.CViewer("mainPanel", options);
window.Thumbnails = window.Viewer.createThumbnails("panelThimbnailsNatural");
var trackbar = document.querySelectorAll('.trackbar')[0];
trackbar.onChangedValue = function(val) {
window.Thumbnails.setZoom(val);
};
window.Viewer.registerEvent("onStructure", function(structure){
AscInterface.updateStructure(structure);
});
window.Thumbnails.registerEvent("onZoomChanged", function(value){
trackbar.setPosition(value);
});
document.getElementById("zoomMode").addEventListener("change", function(e) {
var selectElement = e.target;
var value = selectElement.value;
switch (value)
{
case "zmWidth":
{
window.Viewer.setZoomMode(AscCommon.ViewerZoomMode.Width);
break;
}
case "zmPage":
{
window.Viewer.setZoomMode(AscCommon.ViewerZoomMode.Page);
break;
}
default:
{
if (0 === value.indexOf("custom"))
window.Viewer.setZoom(parseInt(value.substr(6)));
break;
}
}
});
document.getElementById("selectMode").addEventListener("change", function(e) {
var selectElement = e.target;
var value = selectElement.value;
switch (value)
{
case "smText":
{
window.Viewer.setTargetType("text");
break;
}
case "smHand":
default:
{
window.Viewer.setTargetType("hand");
break;
}
}
});
var zoom_values = [50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 320, 340, 360, 380, 400, 425, 450, 475, 500];
document.getElementById("buttonZoomIn").addEventListener("click", function(e) {
var count = zoom_values.length;
var curZoom = (window.Viewer.getZoom() >> 0);
var newZoom = zoom_values[count - 1];
for (var i = 0; i < count; i++)
{
if (curZoom < zoom_values[i])
{
newZoom = zoom_values[i];
break;
}
}
if (newZoom <= zoom_values[0] || newZoom >= zoom_values[count - 1])
return;
window.Viewer.setZoom(newZoom);
});
document.getElementById("buttonZoomOut").addEventListener("click", function(e) {
var count = zoom_values.length;
var curZoom = (window.Viewer.getZoom() >> 0);
var newZoom = zoom_values[count - 1];
for (var i = (count - 1); i >= 0; i--)
{
if (curZoom > zoom_values[i])
{
newZoom = zoom_values[i];
break;
}
}
if (newZoom <= zoom_values[0] || newZoom >= zoom_values[count - 1])
return;
window.Viewer.setZoom(newZoom);
});
document.getElementById("buttonRotateLeft").addEventListener("click", function(e) {
window.Viewer.rotatePage(undefined, -90, true);
});
document.getElementById("buttonRotateRight").addEventListener("click", function(e) {
window.Viewer.rotatePage(undefined, 90, true);
});
}