j-js-lib
Version:
1 lines • 8.27 kB
JavaScript
var Events=function(e,n){this.subject=e,this.observers={},this.eventNames="array"==typeof n?n:[]};Events.prototype={on:function(e,n){if("function"!=typeof n)return!1;var t=!1,r=this.eventNames;if(r&&0<r.length){for(var i in r)if(r[i]===e){t=!0;break}}else t=!0;if(t){var a=this.observers;null==a[e]&&(a[e]=[]),a[e].push(n)}return t},removeCallback:function(e,n){var t=this.observers[e];for(var r in t)if(n[r]===n)break;t.splice(r,1)},remove:function(e){this.observers[e]=[]},emit:function(e,n,t){var r=this.observers[e];if("object"==typeof r)for(var i in r){r[i].call(this.subject,n,t)}}};var J=J||{};(window.J=J).newGuid=function(){function e(){return(65536*(1+Math.random())|0).toString(16).substring(1)}return e()+e()+"-"+e()+"-"+e()+"-"+e()+"-"+e()+e()+e()},J.isNullOrUndefined=function(e,n){return null==e||void 0===e||!(!n||"null"!=e&&"undefined"!=e)},J.isUndefined=function(e,n){return void 0===e||!(!n||"string"!=typeof e||"undefined"!=e.toLowerCase())},J.isFunction=function(e){return"function"==typeof e},J.isArray=function(e){return Array.prototype.isPrototypeOf(e)},J.isNumber=function(e){return""!==e&&null!=e&&!isNaN(e)},J.parseFloat=function(e,n){return J.isNumber(e)?parseFloat(e):n},J.parseInt=function(e,n){return J.isNumber(e)?parseInt(e):n},J.parseBool=function(e,n){return J.isNullOrUndefined(e)?n:!0===e||"true"===e||!1!==e&&"false"!==e&&n},J.obj2Json=function(e){return JSON.stringify(e)},J.json2Obj=function(e){var n=null;if(!J.isNullOrUndefined(e)){var t=e.indexOf("<PRE>");if(0==t){var r=e.lastIndexOf("</PRE>");e=e.substring(t+5,r)}n=JSON.parse(e)}return n},String.prototype.format=function(e){var n=this,t=arguments.length;if(0<t)if(1==t&&"object"==typeof e){null==(a=e)&&(a="");var r=new RegExp("({[0]})","g");n=n.replace(r,a)}else for(var i=0;i<t;i++){var a;null==(a=arguments[i])&&(a="");r=new RegExp("({["+i+"]})","g");n=n.replace(r,a)}return n},J.deepClone=function(e){var n;if(e)if("object"==typeof e)for(var t in n=Array.isArray(e)?[]:{},e)n[t]=J.deepClone(e[t]);else n=e;else n=e;return n},J.isObject=function(e){return"object"==typeof e},J.isBoolean=function(e){return"boolean"==typeof e},J.extend=function(){var e=arguments;switch(e.length){case 0:return;case 1:return e[0];default:var n=!1,t=e[0],r=t,i=0;if(J.isBoolean(t)&&(t&&(n=!0),r=e[i=1]),n){r=J.deepClone(r);for(var a=i+1;a<e.length;a++){var o=e[a];for(var s in o){var u=r[s],f=o[s];J.isObject(u)&&u?r[s]=J.extend(n,u,f):r[s]=J.deepClone(f)}}}else for(a=1;a<e.length;a++){o=e[a];for(var s in J.isNullOrUndefined(r)&&(r=Array.isArray(o)?[]:{}),o)r[s]=o[s]}return r}},J.each=function(e,n){if(J.isFunction(n))if((e=e||[]).constructor===Object)for(var t in e){var r=e[t];if(n.call(r,t,r))break}else{t=0;for(var i=e.length;t<i;t++){r=e[t];if(n.call(r,t,r))break}}},J.TreeNodes=function(a){var e={id:null,parentId:null,parent:null,children:[],data:null};for(var n in a){(e=a[n]).parent||(e.parent=t(e)),e.children=r(e)}function t(e){if(e){var n=e.parentId;if(n)for(var t in a){var r=a[t];if(r.id==n)return r}}return null}function r(e){var n=[];if(e){var t=e.id;if(t)for(var r in a){var i=a[r];i.parentId==t&&(i.parent=e,n.push(i))}}return n}},J.stopEventBubble=function(e){e&&e.stopPropagation?e.stopPropagation():window.event.cancelBubble=!0},J.getUrl=function(e){var n,t=(e=J.extend({url:"",pathVariables:{},query:{}},e)).url.toString(),r=t.indexOf("?"),i=t.indexOf("#"),a=t.indexOf("//");n=0<=a?t.indexOf("/",a+2):t.indexOf("/");var o="";o=0<=r?t.substring(n,r):0<=i?t.substring(n,i):t.substring(n);var s=e.pathVariables;for(var u in s){var f=new RegExp("({"+u+"})","g");o=o.replace(f,s[u])}var c="";0<=r&&(c=0<=i?t.substring(r+1,i):t.substring(r+1));var l="",d=e.query;if(d)for(var u in d){l+="&"+u+"="+d[u]}return 0<l.length&&(c+=l),0===c.indexOf("&")&&(c=c.substring(1)),t.substring(0,n)+o+"?"+c},J.url2UrlObj=function(e){var n,t=e.indexOf("?"),r=e.indexOf("#"),i=e.indexOf("//");n=0<=i?e.indexOf("/",i+2):e.indexOf("/");var a=e.substring(0,n),o="";o=0<=t?e.substring(n,t):0<=r?e.substring(n,r):e.substring(n);var s="";0<=t&&(s=0<=r?e.substring(t+1,r):e.substring(t+1));var u={};if(0<s.length){var f=s.split("&");for(var c in f){var l=f[c].split("=");if(2===l.length){var d=l[0];d=d.trim();var v=l[1];u[d]=v}}}return{url:a+o,pathVariables:{},query:u}},J.urlObj2Url=function(e){var n,t=(e=J.extend({url:"",pathVariables:{},query:{}},e)).url.toString(),r=t.indexOf("?"),i=t.indexOf("#"),a=t.indexOf("//");n=0<=a?t.indexOf("/",a+2):t.indexOf("/");var o="";o=0<=r?t.substring(n,r):0<=i?t.substring(n,i):t.substring(n);var s=e.pathVariables;for(var u in s){var f=new RegExp("({"+u+"})","g");o=o.replace(f,s[u])}var c="";0<=r&&(c=0<=i?t.substring(r+1,i):t.substring(r+1));var l="",d=e.query;if(d)for(var u in d){l+="&"+u+"="+d[u]}return 0<l.length&&(c+=l),0===c.indexOf("&")&&(c=c.substring(1)),t.substring(0,n)+o+"?"+c},J.getCookie=function(e){var n,t=new RegExp("(^| )"+e+"=([^;]*)(;|$)");return(n=document.cookie.match(t))?unescape(n[2]):null},J.setCookie=function(e,n,t,r,i){var a=new Date;a.setTime(a.setTime()+t);var o=e+"="+escape(n)+(t?";expires="+a.toGMTString():"")+(r?";path="+r:"")+(i?";domain="+i:"");document.cookie=o},J.delCookie=function(e){var n=new Date;n.setTime(n.getTime()-1);var t=J.getCookie(e);null!=t&&(document.cookie=e+"="+t+";expires="+n.toGMTString())},JAsyncAction=function(e){var n=this,t=null,r=null;function i(e){return"function"==typeof e}return i(e)&&e(function(e){i(t)&&t(e)},function(e){i(r)&&r(e)}),n.done=function(e){return t=e,n},n.fail=function(e){return r=e,n},n.then=function(e){return t=e,n},n["catch"]=function(e){return r=e,n},n},JAsyncAction,function(J,e){JAjax=function(){var b=this.defaults;function r(g){return new e(function(t,r){g.url=g.url||"/",g.method=g.method||b.method,g.async=g.async||b.async,g.data=g.data||"",g.timeout=g.timeout||b.timeout,g.responseType=g.responseType||b.responseType,g.headers=g.headers||{};var e=g.url,n=b.baseUrl;e.startsWith("/")||!e.toLocaleLowerCase().startsWith("http")&&n&&(n.endsWith("/")||(n=NaN),e=n+e);var i={},a=b.headers;for(var o in a)i[o]=a[o];var s=g.headers;for(var o in s)i[o]=s[o];var u={status:-1,statusText:"",data:null},f={message:"",response:null},c=function(){if(4===d.readyState){var e=d.status;u.status=e,u.statusText=d.statusText;var n=null;switch(g.responseType){case"json":n=J.json2Obj(d.responseText);break;default:n=d.responseText}u.data=n,200===e?t(u):(f.message=401===e?n.message:"error",f.response=u,r(f))}},l=function(){d.onreadystatechange=function(){},d.abort()},d=function h(){try{return new XMLHttpRequest}catch(e){try{return new ActiveXObject("Msxml2.XMLHTTP")}catch(e){try{return new ActiveXObject("Microsoft.XMLHTTP")}catch(e){return null}}}}();if(null===d)return f.message="浏览器不支持AJAX",r(f),!1;if(d.timeout=g.timeout,d.onload=function(e){200==this.status||this.status},d.ontimeout=function(e){f.message="请求超时",r(f),l()},d.onerror=function(e){f.message="请求错误",r(f),l()},d.upload.onprogress=function(e){console.log(e)},d.onreadystatechange=c,g.beforeSend&&!1===g.beforeSend())return!1;switch(d.onreadystatechange=c,g.method){case"GET":case"DELETE":var v=g.data;for(var o in!J.isNullOrUndefined(v)&&0<v.length&&(-1<e.indexOf("?")?e+="&"+v:e+="?"+v),d.open(g.method,e,g.async),i)d.setRequestHeader(o,i[o]);d.send(null);break;case"POST":case"PUT":case"PATCH":for(var o in d.open(g.method,e,g.async),i)d.setRequestHeader(o,i[o]);var p=JSON.stringify(g.data);d.send(p)}})}this.get=function(e,n){return r(n=J.extend(n,{url:e,method:"GET"}))},this.post=function(e,n,t){return r(t=J.extend(t,{url:e,method:"POST",data:n}))},this.put=function(e,n,t){return r(t=J.extend(t,{url:e,method:"PUT",data:n}))},this.patch=function(e,n,t){return r(t=J.extend(t,{url:e,method:"PATCH",data:n}))},this.del=function(e,n){return r(n=J.extend(n,{url:e,method:"DELETE"}))}},JAjax.prototype.defaults={baseUrl:"",method:"GET",async:!0,timeout:3e4,headers:{"Content-Type":"application/json"},responseType:"json"},J.ajax=function(e){return(new JAjax).ajax(e)},J.ajaxGet=function(e,n){return(new JAjax).get(e,n)},J.ajaxPost=function(e,n,t){return(new JAjax).post(e,n,t)},J.ajaxPut=function(e,n,t){return(new JAjax).put(e,n,t)},J.ajaxPatch=function(e,n,t){return(new JAjax).patch(e,n,t)},J.ajaxDelete=function(e,n){return(new JAjax).del(e,n)},JAjax}(J,JAsyncAction);