Project

General

Profile

Markup » History » Version 2

Alexey Demakov, 02/09/2011 12:55 PM

1 1 Alexey Demakov
h1. Разметка документов
2
3
При выделении части текста документа необходимо:
4
5
h2. Создать фрагмент документа, который будет вставляться в отчеты как текст требования.
6
7
Эта задача сейчас решается частично:
8
9
<pre>getSerializer().serializeToString( selection.getRangeAt(0).cloneContents() );</pre>
10
11
возвращает xhtml фрагмент для выделенной чсасти докумнта, но без учета контекста -
12
стилей и объемлющих тегов (например, pre).
13
14
h2. Пометить выделенную часть, чтобы показывать её в документе как текст требования.
15
16
В текущей версии выбираются все текстовые узлы DOM-дерева документа, которые пересекаются с выделенной областью, причем пересечение содержит непробельные символы, и оборачиваются в теги
17
18
<pre><span class="requality_text id_${uuid}">...</span></pre>
19
20
где uuid - это уникальный идентификатор location. 
21
Для текстовых узлов, которые не полностью содержатся в выделенной области, span оборачивает только часть, входящую в выделенную область.
22
23
В первый span добавляется
24
25
<pre><a name="${uuid}" id="id_${uuid}" class="requality_id"/></pre>
26
27
который позволяет позиционировать документ на выделенном тексте. И
28
29
<pre><span class="requality_link requality_link_(in)?visible">${id}</span></pre>
30
31
Который показывает идентификатор требования, к которому относится выделенный текст.
32
33
Таким образом, первый span имеет следующий вид:
34
35
<pre>
36
<span class="requality_text id_${uuid}">
37
    <a name="${uuid}" id="id_${uuid}" class="requality_id"/>
38
    <span class="requality_link requality_link_(in)?visible">${id}</span>
39
    ...
40
</span>
41
</pre>
42
43
requality_link_(in)?visible - означает, что есть стили requality_link_visible и requality_link_invisible, но применяется только один, который соответствует текущему режиму видимости идентификаторов.
44
45
Недостатки у такой схемы следующие:
46
47
* Если в выделенной части документа нет текста, то выделение заметно не будет.
48
* Конец выделенной части документа не помечается, поэтому восстановить выделение по разметке нельзя.
49
50
Второй недостаток при необходимости победить легко вставкой тега в конце выделенной части.
51
52
Для борьбы с первым недостатком необходимо добавлять стиль к узлам, которые не содержат текстовых узлов, а потом определять этот стиль так, чтобы узлы становились визуально отличны. Например, с помощью border.
53
54
Пример: если выделена картинка:
55
56 2 Alexey Demakov
<pre>
57 1 Alexey Demakov
<img src="..."/>
58 2 Alexey Demakov
</pre>
59 1 Alexey Demakov
60
Добавим ей стиль:
61
62 2 Alexey Demakov
<pre>
63 1 Alexey Demakov
<img style="requality_node id_${uuid}" src="..."/>
64 2 Alexey Demakov
</pre>