X-Git-Url: http://git.roojs.org/?a=blobdiff_plain;f=roojs-bootstrap-debug.js;h=bcb5ad72e320781f9e4dcf5e0feca27335851de9;hb=f4275764a85f25bb0f07a37b8141bd8b1d1f6923;hp=4f5603062765f895fb10295bb8111b539211c89f;hpb=80d1b352167d1133a48f3b71d2a7adb9f85168e5;p=roojs1 diff --git a/roojs-bootstrap-debug.js b/roojs-bootstrap-debug.js index 4f56030627..bcb5ad72e3 100644 --- a/roojs-bootstrap-debug.js +++ b/roojs-bootstrap-debug.js @@ -2060,13 +2060,13 @@ Roo.bootstrap.Menu = function(config){ this.addEvents({ /** * @event beforeshow - * Fires before this menu is displayed + * Fires before this menu is displayed (return false to block) * @param {Roo.menu.Menu} this */ beforeshow : true, /** * @event beforehide - * Fires before this menu is hidden + * Fires before this menu is hidden (return false to block) * @param {Roo.menu.Menu} this */ beforehide : true, @@ -2268,7 +2268,7 @@ Roo.extend(Roo.bootstrap.Menu, Roo.bootstrap.Component, { isVisible : function(){ return !this.hidden; }, - onMouseOut : function(e){ + onMouseOut : function(e){ var t = this.findTargetItem(e); //if(t ){ @@ -2288,12 +2288,17 @@ Roo.extend(Roo.bootstrap.Menu, Roo.bootstrap.Component, { * the element (defaults to this.defaultAlign) * @param {Roo.menu.Menu} parentMenu (optional) This menu's parent menu, if applicable (defaults to undefined) */ - show : function(el, pos, parentMenu){ - this.parentMenu = parentMenu; + show : function(el, pos, parentMenu) + { + if (false === this.fireEvent("beforeshow", this)) { + Roo.log("show canceled"); + return; + } + this.parentMenu = parentMenu; if(!this.el){ this.render(); } - this.fireEvent("beforeshow", this); + this.showAt(this.el.getAlignToXY(el, pos || this.defaultAlign), parentMenu, false); }, /** @@ -2356,10 +2361,13 @@ Roo.extend(Roo.bootstrap.Menu, Roo.bootstrap.Component, { */ hide : function(deep) { - + if (false === this.fireEvent("beforehide", this)) { + Roo.log("hide canceled"); + return; + } this.hideMenuItems(); if(this.el && this.isVisible()){ - this.fireEvent("beforehide", this); + if(this.activeItem){ this.activeItem.deactivate(); this.activeItem = null; @@ -2426,16 +2434,11 @@ Roo.extend(Roo.bootstrap.Menu, Roo.bootstrap.Component, { if (!this.el) { return; } - //$(backdrop).remove() + this.el.select('.open',true).each(function(aa) { aa.removeClass('open'); - //var parent = getParent($(this)) - //var relatedTarget = { relatedTarget: this } - - //$parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget)) - //if (e.isDefaultPrevented()) return - //$parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget) + }); }, addxtypeChild : function (tree, cntr) { @@ -3875,46 +3878,7 @@ Roo.extend(Roo.bootstrap.Navbar, Roo.bootstrap.Component, { initEvents :function () { //Roo.log(this.el.select('.navbar-toggle',true)); - this.el.select('.navbar-toggle',true).on('click', function() { - if(this.fireEvent('beforetoggle', this) !== false){ - var ce = this.el.select('.navbar-collapse',true).first(); - ce.toggleClass('in'); // old... - if (ce.hasClass('collapse')) { - // show it... - ce.removeClass('collapse'); - ce.addClass('show'); - var h = ce.getHeight(); - Roo.log(h); - ce.removeClass('show'); - // at this point we should be able to see it.. - ce.addClass('collapsing'); - - ce.setHeight(0); // resize it ... - ce.on('transitionend', function() { - Roo.log('done transition'); - ce.removeClass('collapsing'); - ce.addClass('show'); - ce.removeClass('collapse'); - - ce.dom.style.height = ''; - }, this, { single: true} ); - ce.setHeight(h); - - } else { - ce.setHeight(ce.getHeight()); - ce.removeClass('show'); - ce.addClass('collapsing'); - - ce.on('transitionend', function() { - ce.dom.style.height = ''; - ce.removeClass('collapsing'); - ce.addClass('collapse'); - }, this, { single: true} ); - ce.setHeight(0); - } - } - - }, this); + this.el.select('.navbar-toggle',true).on('click', this.onToggle , this); var mark = { tag: "div", @@ -3936,7 +3900,7 @@ Roo.extend(Roo.bootstrap.Navbar, Roo.bootstrap.Component, { getChildContainer : function() { - if (this.el.select('.collapse').getCount()) { + if (this.el && this.el.select('.collapse').getCount()) { return this.el.select('.collapse',true).first(); } @@ -3951,8 +3915,80 @@ Roo.extend(Roo.bootstrap.Navbar, Roo.bootstrap.Component, { unmask : function() { this.maskEl.hide(); - } + }, + onToggle : function() + { + + if(this.fireEvent('beforetoggle', this) === false){ + return; + } + var ce = this.el.select('.navbar-collapse',true).first(); + + if (!ce.hasClass('show')) { + this.expand(); + } else { + this.collapse(); + } + + + }, + /** + * Expand the navbar pulldown + */ + expand : function () + { + + var ce = this.el.select('.navbar-collapse',true).first(); + if (ce.hasClass('collapsing')) { + return; + } + ce.dom.style.height = ''; + // show it... + ce.addClass('in'); // old... + ce.removeClass('collapse'); + ce.addClass('show'); + var h = ce.getHeight(); + Roo.log(h); + ce.removeClass('show'); + // at this point we should be able to see it.. + ce.addClass('collapsing'); + + ce.setHeight(0); // resize it ... + ce.on('transitionend', function() { + //Roo.log('done transition'); + ce.removeClass('collapsing'); + ce.addClass('show'); + ce.removeClass('collapse'); + + ce.dom.style.height = ''; + }, this, { single: true} ); + ce.setHeight(h); + ce.dom.scrollTop = 0; + }, + /** + * Collapse the navbar pulldown + */ + collapse : function() + { + var ce = this.el.select('.navbar-collapse',true).first(); + + if (ce.hasClass('collapsing') || ce.hasClass('collapse') ) { + // it's collapsed or collapsing.. + return; + } + ce.removeClass('in'); // old... + ce.setHeight(ce.getHeight()); + ce.removeClass('show'); + ce.addClass('collapsing'); + + ce.on('transitionend', function() { + ce.dom.style.height = ''; + ce.removeClass('collapsing'); + ce.addClass('collapse'); + }, this, { single: true} ); + ce.setHeight(0); + } @@ -5125,7 +5161,7 @@ Roo.extend(Roo.bootstrap.NavSidebarItem, Roo.bootstrap.NavItem, { e.preventDefault(); } - this.fireEvent('click', this); + this.fireEvent('click', this, e); }, disable : function() @@ -12379,7 +12415,7 @@ Roo.extend(Roo.data.MemoryProxy, Roo.data.DataProxy, { params = params || {}; var result; try { - result = reader.readRecords(this.data); + result = reader.readRecords(params.data ? params.data :this.data); }catch(e){ this.fireEvent("loadexception", this, arg, null, e); callback.call(scope, null, arg, false); @@ -12986,24 +13022,31 @@ var myReader = new Roo.data.ArrayReader({ *

 [ [1, 'Bill', 'Gardener'], [2, 'Ben', 'Horticulturalist'] ]
   
- * @cfg {String} id (optional) The subscript within row Array that provides an ID for the Record + * @constructor * Create a new JsonReader * @param {Object} meta Metadata configuration options. - * @param {Object} recordType Either an Array of field definition objects + * @param {Object|Array} recordType Either an Array of field definition objects + * + * @cfg {Array} fields Array of field definition objects + * @cfg {String} id Name of the property within a row object that contains a record identifier value. * as specified to {@link Roo.data.Record#create}, * or an {@link Roo.data.Record} object + * + * * created using {@link Roo.data.Record#create}. */ Roo.data.ArrayReader = function(meta, recordType){ - Roo.data.ArrayReader.superclass.constructor.call(this, meta, recordType); + + + Roo.data.ArrayReader.superclass.constructor.call(this, meta, recordType||meta.fields); }; Roo.extend(Roo.data.ArrayReader, Roo.data.JsonReader, { /** * Create a data block containing Roo.data.Records from an XML document. * @param {Object} o An Array of row objects which represents the dataset. - * @return {Object} data A data block which is used by an Roo.data.Store object as + * @return {Object} A data block which is used by an {@link Roo.data.Store} object as * a cache of Roo.data.Records. */ readRecords : function(o){ @@ -24042,6 +24085,7 @@ Roo.namespace('Roo.bootstrap.htmleditor'); * @class Roo.bootstrap.HtmlEditorToolbar1 * Basic Toolbar * + * @example * Usage: * new Roo.bootstrap.HtmlEditor({ @@ -27168,17 +27212,15 @@ Roo.apply(Roo.bootstrap.LocationPicker, { } -});/* - * - LGPL - * - * Alert - * - */ - -/** +});/** * @class Roo.bootstrap.Alert * @extends Roo.bootstrap.Component - * Bootstrap Alert class + * Bootstrap Alert class - shows an alert area box + * eg + * + * @licence LGPL * @cfg {String} title The title of alert * @cfg {String} html The content of alert * @cfg {String} weight ( success | info | warning | danger ) @@ -41501,17 +41543,14 @@ Roo.extend(Roo.bootstrap.MoneyField, Roo.bootstrap.ComboBox, { } });/** -* This script refer to: -* Title: Signature Pad -* Author: szimek -* Availability: https://github.com/szimek/signature_pad -**/ - -/** * @class Roo.bootstrap.BezierSignature * @extends Roo.bootstrap.Component * Bootstrap BezierSignature class - * + * This script refer to: + * Title: Signature Pad + * Author: szimek + * Availability: https://github.com/szimek/signature_pad + * * @constructor * Create a new BezierSignature * @param {Object} config The config object @@ -41524,8 +41563,9 @@ Roo.bootstrap.BezierSignature = function(config){ }); }; -Roo.extend(Roo.bootstrap.BezierSignature, Roo.bootstrap.Component, { - +Roo.extend(Roo.bootstrap.BezierSignature, Roo.bootstrap.Component, +{ + curve_data: [], is_empty: true, @@ -41533,57 +41573,57 @@ Roo.extend(Roo.bootstrap.BezierSignature, Roo.bootstrap.Component, { mouse_btn_down: true, /** - * @cfg(int) canvas height + * @cfg {int} canvas height */ canvas_height: '200px', /** - * @cfg(float or function) Radius of a single dot. + * @cfg {float|function} Radius of a single dot. */ dot_size: false, /** - * @cfg(float) Minimum width of a line. Defaults to 0.5. + * @cfg {float} Minimum width of a line. Defaults to 0.5. */ min_width: 0.5, /** - * @cfg(float) Maximum width of a line. Defaults to 2.5. + * @cfg {float} Maximum width of a line. Defaults to 2.5. */ max_width: 2.5, /** - * @cfg(integer) Draw the next point at most once per every x milliseconds. Set it to 0 to turn off throttling. Defaults to 16. + * @cfg {integer} Draw the next point at most once per every x milliseconds. Set it to 0 to turn off throttling. Defaults to 16. */ throttle: 16, /** - * @cfg(integer) Add the next point only if the previous one is farther than x pixels. Defaults to 5. + * @cfg {integer} Add the next point only if the previous one is farther than x pixels. Defaults to 5. */ min_distance: 5, /** - * @cfg(string) Color used to clear the background. Can be any color format accepted by context.fillStyle. Defaults to "rgba(0,0,0,0)" (transparent black). Use a non-transparent color e.g. "rgb(255,255,255)" (opaque white) if you'd like to save signatures as JPEG images. + * @cfg {string} Color used to clear the background. Can be any color format accepted by context.fillStyle. Defaults to "rgba(0,0,0,0)" (transparent black). Use a non-transparent color e.g. "rgb(255,255,255)" (opaque white) if you'd like to save signatures as JPEG images. */ bg_color: 'rgba(0, 0, 0, 0)', /** - * @cfg(string) Color used to draw the lines. Can be any color format accepted by context.fillStyle. Defaults to "black". + * @cfg {string} Color used to draw the lines. Can be any color format accepted by context.fillStyle. Defaults to "black". */ dot_color: 'black', /** - * @cfg(float) Weight used to modify new velocity based on the previous velocity. Defaults to 0.7. - */ + * @cfg {float} Weight used to modify new velocity based on the previous velocity. Defaults to 0.7. + */ velocity_filter_weight: 0.7, /** - * @cfg(function) Callback when stroke begin. + * @cfg {function} Callback when stroke begin. */ onBegin: false, /** - * @cfg(function) Callback when stroke end. + * @cfg {function} Callback when stroke end. */ onEnd: false, @@ -41623,6 +41663,11 @@ Roo.extend(Roo.bootstrap.BezierSignature, Roo.bootstrap.Component, { width: this.canvas_width } ] + }, + { + tag: 'input', + type: 'file', + style: 'display: none' } ] }; @@ -41659,6 +41704,9 @@ Roo.extend(Roo.bootstrap.BezierSignature, Roo.bootstrap.Component, { Roo.EventManager.onWindowResize(this.resize, this, true); + // file input event + this.fileEl().on('change', this.uploadImage, this); + this.clear(); this.resize(); @@ -41668,8 +41716,11 @@ Roo.extend(Roo.bootstrap.BezierSignature, Roo.bootstrap.Component, { var canvas = this.canvasEl().dom; var ctx = this.canvasElCtx(); - var img_data = ctx.getImageData(0, 0, canvas.width, canvas.height); + var img_data = false; + if(canvas.width > 0) { + var img_data = ctx.getImageData(0, 0, canvas.width, canvas.height); + } // setting canvas width will clean img data canvas.width = 0; @@ -41681,7 +41732,9 @@ Roo.extend(Roo.bootstrap.BezierSignature, Roo.bootstrap.Component, { canvas.width = this.el.dom.clientWidth - padding_left - padding_right; - ctx.putImageData(img_data, 0, 0); + if(img_data) { + ctx.putImageData(img_data, 0, 0); + } }, _handleMouseDown: function(e) @@ -41747,7 +41800,7 @@ Roo.extend(Roo.bootstrap.BezierSignature, Roo.bootstrap.Component, { this.strokeUpdate(e); if (this.throttle) { - this.throttle(this.strokeUpdate, this.throttle); + this.throttleStroke(this.strokeUpdate, this.throttle); } else { this.strokeUpdate(e); @@ -41894,6 +41947,11 @@ Roo.extend(Roo.bootstrap.BezierSignature, Roo.bootstrap.Component, { this.is_empty = true; }, + fileEl: function() + { + return this.el.select('input',true).first(); + }, + canvasEl: function() { return this.el.select('canvas',true).first(); @@ -41927,6 +41985,27 @@ Roo.extend(Roo.bootstrap.BezierSignature, Roo.bootstrap.Component, { this.is_empty = false; }, + selectImage: function() + { + this.fileEl().dom.click(); + }, + + uploadImage: function(e) + { + var reader = new FileReader(); + + reader.onload = function(e){ + var img = new Image(); + img.onload = function(){ + this.reset(); + this.canvasElCtx().drawImage(img, 0, 0); + }.bind(this); + img.src = e.target.result; + }.bind(this); + + reader.readAsDataURL(e.target.files[0]); + }, + // Bezier Point Constructor Point: (function () { function Point(x, y, time) { @@ -42012,7 +42091,7 @@ Roo.extend(Roo.bootstrap.BezierSignature, Roo.bootstrap.Component, { return Bezier; }()), - throttle: function(fn, wait) { + throttleStroke: function(fn, wait) { if (wait === void 0) { wait = 250; } var previous = 0; var timeout = null;