Я новичок в фреймворке Lift, и последние пару дней я играл с виджетом Flot. Мне очень нравится тот факт, что у меня есть фасад для javascript Flot, написанного на Scala. Однако я столкнулся с некоторыми проблемами, когда попытался добавить в график больше интерактивных функций.
Что я пытаюсь сделать, так это позволить пользователю увеличивать точки данных на графике. В основном я пытаюсь выполнить этот пример, но в лифте: http://people.iola.dk/olau/flot/examples/zooming.html.
Суть масштабирования обрабатывается этим javascript:
$("#placeholder").bind("plotselected", function (event, ranges) {
// do some checks on the ranges...
// do the zooming
$.plot($("#placeholder"), getData(...),
$.extend(true, {}, options, {
xaxis: { min: ranges.xaxis.from, max: ranges.xaxis.to },
yaxis: { min: ranges.yaxis.from, max: ranges.yaxis.to }
}));
Как лучше всего это сделать в Lift? В приведенном выше коде я генерирую график на чистом javascript, но виджет flot должен делать это за меня. Кажется неправильным иметь этот код дважды, один раз с использованием виджета Flot и еще раз здесь, в необработанном javascript. Я не уверен, следует ли мне перемещать приведенный выше фрагмент кода в Scala. Более того, я не нашел никакой документации о том, как выполнить привязку jQuery в Scala DSL. Любая помощь / совет будут очень благодарны!
Спасибо!
И еще один нюанс ... Для масштабирования требуется плагин jquery.flot.selection, поэтому мне пришлось добавить его в свой проект Lift вручную. Это нормально, за исключением того, что jquery.flot.js встраивается автоматически. Когда я добавил плагин flot.selection, моя версия плагина была слишком новой для jquery.flot.js, включенного в Lift. Мне пришлось рыться в банках, чтобы выяснить, какая версия плагина выбора мне нужна.
Maven довольно много раз сжигал меня, когда одна библиотека автоматически включала другую библиотеку для меня ... Я понимаю, что JavaScript может быть другим, но я все еще боюсь, когда речь идет о библиотеках, включая другие библиотеки.
Ладно ... Я перестану разглагольствовать :) Еще раз спасибо за помощь.