>>>>> On Fri, 28 May 2004 14:09:59 +0200, Bernardo Arlandis Ma�� <[EMAIL PROTECTED]>
>>>>> said:
[SNIPPED]
> You've pointed something important, if the js code has to be
> regenerated there's no improvement other than having separate
> files. The js code should be static, but then I'd need to pass
> dinamically created collections of objects to the javascript
> functions to do their work. What I'd like to know is easy ways to do
> this or alternative ones with the same effect. For example, I need
> to pass a list of java objects generated by velocity to the
> javascript functions so that the js functions can work with them
> without having to use velocity to replicate the js code.
We've done this. We put our javascript code into .js files as
suggested. This is static js code, functions really. Then in our
velocity templates we use the js functions. We really try to keep
these javascript functions to ui issues ( speed ) and very little
logic in them ( for example disabling or enabling a button on the fly
).
So in one instance we had to take a list of objects we get from our
pull tool and slam that into a js array for our javascript functions
to use. In our velocity template we did just that:
--- CommonJS.vm---
<script language="JavaScript"
src="$content.getURI("javascript/selectbox.js")"></script>
<script language="JavaScript"
src="$content.getURI("javascript/format-utility.js")"></script>
#set($jsfields = $layoutholder.Layout.Fields)
#if ($jsfields)
<script language="JavaScript">
var noFields = $jsfields.size();
var fields = new Array(noFields);
#set($offset = 1)
#foreach($field in $jsfields)
#set ($i = $velocityCount - 1)
#set ($end = $offset + $field.FieldLength - 1 )
fields[$i] = new Array(6);
fields[$i][0] = "$formatutil.escapeJavaScript($!field.CustomerField)";
fields[$i][1] = "$!field.QdsField";
fields[$i][2] = "$!field.FieldLength";
fields[$i][3] = "$offset";
fields[$i][4] = "$end";
fields[$i][5] = "$!field.FieldType";
fields[$i][6] = "$!field.FieldFormat";
#set ($offset = $end+1);
#end
</script>
#end
Then we use our javascript function on our html elements, passing the array as needed.
<select name="fmt" size="10" onChange="update(this, fields)"
onkeypress="keyUpdate(this,event)">
Hope this helps.
--
=====================================================================
Jeffrey D. Brekke [EMAIL PROTECTED]
Wisconsin, USA [EMAIL PROTECTED]
[EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]