SASGIS - SAS.Планета
View Issue Details
0000503SAS.Планета[All Projects] Хотелкаpublic20-03-2011 19:0901-10-2013 10:24
Tolik 
Garl 
normalfeatureN/A
resolvedfixed 
121010 
131111131111 
0000503: Добавить меню карт второго уровня
Т.к. карт становится всё больше с каждым днём, назрела необходимость группировать их в 2-уровневое меню. Например, Карты - Локальные - ДубльГис.

Параметры можно назвать, например, так:
ParentSubMenu=Локальные
ParentSubSubMenu=ДубльГис
zmp
Issue History
20-03-2011 19:09TolikNew Issue
20-03-2011 22:25gpsMaxTag Attached: zmp
21-03-2011 09:28GarlNote Added: 0001323
21-03-2011 14:42feyaNote Added: 0001326
21-03-2011 15:02vdemidovNote Added: 0001327
21-03-2011 15:06feyaNote Added: 0001328
21-03-2011 15:16vdemidovNote Added: 0001329
21-03-2011 15:31vdemidovNote Added: 0001330
21-03-2011 16:46TolikNote Added: 0001331
21-03-2011 17:00vdemidovNote Added: 0001332
21-03-2011 19:02feyaNote Added: 0001333
21-03-2011 19:31TolikNote Added: 0001335
21-03-2011 19:44TolikNote Added: 0001336
21-03-2011 19:51TolikNote Edited: 0001335bug_revision_view_page.php?bugnote_id=1335#r377
21-03-2011 19:53TolikNote Edited: 0001335bug_revision_view_page.php?bugnote_id=1335#r378
21-03-2011 20:33vdemidovNote Added: 0001338
21-03-2011 21:07TolikNote Added: 0001339
21-03-2011 21:20vdemidovNote Added: 0001340
22-03-2011 05:38GarlNote Added: 0001341
22-03-2011 06:11TolikNote Added: 0001342
22-03-2011 06:56feyaNote Added: 0001343
22-03-2011 08:19GarlNote Added: 0001346
22-03-2011 08:26vdemidovNote Added: 0001347
22-03-2011 08:26TolikNote Added: 0001348
22-03-2011 08:28TolikNote Added: 0001349
22-03-2011 08:33TolikNote Added: 0001350
22-03-2011 08:34TolikNote Edited: 0001350bug_revision_view_page.php?bugnote_id=1350#r380
22-03-2011 08:36TolikNote Edited: 0001350bug_revision_view_page.php?bugnote_id=1350#r381
22-03-2011 11:00vdemidovNote Added: 0001351
22-03-2011 11:06GarlNote Added: 0001352
22-03-2011 12:37feyaNote Added: 0001356
22-03-2011 12:38TolikNote Added: 0001357
22-03-2011 12:44GarlNote Added: 0001358
22-03-2011 12:58vdemidovNote Added: 0001359
22-03-2011 15:33TolikNote Added: 0001360
22-03-2011 15:44vdemidovNote Added: 0001361
22-03-2011 15:49GarlNote Added: 0001362
22-03-2011 19:47feyaNote Added: 0001363
22-03-2011 20:26vdemidovNote Added: 0001365
23-03-2011 05:11GarlNote Added: 0001366
23-03-2011 08:38feyaNote Added: 0001368
23-03-2011 09:04GarlNote Added: 0001369
13-04-2011 08:20TolikStatusnew => acknowledged
09-09-2011 20:07vdemidovNote Added: 0003824
09-09-2011 20:07vdemidovStatusacknowledged => confirmed
09-09-2011 20:08vdemidovTarget Version => 22xxxx
12-09-2011 04:45zOnNote Added: 0003866
12-09-2011 04:52TolikNote Added: 0003868
12-09-2011 04:55zOnNote Added: 0003869
12-09-2011 05:04TolikNote Added: 0003872
12-09-2011 05:05zOnNote Added: 0003874
01-10-2013 10:14GarlNote Added: 0013012
01-10-2013 10:15GarlAssigned To => Garl
01-10-2013 10:15GarlStatusconfirmed => resolved
01-10-2013 10:15GarlResolutionopen => fixed
01-10-2013 10:15GarlProduct Version110316.Alfa => 131111
01-10-2013 10:15GarlFixed in Version => 131111
01-10-2013 10:15GarlTarget Version22xxxx => 131111
01-10-2013 10:23vdemidovProduct Version131111 => 121010

Notes
(0001323)
Garl   
21-03-2011 09:28   
как вариант можно использовать пустой zmp для обозначения группы меню, тогда можно будет не только ссылаться на родителя но и делать много многоуровнево вложенные менюшки.
(0001326)
feya   
21-03-2011 14:42   
Такого - ParentSubSubMenu мне кажется лучше не делать, если уж делать то нормальные многоуровневые с делителем через слеш.
(0001327)
vdemidov   
21-03-2011 15:02   
А мне понравилась идея делать подменю при помощи ссылки на родительский zmp. Тогда появится возможность относительно легко переименовывать и локализировать подменю.
(0001328)
feya   
21-03-2011 15:06   
>А мне понравилась идея делать подменю при помощи ссылки на родительский zmp
Это как?
(0001329)
vdemidov   
21-03-2011 15:16   
Ну делается например файлик с расширением zmpgrp или любым на наш выбор. В нем прописывается его GUID, родительский GUID и название в том числе и локализации.
Еще можно добавить параметр описывающий, что делать именно подменю или просто сгруппировать вместе и отделить от остальных разделителями
(0001330)
vdemidov   
21-03-2011 15:31   
Если добавить к этому возможность перекрыть этот файлик лежащим на уровень выше в структуре папок, то вообще гибкая структура выйдет.
(0001331)
Tolik   
21-03-2011 16:46   
Ок, ParentSubSubMenu - не оч. хор. идея.
Предлагаю ещё одну.
Требования:
1. Не переписывать _все_ существующие zmp
2. Не плодить слишком много новых файлов
3. Не использовать GUID для описания иерархии, а пользоваться читабельными человеческими идентификаторами.
Поэтому создаём один файл, например, maps\sas.maps\groups.ini
и прописываем в нём всю структуру меню, как-то так:

[Main]
Локальные карты
Исторические

[Локальные карты]
ДубльГис
UMAP

[Исторические]
Московская область
Уральский ФО

2gis.khabarovsk.zmp не переписываем, в нём ParentSubMenu=ДубльГис, попадает в меню Локальные карты - ДубльГис.
Также добавить разделы для разных языков.
(0001332)
vdemidov   
21-03-2011 17:00   
И как предлагаете потом эти groups.ini из разных репозиториев между собой объединять?
(0001333)
feya   
21-03-2011 19:02   
vdemidov, идея с отдельными файлами интересная, но соглашусь с Tolik'о - плодить лишние файлы в zmp не есть гуд. Предложеный мной вариант со слешами имеет только один недостаток - приходится во всех zmp хранить название пути подменю и соответственно их переводы, но это уже опробовано временем и вроде особо никого не напрягало. Еще плюс - это самый простой и безболезненный вариант)
(0001335)
Tolik   
21-03-2011 19:31   
(edited on: 21-03-2011 19:53)
> И как предлагаете потом эти groups.ini из разных репозиториев между собой объединять?
Например, так:
В sas.maps\groups.ini
[Main]
menu1
menu2

В plus.maps\groups.ini
[Main]
menu1
menu3

После парсинга и объединения должно получиться
[Main]
menu1
menu2
menu3

(я надеюсь, это не сложно реализовать)

(0001336)
Tolik   
21-03-2011 19:44   
feya, а что со слешами? Так, что ли?
ParentSubMenu=Локальные/ДубльГис

Да тоже неплохо.
Во всяком случае понятно и никакой путаницы. Только zmp придётся исправить и обратной совместимости не будет. Ну и ладно.

Кстати, pnum ещё напрягает, как-то он непредсказуемо действует на все эти группы... Один неправильный pnum портит всю картину. Надо ещё как-то определять положение группы в подменю. Тут groups.ini таки имеет преимущество :)
(0001338)
vdemidov   
21-03-2011 20:33   
Лично мне очень хочется убрать из zmp локализованное название подменю, разделитель и pnum.
(0001339)
Tolik   
21-03-2011 21:07   
Да, и разделители тоже вечно появляются где попало.
Ну и как это сделать, все настройки внешнего вида перенести в .ini?
(0001340)
vdemidov   
21-03-2011 21:20   
Ну да. Если выделить инфу о группировке zmp в отдельные ini, то от разделителей можно избавиться введя группы без выделения в подменю.
(0001341)
Garl   
22-03-2011 05:38   
прошу учесть что некоторые имеют привычку сносить .ini файлы,
поэтому информацию о группах хранить в ini файле - не сильно айс.

>Лично мне очень хочется убрать из zmp локализованное название подменю, разделитель и pnum.
согласен.
(0001342)
Tolik   
22-03-2011 06:11   
Я и сам их часто тру :)
Но это не проблема: они ж будут в репозиториях.
(0001343)
feya   
22-03-2011 06:56   
к чему же в итоге придем?
В принципе хранение отображения zmp в меню согласен перенести в отдельный файл, но не вариант если их будет несколько ибо это вызовет путаницу еще поболе чем сейчас.
(0001346)
Garl   
22-03-2011 08:19   
озвучу универсальный подход как я его вижу

Имеем ZMP "Локальные карты" (допустим в основном репозитории) {889E44B1-413F-49D9-B5C7-3E20851B5C40}

ZMP с группой Допустим "локальные непривязанные карты" GUID {B67EF627-B412-4AE0-80FE-A50300AFECAA}
указываем что у него родитель "Локальные карты" {889E44B1-413F-49D9-B5C7-3E20851B5C40}

имеем скрипт карты в котором указываем родителя {B67EF627-B412-4AE0-80FE-A50300AFECAA}
карта города мухосранска


в идеале если у нас присутствуют в одной папке файлы слитые из двух репозиториев то у нас получится
"Локальные карты"->"локальные непривязанные карты"->"карта города мухосранска "

если же у нас слит только плюсовый репозиторий то врехнегородителя не будет, будет только
"локальные непривязанные карты"->"карта города мухосранска "


в чём плюс:
+не подвязаны под конфиги,
+чётко видно кто кому подчинён,
+отсутствие какого либо родителя не влияет на работоспособность.

минусы:
pnum, всётаки его придется использовать для сортировки, можето только у групп, но всётаки.
(0001347)
vdemidov   
22-03-2011 08:26   
Ну несколько их будет по любому. Во-первых нужно что бы каждый репозиторий мог более менее независимо задать структуру. Плюс нужно что бы пользователь мог ее перекрыть не исправляя файлы входящие в репозиторий. Так что инфа из них должна будет собираться или в maps.ini или в глобальный groups.ini
(0001348)
Tolik   
22-03-2011 08:26   
> не вариант если их будет несколько ибо это вызовет путаницу еще поболе чем сейчас.

Тогда пусть будет один: maps\sas.maps\groups.ini
Если карты какой-то группы существуют только в плюсовом репозитории, группу под них всё равно пропишем в основном. А отображать пустую группу в меню не надо (если плюсовой не подгружен).
(0001349)
Tolik   
22-03-2011 08:28   
maps\sas.maps\groups.ini будет жить в репозитории, а если пользователь пересортирует по-своему, его структура запишется в maps/maps.ini
(0001350)
Tolik   
22-03-2011 08:33   
(edited on: 22-03-2011 08:36)
Если всё же выберем вариант с отдельными групповыми zmp, то _убедительно_прошу_ ссылки на родителя указывать не по GUID, а по имени файла.

muhosransk.zmp:
name=Мухосранск
ParentSubMenu=LocalNotFixed.grp

LocalNotFixed.grp:
name=Локальные непривязанные
ParentSubMenu=Local.grp

Local.grp:
name=Локальные
ParentSubMenu=

(0001351)
vdemidov   
22-03-2011 11:00   
Увы, мне с GUID-ами будет на порядок проще все это сделать. Так что или по гуидам, или вообще никак.
(0001352)
Garl   
22-03-2011 11:06   
никто не мешает сделать внешний редактор меню, который будет GUID представлять по человечески :)
(0001356)
feya   
22-03-2011 12:37   
если ссылаться на другие zmp то только по GUID, это без вариантов.
(0001357)
Tolik   
22-03-2011 12:38   
тогда без гуёв не обойтись

а может всё-таки ini?
(0001358)
Garl   
22-03-2011 12:44   
Tolik, не боись ГУИДов, в них сила.
а вот как описывать саму группу zmp файлом или в инишке - остаётся вопрос открытый.
(0001359)
vdemidov   
22-03-2011 12:58   
Ну что описывать группу отдельным файлом мы уже определились. Имхо делать фиктивный zmp смысла нимного, ибо общего у них будет только наличие GUID и названия.
(0001360)
Tolik   
22-03-2011 15:33   
Я что-то не понял последнюю фразу.
Описывать _одну_ группу отдельным файлом? Это не то же самое, что "фиктивный zmp"?

И ещё оч. интересует target version. При таком бурном обсуждении странно, что её нет.
(0001361)
vdemidov   
22-03-2011 15:44   
"фиктивный zmp" это зип файл или папка с кучей файлов. Имхо в данном случае ни то, ни другое нафиг не нужно. Так что это будет файл с каким-то другим расширением.
А target version нет, поскольку я пока не уверен как стоит это все реализовывать. В любом случае, не в ближайшем релизе.
(0001362)
Garl   
22-03-2011 15:49   
семь раз отмерь - один запрограммируй :)
(0001363)
feya   
22-03-2011 19:47   
Читаю читаю и толком не понимаю что в итоге будет) Аналог текущего maps.ini или для каждого подменю свой файл?
(0001365)
vdemidov   
22-03-2011 20:26   
А бог его знает что в итоге будет. Мне кажется для каждого подменю свой файл и groups.ini для пользовательских настроек. Или более сложный maps.ini. Или
(0001366)
Garl   
23-03-2011 05:11   
а давайте поОФФТОПим и вспомним программы где такое или примерно такое уже делалось.

мне кроме Нортон Коммандера и ДосНавигатора ничего больше не приходит на ум.
у первого всё в одном файле, у второго можно подменюшки хранить в разных файлах, но у них другая структура меню.
больше ничего не припомню.
(0001368)
feya   
23-03-2011 08:38   
а используя отдельные файлы для подменю как избавимся от pnum и сепараторов?
(0001369)
Garl   
23-03-2011 09:04   
чую vdemidov оставит сепараторы и pnum только для групп, а из zmp его ликвидируют.
(0003824)
vdemidov   
09-09-2011 20:07   
Скорее всего будет что-то такое:
1. Вложенность подменю будет скорее всего произвольная
2. Для каждого конкретного подменю можно будет задавать его тип (полноценное подменю, просто группа пунктов с заголовком в начале и разделителем в конце, просто группа пунктов ограниченная разделителями)
3. Внутри групп и подменю сортировка идет просто по алфавиту
Как это все задавать и что делать с переводами на другие языки я еще не придумал.
(0003866)
zOn   
12-09-2011 04:45   
почему вы не хотите уйти от сортировки в zmp? почему не раскладывать их по папкам и подпапкам и так же отображать в САС?
видимо из-за проблем с обновлением?
можно ведь сложить всё 1 раз по папкам и создать (по требованию) индексный файл, а после этого уже до балды где лежит zmp - он будет в программе отображаться так, как для этого GUID записанно в индексе.
(0003868)
Tolik   
12-09-2011 04:52   
И имя подменю тогда будет совпадать с именем директории?
Но как быть с разными языками?
И как определять порядок пунктов меню? (только по алфавиту - плохо)
Так что без ini файла (файлов) не обойтись.
(0003869)
zOn   
12-09-2011 04:55   
>Но как быть с разными языками?
поклонники инглиша и так не создают папок на русском.

вот с сортировкой еще не придумал. может всё же по pnum в самих zmp?
(0003872)
Tolik   
12-09-2011 05:04   
Вот именно, я всё называю по-английски или латиницей. Уж очень задолбала меня кириллица, всю жизнь от неё одни проблемы.
Но вы-то хотите видеть русские имена в меню?
По pnum неудобно: чтобы передвинуть подменю, приходится редактировать все zmp в нём.
(0003874)
zOn   
12-09-2011 05:05   
>Но вы-то хотите видеть русские имена в меню?
да. и папки у меня по-русски. т.е. имя папки=пункт меню.
(0013012)
Garl   
01-10-2013 10:14   
Собственно реализована возможность многоуровневого меню

ParentSubMenu=пункт1\пункт2\пункт3\пункт4\... и т.д.