import { Localization } from './localization'; // @dynamic export class TypeOperations { static dateToString = function (date: Date, format: string) { if (!date || !date.getTime || isNaN(date.getTime())) return undefined; switch (format) { case "hour": format = "hh:mm"; break; case "time": format = "dd/MMMM/yyyy hh:mm"; break; case "second": format = "dd/MMMM/yyyy hh:mm:ss"; break; case "minute": format = "dd/MMMM/yyyy hh:mm"; break; case "day": format = "dd/MMMM/yyyy"; break; case "onlyDay": format = "dd"; break; case "month": format = "MMMM/yyyy"; break; case "monthInt": format = "MM/yyyy"; break; case "onlyMonth": format = "MMMM"; break; case "year": format = "yyyy"; break; default: format = format ? format : "dd/MMMM/yyyy"; break; } var months = [ Localization.translateEn('January'), Localization.translateEn('February'), Localization.translateEn('March'), Localization.translateEn('April'), Localization.translateEn('May'), Localization.translateEn('June'), Localization.translateEn('July'), Localization.translateEn('August'), Localization.translateEn('September'), Localization.translateEn('October'), Localization.translateEn('November'), Localization.translateEn('December') ]; var year = date.getFullYear().toString(); var month = date.getMonth() >= 9 ? (date.getMonth() + 1).toString() : ("0" + (date.getMonth() + 1).toString()); var monthText = months[date.getMonth()]; var day = date.getDate() > 9 ? date.getDate().toString() : ("0" + date.getDate().toString()); var hour = date.getHours() > 9 ? date.getHours().toString() : ("0" + date.getHours().toString()); var minute = date.getMinutes() > 9 ? date.getMinutes().toString() : ("0" + date.getMinutes().toString()); var second = date.getSeconds() > 9 ? date.getSeconds().toString() : ("0" + date.getSeconds().toString()); var dictionary = { "dd": day, "hh": hour, "mm": minute, "ss": second, "yyyy": year, "MMMM": monthText, "MM": month }; var result = format; for (var i in dictionary) { result = result.replace(i, dictionary[i]); } return result; }; static longToDate = function (str) { if (!str || str == "0") return undefined; str = str.toString(); var year = str.substring(0, 4); var month = str.substring(4, 6); var day = str.substring(6, 8); var hour = str.substring(8, 10); var min = str.substring(10, 12); var sn = str.substring(12, 14); return new Date(year + "-" + month + "-" + day + " " + hour + ":" + min + ":" + sn); }; static longToString = function (str, format?: string) { if (!str || str == "0") return undefined; return this.dateToString(this.longToDate(str), format); }; static dateToLong = function (date, zoomLevel?: string) { if (!date || !date.getFullYear) return undefined; var year = date.getFullYear().toString(); var month = date.getMonth() >= 9 ? (date.getMonth() + 1).toString() : ("0" + (date.getMonth() + 1).toString()); var day = date.getDate() > 9 ? date.getDate().toString() : ("0" + date.getDate().toString()); var hour = date.getHours() > 9 ? date.getHours().toString() : ("0" + date.getHours().toString()); var minute = date.getMinutes() > 9 ? date.getMinutes().toString() : ("0" + date.getMinutes().toString()); var second = date.getSeconds() > 9 ? date.getSeconds().toString() : ("0" + date.getSeconds().toString()); var result; if (!zoomLevel) zoomLevel = "day"; switch (zoomLevel) { case "time": result = year + month + day + hour + minute + second; break; case "minute": result = year + month + day + hour + minute + "00"; break; case "hour": result = year + month + day + hour + "0000"; break; case "day": result = year + month + day + "000000"; break; case "month": result = year + month + "01000000"; break; case "year": result = year + "0101000000"; break; default: console.error("'dateToLong': Invalid zoom level type: '" + zoomLevel + "'"); break; } return Number(result); }; static boolToString = function (bool) { var value; if (bool == 'true' || bool == '1' || bool === true) value = true; else if (bool == 'false' || bool == '0' || bool === false) value = false; else return undefined; return value ? "Evet" : "Hayır"; }; static stringToBool = function (str: string) { if (str == "true" || str == "1") return true; else if (str == "false" || str == "0") return false; else return undefined; } static decimalToString = function (number, format) { if (!number && number !== 0) return undefined; if (!format) return number.toString(); var count = (format.match(/#/g) || []).length; return Number(parseFloat(number).toFixed(count)).toString(); }; static strEscape(str: string) { return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); } static replaceAt(str: string, index: number, replacement: any) { return str.substr(0, index) + replacement + str.substr(index + replacement.length); } static rgbtohex(r: number, g: number, b: number) { let converter = (x) => { let hex = x.toString(16); return hex.length == 1 ? "0" + hex : hex; } return "#" + converter(r) + converter(g) + converter(b); } static hextorgb(hex: string, opacity: number = 1) { let result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); if (result) { let r = parseInt(result[1], 16); let g = parseInt(result[2], 16); let b = parseInt(result[3], 16); return `rgb(${r},${g},${b},${opacity})`; } else return null; } }