cesium-examples/map/libs/auxiliary.js

500 lines
15 KiB
JavaScript
Raw Normal View History

2019-07-24 17:56:15 +08:00
/**
* 辅助对象
*/
var auxiliary = function(){}
auxiliary.prototype = {
nullBool : function(param){ // 对象为空判断 为空返回true反之false
if(null === param || undefined === param )return true;
return false;
} , strBool : function(param){ // string判断 为空返回true反之false
if( this.nullBool(param) || "" === param || param.length === 0 )return true;
return false;
} , arrBool : function(param){ // arraty判断 length不为零 为空返回true反之false
if(null === param || undefined === param || param.length === 0)return true;
return false;
} , mapBool : function(param){ // 判断map是否为空 为空返回true反之false
for (var t in param)
return !1;
return !0
} , jsonBool : function(param) { // 判断json是否可用true为不可用false反之
if( this.nullBool(param)
|| this.getMapSize(param) === 0 )return true;
return false;
} , initError : function(param){ // 初始化异常: 为空返回true反之false
if(null === param || undefined === param){
alert("初始化页面异常,请刷新页面重新尝试!");
return true;
}
return false;
} , isArray : function(obj){ // 判断是否是array
return (typeof obj=='object')&&obj.constructor==Array;
} , isString : function(str){ // 判断是否是字符串
return (typeof str=='string')&&str.constructor==String;
} , isNumber : function(obj){ // 判断是否是数值
return (typeof obj=='number')&&obj.constructor==Number;
} , isDate : function(obj){ // 是否是时间对象
return (typeof obj=='object')&&obj.constructor==Date;
} , isFunction : function(obj){ // 判断是否是函数
return (typeof obj=='function')&&obj.constructor==Function;
} , isObject : function(obj){ // 判断是否是对象
return (typeof obj=='object')&&obj.constructor==Object;
} , getMapSize : function(map){ // 获取map的个数
var index = 0 ;
if(this.nullBool(map))return index;
for(var s in map){
++index;
}
return index;
} , isIEBrowser : function(){ // ie浏览器判断,是返回true
return !!window.ActiveXObject || "ActiveXObject" in window ? true : false;
} , mapMerge : function( coverMap , subjectMap ) { // 将两个map合并成一个map
// coverMap 覆盖map即两个map中有相同子元素以覆盖此map中元素为准
var map = JSON.parse(JSON.stringify(coverMap));
var map2 = JSON.parse(JSON.stringify(subjectMap));
for( var s in map2 ){
map[s] = map2[s];
}
return map;
} , deepCopy : function(obj){ // 深拷贝
return JSON.parse(JSON.stringify(obj));
} , numForEach : function(num , func){
for( var i = 0 ; i < num ; i++ ){ // 数循环
func(i)
}
} , arrForEach : function(arr , func) {
// 经测试双重循环100次10000次循环比for循环 差 0.5秒
try{
for( var i = 0 ; i < arr.length ; i++ ){ // arr对象循环
var bool = func(arr[i] , i);
if(true === bool){
return;
}
}
}
catch(e){
console.log(e);
}
} , isChildren : function (contrastObj , boolObj) { // 判断是否是指定对象子类或自身 是返回true
var result = false;
if(!this.nullBool(contrastObj) && !this.nullBool(boolObj)){
if("body" === boolObj[0].nodeName.toLowerCase()){
result = false;
}else{
var boolResult = $(contrastObj).is(boolObj);
if(boolResult){
result = true;
}else{
result = this.isChildren(contrastObj , $(boolObj).parent());
}
}
}
return result;
} , getCoords : function(el){ // 获取元素在页面中的坐标
var box = el.getBoundingClientRect(),
doc = el.ownerDocument,
body = doc.body,
html = doc.documentElement,
clientTop = html.clientTop || body.clientTop || 0,
clientLeft = html.clientLeft || body.clientLeft || 0,
top = box.top + (self.pageYOffset || html.scrollTop || body.scrollTop ) - clientTop,
left = box.left + (self.pageXOffset || html.scrollLeft || body.scrollLeft) - clientLeft
return { 'top': top, 'left': left };
} , checkEmail : function(str){ // 邮箱验证
var re = /^[A-Za-z\d]+([-_.][A-Za-z\d]+)*@([A-Za-z\d]+[-.])+[A-Za-z\d]{2,4}$/;
if (re.test(str)) {
return true;
} else {
return false;
}
} , checkMobile : function(str){ // 手机验证 , 11位数字以1开头。
var re = /^1\d{10}$/;
if (re.test(str)) {
return true;
} else {
return false;
}
} , checkUser : function(str){ // 验证帐号是否合法,字母、数字、下划线组成字母开头4-16位。
var re = /^[a-zA-z]\w{4,15}$/;
if (re.test(str)) {
return true;
} else {
return false;
}
} , checkFullAngle : function(str){ // 判断是否有全角 , 有返回true
var str2=str.match(/[\uff00-\uffff]/g);
if(null === str2){
return false;
}else{
return true;
}
} , chackStr : function(str){ // 判断是否有特殊符号 和 数字 有返回true
var regEn = /[-`~!@#$%^&*()_=+<>?:"{},\\\\.\/;'[\]]/im,
regCn = /[·!#¥(——):;“”‘、,|《。》?、【】[\]]/im;
if(regEn.test(str) || regCn.test(str)) { // 包含返回true
return true;
}
return false;
} , getSelectAttr : function(select , attrName){
return $($(select).children("option:selected")).attr(attrName);
} , getEventSource : function(event){ // 获取事件源对象
return (bool.isIEBrowser() ? event.srcElement : event.target);
} , addPropertychange : function(Obj , func){ // 给input添加文本改变事件
if(this.arrBool($(Obj))){
console.log("文本改变监控创建失败!");
return;
}
$(Obj).unbind().on('input propertychange',func);
} , addBlur : function(Obj , func){ // 给input对象添加鼠标光标离开事件
$(Obj).blur(func);
} , timingTask : function(func , hours , minutes , seconds){ // 每天指定时间执行
var time = new Date(); // 当前时间
var time2 = new Date(); // 下一天时间
time2.setDate(time.getDate() + 1);
time2.setHours(hours);
time2.setMinutes(minutes);
time2.setSeconds(seconds);
var doIT = function(){
func();
setTimeout(doIT, 24 * 60 * 60 * 1000);
}
setTimeout(doIT, time2 - time);
} , strRegHandle : function(str){ // 字符串正则处理
if(arguments.length == 0) return this;
var obj = arguments[0];
var s = this;
for(var key in obj) {
s = s.replace(new RegExp("\\{\\{" + key + "\\}\\}", "g"), obj[key]);
}
return s;
}
}
// ------------------------------------ 字符串正则处理 -----------------------------------------------------
String.prototype.format = function() {
if(arguments.length == 0) return this;
var obj = arguments[0];
var s = this;
for(var key in obj) {
s = s.replace(new RegExp("\\{\\{" + key + "\\}\\}", "g"), obj[key]);
}
return s;
}
/*// 测试代码
var data = {
name:"张三",
age:23,
sex:"男"
}
var text = "我叫{{name}},我今年{{age}}岁,我的性别是{{sex}}!".format(data);
// console.log(text); // 我叫张三,我今年23岁,我的性别是男!
*/
// ---------------------------------------------- 颜色转变类型
// -------------------------------------------------------
var reg = "/^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/"; // 十六进制颜色值的正则表达式
// 颜色转换RGB颜色转换为16进制 (处理边界填充)
String.prototype.colorHex = function(){
var that = this;
if(/^(rgb|RGB)/.test(that)){
var aColor = that.replace(/(?:\(|\)|rgb|RGB)*/g,"").split(",");
var strHex = "#";
for(var i=0; i<aColor.length; i++){
var hex = Number(aColor[i]).toString(16);
if(hex === "0"){
hex += hex;
}
strHex += hex;
}
if(strHex.length !== 7){
strHex = that;
}
return strHex;
}else if(reg.test(that)){
var aNum = that.replace(/#/,"").split("");
if(aNum.length === 6){
return that;
}else if(aNum.length === 3){
var numHex = "#";
for(var i=0; i<aNum.length; i+=1){
numHex += (aNum[i]+aNum[i]);
}
return numHex;
}
}else{
return that;
}
};
// 颜色转换16进制颜色转为RGB格式 (处理边界填充)
String.prototype.colorRgb = function(data){
var sColor = this.toLowerCase();
if(sColor){
if(sColor.length === 4){
var sColorNew = "#";
for(var i=1; i<4; i+=1){
sColorNew += sColor.slice(i,i+1).concat(sColor.slice(i,i+1));
}
sColor = sColorNew;
}
if( sColor.indexOf("rgba") != -1 ){
var indexs = sColor.lastIndexOf(",");
var strParam = sColor.substring(0,indexs+1);
strParam += data+")";
return strParam;
}
var sColorChange = [];
for(var i=1; i<7; i+=2){
sColorChange.push(parseInt("0x"+sColor.slice(i,i+2)));
}
return "RGBA(" + sColorChange.join(",") + ","+data+")";
}else{
return sColor;
}
};
// ------------------------------------------------------- 根据正则内容格式化时间
// ---------------------------------------------------------------
// 对Date的扩展将 Date 转化为指定格式的String
// 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符,
// 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
Date.prototype.Format = function (fmt) { // author: meizz
var o = {
"M+": this.getMonth() + 1, // 月份
"d+": this.getDate(), // 日
"H+": this.getHours(), // 小时
"m+": this.getMinutes(), // 分
"s+": this.getSeconds(), // 秒
"q+": Math.floor((this.getMonth() + 3) / 3), // 季度
"S": this.getMilliseconds() // 毫秒
};
if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
for (var k in o)
if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
return fmt;
}
// 调用:
// var time1 = new Date().Format("yyyy-MM-dd");
// var time2 = new Date().Format("yyyy-MM-dd HH:mm:ss");
// var nowTime=new Date();
// nowTime.setMonth(nowTime.getMonth()-1);
// alert(nowTime.Format("yyyy-MM-dd HH:mm:ss"));//上月当前时间
// ----------------------------------------------------- 创建实体
// -----------------------------------------------------------------
/**
* 维度数据返回封装
*
* @param dimensionChoice
* 维度子项选中的uuid串uuid1uuid2...
* @param dimensionName
* 维度子项选中的名称串维度1|邮政中国维度2|邮政中国...
* @param status
* 获取当前维度项的状态判断出错
* @param code
* 预留属性用于指定多个维度其中一个必须有选中项判断
* @param errorTitle
* 错误提示语
*/
var dimensionResult = function() {
this.dimensionChoice = null;
this.dimensionName = null;
this.status = null;
this.code = null;
this.errorTitle = null;
}
/**
* 错误时候的封装封装
*/
dimensionResult.prototype.error = function(str){
this.status = false;
this.errorTitle = str;
return this;
}
/**
* 正确时候的封装封装
*/
dimensionResult.prototype.success = function(str , str2){
this.status = true;
this.dimensionChoice = str;
this.dimensionName = str2;
return this;
}
/**
* 修改 封装属性 dimensionChoice
*
* @param str
* 维度子项选中的uuid串
*/
dimensionResult.prototype.setDimensionChoice = function(str) {
this.dimensionChoice = str;
}
/**
* 修改 封装属性 status
*
* @param booleans
* 当前维度项的状态判断出错
*/
dimensionResult.prototype.setStatus = function( booleans ) {
this.status = booleans;
}
/**
* 修改 封装属性 code
*
* @param str
* 用于指定多个维度其中一个必须有选中项判断
*/
dimensionResult.prototype.setCode = function( str ) {
this.code = str;
}
/**
* 修改 封装属性 errorTitle
*
* @param str
* 错误提示表明当前为什么错了
*/
dimensionResult.prototype.setErrorTitle = function( str ) {
this.errorTitle = str;
}
// ----------------------------------------------------- 动态事件封装
// -----------------------------------------------------------------
var onPostAjax_1 = function( ajaxUrl , ajaxData , callback ){
if( bool.mapBool(ajaxData) )ajaxData = {};
$.ajax({ url: ajaxUrl, data: ajaxData, type: 'post', dataType: 'json',
async: false,
success:function(data){
if( data.status === 0 ){
if( typeof callback === "function" ){
callback( data );
}
}else{
alert( data.info );
}
},
error:function(e){
alert("查询异常,请刷新页面重新尝试!");
}
});
}
/**
* ajax 封装
* @param AjaxUrl 接口url
* @param AjaxData 传参
* @param AjaxFunc 回调事件
* @param AjaxExecutionMode ajax执行方式同步 异步
*/
var acc_ajaxEncapsulation = function( AjaxUrl , AjaxData , AjaxExecutionMode , AjaxFunc ) {
var bool = new auxiliary();
if(!bool.strBool(AjaxUrl)){
if(bool.nullBool(AjaxData)) AjaxData = {};
if(bool.nullBool(AjaxFunc)) AjaxFunc = null;
$.ajax({
url : AjaxUrl, type:"POST", data: AjaxData, dataType:"json",async: AjaxExecutionMode ,success: AjaxFunc
})
}
}
/**
* ajax 封装: 插入数据(同步)
* @param AjaxUrl 接口url
* @param AjaxData 传参
*/
var insertData = function(AjaxUrl , AjaxData){
var result = null;
acc_ajaxEncapsulation(AjaxUrl , AjaxData , false , function(data){
result = ("0" === data.status || "08" === data.status
|| 0 === data.status) ? true : false;
})
return result;
}
/**
* ajax 封装: 获取接口数据(同步)
* @param AjaxUrl 接口url
* @param AjaxData 传参
* @param func 回调函数
*/
var getInterfaceData = function( AjaxUrl , AjaxData , func ) {
var bool = new auxiliary() , resultData = null;
if(!bool.strBool(AjaxUrl)){
if(bool.nullBool(AjaxData)) AjaxData = {};
$.ajax({
url : AjaxUrl, type:"POST", data: AjaxData, dataType:"json",async: false ,
success: function(data) {
if("0" === data.status || "08" === data.status
|| 0 === data.status){
resultData = data.result;
if(bool.isFunction(func)){
func(resultData);
}
}
loadingClear();
},
error : function(){
loadingClear();
}
})
}
return resultData;
}
/**
让线程睡眠指定时间单位毫秒
*/
function acc_sleep(number){
var nowDate = new Date().getTime();
var nextDate = nowDate + number;
var runnable = true;
while(runnable){
if(nowDate > nextDate
|| nowDate === nextDate)runnable = false;
nowDate = new Date().getTime();
}
}
// 页面loading
/**
* 增加页面loading 包含8种loading只用更换spinner例如spinner1
* @param time 2018_3_17 14:04
* @param author Sixgod
*/
var loadingShow = function() {
$("body").append("<div class='fakeloader'></div>");
$(".fakeloader").fakeLoader({
timeToHide : 500000000,
bgColor : "rgba(16, 10, 9, 0.22)",
spinner : "spinner3"
});
}
/**
* 删除页面loading
* @param time 2018_3_17 14:04
* @param author Sixgod
*/
var loadingClear = function(){
$('.fakeloader').remove();
}
2019-11-21 15:46:14 +08:00
/**
* 全局变量
*/
var fn_tool = new auxiliary();