View Issue Details

IDProjectCategoryView StatusLast Update
0000503SAS.ПланетаХотелка / Feature requestpublic01-10-2013 10:24
ReporterTolik Assigned ToGarl  
PrioritynormalSeverityfeatureReproducibilityN/A
Status resolvedResolutionfixed 
Product Version121010 
Target Version131111Fixed in Version131111 
Summary0000503: Добавить меню карт второго уровня
DescriptionТ.к. карт становится всё больше с каждым днём, назрела необходимость группировать их в 2-уровневое меню. Например, Карты - Локальные - ДубльГис.

Параметры можно назвать, например, так:
ParentSubMenu=Локальные
ParentSubSubMenu=ДубльГис
Tagszmp

Activities

Garl

21-03-2011 09:28

manager   ~0001323

как вариант можно использовать пустой zmp для обозначения группы меню, тогда можно будет не только ссылаться на родителя но и делать много многоуровнево вложенные менюшки.

feya

21-03-2011 14:42

manager   ~0001326

Такого - ParentSubSubMenu мне кажется лучше не делать, если уж делать то нормальные многоуровневые с делителем через слеш.

vdemidov

21-03-2011 15:02

manager   ~0001327

А мне понравилась идея делать подменю при помощи ссылки на родительский zmp. Тогда появится возможность относительно легко переименовывать и локализировать подменю.

feya

21-03-2011 15:06

manager   ~0001328

>А мне понравилась идея делать подменю при помощи ссылки на родительский zmp
Это как?

vdemidov

21-03-2011 15:16

manager   ~0001329

Ну делается например файлик с расширением zmpgrp или любым на наш выбор. В нем прописывается его GUID, родительский GUID и название в том числе и локализации.
Еще можно добавить параметр описывающий, что делать именно подменю или просто сгруппировать вместе и отделить от остальных разделителями

vdemidov

21-03-2011 15:31

manager   ~0001330

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

Tolik

21-03-2011 16:46

manager   ~0001331

Ок, ParentSubSubMenu - не оч. хор. идея.
Предлагаю ещё одну.
Требования:
1. Не переписывать _все_ существующие zmp
2. Не плодить слишком много новых файлов
3. Не использовать GUID для описания иерархии, а пользоваться читабельными человеческими идентификаторами.
Поэтому создаём один файл, например, maps\sas.maps\groups.ini
и прописываем в нём всю структуру меню, как-то так:

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

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

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

2gis.khabarovsk.zmp не переписываем, в нём ParentSubMenu=ДубльГис, попадает в меню Локальные карты - ДубльГис.
Также добавить разделы для разных языков.

vdemidov

21-03-2011 17:00

manager   ~0001332

И как предлагаете потом эти groups.ini из разных репозиториев между собой объединять?

feya

21-03-2011 19:02

manager   ~0001333

vdemidov, идея с отдельными файлами интересная, но соглашусь с Tolik'о - плодить лишние файлы в zmp не есть гуд. Предложеный мной вариант со слешами имеет только один недостаток - приходится во всех zmp хранить название пути подменю и соответственно их переводы, но это уже опробовано временем и вроде особо никого не напрягало. Еще плюс - это самый простой и безболезненный вариант)

Tolik

21-03-2011 19:31

manager   ~0001335

Last edited: 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

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

Tolik

21-03-2011 19:44

manager   ~0001336

feya, а что со слешами? Так, что ли?
ParentSubMenu=Локальные/ДубльГис

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

Кстати, pnum ещё напрягает, как-то он непредсказуемо действует на все эти группы... Один неправильный pnum портит всю картину. Надо ещё как-то определять положение группы в подменю. Тут groups.ini таки имеет преимущество :)

vdemidov

21-03-2011 20:33

manager   ~0001338

Лично мне очень хочется убрать из zmp локализованное название подменю, разделитель и pnum.

Tolik

21-03-2011 21:07

manager   ~0001339

Да, и разделители тоже вечно появляются где попало.
Ну и как это сделать, все настройки внешнего вида перенести в .ini?

vdemidov

21-03-2011 21:20

manager   ~0001340

Ну да. Если выделить инфу о группировке zmp в отдельные ini, то от разделителей можно избавиться введя группы без выделения в подменю.

Garl

22-03-2011 05:38

manager   ~0001341

прошу учесть что некоторые имеют привычку сносить .ini файлы,
поэтому информацию о группах хранить в ini файле - не сильно айс.

>Лично мне очень хочется убрать из zmp локализованное название подменю, разделитель и pnum.
согласен.

Tolik

22-03-2011 06:11

manager   ~0001342

Я и сам их часто тру :)
Но это не проблема: они ж будут в репозиториях.

feya

22-03-2011 06:56

manager   ~0001343

к чему же в итоге придем?
В принципе хранение отображения zmp в меню согласен перенести в отдельный файл, но не вариант если их будет несколько ибо это вызовет путаницу еще поболе чем сейчас.

Garl

22-03-2011 08:19

manager   ~0001346

озвучу универсальный подход как я его вижу

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

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

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


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

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


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

минусы:
pnum, всётаки его придется использовать для сортировки, можето только у групп, но всётаки.

vdemidov

22-03-2011 08:26

manager   ~0001347

Ну несколько их будет по любому. Во-первых нужно что бы каждый репозиторий мог более менее независимо задать структуру. Плюс нужно что бы пользователь мог ее перекрыть не исправляя файлы входящие в репозиторий. Так что инфа из них должна будет собираться или в maps.ini или в глобальный groups.ini

Tolik

22-03-2011 08:26

manager   ~0001348

> не вариант если их будет несколько ибо это вызовет путаницу еще поболе чем сейчас.

Тогда пусть будет один: maps\sas.maps\groups.ini
Если карты какой-то группы существуют только в плюсовом репозитории, группу под них всё равно пропишем в основном. А отображать пустую группу в меню не надо (если плюсовой не подгружен).

Tolik

22-03-2011 08:28

manager   ~0001349

maps\sas.maps\groups.ini будет жить в репозитории, а если пользователь пересортирует по-своему, его структура запишется в maps/maps.ini

Tolik

22-03-2011 08:33

manager   ~0001350

Last edited: 22-03-2011 08:36

Если всё же выберем вариант с отдельными групповыми zmp, то _убедительно_прошу_ ссылки на родителя указывать не по GUID, а по имени файла.

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

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

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

vdemidov

22-03-2011 11:00

manager   ~0001351

Увы, мне с GUID-ами будет на порядок проще все это сделать. Так что или по гуидам, или вообще никак.

Garl

22-03-2011 11:06

manager   ~0001352

никто не мешает сделать внешний редактор меню, который будет GUID представлять по человечески :)

feya

22-03-2011 12:37

manager   ~0001356

если ссылаться на другие zmp то только по GUID, это без вариантов.

Tolik

22-03-2011 12:38

manager   ~0001357

тогда без гуёв не обойтись

а может всё-таки ini?

Garl

22-03-2011 12:44

manager   ~0001358

Tolik, не боись ГУИДов, в них сила.
а вот как описывать саму группу zmp файлом или в инишке - остаётся вопрос открытый.

vdemidov

22-03-2011 12:58

manager   ~0001359

Ну что описывать группу отдельным файлом мы уже определились. Имхо делать фиктивный zmp смысла нимного, ибо общего у них будет только наличие GUID и названия.

Tolik

22-03-2011 15:33

manager   ~0001360

Я что-то не понял последнюю фразу.
Описывать _одну_ группу отдельным файлом? Это не то же самое, что "фиктивный zmp"?

И ещё оч. интересует target version. При таком бурном обсуждении странно, что её нет.

vdemidov

22-03-2011 15:44

manager   ~0001361

"фиктивный zmp" это зип файл или папка с кучей файлов. Имхо в данном случае ни то, ни другое нафиг не нужно. Так что это будет файл с каким-то другим расширением.
А target version нет, поскольку я пока не уверен как стоит это все реализовывать. В любом случае, не в ближайшем релизе.

Garl

22-03-2011 15:49

manager   ~0001362

семь раз отмерь - один запрограммируй :)

feya

22-03-2011 19:47

manager   ~0001363

Читаю читаю и толком не понимаю что в итоге будет) Аналог текущего maps.ini или для каждого подменю свой файл?

vdemidov

22-03-2011 20:26

manager   ~0001365

А бог его знает что в итоге будет. Мне кажется для каждого подменю свой файл и groups.ini для пользовательских настроек. Или более сложный maps.ini. Или

Garl

23-03-2011 05:11

manager   ~0001366

а давайте поОФФТОПим и вспомним программы где такое или примерно такое уже делалось.

мне кроме Нортон Коммандера и ДосНавигатора ничего больше не приходит на ум.
у первого всё в одном файле, у второго можно подменюшки хранить в разных файлах, но у них другая структура меню.
больше ничего не припомню.

feya

23-03-2011 08:38

manager   ~0001368

а используя отдельные файлы для подменю как избавимся от pnum и сепараторов?

Garl

23-03-2011 09:04

manager   ~0001369

чую vdemidov оставит сепараторы и pnum только для групп, а из zmp его ликвидируют.

vdemidov

09-09-2011 20:07

manager   ~0003824

Скорее всего будет что-то такое:
1. Вложенность подменю будет скорее всего произвольная
2. Для каждого конкретного подменю можно будет задавать его тип (полноценное подменю, просто группа пунктов с заголовком в начале и разделителем в конце, просто группа пунктов ограниченная разделителями)
3. Внутри групп и подменю сортировка идет просто по алфавиту
Как это все задавать и что делать с переводами на другие языки я еще не придумал.

zOn

12-09-2011 04:45

reporter   ~0003866

почему вы не хотите уйти от сортировки в zmp? почему не раскладывать их по папкам и подпапкам и так же отображать в САС?
видимо из-за проблем с обновлением?
можно ведь сложить всё 1 раз по папкам и создать (по требованию) индексный файл, а после этого уже до балды где лежит zmp - он будет в программе отображаться так, как для этого GUID записанно в индексе.

Tolik

12-09-2011 04:52

manager   ~0003868

И имя подменю тогда будет совпадать с именем директории?
Но как быть с разными языками?
И как определять порядок пунктов меню? (только по алфавиту - плохо)
Так что без ini файла (файлов) не обойтись.

zOn

12-09-2011 04:55

reporter   ~0003869

>Но как быть с разными языками?
поклонники инглиша и так не создают папок на русском.

вот с сортировкой еще не придумал. может всё же по pnum в самих zmp?

Tolik

12-09-2011 05:04

manager   ~0003872

Вот именно, я всё называю по-английски или латиницей. Уж очень задолбала меня кириллица, всю жизнь от неё одни проблемы.
Но вы-то хотите видеть русские имена в меню?
По pnum неудобно: чтобы передвинуть подменю, приходится редактировать все zmp в нём.

zOn

12-09-2011 05:05

reporter   ~0003874

>Но вы-то хотите видеть русские имена в меню?
да. и папки у меня по-русски. т.е. имя папки=пункт меню.

Garl

01-10-2013 10:14

manager   ~0013012

Собственно реализована возможность многоуровневого меню

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

Issue History

Date Modified Username Field Change
20-03-2011 19:09 Tolik New Issue
20-03-2011 22:25 gpsMax Tag Attached: zmp
21-03-2011 09:28 Garl Note Added: 0001323
21-03-2011 14:42 feya Note Added: 0001326
21-03-2011 15:02 vdemidov Note Added: 0001327
21-03-2011 15:06 feya Note Added: 0001328
21-03-2011 15:16 vdemidov Note Added: 0001329
21-03-2011 15:31 vdemidov Note Added: 0001330
21-03-2011 16:46 Tolik Note Added: 0001331
21-03-2011 17:00 vdemidov Note Added: 0001332
21-03-2011 19:02 feya Note Added: 0001333
21-03-2011 19:31 Tolik Note Added: 0001335
21-03-2011 19:44 Tolik Note Added: 0001336
21-03-2011 19:51 Tolik Note Edited: 0001335
21-03-2011 19:53 Tolik Note Edited: 0001335
21-03-2011 20:33 vdemidov Note Added: 0001338
21-03-2011 21:07 Tolik Note Added: 0001339
21-03-2011 21:20 vdemidov Note Added: 0001340
22-03-2011 05:38 Garl Note Added: 0001341
22-03-2011 06:11 Tolik Note Added: 0001342
22-03-2011 06:56 feya Note Added: 0001343
22-03-2011 08:19 Garl Note Added: 0001346
22-03-2011 08:26 vdemidov Note Added: 0001347
22-03-2011 08:26 Tolik Note Added: 0001348
22-03-2011 08:28 Tolik Note Added: 0001349
22-03-2011 08:33 Tolik Note Added: 0001350
22-03-2011 08:34 Tolik Note Edited: 0001350
22-03-2011 08:36 Tolik Note Edited: 0001350
22-03-2011 11:00 vdemidov Note Added: 0001351
22-03-2011 11:06 Garl Note Added: 0001352
22-03-2011 12:37 feya Note Added: 0001356
22-03-2011 12:38 Tolik Note Added: 0001357
22-03-2011 12:44 Garl Note Added: 0001358
22-03-2011 12:58 vdemidov Note Added: 0001359
22-03-2011 15:33 Tolik Note Added: 0001360
22-03-2011 15:44 vdemidov Note Added: 0001361
22-03-2011 15:49 Garl Note Added: 0001362
22-03-2011 19:47 feya Note Added: 0001363
22-03-2011 20:26 vdemidov Note Added: 0001365
23-03-2011 05:11 Garl Note Added: 0001366
23-03-2011 08:38 feya Note Added: 0001368
23-03-2011 09:04 Garl Note Added: 0001369
13-04-2011 08:20 Tolik Status new => acknowledged
09-09-2011 20:07 vdemidov Note Added: 0003824
09-09-2011 20:07 vdemidov Status acknowledged => confirmed
09-09-2011 20:08 vdemidov Target Version => 41xxxx
12-09-2011 04:45 zOn Note Added: 0003866
12-09-2011 04:52 Tolik Note Added: 0003868
12-09-2011 04:55 zOn Note Added: 0003869
12-09-2011 05:04 Tolik Note Added: 0003872
12-09-2011 05:05 zOn Note Added: 0003874
01-10-2013 10:14 Garl Note Added: 0013012
01-10-2013 10:15 Garl Assigned To => Garl
01-10-2013 10:15 Garl Status confirmed => resolved
01-10-2013 10:15 Garl Resolution open => fixed
01-10-2013 10:15 Garl Product Version 110316.Alfa => 131111
01-10-2013 10:15 Garl Fixed in Version => 131111
01-10-2013 10:15 Garl Target Version 41xxxx => 131111
01-10-2013 10:23 vdemidov Product Version 131111 => 121010
08-08-2025 13:24 zed Category Хотелка => Хотелка / Feature request