Как экспортировать веб-график cytoscape перед отправкой страницы в браузер
Сценарий: клиент находится на странице с панелью поиска, он вводит запрос. Этот запрос передается на вторую страницу, которая динамически генерируется сервером с помощью php. Наряду с информацией запроса, передаваемой сценарию php, передается переменная, позволяющая сценарию php определить, доступна ли flash для браузера клиента. Теперь скрипт php отображает png сетевого графика, сгенерированного cytoscape web, если flash недоступен, и swf графика, если flash доступен.
Проблема / Вопрос:1.) Cytoscape web - это библиотека javascript для отображения графиков. Он имеет функцию экспорта (http://cytoscapeweb.cytoscape.org/documentation#section/exportNetwork), но позволяет браузеру загружать экспортированный файл только. Я хочу иметь возможность экспортировать и сохранить этот файл во время выполнения php, а затем внедрить его в качестве содержимого вместо SWF, если Flash не включен. Как бы я поступил так, если в браузере клиента должен быть запущен метод javascript?
Ресурсы
Метод экспорта графиков 1: http://cytoscapeweb.cytoscape.org/documentation
Метод экспорта графиков 2: http://cytoscapeweb.cytoscape.org/documentation
1 ответ
Аналогичный вопрос был задан на странице веб-групп Google Cytoscape.
Вот ссылка на вопрос и ответ
Вот что сказал:
Если вы используете png(), вы получите только байты изображения как String (как Base64). Он не экспортирует изображение на серверную часть и не делает его доступным для загрузки. Чтобы сделать это, вы должны сами передать строку на серверную сторону, снова преобразовать из base64 в байты, а затем заставить серверный компонент (например, PHP, Java-сервлет) передавать байты обратно в браузер, чтобы пользователи могли загрузить образ.
Существует также возможность использования компонента / плагина Flash для получения байтов и обеспечения возможности их загрузки без использования веб-сервера. Это именно то, что делает демонстрационное приложение Cytoscape Web (http://cytoscapeweb.cytoscape.org/demo), когда вы выбираете пункт меню "Сохранить файл". Вы можете скопировать примеры из файла JavaScript демо-версии и использовать библиотеку Flash, которую мы разработали для этого. Это не очень хорошо задокументировано, поэтому я думаю, что это может быть немного сложнее. В любом случае, если вы хотите попробовать, взгляните на:
- http://cytoscapeweb.cytoscape.org/js/content/demo.js - search for "org.cytoscapeweb.demo.Exporter"
- http://chianti.ucsd.edu/svn/cytoscapeweb/trunk/file/ - you can download the component project from Subversion with the command: svn checkout http://chianti.ucsd.edu/svn/cytoscapeweb/trunk/file cwfile-read-only
Если вы ищете в Интернете, вы можете найти аналогичные плагины.
Помните, что функция png () должна вызываться из функции ready() перед вызовом vis.draw() - пример:
vis.ready(function() {
var png = vis.png();
// handle the png bytes here:
alert(png);
});
vis.draw(draw_options);
Более простым вариантом является использование функции exportNetwork(), которая требует серверной части. См. http://cytoscapeweb.cytoscape.org/documentation/cytoscape_web; это даже включает пример PHP. Часть JavaScript будет выглядеть примерно так:
vis.ready(function() {
// ...
vis.exportNetwork('png', 'export.php?type=png');
// ...
});
Имя выходного файла задается кодом на стороне сервера - в данном примере это файл "export.php".
Надеюсь, это поможет