/* * * (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 * */ /** * ComboBorderSize.js * * Created by Julia Radzhabova on 2/10/14 * Copyright (c) 2018 Ascensio System SIA. All rights reserved. * */ /** * Using template * *
*
*
* * *
* */ if (Common === undefined) var Common = {}; define([ 'common/main/lib/component/ComboBox' ], function () { 'use strict'; Common.UI.BordersModel = Backbone.Model.extend({ defaults: function() { return { value: null, displayValue: null, pxValue: null, id: Common.UI.getId(), offsety: undefined } } }); Common.UI.BordersStore = Backbone.Collection.extend({ model: Common.UI.BordersModel }); Common.UI.ComboBorderSize = Common.UI.ComboBox.extend(_.extend({ template: _.template([ '
', '
', '', '', '
', '
', '', '', '
' ].join('')), initialize : function(options) { var txtPt = Common.Utils.Metric.getMetricName(Common.Utils.Metric.c_MetricUnits.pt), data = [ {displayValue: '0.5 ' + txtPt, value: 0.5, pxValue: 0.5, offsety: 0}, {displayValue: '1 ' + txtPt, value: 1, pxValue: 1, offsety: 20}, {displayValue: '1.5 ' + txtPt, value: 1.5, pxValue: 2, offsety: 40}, {displayValue: '2.25 ' + txtPt, value: 2.25,pxValue: 3, offsety: 60}, {displayValue: '3 ' + txtPt, value: 3, pxValue: 4, offsety: 80}, {displayValue: '4.5 ' + txtPt, value: 4.5, pxValue: 5, offsety: 100}, {displayValue: '6 ' + txtPt, value: 6, pxValue: 6, offsety: 120} ]; if (options.allowNoBorders !== false) data.unshift({displayValue: this.txtNoBorders, value: 0, pxValue: 0 }); Common.UI.ComboBox.prototype.initialize.call(this, _.extend({ editable: false, store: new Common.UI.BordersStore(), data: data, menuStyle: 'min-width: 160px;' }, options)); }, render : function(parentEl) { Common.UI.ComboBox.prototype.render.call(this, parentEl); this._formControl = this.cmpEl.find('.form-control'); return this; }, itemClicked: function (e) { var el = $(e.currentTarget).parent(); this._selectedItem = this.store.findWhere({ id: el.attr('id') }); if (this._selectedItem) { $('.selected', $(this.el)).removeClass('selected'); el.addClass('selected'); this.updateFormControl(this._selectedItem); this.trigger('selected', this, _.extend({}, this._selectedItem.toJSON()), e); e.preventDefault(); } }, updateFormControl: function(record) { var formcontrol = $(this.el).find('.form-control'); var image = formcontrol.find('> .image'); var text = formcontrol.find('> .text'); if (record.get('value')>0) { image.css('background-position', '10px -' + record.get('offsety') + 'px').show(); text.hide(); } else { image.hide(); text.text(this.txtNoBorders).show(); } }, setValue: function(value) { this._selectedItem = (value===null || value===undefined) ? undefined : _.find(this.store.models, function(item) { if ( valueitem.attributes.value-0.01) { return true; } }); $('.selected', $(this.el)).removeClass('selected'); if (this._selectedItem) { this.updateFormControl(this._selectedItem); $('#' + this._selectedItem.get('id'), $(this.el)).addClass('selected'); } else { $(this.el).find('.form-control > .text').text("").show(); } }, focus: function() { this._formControl && this._formControl.focus(); }, txtNoBorders: 'No Borders' }, Common.UI.ComboBorderSize || {})); Common.UI.ComboBorderSizeEditable = Common.UI.ComboBox.extend(_.extend({ template: _.template([ '', '', '', '', '' ].join('')), initialize : function(options) { this.txtNoBorders = options.txtNoBorders || this.txtNoBorders; var txtPt = Common.Utils.Metric.getMetricName(Common.Utils.Metric.c_MetricUnits.pt), data = [ {displayValue: '0.5 ' + txtPt, value: 0.5, pxValue: 0.5, offsety: 0}, {displayValue: '1 ' + txtPt, value: 1, pxValue: 1, offsety: 20}, {displayValue: '1.5 ' + txtPt, value: 1.5, pxValue: 2, offsety: 40}, {displayValue: '2.25 ' + txtPt, value: 2.25,pxValue: 3, offsety: 60}, {displayValue: '3 ' + txtPt, value: 3, pxValue: 4, offsety: 80}, {displayValue: '4.5 ' + txtPt, value: 4.5, pxValue: 5, offsety: 100}, {displayValue: '6 ' + txtPt, value: 6, pxValue: 6, offsety: 120} ]; if (options.allowNoBorders !== false) data.unshift({displayValue: this.txtNoBorders, value: 0, pxValue: 0 }); Common.UI.ComboBox.prototype.initialize.call(this, _.extend({ editable: true, store: new Common.UI.BordersStore(), data: data, menuStyle: 'min-width: 160px;' }, options)); }, render : function(parentEl) { Common.UI.ComboBox.prototype.render.call(this, parentEl); return this; }, txtNoBorders: 'No Borders' }, Common.UI.ComboBorderSizeEditable || {})); Common.UI.ComboBorderType = Common.UI.ComboBorderSize.extend(_.extend({ template: _.template([ '
', '
', '', '
', '
', '', '', '
' ].join('')), initialize : function(options) { Common.UI.ComboBorderSize.prototype.initialize.call(this, _.extend({ store: new Common.UI.BordersStore(), data: [ {value: Asc.c_oDashType.solid, offsety: 140}, {value: Asc.c_oDashType.sysDot, offsety: 160}, {value: Asc.c_oDashType.sysDash, offsety: 180}, {value: Asc.c_oDashType.dash, offsety: 200}, {value: Asc.c_oDashType.dashDot, offsety: 220}, {value: Asc.c_oDashType.lgDash, offsety: 240}, {value: Asc.c_oDashType.lgDashDot, offsety: 260}, {value: Asc.c_oDashType.lgDashDotDot, offsety: 280} ] }, options)); }, render : function(parentEl) { Common.UI.ComboBorderSize.prototype.render.call(this, parentEl); return this; }, updateFormControl: function(record) { if (record) $(this.el).find('.form-control > .image') .css('background-position', '10px -' + record.get('offsety') + 'px').show(); else $(this.el).find('.form-control > .image').hide(); }, setValue: function(value) { this._selectedItem = (value===null || value===undefined) ? undefined : _.find(this.store.models, function(item) { if ( valueitem.attributes.value-0.01) { return true; } }); $('.selected', $(this.el)).removeClass('selected'); this.updateFormControl(this._selectedItem); this._selectedItem && $('#' + this._selectedItem.get('id'), $(this.el)).addClass('selected'); } }, Common.UI.ComboBorderType || {})); Common.UI.ComboBoxColor = Common.UI.ComboBox.extend(_.extend({ template: _.template([ '
', '
', '
', '
', '', '', '
' ].join('')), itemClicked: function (e) { var el = $(e.currentTarget).parent(); this._selectedItem = this.store.findWhere({ id: el.attr('id') }); if (this._selectedItem) { $('.selected', $(this.el)).removeClass('selected'); el.addClass('selected'); this.updateFormControl(this._selectedItem); this.trigger('selected', this, _.extend({}, this._selectedItem.toJSON()), e); e.preventDefault(); } }, updateFormControl: function(record) { var formcontrol = $(this.el).find('.form-control > div'); formcontrol[0].innerHTML = record.get('displayValue'); if (record.get('value')!=-1) { formcontrol.css({'margin-top': '0'}); formcontrol.css(record.get('styleObj')); } else { formcontrol.css({'margin-top': '1px'}); formcontrol.css(record.get('styleObj')); } }, setValue: function(value) { var obj; this._selectedItem = this.store.findWhere((obj={}, obj[this.valueField]=value, obj)); $('.selected', $(this.el)).removeClass('selected'); if (this._selectedItem) { this.updateFormControl(this._selectedItem); $('#' + this._selectedItem.get('id'), $(this.el)).addClass('selected'); } else { var formcontrol = $(this.el).find('.form-control > div'); formcontrol[0].innerHTML = value; formcontrol.css('margin-top', '1px'); formcontrol.css({'color': '', 'text-align': '', 'background': '', 'border': ''}); } }, onResetItems: function() { if (this.itemsTemplate) { $(this.el).find('ul').html( $(this.itemsTemplate({ items: this.store.toJSON(), scope: this }))); } else { $(this.el).find('ul').html(_.template([ '<% _.each(items, function(item) { %>', '<% if (item.value==-1) { %>', '
  • <%= scope.getDisplayValue(item) %>
  • ', '<% } else { %>', '
  • ', '
    <%= scope.getDisplayValue(item) %>
    ', '
  • ', '<% } %>', '<% }); %>' ].join(''))({ items: this.store.toJSON(), scope: this })); } if (!_.isUndefined(this.scroller)) { this.scroller.destroy(); delete this.scroller; } this.scroller = new Common.UI.Scroller(_.extend({ el: $('.dropdown-menu', this.cmpEl), minScrollbarLength : 40, includePadding : true, wheelSpeed: 10, alwaysVisibleY: this.scrollAlwaysVisible }, this.options.scroller)); } }, Common.UI.ComboBoxColor || {})); Common.UI.ComboBoxIcons= Common.UI.ComboBox.extend(_.extend({ template: _.template([ '
    ', '
    ', '
    ', '
    ', '', '', '
    ' ].join('')), itemClicked: function (e) { var el = $(e.currentTarget).parent(); this._selectedItem = this.store.findWhere({ id: el.attr('id') }); if (this._selectedItem) { $('.selected', $(this.el)).removeClass('selected'); el.addClass('selected'); this.updateFormControl(this._selectedItem); this.trigger('selected', this, _.extend({}, this._selectedItem.toJSON()), e); e.preventDefault(); } }, updateFormControl: function(record) { var formcontrol = $(this.el).find('.form-control > div'); if (record.get('value')!=-1) { var str = ''; _.each(record.get('data').iconSet, function(icon) { str += ''; }); formcontrol[0].innerHTML = str; formcontrol.css({'margin-top': '0'}); } else { formcontrol[0].innerHTML = record.get('displayValue'); formcontrol.css({'margin-top': '1px'}); } }, setValue: function(value) { var obj; this._selectedItem = this.store.findWhere((obj={}, obj[this.valueField]=value, obj)); $('.selected', $(this.el)).removeClass('selected'); if (this._selectedItem) { this.updateFormControl(this._selectedItem); $('#' + this._selectedItem.get('id'), $(this.el)).addClass('selected'); } else { var formcontrol = $(this.el).find('.form-control > div'); formcontrol[0].innerHTML = value; formcontrol.css({'margin-top': '1px'}); } }, onResetItems: function() { if (this.itemsTemplate) { $(this.el).find('ul').html( $(this.itemsTemplate({ items: this.store.toJSON(), scope: this }))); } else { $(this.el).find('ul').html(_.template([ '<% _.each(items, function(item) { %>', '<% if (item.value==-1) { %>', '
  • <%= scope.getDisplayValue(item) %>
  • ', '<% } else { %>', '
  • ', '', '<% _.each(item.data.iconSet, function(icon) { %>', '', '<% }) %>', '', '
  • ', '<% } %>', '<% }); %>' ].join(''))({ items: this.store.toJSON(), scope: this })); } if (!_.isUndefined(this.scroller)) { this.scroller.destroy(); delete this.scroller; } this.scroller = new Common.UI.Scroller(_.extend({ el: $('.dropdown-menu', this.cmpEl), minScrollbarLength : 40, includePadding : true, wheelSpeed: 10, alwaysVisibleY: this.scrollAlwaysVisible }, this.options.scroller)); } }, Common.UI.ComboBoxIcons || {})); });