View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0003610SAS.Планета[All Projects] Хотелкаpublic22-01-2020 15:4801-06-2020 16:44
Reporterzed 
Assigned Tozed 
PrioritynormalSeverityminorReproducibilityhave not tried
StatusresolvedResolutionfixed 
PlatformOSOS Version
Product Version191221 
Target Version200606Fixed in Version200606 
Summary0003610: PascalScript: Добавить функцию получения Url из шаблона
DescriptionВ свежем PR#27 пришли zmp со вспомогательным скриптом, реализующем логику получения url из шаблона:

Someone wrote


Этот скрипт призван упростить добавление новых карт в SasPlanet.
Он избавит начинающих пользователей от необходимости программировать на Pascal,
чтобы вносить изменения в файл GetUrlScript.txt при добавлении каждой новой карты.

Теперь можно просто вставлять привычный URL с заглушками типа {x}, {y}, {z}
в поле DefURLBase из файла params.txt. На пример, так:

DefURLBase=http://{s:a,b,c}.tile.openstreetmap.org/{z}/{x}/{y}.png

Скрипт разрабатывали Nnngrach и Erelen

--- Список доступных параметров для автозамены:

{x} Номер тайла по оси X. (Как в картах OpenStreetMaps)
{y} Номер тайла по оси Y. (Как в картах OpenStreetMaps)
{z} Уровень приближения/зума. (Как в картах OpenStreetMaps)
{q} Номер тайла в системе QuadKey. (Как в картах Bing)
{-y} Инвертированный номер тайла по оси Y. (Как на сайте Nakarte)
{bbox} Координаты границ тайла. (Для WMS серверов)
{timeStamp} Текущее время в формате UnixTime. (Для карт с пробками)
{z+1} Уровень зума. (Для карт, хранящихся в формате SasPlanet)
{x/1024} Номер первой подпапки (Для карт, в формате SasPlanet)
{y/1024} Номер второй подпапки (Для карт, в формате SasPlanet)
{s:a,b,c} Буква или цифра с номером зеркала сервера.
             В данном случае - одна из букв (A,B,C), выбранная рандомно.

Предлагаю добавить в SAS некую функцию "TemplateToUrl" которая будет выполнять все нужные замены и избавит от необходимости таскать этот скрипт в каждом zmp.
TagsNo tags attached.
Attached Filestxt file icon GetUrlScript.txt [^] (7,315 bytes) 22-01-2020 15:49 [Show Content]

- Relationships
related to 0003669resolvedzed В функцию создания url из шаблона, добавить плейсхолдер {sas_path} 

-  Notes
(0019632)
vdemidov (manager)
22-01-2020 17:35

А я бы предложил подумать о том, что бы сделать по какому-то ключу в params.txt создание другого урл-генератора чисто по такому шаблону. Вообще без запуска PascalScript.
(0019633)
zed (manager)
22-01-2020 17:40

Да, я думаю что можно сделать так, что если файла GetUrlScript нету вообще, то генерировать url из этого шаблона. А если файл есть, то просто предоставлять такую функцию (мало ли нужно куки какие обновлять или ещё что).

В коде это будет жить всё в одном месте, но будет заложено вот такое вариативное поведение.
(0019634)
vdemidov (manager)
22-01-2020 17:57

Нормальный вариант. Главное хорошо и непротиворечиво плейсхолдеры продумать. Еще версия нужна и текущий язык (на всякий случай)
(0019635)
nnngrach (reporter)
22-01-2020 21:22

Первые 5 плейсхолдеров (x y z q -y bbox) я брал из LeafLet: по моим наблюдениям, чаще всего используется именно такое написание. Думаю, их лучше оставить как есть.

Следующие 4 придумывал сам (timeStamp, z+1, x/1024, y/1024). Если нужно, то можно переименовывать, если есть идеи, на что именно.

Насчет последнего плейсходера {s:a,b,c}. Я думаю, гораздо удобней и привычней будет использовать вместо него стандартный ЛифЛетовский плейсхолдер {s}. А для ввода значений просто добавить новое поле в Params.txt. Например, такое:

ServerNames=a,b,c
(0019636)
zed (manager)
26-01-2020 09:49

С переменной для языка возник вопрос. В запросах обычно фигурирует такой формат: "en_US", "ru_RU", а у нас же в переменной просто "en" или "ru". Надо делать какое-то сопоставление или что?
(0019637)
zed (manager)
26-01-2020 11:15

Закончил, можно тестировать.

В скрипты добавлена функция

function TemplateToUrl(const ATmpl: string): string;

которая из шаблона генерирует url. Если файла GetUrlScript.txt нету или он пуст (в том числе не содержит ни пробелов, ни переводов строк), происходит автоматическое генерирование url, так, как-будто выполняется вот такой скрипт:

begin
  ResultUrl := TemplateToUrl(GetURLBase);
end.


В качестве параметров для замены доступны все параметры из описания тикета, плюс 2 параметра {lang} и {ver} (язык и версия, соответственно).

Если нужны ещё какие-то параметры, пишите - добавлю.

nnngrach
В комментариях к скрипту я вижу вы столкнулись с тем, что некоторые функции не работают или работают не так как надо - не плохо бы открыть соответствующие тикеты по этому поводу, возможно это можно как-то починить.
(0019638)
nnngrach (reporter)
31-01-2020 15:13
edited on: 31-01-2020 15:14

Работает, спасибо!

Надо теперь не забыть в Wiki про новые теги написать.


- Users who viewed this issue
User List Anonymous (435x), rass (4x), nnngrach (20x), ingener (2x), vdemidov (8x), k-dmitriy (2x), Tolik (3x), zed (22x), Erelen (1x), Garl (1x)
Total Views 498
Last View 27-09-2020 19:42

- Issue History
Date Modified Username Field Change
22-01-2020 15:48 zed New Issue
22-01-2020 15:49 zed File Added: GetUrlScript.txt
22-01-2020 15:50 zed Description Updated View Revisions
22-01-2020 15:55 zed Description Updated View Revisions
22-01-2020 17:35 vdemidov Note Added: 0019632
22-01-2020 17:40 zed Note Added: 0019633
22-01-2020 17:57 vdemidov Note Added: 0019634
22-01-2020 21:22 nnngrach Note Added: 0019635
25-01-2020 12:28 zed Assigned To => zed
25-01-2020 12:28 zed Status new => assigned
25-01-2020 12:28 zed Target Version => 2012xx
26-01-2020 09:49 zed Note Added: 0019636
26-01-2020 11:15 zed Note Added: 0019637
31-01-2020 15:13 nnngrach Note Added: 0019638
31-01-2020 15:14 nnngrach Note Edited: 0019638 View Revisions
01-02-2020 06:07 zed Status assigned => resolved
01-02-2020 06:07 zed Fixed in Version => 2012xx
01-02-2020 06:07 zed Resolution open => fixed
06-05-2020 06:44 zed Relationship added related to 0003669
01-06-2020 16:44 zed Target Version 2012xx => 200606
01-06-2020 16:44 zed Fixed in Version 2012xx => 200606



Copyright © 2007 - 2020 SAS.Planet Team