Files
DocumentServer-v-9.2.0/web-apps/apps/common/embed/lib/util/utils.js
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

205 lines
8.5 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
*
*/
+function () {
!window.common && (window.common = {});
!common.utils && (common.utils = {});
common.utils = new(function(){
var userAgent = navigator.userAgent.toLowerCase(),
check = function(regex){
return regex.test(userAgent);
},
version = function (is, regex) {
var m;
return (is && (m = regex.exec(userAgent))) ? parseFloat(m[1]) : 0;
},
isOpera = check(/opera/),
isIE = !isOpera && (check(/msie/) || check(/trident/) || check(/edge/)),
isChrome = !isIE && check(/\bchrome\b/),
chromeVersion = version(true, /\bchrome\/(\d+\.\d+)/),
isMac = check(/macintosh|mac os x/),
zoom = 1,
checkSize = function () {
var scale = {};
if (!!window.AscCommon && !!window.AscCommon.checkDeviceScale) {
scale = window.AscCommon.checkDeviceScale();
AscCommon.correctApplicationScale(scale);
scale.correct && (zoom = scale.zoom);
}
},
isOffsetUsedZoom = function() {
if (isChrome && 128 <= chromeVersion)
return (zoom === 1) ? false : true;
return false;
},
getBoundingClientRect = function(element) {
let rect = element.getBoundingClientRect();
if (!isOffsetUsedZoom())
return rect;
let koef = zoom;
let newRect = {}
if (rect.x!==undefined) newRect.x = rect.x * koef;
if (rect.y!==undefined) newRect.y = rect.y * koef;
if (rect.width!==undefined) newRect.width = rect.width * koef;
if (rect.height!==undefined) newRect.height = rect.height * koef;
if (rect.left!==undefined) newRect.left = rect.left * koef;
if (rect.top!==undefined) newRect.top = rect.top * koef;
if (rect.right!==undefined) newRect.right = rect.right * koef;
if (rect.bottom!==undefined) newRect.bottom = rect.bottom * koef;
return newRect;
},
getOffset = function($element) {
let pos = $element.offset();
if (!isOffsetUsedZoom())
return pos;
return {left: pos.left * zoom, top: pos.top * zoom};
},
setOffset = function($element, options) {
var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
position = $element.css("position"),
props = {};
if ( position === "static" ) {
$element[0].style.position = "relative";
}
curOffset = getOffset($element);
curCSSTop = $element.css("top");
curCSSLeft = $element.css("left");
calculatePosition = ( position === "absolute" || position === "fixed" ) &&
( curCSSTop + curCSSLeft ).indexOf( "auto" ) > -1;
if ( calculatePosition ) {
curPosition = getPosition($element);
curTop = curPosition.top;
curLeft = curPosition.left;
} else {
curTop = parseFloat( curCSSTop ) || 0;
curLeft = parseFloat( curCSSLeft ) || 0;
}
if ( options.top != null ) {
props.top = ( options.top - curOffset.top ) + curTop;
}
if ( options.left != null ) {
props.left = ( options.left - curOffset.left ) + curLeft;
}
$element.css( props );
},
getPosition = function($element) {
let pos = $element.position();
if (!isOffsetUsedZoom())
return pos;
return {left: pos.left * zoom, top: pos.top * zoom};
};
if (!isIE) {
checkSize();
$(window).on('resize', checkSize);
}
return {
openLink: function(url) {
if (url) {
var newDocumentPage = window.open(url, '_blank');
if (newDocumentPage)
newDocumentPage.focus();
}
}
, dialogPrint: function(url, api) {
$('#id-print-frame').remove();
if ( !!url ) {
var iframePrint = document.createElement("iframe");
iframePrint.id = "id-print-frame";
iframePrint.style.display = 'none';
iframePrint.style.visibility = "hidden";
iframePrint.style.position = "fixed";
iframePrint.style.right = "0";
iframePrint.style.bottom = "0";
document.body.appendChild(iframePrint);
iframePrint.onload = function () {
try {
iframePrint.contentWindow.focus();
iframePrint.contentWindow.print();
iframePrint.contentWindow.blur();
window.focus();
} catch (e) {
api.asc_DownloadAs(new Asc.asc_CDownloadOptions(Asc.c_oAscFileType.PDF));
}
};
iframePrint.src = url;
}
},
htmlEncode: function(value) {
return $('<div/>').text(value).html();
},
fillUserInfo: function(info, lang, defname, defid) {
var _user = info || {};
_user.anonymous = !_user.id;
!_user.id && (_user.id = defid);
_user.fullname = !_user.name ? defname : _user.name;
_user.group && (_user.fullname = (_user.group).toString() + AscCommon.UserInfoParser.getSeparator() + _user.fullname);
_user.guest = !_user.name;
return _user;
},
fixedDigits: function(num, digits, fill) {
(fill===undefined) && (fill = '0');
var strfill = "",
str = num.toString();
for (var i=str.length; i<digits; i++) strfill += fill;
return strfill + str;
},
getKeyByValue: function(obj, value) {
for(var prop in obj) {
if(obj.hasOwnProperty(prop)) {
if(obj[prop] === value)
return prop;
}
}
},
getBoundingClientRect: getBoundingClientRect,
getOffset: getOffset,
setOffset: setOffset,
getPosition: getPosition,
isMac : isMac,
isIE: isIE
};
})();
}();