Looks like your JS runs only at window.onload, but the graph data are 
delivered via Ajax requests.

Anthony

On Sunday, September 10, 2017 at 10:48:31 PM UTC-4, Wabbajack wrote:
>
> Hi Anthony,
>
> I have successfully get the values from another file... thanks...
> But for now i have another problem displaying the values into a graph...
>
>
>
> In views/default/index.html
> {{extend 'layout.html'}}
>
> {{=LOAD('default', 'graph', ajax=True, timeout=500, times='infinity')}}
>
> {{=BEAUTIFY(response._vars)}}
>
> In my default.py controller
> from gluon.serializers import json
>
> def index():
>     return dict()
>
>
> def graph():
>     temp_graph = []
>     temp=[]
>     timet=[]
>     for x in db().select(db.temperature_table.ALL):
>         temp.append(x.temp_value)
>         timet.append(x.tm_timestamp)
>         temp_graph.append({'y':x.temp_value, 'label':x.tm_timestamp})
>
>     return dict(temp_graph=json(temp_graph),VA=temp,VB=timet)
>
>
> In views/default/graph.html
> <script src="{{=URL('static','js/canvasjs.min.js')}}"></script>
> <div id="chartContainer" style="height: 300px; width: 50%;"></div>
>
> {{=VA}}
> {{=VB}}
>
> <br>  ------------ Value In Graph ------------ <br>
> {{=temp_graph}}
>
>
> <script type="text/javascript">
> window.onload = function () {
>     var chart = new CanvasJS.Chart("chartContainer", {
>         theme: "theme3",
>         legend: {
>            horizontalAlign: "center", // "left" , "right"
>            verticalAlign: "bottom",  // "center" , "top"
>            fontSize: 12
>         },
>         title:{
>             text: "Temperature reader"
>         },
>         animationEnabled: false,
>         data: [
>         {
>             type: "line",
>             showInLegend: true,
>             legendText: "temperature",
>             dataPoints: {{=XML(temp_graph)}}
>         }
>         ]
>     });
>     chart.render();
> }
>
>   </script>
>
>
> In Browser the <graph.html> renders the graph and value completely with 
> no problems
>
>
> But the in <index.html> the graph does not render.. only Values are 
> shown..
>
>
> I have also tried increasing the value of the timeout maybe the graph is 
> not rendered due to timeout value but still no avail...
>
> {{extend 'layout.html'}}
>
> {{=LOAD('default', 'graph', ajax=True, timeout=20000, times='infinity')}}
>
> {{=BEAUTIFY(response._vars)}}
>
>
>
>
>
>
>
>
>
>
>
> On Friday, September 8, 2017 at 7:06:32 PM UTC+8, Anthony wrote:
>>
>> What does your newvalue.load view look like? Does it display the temp and 
>> timet lists?
>>
>> Note, your index.html view is incorrect -- it has {{=temp}} and 
>> {{=timet}}, but the dictionary returned by the index() function instead 
>> uses VA and VB as keys, so the view should have {{=VA}} and {{=VB}} (should 
>> be the same in your newvalue.load view). Actually, because the returned 
>> values are Python lists, you probably want a more sophisticated display 
>> than simply {{=VA}}.
>>
>> Also, note that there is no reason to have two identical functions. You 
>> can instead have a single function and just use two different views and 
>> extensions (i.e., index.html and index.load).
>>
>> Even better, just use an Ajax component to load the data and set it to 
>> refresh periodically:
>>
>> def index():
>>     return dict()
>>
>> def get_data():
>>     ...
>>     return dict(VA=temp, VB=timet)
>>
>> In views/default/index.html:
>>
>> {{=LOAD('default', 'get_data.load', ajax=True, timeout=1000, times=
>> 'infinity')}}
>>
>> In views/default/get_data.load:
>>
>> {{=VA}}
>> {{=VB}}
>>
>> Keep in mind that this is an inefficient way to get realtime updates. 
>> First, you are polling every second, whether or not the data have changed. 
>> Second, you are sending all the data on every request instead of just the 
>> changes. This may be fine for your use case, but a more efficient approach 
>> would be to use a server push pubsub method (e.g., use websockets to 
>> publish updates to the client) -- see 
>> https://github.com/web2py/web2py/blob/master/gluon/contrib/websocket_messaging.py
>> .
>>
>> Anthony
>>
>>
>> On Friday, September 8, 2017 at 2:52:57 AM UTC-4, Wabbajack wrote:
>>>
>>> Hi All,
>>>
>>>
>>>
>>> I am really confused on auto updating variable on view...
>>> What i want is i have an initial value that is displayed on 
>>> index.html<view> thru query in default.py index function
>>> But hope to change this values everytime there is a change on the 
>>> database.
>>>
>>> I have read this 
>>> https://groups.google.com/forum/#!topic/web2py/XN9Wqb3jqKk
>>> but still having confusion the variable arent updating or creating new 
>>> string file
>>>
>>>
>>> *controllers/default.py
>>>
>>>
>>> *view/default/index.html
>>>
>>>
>>>
>>> * Also i have created a file newvalue.load on views/default/ directory
>>>
>>>
>>> *models.py
>>>
>>>
>>> <additional info>
>>> I am using web2py 2.14 on windows PC
>>>
>>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to