ФорумПрограммированиеJavaScript → [Ext JS] Загрузка узлов в Ext.tree.Panel с сервера

[Ext JS] Загрузка узлов в Ext.tree.Panel с сервера

  • KiberHawk

    Сообщения: 11 Репутация: N Группа: Кто попало

    Spritz 6 июня 2011 г. 20:12

    Приветствую… Наткнулся тут на вашем форуме на темку про Ext JS, почитал, люди вроде как знающие…может кто сможет помочь.
    Проблемка вот в чем: у меня есть собственно дерево с рутом, нужно сделать запрос на сервер, получить узлы и отобразить в дереве…вроде все просто, только не выходит… Проглядел уже все что мог найти и API docs от разрабов, и всякие руководства и примеры, все равно никак не пойму где ошибаюсь :(

    Эм, надеюсь ссылки на сторонние ресурсы тут разрешены?:) Код javascripta и php можно поглядеть вот в этой темке на форуме винграда:
    http://forum.vingrad.ru/forum/topic-331553.html

    Буду рад любой помощи, устал уже об стенку головой стучаться :)
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 6 июня 2011 г. 21:26, спустя 1 час 13 минут 55 секунд

    Эм, надеюсь ссылки на сторонние ресурсы тут разрешены?:)

    а то блеядь! тут можно даже сискьи публиковать и хуй!
    Спустя 68 сек.
    по теме - ты чтото необычное пытаешься сделать или у тебя пример из доки не работает?

    Сапожник без сапог
  • KiberHawk

    Сообщения: 11 Репутация: N Группа: Кто попало

    Spritz 6 июня 2011 г. 22:18, спустя 52 минуты 51 секунду

    В том то и дело, что я пытаюсь сделать самую обычную весч для данного фреймворка: загрузить данные в контейнер с сервака…
    Все пишу как показано в примерах и статьях…там работает, у меня - нет…Правда примеры и статьи по большей части для 3 версии, а у меня 4…кое-какие отличия заметны, но не могли же они все полностью перелопатить…это, так сказать, базовый функционал…
    Спустя 133 сек.
    А…да…по ссылке в первом посте код моих файлов :) Если надо могу и сюда запостить…просто лень немного :)
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 6 июня 2011 г. 22:28, спустя 9 минут 9 секунд

    ты отлаживать то не умеешь? если ты используешь firefox, то поставь firebug (getfirebug.com) на вкладке console будут ошибки если они возникают в яваскрипте.

    если ты не используешь огнелиса, то ты бот и должен поставить огнелиса
    Сапожник без сапог
  • KiberHawk

    Сообщения: 11 Репутация: N Группа: Кто попало

    Spritz 6 июня 2011 г. 23:58, спустя 1 час 30 минут 4 секунды

    Использую :) В том и суть…лис (точнее консоль FireBug) показывает что ответ от сервера получен, ответ сервера приходит в нужном формате. Элементы в store попадают…ни ошибок, ничего…совсем ничего не происходит. А должно строится дерево с загружеными узлами.
  • truth4oll

    Сообщения: 463 Репутация: N Группа: Адекваты

    Spritz 7 июня 2011 г. 0:35, спустя 37 минут 34 секунды

    ну а код то приведи
  • KiberHawk

    Сообщения: 11 Репутация: N Группа: Кто попало

    Spritz 7 июня 2011 г. 12:18, спустя 11 часов 42 минуты 27 секунд

    По просьбам трудящихся….яваскрипт:


    <html>
    <head>
    <title>Test Task Window</title>

    <link rel="stylesheet" type="text/css" href="../ext-4.0.1/resources/css/ext-all.css">
    <script type="text/javascript" src="../ext-4.0.1/adapter/ext/ext-base.js"></script>
    <script type="text/javascript" src="../ext-4.0.1/ext-all-debug.js"></script>

    </head>
    <body>

    <script type="text/javascript">

    Ext.onReady(function() {

    var store = Ext.create('Ext.data.TreeStore', {
    proxy: {
    type: 'ajax',
    url: 'Nodes.php'
    },
    root: {
    text: 'TaskTree',
    id: 'RId',
    expanded: true
    },
    storeId: 'MyStore',
    folderSort: true,
    sorters: [{
    property: 'text',
    direction: 'ASC'
    }],
    listeners: {
    load: {
    fn: function(stor, rec, res){
    console.log(stor);
    console.log(rec);
    console.log(res);
    }
    }
    }
    });


    var tree = new Ext.tree.TreePanel({
    id: 'tree',
    store: store,
    useArrows: true,
    editable: true,
    animate: true,
    autoScroll: true,
    });

    new Ext.window.Window({
    title: 'Window for Tree',
    height: 200,
    width: 250,
    items: [tree]
    }).show();


    });

    </script>

    </body>
    </html>



    <?php

    class TreeNode {

    public $text = "";
    public $id = "";
    public $iconCls = "";
    public $leaf = true;
    public $draggable = false;
    public $href = "#";
    public $hrefTarget = "";

    function __construct($id,$text,$iconCls,$leaf,$draggable,
    $href,$hrefTarget) {

    $this->id = $id;
    $this->text = $text;
    $this->iconCls = $iconCls;
    $this->leaf = $leaf;
    $this->draggable = $draggable;
    $this->href = $href;
    $this->hrefTarget = $hrefTarget;
    }
    }

    class TreeNodes {

    protected $nodes = array();

    function add($id,$text,$iconCls,$leaf,$draggable,
    $href,$hrefTarget) {

    $n = new TreeNode($id,$text,$iconCls,$leaf,
    $draggable,$href,$hrefTarget);

    $this->nodes[] = $n;
    }

    function toJson() {
    return json_encode($this->nodes);
    }
    }

    $requestedNode = "";

    if (isset($_REQUEST["node"])) {
    $requestedNode = $_REQUEST["node"];
    }
    $treeNodes = new TreeNodes();

    //if ('rootId' == $requestedNode) {
    $treeNodes->add("node-datasources","Datasources","",false,false,"","");
    $treeNodes->add("node-reports","Reports","",false,false,"","");
    /*} else if ('node-datasources' == $requestedNode) {
    $treeNodes->add("employees-system-node","Employee Management System","datasource",true,false,"","");
    $treeNodes->add("customers-system-node","Customer Management System","datasource",true,false,"","");
    $treeNodes->add("order-system-node","Order Processing System","datasource",true,false,"","");
    } else if ('node-reports' == $requestedNode) {
    $treeNodes->add("time-report-node","Time and Attendance","report",true,false,"","");
    $treeNodes->add("orders-by-quarter-report-node","Orders By Quarter","report",true,false,"","");
    $treeNodes->add("customers-trends-report-node","Customer Trends","report",true,false,"","");
    }
    */
    echo $treeNodes->toJson();
    ?>
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 7 июня 2011 г. 12:43, спустя 24 минуты 57 секунд

    выложи куда нить на хостинг, ты думаешь ктото будет это копировать к себе создавать файлы и тп? есть более важные дела)
    Сапожник без сапог
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 7 июня 2011 г. 13:07, спустя 24 минуты 46 секунд

    просто возьми готовый пример с их сайта, там есть дерево с аяксовой подгрузкой
  • truth4oll

    Сообщения: 463 Репутация: N Группа: Адекваты

    Spritz 7 июня 2011 г. 13:15, спустя 8 минут 2 секунды

    http://dev.sencha.com/deploy/ext-4.0.1/examples/direct/direct-tree.html
    вот этот пример должен подойти
  • KiberHawk

    Сообщения: 11 Репутация: N Группа: Кто попало

    Spritz 7 июня 2011 г. 14:20, спустя 1 час 4 минуты 55 секунд

    Хм…я использовал в качестве примера вот этот: http://dev.sencha.com/deploy/ext-4.0.1/examples/tree/reorder.html

    По поводу примера директ-три:

    Ext.direct.Manager.addProvider(Ext.app.REMOTING_API);
    - эм…не совсем понял что делает эта строчка…и для чего…
    directFn: TestAction.getTree,
    - TestAction.getTree это, я так понял, пользовательская функция, которая, если верить докам, ззапускается при получении запроса и собственно разбирает его…а какие аргументы доступны для нее и в каком порядке? Документация у сенчи ужасная :(

    P.S. Выкладывание кода на хостинг откладывается на час :) Доберусь до дома - выложу…
  • truth4oll

    Сообщения: 463 Репутация: N Группа: Адекваты

    Spritz 7 июня 2011 г. 14:41, спустя 20 минут 57 секунд

    на счет второго, из вложенной картинки думаю всё ясно будет
    1. 1_12.png (118)
  • KiberHawk

    Сообщения: 11 Репутация: N Группа: Кто попало

    Spritz 7 июня 2011 г. 15:36, спустя 54 минуты 39 секунд

    Аха…понятно…это указывается объект и метод (т.е. функция) запускаемые на стороне сервера :)

    "type":"rpc","tid":2 - а это что за поля? Обязательные или определенные пользователем?

    И где их указывать? И для чего? …

    а paramOrder - это как я понимаю индекс\набор индексов в массиве POST под которым на сервере можно вытащить то что отправлялось?
    а остальное по логике должно быть доступно по индексам action и mehtod…я правильно понял? Просто проверить пока нет возможности, хотелось бы выяснить и дома сразу начать кодить :)
    Спустя 243 сек.
    Сначала написал, потом подумал…

    "type":"rpc" и "tid":2…скорее всего аргументы для функции на сервере…а вот вопрос где они указываются остается открытым…
  • KiberHawk

    Сообщения: 11 Репутация: N Группа: Кто попало

    Spritz 7 июня 2011 г. 15:56, спустя 20 минут 8 секунд


    Аха…понятно…это указывается объект и метод (т.е. функция) запускаемые на стороне сервера :)



    Сам понял, чушь несу…Ext.direct.Manager.addProvider вот откуда ноги directFn растут…и, вероятно, все остальные данные в запросе тоже.
    Осталось понять откуда взялись настройки Ext.app.REMOTING_API…в доках константу (выглядит как константа) REMOTING_API …не нашел…что это такое?:)
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 7 июня 2011 г. 16:08, спустя 12 минут 15 секунд

    http://www.sencha.com/products/extjs/extdirect
    но это директ, а он тебе не нужен

Пожалуйста, авторизуйтесь, чтобы написать комментарий!