[DE] Hyperlink refactoring

This commit is contained in:
Julia Radzhabova 2018-03-29 16:02:54 +03:00
parent 29212eadfe
commit c23422465e

View file

@ -157,7 +157,12 @@ define([
me.internalList = new Common.UI.TreeView({ me.internalList = new Common.UI.TreeView({
el: $('#id-dlg-hyperlink-list'), el: $('#id-dlg-hyperlink-list'),
store: new Common.UI.TreeViewStore(), store: new Common.UI.TreeViewStore(),
enableKeyEvents: false enableKeyEvents: true
});
me.internalList.on('item:select', _.bind(this.onSelectItem, this));
me.btnOk = new Common.UI.Button({
el: $window.find('.primary')
}); });
$window.find('.dlg-btn').on('click', _.bind(this.onBtnClick, this)); $window.find('.dlg-btn').on('click', _.bind(this.onBtnClick, this));
@ -170,79 +175,86 @@ define([
this.externalPanel.toggleClass('hidden', value !== c_oHyperlinkType.WebLink); this.externalPanel.toggleClass('hidden', value !== c_oHyperlinkType.WebLink);
this.internalPanel.toggleClass('hidden', value !== c_oHyperlinkType.InternalLink); this.internalPanel.toggleClass('hidden', value !== c_oHyperlinkType.InternalLink);
var store = this.internalList.store; var store = this.internalList.store;
if (value==c_oHyperlinkType.InternalLink && store.length<1) { if (value==c_oHyperlinkType.InternalLink) {
var anchors = this.api.asc_GetHyperlinkAnchors(), if (store.length<1) {
count = anchors.length, var anchors = this.api.asc_GetHyperlinkAnchors(),
prev_level = 0, count = anchors.length,
header_level = 0, prev_level = 0,
arr = []; header_level = 0,
arr.push(new Common.UI.TreeViewModel({ arr = [];
name : this.txtBeginning, arr.push(new Common.UI.TreeViewModel({
level: 0, name : this.txtBeginning,
index: 0, level: 0,
hasParent: false, index: 0,
isEmptyItem: false, hasParent: false,
isNotHeader: true, isEmptyItem: false,
hasSubItems: false isNotHeader: true,
})); hasSubItems: false
arr.push(new Common.UI.TreeViewModel({ }));
name : this.txtHeadings, arr.push(new Common.UI.TreeViewModel({
level: 0, name : this.txtHeadings,
index: 1, level: 0,
hasParent: false, index: 1,
isEmptyItem: false, hasParent: false,
isNotHeader: false, isEmptyItem: false,
hasSubItems: false isNotHeader: false,
})); hasSubItems: false
}));
for (var i=0; i<count; i++) { for (var i=0; i<count; i++) {
var anchor = anchors[i], var anchor = anchors[i],
level = anchors[i].asc_GetHeadingLevel(), level = anchors[i].asc_GetHeadingLevel(),
hasParent = true; hasParent = true;
if (anchor.asc_GetType()== Asc.c_oAscHyperlinkAnchor.Heading){ if (anchor.asc_GetType()== Asc.c_oAscHyperlinkAnchor.Heading){
if (level>prev_level) if (level>prev_level)
arr[arr.length-1].set('hasSubItems', true); arr[arr.length-1].set('hasSubItems', true);
if (level<=header_level) { if (level<=header_level) {
header_level = level; header_level = level;
hasParent = false; hasParent = false;
}
arr.push(new Common.UI.TreeViewModel({
name : anchor.asc_GetHeadingText(),
level: level,
index: i+2,
hasParent: hasParent
}));
prev_level = level;
} }
arr.push(new Common.UI.TreeViewModel({
name : anchor.asc_GetHeadingText(),
level: level,
index: i+2,
hasParent: hasParent
}));
prev_level = level;
} }
} arr.push(new Common.UI.TreeViewModel({
arr.push(new Common.UI.TreeViewModel({ name : this.txtBookmarks,
name : this.txtBookmarks, level: 0,
level: 0, index: arr.length,
index: arr.length, hasParent: false,
hasParent: false, isEmptyItem: false,
isEmptyItem: false, isNotHeader: false,
isNotHeader: false, hasSubItems: false
hasSubItems: false }));
}));
prev_level = 0; prev_level = 0;
for (var i=0; i<count; i++) { for (var i=0; i<count; i++) {
var anchor = anchors[i], var anchor = anchors[i],
hasParent = true; hasParent = true;
if (anchor.asc_GetType()== Asc.c_oAscHyperlinkAnchor.Bookmark){ if (anchor.asc_GetType()== Asc.c_oAscHyperlinkAnchor.Bookmark){
if (prev_level<1) if (prev_level<1)
arr[arr.length-1].set('hasSubItems', true); arr[arr.length-1].set('hasSubItems', true);
arr.push(new Common.UI.TreeViewModel({ arr.push(new Common.UI.TreeViewModel({
name : anchor.asc_GetBookmarkName(), name : anchor.asc_GetBookmarkName(),
level: 1, level: 1,
index: arr.length, index: arr.length,
hasParent: false hasParent: false
})); }));
prev_level = 1; prev_level = 1;
}
} }
store.reset(arr);
} }
store.reset(arr); var rec = this.internalList.getSelectedRec();
} this.btnOk.setDisabled(rec.length<1 || rec[0].get('level')==0 && rec[0].get('index')>0);
} else
this.btnOk.setDisabled(false);
this.linkType = value; this.linkType = value;
}, },
@ -250,6 +262,10 @@ define([
this.ShowHideElem(type); this.ShowHideElem(type);
}, },
onSelectItem: function(picker, item, record, e){
this.btnOk.setDisabled(record.get('level')==0 && record.get('index')>0);
},
show: function() { show: function() {
Common.UI.Window.prototype.show.apply(this, arguments); Common.UI.Window.prototype.show.apply(this, arguments);