[DE forms] Refactoring link and form tooltips

This commit is contained in:
Julia Radzhabova 2021-08-19 02:04:30 +03:00
parent 8fca89be95
commit dc07380894
2 changed files with 120 additions and 90 deletions

View file

@ -16,7 +16,9 @@ define([
labelDocName,
btnSubmit,
_submitFail, $submitedTooltip, $requiredTooltip,
$ttEl, $tooltip,
screenTip,
mouseMoveData = null,
isTooltipHiding = false,
bodyWidth = 0,
ttOffset = [0, -10];
@ -91,6 +93,10 @@ define([
Common.NotificationCenter.on({
'modal:show': function(){
if (screenTip) {
screenTip.toolTip.hide();
screenTip.isVisible = false;
}
Common.Utils.ModalWindow.show();
me.api.asc_enableKeyEvents(false);
},
@ -596,15 +602,19 @@ define([
},
onDocMouseMoveStart: function() {
this.isHideBodyTip = true;
screenTip.isHidden = true;
},
onDocMouseMoveEnd: function() {
if (this.isHideBodyTip) {
if ( $tooltip ) {
$tooltip.tooltip('hide');
$tooltip = false;
}
var me = this;
if (screenTip.isHidden && screenTip.isVisible) {
screenTip.isVisible = false;
isTooltipHiding = true;
screenTip.toolTip.hide(function(){
isTooltipHiding = false;
if (mouseMoveData) me.onDocMouseMove(mouseMoveData);
mouseMoveData = null;
});
}
},
@ -613,46 +623,52 @@ define([
if (data) {
var type = data.get_Type();
if (type == Asc.c_oAscMouseMoveDataTypes.Hyperlink || type==Asc.c_oAscMouseMoveDataTypes.Form) { // hyperlink
this.isHideBodyTip = false;
if (isTooltipHiding) {
mouseMoveData = data;
return;
}
var str = (type == Asc.c_oAscMouseMoveDataTypes.Hyperlink) ? me.txtPressLink : data.get_FormHelpText();
if (str.length>500)
str = str.substr(0, 500) + '...';
str = Common.Utils.String.htmlEncode(str);
if ( !$ttEl ) {
$ttEl = $('.hyperlink-tooltip');
$ttEl.tooltip({'container':'body', 'trigger':'manual'});
var recalc = false;
screenTip.isHidden = false;
if (screenTip.tipType !== type || screenTip.tipLength !== str.length || screenTip.strTip.indexOf(str)<0 ) {
screenTip.toolTip.setTitle(str);
screenTip.tipLength = str.length;
screenTip.strTip = str;
screenTip.tipType = type;
recalc = true;
}
$ttEl.ttpos = [data.get_X(), data.get_Y()];
if ( !$tooltip)
$tooltip = $ttEl.data('bs.tooltip').tip();
var showPoint = [data.get_X()+5, data.get_Y() + ttOffset[1]-15];
if (!$tooltip.is(':visible')) {
var tip = $ttEl.data('bs.tooltip');
tip.options.title = str;
tip.show([-1000, -1000]);
} else
$tooltip.find('.tooltip-inner')['text'](str);
if (!screenTip.isVisible || recalc) {
screenTip.isVisible = true;
screenTip.toolTip.show([-10000, -10000]);
}
if ( recalc ) {
screenTip.tipHeight = screenTip.toolTip.getBSTip().$tip.height();
screenTip.tipWidth = screenTip.toolTip.getBSTip().$tip.width();
}
var ttHeight = $tooltip.height(),
ttWidth = $tooltip.width();
!bodyWidth && (bodyWidth = $('body').width());
$ttEl.ttpos[1] -= (ttHeight - ttOffset[1] + 20);
if ($ttEl.ttpos[0] + ttWidth + 10 >bodyWidth) {
$ttEl.ttpos[0] = bodyWidth - ttWidth - 5;
if ($ttEl.ttpos[1] < 0)
$ttEl.ttpos[1] += ttHeight + ttOffset[1] + 20;
} else if ($ttEl.ttpos[1] < 0) {
$ttEl.ttpos[1] = 0;
$ttEl.ttpos[0] += 20;
recalc = false;
if (showPoint[0] + screenTip.tipWidth > bodyWidth ) {
showPoint[0] = bodyWidth - screenTip.tipWidth;
recalc = true;
}
$tooltip.css({
left: $ttEl.ttpos[0],
top: $ttEl.ttpos[1]
});
if (showPoint[1] - screenTip.tipHeight < 0) {
showPoint[1] = (recalc) ? showPoint[1]+30 : 0;
} else
showPoint[1] -= screenTip.tipHeight;
screenTip.toolTip.getBSTip().$tip.css({top: showPoint[1] + 'px', left: showPoint[0] + 'px'});
}
}
},
@ -865,60 +881,7 @@ define([
var zf = (this.appOptions.customization && this.appOptions.customization.zoom ? parseInt(this.appOptions.customization.zoom) : -2);
(zf == -1) ? this.api.zoomFitToPage() : ((zf == -2) ? this.api.zoomFitToWidth() : this.api.zoom(zf>0 ? zf : 100));
var menuItems = this.view.btnOptions.menu.items;
var itemsCount = menuItems.length-3;
if (!this.appOptions.canPrint) {
menuItems[0].setVisible(false);
menuItems[1].setVisible(false);
itemsCount--;
}
if ( !this.embedConfig.saveUrl && !this.appOptions.canPrint || this.appOptions.canFillForms) {
menuItems[2].setVisible(false);
itemsCount--;
}
if ( !this.appOptions.canFillForms || !this.appOptions.canDownload) {
menuItems[3].setVisible(false);
menuItems[4].setVisible(false);
menuItems[1].setVisible(false);
menuItems[5].setVisible(false);
itemsCount -= 2;
}
if ( !this.embedConfig.shareUrl || this.appOptions.canFillForms) {
menuItems[6].setVisible(false);
itemsCount--;
}
if (!this.appOptions.canBackToFolder) {
menuItems[7].setVisible(false);
itemsCount--;
}
if (itemsCount<3)
menuItems[8].setVisible(false);
if ( !this.embedConfig.embedUrl || this.appOptions.canFillForms) {
menuItems[9].setVisible(false);
itemsCount--;
}
if ( !this.embedConfig.fullscreenUrl ) {
menuItems[10].setVisible(false);
itemsCount--;
}
if (itemsCount<1)
this.view.btnOptions.setVisible(false);
else if ((!this.embedConfig.embedUrl || this.appOptions.canFillForms) && !this.embedConfig.fullscreenUrl)
menuItems[8].setVisible(false);
// common.controller.modals.attach({
// share: '#idt-share',
// embed: '#idt-embed'
// });
this.createDelayedElements();
this.api.asc_registerCallback('asc_onStartAction', _.bind(this.onLongActionBegin, this));
this.api.asc_registerCallback('asc_onEndAction', _.bind(this.onLongActionEnd, this));
@ -986,6 +949,75 @@ define([
}
},
createDelayedElements: function() {
var menuItems = this.view.btnOptions.menu.items;
var itemsCount = menuItems.length-3;
if (!this.appOptions.canPrint) {
menuItems[0].setVisible(false);
menuItems[1].setVisible(false);
itemsCount--;
}
if ( !this.embedConfig.saveUrl && !this.appOptions.canPrint || this.appOptions.canFillForms) {
menuItems[2].setVisible(false);
itemsCount--;
}
if ( !this.appOptions.canFillForms || !this.appOptions.canDownload) {
menuItems[3].setVisible(false);
menuItems[4].setVisible(false);
menuItems[1].setVisible(false);
menuItems[5].setVisible(false);
itemsCount -= 2;
}
if ( !this.embedConfig.shareUrl || this.appOptions.canFillForms) {
menuItems[6].setVisible(false);
itemsCount--;
}
if (!this.appOptions.canBackToFolder) {
menuItems[7].setVisible(false);
itemsCount--;
}
if (itemsCount<3)
menuItems[8].setVisible(false);
if ( !this.embedConfig.embedUrl || this.appOptions.canFillForms) {
menuItems[9].setVisible(false);
itemsCount--;
}
if ( !this.embedConfig.fullscreenUrl ) {
menuItems[10].setVisible(false);
itemsCount--;
}
if (itemsCount<1)
this.view.btnOptions.setVisible(false);
else if ((!this.embedConfig.embedUrl || this.appOptions.canFillForms) && !this.embedConfig.fullscreenUrl)
menuItems[8].setVisible(false);
// common.controller.modals.attach({
// share: '#idt-share',
// embed: '#idt-embed'
// });
screenTip = {
toolTip: new Common.UI.Tooltip({
owner: this,
html: true,
title: this.txtPressLink,
cls: 'link-tooltip'
}),
strTip: '',
isHidden: true,
isVisible: false
};
},
attachUIEvents: function() {
var me = this;

View file

@ -222,8 +222,6 @@
</div>
</div>
<div class="hyperlink-tooltip" data-toggle="tooltip" title="" style="display:none;"></div>
<!--vendor-->
<script type="text/javascript" src="../../../vendor/jquery/jquery.min.js"></script>
<script type="text/javascript" src="../../../vendor/jquery.browser/dist/jquery.browser.min.js"></script>