56. Avalonia UI Real World (Sort Order to Database)
00:00 Проблема с идентификаторами • Исправлено множество ошибок, но при добавлении нескольких элементов и нажатии «Сохранить» происходит сбой из-за совпадения идентификаторов. • Идентификатор формируется на основе родительского процесса, идентификатора действия и позиции в списке. • Необходимо отсортировать элементы по порядку перед сохранением. 00:58 Реализация метода insert • Создаётся метод insert для добавления элемента в список с указанием индекса. • Метод принимает элемент и индекс, который может быть отрицательным для добавления в конец списка. • Переопределяется метод insert action process для обработки индекса. 02:43 Проверка диапазона индекса • Добавляется логика для проверки диапазона индекса. • Если индекс выходит за пределы диапазона, программа может аварийно завершиться или выдать ошибку. • Рассматривается возможность игнорирования попытки вставки на неверную позицию. 04:31 Проверка пустого списка • Проверяется, что при вставке в пустой список элемент добавляется в конец. • Это решает проблему с вставкой в пустой список при привязке данных. • Проверяется работа метода после сохранения изменений. 05:30 Тестирование вставки • Тестируется вставка элемента на 10-ю позицию, проверяется, что вставка не выполняется при индексе больше количества элементов в списке. • Подтверждается, что функция вставки работает корректно. 06:57 Обновление порядка сортировки • Создаётся метод update action sort order для обновления порядка сортировки при перетаскивании элементов. • Логика обновления порядка сортировки выделяется в отдельный метод. • При перетаскивании вызывается метод обновления порядка сортировки. 08:41 Пересчёт идентификатора • Пересчитывается идентификатор действия на основе порядка сортировки. • Отображается идентификатор с порядком сортировки в списке действий. • Проверяется, что родительский идентификатор остаётся неизменным, а идентификатор действия обновляется. 09:46 Установка порядка сортировки • Устанавливается порядок сортировки по возрастанию для каждого элемента в списке. • Порядок сортировки соответствует позиции элемента в списке. • Упрощается процесс обновления идентификатора и порядка сортировки с помощью цикла for each. 11:31 Проблемы с идентификатором • Идентификатор устанавливается в нескольких местах, но его значение отличается. • При добавлении в список идентификатор переопределяется. • Решение: обновить идентификатор при изменении порядка сортировки. 12:15 Установка идентификатора • Идентификатор устанавливается на верхнем уровне списка процессов. • Используется порядок сортировки для определения идентификатора. • Проверка обновления идентификатора в списке. 13:02 Тестирование добавления задач • Добавление задач по рисованию, проверка их количества. • Обнаружение проблемы с добавлением неправильного идентификатора. • Возвращение к предыдущему коду для анализа проблемы. 14:12 Анализ проблемы с идентификаторами • Идентификаторы FF и 07 соответствуют процессам и действиям. • Проблема: идентификатор в доступных действиях не должен совпадать с порядком сортировки. • Решение: задать идентификатор только при обновлении. 16:10 Реализация решения • Получение исходного идентификатора действия. • Изменение порядка сортировки при наличии идентификатора в списке. • Создание публичного свойства для идентификатора действия. 19:20 Сохранение идентификатора в базе данных • Идентификатор действия сохраняется как свойство в базе данных. • Удаление и повторное добавление базы данных для фиксации изменений. • Проверка корректности идентификаторов после обновления. 22:02 Финальная проверка • Добавление нового задания на печать, проверка идентификаторов. • Сохранение изменений, выход и вход в систему для подтверждения работы. • Подтверждение корректности идентификаторов и сортировки заданий. 23:55 Идентификатор для сортировки • Идентификатор не нужен для сортировки, так как есть идентификатор действия и идентификатор процесса. • Можно использовать номер действия в процессе как уникальный идентификатор. • Модель данных действия процесса уже содержит уникальный идентификатор. 24:51 Проверка работы системы • Удаление идентификатора позволяет сократить количество действий. • Проверка работы системы с изменённой меткой в названии задачи. • Использование модели представления действия процесса для задания названия задачи и порядка сортировки. 25:58 Проблемы с идентификаторами • При удалении элемента порядок сортировки не обновляется автоматически. • Проблема с совпадением идентификаторов действий. • Необходимость повторного создания действия для исправления проблемы. 27:06 Коррекция идентификаторов • Идентификатор действия должен быть задан в модели представления доступных действий. • Проблема с пустым идентификатором действия при клонировании. • Повторное задание идентификатора для решения проблемы. 28:43 Сортировка списка процессов 30:47 Исправление идентификаторов действий 32:30 Сброс идентификатора при добавлении элемента 34:10 Завершение работы
00:00 Проблема с идентификаторами • Исправлено множество ошибок, но при добавлении нескольких элементов и нажатии «Сохранить» происходит сбой из-за совпадения идентификаторов. • Идентификатор формируется на основе родительского процесса, идентификатора действия и позиции в списке. • Необходимо отсортировать элементы по порядку перед сохранением. 00:58 Реализация метода insert • Создаётся метод insert для добавления элемента в список с указанием индекса. • Метод принимает элемент и индекс, который может быть отрицательным для добавления в конец списка. • Переопределяется метод insert action process для обработки индекса. 02:43 Проверка диапазона индекса • Добавляется логика для проверки диапазона индекса. • Если индекс выходит за пределы диапазона, программа может аварийно завершиться или выдать ошибку. • Рассматривается возможность игнорирования попытки вставки на неверную позицию. 04:31 Проверка пустого списка • Проверяется, что при вставке в пустой список элемент добавляется в конец. • Это решает проблему с вставкой в пустой список при привязке данных. • Проверяется работа метода после сохранения изменений. 05:30 Тестирование вставки • Тестируется вставка элемента на 10-ю позицию, проверяется, что вставка не выполняется при индексе больше количества элементов в списке. • Подтверждается, что функция вставки работает корректно. 06:57 Обновление порядка сортировки • Создаётся метод update action sort order для обновления порядка сортировки при перетаскивании элементов. • Логика обновления порядка сортировки выделяется в отдельный метод. • При перетаскивании вызывается метод обновления порядка сортировки. 08:41 Пересчёт идентификатора • Пересчитывается идентификатор действия на основе порядка сортировки. • Отображается идентификатор с порядком сортировки в списке действий. • Проверяется, что родительский идентификатор остаётся неизменным, а идентификатор действия обновляется. 09:46 Установка порядка сортировки • Устанавливается порядок сортировки по возрастанию для каждого элемента в списке. • Порядок сортировки соответствует позиции элемента в списке. • Упрощается процесс обновления идентификатора и порядка сортировки с помощью цикла for each. 11:31 Проблемы с идентификатором • Идентификатор устанавливается в нескольких местах, но его значение отличается. • При добавлении в список идентификатор переопределяется. • Решение: обновить идентификатор при изменении порядка сортировки. 12:15 Установка идентификатора • Идентификатор устанавливается на верхнем уровне списка процессов. • Используется порядок сортировки для определения идентификатора. • Проверка обновления идентификатора в списке. 13:02 Тестирование добавления задач • Добавление задач по рисованию, проверка их количества. • Обнаружение проблемы с добавлением неправильного идентификатора. • Возвращение к предыдущему коду для анализа проблемы. 14:12 Анализ проблемы с идентификаторами • Идентификаторы FF и 07 соответствуют процессам и действиям. • Проблема: идентификатор в доступных действиях не должен совпадать с порядком сортировки. • Решение: задать идентификатор только при обновлении. 16:10 Реализация решения • Получение исходного идентификатора действия. • Изменение порядка сортировки при наличии идентификатора в списке. • Создание публичного свойства для идентификатора действия. 19:20 Сохранение идентификатора в базе данных • Идентификатор действия сохраняется как свойство в базе данных. • Удаление и повторное добавление базы данных для фиксации изменений. • Проверка корректности идентификаторов после обновления. 22:02 Финальная проверка • Добавление нового задания на печать, проверка идентификаторов. • Сохранение изменений, выход и вход в систему для подтверждения работы. • Подтверждение корректности идентификаторов и сортировки заданий. 23:55 Идентификатор для сортировки • Идентификатор не нужен для сортировки, так как есть идентификатор действия и идентификатор процесса. • Можно использовать номер действия в процессе как уникальный идентификатор. • Модель данных действия процесса уже содержит уникальный идентификатор. 24:51 Проверка работы системы • Удаление идентификатора позволяет сократить количество действий. • Проверка работы системы с изменённой меткой в названии задачи. • Использование модели представления действия процесса для задания названия задачи и порядка сортировки. 25:58 Проблемы с идентификаторами • При удалении элемента порядок сортировки не обновляется автоматически. • Проблема с совпадением идентификаторов действий. • Необходимость повторного создания действия для исправления проблемы. 27:06 Коррекция идентификаторов • Идентификатор действия должен быть задан в модели представления доступных действий. • Проблема с пустым идентификатором действия при клонировании. • Повторное задание идентификатора для решения проблемы. 28:43 Сортировка списка процессов 30:47 Исправление идентификаторов действий 32:30 Сброс идентификатора при добавлении элемента 34:10 Завершение работы
