Є завдання зробити конструктор умов на фронті. Як приклад, є таке умова "if((action == true || action == true && val == 5) || (action == true && $val != 7) )" потрібно мати можливість повторити на фронтенді.
Як потрібно зробити.
При завантаженні з'являється форма, яка розділена на два блоки
1й блок "Умови"
1. Кнопка створити форму
2. Якщо це перший елемент на своєму рівні, то пусто, в іншому випадку селектор з && і || ("level_condition")
3. Селектор, який буде вибирати поле з доступних, які знаходяться в масиві title і name ("field_name")
[
{"name": "some_name", "title": "Some Name", "type": "select", "select_data": [{"name": 12, "value": 12}, {"name": 14, "value": 14}]},
{"name": "some_name_1", "title": "Some Name 1", "type": "boolean", "value": false},
{"name": "some_name_2", "title": "Some Name 2", "type": "integer", "value": 5},
{"name": "some_name_3", "title": "Some Name 3", "type": "string", "value": "string text"}
]4. Селектор з логічними операціями != == і т.п. ("operation")
5. Поле для вказання значення вручну або ж, якщо це boolean select, то вказувати значення з масиву в пункті 3. ("value")
6. Кнопка додати саблевел, який має таку ж логіку, як і блок вище.
7. Кнопка видалення (якщо видаляється батьківський, то і все, що нижче, затирається)
Таким чином, ми зможемо повторити логіку з безкінечною вкладеністю.
2й блок "Дії"
Селектор з вибору "", "Помилка", "Дія".
Після вибору "Помилка" з'являється текстове поле для введення тексту
Після вибору "Дія" з'являється селектор, як у пункті 3, з можливістю додавання нових (тут без рівня) і кнопка видалення.
Кнопка збереження.
У формі потрібно правильно зробити вкладеність. Очікується, що при відправці на збереження структура відповіді буде такою. Якщо вибрати на 1м рівні 2 умови. У 1м умові вибрати 1 саб рівень і т. д.
conditions[0][level_condition] = ""
conditions[0][field_name]
conditions[0][operation]
conditions[0][value]
conditions[0][0][level_condition] = ""
conditions[0][0][field_name]
conditions[0][0][operation]
conditions[0][0][value]
conditions[0][1][level_condition] = "||"
conditions[0][1][field_name]
conditions[0][1][operation]
conditions[0][1][value]
conditions[1][level_condition]= "&&"
conditions[1][field_name]
conditions[1][operation]
conditions[1][value]
action_selector[error] = текст помилки
action_selector[0][action][field_name]= поле, яке вибрали
action_selector[0][action][value] = значення для поля, яке вибрали
Картинка з прикладом загальної концепції, тільки є зайві кнопки