184 lines
4.4 KiB
JavaScript
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);
|
|
}
|