Newer
Older
import { FluidStatus, GetRelationshipsReturn, Relation } from 'models'
import { FluidState, FluidType } from '../enum/fluid.enum'
import { KonnectorUpdate } from '../enum/konnectorUpdate.enum'
import { DateTime } from 'luxon'
export function getFluidType(type: string) {
switch (type.toUpperCase()) {
case 'ELECTRICITY':
return FluidType.ELECTRICITY
case 'WATER':
return FluidType.WATER
case 'GAS':
return FluidType.GAS
default:
return FluidType.ELECTRICITY
}
}
export function getKonnectorUpdateError(type: string) {
switch (type.toUpperCase()) {
case 'USER_ACTION_NEEDED.OAUTH_OUTDATED':
return KonnectorUpdate.ERROR_UPDATE_OAUTH
default:
return KonnectorUpdate.ERROR_UPDATE
}
}
export function isKonnectorActive(
fluidStatus: FluidStatus[],
fluidType: FluidType
): boolean {
if (fluidType === FluidType.MULTIFLUID) {
if (
fluidStatus.filter(
fluid =>
fluid.status === FluidState.NOT_CONNECTED ||
fluid.status === FluidState.ERROR_LOGIN_FAILED
).length === 3
) {
return false
} else {
return true
}
}
if (
fluidStatus[fluidType].status === FluidState.NOT_CONNECTED ||
fluidStatus[fluidType].status === FluidState.ERROR_LOGIN_FAILED
) {
return false
} else return true
}
export function formatNumberValues(
fluidStyle?: string,
toBeCompared = false
) {
const localeValue = value.toLocaleString('fr-FR', {
minimumFractionDigits: 2,
maximumFractionDigits: 2,
})
const noSpaceValue = parseInt(localeValue.replace(/\s/g, ''))
if (toBeCompared) return noSpaceValue
if (fluidStyle && noSpaceValue >= 1000) {
const convertedValue = (noSpaceValue / 1000).toFixed(2).replace('.', ',')
return convertedValue
} else return localeValue
} else {
return '--,--'
}
/**
* Get one relation in doc
*
* @param {object} doc - DocumentEntity
* @param {string} relName - Name of the relation
*/
export function getRelationship<D>(doc: D, relName: string): Relation {
return get(doc, `relationships.${relName}.data`, [])
}
/**
* Get array of items in one relation in doc
*
* @param {object} doc - DocumentEntity
* @param {string} relName - Name of the relation
*/
export function getRelationshipHasMany<D>(doc: D, relName: string): Relation[] {
return get(doc, `relationships.${relName}.data`, [])
}
/**
* Get many relations in doc
*
* @param {object} doc - DocumentEntity
* @param {Array<[relName: string]: Array<Relation>>} relNameList - Array of name of the relations
*/
export function getRelationships<D>(
doc: D,
relNameList: Array<string>
): GetRelationshipsReturn {
return relNameList.map(relName => ({
[relName]: get(doc, `relationships.${relName}.data`, []),
}))[0]
}

Guilhem CARRON
committed
/**
*
* @param id
* @param pathType
*/
export const importIconbyId = async (id: string, pathType: string) => {
// Les svg doivent être au format id.svg
let importedChallengeIcon
importedChallengeIcon = await import(
/* webpackMode: "eager" */ `assets/icons/visu/${pathType}/${id}.svg`
if (importedChallengeIcon) {
return importedChallengeIcon.default
/**
* Return month string according to month index
* @param date - DateTime
* @returns month in french
*/
export const getMonthName = (date: DateTime) => {
const monthNames = [
'janiver',
'février',
'mars',
'avril',
'mai',
'juin',
'juillet',
'août',
'septembre',
'octobre',
'novembre',
'décembre',
]
return monthNames[date.month - 1]