1
0
mirror of https://github.com/xuthus83/pigallery2.git synced 2024-11-03 21:04:03 +08:00
pigallery2/common/Utils.ts

108 lines
2.9 KiB
TypeScript
Raw Normal View History

2016-03-13 05:19:24 +08:00
export class Utils {
2016-03-13 05:19:24 +08:00
static clone<T>(object:T):T {
return JSON.parse(JSON.stringify(object));
}
static equalsFilter(object:any, filter:any):boolean {
let keys = Object.keys(filter);
for (let i = 0; i < keys.length; i++) {
let key = keys[i];
if (object[key] !== filter[key]) {
return false;
}
}
return true;
}
2016-03-13 05:19:24 +08:00
2016-05-09 23:04:56 +08:00
static concatUrls(...args:Array<string>) {
2016-03-26 23:25:48 +08:00
let url = "";
2016-05-09 23:04:56 +08:00
for (let i = 0; i < args.length; i++) {
if (args[i] === "" || typeof args[i] === "undefined") continue;
let part = args[i].replace("\\", "/");
if (part === "/" || part === "./") continue;
2016-03-26 23:25:48 +08:00
url += part + "/";
}
2016-06-17 06:05:31 +08:00
url = url.replace("//", "/");
2016-03-26 23:25:48 +08:00
return url.substring(0, url.length - 1);
}
2016-05-09 23:04:56 +08:00
public static updateKeys(targetObject, sourceObject) {
2016-05-12 17:00:46 +08:00
Object.keys(sourceObject).forEach((key)=> {
2016-05-09 23:04:56 +08:00
if (typeof targetObject[key] === "undefined") {
2016-04-22 19:23:44 +08:00
return;
}
2016-05-09 23:04:56 +08:00
if (typeof targetObject[key] === "object") {
Utils.updateKeys(targetObject[key], sourceObject[key]);
} else {
2016-04-22 19:23:44 +08:00
targetObject[key] = sourceObject[key];
}
});
}
2016-05-09 23:04:56 +08:00
public static setKeys(targetObject, sourceObject) {
2016-04-22 19:23:44 +08:00
Object.keys(sourceObject).forEach((key)=> {
2016-05-09 23:04:56 +08:00
if (typeof targetObject[key] === "object") {
Utils.setKeys(targetObject[key], sourceObject[key]);
} else {
targetObject[key] = sourceObject[key];
}
});
}
public static setKeysForced(targetObject, sourceObject) {
Object.keys(sourceObject).forEach((key)=> {
if (typeof sourceObject[key] === "object") {
if (typeof targetObject[key] === "undefined") {
targetObject[key] = {};
}
Utils.setKeysForced(targetObject[key], sourceObject[key]);
2016-05-09 23:04:56 +08:00
} else {
2016-04-22 19:23:44 +08:00
targetObject[key] = sourceObject[key];
}
});
}
2016-05-09 23:04:56 +08:00
public static enumToArray(EnumType):Array<{key:number;value:string;}> {
let arr:Array<{key:number;value:string;}> = [];
2016-05-09 23:04:56 +08:00
for (let enumMember in EnumType) {
if (!EnumType.hasOwnProperty(enumMember)) {
continue;
}
let key = parseInt(enumMember, 10);
if (key >= 0) {
arr.push({key: key, value: EnumType[enumMember]});
}
}
return arr;
}
2016-04-22 19:23:44 +08:00
2016-05-12 17:00:46 +08:00
public static findClosest(number:number, arr:Array<number>) {
let curr = arr[0];
let diff = Math.abs(number - curr);
arr.forEach((value)=> {
let newDiff = Math.abs(number - value);
if (newDiff < diff) {
diff = newDiff;
curr = value;
}
});
return curr;
}
2016-03-13 05:19:24 +08:00
}