You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by Grish <gi...@hotmail.com> on 2007/11/06 10:19:39 UTC

[S2] Change updateFreq in a DIV

Ok I've made some progress but now i'm stuck. What I did was have a a div tag

 <s:div id="myDivId" theme="ajax" href="%{url}" formId="frmMyForm" 
          showLoadingText="false" updateFreq="5000" autoStart="false" 
          startTimerListenTopics="/startTimer"
stopTimerListenTopics="/stopTimer" />

then I have select box 

<s:select id="refreshEvery" onchange="updateFreq(this)" list="myList" />

then on my updateFreq function i have the following:

function updateFreq(obj) {
      
      
      if (obj.selectedIndex == 0) {
        dojo.event.topic.publish("/stopTimer");
      } 
      else {
        // get Div and update frequency
        var quoteDiv = dojo.byId("quoteDetails");
        quoteDiv.updateFreq = obj.options[obj.selectedIndex].value;
        dojo.event.topic.publish("/startTimer");
      }
      
}

Right now everything is working except the change to the updateFreq. When
the timer starts it still keeps with the 5 second interval Is it possible to
access this property and change it?



Grish wrote:
> 
> Hi,
> 
> I'm having a hard time trying to implement this - I want to have a select
> box containing options for the user to select the update frequency of my
> div tag. So my select box has "no refresh", "30 seconds", "60 seconds",
> "120 seconds" and depending on what the user selects the frequency will
> change. 
> 
> I was thinking i could make a topic to change the updateFreq parameter
> then with the onchange event with the select tag i'll make a call for that
> topic:
> 
> dojo.event.topic.subscribe("/changeRefresh", function(data, type, request)
> {
>   // code to change the updateFreq of the div tag
> }
> 
> <s:select onchange="onchange="dojo.event.topic.publish('/changeRefresh')"
> ......
> 
> I just don't know how to access the div tag and change the updateFreq
> parameter. I tried using the dojo.byId("myDivId") function but it didn't
> work. Suggestion on how to do this?
> 
> Also just curious as to why there's no type variable when i call my topic
> from an event like onchange, it's always undefined. 
> 

-- 
View this message in context: http://www.nabble.com/Triggering-topics-tf4722712.html#a13603045
Sent from the Struts - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


Re: [S2] Change updateFreq in a DIV

Posted by Grish <gi...@hotmail.com>.
I did what you suggested and i saw the setInterval() function; which works!

Thanks for pointing me to the right direction and the learning experience!


Jeromy Evans - Blue Sky Minds wrote:
> 
> Grish wrote:
>> So I ended up with the following code:
>>
>> var myDiv = dojo.widget.byId("myDivId");
>> myDiv.timer.interval = newInterval;
>>
>>   
> Great!
>> Also you need to restart the timer by stopping it and starting again for
>> the
>> new interval to take effect. Would there be some kind of function I can
>> use
>> to change the interval or this is the only way?
>>
>>   
> Not sure, you know more about it than I do now.  If the div is using the 
> standard dojo timer (dojo.lang.timing.Timer) you should have access to 
> the setInterval(interval) method that looks like it will work while the 
> timer's running. 
> 
> myDiv.timer.setInterval(newInterval);
> 
> As with members, public methods should be browsable in Firebug.
> 
> If it is/extends a dojo timer, take a quick look at the implementation 
> in: 
> struts2-core-xxx.jar!/org/apache/struts2/static/dojo/src/lang/timing/Timer.js
> 
>>
>> Jeromy Evans - Blue Sky Minds wrote:
>>   
>>> Your code references "quoteDetails" but the div you provided is 
>>> "myDivId".  Other than that I don't see anything wrong with it. 
>>> updateFreq should be writeable using your approach although I haven't 
>>> tried it.
>>>
>>> Try a simple script:
>>>
>>>  var myWidget = dojo.widget.byId("myDivId");
>>>   myWidget.updateFreq = 10;
>>>
>>> Use a breakpoint in FireBug to ensure the widget is found and that the 
>>> updateFreq member is public.
>>>
>>> Hope that helps,
>>> Jeromy Evans
>>>
>>> Grish wrote:
>>>     
>>>> Ok I've made some progress but now i'm stuck. What I did was have a a
>>>> div
>>>> tag
>>>>
>>>>  <s:div id="myDivId" theme="ajax" href="%{url}" formId="frmMyForm" 
>>>>           showLoadingText="false" updateFreq="5000" autoStart="false" 
>>>>           startTimerListenTopics="/startTimer"
>>>> stopTimerListenTopics="/stopTimer" />
>>>>
>>>> then I have select box 
>>>>
>>>> <s:select id="refreshEvery" onchange="updateFreq(this)" list="myList"
>>>> />
>>>>
>>>> then on my updateFreq function i have the following:
>>>>
>>>> function updateFreq(obj) {
>>>>       
>>>>       
>>>>       if (obj.selectedIndex == 0) {
>>>>         dojo.event.topic.publish("/stopTimer");
>>>>       } 
>>>>       else {
>>>>         // get Div and update frequency
>>>>         var quoteDiv = dojo.byId("quoteDetails");
>>>>         quoteDiv.updateFreq = obj.options[obj.selectedIndex].value;
>>>>         dojo.event.topic.publish("/startTimer");
>>>>       }
>>>>       
>>>> }
>>>>
>>>> Right now everything is working except the change to the updateFreq.
>>>> When
>>>> the timer starts it still keeps with the 5 second interval Is it
>>>> possible
>>>> to
>>>> access this property and change it?
>>>>
>>>>
>>>>
>>>> Grish wrote:
>>>>   
>>>>       
>>>>> Hi,
>>>>>
>>>>> I'm having a hard time trying to implement this - I want to have a
>>>>> select
>>>>> box containing options for the user to select the update frequency of
>>>>> my
>>>>> div tag. So my select box has "no refresh", "30 seconds", "60
>>>>> seconds",
>>>>> "120 seconds" and depending on what the user selects the frequency
>>>>> will
>>>>> change. 
>>>>>
>>>>> I was thinking i could make a topic to change the updateFreq parameter
>>>>> then with the onchange event with the select tag i'll make a call for
>>>>> that
>>>>> topic:
>>>>>
>>>>> dojo.event.topic.subscribe("/changeRefresh", function(data, type,
>>>>> request)
>>>>> {
>>>>>   // code to change the updateFreq of the div tag
>>>>> }
>>>>>
>>>>> <s:select
>>>>> onchange="onchange="dojo.event.topic.publish('/changeRefresh')"
>>>>> ......
>>>>>
>>>>> I just don't know how to access the div tag and change the updateFreq
>>>>> parameter. I tried using the dojo.byId("myDivId") function but it
>>>>> didn't
>>>>> work. Suggestion on how to do this?
>>>>>
>>>>> Also just curious as to why there's no type variable when i call my
>>>>> topic
>>>>> from an event like onchange, it's always undefined. 
>>>>>
>>>>>     
>>>>>         
>>>>   
>>>>       
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
>>> For additional commands, e-mail: user-help@struts.apache.org
>>>
>>>
>>>
>>>     
>>
>>   
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> For additional commands, e-mail: user-help@struts.apache.org
> 
> 
> 

-- 
View this message in context: http://www.nabble.com/Triggering-topics-tf4722712.html#a13642168
Sent from the Struts - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


Re: [S2] Change updateFreq in a DIV

Posted by Jeromy Evans <je...@blueskyminds.com.au>.
Grish wrote:
> So I ended up with the following code:
>
> var myDiv = dojo.widget.byId("myDivId");
> myDiv.timer.interval = newInterval;
>
>   
Great!
> Also you need to restart the timer by stopping it and starting again for the
> new interval to take effect. Would there be some kind of function I can use
> to change the interval or this is the only way?
>
>   
Not sure, you know more about it than I do now.  If the div is using the 
standard dojo timer (dojo.lang.timing.Timer) you should have access to 
the setInterval(interval) method that looks like it will work while the 
timer's running. 

myDiv.timer.setInterval(newInterval);

As with members, public methods should be browsable in Firebug.

If it is/extends a dojo timer, take a quick look at the implementation 
in: 
struts2-core-xxx.jar!/org/apache/struts2/static/dojo/src/lang/timing/Timer.js

>
> Jeromy Evans - Blue Sky Minds wrote:
>   
>> Your code references "quoteDetails" but the div you provided is 
>> "myDivId".  Other than that I don't see anything wrong with it. 
>> updateFreq should be writeable using your approach although I haven't 
>> tried it.
>>
>> Try a simple script:
>>
>>  var myWidget = dojo.widget.byId("myDivId");
>>   myWidget.updateFreq = 10;
>>
>> Use a breakpoint in FireBug to ensure the widget is found and that the 
>> updateFreq member is public.
>>
>> Hope that helps,
>> Jeromy Evans
>>
>> Grish wrote:
>>     
>>> Ok I've made some progress but now i'm stuck. What I did was have a a div
>>> tag
>>>
>>>  <s:div id="myDivId" theme="ajax" href="%{url}" formId="frmMyForm" 
>>>           showLoadingText="false" updateFreq="5000" autoStart="false" 
>>>           startTimerListenTopics="/startTimer"
>>> stopTimerListenTopics="/stopTimer" />
>>>
>>> then I have select box 
>>>
>>> <s:select id="refreshEvery" onchange="updateFreq(this)" list="myList" />
>>>
>>> then on my updateFreq function i have the following:
>>>
>>> function updateFreq(obj) {
>>>       
>>>       
>>>       if (obj.selectedIndex == 0) {
>>>         dojo.event.topic.publish("/stopTimer");
>>>       } 
>>>       else {
>>>         // get Div and update frequency
>>>         var quoteDiv = dojo.byId("quoteDetails");
>>>         quoteDiv.updateFreq = obj.options[obj.selectedIndex].value;
>>>         dojo.event.topic.publish("/startTimer");
>>>       }
>>>       
>>> }
>>>
>>> Right now everything is working except the change to the updateFreq. When
>>> the timer starts it still keeps with the 5 second interval Is it possible
>>> to
>>> access this property and change it?
>>>
>>>
>>>
>>> Grish wrote:
>>>   
>>>       
>>>> Hi,
>>>>
>>>> I'm having a hard time trying to implement this - I want to have a
>>>> select
>>>> box containing options for the user to select the update frequency of my
>>>> div tag. So my select box has "no refresh", "30 seconds", "60 seconds",
>>>> "120 seconds" and depending on what the user selects the frequency will
>>>> change. 
>>>>
>>>> I was thinking i could make a topic to change the updateFreq parameter
>>>> then with the onchange event with the select tag i'll make a call for
>>>> that
>>>> topic:
>>>>
>>>> dojo.event.topic.subscribe("/changeRefresh", function(data, type,
>>>> request)
>>>> {
>>>>   // code to change the updateFreq of the div tag
>>>> }
>>>>
>>>> <s:select
>>>> onchange="onchange="dojo.event.topic.publish('/changeRefresh')"
>>>> ......
>>>>
>>>> I just don't know how to access the div tag and change the updateFreq
>>>> parameter. I tried using the dojo.byId("myDivId") function but it didn't
>>>> work. Suggestion on how to do this?
>>>>
>>>> Also just curious as to why there's no type variable when i call my
>>>> topic
>>>> from an event like onchange, it's always undefined. 
>>>>
>>>>     
>>>>         
>>>   
>>>       
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
>> For additional commands, e-mail: user-help@struts.apache.org
>>
>>
>>
>>     
>
>   


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


Re: [S2] Change updateFreq in a DIV

Posted by Grish <gi...@hotmail.com>.
Thanks for the reply!

Sorry about the example, the references were indeed wrong in my example but
the code was using the right references. My problem was when I would refer
to myDiv.updateFreq it would be undefined. But when I used your simple
script I was able to get the div widget and access the updateFreq. 

But it turned out that even if i changed the updateFreq my refresh interval
wouldn't work. So I took your advice and did a watch using firebug and
discovered there was a timer object and an interval property. Turns out
that's the one you have to modify.

So I ended up with the following code:

var myDiv = dojo.widget.byId("myDivId");
myDiv.timer.interval = newInterval;

Also you need to restart the timer by stopping it and starting again for the
new interval to take effect. Would there be some kind of function I can use
to change the interval or this is the only way?

Thanks again for the reply!



Jeromy Evans - Blue Sky Minds wrote:
> 
> Your code references "quoteDetails" but the div you provided is 
> "myDivId".  Other than that I don't see anything wrong with it. 
> updateFreq should be writeable using your approach although I haven't 
> tried it.
> 
> Try a simple script:
> 
>  var myWidget = dojo.widget.byId("myDivId");
>   myWidget.updateFreq = 10;
> 
> Use a breakpoint in FireBug to ensure the widget is found and that the 
> updateFreq member is public.
> 
> Hope that helps,
> Jeromy Evans
> 
> Grish wrote:
>> Ok I've made some progress but now i'm stuck. What I did was have a a div
>> tag
>>
>>  <s:div id="myDivId" theme="ajax" href="%{url}" formId="frmMyForm" 
>>           showLoadingText="false" updateFreq="5000" autoStart="false" 
>>           startTimerListenTopics="/startTimer"
>> stopTimerListenTopics="/stopTimer" />
>>
>> then I have select box 
>>
>> <s:select id="refreshEvery" onchange="updateFreq(this)" list="myList" />
>>
>> then on my updateFreq function i have the following:
>>
>> function updateFreq(obj) {
>>       
>>       
>>       if (obj.selectedIndex == 0) {
>>         dojo.event.topic.publish("/stopTimer");
>>       } 
>>       else {
>>         // get Div and update frequency
>>         var quoteDiv = dojo.byId("quoteDetails");
>>         quoteDiv.updateFreq = obj.options[obj.selectedIndex].value;
>>         dojo.event.topic.publish("/startTimer");
>>       }
>>       
>> }
>>
>> Right now everything is working except the change to the updateFreq. When
>> the timer starts it still keeps with the 5 second interval Is it possible
>> to
>> access this property and change it?
>>
>>
>>
>> Grish wrote:
>>   
>>> Hi,
>>>
>>> I'm having a hard time trying to implement this - I want to have a
>>> select
>>> box containing options for the user to select the update frequency of my
>>> div tag. So my select box has "no refresh", "30 seconds", "60 seconds",
>>> "120 seconds" and depending on what the user selects the frequency will
>>> change. 
>>>
>>> I was thinking i could make a topic to change the updateFreq parameter
>>> then with the onchange event with the select tag i'll make a call for
>>> that
>>> topic:
>>>
>>> dojo.event.topic.subscribe("/changeRefresh", function(data, type,
>>> request)
>>> {
>>>   // code to change the updateFreq of the div tag
>>> }
>>>
>>> <s:select
>>> onchange="onchange="dojo.event.topic.publish('/changeRefresh')"
>>> ......
>>>
>>> I just don't know how to access the div tag and change the updateFreq
>>> parameter. I tried using the dojo.byId("myDivId") function but it didn't
>>> work. Suggestion on how to do this?
>>>
>>> Also just curious as to why there's no type variable when i call my
>>> topic
>>> from an event like onchange, it's always undefined. 
>>>
>>>     
>>
>>   
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> For additional commands, e-mail: user-help@struts.apache.org
> 
> 
> 

-- 
View this message in context: http://www.nabble.com/Triggering-topics-tf4722712.html#a13640865
Sent from the Struts - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


Re: [S2] Change updateFreq in a DIV

Posted by Jeromy Evans <je...@blueskyminds.com.au>.
Your code references "quoteDetails" but the div you provided is 
"myDivId".  Other than that I don't see anything wrong with it. 
updateFreq should be writeable using your approach although I haven't 
tried it.

Try a simple script:

 var myWidget = dojo.widget.byId("myDivId");
  myWidget.updateFreq = 10;

Use a breakpoint in FireBug to ensure the widget is found and that the 
updateFreq member is public.

Hope that helps,
Jeromy Evans

Grish wrote:
> Ok I've made some progress but now i'm stuck. What I did was have a a div tag
>
>  <s:div id="myDivId" theme="ajax" href="%{url}" formId="frmMyForm" 
>           showLoadingText="false" updateFreq="5000" autoStart="false" 
>           startTimerListenTopics="/startTimer"
> stopTimerListenTopics="/stopTimer" />
>
> then I have select box 
>
> <s:select id="refreshEvery" onchange="updateFreq(this)" list="myList" />
>
> then on my updateFreq function i have the following:
>
> function updateFreq(obj) {
>       
>       
>       if (obj.selectedIndex == 0) {
>         dojo.event.topic.publish("/stopTimer");
>       } 
>       else {
>         // get Div and update frequency
>         var quoteDiv = dojo.byId("quoteDetails");
>         quoteDiv.updateFreq = obj.options[obj.selectedIndex].value;
>         dojo.event.topic.publish("/startTimer");
>       }
>       
> }
>
> Right now everything is working except the change to the updateFreq. When
> the timer starts it still keeps with the 5 second interval Is it possible to
> access this property and change it?
>
>
>
> Grish wrote:
>   
>> Hi,
>>
>> I'm having a hard time trying to implement this - I want to have a select
>> box containing options for the user to select the update frequency of my
>> div tag. So my select box has "no refresh", "30 seconds", "60 seconds",
>> "120 seconds" and depending on what the user selects the frequency will
>> change. 
>>
>> I was thinking i could make a topic to change the updateFreq parameter
>> then with the onchange event with the select tag i'll make a call for that
>> topic:
>>
>> dojo.event.topic.subscribe("/changeRefresh", function(data, type, request)
>> {
>>   // code to change the updateFreq of the div tag
>> }
>>
>> <s:select onchange="onchange="dojo.event.topic.publish('/changeRefresh')"
>> ......
>>
>> I just don't know how to access the div tag and change the updateFreq
>> parameter. I tried using the dojo.byId("myDivId") function but it didn't
>> work. Suggestion on how to do this?
>>
>> Also just curious as to why there's no type variable when i call my topic
>> from an event like onchange, it's always undefined. 
>>
>>     
>
>   


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org