SASGIS - SAS.Планета
View Issue Details
0002087SAS.Планета[All Projects] Хотелкаpublic13-08-2013 07:1614-04-2020 06:38
vdemidov 
 
normalminorhave not tried
confirmedopen 
121010 
24xxxx 
0002087: Добавить в zmp тип скрипта для получения актуальной версии карты
Это нужно, чтобы можно было делать автообновляемые карты для некоторых сервисов.

Нужно добавить новый файл со скриптом в Zmp, который будет возвращать строку текущей версии, и кнопку в параметры карты, по которой будет выполняться этот скрипт и обновляться версия в параметрах карты.
No tags attached.
related to 0002085closed vdemidov PascalScript: разрешить изменять версию карты из скрипта 
related to 0003652new  Версия карты не сохраняется в базу данных в версионном кеше 
Issue History
13-08-2013 07:16vdemidovNew Issue
13-08-2013 07:16vdemidovStatusnew => assigned
13-08-2013 07:16vdemidovAssigned To => vdemidov
13-08-2013 07:16vdemidovIssue generated from: 0002085
13-08-2013 07:16vdemidovRelationship addedrelated to 0002085
13-08-2013 07:16vdemidovAssigned Tovdemidov =>
13-08-2013 07:17vdemidovStatusassigned => confirmed
13-08-2013 18:29PapazolNote Added: 0012365
13-08-2013 19:45vdemidovNote Added: 0012366
14-08-2013 09:40vasketsovNote Added: 0012372
14-08-2013 09:50vdemidovNote Added: 0012373
14-08-2013 09:57zedNote Added: 0012375
14-08-2013 10:05vdemidovNote Added: 0012376
14-08-2013 10:07zedNote Added: 0012377
14-08-2013 10:13vdemidovNote Added: 0012378
14-08-2013 10:14zedNote Added: 0012379
14-08-2013 10:17vdemidovNote Added: 0012380
14-08-2013 10:23vasketsovNote Added: 0012381
14-08-2013 10:27zedNote Added: 0012382
14-08-2013 10:28vdemidovNote Added: 0012383
14-08-2013 10:31vdemidovNote Added: 0012384
14-08-2013 10:33zedNote Added: 0012385
14-08-2013 10:34vdemidovNote Added: 0012386
14-08-2013 10:38zedNote Added: 0012387
14-08-2013 10:42vdemidovNote Added: 0012389
14-08-2013 10:51vasketsovNote Added: 0012390
14-08-2013 10:54vdemidovNote Added: 0012391
14-08-2013 10:54vasketsovNote Added: 0012392
14-08-2013 11:22vdemidovNote Added: 0012395
14-08-2013 11:43vasketsovNote Added: 0012401
14-08-2013 11:51vdemidovNote Added: 0012404
14-08-2013 12:03vasketsovNote Added: 0012407
14-08-2013 12:10PapazolNote Added: 0012408
14-08-2013 12:19vdemidovNote Added: 0012410
14-08-2013 12:19zedNote Added: 0012411
14-08-2013 15:57PapazolNote Added: 0012412
14-04-2020 06:38zedRelationship addedrelated to 0003652

Notes
(0012365)
Papazol   
13-08-2013 18:29   
А если нужно качнуть предыдущую версию?
(0012366)
vdemidov   
13-08-2013 19:45   
Просто укажет вручную эту версию и не будет нажимать кнопочку "Получить актуальную версию"
(0012372)
vasketsov   
14-08-2013 09:40   
Необходимо будет решить ещё казус с тем, что одна версия используется как для закачки, так и для отображения карты. Получение актуальной версии должно влиять на версию для закачки. Тогда как версия для отображения карты по результатам обновления версии для закачки обновляться не должна (глупо смотреть на пустую карту, не говоря уже о возможности переключить версию и работать с нужной, пока качается новое*, и чтобы автообновление не пыжилось и автопроверка не долбила). Сохранять в zmp достаточно одну (для отображения), версию для закачки достаточно сохранять только в maps.ini, а при чтении параметров соответственно если второй нет - инициализировать значением первой.
--------
*) это не то же самое, что фиксирование версии закачки в начале закачки, это скорее инициализация версии закачки не по версии отображения карты, а по версии закачки карты.
(0012373)
vdemidov   
14-08-2013 09:50   
Ну вполне возможно, что стоит разделить версию для закачки и активную для сохранения. Я уже думал об этом. Плюс, возможно,дополнить какой-то настройкой типа "Использовать ту же версию для закачки, что и для сохранения"
(0012375)
zed   
14-08-2013 09:57   
> для сохранения
При чём тут "сохранение"? Речь же про закачку и отображение (чтение из кэша для вывода на экран).
(0012376)
vdemidov   
14-08-2013 10:05   
Ну, отображение и сохранение это одна версия, а построение запросов на закачку другая.
(0012377)
zed   
14-08-2013 10:07   
Ничего подобного. Сохраняет тайлы качалка, у которой должна быть своя версия.
(0012378)
vdemidov   
14-08-2013 10:13   
Ну а сохранять должно в ту что активна для отображения и сохранения. Иначе будет еще хуже чем сейчас: качалка чего-то качает, а в видимой области тайлов не появляется.
(0012379)
zed   
14-08-2013 10:14   
Ты хочешь принудительно изменять версию у скачанных тайлов на ту, что выбрал пользователь для отображения? Да это же БРЕД!!!
(0012380)
vdemidov   
14-08-2013 10:17   
С чего бы это, например я хочу что бы у меня в тайлохранилище версии были по дате появления, поэтому я ставлю для отображения и сохранения версию "20130814", а для закачки ставлю версию которую хочет получить гугл "134". Что тут бредового?
(0012381)
vasketsov   
14-08-2013 10:23   
>отображение и сохранение это одна версия
Значит уже 3 разных версии )))))).
Потому что у меня например версия тайла при сохранении та, что прилетела из качалки (не всегда = версии для отображения).

>версии были по дате появления
Вообще говоря странное желание... а если несколько разных версий будут в течение одного дня? Например, если картосервис поддерживает прямое указание версии для закачки (гугл или dg) - разные тайлы разных реальных версий будут падать в одну версию 20130814?
зы. Кстати, сейчас такое возможно, но только фактически если Version не участвует в построении запроса.
(0012382)
zed   
14-08-2013 10:27   
>Что тут бредового?
А то, что у тебя в кэше может получиться смесь из разных версий, которые буду значится как-будто это одна версия. И причём ты это хочешь сделать дефолтным поведением (а если версия для отображения = версии для сохранения то так и будет). Это плохое поведение. И если уж по какой-то причине тебе нужно такое получить, то делать это надо через ручную смену версии в кэше (через операцию с выделенной областью, к примеру), но ни коим образом, не делать такое поведение дефолтным!
(0012383)
vdemidov   
14-08-2013 10:28   
А третья зачем? Одна для генерации урлов, другая для отображения и сохранения. Плюс, возможно, при закачке добавить поле с версией в которую сохранять скачанные тайлы.
(0012384)
vdemidov   
14-08-2013 10:31   
>А то, что у тебя в кэше может получиться смесь из разных версий, которые буду значится как-будто это одна версия.
95% пользователей и мне в том числе глубоко пофиг на это. Им нужно видеть свежую версию без лишней мороки.
(0012385)
zed   
14-08-2013 10:33   
>А третья зачем? Одна для генерации урлов, другая для отображения и сохранения.
1. Генерация url
2. Отображение
3. Сохранение

Причём, по дефолту, версия 3 должна получаться из 1, чтобы тайлы сохранялись под той версией, что загрузились, если пользователь не указал иного.
(0012386)
vdemidov   
14-08-2013 10:34   
Ну еще альтернативный вариант сделать отдельно версию для отображения и если там заданно что-то не совпадающее с версией для закачки и не пустая строка, то вообще отключать закачку.
(0012387)
zed   
14-08-2013 10:38   
>Им нужно видеть свежую версию без лишней мороки.
Это в тикет 0002085 - решается "адским костылём", без извращений с тремя версиями сохранения/отображение/генерации.

>то вообще отключать закачку
Ещё лучше. Каким боком вообще отображение к закачке? Это же независимые задачи.
(0012389)
vdemidov   
14-08-2013 10:42   
>Это в тикет 0002085 - решается "адским костылём", без извращений с тремя версиями сохранения/отображение/генерации.
Это решается простым скриптом получения версии без всяких костылей. Три версии это твоя идея.

>>то вообще отключать закачку
>Ещё лучше. Каким боком вообще отображение к закачке? Это же независимые задачи.
Речь про закачку видимой области, а что закачивать если стоит версия для загрузки "134", а для отображения "100"? А если что-то закачивать, то в какую версию сохранять?
(0012390)
vasketsov   
14-08-2013 10:51   
>А третья зачем? Одна для генерации урлов, другая для отображения и сохранения
Ну, это же тебе зачем-то отдельная версия для сохранения понадобилась, или какой то признак, сохранять с версией для отображения или с оригинальной версией при закачке? )))

Мне достаточно 2 версии:
1. Для просмотра карты, построения карты заполнения, выполнения всех прочих операций, кроме закачки (разве что возможно надо потайловую скачку по Insert+Click тоже инициализировать этой версией).
2. Версия для инициализации версии закачки (которая потому будет использована для сохранения закаченного тайла в тайлохранилище), возможно кроме инициализации потайловой скачки по Insert+Click.

И я реально не понимаю, каким образом версия тайла, заданная в момент начала закачки, на основании которой (и всех прочих фиксированных параметров), может зависеть от того, что после начала скачки мы передёрнули версию карты, чтобы поглядеть другой участок. Для этого и делалась фиксация версии в момента начала выполнения операции с выделенной областью, чтобы не иметь таких неопределённостей, как переход через 00:00:00 часов или смена версии для просмотра карты в гуе.

>сделать отдельно версию для отображения и если там заданно что-то не совпадающее с версией для закачки и не пустая строка, то вообще отключать закачку
НИ в коем случае такое нельзя делать. Ибо некоторые картосервисы понимают указание версии в УРЛе и скачку любоу версии, а смотреть можно в это время что угодно из старого или нового.
(0012391)
vdemidov   
14-08-2013 10:54   
Еще раз подчеркиваю что речь про закачку видимой области. При закачке по области отдельным потоком, просто фиксировать версию для угла и для сохранения, по-умолчанию одинаковые.
(0012392)
vasketsov   
14-08-2013 10:54   
>Речь про закачку видимой области
Всё что касается видимой области (OneTileUI, закачка на лету и т.п.) - надо инициализировать первой версией (для отображения). Закачки по выделенной области - второй версией.

>если стоит версия для загрузки "134", а для отображения "100"?
Значит 100 и ССЗБ.

>если что-то закачивать, то в какую версию сохранять
В версию, которая запрашивалась при закачке (ну или вернулас после закачки, если версия может определяться по скачанному тайлу).
(0012395)
vdemidov   
14-08-2013 11:22   
>Всё что касается видимой области (OneTileUI, закачка на лету и т.п.) - надо инициализировать первой версией (для отображения). Закачки по выделенной области - второй версией.
Зачем тогда вообще вторая версия? Достаточно добавить настройку в форму запуска закачки по выделенной области.
(0012401)
vasketsov   
14-08-2013 11:43   
>Зачем тогда вообще вторая версия?
Потому что именно её надо обновлять при проверке наличия новых версий. Ибо изначально новые версии предполагается скачивать.

>Достаточно добавить настройку в форму запуска закачки по выделенной области
Если мы говорим про автообновлялку версии картосервиса, то недостаточно. Или ты предлагаешь при каждом показе формы закачки по области выполнять проверку наличия обновлений и инициализировать это поле полученным значением?

Вся соль - в том, на основании чего инициализируется версия закачки. Если ты предлагаешь брать эту версию из поля в форме, то вопрос просто переформулируется: на основании чего инциализировать это поле )))

Я уже попытался описать, как представляю себе это. Что конкретно тебя в этом не устривает?
1. Две версии (условно, Version и DownloaderVersion).
2. Сохранение всегда с той версией, которая использовалась для закачки (с учётом возможного определения версии по тайлу или прочему ответу сервера).
3. Автообновлялка версий работает по DownloaderVersion. Синхронизация значения Version опциональная. Опционально автообновлялка работает по max(Version, DownloaderVersion), если версии сравнимы (операция max имеет смысл), или по паре версий Version и DownloaderVersion, если версии не сравнимы.
4. Закачка по области выделения инициализируется значением DownloaderVersion (через поле в форме или напрямую - неважно, через поле наверное даже веселее будет).
5. Закачка на основании видимого экрана (автозасос или пальцем по тайлу) инициализируется значением Version.
(0012404)
vdemidov   
14-08-2013 11:51   
В первую очередь автообновление нужно именно для отображаемой версии, а уже настройка в форме запуска закачки по области инициализируется отображаемой версией по-умолчанию. Ибо чаще всего скачать нужно именно ту версию что сейчас смотришь.
(0012407)
vasketsov   
14-08-2013 12:03   
>автообновление нужно именно для отображаемой версии
Чтобы показать пустую карту?
Чтобы спросить юзера "переключить карту на новую версию N+1" и при ответе "да" слить ему экран тайлов (возможно даже не изменившихся, потому что изменений по стране нет), а при ответе "нет", например, больше об этом не напомнить, но залить экран старой версией и новыми тайлами, потому что картосервис всё равно отдаст версию N+1? Ну неудобное же.

>чаще всего скачать нужно именно ту версию что сейчас смотришь
Это очень странное предположение, которое означает, что скачиваемое смотрится только один раз. У меня ровно обратная статистика: я смотрю давно скачанное много раз, при этом качаю новое. И хотелось бы качать новое (и возможно даже проверять обновления версии картосервиса) независимо от того, какую старую версию я разглядываю. И я реально не понимаю, какое отношение имеет разглядываемая (не обязательно новая) версия к закачке нового по новой версии.

Если исходить из того, что по умолчанию сас работает в режиме автоскачки, то конечно можно сделать по умолчанию и автосинхронизацию Version по DownloaderVersion. Но вообще говоря это будет неудобно, если работа касается и старых версий, так как при работе с конкретной областью карты придётся отключать автообновлялку. Хотя казалось бы оснований для такого отключения нет.
(0012408)
Papazol   
14-08-2013 12:10   
На мой дилетантский взгляд, можно было бы просто сделать проверку текущей версии, наподобие наличия снимков в данном месте. А с полученным значением пользователь волен поступать как хочет: может скопировать в URL, может забить. На худой конец, можно при несовпадении номера версии в zmp (или в maps.ini) с полученным свежайшим выдавать сообщение об этом факте. И больше ничего не делать!
(0012410)
vdemidov   
14-08-2013 12:19   
Именно это я и предлагаю. Просто кнопка в параметрах карты рядом с полем версия, которая получит актуальную версию и предложит установить ее в качестве текущей.
(0012411)
zed   
14-08-2013 12:19   
>И больше ничего не делать!
И чего вы так переживаете, что вам насильно кто-то будет что-то там менять.
(0012412)
Papazol   
14-08-2013 15:57   
Как же не переживать? Если некоторые функции программы, которыми я не пользуюсь совсем, я даже и не пытаюсь изучать, то сабж - одна из основополагающих вещей, без неё вообще кранты. Особенно остро вопрос стоит при использовании версионного кэша. Так как для каждой версии (в смысле в хранилище) нужно не забывать подставлять нужный номер в URL, если нужно и можно что-то скачать. Тут никакая автоматика не годится. Вот если бы при переходе на другую версию хранилища URL менялся в соответствии с указанным при создании этой версии - было бы хорошо. Но это несколько другая хотелка.