Hi Cezary, I appreciate this hint and was not aware about this time limit. I give it a try, thanks!
Greetings, Erich Am 26.03.2018 23:45, schrieb Cezary Biernacki:
requirejs/AMD is much improvement of other "plain" Javascript approach once you get sizeable amount of Javascript code, both developers (dependencies between modules are explicit, and private parts can stay private instead of polluting global space name), and for users (HTML can be rendered before all Javascript is loaded and parsed). So I recommend understanding it - it is not really much complicated. However one pain point for me is that if some module fails to load for any reason, usually whole page becomes unusable, especially in Tapestry which add modal "loader" layer. Unfortunately a module can fail to load because of time out, and default RequireJS is too small, like 7 seconds only. Tapestry in development mode changes this value to 5 minutes, but uses default in the production mode, so it might be hard to detect for developers. I fix this by increasing "waitSeconds" parameter for RequireJS in my Layout component, e.g.: @SetupRender public void configureWaitSeconds() { // See http://requirejs.org/docs/api.html#config-waitSeconds javaScriptSupport.addModuleConfigurationCallback((config) -> config.put("waitSeconds", 120)); } On Mon, Mar 26, 2018 at 11:06 PM, Erich Gormann<[email protected]> wrote:Hi Cezary, first thanks. Yes, it was a mixture of all that, meanwhile I studied the requirejs documentation strongly and checked out the tapestry5-jquery project, to learn from it. And now a lot of things are already working! A lot in requirejs and AMD semms to be magical and I prefer to do java coding, but we'll never stop to learn... Regards, Erich Am 26.03.2018 17:21, schrieb Cezary Biernacki:Hi Erich, One problem I can see is that function showLoadingIndicator() is not exported from define(.., function() { ... }). You should add "return { showLoadingIndicator: showLoadingIndicator };" at the end of "function() { ... }". However I believe it will not solve a problem indicated by message "Couldn’t resolve classpath asset from path META-INF\modules\hotel\loadingIndicatorTrigger.js" (I guess you are on Windows, so slashes are translated to slashes, but it should not be an issue). It suggests that the JS file is missing. So either it was not copied from the source directories to the directories (or JARs) used during execution - check your build directories to see if the file is really there, if not, than run your build process. Or file name "hotel/loadingIndicatorTrigger" is misspelled in somewhere. Cezary On Sun, Mar 25, 2018 at 3:19 PM, Erich Gormann<[email protected]> wrote: Dear all,From a java class I load a js module and try to invoke a method in it using the following line: javaScriptSupport.require("hotel/loadingIndicatorTrigger"). invoke("showLoadingIndicator"); The script file loadingIndicatorTrigger.js is in src/main/resources/META-INF/modules/hotel/loadingIndicatorTrigger.js This is the content of the script: requirejs.config({ "shim": { "hotel/globals/jquery.loading.indicator": { deps: ["jquery"] } } }); define(["hotel/globals/jquery.loading.indicator"], function() { function showLoadingIndicator() { var homeLoader = jQuery('body').loadingIndicator({ useImage: false, }).data("loadingIndicator"); homeLoader.show(); } }); Now the browser console prompts always the following error: "RequireJS error: require: moduleLib is undefined". In my Eclipse I see a warning in above line of java code: "Couldn’t resolve classpath asset from path META-INF\modules\hotel\loading IndicatorTrigger.js" I tried different things like define(["jquery", "hotel/globals/jquery.loading.indicator"], function($) { buterror is always the same. Is there something missing in my configuration or in the applications module class? Thanks for your help! Regards, Erich --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]--------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
--------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
