Гость
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Поиск в Tree / 13 сообщений из 13, страница 1 из 1
09.02.2010, 10:44
    #36456919
well9999
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск в Tree
Опять деревянный вопрос :).
Можно ли осуществить поиск по дереву?
Тоесть набрав в окне поиска слово, в дереве бы выделилась (и открылась) ветвь (узел) с соответствующим именем?
...
Рейтинг: 0 / 0
13.02.2010, 16:10
    #36467626
suPPLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск в Tree
well9999,

а как Вы формируете дерево?
...
Рейтинг: 0 / 0
16.02.2010, 09:04
    #36471623
well9999
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск в Tree
Создаю пустую страницу. На странице размещаю регион типа tree из Shared components. Дерево формирую на основе SQL запроса. Задаю стартовую строку, указываю деревянную таблицу. Ну и всё. Ещё добавляю линк для перехода на репорт.
...
Рейтинг: 0 / 0
27.02.2010, 17:54
    #36492607
suPPLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск в Tree
well9999,

извиняюсь, что с таким перерывом подымаю этот вопрос.
0. А что должно получиться в результате поиска? Допустим, у нас есть элемент типа Text, в который мы вводим строку для поиска в элементах дерева. Как пример дерева, можно взять:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
KING
--BLAKE
----ALLEN
----JAMES
------MARTIN
------TURNER
----WARD
--CLARK
----MILLER
--JONES
----FORD
------SMITH
----SCOTT
------ADAMS

Пользователь вводит 'A%'. Что должно остаться в этом дереве?
1. Поиск должен происходит с полным обновлением страницы или без сабмита?
...
Рейтинг: 0 / 0
03.03.2010, 16:56
    #36500419
well9999
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск в Tree
Вообще поиск по шаблону мне не надо.
Допустим ввожу в окне поиска "А", активной должна стать первая ветка начинающаяся на "А"(ALLEN).
Ввожу следующую букву "AD", активной должна стать первая ветка начинающаяся на "АD"(ADAMS).
Обновлять не обязательно. Пусть пользователь нажимает на ветку :)
...
Рейтинг: 0 / 0
10.03.2010, 17:27
    #36512306
suPPLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск в Tree
well9999,

В общем, вот что удалось получить при помощи JS+jQuery: http://apex.oracle.com/pls/otn/f?p=44528:32:0 . В двух словах:

0. Создано дерево на основе таблицы EMP.
1. В дереве изменены запрос, Node Text Templates и Link Templates:
Query
Код: plaintext
1.
2.
3.
4.
5.
6.
select "EMPNO" id, 
       "MGR" pid, 
       "ENAME" name, 
       'javascript:select($x(''a'|| "EMPNO" ||'''));' link, 
       null a1, 
       "EMPNO" a2 
from "#OWNER#"."EMP"
Parent Node Template
Код: plaintext
<tr class="test-class-row">#INDENT#<td colspan="#COLSPAN#" valign="CENTER"  class="tiny user-tree-node">#NAME##A1# #DRILL_UP#</td></tr>
Node Text Template
Код: plaintext
<tr class="test-class-row">#INDENT#<td colspan="#COLSPAN#" valign="CENTER" class="tiny user-tree-node">#NAME##A1#</td></tr>
Name Link Anchor Tag
Код: plaintext
<a href="#LINK#" nodeval="#NAME#" id="a#A2#" nodeid="#A2#">#NAME#</a>

2. На страницу добавляем элементы для ввода текста ( P32_SEARCH_ENAME ), хранения айдишника выбранного элемента в дереве ( P32_SELECTED_EMPNO ), а также HTML-регион с дивом ( id="SELECTED_DIV" ), в котором отображается айдишник выбранного элемента либо по клику, либо по нажатию Enter в текстовом поле.
3. В Footer региона с деревом вставляем стиль и скрипт:
Region Footer
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
<style>
  a.selected-node{
    color: darkblue;
    font-style: italic;
    margin-left: 20px;
  }
</style>
<script type="text/javascript">
  var lastResult;

  function getKeyNum(e){
    var keynum;
  
    if(window.event) // IE
    {
      keynum = e.keyCode
    }
    else if(e.which) // Netscape/Firefox/Opera
    {
      keynum = e.which
    }
    
    return keynum;
  }

  function mark(node){
    if (node) {
      node.addClass("selected-node");
      $s("P32_SELECTED_EMPNO", node.attr("nodeid"));
    }
  }
  
  function unmark(node){
     node ? node.removeClass("selected-node") : null;
  }

  function search(val, e){
    if (e && getKeyNum(e) ==  13 ){
      return false;
    }
    else {
      unmark(lastResult);
      if (!!val) {
        lastResult = $("td.user-tree-node a[nodeval^="+ val +"]:first");
        mark(lastResult);
      }
      else {$s("P32_SELECTED_EMPNO", "");}
      return true;
    }
  }
  
  function select(node){
    unmark(lastResult);
    lastResult = $(node);
    $s("P32_SEARCH_ENAME", lastResult.text());
    mark(lastResult);
    show();
  }
  
  function show(e){
    if (!e || getKeyNum(e) ==  13 ) {
      $s("SELECTED_DIV", $v("P32_SELECTED_EMPNO"));
      return false;
    }
    else {
      return true;
    }
  }
/* Ищем при загрузке региона уже введённую фразу */
search($v("P32_SEARCH_ENAME"));
</script>

4. В Footer региона для отображения айдишника выбранного элемента вставляем вызов соответствующей функции:
Region Footer
Код: plaintext
1.
2.
<script type="text/javascript">
  show();
</script>


Всё. :) Конечно, всё это стоит оформить красивее - в класс/пространство имён, добавить всякие проверки и прочее... Но лень, мне кажется, для примера сойдёт и так. Если будет нужно - могу намылить данные учётки разработчика, чтобы глянуть на всё изнутри.
...
Рейтинг: 0 / 0
17.03.2010, 17:00
    #36526723
well9999
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск в Tree
Спасибо большое!
...
Рейтинг: 0 / 0
06.07.2010, 11:33
    #36725058
well9999
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск в Tree
Привет всем!
Ещё раз затрагиваю эту тему.
Как осуществить поиск по дереву, если узел находится в закрытой ветви?
Как вариант сделать EXPAND ALL потом искать, но это будет тяжеловесно, да и нехотелось бы открывать ненужные ветви...
...
Рейтинг: 0 / 0
11.10.2010, 19:37
    #36893409
AlMoVi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск в Tree
Подниму тему, может подскажете.

Есть ли возможность при поиске при втором нажатии Enter, чтобы подсветка переходила на следующую запись, содержащую эти же символы?

П.С.

suPPLer
1. В дереве изменены запрос, Node Text Templates и Link Templates:
+
Query
Код: plaintext
1.
2.
3.
4.
5.
6.
select "EMPNO" id, 
       "MGR" pid, 
       "ENAME" name, 
       'javascript:select($x(''a'|| "EMPNO" ||'''));' link, 
       null a1, 
       "EMPNO" a2 
from "#OWNER#"."EMP"
+
Parent Node Template
Код: plaintext
<tr class="test-class-row">#INDENT#<td colspan="#COLSPAN#" valign="CENTER"  class="tiny user-tree-node">#NAME##A1# #DRILL_UP#</td></tr>
+
Node Text Template
Код: plaintext
<tr class="test-class-row">#INDENT#<td colspan="#COLSPAN#" valign="CENTER" class="tiny user-tree-node">#NAME##A1#</td></tr>
+
Name Link Anchor Tag
Код: plaintext
<a href="#LINK#" nodeval="#NAME#" id="a#A2#" nodeid="#A2#">#NAME#</a>


Не могли бы подсказать, это находиться в регионе дерева или темплейте? никак не могу найти(
...
Рейтинг: 0 / 0
11.10.2010, 19:59
    #36893449
suPPLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск в Tree
AlMoVi,

версию APEX озвучьте.
...
Рейтинг: 0 / 0
12.10.2010, 09:59
    #36893976
AlMoVi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск в Tree
suPPLer,


Application Express 4.0.1.00.03
...
Рейтинг: 0 / 0
12.10.2010, 21:06
    #36895829
AlMoVi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск в Tree
Все еще требуется помощь:)
...
Рейтинг: 0 / 0
12.10.2010, 21:55
    #36895875
suPPLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск в Tree
AlMoVi,

изначально в этой теме разговор шёл про версию 3.x. В версии 4.0 для формирования деревьев используется плагин jsTree (причём, ЕМНИП, уже устаревшая версия). Поэтому Вам придётся почитать документацию этого плагина и освоить хоть немного JavaScript. А дальше - дело за Dynamic Action и соответствующим JavaScript-кодом...
...
Рейтинг: 0 / 0
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Поиск в Tree / 13 сообщений из 13, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]