Выделение прямоугольником в SVG

Issue #250 closed
Former user created an issue

Originally reported on Google Code with ID 250

Создан тестовый jsfiddle для удобства работы. После того, как код будет написан и отлажен,
он будет интегрирован в мудл.

Ссылка:
http://jsfiddle.net/XLZ8W/17/

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

Reported by grvlter on 2013-11-24 20:31:56

Comments (48)

  1. Oleg Sychev repo owner
    Issue 241 has been merged into this issue.
    

    Reported by oasychev on 2013-11-25 13:33:16

  2. Former user Account Deleted
    Нашёл библиотечку, решающую проблему. В архиве приложен пример работы. Он пока не учитывает
    некоторых мелочей, которые будут исправлены позже. Прикрепляю архив сюда, что бы не
    потерять...
    

    Reported by grvlter on 2013-11-27 19:07:48

    <hr> * Attachment: resize.rar

  3. Oleg Sychev repo owner
    Лучше помимо архива напишите тут ссылку на эту библиотечку. Я гляну пару простых признаков
    о ее надежности....
    

    Reported by oasychev on 2013-11-27 20:09:23

  4. Oleg Sychev repo owner
     Valeriy:  по 250
     Отправлено в 0:05, четверг
     Valeriy:  http://interface.eyecon.ro/demos/resize.html
     Отправлено в 0:05, четверг
     я:  оно там нарочно не на всю картинку работает?
     Отправлено в 0:07, четверг
     я:  гм. последний ньюс на сайте - январь 2007, и сайт какой-то глюковатый
    я бы осторожнее с этим делом был...
    возможно под современные браузеры не заработает нормально...
     Отправлено в 0:09, четверг
     я:  и вообще это не совсем то, что надо - классический резиновый прямоугольник начинается
    с клика мышью и заканчивается ее отпусканием...
    

    Reported by oasychev on 2013-11-27 21:26:54

  5. Former user Account Deleted
    По поводу размеров прямоугольника: он нарочно не на всю картинку, в скрипте заданы минимальные
    и максимальные размеры, которые в нашем случае могли бы задаваться динамически. В архиве,
    который я прикрепил к посту выше, прямоугольник может быть на всю страницу, это поправимо.
    По поводу классического резинового прямоугольника: можно задать координаты маркеров
    по нажатию и отпусканию мыши, эта проблема решаема.
    Стоит искать новую библиотечку или дописать этот код?
    

    Reported by grvlter on 2013-11-28 13:16:54

  6. Oleg Sychev repo owner
    Зависит от того, насколько легко найти новую библиотечку.
    Код похоже очень старый и давно не поддерживается - поищите последний коммит в репозитории,
    есть конечно вариант что сайт не поддерживается, а код поддерживается - но врядли.
    Если использовать - его надо тщательно проверить на всех современных браузерах, надеяться
    по умолчанию что он в хорошем состоянии нельзя...
    

    Reported by oasychev on 2013-11-28 21:08:12

  7. Former user Account Deleted
    Обновлён код выделения. Теперь прямоугольник появляется при клике мышью.
    

    Reported by grvlter on 2013-12-03 19:47:44

    <hr> * Attachment: resize.rar

  8. Former user Account Deleted
    Новая версия выделения. Добавлен check box, активируюищй режим выделения + кнопки отправки
    на сервер координат и отмены выделения.
    

    Reported by grvlter on 2013-12-10 19:09:53

    <hr> * Attachment: resize.rar

  9. Oleg Sychev repo owner
    Сделайте отдельный клон - так будет удобнее тестировать, чем при выкладывании архивом.
    Или коммитьте-выталкивайте, ревертнуть можно....
    

    Reported by oasychev on 2013-12-15 17:19:59

  10. Former user Account Deleted
    1) Для выделения на форму было добавлено 2 виджета: чек бокс, активирующий режим выделения
    и кнопка отправки выделения на сервер. Нужна ли кнопка на форме, или пусть пользователь
    выделить прямоугольником и он сразу обработается?
    2) Как лучше проверять, попал узел в выделение или нет?
    а) рассчитать координату центра фигуры и проверять её;
    б) если хотя бы какая-то часть фигуры попала в выделение, то выделить фигуру.
    

    Reported by grvlter on 2014-01-27 20:40:27

  11. Oleg Sychev repo owner
    1)Кнопка я думаю не нужна - обычно выделение прямоугольником срабатывает по отпусканию
    мыши
    2) посмотреть на corel draw, Qt Designer и т.д. - когда там частично захвачен объект,
    он выделяется? По идее есть общепринятый вариант...
    

    Reported by oasychev on 2014-01-27 20:54:49

  12. Former user Account Deleted
    1) по поводу наличия кнопки могу сказать, что:
    а) дерево может не помещаться в видимой области, в режиме выделения прямоугольником
    panzoom отключены и пользователь мог бы выделить часть дерева, прокрутить картинку,
    довыделить ещё часть дерева и только после этого отправить. 
    в этом случае можно попробовать оставить только zoom, но опять же дерево может быть
    настролько большим/экран настолько маленьким, что возможность довыделения могла бы
    быть полезной.
    б) инструмент работает не мгновенно, пользователю нужно подождать некоторое время,
    что бы увидеть результат. и, если он понял, что выделил не так, как хотелось, ему придётся
    дождаться новой картинки и выделить снова.
    По этому поводу могу сделать 2 версии: с кнопкой и без, и можем их сравнить уже в действии.
    

    Reported by grvlter on 2014-01-28 06:35:29

  13. Former user Account Deleted
    Не могу прикрутить корректно панзум для дерева: если он прикручен к картинке дерева,
    то координаты выделения прямоугольником отсчитываются от корня DOM-дерева высплывающей
    формы, если же панзум не прикручен к картинке, то координаты отсчитываются от div,
    в котором лежит картинка. С чем это может быть связано? Пытались с Валерием подобрать
    css-стили для картинки и прямоугольника с выделением, но пока не получилось... Какие
    есть идеи по поводу решения данной проблемы?
    

    Reported by grvlter on 2014-02-11 19:31:55

  14. Oleg Sychev repo owner
    А в чем конкретно проблема? Я так понимаю раньше у нас было переключение - либо выделение
    прямоугольником, либо пан/зум - потому что нажатие кнопки мыши это и пан и выделение.
    Хотя конечно полезно было бы чтобы зум оставался в режиме выделения.
    
    Если выделение и пан/зум можно подружить, то остается один вариант - или с координатами
    от корня DOM-дерева все слишком плохо? Нельзя найти координаты div картинки и пересчитать
    в локальную систему координат?
    

    Reported by oasychev on 2014-02-12 09:02:22

  15. Former user Account Deleted
    Теперь панзум и выделение прямоугольником работают корректно.
    

    Reported by grvlter on 2014-02-15 18:03:14 - Status changed: Fixed

  16. Valeriy Streltsov
    У меня пропадают кнопки\радиокнопки выделения. Открываю окно, сначала их видно, когда
    приходят картинки кнопки пропадают.
    
    И что-то странное с горизонтальными скроллбарами. Они видны, но по факту не скроллят
    - только панзум работает.
    

    Reported by vostreltsov on 2014-02-17 13:32:51 - Status changed: InProgress

  17. Valeriy Streltsov
    Регекс: char\s+str\s*\[\s*(4|)\s*\]\s*\[\s*3\s*\]\s*=\s*{\s*{\s*'д'\s*,\s*'е'\s*,\s*'ё'\s*}\s*,\s*{\s*'ж'\s*,\s*'з'\s*,\s*'и'\s*}\s*,\s*{\s*'й'\s*,\s*'к'\s*,\s*'л'\s*}\s*,\s*{\s*'м'\s*,\s*'н'\s*,\s*'о'\s*}\s*}\s*;+
    
    А скроллбары предлагаю вообще убрать
    

    Reported by vostreltsov on 2014-02-17 13:53:28

  18. Oleg Sychev repo owner
    Ну теоретически лучше всего убирать скроллбары когда картинка меньше зоны отображения
    и ставить, когда она больше.... Хотя при пане конечно это немного излишне...
    

    Reported by oasychev on 2014-02-17 18:09:52

  19. Oleg Sychev repo owner
    Но Валерий, ситуацию со скролл-барами и вообще пан/зум надо обсуждать в #240. Здесь
    вопросы, связанные с выделением прямоугольником...
    

    Reported by oasychev on 2014-02-17 18:16:53

  20. Oleg Sychev repo owner
    У меня сейчас дерева не видно вовсе, а остальное работает (клон Стрельцова)
    

    Reported by oasychev on 2014-02-20 22:10:38

  21. Former user Account Deleted
    Исправил баг с виджетами + установил чистый мудл и поставил на него прег из своего клона:
    всё работает.
    

    Reported by grvlter on 2014-02-21 11:47:59 - Status changed: Fixed

  22. Oleg Sychev repo owner
    Разбираемся с выделением в графе - именно там оно нужно.
    

    Reported by oasychev on 2014-02-21 20:56:13 - Status changed: InProgress

  23. Former user Account Deleted
    Убрал выделение прямоугольником из дерева, пофиксил его в графе
    

    Reported by grvlter on 2014-02-22 18:34:58 - Status changed: Fixed

  24. Oleg Sychev repo owner
    Ну до fixed я так понимаю нам далеко.
    Надо обеспечить в графе возможность выделения не только узлов, но и кластеров, и некоторых
    дуг...
    

    Reported by oasychev on 2014-02-22 19:39:52 - Status changed: InProgress

  25. Former user Account Deleted
    Выделение прямоугольником захватывает все полигоны, которые в него попали и рассматривает
    каждый в отдельности. Остаётся проблема с генерацией карты.
    

    Reported by grvlter on 2014-02-22 20:09:28

  26. Oleg Sychev repo owner
    Компьютер потестить будет в понедельник. Но ключевой вопрос - если например a+b регекс
    - можно ли выделить через граф a+ прямоугольником?
    
    Если получается, то остается вопрос с выделением пустоты и простых ассертов, которые
    представлены дугами. Но у дуг есть начало и конец, можно выработать какие-то правила
    от этого - либо выделять если попало что-то одно, либо если и начало и конец вместе...
    

    Reported by oasychev on 2014-02-22 21:13:41

  27. Former user Account Deleted
    Копание в документации Graphiz'а дало плоды - на рёбра можно генерировать карту при
    некоторых условиях. Эти условия вполне выполнимы, так что всё будет как мы хотим.
    

    Reported by ZluMYO on 2014-02-23 08:28:16

  28. Oleg Sychev repo owner
    Выделение прямоугольником не захватывает весь рисунок - есть какая-то граница, в которую
    оно упирается до конца картинки. Лучше всего заметно если изменить масштаб так, чтобы
    граф оказался очень маленьким - выделить полностью большие прямоугольники квантификаторов
    (подвыражений), сконкатенированных в верхний уровень регекса при этом невозможно.
    

    Reported by oasychev on 2014-03-10 21:32:06

  29. Former user Account Deleted
    Реализован расчёт точки центра тяжести для полигонов являющихся прямоугольниками. Это
    должно решить проблему выделения рёбер графа, которые являются прямыми линиями.
    

    Reported by ZluMYO on 2014-03-16 07:50:39

  30. Former user Account Deleted
    Если вы имели ввиду про выделение подвыражения вот такую ситуацию: http://prntscr.com/31bhh6
    , то теперь исправлено.
    

    Reported by grvlter on 2014-03-16 14:27:57

  31. Former user Account Deleted
    По мимо этого теперь прямые линии не нужно полностью захватывать в прямоугольник, что
    даёт возможно выделять простые ассерты. http://yadi.sk/d/MgO1zPQfKdhNo
    

    Reported by ZluMYO on 2014-03-16 18:06:34

  32. Oleg Sychev repo owner
    1. После использования выделения прямоугольником в дереве пропадает свертка - все дерево
    разворачивается.
    И, похоже, вообще пропадает возможность выделения/свертки в дереве - на клики оно не
    реагирует.
    
    2. У меня при регексе a(^b|c)*de+ и попытке выделить d или e или оба вместе - стабильно
    зависает. Проверить - может быть конечно и гейзенбаг, но другие места выделяются без
    проблем - а здесь я так ни разу выделения и не получил.
    

    Reported by oasychev on 2014-03-21 17:25:29

  33. Former user Account Deleted
    1. теперь работает
    2. после последних правок у меня всё успешно выделяется
    

    Reported by grvlter on 2014-04-09 19:36:39 - Status changed: Fixed

  34. Valeriy Streltsov
    У меня после нескольких попыток выделения скрипт начинает жутко тормозить (именно js)
    Попробуйте повыделять "пустоту", то есть не захватывая узлов. Не знаю, имеет ли это
    значение.
    

    Reported by vostreltsov on 2014-04-18 10:58:25 - Status changed: InProgress

  35. Former user Account Deleted
    Теперь тормозить не должно
    

    Reported by grvlter on 2014-05-05 16:40:26 - Status changed: Fixed

  36. Oleg Sychev repo owner
    Выделение прямоугольником работает по прежнему очень странно - сильно хватает влево
    и совершенно не забирает вправо. Оно что, по концу стрелки реагирует что ли? Проверено
    на 2-х сайтах...
    

    Reported by oasychev on 2014-05-13 15:18:54 - Status changed: InProgress - Labels added: Priority-High - Labels removed: Priority-Medium

  37. Former user Account Deleted
    Приведите пожалуйста пример, желательно скриншот. Я пытался повыделять, и вроде всё
    нормально.
    

    Reported by ZluMYO on 2014-05-16 10:09:21

  38. Oleg Sychev repo owner
    (|they(\s*'\s*|\s+a)re\s+)colou?rs
    Скриншот без прямоугольника смысла не имеет.
    

    Reported by oasychev on 2014-05-16 13:23:41

  39. Former user Account Deleted
    Вытолкнул изменения связанные с выделением прямоугольником. Во-первых, убрано выделение
    конкатенации. Во-вторых, теперь для выделения дуги графа (например, для пустоты в альтернативе)
    нужно чтобы в прямоугольник попала область, которая отстоит от начальной и конечной
    точек на 15% от длины дуги.
    

    Reported by ZluMYO on 2014-05-18 12:24:47

  40. Oleg Sychev repo owner
    После обновления на edu.vstu.ru с чисткой всех кешей выделение прямоугольником вообще
    перестало что-либо выделять. Прямоугольник остается и все. Выделение через дерево работает...
    

    Reported by oasychev on 2014-05-19 20:52:38

  41. Former user Account Deleted
    Можем ли мы как-то получить доступ к инструментам на edu.vstu.ru и посмотреть самим,
    что не так? Сегодня проверяли репозиторий Пахомова, у нас работает...
    

    Reported by grvlter on 2014-05-20 08:49:31

  42. Former user Account Deleted
    Вытолкнул исправление, которое по идее должно данную ситуацию исправить.
    

    Reported by ZluMYO on 2014-05-22 18:28:07

  43. Oleg Sychev repo owner
    Теперь оно как-то работает, но работает по прежнему странно.
    а) Так и не удалось выделить квантификатор - выделяется только то, что внутри
    б) Иногда полностью попавший в прямоугольник узел не выделяется. Один раз словил ситуацию,
    когда при передвижении мыши при увеличении размера прямоугольника узел терял "полупрозрачность"
    (я так понимаю означает, что попадет в выделение) а при уменьшении - возвращал, что
    странно очень.
    

    Reported by oasychev on 2014-05-25 22:03:01

  44. Oleg Sychev repo owner
    Проблемы похоже опять на edu - на том же вопросе. Посмотрите.
    

    Reported by oasychev on 2014-05-26 20:50:05

  45. Former user Account Deleted
    хром 35, ошибок нет. 
    

    Reported by TOPT.iiiii on 2014-05-28 13:14:55

  46. Former user Account Deleted
    Теперь поддерживается разметка SVG как старой так и новой версий.
    

    Reported by ZluMYO on 2014-06-01 09:39:35

  47. Oleg Sychev repo owner
    Поведение стало гораздо предсказуемей, но выделить квантификатор (со старым DOT если
    что) мне так и не удается - выделяется то, что внутри только. Кто-то может проверить
    с разными версиями DOT - и отладить?
    

    Reported by oasychev on 2014-06-13 22:59:44

  48. Oleg Sychev repo owner
    Вроде работает. Если что - будут новые issue.
    

    Reported by oasychev on 2014-07-10 18:26:13 - Status changed: Done

  49. Log in to comment