View Issue Details

IDProjectCategoryView StatusLast Update
0002685SAS.ПланетаБаг / Bugpublic16-04-2015 13:25
ReporterGarl Assigned Tozed  
PrioritynormalSeverityminorReproducibilityhave not tried
Status resolvedResolutionfixed 
PlatformWindowsOS7OS VersionProfessional
Product Version141212 
Target Version150915Fixed in Version150915 
Summary0002685: Пункт меню "Открыть папку, содержащую тайл основной карты" для отсутствующего тайла
DescriptionПри выборе пункта меню "Открыть папку, содержащую тайл основной карты" на пустом тайле открывается папка текущего пользователя
в идеале должна открываться папка где должен находиться тайл или каталог выше вплоть до %caсhe_dir%
TagsNo tags attached.

Activities

zed

16-04-2015 11:04

manager   ~0015592

А по-моему вообще ничего открываться не должно. Надо выдавать сообщение, что тайла не существует, и не мудрить.

vasketsov

16-04-2015 11:19

manager   ~0015593

Last edited: 16-04-2015 11:21

Хм. Вообще-то папка, содержащая тайл основной карты, есть даже в беркли и sqlite. Это папка с БД. Вот её и надо открывать.

Кроме того, концепция tne в части отображения тайла не различает случаи, когда ничего нет в кэше, или есть tne. Сохранять tne или нет - дело исключительно пользователя. К открыванию папки, где хранится тайл, это никакого отношения не имеет, и вообще сохранение признака отсутствия тайла даже на файловом кэше может быть в принципе сделано и без tne. Поэтому должна пытаться открываться именно та папка, где должен быть тайл, независимо от того, есть он, есть tne или вообще ничего нет.

>тайла не существует
Эта логика понятна, что раз нет тайла, то нет и папки, его содержащей. Но разумнее изменить описание на что-то типа "Открыть папку хранения тайла", и открывать папку даже при отсутствии тайла.

Garl

16-04-2015 11:19

manager   ~0015594

имхо если написано "открыть папку" - значит надо открыть папку

zed

16-04-2015 11:25

manager   ~0015595

Если тайла нет, то и папки может не быть. И нельзя открыть то, чего нет. А самовольничать и перескакивать на верхнюю папку вплоть до %caсhe_dir% (которой тоже может не быть), не лучшая идея.

vdemidov

16-04-2015 11:49

manager   ~0015596

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

vdemidov

16-04-2015 11:50

manager   ~0015597

Но на первое время, хватит и проверки существования такой папки и сообщения, что ее нет вместо открытия експлорера.

vasketsov

16-04-2015 11:51

manager   ~0015598

>самовольничать
Можно просто спросить, чего открыть, если финишной папки нет.
Чтобы юзер знал, что открылось не то, что он возможно хотел.

Ведь доподлинно неизвестно, что именно хочет юзер, когда видит отсутствие тайла и выполняет данную операцию. Он может не знать, есть tne или нет. А нужно прогнозируемое поведение. Во всяком случае, желательно, чтобы при отсутствующем тайле поведение не зависело от наличия или отсутствия tne. От наличия или отсутствия папки - возможно.

>Если тайла нет, то и папки может не быть
Я тебе даже больше скажу, файл может быть, но папки уже может не быть )))
А в SACS так вообще файловый кэш версионный, а показываться может не запрошенная версия,... и ничего страшного, открывается. Причём в общем версионном случае логика открытия папки может отличаться от логики показа тайла при его отсутствии в нужной версии.

А вообще в ситуации z1\x2\y3\tile.jpg формально папка x2 тоже содержит тайл tile.jpg. Так что формально ничего страшного не произойдёт, если открыть её, если юзер подтвердит, что она его устроит.

zed

16-04-2015 11:52

manager   ~0015599

Last edited: 16-04-2015 11:53

>Ну, я за то что бы пытаться получить наиболее подробный существующий путь

Вплоть до %caсhe_dir%? Не согласен. Пользователь может ошибочно решить, что открылась именно та папка, которае ему нужна, а по факту будет совсем не то.

zed

16-04-2015 11:54

manager   ~0015600

Last edited: 16-04-2015 11:58

> Можно просто спросить, чего открыть, если финишной папки нет.

Не понимаю, зачем такая морока. И зачем юзеру не то, что он вероятнее всего хотел получить.

Garl

16-04-2015 11:54

manager   ~0015601

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

zed

16-04-2015 11:56

manager   ~0015602

> ай не факт
Поэтому и написано слово может. Может не быть, а может и быть.

vasketsov

16-04-2015 12:01

manager   ~0015603

>зачем юзеру не то, что он вероятнее всего хотел получить
А что может хотеть получить юзер, вызывая эту операцию на том месте, где он видит, что НЕТ тайла?

zed

16-04-2015 12:06

manager   ~0015604

Ничего хорошего, поэтому и нужна простая защита от дурака или случайного нажатия.

Либо, нужно делать полную обработку всех возможных ситуаций с отсутствием папки/тайла и на каждом этапе спрашивать и предупреждать юзера, что он дурак и делает не то. Но это, имхо, усложнение на ровном месте.

vasketsov

16-04-2015 12:24

manager   ~0015605

>простая защита
Ок. Минимум - это проверка наличия желаемой папки и сообщение, что открывать нечего.

Модификация:
а) вместо сообщения о факте отсутствия папки - дополнить его вопросом, а не возжелает ли господин открыть вместо неё родительскую папку;
б) при согласии - пооткусывать в цикле хвост, пока папка не появится или строка не кончится, и если что-то есть - это открыть.

Где усложнение? Цикл? Да его написать быстрее, чем это обсуждать.
Для пользователя, если он хочет именно желаемую папку, ровным счётом ничего не меняется, просто он жмакает "Нет". Ровно то же одно сообщение, которое тоже надо как минимум закрыть.

Зато появляются бонусы:
а) за то же одно сообщение юзер понимает, есть ли тайл, и может перейти к корню или к промежуточной папке - просто как минимум выигрыш в скорости;
б) для кэшей типа SQlite или беркли получается переход к самой базе, независимо от опционального генератора тайловых координат внутри базы, который по сути становится просто точкой вторичного разбора в пространстве имён тайлов.

zed

16-04-2015 13:04

manager   ~0015606

Вообще, самая простая защита там уже присутствует:

  if DirectoryExists(ExtractFilePath(VTileFileName)) then begin
    SelectFileInExplorer(VTileFileName);
  end else begin
    ShowMessageFmt(SAS_ERR_DirectoryNotExistFmt, [VTileFileName]);
  end;

Так что если папки нету, то ничего и не откроется. Правда в SelectFileInExplorer может передаваться несуществующее имя тайла. Вот отсюда и надо плясать - написать функцию SelectFolderInExplorer и использовать её тут.

Таким образом решается баг, который тут есть. А хотелка по поводу "открой мне то да сё, если вот этого нет" и стоит ли ей заниматься (по-моему не стоит) это уже другой вопрос. Там ещё нужно и про СУБД вспомнить и тоже что-то ответить пользователю, т.е. нюансов тьма.

Issue History

Date Modified Username Field Change
16-04-2015 10:25 Garl New Issue
16-04-2015 10:30 vdemidov Status new => confirmed
16-04-2015 10:30 vdemidov Product Version => 141212
16-04-2015 10:30 vdemidov Target Version => 150915
16-04-2015 11:04 zed Note Added: 0015592
16-04-2015 11:19 vasketsov Note Added: 0015593
16-04-2015 11:19 Garl Note Added: 0015594
16-04-2015 11:21 vasketsov Note Edited: 0015593
16-04-2015 11:25 zed Note Added: 0015595
16-04-2015 11:49 vdemidov Note Added: 0015596
16-04-2015 11:50 vdemidov Note Added: 0015597
16-04-2015 11:51 vasketsov Note Added: 0015598
16-04-2015 11:52 zed Note Added: 0015599
16-04-2015 11:53 zed Note Edited: 0015599
16-04-2015 11:54 zed Note Added: 0015600
16-04-2015 11:54 Garl Note Added: 0015601
16-04-2015 11:56 zed Note Added: 0015602
16-04-2015 11:58 zed Note Edited: 0015600
16-04-2015 12:01 vasketsov Note Added: 0015603
16-04-2015 12:06 zed Note Added: 0015604
16-04-2015 12:24 vasketsov Note Added: 0015605
16-04-2015 13:04 zed Note Added: 0015606
16-04-2015 13:25 zed Status confirmed => resolved
16-04-2015 13:25 zed Fixed in Version => 150915
16-04-2015 13:25 zed Resolution open => fixed
16-04-2015 13:25 zed Assigned To => zed
08-08-2025 13:22 zed Category Баг => Баг / Bug