Создать панель управления сотрудниками, на которой будут располагаться:
- таблица с сотрудниками с фильтрами и сортировкой
- форма добавления нового сотрудника
Для добавления сотрудника на странице должна выводиться форма с полями, соответствующими данным сотрудника. Форма должна проходить валидацию по следующим правилам:
- все поля обязательны для заполнения после применения к значению метода trim()
- дата рождения находится в диапазоне от 01.01.1900 до текущей даты
- год начала трудовой деятельности находится в диапазоне от 2000-го до текущего года
Валидация должна происходить после нажатия на кнопку "Добавить сотрудника", расположенную под полями для ввода. Если валидация прошла успешно, то все поля очищаются, а новый сотрудник добавляется в таблицу. В противном случае над неверно заполненными полями нужно вывести сообщения с описанием ошибок для пользователя. Тексты сообщений должны дать достаточно информации, чтобы понять какие ошибки были допущены.
Данные из массива должны выводиться в табличном виде. Каждая строка таблицы содержит информацию об одном сотруднике. Колонки таблицы:
- ФИО сотрудника
- Отдел
- Дата рождения и возраст в формате "31.12.2000 (20 лет)". Возраст должен быть вычислен из даты рождения.
- Года работы и стаж. Считается, что все сотрудники подписывают трудовой договор на 4 года, то есть диапазон с годами работы выводится как {год начала контракта}-{+4 года}. Если сентябрь года окончания контракта уже прошёл, в скобках вместо указания года нужно должно выводиться "закончил".
Первая строка таблицы - заголовочная, в ней указываются заголовки колонок (ФИО, Отдел, ДР и возраст, Года работы). При нажатии на ячейку заголовочной строки должна происходить сортировка по соответствующим полям сотрудников:
- ФИО сортирует по соединённой строке из фамилии, имени и отчества по алфавиту по возрастанию
- Отдел - по названию отдела по алфавиту по возрастанию
- ДР и возраст - по дате рождения по возрастанию
- Года работы - по году начала трудовой деятельности
Перед таблицей также нужно вывести фильтры, состоящие из полей:
- ФИО для поиска подстроки в фамилии, имени или отчестве
- Отдел для поиска подстроки в названии отдела
- Год начала контракта (точное совпадение)
- Год окончания контракта (точное совпадение)
При любых изменениях в полях для фильтрации содержимое таблицы должно измениться в соответствии с указанными фильтрами. Если указано несколько фильтров, то все они применяются к массиву сотрудников по очереди.