| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494 |
- // Get "query string"
- String.prototype.getQueryString = function(name,split)
- {
- if (split==undefined) split="&";
- var reg = new RegExp("(^|"+split+"|\\?)"+ name +"=([^"+split+"]*)("+split+"|$)"), r;
- if (r=this.match(reg)) return unescape(r[2]); return null;
- };
- String.prototype.right = function(len)
- {
- return (this.substr(-len));
- }
- String.prototype.getHostName = function() {
- var url = this;
- var result = url;
- var regex = /^\w+\:\/\/([^\/]*).*/;
- var match = url.match(regex);
- if (typeof match != "undefined" && null != match) {
- result = match[1];
- if (result.indexOf(":") != -1) {
- result = result.split(":")[0];
- }
- }
- return result;
- }
- //公用函数定义
- //格式化数字
- Number.prototype.formatNumber = function(f)
- {
- this.fStr = function(n, f, p)
- {
- if (n==""||n==undefined)
- {
- if (f==""||f==undefined)
- {
- return "";
- }
- else
- {
- return f;
- }
- }
- var fc = s = r = "", pos;
- if (!p)
- {
- n = n.split("").reverse().join("");
- f = f.split("").reverse().join("");
- }
-
- for (var i = j = 0; i < f.length; i++, j++)
- {
- s = n.charAt(j);
- if (s == undefined) continue;
- fc = f.charAt(i);
- switch (fc)
- {
- case "#":
- r += s;
- pos = i;
- break;
- case "0":
- r = s || s == fc ? (r + s) : r + 0;
- pos = i;
- break;//原方法,这里对小数点后的处理有点问题.
- case ".":
- r += s == fc ? s : (j--, fc);
- break;
- case ",":
- r += s == fc ? s : (j--, fc);
- break;
- default:
- r += fc;
- j--;
- }
- }
- if (j != n.length && f.charAt(f.length - 1) != "0" && pos != f.length && f.charAt(pos) != "0")
- r = r.substr(0, pos + 1) + n.substr(j) + r.substr(pos + 1);
-
- r = (p ? r : r.split("").reverse().join("")).replace(/(^,)|(,$)|(,,+)/g, "");
- if (r.substr(0,1)==",")
- {
- r = r.substr(1);
- }
- if (r.substr(0,2)=="-,")
- {
- r = "-"+r.substr(2);
- }
- return r;
- }
- var n = this.toString();
- if (n.length == 0)
- return "";
- if (f == undefined)
- return this;
- f = f.split("."), n = n.split(".");
- return f.length > 1 ? this.fStr(n[0], f[0]) + "." + this.fStr(n[1], f[1], 1) : this.fStr(n[0], f[0]);
- };
- /**
- * 根据指定的十六进制颜色值,返回RGB颜色数值
- */
- String.prototype.getRGB = function(){
- var reg = /^#([0-9a-f]{3}|[0-9a-f]{6})$/;
- var color = this.toLowerCase();
- if (color && reg.test(color)) {
- if (color.length === 4) {
- var sColorNew = "#";
- for (var i = 1; i < 4; i += 1) {
- sColorNew += color.slice(i, i + 1).concat(color.slice(i, i + 1));
- }
- color = sColorNew;
- }
- //处理六位的颜色值
- var result = [];
- for (var i = 1; i < 7; i += 2) {
- result.push(parseInt("0x" + color.slice(i, i + 2)));
- }
- return {
- R: result[0],
- G: result[1],
- B: result[2]
- }
- } else {
- return this;
- }
- }
- /**
- * 获取一个颜色的人眼感知亮度,并以 0~1 之间的小数表示。
- * @param {*} color
- */
- function getGrayLevel(color)
- {
- if (!color) {
- color = {
- R:0,G:0,B:0
- };
- }
- if (typeof(color)==="string") {
- color=color.getRGB()
- }
- return (0.299 * color.R + 0.587 * color.G + 0.114 * color.B) / 255;
- }
- function getLocalTime(time)
- {
- return new Date(parseInt(time) * 1000).toLocaleString().replace(/年|月/g, "-").replace(/日/g, " ");
- }
- function formatLongTime(time,formatString){
- var now = new Date(parseInt(time)*1000);
- return formatDate(now);
- }
- function formatDate(formatDate, formatString) {
- if (!formatString)
- {
- formatString = "yyyy-mm-dd hh:nn:ss";
- }
- if(formatDate instanceof Date) {
- var months = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
- var yyyy = formatDate.getFullYear();
- var yy = yyyy.toString().substring(2);
- var m = formatDate.getMonth()+1;
- var mm = m < 10 ? "0" + m : m;
- var mmm = months[m];
- var d = formatDate.getDate();
- var dd = d < 10 ? "0" + d : d;
-
- var h = formatDate.getHours();
- var hh = h < 10 ? "0" + h : h;
- var n = formatDate.getMinutes();
- var nn = n < 10 ? "0" + n : n;
- var s = formatDate.getSeconds();
- var ss = s < 10 ? "0" + s : s;
-
- formatString = formatString.replace(/yyyy/i, yyyy);
- formatString = formatString.replace(/yy/i, yy);
- formatString = formatString.replace(/mmm/i, mmm);
- formatString = formatString.replace(/mm/i, mm);
- formatString = formatString.replace(/m/i, m);
- formatString = formatString.replace(/dd/i, dd);
- formatString = formatString.replace(/d/i, d);
- formatString = formatString.replace(/hh/i, hh);
- formatString = formatString.replace(/h/i, h);
- formatString = formatString.replace(/nn/i, nn);
- formatString = formatString.replace(/n/i, n);
- formatString = formatString.replace(/ss/i, ss);
- formatString = formatString.replace(/s/i, s);
-
- return formatString;
- } else {
- return "";
- }
- }
- function formatSize(bytes,zeroToEmpty,type)
- {
- if (bytes==0)
- {
- if (zeroToEmpty==true)
- {
- return "";
- }
- else
- {
- if (type=="speed")
- {
- return "0.00 KB/s";
- }
- else
- return "0.00";
- }
- }
- var r = "";
- var u = "KB";
- if (bytes < 1000 * 1024)
- {
- r = (bytes / 1024);
- u = "KB";
- }
- else if (bytes < 1000 * 1048576)
- {
- r = (bytes / 1048576);
- u = "MB";
- }
- else if (bytes < 1000 * 1073741824)
- {
- r = (bytes / 1073741824);
- u = "GB";
- }
- else if (bytes < 1000 * 1099511627776)
- {
- r = (bytes / 1099511627776);
- u = "TB";
- }
- else
- {
- r = (bytes / 1125899906842624);
- u = "PB";
- }
-
- if (type=="speed")
- {
- u+="/s";
- }
-
- return (r.formatNumber("###,###,###,###.00 ")+u);
- }
- // 根据分钟获取小时
- function getHoursFromMinutes(minutes)
- {
- return (("00"+parseInt(minutes/60,10)).right(2)+":"+("00"+(minutes % 60)).right(2));
- }
- // 根据小时获取分钟
- function getMinutesFromHours(hours)
- {
- return (parseInt(hours.split(":")[0],10)*60+parseInt(hours.split(":")[1],10));
- }
- // Get the cumulative time
- function getTotalTime(time,format)
- {
- //time [ms]
- if (!format)
- {
- format = "%dd %hh %mm %ss ";
- }
- //Calculate the difference between the number of days
- var days=Math.floor(time/(24*3600*1000));
- //Calculate the number of hours
- var leave1=time%(24*3600*1000);
- //The number of milliseconds remaining after calculating the number of days
- var hours=Math.floor(leave1/(3600*1000));
- //Calculate the number of minutes
- var leave2=leave1%(3600*1000);
- //The number of milliseconds remaining after the number of hours is counted
- var minutes=Math.floor(leave2/(60*1000));
- //Calculate the number of seconds
- var leave3=leave2%(60*1000);
- //The number of milliseconds remaining after calculating the number of minutes
- var seconds=Math.round(leave3/1000);
- var result = format;
- if (days==0)
- {
- result = result.replace(/(%d+\s)/,"");
- }
- else
- result = result.replace("%d",days);
-
- if (hours==0)
- {
- result = result.replace(/(%h+\s)/,"");
- }
- else
- result = result.replace("%h",hours);
- if (minutes==0)
- {
- result = result.replace(/(%m+\s)/,"");
- }
- else
- result = result.replace("%m",minutes);
-
- if (seconds==0)
- {
- result = result.replace(/(%s+\s)/,"");
- }
- else
- result = result.replace("%s",seconds);
- return result;
- }
- // Array object sort extension
- function arrayObjectSort(field,sortOrder)
- {
- return function(object1, object2)
- {
- var value1 = object1[field];
- var value2 = object2[field];
- if (value1 < value2)
- {
- if (sortOrder=="desc")
- {
- return 1;
- }
- else
- return -1;
-
- }
- else if (value1 > value2)
- {
- if (sortOrder=="desc")
- {
- return -1;
- }
- else
- return 1;
- }
- else
- {
- return 0;
- }
- }
- }
- // Generic time - sharing processing functions
- function timedChunk(items, process, context, delay,callback)
- {
- var todo = items.concat();
- if (delay==undefined) delay = 25;
- setTimeout(function()
- {
- var start = +new Date();
- do {
- process.call(context, todo.shift());
- } while(todo.length > 0 && (+new Date() - start < 100));
- if(todo.length > 0) {
- setTimeout(arguments.callee, delay);
- } else if(callback) {
- callback(items);
- }
- }, delay);
- }
- // jQuery Extended
- (function($){
- // Fade in and out
- $.fn.fadeInAndOut = function(speed,easing,fn){
- var options = {
- speed:speed
- ,easing:easing
- ,fn:fn
- };
- $.extend(options, $.fn.fadeInAndOut.defaults);
- this.fadeIn(options.speed).delay(options.speed).fadeOut(options.speed,options.easing,options.fn);
- };
-
- // Plugin defaults
- $.fn.fadeInAndOut.defaults = {
- speed:1000
- ,easing:"swing"
- ,fn:null
- };
- })(jQuery);
- // returns only unique values
- function uniq(a) {
- var seen = {};
- return a.filter(function(item) {
- return seen.hasOwnProperty(item) ? false : (seen[item] = true);
- });
- }
- /**
- * 加载指定的文件内容
- */
- function loadFileContent(fileType, callback) {
- $("<input id='file-loadContent' type='file' style='display:none;' multiple='true'/>").on("change", function () {
- var fileSelector = this;
- if (fileSelector.files.length > 0 && fileSelector.files[0].name.length > 0) {
- var files = fileSelector.files;
- var count = files.length;
- var index = 0;
- var r = new FileReader();
- r.onload = function (e) {
- callback && callback.call(system, e.target.result);
- readFile();
- };
- r.onerror = function () {
- alert("文件加载失败");
- console.log("文件加载失败");
- readFile();
- };
- function readFile(file) {
- if (index == count) {
- $(fileSelector).remove();
- fileSelector.value = "";
- return;
- }
- var file = files[index];
- var lastIndex = file.name.lastIndexOf(".");
- var fix = file.name.substr(lastIndex + 1);
- index++;
- if (fileType) {
- if (fix != fileType) {
- alert("文件类型错误");
- return;
- }
- }
- r.readAsText(file);
- }
- readFile();
- }
- }).click();
- }
- /**
- * 将指定的内容保存为文件
- * @param fileName 文件名
- * @param fileData 文件内容
- */
- function saveFileAs(fileName, fileData) {
- try {
- var Blob = window.Blob || window.WebKitBlob;
- // Detect availability of the Blob constructor.
- var constructor_supported = false;
- if (Blob) {
- try {
- new Blob([], {
- "type": "text/plain"
- });
- constructor_supported = true;
- } catch (_) {}
- }
- var b = null;
- if (constructor_supported) {
- b = new Blob([fileData], {
- "type": "text/plain"
- });
- } else {
- // Deprecated BlobBuilder API
- var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder;
- var bb = new BlobBuilder();
- bb.append(fileData);
- b = bb.getBlob("text/plain");
- }
- saveAs(b, fileName);
- } catch (e) {
- console.log(e.toString());
- }
- }
|