Git Product home page Git Product logo

yii2-jstree's People

Contributors

marqu3s avatar metalagman avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

yii2-jstree's Issues

Subscribe to events thru PHP code

As workaround you can subscribe to JSTree events using approach:

$this->registerJs('
        $("#w1").on("changed.jstree", function (e, data) {
          console.log(data.selected);
        });
    ');

but it will be better to use solid approach like:

'jsOptions' => [
            'core' => [
                'multiple' => true,
                'data' => $tree,
            ],
            "checkbox" => [
                "keep_selected_style" => false
              ],
            "plugins" => [ "wholerow", "checkbox" ],
             "events" => ['changed.jstree'=>new JsExpression('function (e, data) {
          console.log(data.selected);
        }')],

        ]

Передача id узла из представления

Добрый день.

Подскажите, пожалуйста, как можно передать из представления id узла, по которому нужно загрузить потомков?

В представлении я вставил такой код виджета:

<?= \yiidreamteam\jstree\JsTree::widget([
    'containerOptions' => [
        'class' => 'data-tree',
    ],
    'jsOptions' => [
        'core' => [
            'multiple' => false,
            'data' => [
                'url' => \yii\helpers\Url::to(['tag/childs']),
            ],
        ],
    ]
]) ?>

В контроллере TagController такой код action'а:

    public function actionChilds($id){
        \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
        $model = $this->findModel($id);
        return $model->nodes;
    }

При отображении страницы выдаётся ошибка: Bad Request (#400): Missing required parameters: id

Отработать операции редактирования дерева (check_callback)

В jstree возможны пять стандартных операций, на которые завязан функционал плагинов contextmenu и dnd (упоминаются здесь: https://www.jstree.com/api/#/?f=%24.jstree.defaults.core.check_callback):

  • delete_node
  • create_node
  • rename_node
  • move_node
  • copy_node

В дистрибутиве есть пример работы с этими функциями: https://github.com/vakata/jstree/blob/master/demo/sitebrowser/index.php начиная со 125 строки и далее.

Можно было бы, добавить их в метод run() класса JsTree с массивом значений для вызова функций (я пока в целях тестирования сделал массив jsFunctions, в которых прописываю вызов соответствующего action, например:

'jsFunctions' => [
            'rename_node' => Url::to(['tag/rename']),
            'delete_node' => Url::to(['tag/delete'])
        ]

а в run() добавил проверку наличия значений и, если есть, добавляют стандартную функцию из примера разработчика.

Если такой вариант приемлем, я покопаю помаленьку в сторону pull-реквеста, если нет желания загромождать виджет, я пропишу в представлении подключение отдельного скрипта и уже в нём буду прописывать функции редактирования.

Либо второй вариант - добавить ещё один параметр - скрипт. Собирать его в представлении, а в run() просто добавить ещё одну переменную так, чтобы регистрация скрипта выглядела так:

$this->getView()->registerJs("$('#{$id}').jstree({$jsOptions}){$jsScript};");

ajax lazy loaging

if jstree doc we have:
// AJAX
$('#tree').jstree({
'core' : {
'data' : {
'url' : '/get/children/',
'data' : function (node) {
return { 'id' : node.id };
}
}
});

You can not configure widget like this:
[
'data' => [
'url' => Utr:to['tree/ajax']),
data =>'function (node) {
return { 'id' : node.id };
}'
]
because Json::encode always add quotas ("). JavaScript send to browser:

$.jstree( ... "data": { "url": "http://www", "data":"function (node) {
return { 'id' : node.id };
}" }
but we need:
$.jstree( ... "data": { "url": "http://www", "data": function (node) {
return { 'id' : node.id };
}
}

why do i did not find bower-asset/jstree: ~3?

when i Installed the package ,the composer referred me that :
Problem 1
- yii-dream-team/yii2-jstree dev-master requires bower-asset/jstree ~3 -> no matching package found.
- yii-dream-team/yii2-jstree 1.0.0 requires bower-asset/jstree ~3 -> no matching package found.
- Installation request for yii-dream-team/yii2-jstree * -> satisfiable by yii-dream-team/yii2-jstree[1.0.0, dev-master].

How do i fix this problem???

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.