loleaflet/dist/toolbar/w2ui-1.5.rc1.js | 2512 ++++++++++----------------------- loleaflet/dist/w2ui-1.5.rc1.css | 194 -- 2 files changed, 789 insertions(+), 1917 deletions(-)
New commits: commit bdca34a4ac59fd842d25bf57006a97fc0c046d90 Author: Henry Castro <hcas...@collabora.com> Date: Mon Jun 25 17:20:58 2018 -0400 Revert "loleaflet: update w2ui-1.5.rc1" This reverts commit 1c4fdf7df1afe5514a8ea1b94aa68044f20fba66. color picker became smaller in RC2 than it was in RC1 Change-Id: Iaa62da6b5c232b40fbd4ec4b517fc2aa90c1ff05 Reviewed-on: https://gerrit.libreoffice.org/56420 Reviewed-by: Jan Holesovsky <ke...@collabora.com> Tested-by: Jan Holesovsky <ke...@collabora.com> diff --git a/loleaflet/dist/toolbar/w2ui-1.5.rc1.js b/loleaflet/dist/toolbar/w2ui-1.5.rc1.js index e38fd4fd7..89f54de62 100644 --- a/loleaflet/dist/toolbar/w2ui-1.5.rc1.js +++ b/loleaflet/dist/toolbar/w2ui-1.5.rc1.js @@ -1,4 +1,4 @@ -/* w2ui 1.5.x (nightly) (c) http://w2ui.com, vitmal...@gmail.com */ +/* w2ui 1.5.rc1 (nightly) (c) http://w2ui.com, vitmal...@gmail.com */ var w2ui = w2ui || {}; var w2obj = w2obj || {}; // expose object to be able to overwrite default functions @@ -28,18 +28,12 @@ var w2obj = w2obj || {}; // expose object to be able to overwrite default functi * - add w2utils.lang wrap for all captions in all buttons. * - $().w2date(), $().w2dateTime() * -* == 1.5 change -* - parseColor(str) returns rgb -* - rgb2hsv, hsv2rgb -* - color.onSelect -* - refactored w2tag object, it has more potential with $().data('w2tag') -* ************************************************/ var w2utils = (function ($) { var tmp = {}; // for some temp variables var obj = { - version : '1.5.x', + version : '1.5.RC1', settings : { "locale" : "en-us", "dateFormat" : "m/d/yyyy", @@ -67,7 +61,6 @@ var w2utils = (function ($) { isHex : isHex, isAlphaNumeric : isAlphaNumeric, isEmail : isEmail, - isIpAddress : isIpAddress, isDate : isDate, isTime : isTime, isDateTime : isDateTime, @@ -90,7 +83,6 @@ var w2utils = (function ($) { lock : lock, unlock : unlock, message : message, - naturalCompare : naturalCompare, lang : lang, locale : locale, getSize : getSize, @@ -100,22 +92,17 @@ var w2utils = (function ($) { checkUniqueId : checkUniqueId, parseRoute : parseRoute, cssPrefix : cssPrefix, - parseColor : parseColor, - hsv2rgb : hsv2rgb, - rgb2hsv : rgb2hsv, getCursorPosition : getCursorPosition, setCursorPosition : setCursorPosition, testLocalStorage : testLocalStorage, hasLocalStorage : testLocalStorage(), // some internal variables - isIOS : ((navigator.userAgent.toLowerCase().indexOf('iphone') !== -1 || - navigator.userAgent.toLowerCase().indexOf('ipod') !== -1 || - navigator.userAgent.toLowerCase().indexOf('ipad') !== -1 || - navigator.userAgent.toLowerCase().indexOf('mobile') !== -1 || - navigator.userAgent.toLowerCase().indexOf('android') !== -1) + isIOS : ((navigator.userAgent.toLowerCase().indexOf('iphone') != -1 || + navigator.userAgent.toLowerCase().indexOf('ipod') != -1 || + navigator.userAgent.toLowerCase().indexOf('ipad') != -1) ? true : false), - isIE : ((navigator.userAgent.toLowerCase().indexOf('msie') !== -1 || - navigator.userAgent.toLowerCase().indexOf('trident') !== -1 ) + isIE : ((navigator.userAgent.toLowerCase().indexOf('msie') != -1 || + navigator.userAgent.toLowerCase().indexOf('trident') != -1 ) ? true : false) }; return obj; @@ -131,7 +118,7 @@ var w2utils = (function ($) { } function isFloat (val) { - if (typeof val === 'string') val = val.replace(/\s+/g, '').replace(w2utils.settings.groupSymbol, '').replace(w2utils.settings.decimalSymbol, '.'); + if (typeof val == 'string') val = val.replace(/\s+/g, '').replace(w2utils.settings.groupSymbol, '').replace(w2utils.settings.decimalSymbol, '.'); return (typeof val === 'number' || (typeof val === 'string' && val !== '')) && !isNaN(Number(val)); } @@ -148,7 +135,7 @@ var w2utils = (function ($) { } function isHex (val) { - var re = /^(0x)?[0-9a-fA-F]+$/; + var re = /^[a-fA-F0-9]+$/; return re.test(val); } @@ -158,18 +145,10 @@ var w2utils = (function ($) { } function isEmail (val) { - var email = /^[a-zA-Z0-9._%\-+]+@[а-яА-Яa-zA-Z0-9.-]+\.[а-яА-Яa-zA-Z]+$/; + var email = /^[a-zA-Z0-9._%-+]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/; return email.test(val); } - function isIpAddress (val) { - var re = new RegExp('^' + - '((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}' + - '(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)' + - '$'); - return re.test(val); - } - function isDate (val, format, retDate) { if (!val) return false; @@ -187,14 +166,6 @@ var w2utils = (function ($) { year = val.getUTCFullYear(); month = val.getUTCMonth() + 1; day = val.getUTCDate(); - } else if (String(new Date(val)) != 'Invalid Date') { - val = new Date(val); - if (retDate !== true) return true; - return val; - val = new Date(val); - year = val.getUTCFullYear(); - month = val.getUTCMonth() + 1; - day = val.getUTCDate(); } else { val = String(val); // convert month formats @@ -235,7 +206,7 @@ var w2utils = (function ($) { dt = new Date(year, month - 1, day); // do checks if (month == null) return false; - if (String(dt) === 'Invalid Date') return false; + if (String(dt) == 'Invalid Date') return false; if ((dt.getMonth() + 1 !== month) || (dt.getDate() !== day) || (dt.getFullYear() !== year)) return false; if (retDate === true) return dt; else return true; } @@ -284,16 +255,10 @@ var w2utils = (function ($) { if (typeof val.getUTCFullYear === 'function') { // date object if (retDate !== true) return true; return val; - } else if (parseInt(val) === val && parseInt(val) >= 0) { + } else if (parseInt(val) == val && parseInt(val) > 0) { val = new Date(parseInt(val)); if (retDate !== true) return true; return val; - } else if (parseInt(val) === val && parseInt(val) < 0) { - return false; - } else if (String(new Date(val)) != 'Invalid Date') { - val = new Date(val); - if (retDate !== true) return true; - return val; } else { var tmp = String(val).indexOf(' '); var values = [val.substr(0, tmp), val.substr(tmp).trim()]; @@ -324,7 +289,7 @@ var w2utils = (function ($) { } else { d1 = new Date(dateStr); } - if (String(d1) === 'Invalid Date') return ''; + if (String(d1) == 'Invalid Date') return ''; var d2 = new Date(); var sec = (d2.getTime() - d1.getTime()) / 1000; @@ -381,10 +346,10 @@ var w2utils = (function ($) { } function date (dateStr) { - if (dateStr === '' || dateStr == null || (typeof dateStr === 'object' && !dateStr.getMonth)) return ''; + if (dateStr === '' || dateStr == null || (typeof dateStr == 'object' && !dateStr.getMonth)) return ''; var d1 = new Date(dateStr); if (w2utils.isInt(dateStr)) d1 = new Date(Number(dateStr)); // for unix timestamps - if (String(d1) === 'Invalid Date') return ''; + if (String(d1) == 'Invalid Date') return ''; var months = w2utils.settings.shortmonths; var d2 = new Date(); // today @@ -414,7 +379,7 @@ var w2utils = (function ($) { } function formatNumber (val, fraction, useGrouping) { - if (val == null || val === '' || typeof val === 'object') return ''; + if (val == null || val === '' || typeof val == 'object') return ''; var options = { minimumFractionDigits : fraction, maximumFractionDigits : fraction, @@ -429,11 +394,11 @@ var w2utils = (function ($) { function formatDate (dateStr, format) { // IMPORTANT dateStr HAS TO BE valid JavaScript Date String if (!format) format = this.settings.dateFormat; - if (dateStr === '' || dateStr == null || (typeof dateStr === 'object' && !dateStr.getMonth)) return ''; + if (dateStr === '' || dateStr == null || (typeof dateStr == 'object' && !dateStr.getMonth)) return ''; var dt = new Date(dateStr); if (w2utils.isInt(dateStr)) dt = new Date(Number(dateStr)); // for unix timestamps - if (String(dt) === 'Invalid Date') return ''; + if (String(dt) == 'Invalid Date') return ''; var year = dt.getFullYear(); var month = dt.getMonth(); @@ -458,7 +423,7 @@ var w2utils = (function ($) { var months = w2utils.settings.shortmonths; var fullMonths = w2utils.settings.fullmonths; if (!format) format = this.settings.timeFormat; - if (dateStr === '' || dateStr == null || (typeof dateStr === 'object' && !dateStr.getMonth)) return ''; + if (dateStr === '' || dateStr == null || (typeof dateStr == 'object' && !dateStr.getMonth)) return ''; var dt = new Date(dateStr); if (w2utils.isInt(dateStr)) dt = new Date(Number(dateStr)); // for unix timestamps @@ -468,7 +433,7 @@ var w2utils = (function ($) { dt.setHours(tmp.hours); dt.setMinutes(tmp.minutes); } - if (String(dt) === 'Invalid Date') return ''; + if (String(dt) == 'Invalid Date') return ''; var type = 'am'; var hour = dt.getHours(); @@ -480,7 +445,6 @@ var w2utils = (function ($) { if (format.indexOf('am') !== -1 || format.indexOf('pm') !== -1) { if (hour >= 12) type = 'pm'; if (hour > 12) hour = hour - 12; - if (hour === 0) hour = 12; } return format.toLowerCase() .replace('am', type) @@ -499,17 +463,17 @@ var w2utils = (function ($) { function formatDateTime(dateStr, format) { var fmt; - if (dateStr === '' || dateStr == null || (typeof dateStr === 'object' && !dateStr.getMonth)) return ''; + if (dateStr === '' || dateStr == null || (typeof dateStr == 'object' && !dateStr.getMonth)) return ''; if (typeof format !== 'string') { fmt = [this.settings.dateFormat, this.settings.timeFormat]; } else { fmt = format.split('|'); fmt[0] = fmt[0].trim(); - fmt[1] = (fmt.length > 1 ? fmt[1].trim() : this.settings.timeFormat); + fmt[1] = fmt[1].trim(); } // older formats support - if (fmt[1] === 'h12') fmt[1] = 'h:m pm'; - if (fmt[1] === 'h24') fmt[1] = 'h24:m'; + if (fmt[1] == 'h12') fmt[1] = 'h:m pm'; + if (fmt[1] == 'h24') fmt[1] = 'h24:m'; return this.formatDate(dateStr, fmt[0]) + ' ' + this.formatTime(dateStr, fmt[1]); } @@ -1263,7 +1227,7 @@ var w2utils = (function ($) { if (!options.msg) mess.css({ 'background-color': 'transparent', 'border': '0px' }); if (options.spinner === true) options.msg = '<div class="w2ui-spinner" '+ (!options.msg ? 'style="width: 35px; height: 35px"' : '') +'></div>' + options.msg; if (options.opacity != null) $lock.css('opacity', options.opacity); - if (typeof $lock.fadeIn === 'function') { + if (typeof $lock.fadeIn == 'function') { $lock.fadeIn(200); mess.html(options.msg).fadeIn(200); } else { @@ -1344,14 +1308,14 @@ var w2utils = (function ($) { 'transition': '0.15s', 'transform': 'translateY(-' + options.height + 'px)' })).addClass('w2ui-closing'); - if (msgCount === 1) { + if (msgCount == 1) { if (this.unlock) { if (where.param) this.unlock(where.param, 150); else this.unlock(150); } } else { $(where.box).find('#w2ui-message'+ (msgCount-2)).css('z-index', 1500); } - closeTimer = setTimeout(function () { closeCB($msg, options); }, 150); + closeTimer = setTimeout(function () { closeCB($msg, options) }, 150); } else { @@ -1382,9 +1346,9 @@ var w2utils = (function ($) { .data('prev_focus', $(':focus')); var display = $(where.box).find('#w2ui-message'+ msgCount).css('display'); $(where.box).find('#w2ui-message'+ msgCount).css(w2utils.cssPrefix({ - 'transform': (display === 'none' ? 'translateY(-' + options.height + 'px)' : 'translateY(0px)') + 'transform': (display == 'none' ? 'translateY(-' + options.height + 'px)' : 'translateY(0px)') })); - if (display === 'none') { + if (display == 'none') { $(where.box).find('#w2ui-message'+ msgCount).show().html(options.html); options.box = $(where.box).find('#w2ui-message'+ msgCount); // before event @@ -1397,7 +1361,7 @@ var w2utils = (function ($) { // timer needs to animation setTimeout(function () { $(where.box).find('#w2ui-message'+ msgCount).css(w2utils.cssPrefix({ - 'transform': (display === 'none' ? 'translateY(0px)' : 'translateY(-' + options.height + 'px)') + 'transform': (display == 'none' ? 'translateY(0px)' : 'translateY(-' + options.height + 'px)') })); }, 1); // timer for lock @@ -1484,11 +1448,11 @@ var w2utils = (function ($) { if (translation == null) return phrase; else return translation; } - function locale (locale, callBack) { + function locale (locale) { if (!locale) locale = 'en-us'; // if the locale is an object, not a string, than we assume it's a - if (typeof locale !== "string" ) { + if(typeof locale !== "string" ) { w2utils.settings = $.extend(true, w2utils.settings, locale); return; } @@ -1503,9 +1467,9 @@ var w2utils = (function ($) { url : locale, type : "GET", dataType : "JSON", + async : false, success : function (data, status, xhr) { w2utils.settings = $.extend(true, w2utils.settings, data); - if (typeof callBack === 'function') callBack(); }, error : function (xhr, status, msg) { console.log('ERROR: Cannot load locale '+ locale); @@ -1605,7 +1569,7 @@ var w2utils = (function ($) { var doc = input.ownerDocument || input.document; var win = doc.defaultView || doc.parentWindow; var sel; - if (input.tagName && input.tagName.toUpperCase() === 'INPUT' && input.selectionStart) { + if (input.tagName && input.tagName.toUpperCase() == 'INPUT' && input.selectionStart) { // standards browser caretOffset = input.selectionStart; } else { @@ -1618,7 +1582,7 @@ var w2utils = (function ($) { preCaretRange.setEnd(range.endContainer, range.endOffset); caretOffset = preCaretRange.toString().length; } - } else if ( (sel = doc.selection) && sel.type !== "Control") { + } else if ( (sel = doc.selection) && sel.type != "Control") { var textRange = sel.createRange(); var preCaretTextRange = doc.body.createTextRange(); preCaretTextRange.moveToElementText(input); @@ -1677,149 +1641,6 @@ var w2utils = (function ($) { } } - function parseColor(str) { - if (typeof str !== 'string') return null; else str = str.trim().toUpperCase(); - if (str[0] === '#') str = str.substr(1); - var color = {}; - if (str.length === 3) { - color = { - r: parseInt(str[0] + str[0], 16), - g: parseInt(str[1] + str[1], 16), - b: parseInt(str[2] + str[2], 16), - a: 1 - }; - } else if (str.length === 6) { - color = { - r: parseInt(str.substr(0, 2), 16), - g: parseInt(str.substr(2, 2), 16), - b: parseInt(str.substr(4, 2), 16), - a: 1 - }; - } else if (str.length > 4 && str.substr(0, 4) === 'RGB(') { - var tmp = str.replace('RGB', '').replace(/\(/g, '').replace(/\)/g, '').split(','); - color = { - r: parseInt(tmp[0], 10), - g: parseInt(tmp[1], 10), - b: parseInt(tmp[2], 10), - a: 1 - }; - } else if (str.length > 5 && str.substr(0, 5) === 'RGBA(') { - var tmp = str.replace('RGBA', '').replace(/\(/g, '').replace(/\)/g, '').split(','); - color = { - r: parseInt(tmp[0], 10), - g: parseInt(tmp[1], 10), - b: parseInt(tmp[2], 10), - a: parseFloat(tmp[3]) - }; - } else { - // word color - return null; - } - return color; - } - - // h=0..360, s=0..100, v=0..100 - function hsv2rgb(h, s, v, a) { - var r, g, b, i, f, p, q, t; - if (arguments.length === 1) { - s = h.s; v = h.v; a = h.a; h = h.h; - } - h = h / 360; - s = s / 100; - v = v / 100; - i = Math.floor(h * 6); - f = h * 6 - i; - p = v * (1 - s); - q = v * (1 - f * s); - t = v * (1 - (1 - f) * s); - switch (i % 6) { - case 0: r = v, g = t, b = p; break; - case 1: r = q, g = v, b = p; break; - case 2: r = p, g = v, b = t; break; - case 3: r = p, g = q, b = v; break; - case 4: r = t, g = p, b = v; break; - case 5: r = v, g = p, b = q; break; - } - return { - r: Math.round(r * 255), - g: Math.round(g * 255), - b: Math.round(b * 255), - a: (a != null ? a : 1) - }; - } - - // r=0..255, g=0..255, b=0..255 - function rgb2hsv(r, g, b, a) { - if (arguments.length === 1) { - g = r.g; b = r.b; a = r.a; r = r.r; - } - var max = Math.max(r, g, b), min = Math.min(r, g, b), - d = max - min, - h, - s = (max === 0 ? 0 : d / max), - v = max / 255; - switch (max) { - case min: h = 0; break; - case r: h = (g - b) + d * (g < b ? 6: 0); h /= 6 * d; break; - case g: h = (b - r) + d * 2; h /= 6 * d; break; - case b: h = (r - g) + d * 4; h /= 6 * d; break; - } - return { - h: Math.round(h * 360), - s: Math.round(s * 100), - v: Math.round(v * 100), - a: (a != null ? a : 1) - } - } - - /*! from litejs.com / MIT Licence - https://github.com/litejs/natural-compare-lite/blob/master/index.js */ - /* - * @version 1.4.0 - * @date 2015-10-26 - * @stability 3 - Stable - * @author Lauri Rooden (https://github.com/litejs/natural-compare-lite) - * @license MIT License - */ - function naturalCompare(a, b) { - var i, codeA - , codeB = 1 - , posA = 0 - , posB = 0 - , alphabet = String.alphabet; - - function getCode(str, pos, code) { - if (code) { - for (i = pos; code = getCode(str, i), code < 76 && code > 65;) ++i; - return +str.slice(pos - 1, i); - } - code = alphabet && alphabet.indexOf(str.charAt(pos)); - return code > -1 ? code + 76 : ((code = str.charCodeAt(pos) || 0), code < 45 || code > 127) ? code - : code < 46 ? 65 // - - : code < 48 ? code - 1 - : code < 58 ? code + 18 // 0-9 - : code < 65 ? code - 11 - : code < 91 ? code + 11 // A-Z - : code < 97 ? code - 37 - : code < 123 ? code + 5 // a-z - : code - 63; - } - - - if ((a+="") != (b+="")) for (;codeB;) { - codeA = getCode(a, posA++); - codeB = getCode(b, posB++); - - if (codeA < 76 && codeB < 76 && codeA > 66 && codeB > 66) { - codeA = getCode(a, posA, posA); - codeB = getCode(b, posB, posA = i); - posB = i; - } - - if (codeA != codeB) return (codeA < codeB) ? -1 : 1; - } - return 0; - } })(jQuery); /*********************************************************** @@ -1945,15 +1766,15 @@ w2utils.event = { var $ = jQuery; var scope; // allow 'eventName.scope' syntax - if (typeof edata === 'string' && edata.indexOf('.') !== -1) { + if (typeof edata == 'string' && edata.indexOf('.') != -1) { var tmp = edata.split('.'); edata = tmp[0]; scope = tmp[1]; } // allow 'eventName:after' syntax - if (typeof edata === 'string' && edata.indexOf(':') !== -1) { + if (typeof edata == 'string' && edata.indexOf(':') != -1) { var tmp = edata.split(':'); - if (['complete', 'done'].indexOf(edata[1]) !== -1) edata[1] = 'after'; + if (['complete', 'done'].indexOf(edata[1]) != -1) edata[1] = 'after'; edata = { type : tmp[0], execute : tmp[1] @@ -1965,6 +1786,7 @@ w2utils.event = { if (!edata.type) { console.log('ERROR: You must specify event type when calling .on() method of '+ this.name); return; } if (!handler) { console.log('ERROR: You must specify event handler function when calling .on() method of '+ this.name); return; } if (!$.isArray(this.handlers)) this.handlers = []; + console.log('add', edata); this.handlers.push({ edata: edata, handler: handler }); }, @@ -1972,19 +1794,19 @@ w2utils.event = { var $ = jQuery; var scope; // allow 'eventName.scope' syntax - if (typeof edata === 'string' && edata.indexOf('.') !== -1) { + if (typeof edata == 'string' && edata.indexOf('.') != -1) { var tmp = edata.split('.'); edata = tmp[0]; scope = tmp[1]; } // allow 'eventName:after' syntax - if (typeof edata === 'string' && edata.indexOf(':') !== -1) { + if (typeof edata == 'string' && edata.indexOf(':') != -1) { var tmp = edata.split(':'); - if (['complete', 'done'].indexOf(edata[1]) !== -1) edata[1] = 'after'; + if (['complete', 'done'].indexOf(edata[1]) != -1) edata[1] = 'after'; edata = { type : tmp[0], execute : tmp[1] - }; + } } if (!$.isPlainObject(edata)) edata = { type: edata }; edata = $.extend({}, { type: null, execute: 'before', target: null, onComplete: null }, edata); @@ -1998,7 +1820,7 @@ w2utils.event = { if ((t.edata.type === edata.type || edata.type === '*' || (t.edata.scope != null && edata.type == '')) && (t.edata.target === edata.target || edata.target == null) && (t.edata.execute === edata.execute || edata.execute == null) && - ((t.handler === handler && handler != null) || (scope != null && t.edata.scope == scope))) + (t.handler === handler || handler == null || (scope != null && t.edata.scope == scope))) { // match } else { @@ -2076,7 +1898,7 @@ w2utils.event = { if (edata.phase === 'after') { if (typeof edata.onComplete === 'function') edata.onComplete.call(this, edata); for (var i = 0; i < edata.doneHandlers.length; i++) { - if (typeof edata.doneHandlers[i] === 'function') { + if (typeof edata.doneHandlers[i] == 'function') { edata.doneHandlers[i].call(this, edata); } } @@ -2129,7 +1951,7 @@ w2utils.event = { } function clearMarkedText(index, el) { - while (el.innerHTML.indexOf('<span class="w2ui-marker">') !== -1) { + while (el.innerHTML.indexOf('<span class="w2ui-marker">') != -1) { el.innerHTML = el.innerHTML.replace(/\<span class=\"w2ui\-marker\"\>((.|\n|\r)*)\<\/span\>/ig, '$1'); // unmark } } @@ -2139,7 +1961,7 @@ w2utils.event = { $.fn.w2tag = function (text, options) { // only one argument - if (arguments.length === 1 && typeof text === 'object') { + if (arguments.length == 1 && typeof text == 'object') { options = text; if (options.html != null) text = options.html; } @@ -2159,8 +1981,7 @@ w2utils.event = { onHide : null, // callBack when hidden hideOnKeyPress : true, // hide tag if key pressed hideOnBlur : false, // hide tag on blur - hideOnClick : false, // hide tag on document click - hideOnChange : true + hideOnClick : false // hide tag on document click }, options); if (options.name != null && options.id == null) options.id = options.name; @@ -2170,196 +1991,162 @@ w2utils.event = { // remove all tags if ($(this).length === 0) { $('.w2ui-tag').each(function (index, el) { - var tag = $(el).data('w2tag'); - if (tag) tag.hide(); + var opt = $(el).data('options'); + if (opt == null) opt = {}; + $($(el).data('taged-el')) + .removeClass(opt.inputClass) + .removeData('w2tag') + .removeData('checkIfMoved'); + clearInterval($(el).data('timer')); + $(el).remove(); }); return; } return $(this).each(function (index, el) { - // main object - var tag; - var origID = (options.id ? options.id : el.id); - if (origID == '') { // search for an id - origID = $(el).find('input').attr('id'); - } - if (!origID) { - origID = 'noid'; - } - var tmpID = w2utils.escapeId(origID); - if ($(this).data('w2tag') != null) { - tag = $(this).data('w2tag'); - $.extend(tag.options, options); - } else { - tag = { - id : origID, - attachedTo: el, // element attached to - box : $('#w2ui-tag-' + tmpID), // tag itself - options : $.extend({}, options), - // methods - init : init, // attach events - hide : hide, // hide tag - getPos : getPos, // gets position of tag - isMoved : isMoved, // if called, will adjust position - // internal - tmp : {} // for temp variables - }; - } // show or hide tag + var origID = (options.id ? options.id : el.id); + var tagID = w2utils.escapeId(origID); + var $tags = $('#w2ui-tag-'+tagID); if (text === '' || text == null) { - tag.hide(); - } else if (tag.box.length !== 0) { + // remmove element + $tags.css('opacity', 0); + clearInterval($tags.data('timer')); + $tags.remove(); + return; + } else if ($tags.length !== 0) { // if already present - tag.box.find('.w2ui-tag-body') - .css(tag.options.css) - .attr('style', tag.options.style) - .addClass(tag.options.className) - .html(tag.options.html); + options = $.extend($tags.data('options'), options); + $tags.data('options', options); + $tags.find('.w2ui-tag-body') + .attr('style', options.style) + .addClass(options.className) + .html(options.html); + checkIfMoved(true); } else { - tag.tmp.originalCSS = ''; - if ($(tag.attachedTo).length > 0) tag.tmp.originalCSS = $(tag.attachedTo)[0].style.cssText; + var originalCSS = ''; + if ($(el).length > 0) originalCSS = $(el)[0].style.cssText; // insert $('body').append( - '<div onclick="event.stopPropagation()" style="display: none;" id="w2ui-tag-'+ tag.id +'" '+ - ' class="w2ui-tag '+ ($(tag.attachedTo).parents('.w2ui-popup, .w2ui-overlay-popup, .w2ui-message').length > 0 ? 'w2ui-tag-popup' : '') + '">'+ + '<div onclick="event.stopPropagation()" style="display:none;" id="w2ui-tag-'+ origID +'" '+ + ' class="w2ui-tag '+ ($(el).parents('.w2ui-popup, .w2ui-overlay-popup, .w2ui-message').length > 0 ? 'w2ui-tag-popup' : '') + '">'+ ' <div style="margin: -2px 0px 0px -2px; white-space: nowrap;">'+ - ' <div class="w2ui-tag-body '+ tag.options.className +'" style="'+ (tag.options.style || '') +'">'+ text +'</div>'+ + ' <div class="w2ui-tag-body '+ options.className +'" style="'+ (options.style || '') +'">'+ text +'</div>'+ ' </div>' + '</div>'); - tag.box = $('#w2ui-tag-' + tmpID); - $(tag.attachedTo).data('w2tag', tag); // make available to element tag attached to - setTimeout(init, 1); + $tags = $('#w2ui-tag-'+tagID); + $(el).data('w2tag', $tags.get(0)).data('checkIfMoved', checkIfMoved); } - return; - function init() { - tag.box.css('display', 'block'); - if (!tag || !tag.box || !$(tag.attachedTo).offset()) return; - var pos = tag.getPos(); - tag.box.css({ + // need time out to allow tag to be rendered + setTimeout(function () { + $tags.css('display', 'block'); + if (!$(el).offset()) return; + var pos = checkIfMoved(true); + if (pos == null) return; + $tags.css({ opacity : '1', left : pos.left + 'px', top : pos.top + 'px' }) - .data('w2tag', tag) + .data('options', options) + .data('taged-el', el) + .data('position', pos.left + 'x' + pos.top) + .data('timer', setTimeout(checkIfMoved, 100)) .find('.w2ui-tag-body').addClass(pos['posClass']); - tag.tmp.pos = pos.left + 'x' + pos.top; - $(tag.attachedTo) + $(el).css(options.css) .off('.w2tag') - .css(tag.options.css) - .addClass(tag.options.inputClass); + .addClass(options.inputClass); - if (tag.options.hideOnKeyPress) { - $(tag.attachedTo).on('keypress.w2tag', tag.hide); - } - if (options.hideOnChange) { - if (el.nodeName === 'INPUT') { - $(el).on('change.w2tag', tag.hide); - } else { - $(el).find('input').on('change.w2tag', tag.hide); - } + if (options.hideOnKeyPress) { + $(el).on('keypress.w2tag', hideTag); } - if (tag.options.hideOnBlur) { - $(tag.attachedTo).on('blur.w2tag', tag.hide); + if (options.hideOnBlur) { + $(el).on('blur.w2tag', hideTag); } - if (tag.options.hideOnClick) { - $(document).on('click.w2tag', tag.hide); + if (options.hideOnClick) { + $(document).on('click.w2tag', hideTag) } - if (typeof tag.options.onShow === 'function') { - tag.options.onShow(); - } - isMoved(); - } + if (typeof options.onShow === 'function') options.onShow(); + }, 1); // bind event to hide it - function hide() { - if (tag.box.length <= 0) return; - if (tag.tmp.timer) clearTimeout(tag.tmp.timer); - tag.box.remove(); - if (tag.options.hideOnClick) { - $(document).off('.w2tag'); - } - $(tag.attachedTo).off('.w2tag') - .removeClass(tag.options.inputClass) - .removeData('w2tag'); - // restore original CSS - if ($(tag.attachedTo).length > 0) { - $(tag.attachedTo)[0].style.cssText = tag.tmp.originalCSS; - } - if (typeof tag.options.onHide === 'function') { - tag.options.onHide(); - } - } - - function isMoved(instant) { + function hideTag() { + $tags = $('#w2ui-tag-'+tagID); + if ($tags.length <= 0) return; + clearInterval($tags.data('timer')); + $tags.remove(); + $(document).off('.w2tag'); + $(el).off('.w2tag', hideTag) + .removeClass(options.inputClass) + .removeData('w2tag') + .removeData('checkIfMoved'); + if ($(el).length > 0) $(el)[0].style.cssText = originalCSS; + if (typeof options.onHide === 'function') options.onHide(); + } + + function checkIfMoved(checkOnly, instant) { // monitor if destroyed - var offset = $(tag.attachedTo).offset(); - if ($(tag.attachedTo).length === 0 || (offset.left === 0 && offset.top === 0) || tag.box.find('.w2ui-tag-body').length === 0) { - tag.hide(); + var offset = $(el).offset(); + if ($(el).length === 0 || (offset.left === 0 && offset.top === 0) || $tags.find('.w2ui-tag-body').length === 0) { + clearInterval($tags.data('timer')); + hideTag(); return; } - var pos = getPos(); - if (tag.tmp.pos !== pos.left + 'x' + pos.top) { - tag.box - .css(w2utils.cssPrefix({ 'transition': (instant ? '0s' : '.2s') })) - .css({ - left: pos.left + 'px', - top : pos.top + 'px' - }); - tag.tmp.pos = pos.left + 'x' + pos.top; - } - if (tag.tmp.timer) clearTimeout(tag.tmp.timer); - tag.tmp.timer = setTimeout(isMoved, 100); - } - - function getPos() { - var offset = $(tag.attachedTo).offset(); + if (!instant) setTimeout(checkIfMoved, 100); + // monitor if moved var posClass = 'w2ui-tag-right'; - var posLeft = parseInt(offset.left + tag.attachedTo.offsetWidth + (tag.options.left ? tag.options.left : 0)); - var posTop = parseInt(offset.top + (tag.options.top ? tag.options.top : 0)); - var tagBody = tag.box.find('.w2ui-tag-body'); + var posLeft = parseInt(offset.left + el.offsetWidth + (options.left ? options.left : 0)); + var posTop = parseInt(offset.top + (options.top ? options.top : 0)); + var tagBody = $tags.find('.w2ui-tag-body'); var width = tagBody[0].offsetWidth; var height = tagBody[0].offsetHeight; - if (typeof tag.options.position === 'string' && tag.options.position.indexOf('|') !== -1) { - tag.options.position = tag.options.position.split('|'); + if (typeof options.position == 'string' && options.position.indexOf('|') != -1) { + options.position = options.position.split('|'); } - if (tag.options.position === 'top') { + if (options.position == 'top') { posClass = 'w2ui-tag-top'; - posLeft = parseInt(offset.left + (tag.options.left ? tag.options.left : 0)) - 14; - posTop = parseInt(offset.top + (tag.options.top ? tag.options.top : 0)) - height - 10; - } else if (tag.options.position === 'bottom') { + posLeft = parseInt(offset.left + (options.left ? options.left : 0)) - 14; + posTop = parseInt(offset.top + (options.top ? options.top : 0)) - height - 10; + } + else if (options.position == 'bottom') { posClass = 'w2ui-tag-bottom'; - posLeft = parseInt(offset.left + (tag.options.left ? tag.options.left : 0)) - 14; - posTop = parseInt(offset.top + tag.attachedTo.offsetHeight + (tag.options.top ? tag.options.top : 0)) + 10; - } else if (tag.options.position === 'left') { + posLeft = parseInt(offset.left + (options.left ? options.left : 0)) - 14; + posTop = parseInt(offset.top + el.offsetHeight + (options.top ? options.top : 0)) + 10; + } + else if (options.position == 'left') { posClass = 'w2ui-tag-left'; - posLeft = parseInt(offset.left + (tag.options.left ? tag.options.left : 0)) - width - 20; - posTop = parseInt(offset.top + (tag.options.top ? tag.options.top : 0)); - } else if (Array.isArray(tag.options.position)) { + posLeft = parseInt(offset.left + (options.left ? options.left : 0)) - width - 20; + posTop = parseInt(offset.top + (options.top ? options.top : 0)); + } + else if (Array.isArray(options.position)) { // try to fit the tag on screen in the order defined in the array var maxWidth = window.innerWidth; - var maxHeight = window.innerHeight; - for (var i = 0; i < tag.options.position.length; i++) { - var pos = tag.options.position[i]; - if (pos === 'right') { + var maxHeight = window.innerHeight + for (var i=0; i<options.position.length; i++) { + var pos = options.position[i]; + if (pos == 'right') { posClass = 'w2ui-tag-right'; - posLeft = parseInt(offset.left + tag.attachedTo.offsetWidth + (tag.options.left ? tag.options.left : 0)); - posTop = parseInt(offset.top + (tag.options.top ? tag.options.top : 0)); + posLeft = parseInt(offset.left + el.offsetWidth + (options.left ? options.left : 0)); + posTop = parseInt(offset.top + (options.top ? options.top : 0)); if (posLeft+width <= maxWidth) break; - } else if (pos === 'left') { + } + else if (pos == 'left') { posClass = 'w2ui-tag-left'; - posLeft = parseInt(offset.left + (tag.options.left ? tag.options.left : 0)) - width - 20; - posTop = parseInt(offset.top + (tag.options.top ? tag.options.top : 0)); + posLeft = parseInt(offset.left + (options.left ? options.left : 0)) - width - 20; + posTop = parseInt(offset.top + (options.top ? options.top : 0)); if (posLeft >= 0) break; - } else if (pos === 'top') { + } + else if (pos == 'top') { posClass = 'w2ui-tag-top'; - posLeft = parseInt(offset.left + (tag.options.left ? tag.options.left : 0)) - 14; - posTop = parseInt(offset.top + (tag.options.top ? tag.options.top : 0)) - height - 10; + posLeft = parseInt(offset.left + (options.left ? options.left : 0)) - 14; + posTop = parseInt(offset.top + (options.top ? options.top : 0)) - height - 10; if(posLeft+width <= maxWidth && posTop >= 0) break; - } else if (pos === 'bottom') { + } + else if (pos == 'bottom') { posClass = 'w2ui-tag-bottom'; - posLeft = parseInt(offset.left + (tag.options.left ? tag.options.left : 0)) - 14; - posTop = parseInt(offset.top + tag.attachedTo.offsetHeight + (tag.options.top ? tag.options.top : 0)) + 10; + posLeft = parseInt(offset.left + (options.left ? options.left : 0)) - 14; + posTop = parseInt(offset.top + el.offsetHeight + (options.top ? options.top : 0)) + 10; if (posLeft+width <= maxWidth && posTop+height <= maxHeight) break; } } @@ -2369,6 +2156,12 @@ w2utils.event = { .data('posClass', posClass); } } + if ($tags.data('position') !== posLeft + 'x' + posTop && checkOnly !== true) { + $tags.css(w2utils.cssPrefix({ 'transition': (instant ? '0s' : '.2s') })).css({ + left: posLeft + 'px', + top : posTop + 'px' + }).data('position', posLeft + 'x' + posTop); + } return { left: posLeft, top: posTop, posClass: posClass }; } }); @@ -2404,14 +2197,14 @@ w2utils.event = { openAbove : false, // show above control tmp : {} }; - if (arguments.length === 1) { - if (typeof html === 'object') { + if (arguments.length == 1) { + if (typeof html == 'object') { options = html; } else { options = { html: html }; } } - if (arguments.length === 2) options.html = html; + if (arguments.length == 2) options.html = html; if (!$.isPlainObject(options)) options = {}; options = $.extend({}, defaults, options); if (options.name) name = '-' + options.name; @@ -2429,10 +2222,10 @@ w2utils.event = { // hide previous if any if ($('#w2ui-overlay'+ name).length > 0) { tmp_hide = $('#w2ui-overlay'+ name)[0].hide; - $(document).off('.w2overlay'+ name); + $(document).off('.w2overlayHide'); if (typeof tmp_hide === 'function') tmp_hide(); } - if (obj.length > 0 && (obj[0].tagName == null || obj[0].tagName.toUpperCase() === 'BODY')) options.contextMenu = true; + if (obj.length > 0 && (obj[0].tagName == null || obj[0].tagName.toUpperCase() == 'BODY')) options.contextMenu = true; if (options.contextMenu && options.originalEvent) { options.pageX = options.originalEvent.pageX; options.pageY = options.originalEvent.pageY; @@ -2462,13 +2255,12 @@ w2utils.event = { .data('position', offset.left + 'x' + offset.top) .fadeIn('fast') .on('click', function (event) { - $('#w2ui-overlay'+ name).data('keepOpen', true); // if there is label for input, it will produce 2 click events - if (event.target.tagName.toUpperCase() === 'LABEL') event.stopPropagation(); + if (event.target.tagName.toUpperCase() == 'LABEL') event.stopPropagation(); }) .on('mousedown', function (event) { - var tmp = event.target.tagName.toUpperCase(); - if (['INPUT', 'TEXTAREA', 'SELECT'].indexOf(tmp) === -1 && !options.selectable) { + $('#w2ui-overlay'+ name).data('keepOpen', true); + if (['INPUT', 'TEXTAREA', 'SELECT'].indexOf(event.target.tagName.toUpperCase()) == -1 && !options.selectable) { event.preventDefault(); } }); @@ -2477,9 +2269,9 @@ w2utils.event = { // need time to display setTimeout(function () { - $(document).off('.w2overlay'+ name).on('click.w2overlay'+ name, hide); - if (typeof options.onShow === 'function') options.onShow(); resize(); + $(document).off('.w2overlayHide').on('click.w2overlayHide', hide); + if (typeof options.onShow === 'function') options.onShow(); }, 10); monitor(); @@ -2503,8 +2295,6 @@ w2utils.event = { function hide(event) { if (event && event.button !== 0) return; // only for left click button var div1 = $('#w2ui-overlay'+ name); - // Allow clicking inside other overlays which belong to the elements inside this overlay - if (event && $($(event.target).closest('.w2ui-overlay').data('element')).closest('.w2ui-overlay')[0] === div1[0]) return; if (div1.data('keepOpen') === true) { div1.removeData('keepOpen'); return; @@ -2513,11 +2303,11 @@ w2utils.event = { if (typeof options.onHide === 'function') result = options.onHide(); if (result === false) return; div1.remove(); - $(document).off('.w2overlay'+ name); + $(document).off('click', hide); clearInterval(div1.data('timer')); } - function resize() { + function resize () { var div1 = $('#w2ui-overlay'+ name); var div2 = div1.find(' > div'); var menu = $('#w2ui-overlay'+ name +' div.menu'); @@ -2544,10 +2334,10 @@ w2utils.event = { }, 1); setTimeout(function () { var $div = div2.find('div.menu'); - if ($div.css('overflow-y') !== 'auto') $div.css('overflow-y', 'auto'); + if ($div.css('overflow-y') != 'auto') $div.css('overflow-y', 'auto'); }, 10); } - if (options.tmp.contentWidth && options.align !== 'both') { + if (options.tmp.contentWidth && options.align != 'both') { w = parseInt(options.tmp.contentWidth); div2.width(w); setTimeout(function () { @@ -2580,7 +2370,7 @@ w2utils.event = { } if (w === 30 && !boxWidth) boxWidth = 30; else boxWidth = (options.width ? options.width : 'auto'); var tmp = (w - 17) / 2; - if (boxWidth !== 'auto') tmp = (boxWidth - 17) / 2; + if (boxWidth != 'auto') tmp = (boxWidth - 17) / 2; if (tmp < 25) { boxLeft = 25 - tmp; tipLeft = Math.floor(tmp); @@ -2663,7 +2453,7 @@ w2utils.event = { ); } // check scroll bar (needed to avoid horizontal scrollbar) - if (overflowY && options.align !== 'both') div2.width(w + w2utils.scrollBarSize() + 2); + if (overflowY && options.align != 'both') div2.width(w + w2utils.scrollBarSize() + 2); } menu.css('overflow-y', 'auto'); } @@ -2687,7 +2477,7 @@ w2utils.event = { } */ // if items is a function - if (options && typeof options.items === 'function') { + if (options && typeof options.items == 'function') { options.items = options.items(); } var defaults = { @@ -2739,52 +2529,44 @@ w2utils.event = { // since only one overlay can exist at a time $.fn.w2menuClick = function (event, index) { var keepOpen = false; - if (['radio', 'check'].indexOf(options.type) !== -1) { + if (['radio', 'check'].indexOf(options.type) != -1) { if (event.shiftKey || event.metaKey || event.ctrlKey) keepOpen = true; } if (typeof options.onSelect === 'function') { - options.onSelect({ - index : index, - item : options.items[index], - keepOpen: keepOpen, - originalEvent: event - }); + // need time so that menu first hides + setTimeout(function () { + options.onSelect({ + index: index, + item: options.items[index], + keepOpen: keepOpen, + originalEvent: event + }); + }, 10); } // do not uncomment (or enum search type is not working in grid) // setTimeout(function () { $(document).click(); }, 50); // -- hide var div = $('#w2ui-overlay'+ name); div.removeData('keepOpen'); - if (div.length > 0 && typeof div[0].hide === 'function' && !keepOpen) { + if (typeof div[0].hide === 'function' && !keepOpen) { div[0].hide(); } }; $.fn.w2menuDown = function (event, index) { var $el = $(event.target).parents('tr'); var tmp = $el.find('.w2ui-icon'); - if (options.type === 'check' || options.type === 'radio') { + if ((options.type == 'check') || (options.type == 'radio')) { var item = options.items[index]; item.checked = !item.checked; if (item.checked) { - if (options.type === 'radio') { + if (options.type == 'radio') { tmp.parents('table').find('.w2ui-icon') .removeClass('w2ui-icon-check') .addClass('w2ui-icon-empty'); - } - // groups of checkboxes - if (options.type === 'check' && item.group != null) { - options.items.forEach(function (sub, ind) { - if (sub.group === item.group && sub.checked) { - tmp.parents('table').find('tr[index='+ ind +'] .w2ui-icon') - .removeClass('w2ui-icon-check') - .addClass('w2ui-icon-empty'); - sub.checked = false; - } - }); - } - tmp.removeClass('w2ui-icon-empty').addClass('w2ui-icon-check'); - } else if (options.type === 'check' && item.group == null) { - tmp.removeClass('w2ui-icon-check').addClass('w2ui-icon-empty'); + } + tmp.removeClass('w2ui-icon-empty').addClass('w2ui-icon-check'); + } else if (options.type == 'check') { + tmp.removeClass('w2ui-icon-check').addClass('w2ui-icon-empty'); } } // highlight record @@ -2814,7 +2596,7 @@ w2utils.event = { if (event.keyCode === 9) { event.stopPropagation(); event.preventDefault(); } }); if (options.search) { - if (['text', 'password'].indexOf($(obj)[0].type) !== -1 || $(obj)[0].tagName.toUpperCase() === 'TEXTAREA') return; + if (['text', 'password'].indexOf($(obj)[0].type) != -1 || $(obj)[0].tagName.toUpperCase() == 'TEXTAREA') return; $('#w2ui-overlay'+ name +' #menu-search').focus(); } mresize(); @@ -2832,7 +2614,7 @@ w2utils.event = { var scrTop = $('#w2ui-overlay'+ name +' div.menu').scrollTop(); cur.addClass('w2ui-selected'); if (options.tmp) options.tmp.contentHeight = $('#w2ui-overlay'+ name +' table').height() + (options.search ? 50 : 10); - if (options.tmp) options.tmp.contentWidth = $('#w2ui-overlay'+ name +' table').width() + 1; + if (options.tmp) options.tmp.contentWidth = $('#w2ui-overlay'+ name +' table').width(); if ($('#w2ui-overlay'+ name).length > 0) $('#w2ui-overlay'+ name)[0].resize(); // scroll into view if (cur.length > 0) { @@ -2940,7 +2722,7 @@ w2utils.event = { if (img) imgd = '<td class="menu-icon"><div class="w2ui-tb-image w2ui-icon '+ img +'"></div></td>'; if (icon) imgd = '<td class="menu-icon" align="center"><span class="w2ui-icon '+ icon +'"></span></td>'; // render only if non-empty - if (mitem.type !== 'break' && txt != null && txt !== '' && !(/^-+$/.test(txt))) { + if (txt != null && txt !== '' && !(/^-+$/.test(txt))) { var bg = (count % 2 === 0 ? 'w2ui-item-even' : 'w2ui-item-odd'); if (options.altRows !== true) bg = ''; var colspan = 1; @@ -2979,85 +2761,62 @@ w2utils.event = { }; $.fn.w2color = function (options, callBack) { - var obj = this; - var $el = $(this); - var el = $el[0]; - // no need to init - if ($el.data('skipInit')) { - $el.removeData('skipInit'); - return; - } - // needed for keyboard navigation + var obj = this; + var el = $(this)[0]; var index = [-1, -1]; if ($.fn.w2colorPalette == null) { $.fn.w2colorPalette = [ - ['000000', '333333', '555555', '777777', '888888', '999999', 'AAAAAA', 'CCCCCC', 'DDDDDD', 'EEEEEE', 'F7F7F7', 'FFFFFF'], - ['FF011B', 'FF9838', 'FFC300', 'FFFD59', '86FF14', '14FF7A', '2EFFFC', '2693FF', '006CE7', '9B24F4', 'FF21F5', 'FF0099'], - ['FFEAEA', 'FCEFE1', 'FCF4DC', 'FFFECF', 'EBFFD9', 'D9FFE9', 'E0FFFF', 'E8F4FF', 'ECF4FC', 'EAE6F4', 'FFF5FE', 'FCF0F7'], - ['F4CCCC', 'FCE5CD', 'FFF1C2', 'FFFDA1', 'D5FCB1', 'B5F7D0', 'BFFFFF', 'D6ECFF', 'CFE2F3', 'D9D1E9', 'FFE3FD', 'FFD9F0'], - ['EA9899', 'F9CB9C', 'FFE48C', 'F7F56F', 'B9F77E', '84F0B1', '83F7F7', 'B5DAFF', '9FC5E8', 'B4A7D6', 'FAB9F6', 'FFADDE'], - ['E06666', 'F6B26B', 'DEB737', 'E0DE51', '8FDB48', '52D189', '4EDEDB', '76ACE3', '6FA8DC', '8E7CC3', 'E07EDA', 'F26DBD'], - ['CC0814', 'E69138', 'AB8816', 'B5B20E', '6BAB30', '27A85F', '1BA8A6', '3C81C7', '3D85C6', '674EA7', 'A14F9D', 'BF4990'], - ['99050C', 'B45F17', '80650E', '737103', '395E14', '10783D', '13615E', '094785', '0A5394', '351C75', '780172', '782C5A'] + ['000000', '555555', '888888', 'BBBBBB', 'DDDDDD', 'EEEEEE', 'F7F7F7', 'FFFFFF'], + ['FF011B', 'FF9838', 'FFFD59', '01FD55', '00FFFE', '006CE7', '9B24F4', 'FF21F5'], + ['FFEAEA', 'FCEFE1', 'FCF5E1', 'EBF7E7', 'E9F3F5', 'ECF4FC', 'EAE6F4', 'F5E7ED'], + ['F4CCCC', 'FCE5CD', 'FFF2CC', 'D9EAD3', 'D0E0E3', 'CFE2F3', 'D9D1E9', 'EAD1DC'], + ['EA9899', 'F9CB9C', 'FEE599', 'B6D7A8', 'A2C4C9', '9FC5E8', 'B4A7D6', 'D5A6BD'], + ['E06666', 'F6B26B', 'FED966', '93C47D', '76A5AF', '6FA8DC', '8E7CC3', 'C27BA0'], + ['CC0814', 'E69138', 'F1C232', '6AA84F', '45818E', '3D85C6', '674EA7', 'A54D79'], + ['99050C', 'B45F17', 'BF901F', '37761D', '124F5C', '0A5394', '351C75', '741B47'], + // ['660205', '783F0B', '7F6011', '274E12', '0C343D', '063762', '20124D', '4C1030'], + ['F2F2F2', 'F2F2F2', 'F2F2F2', 'F2F2F2', 'F2F2F2'] // custom colors (up to 4) ]; } var pal = $.fn.w2colorPalette; - if (typeof options === 'string') options = { + if (typeof options == 'string') options = { color: options, transparent: true }; - if (options.onSelect == null && callBack != null) options.onSelect = callBack; // add remove transarent color - if (options.transparent && pal[0][1] == '333333') { + if (options.transparent && pal[0][1] == '555555') { pal[0].splice(1, 1); pal[0].push(''); } - if (!options.transparent && pal[0][1] != '333333') { - pal[0].splice(1, 0, '333333'); + if (!options.transparent && pal[0][1] != '555555') { + pal[0].splice(1, 0, '555555'); pal[0].pop(); } if (options.color) options.color = String(options.color).toUpperCase(); - if (typeof options.color === 'string' && options.color.substr(0,1) === '#') options.color = options.color.substr(1); - if (options.fireChange == null) options.fireChange = true; if ($('#w2ui-overlay').length === 0) { - $(el).w2overlay(getColorHTML(options), options); + $(el).w2overlay(getColorHTML(options), { + onHide: function () { + if (typeof callBack == 'function') callBack($(el).data('_color')); + $(el).removeData('_color'); + } + }); } else { // only refresh contents $('#w2ui-overlay .w2ui-color').parent().html(getColorHTML(options)); - $('#w2ui-overlay').show(); } // bind events $('#w2ui-overlay .color') .off('.w2color') .on('mousedown.w2color', function (event) { - var color = $(event.originalEvent.target).attr('name'); // should not have # + var color = $(event.originalEvent.target).attr('name'); index = $(event.originalEvent.target).attr('index').split(':'); - if (el.tagName.toUpperCase() === 'INPUT') { - if (options.fireChange) $(el).change(); - $(el).next().find('>div').css('background-color', color); - } else { - $(el).data('_color', color); - } - if (typeof options.onSelect === 'function') options.onSelect(color); + $(el).data('_color', color); }) .on('mouseup.w2color', function () { setTimeout(function () { if ($("#w2ui-overlay").length > 0) $('#w2ui-overlay').removeData('keepOpen')[0].hide(); }, 10); }); - $('#w2ui-overlay .color-original') - .off('.w2color') - .on('click.w2color', function (event) { - // restore original color - var tmp = w2utils.parseColor($(event.target).css('background-color')); - if (tmp != null) { - rgb = tmp; - hsv = w2utils.rgb2hsv(rgb); - setColor(hsv); - updateSlides(); - refreshPalette(); - } - }); $('#w2ui-overlay input') .off('.w2color') .on('mousedown.w2color', function (event) { @@ -3065,177 +2824,22 @@ w2utils.event = { setTimeout(function () { $('#w2ui-overlay').data('keepOpen', true); }, 10); event.stopPropagation(); }) - .on('change.w2color', function () { - var $el = $(this); - var val = parseFloat($el.val()); - var max = parseFloat($el.attr('max')); - if (isNaN(val)) val = 0; - if (max > 1) val = parseInt(val); - if (max > 0 && val > max) { - $el.val(max); - val = max; - } - if (val < 0) { - $el.val(0); - val = 0; - } - var name = $el.attr('name'); - var color = {}; - if (['r', 'g', 'b', 'a'].indexOf(name) !== -1) { - rgb[name] = val; - hsv = w2utils.rgb2hsv(rgb); - } else if (['h', 's', 'v'].indexOf(name) !== -1) { - color[name] = val; - } - setColor(color); - updateSlides(); - refreshPalette(); - }); - // advanced color events - var initial; - var hsv, rgb = w2utils.parseColor(options.color); - if (rgb == null) { - rgb = { r: 140, g: 150, b: 160, a: 1 }; - hsv = w2utils.rgb2hsv(rgb); - } - hsv = w2utils.rgb2hsv(rgb); - - var setColor = function (color, silent) { - if (color.h != null) hsv.h = color.h; - if (color.s != null) hsv.s = color.s; - if (color.v != null) hsv.v = color.v; - if (color.a != null) { rgb.a = color.a; hsv.a = color.a; } - rgb = w2utils.hsv2rgb(hsv); - var newColor = 'rgba('+ rgb.r +','+ rgb.g +','+ rgb.b +','+ rgb.a +')'; - var cl = [ - Number(rgb.r).toString(16).toUpperCase(), - Number(rgb.g).toString(16).toUpperCase(), - Number(rgb.b).toString(16).toUpperCase() - ]; - cl.forEach(function (item, ind) { if (item.length === 1) cl[ind] = '0' + item; }); - if (rgb.a === 1) { - newColor = cl[0] + cl[1] + cl[2]; - } - $('#w2ui-overlay .color-preview').css('background-color', newColor); - $('#w2ui-overlay input').each(function (index, el) { - if (el.name) { - if (rgb[el.name] != null) el.value = rgb[el.name]; - if (hsv[el.name] != null) el.value = hsv[el.name]; - if (el.name === 'a') el.value = rgb.a; - } - }); - if (!silent) { - if (el.tagName.toUpperCase() === 'INPUT') { - $(el).val(newColor).data('skipInit', true); - if (options.fireChange) $(el).change(); - $(el).next().find('>div').css('background-color', newColor); - } else { - $(el).data('_color', newColor); + .on('keyup.w2color', function (event) { + if (this.value !== '' && this.value[0] !== '#') this.value = '#' + this.value; + }) + .on('change.w2color', function (event) { + var tmp = this.value; + if (tmp.substr(0, 1) == '#') tmp = tmp.substr(1); + if (tmp.length != 6) { + $(this).w2tag('Invalid color.'); + return; } - if (typeof options.onSelect === 'function') options.onSelect(newColor); - } else { - $('#w2ui-overlay .color-original').css('background-color', newColor); - } - } - var updateSlides = function () { - var $el1 = $('#w2ui-overlay .palette .value1'); - var $el2 = $('#w2ui-overlay .rainbow .value2'); - var $el3 = $('#w2ui-overlay .alpha .value2'); - var offset1 = parseInt($el1.width()) / 2; - var offset2 = parseInt($el2.width()) / 2; - $el1.css({ 'left': hsv.s * 150 / 100 - offset1, 'top': (100 - hsv.v) * 125 / 100 - offset1}); - $el2.css('left', hsv.h/(360/150) - offset2); - $el3.css('left', rgb.a*150 - offset2); - } - var refreshPalette = function() { - var cl = w2utils.hsv2rgb(hsv.h, 100, 100); - var rgb = cl.r + ',' + cl.g + ',' + cl.b; - $('#w2ui-overlay .palette').css('background-image', - 'linear-gradient(90deg, rgba('+ rgb +',0) 0%, rgba(' + rgb + ',1) 100%)'); - } - var mouseDown = function (event) { - var $el = $(this).find('.value1, .value2'); - var offset = parseInt($el.width()) / 2; - if ($el.hasClass('move-x')) $el.css({ left: (event.offsetX - offset) + 'px' }); - if ($el.hasClass('move-y')) $el.css({ top: (event.offsetY - offset) + 'px' }); - initial = { - $el : $el, - x : event.pageX, - y : event.pageY, - width : $el.parent().width(), - height : $el.parent().height(), - left : parseInt($el.css('left')), - top : parseInt($el.css('top')) - }; - mouseMove(event); - $('body').off('.w2color') - .on(mMove, mouseMove) - .on(mUp, mouseUp); - }; - var mouseUp = function(event) { - $('body').off('.w2color'); - }; - var mouseMove = function(event) { - var $el = initial.$el; - var divX = event.pageX - initial.x; - var divY = event.pageY - initial.y; - var newX = initial.left + divX; - var newY = initial.top + divY; - var offset = parseInt($el.width()) / 2; - if (newX < -offset) newX = -offset; - if (newY < -offset) newY = -offset; - if (newX > initial.width - offset) newX = initial.width - offset; - if (newY > initial.height - offset) newY = initial.height - offset - if ($el.hasClass('move-x')) $el.css({ left : newX + 'px' }); - if ($el.hasClass('move-y')) $el.css({ top : newY + 'px' }); - - // move - var name = $el.parent().attr('name'); - var x = parseInt($el.css('left')) + offset; - var y = parseInt($el.css('top')) + offset; - if (name === 'palette') { - setColor({ - s: Math.round(x / initial.width * 100), - v: Math.round(100 - (y / initial.height * 100)) - }); - } - if (name === 'rainbow') { - var h = Math.round(360 / 150 * x); - setColor({ h: h }); - refreshPalette(); - } - if (name === 'alpha') { - setColor({ a: parseFloat(Number(x / 150).toFixed(2)) }); - } - } - if ($.fn._colorAdvanced === true || options.advanced === true) { - $('#w2ui-overlay .w2ui-color-tabs :nth-child(2)').click(); - $('#w2ui-overlay').removeData('keepOpen'); - } - setColor({}, true); - refreshPalette(); - updateSlides(); - - // Events of iOS - var mDown = 'mousedown.w2color'; - var mUp = 'mouseup.w2color'; - var mMove = 'mousemove.w2color'; - if (w2utils.isIOS) { - mDown = 'touchstart.w2color'; - mUp = 'touchend.w2color'; - mMove = 'touchmove.w2color '; - } - $('#w2ui-overlay .palette') - .off('.w2color') - .on('mousedown.w2color', mouseDown); - $('#w2ui-overlay .rainbow') - .off('.w2color') - .on('mousedown.w2color', mouseDown); - $('#w2ui-overlay .alpha') - .off('.w2color') - .on('mousedown.w2color', mouseDown); + $.fn.w2colorPalette[pal.length - 1].unshift(tmp.toUpperCase()); + $(el).w2color(options, callBack); + setTimeout(function() { $('#w2ui-overlay input')[0].focus(); }, 100); + }) + .w2field('hex'); - // keyboard navigation el.nav = function (direction) { switch (direction) { case 'up': @@ -3262,16 +2866,14 @@ w2utils.event = { }; function getColorHTML(options) { - var color = options.color, bor; - var html = '<div class="w2ui-color" onmousedown="jQuery(this).parents(\'.w2ui-overlay\').data(\'keepOpen\', true)">'+ - '<div class="w2ui-color-palette">'+ + var color = options.color; + var html = '<div class="w2ui-color" onmousedown="event.stopPropagation(); event.preventDefault()">'+ // prevent default is needed otherwiser selection gets unselected '<table cellspacing="5"><tbody>'; - for (var i = 0; i < pal.length; i++) { + for (var i = 0; i < pal.length - 1; i++) { html += '<tr>'; for (var j = 0; j < pal[i].length; j++) { - if (pal[i][j] === 'FFFFFF') bor = ';border: 1px solid #efefef'; else bor = ''; html += '<td>'+ - ' <div class="color '+ (pal[i][j] === '' ? 'no-color' : '') +'" style="background-color: #'+ pal[i][j] + bor +';" ' + + ' <div class="color '+ (pal[i][j] === '' ? 'no-color' : '') +'" style="background-color: #'+ pal[i][j] +';" ' + ' name="'+ pal[i][j] +'" index="'+ i + ':' + j +'">'+ (options.color == pal[i][j] ? '•' : ' ') + ' </div>'+ '</td>'; @@ -3280,73 +2882,23 @@ w2utils.event = { html += '</tr>'; if (i < 2) html += '<tr><td style="height: 8px" colspan="8"></td></tr>'; } - html += '</tbody></table>'+ - '</div>'; - if (true) { - html += '<div class="w2ui-color-advanced" style="display: none">'+ - ' <div class="color-info">'+ - ' <div class="color-preview-bg"><div class="color-preview"></div><div class="color-original"></div></div>'+ - ' <div class="color-part">'+ - ' <span>H</span> <input name="h" maxlength="3" max="360" tabindex="101">'+ - ' <span>R</span> <input name="r" maxlength="3" max="255" tabindex="104">'+ - ' </div>'+ - ' <div class="color-part">'+ - ' <span>S</span> <input name="s" maxlength="3" max="100" tabindex="102">'+ - ' <span>G</span> <input name="g" maxlength="3" max="255" tabindex="105">'+ - ' </div>'+ - ' <div class="color-part">'+ - ' <span>V</span> <input name="v" maxlength="3" max="100" tabindex="103">'+ - ' <span>B</span> <input name="b" maxlength="3" max="255" tabindex="106">'+ - ' </div>'+ - ' <div class="color-part" style="margin: 30px 0px 0px 2px">'+ - ' <span style="width: 40px">Opacity</span> '+ - ' <input name="a" maxlength="5" max="1" style="width: 32px !important" tabindex="107">'+ - ' </div>'+ - ' </div>'+ - ' <div class="palette" name="palette">'+ - ' <div class="palette-bg"></div>'+ - ' <div class="value1 move-x move-y"></div>'+ - ' </div>'+ - ' <div class="rainbow" name="rainbow">'+ - ' <div class="value2 move-x"></div>'+ - ' </div>'+ - ' <div class="alpha" name="alpha">'+ - ' <div class="alpha-bg"></div>'+ - ' <div class="value2 move-x"></div>'+ - ' </div>'+ - '</div>'; - } - html += '<div class="w2ui-color-tabs">'+ - ' <div class="w2ui-color-tab selected" onclick="jQuery(this).addClass(\'selected\').next().removeClass(\'selected\').parents(\'.w2ui-overlay\').find(\'.w2ui-color-advanced\').hide().parent().find(\'.w2ui-color-palette\').show(); jQuery.fn._colorAdvanced = false; jQuery(\'#w2ui-overlay\')[0].resize()"><span class="w2ui-icon w2ui-icon-colors"></span></div>'+ - ' <div class="w2ui-color-tab" onclick="jQuery(this).addClass(\'selected\').prev().removeClass(\'selected\').parents(\'.w2ui-overlay\').find(\'.w2ui-color-advanced\').show().parent().find(\'.w2ui-color-palette\').hide(); jQuery.fn._colorAdvanced = true; jQuery(\'#w2ui-overlay\')[0].resize()"><span class="w2ui-icon w2ui-icon-settings"></span></div>'+ - '</div>'+ - '</div>'+ - '<div style="clear: both; height: 0"></div>'; + var tmp = pal[pal.length - 1]; + html += '<tr><td style="height: 8px" colspan="8"></td></tr>'+ + '<tr>'+ + ' <td colspan="4" style="text-align: left"><input placeholder="#FFF000" style="margin-left: 1px; width: 74px" maxlength="7"/></td>'+ + ' <td><div class="color" style="background-color: #'+ tmp[0] +';" name="'+ tmp[0] +'" index="8:0">'+ (options.color == tmp[0] ? '•' : ' ') +'</div></td>'+ + ' <td><div class="color" style="background-color: #'+ tmp[1] +';" name="'+ tmp[1] +'" index="8:0">'+ (options.color == tmp[1] ? '•' : ' ') +'</div></td>'+ + ' <td><div class="color" style="background-color: #'+ tmp[2] +';" name="'+ tmp[2] +'" index="8:0">'+ (options.color == tmp[2] ? '•' : ' ') +'</div></td>'+ + ' <td><div class="color" style="background-color: #'+ tmp[3] +';" name="'+ tmp[3] +'" index="8:0">'+ (options.color == tmp[3] ? '•' : ' ') +'</div></td>'+ + '</tr>'+ + '<tr><td style="height: 4px" colspan="8"></td></tr>'; + html += '</tbody></table></div>'; return html; } }; })(jQuery); -/*********************************************************** -* Compatibility with CommonJS and AMD modules -* -*********************************************************/ - -(function(global, w2ui) { - if (typeof define=='function' && define.amd) { - return define(function(){ return w2ui; }); - } - if (typeof exports!='undefined') { - if (typeof module!='undefined' && module.exports) - return exports = module.exports = w2ui; - global = exports; - } - for (var m in w2ui) { - global[m] = w2ui[m]; - } -})(this, { w2ui: w2ui, w2obj: w2obj, w2utils: w2utils }); - /************************************************************************ * Library: Web 2.0 UI for jQuery (using prototypical inheritance) * - Following objects defined @@ -3399,8 +2951,8 @@ w2utils.event = { * - added focus(), blur(), onFocus, onBlur * - search.simple - if false, will not show up in simple search * - search.operator - default operator to use with search field -* - search.operators - array of operators for the search -* - search.hidden - could not be cleared by the user +* - search.operators - array of operators for the serach +* - search.hidden - could not be clearned by the user * - search.value - only for hidden searches * - if .search(val) - search all fields * - refactor reorderRow (not finished) @@ -3439,7 +2991,6 @@ w2utils.event = { w2ui: { colspan: { field: 5, ...} editable: true/false - hideCheckBox: true/false, changes: { field: chagned_value, .... @@ -3456,7 +3007,6 @@ w2utils.event = { } * - added this.show.toolbarInput * - disableCVS -* - added useFieldDot: use field name containing dots as separator to look into objects * - grid.message * - added noReset option to localSort() * - onColumnSelect @@ -3477,9 +3027,6 @@ w2utils.event = { * - columnTooltip * - expendable grids are still working * - added search.type = 'color' -* - added getFirst -* - added stateSaveColumnProperties -* - added stateSaveColumnFallbackValues * ************************************************************************/ @@ -3502,7 +3049,7 @@ w2utils.event = { this.postData = {}; this.httpHeaders = {}; this.toolbar = {}; // if not empty object; then it is toolbar object - this.stateId = null; // Custom state name for stateSave, stateRestore and stateReset + this.stateId = null; // Custom state name for satateSave, stateRestore and stateReset this.show = { header : false, @@ -3549,12 +3096,10 @@ w2utils.event = { this.multiSort = true; this.reorderColumns = false; this.reorderRows = false; - this.searchContextRows = 0; this.markSearch = true; this.columnTooltip = 'normal'; // can be normal, top, bottom, left, right this.disableCVS = false; // disable Column Virtual Scroll this.textSearch = 'begins'; // default search type for text - this.useFieldDot = true; // use field name containing dots as separator to look into object this.total = 0; // server total this.limit = 100; @@ -3563,7 +3108,6 @@ w2utils.event = { this.ranges = []; this.menu = []; this.method = null; // if defined, then overwrited ajax method - this.dataType = null; // if defined, then overwrited w2utils.settings.dataType this.recid = null; this.parser = null; @@ -3595,58 +3139,6 @@ w2utils.event = { isSafari : (/^((?!chrome|android).)*safari/i).test(navigator.userAgent) }; - // these column properties will be saved in stateSave() - this.stateSaveColumnProperties = { - caption : false, - field : true, - size : true, - min : false, - max : false, - gridMinWidth : false, - sizeCorrected : false, - sizeCalculated : true, - sizeOriginal : true, - sizeType : true, - hidden : true, - sortable : false, - searchable : false, - resizable : false, - hideable : false, - attr : false, - style : false, - render : false, - title : false, - editable : false, - frozen : true, - info : false, - }; - - // these are the stateSave() fallback values if the property to save is not a property of the column object - this.stateSaveColumnFallbackValues = { - caption : '', // column caption - field : '', // field name to map column to a record - size : null, // size of column in px or % - min : 20, // minimum width of column in px - max : null, // maximum width of column in px - gridMinWidth : null, // minimum width of the grid when column is visible - sizeCorrected : null, // read only, corrected size (see explanation below) - sizeCalculated : null, // read only, size in px (see explanation below) - sizeOriginal : null, - sizeType : null, - hidden : false, // indicates if column is hidden - sortable : false, // indicates if column is sortable - searchable : false, // indicates if column is searchable, bool/string: int,float,date,... - resizable : true, // indicates if column is resizable - hideable : true, // indicates if column can be hidden - attr : '', // string that will be inside the <td ... attr> tag - style : '', // additional style for the td tag - render : null, // string or render function - title : null, // string or function for the title property for the column cells - editable : {}, // editable object if column fields are editable - frozen : false, // indicates if the column is fixed to the left - info : null // info bubble, can be bool/object - }; - $.extend(true, this, w2obj.grid, options); }; @@ -3670,6 +3162,7 @@ w2utils.event = { // extend items var object = new w2grid(method); $.extend(object, { postData: {}, httpHeaders: {}, records: [], columns: [], searches: [], toolbar: {}, sortData: [], searchData: [], handlers: [] }); + if (object.onExpand != null) object.show.expandColumn = true; $.extend(true, object.toolbar, toolbar); // reassign variables var p; @@ -3757,7 +3250,7 @@ w2utils.event = { "hex" : ['is', 'between'], "color" : ['is', 'begins', 'contains', 'ends'], "enum" : ['in', 'not in'] - // -- all possible + // -- all posible // "text" : ['is', 'begins', 'contains', 'ends'], // "number" : ['is', 'between', 'less:less than', 'more:more than', 'null:is null', 'not null:is not null'], // "list" : ['is', 'null:is null', 'not null:is not null'], @@ -3803,7 +3296,6 @@ w2utils.event = { onColumnClick : null, onColumnDblClick : null, onColumnResize : null, - onColumnAutoResize : null, onSort : null, onSearch : null, onSearchOpen : null, @@ -3885,7 +3377,7 @@ w2utils.event = { }, set: function (recid, record, noRefresh) { // does not delete existing, but overrides on top of it - if ((typeof recid == 'object') && (recid !== null)) { + if (typeof recid == 'object') { noRefresh = record; record = recid; recid = null; @@ -3914,42 +3406,34 @@ w2utils.event = { // search records if ($.isArray(recid)) { var recs = []; - for (var i = 0; i < recid.length; i++) { - var v = this.get(recid[i], returnIndex); - if (v !== null) - recs.push(v); - } - return recs; - } else { - // get() must be fast, implements a cache to bypass loop over all records - // most of the time. - var idCache = this.last.idCache; - if (!idCache) { - this.last.idCache = idCache = {}; - } - var i = idCache[recid]; - if (typeof(i) === "number") { - if (i >= 0 && i < this.records.length && this.records[i].recid == recid) { - if (returnIndex === true) return i; else return this.records[i]; + for (var i = 0; i < this.records.length; i++) { + if ($.inArray(this.records[i].recid, recid) != -1) { + if (returnIndex === true) { + recs.push(i); + } else { + recs.push(this.records[i]); + } } - // summary indexes are stored as negative numbers, try them now. - i = ~i; - if (i >= 0 && i < this.summary.length && this.summary[i].recid == recid) { - if (returnIndex === true) return i; else return this.summary[i]; + } + for (var i = 0; i < this.summary.length; i++) { + if ($.inArray(this.summary[i].recid, recid) != -1) { + if (returnIndex === true) { + recs.push(i); + } else { + recs.push(this.summary[i]); + } } - // wrong index returned, clear cache - this.last.idCache = idCache = {}; } + return recs; + } else { for (var i = 0; i < this.records.length; i++) { if (this.records[i].recid == recid) { - idCache[recid] = i; if (returnIndex === true) return i; else return this.records[i]; } } // search summary for (var i = 0; i < this.summary.length; i++) { if (this.summary[i].recid == recid) { - idCache[recid] = ~i; if (returnIndex === true) return i; else return this.summary[i]; } } @@ -3957,20 +3441,6 @@ w2utils.event = { } }, - getFirst: function () { - if (this.records.length == 0) return null; - var recid = this.records[0].recid; - var tmp = this.last.searchIds; - if (this.searchData.length > 0) { - if (Array.isArray(tmp) && tmp.length > 0) { - recid = this.records[tmp[0]].recid; - } else { - recid = null; - } - } - return recid; - }, - remove: function () { var removed = 0; for (var a = 0; a < arguments.length; a++) { @@ -4077,7 +3547,6 @@ w2utils.event = { } this.refreshBody(); this.resizeRecords(); - this.scroll(); // scroll needed because of column virtual scroll return shown; }, @@ -4094,7 +3563,6 @@ w2utils.event = { } this.refreshBody(); this.resizeRecords(); - this.scroll(); // scroll needed because of column virtual scroll return hidden; }, @@ -4243,9 +3711,8 @@ w2utils.event = { function preparePaths() { for (var i = 0; i < obj.records.length; i++) { var rec = obj.records[i]; - if (rec.w2ui && rec.w2ui.parent_recid != null) { + if (rec.w2ui && rec.w2ui.parent_recid != null) rec.w2ui._path = getRecordPath(rec); - } } } @@ -4253,9 +3720,8 @@ w2utils.event = { function cleanupPaths() { for (var i = 0; i < obj.records.length; i++) { var rec = obj.records[i]; - if (rec.w2ui && rec.w2ui.parent_recid != null) { + if (rec.w2ui && rec.w2ui.parent_recid != null) rec.w2ui._path = null; - } } } @@ -4295,29 +3761,30 @@ w2utils.event = { if (a === b) return 0; // optimize, same object for (var i = 0; i < obj.sortData.length; i++) { var fld = obj.sortData[i].field; - var sortFld = (obj.sortData[i].field_) ? obj.sortData[i].field_ : fld; - var aa = a[sortFld]; - var bb = b[sortFld]; + if (obj.sortData[i].field_) fld = obj.sortData[i].field_; + var aa = a[fld]; + var bb = b[fld]; if (String(fld).indexOf('.') != -1) { - aa = obj.parseField(a, sortFld); - bb = obj.parseField(b, sortFld); + aa = obj.parseField(a, fld); + bb = obj.parseField(b, fld); } var col = obj.getColumn(fld); if (col && col.editable != null) { // for drop editable fields and drop downs if ($.isPlainObject(aa) && aa.text) aa = aa.text; if ($.isPlainObject(bb) && bb.text) bb = bb.text; } - var ret = compareCells(aa, bb, i, obj.sortData[i].direction, col.sortMode || 'default'); + var ret = compareCells(aa, bb, i, obj.sortData[i].direction); if (ret !== 0) return ret; } // break tie for similar records, // required to have consistent ordering for tree paths var ret = compareCells(a.recid, b.recid, -1, 'asc'); - return ret; + if (ret !== 0) return ret; + return 0; } // compare two values, aa and bb, producing consistent ordering - function compareCells(aa, bb, i, direction, sortMode) { + function compareCells(aa, bb, i, direction) { // if both objects are strictly equal, we're done if (aa === bb) return 0; @@ -4326,7 +3793,7 @@ w2utils.event = { return 1; if ((aa != null && aa !== "") && (bb == null || bb === "")) return -1; - var dir = (direction.toLowerCase() === 'asc') ? 1 : -1; + var dir = (direction == 'asc') ? 1 : -1; // for different kind of objects, sort by object type if (typeof aa != typeof bb) return (typeof aa > typeof bb) ? dir : -dir; @@ -4346,22 +3813,11 @@ w2utils.event = { aa = String(aa); if (bb && typeof bb == 'object' && bb.toString != defaultToString) bb = String(bb); - // do case-insensitive string comparison + // do case-insensitive string comparaison if (typeof aa == 'string') aa = $.trim(aa.toLowerCase()); if (typeof bb == 'string') bb = $.trim(bb.toLowerCase()); - - switch (sortMode) { - case 'natural': - sortMode = w2utils.naturalCompare; - break; - } - - if (typeof sortMode == 'function') { - return sortMode(aa,bb) * dir; - } - // compare both objects if (aa > bb) return dir; @@ -4395,43 +3851,7 @@ w2utils.event = { if (match) { if (rec && rec.w2ui) addParent(rec.w2ui.parent_recid); - - if (this.searchContextRows && this.searchContextRows > 0) - { - var beforeItemCount = this.searchContextRows; - var afterItemCount = this.searchContextRows; - - if (i < beforeItemCount) - beforeItemCount = i; - - if (i + afterItemCount > this.records.length) - afterItemCount = this.records.length - i; - - if (beforeItemCount > 0) - { - for (var j = i - beforeItemCount; j < i; j++) - { - if (this.last.searchIds.indexOf(j) < 0) - this.last.searchIds.push(j); - } - } - - if (this.last.searchIds.indexOf(i) < 0) - this.last.searchIds.push(i); - - if (afterItemCount > 0) - { - for (var j = (i + 1) ; j <= (i + afterItemCount) ; j++) - { - if (this.last.searchIds.indexOf(j) < 0) - this.last.searchIds.push(j); - } - } - } - else - { - this.last.searchIds.push(i); - } + this.last.searchIds.push(i); } } this.total = this.last.searchIds.length; @@ -4491,8 +3911,7 @@ w2utils.event = { if (parseFloat(obj.parseField(rec, search.field)) >= parseFloat(val2) && parseFloat(obj.parseField(rec, search.field)) <= parseFloat(val3)) fl++; } else if (search.type == 'date') { - var tmp = (obj.parseField(rec, search.field + '_') instanceof Date ? obj.parseField(rec, search.field + '_') : obj.parseField(rec, search.field)); - var val1 = w2utils.isDate(tmp, w2utils.settings.dateFormat, true); + var val1 = (obj.parseField(rec, search.field + '_') instanceof Date ? obj.parseField(rec, search.field + '_') : obj.parseField(rec, search.field)); var val2 = w2utils.isDate(val2, w2utils.settings.dateFormat, true); var val3 = w2utils.isDate(val3, w2utils.settings.dateFormat, true); if (val3 != null) val3 = new Date(val3.getTime() + 86400000); // 1 day @@ -4520,7 +3939,7 @@ w2utils.event = { } else if (search.type == 'date') { var tmp = (obj.parseField(rec, search.field + '_') instanceof Date ? obj.parseField(rec, search.field + '_') : obj.parseField(rec, search.field)); - var val1 = w2utils.formatDate(w2utils.isDate(tmp, w2utils.settings.dateFormat, true), 'yyyy-mm-dd'); + var val1 = w2utils.formatDate(tmp, 'yyyy-mm-dd'); var val2 = w2utils.formatDate(w2utils.isDate(val2, w2utils.settings.dateFormat, true), 'yyyy-mm-dd'); if (val1 <= val2) fl++; } @@ -4543,7 +3962,7 @@ w2utils.event = { } else if (search.type == 'date') { var tmp = (obj.parseField(rec, search.field + '_') instanceof Date ? obj.parseField(rec, search.field + '_') : obj.parseField(rec, search.field)); - var val1 = w2utils.formatDate(w2utils.isDate(tmp, w2utils.settings.dateFormat, true), 'yyyy-mm-dd'); + var val1 = w2utils.formatDate(tmp, 'yyyy-mm-dd'); var val2 = w2utils.formatDate(w2utils.isDate(val2, w2utils.settings.dateFormat, true), 'yyyy-mm-dd'); if (val1 >= val2) fl++; } @@ -4563,12 +3982,14 @@ w2utils.event = { case 'in': var tmp = sdata.value; if (sdata.svalue) tmp = sdata.svalue; - if ((tmp.indexOf(w2utils.isFloat(val1b) ? parseFloat(val1b) : val1b) !== -1) || tmp.indexOf(val1) !== -1) fl++; + if (tmp.indexOf(w2utils.isFloat(val1) ? parseFloat(val1) : val1) !== -1) fl++; + if (tmp.indexOf(w2utils.isFloat(val1b) ? parseFloat(val1b) : val1b) !== -1) fl++; break; case 'not in': var tmp = sdata.value; if (sdata.svalue) tmp = sdata.svalue; - if (!((tmp.indexOf(w2utils.isFloat(val1b) ? parseFloat(val1b) : val1b) !== -1) || tmp.indexOf(val1) !== -1)) fl++; + if (tmp.indexOf(w2utils.isFloat(val1) ? parseFloat(val1) : val1) == -1) fl++; + if (tmp.indexOf(w2utils.isFloat(val1b) ? parseFloat(val1b) : val1b) == -1) fl++; break; case 'begins': case 'begins with': // need for back compatib. @@ -4868,10 +4289,8 @@ w2utils.event = { originalRange : [{ recid: sel[0].recid, column: sel[0].column }, { recid: sel[sel.length-1].recid, column: sel[sel.length-1].column }], newRange : [{ recid: sel[0].recid, column: sel[0].column }, { recid: sel[sel.length-1].recid, column: sel[sel.length-1].column }] }; - $(document) - .off('.w2ui-' + obj.name) - .on('mousemove.w2ui-' + obj.name, mouseMove) - .on('mouseup.w2ui-' + obj.name, mouseStop); + $(document).off('mousemove', mouseMove).on('mousemove', mouseMove); + $(document).off('mouseup', mouseStop).on('mouseup', mouseStop); // do not blur grid event.preventDefault(); } @@ -4913,7 +4332,8 @@ w2utils.event = { // default behavior obj.removeRange('grid-selection-expand'); delete obj.last.move; - $(document).off('.w2ui-' + obj.name); + $(document).off('mousemove', mouseMove); + $(document).off('mouseup', mouseStop); // event after obj.trigger($.extend(edata, { phase: 'after' })); } ... etc. - the rest is truncated _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits