Участник:Vcohen/Шаблоны схем метро: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Содержимое удалено Содержимое добавлено
Нет описания правки
 
(не показано 11 промежуточных версий 2 участников)
Строка 1: Строка 1:
== Пояснения ==
Вот [[:Категория:Шаблоны:Схемы метро|категория]] с шаблонами.

=== Описание синтаксиса шаблонов ===
* SM pic - рисует элемент линии или переход между станциями ''(когда две разных станции связаны переходом)'' и принимает параметры:
** 1 - цвет (по умолчанию черный)
** 2 - конфигурация - возможные варианты соответствуют [[commons:Category:Icons for subway maps|списку существующих файлов]], например файлу SMicon S-X.png соответствует значение параметра S-X; не рекомендуется использовать значения O и X, потому что для этих двух файлов есть более развитые шаблоны SM dot и SM cross соответственно
* SM dot - рисует кружок, обозначающий станцию ''(одна станция может обслуживать несколько линий)'' и раскрашенный горизонтальными полосками в разные цвета, и принимает параметры:
** 1..5 - до 5 цветов
** link - название статьи, на которую этот кружок должен служить линком (рекомендуется делать линки и здесь, и через текст, см. ниже, либо только через текст); если это текущая статья, то вокруг кружка будет нарисован черный контур
** type - разновидность кружка (продолжение имени файла после буквы O, по умолчанию самый простой кружок без продолжения имени)
** title - текст всплывающей подсказки
* SM dotv - точно как SM dot, но полоски не горизонтальные, а вертикальные
* SM cross - изображает пересечение двух линий и принимает параметры:
** 1 - цвет "задней" линии
** 2 - идет ли "передняя" линия вертикально или горизонтально (буква V или H)
** 3 - цвет "передней" линии
** type - разновидность пересечения (продолжение имени файла после буквы X, по умолчанию самое простое пересечение без продолжения имени)
* SM text - изображает текст и принимает параметры:
** 1 - цвет текста
** 2 - сам текст
** 3 - выравнивание текста - left (по умолчанию) или right
** 4 - ширина ячейки в пикселях и т.п., например 100px (как правило можно не задавать)
** link - название статьи, на которую этот текст должен служить линком
** td - дополнительное форматирование для ячейки таблицы, которую строит шаблон, например colspan=3
* SM empty - создает пустую клетку таблицы и принимает один параметр:
** 1 - ширина клетки в столбцах (для HTML-параметра colspan). Если параметр не задан, шаблон не возвращает ничего; даже значение 1 надо задавать явно; это требуется для корректной работы шаблона при его вызове из SM smart
* SM smart - соединяет в себе SM dot, SM text и SM empty, изображая станцию и подпись при ней, и принимает параметры:
** 1..5 - до 5 цветов (если цвет всего один, то им же пишется и подпись; если больше, то подпись пишется черным)
** link - название статьи, на которую строится линк; линк появляется и у кружка, и у подписи
** text - текст подписи; подпись строится поверх таблицы и не занимает отдельных клеток; для отмены текста надо задать параметр side=none; тот же текст появляется и в качестве всплывающей подсказки
** type - разновидность кружка
** side - с какой стороны от кружка находится текст - right (по умолчанию), left или none
** X - смещение подписи вправо в столбцах при side=right или влево при side=left (начальное положение 10 пикселей от кружка до ближайшего конца подписи)
** Y - смещение подписи вниз в строках (может быть отрицательным; начальное положение подписи в одной строке с кружком)
** dir - можно поставить значение v, чтобы полоски у кружка шли по вертикали
* SM head - предназначен для первой строки таблицы. Рисует клетки, задающие форматирование для всех последующих строк. Поддерживает до 10 клеток; если нужно больше, то надо поставить этот шаблон несколько раз подряд. Шаблон принимает один параметр:
** 1 - количество клеток (по умолчанию 10)
* SM before - ставится в самом начале схемы, когда она оформляется как отдельный шаблон, и принимает параметры:
** 1 - продолжение текста заголовка после слова "Станции" (например: "Московского метрополитена")
** 2 - CSS style для внешнего div'а шаблона
** 3 - CSS style для таблицы, образующей собственно схему
* SM after - ставится в самом конце схемы, когда она оформляется как отдельный шаблон
* SM call - вызывает одну из схем, построенных при помощи вышеописанных шаблонов, и принимает параметры:
** 1 - название шаблона со схемой
** side - left или (по умолчанию) right, с какой стороны страницы должен быть показан шаблон

=== Все файлы ===

{| class="wikitable" style="background-color:lightblue;"
|-
|станция с остановкой на всех путях;<br>станция со сквозными путями;<br>обозначение текущей станции;<br>ссылка на статью, но не про станцию
|[[File:SMicon O.svg]] '''O'''
|[[File:SMicon OO.svg]] '''OO'''
|[[File:SMicon Cur.svg]] '''Cur'''
|[[File:SMicon OQ.svg]] '''OQ'''
|-
|прямой участок линии, пересечение линий
|[[File:SMicon NS.svg]] '''NS'''
|[[File:SMicon WE.svg]] '''WE'''
|[[File:SMicon X.svg]] '''X'''
|
|-
|изогнутый участок линии
|[[File:SMicon NE.svg]] '''NE'''
|[[File:SMicon SE.svg]] '''SE'''
|[[File:SMicon SW.svg]] '''SW'''
|[[File:SMicon NW.svg]] '''NW'''
|-
|Т-образный перекресток
|[[File:SMicon 3-N.svg]] '''3-N'''
|[[File:SMicon 3-E.svg]] '''3-E'''
|[[File:SMicon 3-S.svg]] '''3-S'''
|[[File:SMicon 3-W.svg]] '''3-W'''
|-
|развилка на 3 направления
|[[File:SMicon N-X.svg]] '''N-X'''
|[[File:SMicon E-X.svg]] '''E-X'''
|[[File:SMicon S-X.svg]] '''S-X'''
|[[File:SMicon W-X.svg]] '''W-X'''
|-
|развилка налево и направо
|[[File:SMicon N-WE.svg]] '''N-WE'''
|[[File:SMicon E-NS.svg]] '''E-NS'''
|[[File:SMicon S-WE.svg]] '''S-WE'''
|[[File:SMicon W-NS.svg]] '''W-NS'''
|-
|развилка прямо и налево
|[[File:SMicon N-SE.svg]] '''N-SE'''
|[[File:SMicon E-WS.svg]] '''E-WS'''
|[[File:SMicon S-NW.svg]] '''S-NW'''
|[[File:SMicon W-EN.svg]] '''W-EN'''
|-
|развилка прямо и направо
|[[File:SMicon N-SW.svg]] '''N-SW'''
|[[File:SMicon E-WN.svg]] '''E-WN'''
|[[File:SMicon S-NE.svg]] '''S-NE'''
|[[File:SMicon W-ES.svg]] '''W-ES'''
|-
|прямой переход
|[[File:SMicon T-WE.svg]] '''T-WE'''
|[[File:SMicon T-NS.svg]] '''T-NS'''
|
|
|-
|изогнутый переход
|[[File:SMicon T-NE.svg]] '''T-NE'''
|[[File:SMicon T-SE.svg]] '''T-SE'''
|[[File:SMicon T-SW.svg]] '''T-SW'''
|[[File:SMicon T-NW.svg]] '''T-NW'''
|}
<!--
А это файлы, которые скорее всего использоваться не будут. Конфигурации путей слишком разнообразны, поэтому сами пути придется обозначать без различения экспрессов и обычных, а единственным обозначением наличия экспресс-поездов будет станция с точкой внутри (файл OO).

{| class="wikitable"
|-
|станция со сквозными путями
|[[File:SMicon O-NE.png]] (O-NE)
|[[File:SMicon O-SE.png]] (O-SE)
|[[File:SMicon O-SW.png]] (O-SW)
|[[File:SMicon O-NW.png]] (O-NW)
|[[File:SMicon O-WE.png]] (O-WE)
|[[File:SMicon O-NS.png]] (O-NS)
|-
|участок линии с экспресс-путями
|[[File:SMicon L-NE.png]] (L-NE)
|[[File:SMicon L-SE.png]] (L-SE)
|[[File:SMicon L-SW.png]] (L-SW)
|[[File:SMicon L-NW.png]] (L-NW)
|[[File:SMicon L-NS.png]] (L-NS)
|[[File:SMicon L-WE.png]] (L-WE)
|-
|разные сочетания с экспресс-путями
|[[File:SMicon XX.png]] (XX)
|[[File:SMicon XH.png]] (XH)
|[[File:SMicon XV.png]] (XV)
|
|
|
|}
-->

=== Примечания ===
# Эта серия шаблонов принимает описание цвета через параметры, в самих файлах нет никаких цветов, кроме белого цвета, который воспринимается как фон схемы. Поэтому есть возможность строить схемы для любых городов с любыми цветами, даже если код цвета в свою очередь задается через шаблон. Платой за эту гибкость служит необходимость включить распечатку фона при распечатывании схем, построенных таким образом.
# Следует не путать пересадочную станцию, обозначаемую полосатым кружком, и две станции с переходом между ними. При этом для пересадочного узла, состоящего из нескольких соединенных станций, не обязательно показывать, какая станция с какой соединена и какая с какой нет, - достаточно произвольным образом связать все нужные станции между собой.
# Каждый из шаблонов образует ячейку таблицы, начиная с символа |. Начало таблицы (и еще кое-что) создается шаблоном SM before, а конец (и еще кое-что) шаблоном SM after. Схема состоит из шаблонов в следующем порядке:
#* SM before
#* SM head нужное число раз в соответствии с шириной таблицы
#* строки таблицы, начинающиеся с |- каждая
#* SM after
# Для схемы с надписями: если ячейка образована шаблоном SM text без текста, то можно внутрь ее (просто следующими строчками под этим шаблоном) вставить вложенную таблицу, образованную по тем же правилам.

== Примеры ==
== Примеры ==


Строка 980: Строка 828:
|
|
=== SIR ===
=== SIR ===
{{Nav SIR}}
{{Участник:Vcohen/Nav SIR}}
|
|
=== PATH ===
=== PATH ===
{{Nav PATH}}
{{Участник:Vcohen/Nav PATH}}
|
|
=== AirTrain JFK ===
=== AirTrain JFK ===
{{Nav AirTrain JFK}}
{{Участник:Vcohen/Nav AirTrain JFK}}
|}
|}


Строка 994: Строка 842:
{| class="wikitable"
{| class="wikitable"
|- valign=top
|- valign=top
|{{tl|Nav Московский метрополитен}}
|[[Участник:Vcohen/Nav Московский метрополитен]]
|{{tl|Nav Петербургский метрополитен}}
|[[Участник:Vcohen/Nav Петербургский метрополитен]]
|-
|-
|colspan="2"|
|colspan="2"|
{{tl|Nav Нью-Йоркский метрополитен}} (исходный автор [[User:Kononenko Alex|Kononenko Alex]])
[[Участник:Vcohen/Nav Нью-Йоркский метрополитен]] (исходный автор [[User:Kononenko Alex|Kononenko Alex]])
|}
|}


Строка 1009: Строка 857:


=== Пока не сделано ===
=== Пока не сделано ===
* Показать названия на том варианте схемы, где их нет. {{done}} и отменено, надпись показывается только при поиске в браузере, но пока с проблемами...
* Показать названия на том варианте схемы, где их нет. Пока не получается, технические подробности [http://www.sql.ru/forum/1096221 здесь].
* Придумать более внятное обозначение для текущей станции. {{done}} частично - кроме черного контура сделано несколько разных плюс возможность указать в шаблоне, какой из них использовать для данной станции.
* Придумать более внятное обозначение для текущей станции. Сделано частично - кроме черного контура сделано несколько разных плюс возможность указать в шаблоне, какой из них использовать для данной станции.
* Приспособить к мобильным устройствам (пока что [http://www.sql.ru/forum/1130936 прогресса мало]).


=== Не сделано и скорее всего не будет ===
=== Не сделано и скорее всего не будет ===
* Оптимизировать код. Сейчас на примере схемы Москвы получается примерно 200K на примерно 200 ссылок, т.е. 1K на станцию, и это надо уменьшить на порядок.
* Оптимизировать код. Сейчас на примере схемы Москвы получается примерно 200K на примерно 200 ссылок, т.е. 1K на станцию, и это надо уменьшить.
:* Во-первых, это вряд ли возможно. Один кружочек со ссылкой на статью в результирующем HTML'е выглядит так:
:* Во-первых, это вряд ли возможно. Один кружочек со ссылкой на статью в результирующем HTML'е выглядит так:
&lt;a href="/ruwiki/wiki/<span style="color:red;">%D0%9A%D1%80%D1%8B%D0%BB%D0%B0%D1%82%D1%81%D0%BA%D0%BE%D0%B5_</span>
&lt;a href="/ruwiki/wiki/<span style="color:green;">%D0%9A%D1%80%D1%8B%D0%BB%D0%B0%D1%82%D1%81%D0%BA%D0%BE%D0%B5_</span>
<span style="color:red;">(%D1%81%D1%82%D0%B0%D0%BD%D1%86%D0%B8%D1%8F_%D0%BC%D0%B5%D1%82%D1%80%D0%BE)</span>" title="Крылатское"&gt;&lt;img alt=""
<span style="color:green;">(%D1%81%D1%82%D0%B0%D0%BD%D1%86%D0%B8%D1%8F_%D0%BC%D0%B5%D1%82%D1%80%D0%BE)</span>" title="Крылатское"&gt;&lt;img alt=""
src="<span style="color:red;">/upwiki/wikipedia/commons/thumb/9/97/SMicon_O.svg/20px-SMicon_O.svg.png</span>" width="20" height="20"
src="<span style="color:red;">/upwiki/wikipedia/commons/thumb/9/97/SMicon_O.svg/20px-SMicon_O.svg.png</span>" width="20" height="20"
srcset="<span style="color:red;">/upwiki/wikipedia/commons/thumb/9/97/SMicon_O.svg/30px-SMicon_O.svg.png</span> 1.5x,
srcset="<span style="color:red;">/upwiki/wikipedia/commons/thumb/9/97/SMicon_O.svg/30px-SMicon_O.svg.png</span> 1.5x,
<span style="color:red;">/upwiki/wikipedia/commons/thumb/9/97/SMicon_O.svg/40px-SMicon_O.svg.png</span> 2x" /&gt;&lt;/a&gt;
<span style="color:red;">/upwiki/wikipedia/commons/thumb/9/97/SMicon_O.svg/40px-SMicon_O.svg.png</span> 2x" /&gt;&lt;/a&gt;
:: Здесь первый выделенный кусок текста является ссылкой на статью, а три следующих ссылками на три версии графического файла. Всё генерится автоматически, и это уже 0,5K, и уменьшить это нельзя.
:: Здесь выделенное зеленым является ссылкой на статью, а выделенное красным ссылками на три версии графического файла. Всё генерится автоматически, и это уже 0,5K, т.е. на одни только кружочки уходит 100K, - а ведь еще есть линии между кружочками, переходы и т.д.
:* Во-вторых, я не уверен, что это является проблемой.
:* Во-вторых, я не уверен, что это является проблемой.
::* Во-вторых-первых, обнаружилась [[:Категория:Страницы, для которых превышен допустимый размер включаемых шаблонов]]. В нее входят некоторые страницы, на которых расположены схемы, построенные на основе BSicons (а именно: [[Википедия:Шаблоны/Навигационные/Метро]], [[Участник:Mor/Метрошаблоны]], [[Большое кольцо Московской железной дороги]]). А эта страница в нее не входит, хотя здесь суммарное количество станций гораздо больше, чем там.
::* Во-вторых-первых, обнаружилась [[:Категория:Страницы, для которых превышен допустимый размер включаемых шаблонов]]. В нее входят некоторые страницы, на которых расположены схемы, построенные на основе BSicons (а именно: [[Википедия:Шаблоны/Навигационные/Метро]], [[Большое кольцо Московской железной дороги]]). А эта страница в нее не входит (и не входила, когда прямо на ней сидели несколько схем, включая рекордную по размеру схему Нью-Йорка), хотя здесь суммарное количество станций гораздо больше, чем там.
::* Во-вторых-вторых, схема Московского метро, которая стоит в статье (причем не сам файл, а всего лишь превьюшка, на которой не то что кликнуть по конкретной станции, даже разглядеть ничего нельзя) весит 74K. Поэтому полагаю, что 200K для полноценной интерактивной схемы очень даже немного.
::* Во-вторых-вторых, схема Московского метро, которая стоит в статье (причем не сам файл, а всего лишь превьюшка, на которой не то что кликнуть по конкретной станции, даже разглядеть ничего нельзя), весит 74K. Поэтому полагаю, что 200K для полноценной интерактивной схемы очень даже немного.

Текущая версия от 17:42, 14 апреля 2020

Абстрактная проба пера

[править | править код]

Центр Минска

[править | править код]

Центр Санкт-Петербурга

[править | править код]

Схемы с подписями

[править | править код]

Схемы без подписей

[править | править код]

(но каждый кружок - линк на статью)

Участник:Vcohen/Nav Московский метрополитен Участник:Vcohen/Nav Петербургский метрополитен

Участник:Vcohen/Nav Нью-Йоркский метрополитен (исходный автор Kononenko Alex)

Что надо доделать

[править | править код]
  • Заменить вычисление надписи на ее прямую передачу через параметр. Функции работы со строками едят ресурсы. ✔ Сделано, заодно на схеме Нью-Йорка добавлены к надписям обозначения маршрутов
  • Перевести файлы в svg и заменить фон на белый. ✔ Сделано, большое спасибо Hellerick
  • Привести все цвета линий к стандартным. ✔ Сделано

Пока не сделано

[править | править код]
  • Показать названия на том варианте схемы, где их нет. Пока не получается, технические подробности здесь.
  • Придумать более внятное обозначение для текущей станции. Сделано частично - кроме черного контура сделано несколько разных плюс возможность указать в шаблоне, какой из них использовать для данной станции.
  • Приспособить к мобильным устройствам (пока что прогресса мало).

Не сделано и скорее всего не будет

[править | править код]
  • Оптимизировать код. Сейчас на примере схемы Москвы получается примерно 200K на примерно 200 ссылок, т.е. 1K на станцию, и это надо уменьшить.
  • Во-первых, это вряд ли возможно. Один кружочек со ссылкой на статью в результирующем HTML'е выглядит так:
<a href="/ruwiki/wiki/%D0%9A%D1%80%D1%8B%D0%BB%D0%B0%D1%82%D1%81%D0%BA%D0%BE%D0%B5_
(%D1%81%D1%82%D0%B0%D0%BD%D1%86%D0%B8%D1%8F_%D0%BC%D0%B5%D1%82%D1%80%D0%BE)" title="Крылатское"><img alt=""
src="/upwiki/wikipedia/commons/thumb/9/97/SMicon_O.svg/20px-SMicon_O.svg.png" width="20" height="20"
srcset="/upwiki/wikipedia/commons/thumb/9/97/SMicon_O.svg/30px-SMicon_O.svg.png 1.5x,
/upwiki/wikipedia/commons/thumb/9/97/SMicon_O.svg/40px-SMicon_O.svg.png 2x" /></a>
Здесь выделенное зеленым является ссылкой на статью, а выделенное красным ссылками на три версии графического файла. Всё генерится автоматически, и это уже 0,5K, т.е. на одни только кружочки уходит 100K, - а ведь еще есть линии между кружочками, переходы и т.д.
  • Во-вторых, я не уверен, что это является проблемой.