Здравствуйте. Я использую диаграммы Vaadin 8 и Vaadin 4.0 и пытаюсь отформатировать одну из осей данных диаграммы в разные форматы даты и времени в зависимости от ввода пользовательского формата и локали. Я пытаюсь внедрить библиотеку moment.js и получить справочное исключение о том, что переменная момента не существует. Я пробовал 2 разных подхода, которые я перечислю ниже:
(1) Используйте аннотацию @JavaScript для добавления момента.js.
@JavaScript({"https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js", "https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.13/moment-timezone-with-data-2012-2022.min.js"})
@WebServlet(urlPatterns = "/*", name = "IeUIServlet", asyncSupported = true)
@VaadinServletConfiguration(ui = IeUI.class, productionMode = true, heartbeatInterval = 500, closeIdleSessions = false, widgetset = "softcom.ievaadin.AppWidgetSet")
public static class IeUIServlet extends VaadinServlet implements SessionInitListener {//, SessionDestroyListener {
@Override
protected void servletInitialized() throws ServletException {
super.servletInitialized();
// Add any system level init here
//Main.initSystem();
}
@Override
public void destroy() {
super.destroy(); //To change body of generated methods, choose Tools | Templates.
Main.destroy();
}
@Override
public void sessionInit(SessionInitEvent event) throws ServiceException {
event.getSession().getSession().setMaxInactiveInterval(-1);
}
}
А тот, где установлен форматер
YAxis ya = new YAxis();
String js = "function() {";
js += "try {"
+ "var g = moment.tz(\"2014-06-01 12:00\", \"America/New_York\");"
+ "alert(g);"
+ "return g;}"
+ "catch(e) {"
+ "alert(e);}}";
ya.getLabels().setFormatter(js);
(2) Я пытаюсь добавить тег скрипта в начало самой функции.
String js = "attempt {"
+ "var script = document.createElement('script');"
+ "script.src = \"https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js\";"
+ "document.head.appendChild(script);"
+ "} catch(e) {"
+ "alert('first one'); }"
+ "try {"
+ "var b = moment().format();"
+ "return b;"
+ "} catch (e) {"
+ "alert(e); }";
JavaScript.getCurrent().execute(attempt);
String js = "function() {";
js += "try {"
+ "var g = moment.tz(\"2014-06-01 12:00\", \"America/New_York\");"
+ "alert(g);"
+ "return g;}"
+ "catch(e) {"
+ "alert(e);}}";
ya.getLabels().setFormatter(js);
Любая помощь будет оценена.