import { Linking } from "react-native"; import { showLocation } from 'react-native-map-link' /** * 工具集 * @邠心vbe on 2021/04/20 */ const formatNumber = (n) => { n = n.toString() return n[1] ? n : '0' + n } export default { getDistance(dis) { if (dis) { if (dis > 1000) { return Number((dis / 1000).toFixed(1)) + 'km'; } else { return dis + 'm'; } } else { return 'NA'; } }, directMaps(lat, lng, address) { if (isIOS) { showLocation({ latitude: lat, longitude: lng, title: address }).catch(err => { console.warn("directMaps", err); }); } else { var uri = "geo:" + lat + "," + lng + "?q=" + address; Linking.openURL(uri).catch(err => { console.warn("directMaps", err); }); } }, getSiteInfo(obj) { if (obj) { const acRates = [], dcRates = []; obj?.rates.forEach((item) => { if (item.type?.indexOf('AC') >= 0) { acRates.push(item) } else { dcRates.push(item) } }) return { id: obj.sitePk, name: obj.siteName, address: obj.siteAddress, latitude: obj.locationLatitude, longitude: obj.locationLongitude, acConnector: obj.acConnector, allConnector: obj.allConnector, dcConnector: obj.dcConnector, distance: this.getDistance(obj.distance), acRates: acRates, dcRates: dcRates, rateList: obj.rates, siteType: obj.siteType, parkingFee: obj.parkingFee, parkingFeeFree: obj.free, operatingHours: obj.operatingHours, additionalNotes: obj.additionalNotes, endlessService: obj.endlessService, serviceProvider: obj.serviceProvider, enableReservation: obj.enableReservation } } else { return {id: 0} } }, getNowHHmm() { const now = new Date(); var month = now.getHours(); var minute = now.getMinutes(); return [month, minute].map(formatNumber).join(':'); }, getYYMMdd(date) { var year = date.getFullYear() var month = date.getMonth() + 1 var day = date.getDate() //var hour = date.getHours() //var minute = date.getMinutes() //var second = date.getSeconds() return [year, month, day].map(formatNumber).join('/') }, formatYYMM(date) { var year = date.getFullYear() var month = date.getMonth() + 1 return [year, month].map(formatNumber).join('-') }, hour2HHmm(hour) { if (hour) { if (hour > 0) { const h = parseInt(hour); const m = (hour - h) * 60; return h + ' hr ' + parseInt(m) + 'min'; } else { const m = hour * 60; return parseInt(m) + 'min'; } } else { return '0 min'; } }, minutes2HHmm(minutes) { if (minutes) { if (minutes > 60) { const m = parseInt(minutes); const h = m / 60; const mm = m % 60; return h + ' hr ' + parseInt(mm) + 'min'; } else { return parseInt(minutes) + 'min'; } } else { return '0 min'; } }, isEmpty(str, encNo=false) { if (typeof str == 'number') { if (encNo) { return str === 0; } else { return false; } } else if (str) { if (typeof str == 'object') { return Object.keys(str).length == 0; } else if (Array.isArray(str)) { return str.length == 0; } else { if (str == undefined || str == null || str == "") return true; return false; } } else { return true; } }, isNotEmpty(str, encNo) { return !this.isEmpty(str, encNo); }, getParamsFromUrl(url) { var params = {} const list = url.split('&'); for (let item of list) { if (item.indexOf('=') > 0) { const param = item.split('='); if (param.length == 2) params[param[0]] = param[1]; } } return params; }, join(arrays=[], spect="") { let str = '' if (arrays) { arrays.forEach((item, index) => { if (index == 0) { str += item; } else { str += spect + item; } }); } return str; }, /** * 将给定数字保留任意位小数 * @param {*} text * @param {number} scape * @returns 小数 */ toFixed(text, scape) { if (text) { return Number(text).toFixed(scape); } else { return text; } } }