Обсуждение шаблона:Monument-documents
Добавить темуАльтернативная версия на Lua
[править]Ради интереса переписал этот шаблон на Lua (сам шаблон пока в Участник:Bok/Черновик, а модуль к нему - Модуль:Monument). Получилось, что раскрытых включений получается меньше, число документов не ограничено какой-то константой, но работает немного помедленнее (не уверен, впрочем, что код оптимален, сегодня второй раз в жизни увидел этот язык). Интересно, что будет, если на Lua переписать основной {{monument}}. --Bok (обсуждение) 04:21, 28 октября 2018 (MSK)
- Тут я ничего не могу сказать, но можно попробовать внедрить. --Alexander (обсуждение) 10:40, 28 октября 2018 (MSK)
- Да, можно, хотя можно с этим и не торопиться. Попробую ещё сейчас переписать шаблон {{monument-duplicate}} (как более простой, чем monument) и посмотреть, что получится. По идее, должно быть лучше, потому что это позволяет писать шаблоны более-менее на языке программирования, а не на бесконечных {{#ifexpr:{{{|}}}|{{{|}}}|}}. С другой стороны, тогда шаблон окончательно превратится в код, может быть, это плохо для желающих вносить изменения. На всякий случай ping Алексей. --Bok (обсуждение) 13:25, 28 октября 2018 (MSK)
- Интересное предложение. Однако действительно беспокоит вопрос производительности. Скорее всего на простых шаблонах типа этого и {{monument-duplicate}} lua будет медленнее, а вот у {{monument}} есть потенциал стать шустрее. Надо попробовать. --Алексей (обсуждение) 17:17, 28 октября 2018 (MSK)
- Monument-duplicate я переписал, вот тут используется: Участник:Bok/Черновик2 (это копия страницы Культурное наследие России/Дубли). Действительно медленнее. Этот (Monument-documents) шаблон я бы всё-таки перевёл на версию с Lua, он как раз не так уж и медленнее получается, зато гораздо лучше выглядит, чем перебор 60 параметров. С monument да, надо пробовать, займусь сегодня. --Bok (обсуждение) 17:40, 28 октября 2018 (MSK)
- Добавил функцию monument пока что в тот же модуль, а шаблон пока разместил в Участник:Bok/monument. Код старался сделать максимально похожим на шаблон и о производительности пока не думал, но уже в текущем варианте работает быстрее, на длинных страницах - заметно. Функциональность такая же, кроме пары нюансов: я не до конца понял логику расстановки пробелов между иконками списков (потому сейчас они там расставлены немного рандомно), а в кампанию wlm-crimea файлы отправляются исходя из буквенного кода региона, а не номера фотографии (это можно и поменять).
- Кроме производительности, плюсом, по-моему, является то, что к шаблону можно будет относиться как к программе, его код по-моему уже сейчас достаточно сложный для восприятия, чтобы это было оправдано. С другой стороны, его переход с теоретически понятной всем вики-разметки в менее понятные модули с кодом можно считать и минусом.
- О других шаблонах: Monument-duplicate в реализации через модули получается существенно медленнее, код можно будет на всякий случай сохранить, но внедрять точно не нужно. Monument-documents же, по-моему, можно и перевести, особенно если будем переводить monument. Также я заметил, что немного подтормаживает функция ifexists (её и парсер считает "тяжелой"), но вроде бы это совсем не критично. --Bok (обсуждение) 01:58, 31 октября 2018 (MSK)
- Я в этом мало что понимаю, но если оба Алексея одобрят, стоит, на мой взгляд, внедрять. С пробелами между иконками всё было плохо, нужно исправить. --Alexander (обсуждение) 03:20, 31 октября 2018 (MSK)
- Я всячески одобряю такой подход: шаблон Monument довольно сложный, чтение и модификация его в текущем виде - весьма затруднительная задача, с использованием Lua все становится гораздо проще и понятнее.
- По поводу ifexists - не лучше ли будет явно прописывать документ еще одним параметром (или, как вариант, сделать поле со значениями yes/no)? С одной стороны, это добавит дополнительные действия после загрузки документа. С другой же стороны, во-первых, даже для меня было не очевидно, что надо загружать файл с определенным именем, во-вторых, если прописывать явно, то будет меньше проблем при написании программ, работающих со списками.
- И еще: я не спеша экспериментирую с рендерингом списков на стороне клиента (браузера), возможно в ближайшее время попробую продемонстрировать прототип того, что получается. --AlexeyBaturin (обсуждение) 18:30, 31 октября 2018 (MSK)
- Да, наверное, ничто не мешает сделать отдельный параметр, которому по умолчанию присвоить значение Passport_knid.pdf, чтобы ничего лишний раз не прописывать, но оставить и возможность загружать файлы под другим именем. --Alexander (обсуждение) 18:51, 31 октября 2018 (MSK)
- По-моему неплохо получилось. Одобряю! --Алексей (обсуждение) 20:20, 31 октября 2018 (MSK)
- Я в этом мало что понимаю, но если оба Алексея одобрят, стоит, на мой взгляд, внедрять. С пробелами между иконками всё было плохо, нужно исправить. --Alexander (обсуждение) 03:20, 31 октября 2018 (MSK)
- Monument-duplicate я переписал, вот тут используется: Участник:Bok/Черновик2 (это копия страницы Культурное наследие России/Дубли). Действительно медленнее. Этот (Monument-documents) шаблон я бы всё-таки перевёл на версию с Lua, он как раз не так уж и медленнее получается, зато гораздо лучше выглядит, чем перебор 60 параметров. С monument да, надо пробовать, займусь сегодня. --Bok (обсуждение) 17:40, 28 октября 2018 (MSK)
- Интересное предложение. Однако действительно беспокоит вопрос производительности. Скорее всего на простых шаблонах типа этого и {{monument-duplicate}} lua будет медленнее, а вот у {{monument}} есть потенциал стать шустрее. Надо попробовать. --Алексей (обсуждение) 17:17, 28 октября 2018 (MSK)
- Да, можно, хотя можно с этим и не торопиться. Попробую ещё сейчас переписать шаблон {{monument-duplicate}} (как более простой, чем monument) и посмотреть, что получится. По идее, должно быть лучше, потому что это позволяет писать шаблоны более-менее на языке программирования, а не на бесконечных {{#ifexpr:{{{|}}}|{{{|}}}|}}. С другой стороны, тогда шаблон окончательно превратится в код, может быть, это плохо для желающих вносить изменения. На всякий случай ping Алексей. --Bok (обсуждение) 13:25, 28 октября 2018 (MSK)
Добавлю, что нужна ещё функция "скрыть кнопку загрузки" — для объектов типа "Исторический центр Йошкар-Олы" или "Исторический центр Санкт-Петербурга". Реализовать её можно, например, через параметр status= noupload. Или ввести новый параметр для этих целей. --Alexander (обсуждение) 14:12, 31 октября 2018 (MSK)
- Технически - сделано. Пока через status= noupload, но мне кажется, отдельный параметр лучше. Пример - первый элемент на странице Участник:Bok/st1 (или всё-таки правый столбец надо отделять и писать туда какое-то примечание?). --Bok (обсуждение) 17:06, 31 октября 2018 (MSK)
- Сейчас нормально, мне кажется. --Alexander (обсуждение) 18:19, 31 октября 2018 (MSK)
Собрал и загрузил прототип гаджета, который рендерит на стороне клиента. Если заработает после установки (могут быть проблемы), то можно посмотреть на странице Участник:AlexeyBaturin/TomskListing. Сразу скажу, что прототип чрезвычайно сырой (например, сохранение не работает), только лишь чтобы показать идею и обсудить дальнейшую целесообразность разработки. --AlexeyBaturin (обсуждение) 20:10, 31 октября 2018 (MSK)
- Добавил, но на результат не смотрел — нет сейчас возможности. --Alexander (обсуждение) 22:06, 31 октября 2018 (MSK)
Перенёс в этот шаблон версию на Lua. Ссылка на версию до переноса: [1] --Bok (обсуждение) 04:38, 16 ноября 2018 (MSK)