SASGIS - SACS.Планета
View Issue Details
0001753SACS.ПланетаРефакторингpublic30-12-2012 20:4828-02-2014 10:52
Fed 
vasketsov 
normalmajorhave not tried
closedfixed 
Windows7Professional
 
130803 
0001753: Многопользовательский интерфейс при работе с метками.
Для реализации многопользовательского интерфейса предлагаю разделить файлы marks.sml и Categorymarks.sml на две части (каждый), то есть в отдельные файлы вывести поле visible.
Создать дополнительные (перенести туда поле visible) файлы marks_visible.sml и Categorymarks_visible.sml с простой структурой из 2-х колонок: id и visible.
Файлы marks.sml и Categorymarks.sml можно хранить на сервере (для пользователя права только на чтение) и их, например, может изменять (добавлять администратор). А файлы marks_visible.sml и Categorymarks_visible.sml хранить на машине пользователя (для пользователя права на чтение и запись), он уже может настраивать, что ему необходимо видеть.
Таким образом, достигается то, что у всей группы пользователей одинаковые метки (и группы меток), но каждый под себя может настроить, какие метки он делает видимыми, а какие нет.
Сейчас же (при использование сервера, чтобы были у всех пользователей одинаковые метки) при перезапуске SASPlanet пользователь теряет выделение нужных ему меток.
Большая просьба реализовать такую возможность.
sml, БД, группы, интерфейс, метки, многопользоватеская, совместная работа, структура базы
pdf SAS_MARKS.pdf (101,250) 18-01-2013 20:47
http://www.sasgis.org/mantis/file_download.php?file_id=1249&type=bug
Issue History
30-12-2012 20:48FedNew Issue
30-12-2012 20:53vasketsovNote Added: 0010271
30-12-2012 21:22FedNote Added: 0010272
31-12-2012 04:15FedTag Attached: sml
31-12-2012 04:15FedTag Attached: БД
31-12-2012 04:15FedTag Attached: группы
31-12-2012 04:15FedTag Attached: интерфейс
31-12-2012 04:15FedTag Attached: метки
31-12-2012 04:15FedTag Attached: структура базы
31-12-2012 04:15FedTag Attached: многопользоватеская
31-12-2012 04:15FedTag Attached: совместная работа
31-12-2012 04:34FedNote Added: 0010278
31-12-2012 04:36FedNote Edited: 0010278bug_revision_view_page.php?bugnote_id=10278#r5028
31-12-2012 04:44FedNote Edited: 0010278bug_revision_view_page.php?bugnote_id=10278#r5029
31-12-2012 04:45FedNote Edited: 0010278bug_revision_view_page.php?bugnote_id=10278#r5030
31-12-2012 04:45FedNote Edited: 0010278bug_revision_view_page.php?bugnote_id=10278#r5031
31-12-2012 04:46FedNote Edited: 0010278bug_revision_view_page.php?bugnote_id=10278#r5032
31-12-2012 04:59FedNote Edited: 0010278bug_revision_view_page.php?bugnote_id=10278#r5033
31-12-2012 05:31sheavyNote Added: 0010280
31-12-2012 05:39vasketsovNote Added: 0010281
31-12-2012 05:56FedNote Added: 0010282
31-12-2012 05:58FedNote Edited: 0010282bug_revision_view_page.php?bugnote_id=10282#r5035
31-12-2012 06:11vasketsovNote Added: 0010283
31-12-2012 07:51FedNote Added: 0010284
31-12-2012 08:03sheavyNote Added: 0010285
31-12-2012 13:38vasketsovNote Added: 0010286
01-01-2013 06:00FedNote Added: 0010289
01-01-2013 06:01FedNote Edited: 0010289bug_revision_view_page.php?bugnote_id=10289#r5037
01-01-2013 06:02FedNote Edited: 0010289bug_revision_view_page.php?bugnote_id=10289#r5038
01-01-2013 06:05FedNote Edited: 0010289bug_revision_view_page.php?bugnote_id=10289#r5039
01-01-2013 06:08FedNote Edited: 0010289bug_revision_view_page.php?bugnote_id=10289#r5040
01-01-2013 06:10FedNote Edited: 0010289bug_revision_view_page.php?bugnote_id=10289#r5041
02-01-2013 06:02FedFile Added: frm_MarksExplorer.pas
02-01-2013 06:04FedNote Added: 0010291
04-01-2013 15:12vasketsovNote Added: 0010316
04-01-2013 15:13vasketsovFile Added: SAS_MARKS.pdf
04-01-2013 15:29vasketsovAssigned To => vasketsov
04-01-2013 15:29vasketsovStatusnew => assigned
04-01-2013 22:44vasketsovNote Added: 0010321
05-01-2013 11:11FedNote Added: 0010328
18-01-2013 20:46vasketsovFile Deleted: frm_MarksExplorer.pas
18-01-2013 20:46vasketsovFile Deleted: SAS_MARKS.pdf
18-01-2013 20:47vasketsovFile Added: SAS_MARKS.pdf
13-02-2013 11:02vasketsovProjectSAS.Планета => SACS.Планета
13-02-2013 11:10vasketsovStatusassigned => resolved
13-02-2013 11:10vasketsovResolutionopen => fixed
09-08-2013 15:00vasketsovFixed in Version => 130803
09-08-2013 15:13vasketsovStatusresolved => closed

Notes
(0010271)
vasketsov   
30-12-2012 20:53   
>Большая просьба реализовать такую возможность.
Есть уверенность, что SML в принципе тупиковый путь. Вряд ли кого-то заинтересуете этим.

>вывести поле visible
Ну а потом захочется не Visible, а какое-то другое свойство настраивать, например диапазон зумов видимости. Ещё делить метки? Негуманно.

Разумеется необходимо соблюсти общий принцип - ДАННЫЕ отделены от их ОТОБРАЖЕНИЯ, соответственно ОТОБРАЖЕНИЕ у всех своё и настраиваемое. Но SML...
(0010272)
Fed   
30-12-2012 21:22   
>Есть уверенность, что SML в принципе тупиковый путь. Вряд ли кого-то заинтересуете этим.
Полностью с этим согласен, если релизовать в СУБД, то это было бы просто СУПЕР.
Предложение сделать первые шаги к этому, разделить таблицу на две части (одна у пользователя /можно оставить в файле/, а другая например на сервере /перенести в СУБД/).

>Разумеется необходимо соблюсти общий принцип - ДАННЫЕ отделены от их ОТОБРАЖЕНИЯ, соответственно ОТОБРАЖЕНИЕ у всех своё и настраиваемое.
Об этом собственно и речь! Просто visible стоит на первом месте(чаще всего используем), по этому на него обратил особое внимание.
(0010278)
Fed   
31-12-2012 04:34   
(edited on: 31-12-2012 04:59)
В http://sasgis.org/mantis/view.php?id=1113 описывается метод хранения данных (кеш) в СУБД, таким же образом в СУБД можно хранить и ДАННЫЕ МЕТОК.
Как описывается в http://sasgis.org/mantis/view.php?id=1481#c8473 перевод меток в СУБД (особенно в части с данными) может ускорить работу программы.

(0010280)
sheavy   
31-12-2012 05:31   
Согласен с vasketsov и Fed. Вижу, что эта тема уже долго обсуждается. Сложность перехода на БД очевидна. Возможно, разделение по разным файлам было бы хорошим прототипом или переходной ступенью. При таком подходе будет проще с конвертором. Он даже может быть встроен в саму программу.
(0010281)
vasketsov   
31-12-2012 05:39   
>разделение по разным файлам было бы хорошим прототипом или переходной ступенью
Нет. Разделение бессмысленное. Тупик.

>будет проще с конвертором
Ровно наоборот. Любые усложнения сейчас - потом потребуется учитывать в конвертере.

>Он даже может быть встроен в саму программу
Он даже не нужен совершенно, если в самой программе будет тривиальная "галочка", в каком формате метки. Переключение её приведёт к тому, что метки сохранятся уже в новом формате. Даже старые останутся в виде бэкапа.
(0010282)
Fed   
31-12-2012 05:56   
(edited on: 31-12-2012 05:58)
Что Вы думаете о возможности перевода ДАННЫХ меток в СУБД, а их ОТОБРАЖЕНИЯ оставить на ПК пользователей (на данный момент в файле)?
Насколько это реалистично?
Было бы хорошо реализовать такую возможность.

(0010283)
vasketsov   
31-12-2012 06:11   
>на данный момент в файле
Не вижу смысла. Там всё куда проще, чем изначально показалось. Возможно даже сегодня сделаю, если успею, безо всякого деления по файлам.
(0010284)
Fed   
31-12-2012 07:51   
>Там всё куда проще, чем изначально показалось.
>Возможно даже сегодня сделаю, если успею, безо всякого деления по файлам.
ДАННЫЕ отделены от их ОТОБРАЖЕНИЯ?
Настройки изображения для каждого пользователя должны оставаться свои, тогда как данные - общие.
Значит в базу нужно добавить id-пользователя.
(0010285)
sheavy   
31-12-2012 08:03   
А как определить что это за пользователь? Если вводить систему аутентификации - это усложнение.

вариант 1: по имени комптютера. По ip-нельзя, т.к. адрес может меняться особенно если в сети используется dhcp.

вариант 2 (лучший чем 1): автоматически при первом запуске в ini-файл пользователя прописывается очередной id, который используется при последующих запусках. Только будут накапливаться уже неиспользуемые id и понадобится механизм их удаления
(0010286)
vasketsov   
31-12-2012 13:38   
>ДАННЫЕ отделены от их ОТОБРАЖЕНИЯ?
Ещё пока нет. Я лишь "перекрыл" использование SML и датасетов над ним, и заменил на SQLite (вернее ещё не полностью, для БД категорий меток ещё не повторено до конца). Работы было на пару часов )). Но сегодня уже даже запускать и тестить не буду )) а то натестчу )).

>безо всякого деления по файлам
Возможно я погорячился, так что и правда правильнее будет в отдельном файле (но всё равно в БД не в SML) в профиле хранить настройки отображения для меток. Во всяком случае при смерти профиля пользователя эти настройки сами умрут. В любом случае задача удаления настроек отображения при удалении метки возникает и требует решения.

>как определить что это за пользователь?
По SID-у. Это как раз самое простое.

>вводить систему аутентификации
Аутентификация ни при чём. Даже права ни при чём.

>автоматически при первом запуске в ini-файл пользователя прописывается очередной id
Буквально всё то же самое: автоматически при создании пользователя ему прописывается очередной SID.
(0010289)
Fed   
01-01-2013 06:00   
(edited on: 01-01-2013 06:10)
>>ДАННЫЕ отделены от их ОТОБРАЖЕНИЯ?
>Ещё пока нет. Я лишь "перекрыл" использование SML и датасетов над ним, и заменил на SQLite.
Всё же, хорошо отделить данные от их отображений.

>В любом случае задача удаления настроек отображения при удалении метки возникает и требует решения.
Я думаю, это не столь сложно так, как у меток есть id, и при удалении метки можно удалить в таблице (особенно если данные будут в СУБД), отвечающей за отображение, все данные с id-метки. /Таблица отображения должна содержать следующие столбцы: id-пользователя(например sid), id-метки, visible/

>>как определить что это за пользователь?
>По SID-у. Это как раз самое простое.
SID (Идентификатор безопасности) не всегда удобно использовать, не из-за того что в некоторых случаях он может одинаковым (например при клонирование ПК с настроенными программами без смены SID-а).
Проблема с использованием SID-а возникает при использовании терминального сервера (конечно к SID-у можно добавить RID), в этом случае SID одинаковый.
Кажется лучше (или как альтернативу) использовать login пользователя, при этом работает он с программой на терминальном сервере или на своём ПК или за другим ПК в этом Домене, все настройки визуализации сохраняются.

(0010291)
Fed   
02-01-2013 06:04   
Реализовал возможность каскадной визуализации категории меток:
http://sasgis.org/mantis/view.php?id=917#c10290
Так, как эти темы связаны друг с другом, можешь добавить эти изменения в следующий релиз (сборку)?
Смотри вложение: frm_MarksExplorer.pas
(0010316)
vasketsov   
04-01-2013 15:12   
Раз уж тут обсуждается многопользовательность - прикреплю модель сюда. Вернее не модель, а её экспорт в pdf для неимеющих PDViwer-а. Сама модель в репозитории лежит (https://bitbucket.org/vasketsov/tilestorage_dbms в папке model). Модель подразумевает возможность реализации всего, что ранее обсуждалось (включая мониторинг изменений, полигоны с дырками, многокомпонентные полигоны и полилинии, запреты удаления чужих категорий, разные настройки видимости и отображения, экспорт-импорт без потерь,...). Если чего забыл или непонятно - обсудим.

>отделить данные от их отображений
В общем-то для SQLite получается слишком извращённая ситуация. Так что если не получится на SQLite многопользовательность (затраты на неё слишком велики) - придётся поднимать СУБД. Там точно получится, причём всё.
Пока что для SQLite всё идёт к тому, что БД меток ничего не будет знать о разных пользователях и будет максимум что не сохраняться целиком за раз + будет доступна на запись из нескольких сасов одновременно. То есть из полной модели пропадут поля ссылающиеся на пользователей, таблица пользователей (ну и логи заодно тоже), а таблички с настройками по пользователям отдадут свои последние поля родительским и тоже пропадут. Как-то так.

>это не столь сложно так, как у меток есть id
В СУБД это тривально, см. модель. В SQLite если относить настройки пользователя в профиль - это нетривиально, там нельзя обеспечить ссылочную целостность между базами, а если сложить пользовательские настройки в БД - при смене пользователя и смерти старого профиля она будет безосновательно пухнуть. И если в СУБД можно ОДНОЗНАЧНО понять, существует ли конкретный пользователь (логин), то в SQLite такого притерия не существует.

>к SID-у можно добавить RID
Насколько я знаю, SID в виде S-1-5-21-542808039-2109243029-4146833331-1012 (как он в HKEY_USERS) уже содержит RID.
Кроме того, SID имеет смысл только в том случае, если в БД нет своих пользователей. Для взрослой БД надо указывать логин-пароль (или заходить с доменным) - соответственно логин в БД и будет идентифицировать пользователя, без всяких SID-ов. Хотите разные настройки - заходите под разными логинами.
(0010321)
vasketsov   
04-01-2013 22:44   
>возможность каскадной визуализации категории меток
Нет. В реальности категории не ссылаются друг на дружку (это не папки), и каждая имеет свою видимость. Там дерево только виртуальное, чтобы ничего не загромождать и быстро сворачивать Поэтому я наоборот против такого поведения.

>если не получится на SQLite многопользовательность
Думаю что получится. Придумал завести одного фиктивного юзера и всё делать по умолчанию под ним. Оверхэд (относительно безюзерности) - декларация 4 таблиц, думаю что это будет 8k. Надо многих - измЕните одну опцию, и сами будете при необходимости при смерти юзеров в домене вычищать БД.
(0010328)
Fed   
05-01-2013 11:11   
>>возможность каскадной визуализации категории меток
>Нет. В реальности категории не ссылаются друг на дружку (это не папки), и каждая имеет свою видимость.
>Там дерево только виртуальное, чтобы ничего не загромождать и быстро сворачивать Поэтому я наоборот против такого поведения.
Механизм каскадной визуализации прост, можно сделать выбор использовать его или нет.