Fix editing hyperlinks

This commit is contained in:
Julia Radzhabova 2020-03-10 17:49:42 +03:00
parent 77ab8c41bc
commit 4c9592350c
4 changed files with 54 additions and 80 deletions

View file

@ -264,6 +264,22 @@ define([
expandToLevel: function(expandLevel) {
this.store.expandToLevel(expandLevel);
this.scroller.update({minScrollbarLength: 40, alwaysVisibleY: this.scrollAlwaysVisible});
},
expandRecord: function(record) {
if (record) {
record.set('isExpanded', true);
this.store.expandSubItems(record);
this.scroller.update({minScrollbarLength: 40, alwaysVisibleY: this.scrollAlwaysVisible});
}
},
collapseRecord: function(record) {
if (record) {
record.set('isExpanded', false);
this.store.collapseSubItems(record);
this.scroller.update({minScrollbarLength: 40, alwaysVisibleY: this.scrollAlwaysVisible});
}
}
}
})());

View file

@ -200,6 +200,7 @@ define([
hasParent: false,
isEmptyItem: false,
isNotHeader: false,
type: Asc.c_oAscHyperlinkAnchor.Heading,
hasSubItems: false
}));
@ -232,6 +233,7 @@ define([
hasParent: false,
isEmptyItem: false,
isNotHeader: false,
type: Asc.c_oAscHyperlinkAnchor.Bookmark,
hasSubItems: false
}));
@ -294,19 +296,25 @@ define([
} else {
me.inputUrl.setValue('');
}
this.btnOk.setDisabled($.trim(this.inputUrl.getValue())=='');
} else {
if (props.is_TopOfDocument())
this.internalList.selectByIndex(0);
else if (props.is_Heading()) {
var heading = props.get_Heading(),
rec = this.internalList.store.findWhere({type: Asc.c_oAscHyperlinkAnchor.Heading, headingParagraph: heading });
if (rec)
var rec = this.internalList.store.findWhere({type: Asc.c_oAscHyperlinkAnchor.Heading, headingParagraph: props.get_Heading() });
if (rec) {
this.internalList.expandRecord(this.internalList.store.at(1));
this.internalList.scrollToRecord(this.internalList.selectRecord(rec));
}
} else {
var rec = this.internalList.store.findWhere({type: Asc.c_oAscHyperlinkAnchor.Bookmark, name: bookmark});
if (rec)
if (rec) {
this.internalList.expandRecord(this.internalList.store.findWhere({type: Asc.c_oAscHyperlinkAnchor.Bookmark, level: 0}));
this.internalList.scrollToRecord(this.internalList.selectRecord(rec));
}
}
var rec = this.internalList.getSelectedRec();
this.btnOk.setDisabled(!rec || rec.get('level')==0 && rec.get('index')>0);
}
if (props.get_Text() !== null) {

View file

@ -158,58 +158,6 @@ define([
maxLength : Asc.c_oAscMaxTooltipLength
});
// me.radioNext = new Common.UI.RadioBox({
// el: $('#id-dlg-hyperlink-radio-next'),
// labelText: this.txtNext,
// name: 'asc-radio-slide',
// checked: true
// });
//
// me.radioPrev = new Common.UI.RadioBox({
// el: $('#id-dlg-hyperlink-radio-prev'),
// labelText: this.txtPrev,
// name: 'asc-radio-slide'
// });
//
// me.radioFirst = new Common.UI.RadioBox({
// el: $('#id-dlg-hyperlink-radio-first'),
// labelText: this.txtFirst,
// name: 'asc-radio-slide'
// });
//
// me.radioLast = new Common.UI.RadioBox({
// el: $('#id-dlg-hyperlink-radio-last'),
// labelText: this.txtLast,
// name: 'asc-radio-slide'
// });
//
// me.radioSlide = new Common.UI.RadioBox({
// el: $('#id-dlg-hyperlink-radio-slide'),
// labelText: this.txtSlide,
// name: 'asc-radio-slide'
// });
//
// me.cmbSlides = new Common.UI.ComboBox({
// el: $('#id-dlg-hyperlink-slide'),
// cls: 'input-group-nr',
// style: 'width: 50px;',
// menuStyle: 'min-width: 50px; max-height: 200px;',
// data: this.slides
// });
// me.cmbSlides.setValue(0);
// me.cmbSlides.on('selected', _.bind(function(combo, record) {
// me.radioSlide.setValue(true);
// }, me))
// .on('changed:after', _.bind(function(combo, record) {
// me.radioSlide.setValue(true);
// if (record.value>me.slides.length)
// combo.setValue(me.slides.length-1);
// else if (record.value<1)
// combo.setValue(0);
// else
// combo.setValue(record.value-1);
// }, me));
me.internalList = new Common.UI.TreeView({
el: $('#id-dlg-hyperlink-list'),
store: new Common.UI.TreeViewStore(),
@ -408,6 +356,7 @@ define([
store.reset(arr);
}
var rec = this.internalList.getSelectedRec();
rec && this.internalList.scrollToRecord(rec);
this.btnOk.setDisabled(!rec || rec.get('index')==4);
} else
this.btnOk.setDisabled($.trim(this.inputUrl.getValue())=='');

View file

@ -206,26 +206,21 @@ define([
var type = (settings.props) ? settings.props.asc_getType() : Asc.c_oAscHyperlinkType.WebLink;
(type == Asc.c_oAscHyperlinkType.WebLink) ? me.btnExternal.toggle(true) : me.btnInternal.toggle(true);
me.ShowHideElem(type);
me.ShowHideElem(type, settings.props);
me.btnInternal.setDisabled(!settings.allowInternal && (type == Asc.c_oAscHyperlinkType.WebLink));
me.btnExternal.setDisabled(!settings.allowInternal && (type == Asc.c_oAscHyperlinkType.RangeLink));
var sheet = settings.currentSheet;
if (!settings.props) {
this.inputDisplay.setValue(settings.isLock ? this.textDefault : settings.text);
this.focusedInput = this.inputUrl.cmpEl.find('input');
} else {
if (type == Asc.c_oAscHyperlinkType.RangeLink) {
sheet = settings.props.asc_getSheet();
if (sheet) {
if (settings.props.asc_getSheet()) {
this.inputRange.setValue(settings.props.asc_getRange());
} else {// named range
sheet = settings.props.asc_getRange();
this.inputRange.setDisabled(true);
}
this.focusedInput = this.inputRange.cmpEl.find('input');
var rec = this.internalList.store.findWhere({name: sheet });
rec && this.internalList.scrollToRecord(this.internalList.selectRecord(rec));
} else {
this.inputUrl.setValue(settings.props.asc_getHyperlinkUrl().replace(new RegExp(" ",'g'), "%20"));
this.focusedInput = this.inputUrl.cmpEl.find('input');
@ -248,7 +243,7 @@ define([
if (rec && rec.get('level')>0) {
if (rec.get('type')) {// named range
props.asc_setSheet(null);
props.asc_setRange(rec.get('name'));
props.asc_setLocation(rec.get('name'));
def_display = rec.get('name');
} else {
props.asc_setSheet(rec.get('name'));
@ -313,7 +308,7 @@ define([
this.close();
},
ShowHideElem: function(value) {
ShowHideElem: function(value, props) {
this.externalPanel.toggleClass('hidden', value !== Asc.c_oAscHyperlinkType.WebLink);
this.internalPanel.toggleClass('hidden', value !== Asc.c_oAscHyperlinkType.RangeLink);
var store = this.internalList.store;
@ -329,6 +324,7 @@ define([
hasParent: false,
isEmptyItem: false,
isNotHeader: true,
isExpanded: false,
hasSubItems: true
}));
for (var i=0; i<count; i++) {
@ -337,6 +333,7 @@ define([
level: 1,
index: i+1,
type: 0, // sheet
isVisible: false,
hasParent: true
}));
}
@ -350,29 +347,33 @@ define([
isExpanded: false,
hasSubItems: false
}));
var definedNames = arr[arr.length-1];
var ranges = this.settings.ranges,
prev_level = 0;
count = ranges.length;
for (var i=0; i<count; i++) {
var range = ranges[i];
if (!range.asc_getIsTable()) {
if (prev_level<1)
arr[arr.length-1].set('hasSubItems', true);
arr.push(new Common.UI.TreeViewModel({
name : range.asc_getName(),
level: 1,
index: arr.length,
type: 1, // defined name
isVisible: false,
hasParent: true
}));
prev_level = 1;
}
if (prev_level<1)
arr[arr.length-1].set('hasSubItems', true);
arr.push(new Common.UI.TreeViewModel({
name : range.asc_getName(),
level: 1,
index: arr.length,
type: 1, // defined name
isVisible: false,
hasParent: true
}));
prev_level = 1;
}
store.reset(arr);
var sheet = props ? (props.asc_getSheet() || props.asc_getLocation()) : this.settings.currentSheet,
rec = store.findWhere({name: sheet });
if (rec) {
this.internalList.expandRecord(rec.get('type') ? definedNames : store.at(0));
this.internalList.scrollToRecord(this.internalList.selectRecord(rec));
}
}
var rec = this.internalList.store.findWhere({name: this.settings.currentSheet });
rec && this.internalList.scrollToRecord(this.internalList.selectRecord(rec));
var rec = this.internalList.getSelectedRec();
this.btnOk.setDisabled(!rec || rec.get('level')==0 || rec.get('type')==0 && $.trim(this.inputRange.getValue())=='');
} else
this.btnOk.setDisabled($.trim(this.inputUrl.getValue())=='');