Files
socialhose-php/frontend/app/common/helper.js
T
2022-12-09 08:36:26 -06:00

184 lines
4.4 KiB
JavaScript

import moment from 'moment';
import { cloneDeep } from 'lodash';
import axios from 'axios';
import Cookies from 'cookies-js';
// append scripts in body
export const appendScriptLink = (sources) => {
sources.map((src) => {
const script = document.createElement('script');
script.type = 'text/javascript';
script.setAttribute('src', src);
script.setAttribute('async', true);
document.body.appendChild(script);
});
};
// load script into body part
export const loadScript = (source) => {
const s = document.createElement('script');
s.type = 'text/javascript';
s.async = true;
s.innerHTML = source;
document.body.appendChild(s);
};
// set document element value
export const setDocumentData = (tag, value) => {
if (tag === 'title') {
document.title = value
? `${value} | SOCIALHOSE.IO App`
: 'Social Listening Platform | Social Analytics | SOCIALHOSE.IO App';
}
};
// convert UTC date to Local date
export const convertUTCtoLocal = (date, format = 'YYYY-MM-DD HH:mm:ss') => {
if (!date) return '';
const utcDate = moment.utc(date).format(); //is used to consider input as UTC if timezone offset is not passed
return moment(utcDate).format(format);
};
// convert Local date to UTC date
export const convertlocaltoUTC = (date, format = 'YYYY-MM-DD HH:mm:ss') => {
if (!date) return '';
return moment.utc(date).format(format);
};
// get date
export const getDate = (date, format = 'YYYY-MM-DD HH:mm:ss') => {
return !date ? moment().format(format) : moment(date).format(format);
};
export const getMomentObject = (date) => {
return date ? (moment.isMoment(date) ? date : moment(date)) : null;
};
export const getQueryParams = (obj) => {
if (!obj) {
return null;
}
const { page, pageSize = 10, sorted, searchQuery = undefined } = obj;
const params = {
page: page + 1,
limit: pageSize,
query: searchQuery
};
if (sorted && sorted.length) {
const sortedField = sorted[0];
const sort = {
field: sortedField.id,
direction: sortedField.desc ? 'desc' : 'asc'
};
params['sort'] = sort;
}
return params;
};
export function removeHttpsUrl(url) {
return !url ? '' : url.replace(/(^\w+:|^)\/\//, '');
}
export function capOnlyFirstLetter(string) {
// lodash: capitalize
return string.charAt(0).toUpperCase() + string.slice(1).toLowerCase();
}
export function capFirstLetter(string) {
return string.charAt(0).toUpperCase() + string.slice(1);
}
export function getValidHttpUrl(string) {
let url;
try {
url = new URL(string);
} catch (_) {
return false;
}
url.protocol = 'https:';
return url.toString();
}
export function getArray(obj, key = 'name', value = 'value') {
return Object.entries(obj).map((v) => ({
[key]: v[0],
[value]: v[1]
}));
}
// get title for source index table
export function getTitle(prevTitle) {
if (prevTitle && prevTitle.replace(/!+/g, '').trim().length > 0) {
return prevTitle;
}
return '[No Name]';
}
export function abbreviateNumber(num) {
if (num >= 1000000000) {
return (num / 1000000000).toFixed(1).replace(/\.0$/, '') + 'G';
}
if (num >= 1000000) {
return (num / 1000000).toFixed(1).replace(/\.0$/, '') + 'M';
}
if (num >= 1000) {
return (num / 1000).toFixed(1).replace(/\.0$/, '') + 'K';
}
return num;
}
export function notNullAndUnd(value) {
return value !== null && value !== undefined;
}
export function validateForm(form, errors, handleValidation) {
let failed;
for (let val in errors) {
const fieldError = errors[val];
if (fieldError) {
failed = true;
} else if (fieldError === null && !form[val] && form[val] !== 0) {
failed = true;
handleValidation(val, true);
}
}
if (failed) {
return false;
} else {
return cloneDeep(form);
}
}
// get IP
export function getIP() {
return localStorage.getItem('ip');
}
export const setIP = async () => {
try {
const res = await axios.get('https://api.ipify.org/?format=json');
res.data && res.data.ip && localStorage.setItem('ip', res.data.ip);
} catch (error) {
console.log(error);
}
};
export function getHPContext() {
return {
hutk: Cookies.get('hubspotutk') || undefined,
ipAddress: getIP() || undefined
};
}
export function arraymove(arr, fromIndex, toIndex) {
if (fromIndex === -1 || toIndex === -1) {
return;
}
var element = arr[fromIndex];
arr.splice(fromIndex, 1);
arr.splice(toIndex, 0, element);
}