langDeviceHandler

Run Settings
LanguageJavaScript
Language Version
Run Command
const INPUT_TYPES = { FIELD: 'field', DROPDOWN: 'dropdown', TOGGLE: 'toggle', COLOR: 'color', CAROUSEL: 'carousel', IMAGE: 'image', }; const OVERALL_INPUT = 'by_default'; const langs = [ { value: 'fr', }, { value: 'en', }, { value: 'gr', }, ]; const devs = [ { value: 'kv', }, { value: 'kh', }, { value: 'ws', }, ]; const answer = { // id: 1, name: 'form_item_1', form_item_id: 1, display_type: INPUT_TYPES.IMAGE, media_storage_item: { data: 'data', }, }; const setValueForAllAnswers = (answer, {lang, langs, device, devices}) => { let answers; switch (true) { case device === OVERALL_INPUT && lang !== OVERALL_INPUT: console.log('1') answers = devices.map((item) => ({...answer, language: lang, device: item.value})); break; case lang === OVERALL_INPUT && device !== OVERALL_INPUT: console.log('2') answers = langs.map((item) => ({...answer, language: item.value, device})); break; default: console.log('running') answers = []; langs.forEach(({value}) => { const allLangs = devices.map((item) => ({ ...answer, language: value, screen_format: item.value, })); answers.push(...allLangs); }); break; } return answers; }; const oldAnswers = [ { id: 1, name: 'form_item_2', form_item_id: 2, display_type: INPUT_TYPES.IMAGE, media_storage_item: { data: 'data' }, language: 'fr', screen_format: 'kv' }, { id: 2, name: 'form_item_2', form_item_id: 2, display_type: 'image', media_storage_item: { data: 'data' }, language: 'fr', screen_format: 'kh' }, ]; const newAnswers = setValueForAllAnswers(answer, { lang: OVERALL_INPUT, langs, device: OVERALL_INPUT, devices: devs, }); // console.log(newAnswers); const saveTemplateAnswer = (prevTemplateAnswers, value) => { if (Array.isArray(value)) { let filtered = [...prevTemplateAnswers]; value.forEach((ans, idx) => { // console.log('filtered: ', idx, filtered); filtered = filterTempalteAnswers(filtered, ans); }); return [...filtered, ...value]; } else { const filtered = filterTempalteAnswers(prevTemplateAnswers, value); return [...filtered, value]; } }; const arr = saveTemplateAnswer(oldAnswers, newAnswers); console.log(arr); function filterTempalteAnswers(items, value) { return items.filter((item) => { if (value.display_type === INPUT_TYPES.FIELD) { return item.form_item_id !== value.form_item_id ? item : item.language !== value.language; } else if (value.display_type === INPUT_TYPES.IMAGE) { return item.form_item_id !== value.form_item_id ? item : item.language !== value.language || item.screen_format !== value.screen_format; } return item.form_item_id !== value.form_item_id; }); }
Editor Settings
Theme
Key bindings
Full width
Lines