fix: moved the filtering of already overriden machines to the locales
helper fix: allow already existing overrides to show the machine when being edited
This commit is contained in:
parent
925d76dc4b
commit
c18b935aa8
2 changed files with 34 additions and 25 deletions
|
|
@ -58,6 +58,7 @@ const Locales = ({ name: SCREEN_KEY }) => {
|
||||||
const config = data?.config && fromNamespace(SCREEN_KEY)(data.config)
|
const config = data?.config && fromNamespace(SCREEN_KEY)(data.config)
|
||||||
|
|
||||||
const locale = config && !R.isEmpty(config) ? config : localeDefaults
|
const locale = config && !R.isEmpty(config) ? config : localeDefaults
|
||||||
|
const localeOverrides = locale.overrides ?? []
|
||||||
|
|
||||||
const save = it => {
|
const save = it => {
|
||||||
const config = toNamespace(SCREEN_KEY)(it.locale[0])
|
const config = toNamespace(SCREEN_KEY)(it.locale[0])
|
||||||
|
|
@ -69,18 +70,6 @@ const Locales = ({ name: SCREEN_KEY }) => {
|
||||||
return saveConfig({ variables: { config } })
|
return saveConfig({ variables: { config } })
|
||||||
}
|
}
|
||||||
|
|
||||||
const removeOverridenMachines = data => {
|
|
||||||
if (data) {
|
|
||||||
const overridenMachines = locale.overrides?.map(o => o.machine)
|
|
||||||
const machinesIndex = data.findIndex(o => o.name === 'machine')
|
|
||||||
data[machinesIndex].inputProps.options = data[
|
|
||||||
machinesIndex
|
|
||||||
].inputProps.options?.filter(m => !overridenMachines.includes(m.deviceId))
|
|
||||||
}
|
|
||||||
|
|
||||||
return data
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<TitleSection title="Locales" />
|
<TitleSection title="Locales" />
|
||||||
|
|
@ -108,8 +97,8 @@ const Locales = ({ name: SCREEN_KEY }) => {
|
||||||
initialValues={overridesDefaults}
|
initialValues={overridesDefaults}
|
||||||
save={saveOverrides}
|
save={saveOverrides}
|
||||||
validationSchema={OverridesSchema}
|
validationSchema={OverridesSchema}
|
||||||
data={locale.overrides ?? []}
|
data={localeOverrides}
|
||||||
elements={removeOverridenMachines(overrides(data))}
|
elements={overrides(data, localeOverrides)}
|
||||||
/>
|
/>
|
||||||
</Section>
|
</Section>
|
||||||
</>
|
</>
|
||||||
|
|
|
||||||
|
|
@ -5,11 +5,14 @@ import Autocomplete from 'src/components/inputs/formik/Autocomplete.js'
|
||||||
|
|
||||||
const LANGUAGE_SELECTION_LIMIT = 4
|
const LANGUAGE_SELECTION_LIMIT = 4
|
||||||
|
|
||||||
const getFields = (getData, names) => {
|
const getFields = (getData, names, auxElements = []) => {
|
||||||
return R.filter(it => R.includes(it.name, names), allFields(getData))
|
return R.filter(
|
||||||
|
it => R.includes(it.name, names),
|
||||||
|
allFields(getData, auxElements)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
const allFields = getData => {
|
const allFields = (getData, auxElements = []) => {
|
||||||
const getView = (data, code, compare) => it => {
|
const getView = (data, code, compare) => it => {
|
||||||
if (!data) return ''
|
if (!data) return ''
|
||||||
|
|
||||||
|
|
@ -19,12 +22,26 @@ const allFields = getData => {
|
||||||
)(data)
|
)(data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const findSuggestion = (it, machines) => {
|
||||||
|
const machine = R.compose(R.find(R.propEq('deviceId', it?.machine)))(
|
||||||
|
machines
|
||||||
|
)
|
||||||
|
return machine ? [machine] : []
|
||||||
|
}
|
||||||
|
|
||||||
const displayCodeArray = data => it => {
|
const displayCodeArray = data => it => {
|
||||||
if (!it) return it
|
if (!it) return it
|
||||||
|
|
||||||
return R.compose(R.join(', '), R.map(getView(data, 'code')))(it)
|
return R.compose(R.join(', '), R.map(getView(data, 'code')))(it)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const overridenMachines = R.map(override => override.machine, auxElements)
|
||||||
|
const suggestionFilter = R.filter(
|
||||||
|
it => !R.contains(it.deviceId, overridenMachines)
|
||||||
|
)
|
||||||
|
|
||||||
|
console.log(getData(['machines']))
|
||||||
|
|
||||||
const machineData = getData(['machines'])
|
const machineData = getData(['machines'])
|
||||||
const countryData = getData(['countries'])
|
const countryData = getData(['countries'])
|
||||||
const currencyData = getData(['currencies'])
|
const currencyData = getData(['currencies'])
|
||||||
|
|
@ -38,7 +55,11 @@ const allFields = getData => {
|
||||||
view: getView(machineData, 'name', 'deviceId'),
|
view: getView(machineData, 'name', 'deviceId'),
|
||||||
input: Autocomplete,
|
input: Autocomplete,
|
||||||
inputProps: {
|
inputProps: {
|
||||||
options: machineData,
|
options: it =>
|
||||||
|
R.concat(
|
||||||
|
suggestionFilter(machineData),
|
||||||
|
findSuggestion(it, machineData)
|
||||||
|
),
|
||||||
valueProp: 'deviceId',
|
valueProp: 'deviceId',
|
||||||
getLabel: R.path(['name']),
|
getLabel: R.path(['name']),
|
||||||
limit: null
|
limit: null
|
||||||
|
|
@ -110,15 +131,14 @@ const mainFields = auxData => {
|
||||||
])
|
])
|
||||||
}
|
}
|
||||||
|
|
||||||
const overrides = auxData => {
|
const overrides = (auxData, auxElements) => {
|
||||||
const getData = R.path(R.__, auxData)
|
const getData = R.path(R.__, auxData)
|
||||||
|
|
||||||
return getFields(getData, [
|
return getFields(
|
||||||
'machine',
|
getData,
|
||||||
'country',
|
['machine', 'country', 'languages', 'cryptoCurrencies'],
|
||||||
'languages',
|
auxElements
|
||||||
'cryptoCurrencies'
|
)
|
||||||
])
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const LocaleSchema = Yup.object().shape({
|
const LocaleSchema = Yup.object().shape({
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue