|
|
|
Не могу сообразить как организовать "динамически догружаемые" деревья
|
|||
|---|---|---|---|
|
#18+
Не могу сообразить как организовать "динамически догружаемые" деревья. Есть древовидный большой справочник - порядка 30000 позиций. Так вот проблема в том, что написанный на JS (всё дерево храниться в древовидном массиве - дополнительно подключаемом JS) ужасно долго (30сек) открывается на нормальной тачке. Я так понял IE съедает сам массив долго. На машинах попроще - в разы дольше 8-(=). Подумал про технологию "динамически подружаемых деревьев". То есть хочется например сразу построить дерево на пару уровней, а далее если пользователь внутрь поползёт - подливать недостающее содерживое в массив с сервера БД. Мысли на этот счёт: Если через PHP делать запрос на сервер то конечно можно сформировать новый JS массив, но как его "исполнить" и заставить скрипт на странице "увидеть" новый массив. Как-то нужно пнуть открытие выбранной ветки дерева. Не понимаю как после выполнения PHP вернуть ход на сторону JS. P.S. Сами ветки - это просто "<A HREF=". Сделать что ли кнопку фиктивную и с HREF позвать функцию которая фиктивно нажмёт кнопку, а по возвращению шарика на сторону клиента КАК-ТО допишет массив полученным ПОДмассивом. Не знаю сработает ли такая связка ... Прошу совета и критических замечаний ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2007, 17:32 |
|
||
|
Не могу сообразить как организовать "динамически догружаемые" деревья
|
|||
|---|---|---|---|
|
#18+
Из чего формируется массив? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2007, 17:40 |
|
||
|
Не могу сообразить как организовать "динамически догружаемые" деревья
|
|||
|---|---|---|---|
|
#18+
AJAX ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2007, 17:42 |
|
||
|
Не могу сообразить как организовать "динамически догружаемые" деревья
|
|||
|---|---|---|---|
|
#18+
AntonariyИз чего формируется массив? Не очень понял вопрос. Суть пара таблиц в БД (таблица сущностей и таблица зависимостей). На странице выглядит как труктура из картинок (+/-) и имени (ссылка HREF с вызовом функии раскрытия/зкрытия). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2007, 17:47 |
|
||
|
Не могу сообразить как организовать "динамически догружаемые" деревья
|
|||
|---|---|---|---|
|
#18+
}{мм. А зачем тогда как-то связывать массивы? Получили данные на корень + инфу о наличии потомков у его членов, построили узлы, забыли. Кликнули пор узлу - получили его идентификатор - получили список его членов + инфу о наличии потомков, достроили, показали, забыли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2007, 17:48 |
|
||
|
Не могу сообразить как организовать "динамически догружаемые" деревья
|
|||
|---|---|---|---|
|
#18+
SkyLightAJAX Если можно чуть подробнее скажите возможности которые он предоставит для моей задачи. Напомню, что всё должно строиться на базе живых данных из базы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2007, 17:49 |
|
||
|
Не могу сообразить как организовать "динамически догружаемые" деревья
|
|||
|---|---|---|---|
|
#18+
Нужно посмотреть структуру дерева и запрос, на основании которого оно строится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2007, 17:50 |
|
||
|
Не могу сообразить как организовать "динамически догружаемые" деревья
|
|||
|---|---|---|---|
|
#18+
Antonariy}{мм. А зачем тогда как-то связывать массивы? Получили данные на корень + инфу о наличии потомков у его членов, построили узлы, забыли. Кликнули пор узлу - получили его идентификатор - получили список его членов + инфу о наличии потомков, достроили, показали, забыли. Для автономности. Если закрыли ветку - при открытии снова тащить данные из базы что ли ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2007, 17:50 |
|
||
|
Не могу сообразить как организовать "динамически догружаемые" деревья
|
|||
|---|---|---|---|
|
#18+
AntonariyНужно посмотреть структуру дерева и запрос, на основании которого оно строится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2007, 17:51 |
|
||
|
Не могу сообразить как организовать "динамически догружаемые" деревья
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2007, 17:52 |
|
||
|
Не могу сообразить как организовать "динамически догружаемые" деревья
|
|||
|---|---|---|---|
|
#18+
dennny , ты ж про аякс не в курсе, не обращай внимания на мои предыдущие посты. Восплльзуйся поиском - "ajax" + "дерево" или "tree". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2007, 17:53 |
|
||
|
Не могу сообразить как организовать "динамически догружаемые" деревья
|
|||
|---|---|---|---|
|
#18+
Приложил страничку где отображается и скрипт с массивом. Запрос не запрос - проход по веткам с использованием врем. таблицы. CodeMain PROCEDURE MonCustomerTree AS BEGIN IF (SELECT count(1) from SysObjects where name='#MonBranchTreeResult')=0 CREATE TABLE #MonBranchTreeResult (Line varchar(200)) IF (SELECT count(1) from SysObjects where name='#BranchTree')=0 BEGIN CREATE TABLE #BranchTree (OwnerID varchar(15), TreeID varchar(15), TreeName#Rus varchar(100), TreeIntID int, Tree_Object varchar(15)) CREATE INDEX CT_OwnerID ON #BranchTree (Tree_Object, OwnerID) CREATE INDEX CT_OwnerID_TreeID ON #BranchTree (Tree_Object, OwnerID, TreeID) END INSERT INTO #MonBranchTreeResult values ('var s = "''";'); INSERT INTO #MonBranchTreeResult values ('var myMenu = ['); DECLARE SpbCustFillials CURSOR FOR SELECT TreeID, TreeName#Rus FROM MonTree WHERE Tree_Object='CompanyTree' and OwnerID='13285' and isnumeric(TreeID)<>1 ORDER BY TreeID DECLARE @TreeID varchar(15), @TreeName varchar(100) OPEN SpbCustFillials FETCH NEXT FROM SpbCustFillials INTO @TreeID, @TreeName WHILE @@Fetch_Status=0 BEGIN INSERT INTO #MonBranchTreeResult VALUES ('[null,'''+@TreeName+''',''SelectItem1 (''+s+'''+@TreeName+'''+s+'',''+s+'''+@TreeID+'''+s+'')'',''customers'',s+'''+@TreeID+'''+s,') EXECUTE MonTreeBranch @OwnerID=@TreeID, @Tree_Object='CompanyTree' FETCH NEXT FROM SpbCustFillials INTO @TreeID, @TreeName INSERT INTO #MonBranchTreeResult VALUES ('],'); END; INSERT INTO #MonBranchTreeResult VALUES (']; ctDraw (''myMenuID'', myMenu, ctThemeXP1, ''ThemeXP'', 0, 0);'); SELECT Line FROM #MonBranchTreeResult TRUNCATE TABLE #MonBranchTreeResult DEALLOCATE SpbCustFillials END CodeBranch PROCEDURE MonTreeBranch (@OwnerID varchar(15), @Tree_Object varchar(15)) AS BEGIN DECLARE @tID varchar(15), @TName varchar(100) DECLARE @TIntID int, @RecNo int INSERT INTO #BranchTree SELECT @OwnerID, TreeID, TreeName#Rus, TreeIntID, @Tree_Object FROM MonTree T WHERE Tree_Object=@Tree_Object AND OwnerID=@OwnerID ORDER BY TreeID SELECT @RecNo=count(1) FROM #BranchTree WHERE ID=@OwnerID WHILE @RecNo>0 BEGIN SET ROWCOUNT 1 SELECT @tID=TreeID, @TName=TreeName#Rus, @TIntID=TreeIntID FROM #BranchTree WHERE OwnerID=@OwnerID and Tree_Object=@Tree_Object ORDER BY TreeID SET ROWCOUNT 0 IF (SELECT COUNT(1) FROM MonTree T WHERE Tree_Object=@Tree_Object AND OwnerID=@tID) > 0 BEGIN INSERT INTO #MonBranchTreeResult VALUES ('[null,'''+@TName+''','+'''SelectItem (''+s+'''+@tName+'''+s+'''+',''+s+'''+@tID+'''+s+'')'+char(39)+','+char(39)+'customers'+char(39)+',s+'''+@tID+'''+s,') EXECUTE MonTreeBranch @OwnerID=@tID, @Tree_Object=@Tree_Object INSERT INTO #MonBranchTreeResult VALUES ('],') END ELSE INSERT INTO #MonBranchTreeResult VALUES ('[null,'''+@TName+''','+'''SelectItem (''+s+'''+@tName+'''+s+'''+',''+s+'''+@tID+'''+s+'')'+char(39)+','+char(39)+'customers'+char(39)+',s+'''+@tID+'''+s],') DELETE FROM #BranchTree WHERE OwnerID=@OwnerID AND TreeID=@tID AND Tree_Object=@Tree_Object SELECT @RecNo=count(1) FROM #BranchTree WHERE ID=@OwnerID AND Tree_Object=@Tree_Object END END ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2007, 17:55 |
|
||
|
Не могу сообразить как организовать "динамически догружаемые" деревья
|
|||
|---|---|---|---|
|
#18+
Вообщем-то можно и плюнуть на ведение всего масива данной секции. И самое главное - 1) как со ссылки HREF позвать PHP скрипт и получив данные вернуть ход JS для отрисовки данных полученных открытой ветки 2) как получить данные от PHP в JS. Вероятно использовать некое уникальное для сесси временное имя JS куда PHP сгенерит скрипт дорисовки недостающей ветки ? А можно ли тогда окно для исполнения этого скрипта сделать невидимым ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2007, 18:02 |
|
||
|
Не могу сообразить как организовать "динамически догружаемые" деревья
|
|||
|---|---|---|---|
|
#18+
Все уже было сказано. Слушать совета Antonariy - юзать Гугл. Можно и прямо: http://www.w3schools.com/ajax/default.asp (это если англицкий знаешь). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2007, 18:24 |
|
||
|
Не могу сообразить как организовать "динамически догружаемые" деревья
|
|||
|---|---|---|---|
|
#18+
можно и по-русски статья книжка Данные можно подгружать без перезагрузки страницы в формате JSON . Его даже парсить не надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2007, 18:30 |
|
||
|
Не могу сообразить как организовать "динамически догружаемые" деревья
|
|||
|---|---|---|---|
|
#18+
dennnyНе могу сообразить как организовать "динамически догружаемые" деревья. Есть древовидный большой справочник - порядка 30000 позиций. Я в свое время сделал это с использованием Yahoo!UI library (http://developer.yahoo.net/yui/). Получилось вот что, например: https://www.catalog-on-demand.com/webcatalogs/edgemkt/reference_catalog_3/ Как раз Ваши 30000 позиций по продуктам и еще 1...10 SKU по каждому. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2007, 19:48 |
|
||
|
Не могу сообразить как организовать "динамически догружаемые" деревья
|
|||
|---|---|---|---|
|
#18+
М.Голованов Я в свое время сделал это с использованием Yahoo!UI library (http://developer.yahoo.net/yui/). Получилось вот что, например: https://www.catalog-on-demand.com/webcatalogs/edgemkt/reference_catalog_3/ Как раз Ваши 30000 позиций по продуктам и еще 1...10 SKU по каждому. не слишком то резво открывается 8( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2007, 19:56 |
|
||
|
Не могу сообразить как организовать "динамически догружаемые" деревья
|
|||
|---|---|---|---|
|
#18+
Ошибся - грузиться хорошо. Подскажите пример использования JSON. Наверно это будет лучше для моего приложения ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2007, 20:05 |
|
||
|
Не могу сообразить как организовать "динамически догружаемые" деревья
|
|||
|---|---|---|---|
|
#18+
Тебе дали ссылку на сайт, посвященный JSON. Что непонятно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2007, 10:47 |
|
||
|
Не могу сообразить как организовать "динамически догружаемые" деревья
|
|||
|---|---|---|---|
|
#18+
Не вижу примера использования - лишь оторванные куски кода. Закиньте пример использования у кого есть ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2007, 11:00 |
|
||
|
Не могу сообразить как организовать "динамически догружаемые" деревья
|
|||
|---|---|---|---|
|
#18+
сервлет Код: plaintext 1. 2. 3. 4. 5. 6. клиент Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2007, 13:53 |
|
||
|
Не могу сообразить как организовать "динамически догружаемые" деревья
|
|||
|---|---|---|---|
|
#18+
dennny М.ГоловановПолучилось вот что, например: не слишком то резво открывается 8( А что Вы хотите? Это же Ajax. Это приложение тащит с собой хорошую пачку Javascript модулей (к счастью, сжатых), поэтому ПЕРВЫЙ раз и грузится долго. Потом кэш браузера спасает. Потом, там задействован не только TreeView из Yahoo!UI library , но и Container (модальные диалоги и прочее). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2007, 09:39 |
|
||
|
Не могу сообразить как организовать "динамически догружаемые" деревья
|
|||
|---|---|---|---|
|
#18+
Всё сделал без лишней JS дабы обеспечить работоспособность на слабых тачках филиалов. Я просто вызываю PHP и оттуда изменённой дерево возвращаю. Всем БОЛЬШОЕ спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2007, 10:29 |
|
||
|
|

start [/forum/topic.php?fid=22&msg=34566683&tid=1458169]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
167ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
| others: | 234ms |
| total: | 516ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...