jQuery: совместная работа с другими библиотеками

Модератор: Модераторы разделов

IMB
Сообщения: 2567
ОС: Debian

jQuery: совместная работа с другими библиотеками

Сообщение IMB »

Доброго дня!
Есть необходимость выводить диаграмму Ганнта на web-страницу, данные хранятся в Postgre, серверная часть на php 5.2.6.
Для вывода диаграмы Ганнта хочется использовать http://www.jsgantt.com/
JS-код

Код: Выделить всё

<script>
jQuery.noConflict();
jQuery.ajax({
    url: 'db.php',
    type: 'GET',
    dataType: 'json',
    data: 'get=project&dep=' + jQuery.cookie('otdel'),
    complete: function(data, status) {
        var v = jQuery.parseJSON(data.responseText);
        var g = new JSGantt.GanttChart('g',document.getElementById('gantDIV'), 'day');
        g.setShowComp(1);
        g.setDateInputFormat('dd/mm/yyyy');
        g.setDateDisplayFormat('dd/mm/yyyy');
        g.setShowComp(1);
        g.setFormatArr("day","week","month","quarter");
        g.AddTaskItem(new JSGantt.TaskItem(1, 'test', '20/05/2010', '20/08/2010', '00FF00', '', '', '',
                          '50', 0, 0, 1));
        jQuery.each(v, function() {
            //alert($(this)[0].name)
            var id = $(this)[0].id;
            var name = $(this)[0].name;
            var per = ($(this)[0].task_ready/$(this)[0].task_total)*100;
            g.AddTaskItem(new JSGantt.TaskItem(id, name, '', '', '00FF00', '', '', '',
                          per, 0, 0, 1));
        });
        g.Draw();
        g.DrawDependencies();
    }
});
</script>

К сожалению на страницу ничего не выводится, хотя запрос успешно выполняется. Применение jQuery.noConflict() проблему не решает.
Если же закомментировать весь код jQuery, то диаграмма появляется.
Как возможно решить эту проблему "несовместимости" jQuery, не исключаю, что проблема в моих руках и голове? ;)
Переписывать всё на "чистый" JavaScript не очень хочется.
Спасибо.
Спасибо сказали:
Аватара пользователя
nickm
Сообщения: 203
ОС: RFRemix

Re: jQuery: совместная работа с другими библиотеками

Сообщение nickm »

Попробую пальцем в небо - объявление локальной переменной

Код: Выделить всё

var g = new JSGantt.GanttChart('g',document.getElementById('gantDIV'), 'day');

сделать в другом месте, например тут:

Код: Выделить всё

jQuery.noConflict();
var g = new JSGantt.GanttChart('g',document.getElementById('gantDIV'), 'day');
jQuery.ajax({
//SKIPPED
Спасибо сказали:
IMB
Сообщения: 2567
ОС: Debian

Re: jQuery: совместная работа с другими библиотеками

Сообщение IMB »

Промах :(
Спасибо сказали:
Аватара пользователя
nickm
Сообщения: 203
ОС: RFRemix

Re: jQuery: совместная работа с другими библиотеками

Сообщение nickm »

Если запустить в FF+firebug с включённой js-консолью, сообщения об ошибках там есть?
Спасибо сказали:
IMB
Сообщения: 2567
ОС: Debian

Re: jQuery: совместная работа с другими библиотеками

Сообщение IMB »

Нет, ошибок никаких нет.
Но, похоже, я решил эту проблему - вынес инициализацию и настройку библиотеки из $.ajax.

Код: Выделить всё

<script>
var g = new JSGantt.GanttChart('g',document.getElementById('gantDIV'), 'day');
g.setShowComp(1);
g.setDateInputFormat('dd/mm/yyyy');
g.setDateDisplayFormat('dd/mm/yyyy');
g.setShowComp(1);
g.setFormatArr("day","week","month","quarter");
$.ajax({
.................
    complete: function() {
        ............................
        g.Draw();
        g.DrawDependencies();
    }
});


Спасибо сказали: