123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431 |
- /**
- * EasyUI for jQuery 1.5.5.6
- *
- * Copyright (c) 2009-2018 www.jeasyui.com. All rights reserved.
- *
- * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php
- * To use it on other terms please contact us: info@jeasyui.com
- *
- */
- /**
- * parser - EasyUI for jQuery
- *
- */
- (function($){
- $.easyui = {
- /**
- * Get the index of array item, return -1 when the item is not found.
- */
- indexOfArray: function(a, o, id){
- for(var i=0,len=a.length; i<len; i++){
- if (id == undefined){
- if (a[i] == o){return i;}
- } else {
- if (a[i][o] == id){return i;}
- }
- }
- return -1;
- },
- /**
- * Remove array item, 'o' parameter can be item object or id field name.
- * When 'o' parameter is the id field name, the 'id' parameter is valid.
- */
- removeArrayItem: function(a, o, id){
- if (typeof o == 'string'){
- for(var i=0,len=a.length; i<len; i++){
- if (a[i][o] == id){
- a.splice(i, 1);
- return;
- }
- }
- } else {
- var index = this.indexOfArray(a,o);
- if (index != -1){
- a.splice(index, 1);
- }
- }
- },
- /**
- * Add un-duplicate array item, 'o' parameter is the id field name, if the 'r' object is exists, deny the action.
- */
- addArrayItem: function(a, o, r){
- var index = this.indexOfArray(a, o, r ? r[o] : undefined);
- if (index == -1){
- a.push(r ? r : o);
- } else {
- a[index] = r ? r : o;
- }
- },
- getArrayItem: function(a, o, id){
- var index = this.indexOfArray(a, o, id);
- return index==-1 ? null : a[index];
- },
- forEach: function(data, deep, callback){
- var nodes = [];
- for(var i=0; i<data.length; i++){
- nodes.push(data[i]);
- }
- while(nodes.length){
- var node = nodes.shift();
- if (callback(node) == false){return;}
- if (deep && node.children){
- for(var i=node.children.length-1; i>=0; i--){
- nodes.unshift(node.children[i]);
- }
- }
- }
- }
- };
- $.parser = {
- auto: true,
- onComplete: function(context){},
- plugins:['draggable','droppable','resizable','pagination','tooltip',
- 'linkbutton','menu','sidemenu','menubutton','splitbutton','switchbutton','progressbar','radiobutton','checkbox',
- 'tree','textbox','passwordbox','maskedbox','filebox','combo','combobox','combotree','combogrid','combotreegrid','tagbox','numberbox','validatebox','searchbox',
- 'spinner','numberspinner','timespinner','datetimespinner','calendar','datebox','datetimebox','slider',
- 'layout','panel','datagrid','propertygrid','treegrid','datalist','tabs','accordion','window','dialog','form'
- ],
- parse: function(context){
- var aa = [];
- for(var i=0; i<$.parser.plugins.length; i++){
- var name = $.parser.plugins[i];
- var r = $('.easyui-' + name, context);
- if (r.length){
- if (r[name]){
- r.each(function(){
- $(this)[name]($.data(this, 'options')||{});
- });
- } else {
- aa.push({name:name,jq:r});
- }
- }
- }
- if (aa.length && window.easyloader){
- var names = [];
- for(var i=0; i<aa.length; i++){
- names.push(aa[i].name);
- }
- easyloader.load(names, function(){
- for(var i=0; i<aa.length; i++){
- var name = aa[i].name;
- var jq = aa[i].jq;
- jq.each(function(){
- $(this)[name]($.data(this, 'options')||{});
- });
- }
- $.parser.onComplete.call($.parser, context);
- });
- } else {
- $.parser.onComplete.call($.parser, context);
- }
- },
-
- parseValue: function(property, value, parent, delta){
- delta = delta || 0;
- var v = $.trim(String(value||''));
- var endchar = v.substr(v.length-1, 1);
- if (endchar == '%'){
- v = parseFloat(v.substr(0, v.length-1));
- if (property.toLowerCase().indexOf('width') >= 0){
- v = Math.floor((parent.width()-delta) * v / 100.0);
- } else {
- v = Math.floor((parent.height()-delta) * v / 100.0);
- }
- } else {
- v = parseInt(v) || undefined;
- }
- return v;
- },
-
- /**
- * parse options, including standard 'data-options' attribute.
- *
- * calling examples:
- * $.parser.parseOptions(target);
- * $.parser.parseOptions(target, ['id','title','width',{fit:'boolean',border:'boolean'},{min:'number'}]);
- */
- parseOptions: function(target, properties){
- var t = $(target);
- var options = {};
-
- var s = $.trim(t.attr('data-options'));
- if (s){
- if (s.substring(0, 1) != '{'){
- s = '{' + s + '}';
- }
- options = (new Function('return ' + s))();
- }
- $.map(['width','height','left','top','minWidth','maxWidth','minHeight','maxHeight'], function(p){
- var pv = $.trim(target.style[p] || '');
- if (pv){
- if (pv.indexOf('%') == -1){
- pv = parseInt(pv);
- if (isNaN(pv)){
- pv = undefined;
- }
- }
- options[p] = pv;
- }
- });
-
- if (properties){
- var opts = {};
- for(var i=0; i<properties.length; i++){
- var pp = properties[i];
- if (typeof pp == 'string'){
- opts[pp] = t.attr(pp);
- } else {
- for(var name in pp){
- var type = pp[name];
- if (type == 'boolean'){
- opts[name] = t.attr(name) ? (t.attr(name) == 'true') : undefined;
- } else if (type == 'number'){
- opts[name] = t.attr(name)=='0' ? 0 : parseFloat(t.attr(name)) || undefined;
- }
- }
- }
- }
- $.extend(options, opts);
- }
- return options;
- }
- };
- $(function(){
- var d = $('<div style="position:absolute;top:-1000px;width:100px;height:100px;padding:5px"></div>').appendTo('body');
- $._boxModel = d.outerWidth()!=100;
- d.remove();
- d = $('<div style="position:fixed"></div>').appendTo('body');
- $._positionFixed = (d.css('position') == 'fixed');
- d.remove();
-
- if (!window.easyloader && $.parser.auto){
- $.parser.parse();
- }
- });
-
- /**
- * extend plugin to set box model width
- */
- $.fn._outerWidth = function(width){
- if (width == undefined){
- if (this[0] == window){
- return this.width() || document.body.clientWidth;
- }
- return this.outerWidth()||0;
- }
- return this._size('width', width);
- };
-
- /**
- * extend plugin to set box model height
- */
- $.fn._outerHeight = function(height){
- if (height == undefined){
- if (this[0] == window){
- return this.height() || document.body.clientHeight;
- }
- return this.outerHeight()||0;
- }
- return this._size('height', height);
- };
-
- $.fn._scrollLeft = function(left){
- if (left == undefined){
- return this.scrollLeft();
- } else {
- return this.each(function(){$(this).scrollLeft(left)});
- }
- };
-
- $.fn._propAttr = $.fn.prop || $.fn.attr;
-
- $.fn._size = function(options, parent){
- if (typeof options == 'string'){
- if (options == 'clear'){
- return this.each(function(){
- $(this).css({width:'',minWidth:'',maxWidth:'',height:'',minHeight:'',maxHeight:''});
- });
- } else if (options == 'fit'){
- return this.each(function(){
- _fit(this, this.tagName=='BODY' ? $('body') : $(this).parent(), true);
- });
- } else if (options == 'unfit'){
- return this.each(function(){
- _fit(this, $(this).parent(), false);
- });
- } else {
- if (parent == undefined){
- return _css(this[0], options);
- } else {
- return this.each(function(){
- _css(this, options, parent);
- });
- }
- }
- } else {
- return this.each(function(){
- parent = parent || $(this).parent();
- $.extend(options, _fit(this, parent, options.fit)||{});
- var r1 = _setSize(this, 'width', parent, options);
- var r2 = _setSize(this, 'height', parent, options);
- if (r1 || r2){
- $(this).addClass('easyui-fluid');
- } else {
- $(this).removeClass('easyui-fluid');
- }
- });
- }
-
- function _fit(target, parent, fit){
- if (!parent.length){return false;}
- var t = $(target)[0];
- var p = parent[0];
- var fcount = p.fcount || 0;
- if (fit){
- if (!t.fitted){
- t.fitted = true;
- p.fcount = fcount + 1;
- $(p).addClass('panel-noscroll');
- if (p.tagName == 'BODY'){
- $('html').addClass('panel-fit');
- }
- }
- return {
- width: ($(p).width()||1),
- height: ($(p).height()||1)
- };
- } else {
- if (t.fitted){
- t.fitted = false;
- p.fcount = fcount - 1;
- if (p.fcount == 0){
- $(p).removeClass('panel-noscroll');
- if (p.tagName == 'BODY'){
- $('html').removeClass('panel-fit');
- }
- }
- }
- return false;
- }
- }
- function _setSize(target, property, parent, options){
- var t = $(target);
- var p = property;
- var p1 = p.substr(0,1).toUpperCase() + p.substr(1);
- var min = $.parser.parseValue('min'+p1, options['min'+p1], parent);// || 0;
- var max = $.parser.parseValue('max'+p1, options['max'+p1], parent);// || 99999;
- var val = $.parser.parseValue(p, options[p], parent);
- var fluid = (String(options[p]||'').indexOf('%') >= 0 ? true : false);
-
- if (!isNaN(val)){
- var v = Math.min(Math.max(val, min||0), max||99999);
- if (!fluid){
- options[p] = v;
- }
- t._size('min'+p1, '');
- t._size('max'+p1, '');
- t._size(p, v);
- } else {
- t._size(p, '');
- t._size('min'+p1, min);
- t._size('max'+p1, max);
- }
- return fluid || options.fit;
- }
- function _css(target, property, value){
- var t = $(target);
- if (value == undefined){
- value = parseInt(target.style[property]);
- if (isNaN(value)){return undefined;}
- if ($._boxModel){
- value += getDeltaSize();
- }
- return value;
- } else if (value === ''){
- t.css(property, '');
- } else {
- if ($._boxModel){
- value -= getDeltaSize();
- if (value < 0){value = 0;}
- }
- t.css(property, value+'px');
- }
- function getDeltaSize(){
- if (property.toLowerCase().indexOf('width') >= 0){
- return t.outerWidth() - t.width();
- } else {
- return t.outerHeight() - t.height();
- }
- }
- }
- };
-
- })(jQuery);
- /**
- * support for mobile devices
- */
- (function($){
- var longTouchTimer = null;
- var dblTouchTimer = null;
- var isDblClick = false;
-
- function onTouchStart(e){
- if (e.touches.length != 1){return}
- if (!isDblClick){
- isDblClick = true;
- dblClickTimer = setTimeout(function(){
- isDblClick = false;
- }, 500);
- } else {
- clearTimeout(dblClickTimer);
- isDblClick = false;
- fire(e, 'dblclick');
- // e.preventDefault();
- }
- longTouchTimer = setTimeout(function(){
- fire(e, 'contextmenu', 3);
- }, 1000);
- fire(e, 'mousedown');
- if ($.fn.draggable.isDragging || $.fn.resizable.isResizing){
- e.preventDefault();
- }
- }
- function onTouchMove(e){
- if (e.touches.length != 1){return}
- if (longTouchTimer){
- clearTimeout(longTouchTimer);
- }
- fire(e, 'mousemove');
- if ($.fn.draggable.isDragging || $.fn.resizable.isResizing){
- e.preventDefault();
- }
- }
- function onTouchEnd(e){
- // if (e.touches.length > 0){return}
- if (longTouchTimer){
- clearTimeout(longTouchTimer);
- }
- fire(e, 'mouseup');
- if ($.fn.draggable.isDragging || $.fn.resizable.isResizing){
- e.preventDefault();
- }
- }
-
- function fire(e, name, which){
- var event = new $.Event(name);
- event.pageX = e.changedTouches[0].pageX;
- event.pageY = e.changedTouches[0].pageY;
- event.which = which || 1;
- $(e.target).trigger(event);
- }
-
- if (document.addEventListener){
- document.addEventListener("touchstart", onTouchStart, true);
- document.addEventListener("touchmove", onTouchMove, true);
- document.addEventListener("touchend", onTouchEnd, true);
- }
- })(jQuery);
|