traefik/webui/src/_helpers/Helps.js
2019-12-17 14:52:05 +01:00

133 lines
3.2 KiB
JavaScript

import { get } from 'dot-prop'
class Helps {
// Getters
// ------------------------------------------------------------------------
// Public
// ------------------------------------------------------------------------
// Static
// ------------------------------------------------------------------------
static get (obj, prop, def = undefined) {
return get(obj, prop, def)
}
static hasIn (obj, prop) {
return Helps.get(obj, prop) !== undefined && Helps.get(obj, prop) !== null
}
static toggleBodyClass (addRemoveClass, className) {
const el = document.body
if (addRemoveClass === 'addClass') {
el.classList.add(className)
} else {
el.classList.remove(className)
}
}
static getName (obj, val) {
let name = ''
for (let i = 0; i < obj.length; i += 1) {
if (obj[i].value === val || obj[i].iso2 === val) {
name = obj[i].name
}
}
return name
}
static removeEmptyObjects (objects) {
const obj = {}
Object.entries(objects).map(item => {
if (item[1] !== '') {
obj[item[0]] = item[1]
}
})
return obj
}
// Helps -> Numbers
// ------------------------------------------------------------------------
static getPercent (value, total) {
return (value * 100) / total
}
// Helps -> Array
// ------------------------------------------------------------------------
// Add or remove values
static toggleArray (array, value) {
if (array.includes(value)) {
array.splice(array.indexOf(value), 1)
} else {
array.push(value)
}
}
// Helps -> Strings
// ------------------------------------------------------------------------
// Basename
static basename (path, suffix) {
let b = path
const lastChar = b.charAt(b.length - 1)
if (lastChar === '/' || lastChar === '\\') {
b = b.slice(0, -1)
}
// eslint-disable-next-line no-useless-escape
b = b.replace(/^.*[\/\\]/g, '')
if (typeof suffix === 'string' && b.substr(b.length - suffix.length) === suffix) {
b = b.substr(0, b.length - suffix.length)
}
return b
}
// Slug
static slug (str) {
str = str.replace(/^\s+|\s+$/g, '') // trim
str = str.toLowerCase()
// remove accents, swap ñ for n, etc
const from = 'ãàáäâẽèéëêìíïîõòóöôùúüûñç·/_,:;'
const to = 'aaaaaeeeeeiiiiooooouuuunc------'
for (let i = 0, l = from.length; i < l; i += 1) {
str = str.replace(new RegExp(from.charAt(i), 'g'), to.charAt(i))
}
str = str.replace(/[^a-z0-9 -]/g, '') // remove invalid chars
.replace(/\s+/g, '-') // collapse whitespace and replace by -
.replace(/-+/g, '-') // collapse dashes
return str
}
// Capitalize first letter
static capFirstLetter (string) {
return string.charAt(0).toUpperCase() + string.slice(1)
}
// Repeat
static repeat (string, times) {
return new Array(times + 1).join(string)
}
// Get Attribute
static getAttribute (string, key) {
const _key = `${key}="`
const start = string.indexOf(_key) + _key.length
const end = string.indexOf('"', start + 1)
return string.substring(start, end)
}
// Private
// ------------------------------------------------------------------------
}
export default Helps