среда, 1 марта 2017 г.

Расписание на дереве.
Если вы спросите: "Как далеко 'Расписание' ушло от Home Catalog"?
На третьей строке блога, я скажу, что это одна и та же программа.
Более того сгрузите Home Catalog и тренируйтесь на нём.
Потому, что в отличии от 'Расписания' он идёт с пустой поляной.
И вам ничто не будет мешать.
Отработайте создание новых элементов, исправление старых,
перенос, копирование, картинки, поиски.
Делать то же самое в 'Расписании' будет неудобно.
Я сохранил тот граф, что получился во время отладки для того,
чтобы стала понятна постановка задачи.



Завуч создаёт расписание для учителей. 
По его команде, программа пересчитывает расписание для учителей в расписание для классов.


Вывод расписания в таблицы выполняется из окна расписания для учителей.
Потому, что оно главное.
Теперь, сама постановка.
Завучу, чтобы сделать расписание для учителей, надо пройти по 5-и этажам

Предмет
Учитель
День
Час
Класс

Аудитория? Её здесь не будет.
Если в готовом расписании вы поменяли час, хотя бы, в одном месте, 
у вас, по принципу домино, рухнуло всё. 
Если вы поменяли аудиторию-вы не изменили ничего. 
Никто из-за этого не позвонит жене, отменить поход в театр. 
Значит, параметр Аудитория лишний и прочность
этого принципа, лучше не испытывать. 
Потом, когда будет готова Эксель таблица- там ему самое место.

Первая иллюзия: перевернул этажерку завуча-получил расписание для классов.
Ну-ка:
Класс        /* А что? Неплохо.*/
Час           /* Нет. Здесь должен стоять день */
День         /* Здесь должен стоять час */
Учитель      /* Здесь должен стоять предмет */
Предмет      /* Здесь должен стоять учитель */

Одного переворота не хватит, нужна ещё подтасовка.
И из-за неё структура расписания становится негибкой.
Я б сказал, бетонной. 5 ступенек вниз, после головного элемента.
Такая ветка будет расцениваться, как расписание.
Меньше 5-и, больше 5-и, это что-то вспомогательное.
У меня нет другой индикации, потому что предметы, дни, часы, классы вы называете, как хотите-нет никаких стандартов никаких ограничений.

Никакой математики тоже нет.
Всё построено на сортировках.
Поэтому, синоним-это самый страшный зверь.
"Понедельник Чётный", "Чётный Понедельник"-два разных дня.
"1-a","1-а"-два разных класса, один написан по-английски, второй по-русски.
"1 Урок"," Урок 1" два разных часа.
В данной ситуации, я бы посоветовал: всех фигурантов расписания собрать в Чулане и оттуда копировать в расписание.
Так как процедура копирования в Home Catalog, если сравнивать с Эксплорером, то это с точностью наоборот-запоминается место копирования, а не объект копирования. Одно запоминания и вы заполняете, к примеру, день часами за секунды.
Надо, только, немного уменьшить ширину окна, чтоб не таскать мышь через весь стол, сама мышь в правой руке, клавиша F8, в левой и вперёд.
Можно, даже, держать в Чулане готовые обоймы. Я не стал, а вам кто мешает?
Не знаю что лучше, можно применить эволюционный метод-строить ваше расписание поверх моего, удаляя всё, что мешает. А можно революционный.
Скопировать всю библиотеку, стереть tree_map.txt и с чистого листа…
Кто показывает дерево классного расписания ?
Вполне полноценный Home Catalog, правда, tree_map.txt у него не совсем полноценный-всякий раз пересчитывается. Я не мог держать два tree_map.txt в одной и той же библиотеке, поэтому появилась под-библиотека class_chedule .
Держите её в курсе новых картинок: catalog_picture.
Адрес для скачивания: