feat: funjia工具库v1.0.0版本
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
/**
|
||||
* 日期格式化
|
||||
*/
|
||||
export declare const formatDateTime: (time: string | Date, template?: string) => string | Date;
|
||||
/**
|
||||
* 日期格式化
|
||||
*/
|
||||
export declare const fDT: (time: string | Date, template?: string) => string | Date;
|
||||
/**
|
||||
* 转换日期格式并带T
|
||||
* 2022/2/9 19:33:33 => 2022-02-09T19:33:33
|
||||
* @param date
|
||||
* @returns
|
||||
*/
|
||||
export declare const formDateTimeAddT: (date: string | Date) => string | Date;
|
||||
/**
|
||||
* 转换日期格式并带T
|
||||
* 2022/2/9 19-33-33 => 2022-02-09T19-33-33
|
||||
* @param date
|
||||
* @returns
|
||||
*/
|
||||
export declare const fDTAT: (date: string | Date) => string | Date;
|
||||
//# sourceMappingURL=date.d.ts.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../src/date.ts"],"names":[],"mappings":"AACA;;GAEG;AACH,eAAO,MAAM,cAAc,SACnB,MAAM,GAAG,IAAI,aACT,MAAM,kBAOjB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,GAAG,SAbR,MAAM,GAAG,IAAI,aACT,MAAM,kBAYe,CAAC;AAElC;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,SAAU,MAAM,GAAG,IAAI,kBAEnD,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,KAAK,SAVqB,MAAM,GAAG,IAAI,kBAUf,CAAC"}
|
||||
@@ -0,0 +1,40 @@
|
||||
"use strict";
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.fDTAT = exports.formDateTimeAddT = exports.fDT = exports.formatDateTime = void 0;
|
||||
const dayjs_1 = __importDefault(require("dayjs"));
|
||||
/**
|
||||
* 日期格式化
|
||||
*/
|
||||
const formatDateTime = (time, template = "YYYY-MM-DD HH:mm:ss") => {
|
||||
try {
|
||||
return (0, dayjs_1.default)(time).format(template);
|
||||
}
|
||||
catch (_a) {
|
||||
return time;
|
||||
}
|
||||
};
|
||||
exports.formatDateTime = formatDateTime;
|
||||
/**
|
||||
* 日期格式化
|
||||
*/
|
||||
exports.fDT = exports.formatDateTime;
|
||||
/**
|
||||
* 转换日期格式并带T
|
||||
* 2022/2/9 19:33:33 => 2022-02-09T19:33:33
|
||||
* @param date
|
||||
* @returns
|
||||
*/
|
||||
const formDateTimeAddT = (date) => {
|
||||
return (0, exports.fDT)(date, "YYYY-MM-DDTHH:mm:ss");
|
||||
};
|
||||
exports.formDateTimeAddT = formDateTimeAddT;
|
||||
/**
|
||||
* 转换日期格式并带T
|
||||
* 2022/2/9 19-33-33 => 2022-02-09T19-33-33
|
||||
* @param date
|
||||
* @returns
|
||||
*/
|
||||
exports.fDTAT = exports.formDateTimeAddT;
|
||||
Vendored
+5
@@ -0,0 +1,5 @@
|
||||
export * from "./date";
|
||||
export * from "./is";
|
||||
export * from "./mapLib";
|
||||
export * from "./parse";
|
||||
//# sourceMappingURL=index.d.ts.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,MAAM,CAAC;AACrB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC"}
|
||||
@@ -0,0 +1,16 @@
|
||||
"use strict";
|
||||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
||||
if (k2 === undefined) k2 = k;
|
||||
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
||||
}) : (function(o, m, k, k2) {
|
||||
if (k2 === undefined) k2 = k;
|
||||
o[k2] = m[k];
|
||||
}));
|
||||
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
||||
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
__exportStar(require("./date"), exports);
|
||||
__exportStar(require("./is"), exports);
|
||||
__exportStar(require("./mapLib"), exports);
|
||||
__exportStar(require("./parse"), exports);
|
||||
@@ -0,0 +1,34 @@
|
||||
/**
|
||||
* 判断对象是否为空
|
||||
*
|
||||
* @param obj
|
||||
* isEmpty(null)
|
||||
* // => true
|
||||
*
|
||||
* isEmpty(undefined)
|
||||
* // => true
|
||||
*
|
||||
* isEmpty("")
|
||||
* // => true
|
||||
*
|
||||
* isEmpty(NaN)
|
||||
* // => true
|
||||
*
|
||||
* isEmpty(0)
|
||||
* // => false
|
||||
*
|
||||
* isEmpty([1])
|
||||
* // => false
|
||||
*
|
||||
* isEmpty({name:"123"})
|
||||
* // => false
|
||||
*/
|
||||
export declare const isEmpty: (obj: any) => boolean;
|
||||
/**
|
||||
* 判断是否有值
|
||||
* 这个函数的结果就是对isEmpty取非
|
||||
*/
|
||||
export declare const isHaveRealValue: (value: any) => boolean;
|
||||
export declare const isValidIP: (ip: string) => boolean;
|
||||
export declare const isIp: (ip: string) => boolean;
|
||||
//# sourceMappingURL=is.d.ts.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"is.d.ts","sourceRoot":"","sources":["../src/is.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,OAAO,QAAS,GAAG,YAU/B,CAAA;AAGD;;;GAGG;AACH,eAAO,MAAM,eAAe,UAAW,GAAG,YAMzC,CAAC;AAGF,eAAO,MAAM,SAAS,OAAO,MAAM,YAGlC,CAAA;AAGD,eAAO,MAAM,IAAI,OANY,MAAM,YAMR,CAAC"}
|
||||
@@ -0,0 +1,68 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.isIp = exports.isValidIP = exports.isHaveRealValue = exports.isEmpty = void 0;
|
||||
/**
|
||||
* 判断对象是否为空
|
||||
*
|
||||
* @param obj
|
||||
* isEmpty(null)
|
||||
* // => true
|
||||
*
|
||||
* isEmpty(undefined)
|
||||
* // => true
|
||||
*
|
||||
* isEmpty("")
|
||||
* // => true
|
||||
*
|
||||
* isEmpty(NaN)
|
||||
* // => true
|
||||
*
|
||||
* isEmpty(0)
|
||||
* // => false
|
||||
*
|
||||
* isEmpty([1])
|
||||
* // => false
|
||||
*
|
||||
* isEmpty({name:"123"})
|
||||
* // => false
|
||||
*/
|
||||
const isEmpty = (obj) => {
|
||||
if (typeof (obj) !== "number" && (obj === null || obj === "" || obj === undefined))
|
||||
return true;
|
||||
else {
|
||||
if (typeof (obj) === "number" && isNaN(obj)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
};
|
||||
exports.isEmpty = isEmpty;
|
||||
/**
|
||||
* 判断是否有值
|
||||
* 这个函数的结果就是对isEmpty取非
|
||||
*/
|
||||
const isHaveRealValue = (value) => {
|
||||
let bool = false;
|
||||
if (value || value === 0 || typeof value === 'boolean') {
|
||||
bool = true;
|
||||
}
|
||||
return bool;
|
||||
};
|
||||
exports.isHaveRealValue = isHaveRealValue;
|
||||
/* IP正则验证 */
|
||||
const isValidIP = (ip) => {
|
||||
var reg = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/;
|
||||
return reg.test(ip);
|
||||
};
|
||||
exports.isValidIP = isValidIP;
|
||||
/* IP正则验证 */
|
||||
exports.isIp = exports.isValidIP;
|
||||
// export const isLocalhost = Boolean(
|
||||
// window.location.hostname === 'localhost' ||
|
||||
// // [::1] is the IPv6 localhost address.
|
||||
// window.location.hostname === '[::1]' ||
|
||||
// // 127.0.0.1/8 is considered localhost for IPv4.
|
||||
// window.location.hostname.match(
|
||||
// /^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/
|
||||
// )
|
||||
// );
|
||||
Vendored
+65
@@ -0,0 +1,65 @@
|
||||
/**
|
||||
* 获取中心坐标
|
||||
*/
|
||||
export default class CenterGps {
|
||||
private rad2degr;
|
||||
private degr2rad;
|
||||
/**
|
||||
* 计算多个经纬度的中心点 | 在一组坐标中获取中心坐标
|
||||
* @param latLngInDeg array of arrays with latitude and longtitude
|
||||
* pairs in degrees. e.g. [[latitude1, longtitude1], [latitude2
|
||||
* [longtitude2] ...]
|
||||
*
|
||||
* @return array with the center latitude longtitude pairs in
|
||||
* degrees.
|
||||
*/
|
||||
GetCenterFromDegrees(latLngInDegr: any[], latIdx?: number, lngIdx?: number): number[];
|
||||
}
|
||||
/**
|
||||
* 验证经纬度格式
|
||||
*/
|
||||
export declare const VerifyCoordinate: (lat: string | number, lng: string | number) => boolean;
|
||||
/**
|
||||
* 判断给定坐标是否在多边形中
|
||||
*/
|
||||
export declare function isInPolygon(checkPoint: any, polygonPoints: any): boolean;
|
||||
/**
|
||||
* 判断一个点是否在圆的内部
|
||||
* @param point 测试点坐标
|
||||
* @param circle 圆心坐标
|
||||
* @param r 圆半径
|
||||
* 返回true为真,false为假
|
||||
* */
|
||||
export declare function pointInsideCircle(point: any, circle: any, r: any): boolean;
|
||||
/**
|
||||
* 火星坐标,GPS,转换
|
||||
*/
|
||||
export declare const Convert: {
|
||||
PI: number;
|
||||
x_pi: number;
|
||||
delta: (lat: number, lng: number) => {
|
||||
lat: number;
|
||||
lon: number;
|
||||
};
|
||||
gcj_encrypt: (wgsLat: number, wgsLon: number) => {
|
||||
lat: number;
|
||||
lon: number;
|
||||
};
|
||||
/**
|
||||
*百度坐标转高德(传入经度、纬度)
|
||||
* @param bd_lng
|
||||
* @param bd_lat
|
||||
*/
|
||||
bd_decrypt: (bd_lng: number, bd_lat: number) => {
|
||||
lng: number;
|
||||
lat: number;
|
||||
};
|
||||
bd_encrypt: (gg_lng: number, gg_lat: number) => {
|
||||
bd_lat: number;
|
||||
bd_lng: number;
|
||||
};
|
||||
outOfChina: (lat: number, lng: number) => boolean;
|
||||
transformLat: (x: number, y: number) => number;
|
||||
transformLon: (x: number, y: number) => number;
|
||||
};
|
||||
//# sourceMappingURL=mapLib.d.ts.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"mapLib.d.ts","sourceRoot":"","sources":["../src/mapLib.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,SAAS;IAC1B,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,QAAQ;IAEhB;;;;;;;;OAQG;IACH,oBAAoB,CAAC,YAAY,EAAE,GAAG,EAAE,EAAE,MAAM,SAAI,EAAE,MAAM,SAAI;CA2BnE;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,QAAS,MAAM,GAAG,MAAM,OAAO,MAAM,GAAG,MAAM,YAa1E,CAAA;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,WAkC9D;AAED;;;;;;QAMQ;AACR,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,WAKhE;AAED;;GAEG;AACH,eAAO,MAAM,OAAO;;;iBAGM,MAAM,OAAO,MAAM;;;;0BAqBV,MAAM,UAAU,MAAM;;;;IAOrD;;;;OAIG;yBAC2B,MAAM,UAAU,MAAM;;;;yBAYtB,MAAM,UAAU,MAAM;;;;sBAYzB,MAAM,OAAO,MAAM;sBAOnB,MAAM,KAAK,MAAM;sBAOjB,MAAM,KAAK,MAAM;CAO/C,CAAC"}
|
||||
@@ -0,0 +1,194 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.Convert = exports.pointInsideCircle = exports.isInPolygon = exports.VerifyCoordinate = void 0;
|
||||
/**
|
||||
* 获取中心坐标
|
||||
*/
|
||||
class CenterGps {
|
||||
rad2degr(rad) { return rad * 180 / Math.PI; }
|
||||
degr2rad(degr) { return degr * Math.PI / 180; }
|
||||
/**
|
||||
* 计算多个经纬度的中心点 | 在一组坐标中获取中心坐标
|
||||
* @param latLngInDeg array of arrays with latitude and longtitude
|
||||
* pairs in degrees. e.g. [[latitude1, longtitude1], [latitude2
|
||||
* [longtitude2] ...]
|
||||
*
|
||||
* @return array with the center latitude longtitude pairs in
|
||||
* degrees.
|
||||
*/
|
||||
GetCenterFromDegrees(latLngInDegr, latIdx = 0, lngIdx = 1) {
|
||||
var LATIDX = latIdx;
|
||||
var LNGIDX = lngIdx;
|
||||
var sumX = 0;
|
||||
var sumY = 0;
|
||||
var sumZ = 0;
|
||||
for (var i = 0; i < latLngInDegr.length; i++) {
|
||||
var lat = this.degr2rad(latLngInDegr[i][LATIDX]);
|
||||
var lng = this.degr2rad(latLngInDegr[i][LNGIDX]);
|
||||
// sum of cartesian coordinates
|
||||
sumX += Math.cos(lat) * Math.cos(lng);
|
||||
sumY += Math.cos(lat) * Math.sin(lng);
|
||||
sumZ += Math.sin(lat);
|
||||
}
|
||||
var avgX = sumX / latLngInDegr.length;
|
||||
var avgY = sumY / latLngInDegr.length;
|
||||
var avgZ = sumZ / latLngInDegr.length;
|
||||
// convert average x, y, z coordinate to latitude and longtitude
|
||||
var lng = Math.atan2(avgY, avgX);
|
||||
var hyp = Math.sqrt(avgX * avgX + avgY * avgY);
|
||||
var lat = Math.atan2(avgZ, hyp);
|
||||
return ([this.rad2degr(lat), this.rad2degr(lng)]);
|
||||
}
|
||||
}
|
||||
exports.default = CenterGps;
|
||||
/**
|
||||
* 验证经纬度格式
|
||||
*/
|
||||
const VerifyCoordinate = (lat, lng) => {
|
||||
var latreg = /^(\-|\+)?([0-8]?\d{1}\.\d{0,}|90\.0{0,}|[0-8]?\d{1}|90)$/;
|
||||
if (!latreg.test(lat.toString())) {
|
||||
console.log("纬度整数部分为0-90,小数部分为0到6位!");
|
||||
return false;
|
||||
}
|
||||
var longrg = /^(\-|\+)?(((\d|[1-9]\d|1[0-7]\d|0{1,3})\.\d{0,})|(\d|[1-9]\d|1[0-7]\d|0{1,3})|180\.0{0,}|180)$/;
|
||||
if (!longrg.test(lng.toString())) {
|
||||
console.log("经度整数部分为0-180,小数部分为0到6位!");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
exports.VerifyCoordinate = VerifyCoordinate;
|
||||
/**
|
||||
* 判断给定坐标是否在多边形中
|
||||
*/
|
||||
function isInPolygon(checkPoint, polygonPoints) {
|
||||
var counter = 0;
|
||||
var i;
|
||||
var xinters;
|
||||
var p1, p2;
|
||||
var pointCount = polygonPoints.length;
|
||||
p1 = polygonPoints[0];
|
||||
for (i = 1; i <= pointCount; i++) {
|
||||
p2 = polygonPoints[i % pointCount];
|
||||
if (checkPoint[0] > Math.min(p1[0], p2[0]) &&
|
||||
checkPoint[0] <= Math.max(p1[0], p2[0])) {
|
||||
if (checkPoint[1] <= Math.max(p1[1], p2[1])) {
|
||||
if (p1[0] != p2[0]) {
|
||||
xinters =
|
||||
(checkPoint[0] - p1[0]) *
|
||||
(p2[1] - p1[1]) /
|
||||
(p2[0] - p1[0]) +
|
||||
p1[1];
|
||||
if (p1[1] == p2[1] || checkPoint[1] <= xinters) {
|
||||
counter++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
p1 = p2;
|
||||
}
|
||||
if (counter % 2 == 0) {
|
||||
return false;
|
||||
}
|
||||
else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
exports.isInPolygon = isInPolygon;
|
||||
/**
|
||||
* 判断一个点是否在圆的内部
|
||||
* @param point 测试点坐标
|
||||
* @param circle 圆心坐标
|
||||
* @param r 圆半径
|
||||
* 返回true为真,false为假
|
||||
* */
|
||||
function pointInsideCircle(point, circle, r) {
|
||||
if (r === 0)
|
||||
return false;
|
||||
var dx = circle[0] - point[0];
|
||||
var dy = circle[1] - point[1];
|
||||
return dx * dx + dy * dy <= r * r;
|
||||
}
|
||||
exports.pointInsideCircle = pointInsideCircle;
|
||||
/**
|
||||
* 火星坐标,GPS,转换
|
||||
*/
|
||||
exports.Convert = {
|
||||
PI: 3.14159265358979324,
|
||||
x_pi: 3.14159265358979324 * 3000.0 / 180.0,
|
||||
delta: function (lat, lng) {
|
||||
let lon = lng;
|
||||
// Krasovsky 1940
|
||||
//
|
||||
// a = 6378245.0, 1/f = 298.3
|
||||
// b = a * (1 - f)
|
||||
// ee = (a^2 - b^2) / a^2;
|
||||
let a = 6378245.0; // a: 卫星椭球坐标投影到平面地图坐标系的投影因子。
|
||||
let ee = 0.00669342162296594323; // ee: 椭球的偏心率。
|
||||
let dLat = this.transformLat(lon - 105.0, lat - 35.0);
|
||||
let dLon = this.transformLon(lon - 105.0, lat - 35.0);
|
||||
let radLat = lat / 180.0 * this.PI;
|
||||
let magic = Math.sin(radLat);
|
||||
magic = 1 - ee * magic * magic;
|
||||
let sqrtMagic = Math.sqrt(magic);
|
||||
dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * this.PI);
|
||||
dLon = (dLon * 180.0) / (a / sqrtMagic * Math.cos(radLat) * this.PI);
|
||||
return { 'lat': dLat, 'lon': dLon };
|
||||
},
|
||||
//GPS---高德
|
||||
gcj_encrypt: function (wgsLat, wgsLon) {
|
||||
if (this.outOfChina(wgsLat, wgsLon))
|
||||
return { 'lat': wgsLat, 'lon': wgsLon };
|
||||
let d = this.delta(wgsLat, wgsLon);
|
||||
return { 'lat': wgsLat + d.lat, 'lon': wgsLon + d.lon };
|
||||
},
|
||||
/**
|
||||
*百度坐标转高德(传入经度、纬度)
|
||||
* @param bd_lng
|
||||
* @param bd_lat
|
||||
*/
|
||||
bd_decrypt: function (bd_lng, bd_lat) {
|
||||
var X_PI = Math.PI * 3000.0 / 180.0;
|
||||
var x = bd_lng - 0.0065;
|
||||
var y = bd_lat - 0.006;
|
||||
var z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * X_PI);
|
||||
var theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * X_PI);
|
||||
var gg_lng = z * Math.cos(theta);
|
||||
var gg_lat = z * Math.sin(theta);
|
||||
return { lng: gg_lng, lat: gg_lat };
|
||||
},
|
||||
//高德坐标转百度(传入经度、纬度)
|
||||
bd_encrypt: function (gg_lng, gg_lat) {
|
||||
var X_PI = Math.PI * 3000.0 / 180.0;
|
||||
var x = gg_lng, y = gg_lat;
|
||||
var z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * X_PI);
|
||||
var theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * X_PI);
|
||||
var bd_lng = z * Math.cos(theta) + 0.0065;
|
||||
var bd_lat = z * Math.sin(theta) + 0.006;
|
||||
return {
|
||||
bd_lat: bd_lat,
|
||||
bd_lng: bd_lng
|
||||
};
|
||||
},
|
||||
outOfChina: function (lat, lng) {
|
||||
if (lng < 72.004 || lng > 137.8347)
|
||||
return true;
|
||||
if (lat < 0.8293 || lat > 55.8271)
|
||||
return true;
|
||||
return false;
|
||||
},
|
||||
transformLat: function (x, y) {
|
||||
let ret = -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y + 0.2 * Math.sqrt(Math.abs(x));
|
||||
ret += (20.0 * Math.sin(6.0 * x * this.PI) + 20.0 * Math.sin(2.0 * x * this.PI)) * 2.0 / 3.0;
|
||||
ret += (20.0 * Math.sin(y * this.PI) + 40.0 * Math.sin(y / 3.0 * this.PI)) * 2.0 / 3.0;
|
||||
ret += (160.0 * Math.sin(y / 12.0 * this.PI) + 320 * Math.sin(y * this.PI / 30.0)) * 2.0 / 3.0;
|
||||
return ret;
|
||||
},
|
||||
transformLon: function (x, y) {
|
||||
let ret = 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 * Math.sqrt(Math.abs(x));
|
||||
ret += (20.0 * Math.sin(6.0 * x * this.PI) + 20.0 * Math.sin(2.0 * x * this.PI)) * 2.0 / 3.0;
|
||||
ret += (20.0 * Math.sin(x * this.PI) + 40.0 * Math.sin(x / 3.0 * this.PI)) * 2.0 / 3.0;
|
||||
ret += (150.0 * Math.sin(x / 12.0 * this.PI) + 300.0 * Math.sin(x / 30.0 * this.PI)) * 2.0 / 3.0;
|
||||
return ret;
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"name": "funjialib",
|
||||
"version": "1.0.0",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"types": "./index.d.ts",
|
||||
"description": ""
|
||||
}
|
||||
Vendored
+28
@@ -0,0 +1,28 @@
|
||||
/**
|
||||
* 根据指定类型生成新类型的数据
|
||||
* @param originalInfo 原始数据,需要转换类型的数据
|
||||
* @param newInfo 转换类型之后的数据
|
||||
*/
|
||||
export declare function parseType<T>(originalInfo: any, newInfo: any, mapper?: [string[], string[]] | null): T;
|
||||
/**
|
||||
* 尝试获取子属性的值并且出错时可返回指定类型的默认值
|
||||
* 链式获取数据
|
||||
* {children:{children:{name,age}}} 获取name的值
|
||||
* tryValue({children:{chidren:{name,age}}},["children","children","name"],"--")
|
||||
* @param obj 原始对象
|
||||
* @param names 按层级排列的子属性
|
||||
* @param defV 指定返回的默认值
|
||||
*/
|
||||
export declare const tryValue: (obj: Array<any> | Object, names: any[], defV?: any) => any;
|
||||
export declare const tV: (obj: Array<any> | Object, names: any[], defV?: any) => any;
|
||||
/**
|
||||
* 格式化表单
|
||||
* 方法实现参考地址:https://www.cnblogs.com/yaowen/p/5574923.html
|
||||
*/
|
||||
export declare const formatForm: (data: any, defValue?: any) => any;
|
||||
export declare const fF: (data: any, defValue?: any) => any;
|
||||
/**
|
||||
* 转换为数字
|
||||
*/
|
||||
export declare const parseNumber: (value: any) => number;
|
||||
//# sourceMappingURL=parse.d.ts.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"AACA;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAE,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,IAAW,GAAG,CAAC,CA6B3G;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,QAAQ,QAAS,MAAM,GAAG,CAAC,GAAG,MAAM,SAAS,GAAG,EAAE,SAAQ,GAAG,QAsBzE,CAAA;AAED,eAAO,MAAM,EAAE,QAxBe,MAAM,GAAG,CAAC,GAAG,MAAM,SAAS,GAAG,EAAE,SAAQ,GAAG,QAwBhD,CAAC;AAE3B;;;GAGG;AACH,eAAO,MAAM,UAAU,SAAU,GAAG,aAAY,GAAG,QAoBlD,CAAA;AAED,eAAO,MAAM,EAAE,SAtBkB,GAAG,aAAY,GAAG,QAsBvB,CAAC;AAE7B;;GAEG;AACF,eAAO,MAAM,WAAW,UAAW,GAAG,WAMtC,CAAA"}
|
||||
@@ -0,0 +1,111 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.parseNumber = exports.fF = exports.formatForm = exports.tV = exports.tryValue = exports.parseType = void 0;
|
||||
const is_1 = require("./is");
|
||||
/**
|
||||
* 根据指定类型生成新类型的数据
|
||||
* @param originalInfo 原始数据,需要转换类型的数据
|
||||
* @param newInfo 转换类型之后的数据
|
||||
*/
|
||||
function parseType(originalInfo, newInfo, mapper = null) {
|
||||
var _a;
|
||||
if (originalInfo) {
|
||||
if ((0, is_1.isEmpty)(mapper)) {
|
||||
for (const name in newInfo) {
|
||||
if (originalInfo.hasOwnProperty(name)) {
|
||||
newInfo[name] = originalInfo[name];
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
let fieldIdx = -1;
|
||||
let originalFieldName = "";
|
||||
let name;
|
||||
for (name in newInfo) {
|
||||
fieldIdx = mapper === null || mapper === void 0 ? void 0 : mapper[0].indexOf(name);
|
||||
originalFieldName = ((_a = mapper === null || mapper === void 0 ? void 0 : mapper[1]) === null || _a === void 0 ? void 0 : _a[(0, is_1.isEmpty)(fieldIdx) ? -1 : (fieldIdx || 0)]) || "";
|
||||
console.log(name, fieldIdx, originalFieldName, "字段:", originalFieldName);
|
||||
if (originalFieldName) {
|
||||
if (originalInfo.hasOwnProperty(originalFieldName)) {
|
||||
newInfo[name] = originalInfo[originalFieldName];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
return newInfo;
|
||||
}
|
||||
return newInfo;
|
||||
}
|
||||
exports.parseType = parseType;
|
||||
/**
|
||||
* 尝试获取子属性的值并且出错时可返回指定类型的默认值
|
||||
* 链式获取数据
|
||||
* {children:{children:{name,age}}} 获取name的值
|
||||
* tryValue({children:{chidren:{name,age}}},["children","children","name"],"--")
|
||||
* @param obj 原始对象
|
||||
* @param names 按层级排列的子属性
|
||||
* @param defV 指定返回的默认值
|
||||
*/
|
||||
const tryValue = (obj, names, defV = null) => {
|
||||
let _obj = obj;
|
||||
const getDeepValue = (item, name) => {
|
||||
return item[name];
|
||||
};
|
||||
try {
|
||||
names.forEach(item => {
|
||||
_obj = getDeepValue(_obj, item);
|
||||
});
|
||||
if ((0, is_1.isEmpty)(_obj)) {
|
||||
return defV;
|
||||
}
|
||||
if (isNaN(_obj))
|
||||
return defV;
|
||||
else
|
||||
return _obj;
|
||||
}
|
||||
catch (error) {
|
||||
return defV;
|
||||
}
|
||||
};
|
||||
exports.tryValue = tryValue;
|
||||
exports.tV = exports.tryValue;
|
||||
/**
|
||||
* 格式化表单
|
||||
* 方法实现参考地址:https://www.cnblogs.com/yaowen/p/5574923.html
|
||||
*/
|
||||
const formatForm = (data, defValue = undefined) => {
|
||||
/**
|
||||
* 格式化表单一
|
||||
* 清楚字符串前后空格
|
||||
*/
|
||||
// 目前只对集合处理
|
||||
if (data) {
|
||||
const isObject = data.toString() == "[object Object]" ? true : false;
|
||||
if (isObject) {
|
||||
const objs = Object.keys(data), len = objs.length;
|
||||
for (let i = 0; i < len; i++) {
|
||||
if (typeof (data[objs[i]]) == "string") {
|
||||
data[objs[i]] = data[objs[i]].trim();
|
||||
}
|
||||
const v = data[objs[i]];
|
||||
data[objs[i]] = (0, is_1.isEmpty)(v) ? defValue : v;
|
||||
}
|
||||
}
|
||||
}
|
||||
return data;
|
||||
};
|
||||
exports.formatForm = formatForm;
|
||||
exports.fF = exports.formatForm;
|
||||
/**
|
||||
* 转换为数字
|
||||
*/
|
||||
const parseNumber = (value) => {
|
||||
const num = parseInt(value === null || value === void 0 ? void 0 : value.toString());
|
||||
if (isNaN(num))
|
||||
return 1;
|
||||
else
|
||||
return num;
|
||||
};
|
||||
exports.parseNumber = parseNumber;
|
||||
Reference in New Issue
Block a user