web-apps/apps/documenteditor/main/app/view/Navigation.js

291 lines
12 KiB
JavaScript
Raw Normal View History

/*
*
* (c) Copyright Ascensio System SIA 2010-2019
*
* 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-12 Ernesta Birznieka-Upisha
* 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
*
*/
/**
* User: Julia.Radzhabova
* Date: 14.12.17
*/
define([
'common/main/lib/util/utils',
'common/main/lib/component/BaseView',
'common/main/lib/component/Layout',
'common/main/lib/component/TreeView'
], function (template) {
'use strict';
DE.Views.Navigation = Common.UI.BaseView.extend(_.extend({
el: '#left-panel-navigation',
storeNavigation: undefined,
template: _.template([
'<div id="navigation-box" class="layout-ct vbox">',
2022-04-14 01:00:17 +00:00
'<div id="navigation-header" className="">',
'<label><%= scope.strNavigate%></label>',
'<div id="navigation-btn-close" style="float:right;margin-left: 4px;"></div>',
'<div id="navigation-btn-settings" style="float:right;"></div>',
'</div>',
2022-04-20 13:58:28 +00:00
'<div id="navigation-list" class="">',
'</div>',
'</div>'
].join('')),
initialize: function(options) {
_.extend(this, options);
Common.UI.BaseView.prototype.initialize.call(this, arguments);
},
render: function(el) {
el = el || this.el;
$(el).html(this.template({scope: this}));
2022-04-20 13:58:28 +00:00
var isWrap = Common.localStorage.getBool("de-outline-wrap",true);
var fontSizeClass = Common.localStorage.getItem("de-outline-fontsize");
2022-04-21 23:15:25 +00:00
if(!fontSizeClass) fontSizeClass = 'medium';
this.$el = $(el);
2022-04-20 13:58:28 +00:00
2022-04-14 01:00:17 +00:00
this.btnClose = new Common.UI.Button({
parentEl: $('#navigation-btn-close', this.$el),
cls: 'btn-toolbar',
iconCls: 'toolbar__icon btn-close',
2022-04-22 16:52:40 +00:00
hint: this.txtClosePanel,
2022-04-14 01:00:17 +00:00
});
this.btnSettings = new Common.UI.Button({
parentEl: $('#navigation-btn-settings', this.$el),
cls: 'btn-toolbar',
iconCls: 'toolbar__icon btn-settings',
2022-04-22 16:52:40 +00:00
hint: this.txtSettings,
2022-04-14 01:00:17 +00:00
menu: new Common.UI.Menu({
menuAlign: 'tr-br',
style: 'min-width: auto;',
2022-06-22 09:49:40 +00:00
cls: 'shifted-right',
2022-04-14 01:00:17 +00:00
items: [
{
caption: this.txtExpand,
value: 'expand',
iconCls : 'menu__icon expand-all'
},
{
caption: this.txtCollapse,
value: 'collapse',
iconCls : 'menu__icon collapse-all'
},
{
caption: this.txtExpandToLevel,
value: 'expand-level',
menu: new Common.UI.Menu({
2022-04-20 13:58:28 +00:00
menuAlign: 'tl-tr',
2022-04-14 01:00:17 +00:00
style: 'min-width: auto;',
items: [{ caption : '1', value: 1 }, { caption : '2', value: 2 }, { caption : '3', value: 3 },
{ caption : '4', value: 4 }, { caption : '5', value: 5 }, { caption : '6', value: 6 },
{ caption : '7', value: 7 }, { caption : '8', value: 8 }, { caption : '9', value: 9 }]})
},
{
caption: '--',
visible: true
},
{
caption: this.txtFontSize,
value: 'font-size',
menu: new Common.UI.Menu({
2022-04-20 13:58:28 +00:00
menuAlign: 'tl-tr',
2022-04-14 01:00:17 +00:00
style: 'min-width: auto;',
items: [
{
caption: this.txtSmall,
checkable: true,
value: 'small',
2022-04-20 13:58:28 +00:00
checked: fontSizeClass == 'small',
2022-04-14 01:00:17 +00:00
toggleGroup: 'fontsize'
},
{
caption: this.txtMedium,
checkable: true,
value: 'medium',
2022-04-20 13:58:28 +00:00
checked: fontSizeClass == 'medium',
2022-04-14 01:00:17 +00:00
toggleGroup: 'fontsize'
},
{
caption: this.txtLarge,
checkable: true,
2022-04-20 13:58:28 +00:00
checked: fontSizeClass == 'large',
2022-04-14 01:00:17 +00:00
value: 'large',
toggleGroup: 'fontsize'
}
]})
},
{
caption: '--',
visible: true
},
{
caption: this.txtWrapHeadings,
checkable: true,
2022-04-20 13:58:28 +00:00
checked: isWrap,
2022-04-14 01:00:17 +00:00
value: 'wrap'
}
]
})
});
this.btnSettingsMenu = this.btnSettings.menu;
this.viewNavigationList = new Common.UI.TreeView({
el: $('#navigation-list'),
store: this.storeNavigation,
2017-12-21 12:01:37 +00:00
enableKeyEvents: false,
emptyText: this.txtEmpty,
2020-09-27 11:39:29 +00:00
emptyItemText: this.txtEmptyItem,
style: 'border: none;',
2022-04-05 12:10:58 +00:00
delayRenderTips: true,
minScrollbarLength: 25
});
2022-04-14 01:00:17 +00:00
this.viewNavigationList.cmpEl.off('click');
2022-04-20 13:58:28 +00:00
this.viewNavigationList.$el.addClass( fontSizeClass);
isWrap && this.viewNavigationList.$el.addClass( 'wrap');
this.navigationMenu = new Common.UI.Menu({
2022-04-07 13:26:00 +00:00
cls: 'shifted-right',
items: [{
2022-04-07 13:26:00 +00:00
iconCls : 'menu__icon promote',
caption : this.txtPromote,
value: 'promote'
},
{
2022-04-07 13:26:00 +00:00
iconCls : 'menu__icon demote',
2017-12-21 10:56:48 +00:00
caption : this.txtDemote,
value: 'demote'
},
{
caption : '--'
},
{
caption : this.txtHeadingBefore,
value: 'before'
},
{
caption : this.txtHeadingAfter,
value: 'after'
},
{
caption : this.txtNewHeading,
value: 'new'
},
{
caption : '--'
},
{
2022-04-07 13:26:00 +00:00
iconCls : 'menu__icon select-all',
caption : this.txtSelect,
value: 'select'
},
{
caption : '--'
},
{
2022-04-07 13:26:00 +00:00
iconCls : 'menu__icon expand-all',
caption : this.txtExpand,
value: 'expand'
},
{
2022-04-07 13:26:00 +00:00
iconCls : 'menu__icon collapse-all',
caption : this.txtCollapse,
value: 'collapse'
2017-12-20 12:34:17 +00:00
},
{
caption : this.txtExpandToLevel,
menu: new Common.UI.Menu({
menuAlign: 'tl-tr',
style: 'min-width: 60px;',
2017-12-20 12:34:17 +00:00
items: [{ caption : '1', value: 1 }, { caption : '2', value: 2 }, { caption : '3', value: 3 },
{ caption : '4', value: 4 }, { caption : '5', value: 5 }, { caption : '6', value: 6 },
{ caption : '7', value: 7 }, { caption : '8', value: 8 }, { caption : '9', value: 9 }
]
})
}
]
});
this.trigger('render:after', this);
return this;
},
show: function () {
Common.UI.BaseView.prototype.show.call(this,arguments);
this.fireEvent('show', this );
},
hide: function () {
Common.UI.BaseView.prototype.hide.call(this,arguments);
this.fireEvent('hide', this );
},
2022-04-14 01:00:17 +00:00
changeWrapHeadings: function(){
2022-04-20 13:58:28 +00:00
Common.localStorage.setBool("de-outline-wrap", this.btnSettingsMenu.items[6].checked);
2022-04-14 01:00:17 +00:00
if(!this.btnSettingsMenu.items[6].checked)
this.viewNavigationList.$el.removeClass('wrap');
else
this.viewNavigationList.$el.addClass('wrap');
},
2022-04-20 13:58:28 +00:00
2022-04-14 01:00:17 +00:00
changeFontSize: function (value){
2022-04-20 13:58:28 +00:00
Common.localStorage.setItem("de-outline-fontsize", value);
2022-04-14 01:00:17 +00:00
this.viewNavigationList.$el.removeClass();
this.viewNavigationList.$el.addClass( value);
this.changeWrapHeadings();
},
2022-04-20 13:58:28 +00:00
ChangeSettings: function(props) {
},
txtPromote: 'Promote',
2017-12-21 10:56:48 +00:00
txtDemote: 'Demote',
txtHeadingBefore: 'New heading before',
txtHeadingAfter: 'New heading after',
txtNewHeading: 'New subheading',
txtSelect: 'Select content',
txtExpand: 'Expand all',
2017-12-20 12:34:17 +00:00
txtCollapse: 'Collapse all',
2017-12-21 12:01:37 +00:00
txtExpandToLevel: 'Expand to level...',
txtEmpty: 'There are no headings in the document.<br>Apply a heading style to the text so that it appears in the table of contents.',
txtEmptyItem: 'Empty Heading',
2022-04-14 01:00:17 +00:00
txtEmptyViewer: 'There are no headings in the document.',
2022-04-29 11:51:24 +00:00
strNavigate: "Headings",
2022-04-14 01:00:17 +00:00
txtWrapHeadings: "Wrap long headings",
txtFontSize: "Font size",
txtSmall: "Small",
txtMedium: "Medium",
2022-04-22 16:52:40 +00:00
txtLarge:"Large",
2022-04-29 11:51:24 +00:00
txtClosePanel: "Close headings",
txtSettings: "Headings settings"
2022-04-22 16:52:40 +00:00
}, DE.Views.Navigation || {}));
});