Sorry, been away for a week on holidays. Will see what I can do for you on Monday. :-)
On Sat, Mar 7, 2009 at 8:38 AM, Adam Nelson <[email protected]> wrote: > Scott, > > Thanks again. Not to be a nag but do you think you could send a few lines > of the plot_data and eventsXMLDoc "files". I have a pretty good guess about > what's in there but it would be easiest if I could see that. > > Anyway, what I've concluded is that I will prenormalize the data in my view > rather than try to make JavaScript do the heavy lifting. I'm using Django > URL handlers so there will never be a file for the data sources - just > database queries or ideally caches of previous ones. > > Thanks, > Adam > > > On Thu, Mar 5, 2009 at 5:45 PM, Scott Thomson < > [email protected]> wrote: > >> Hi Adam, >> >> Instead of generating a file, you can create plot data and event objects >> in memory and set them directly on the eventsource as shown at the top of >> the code I sent you. >> >> This might be preferable as it requires no disk write, but it does of >> course depend on your data size. >> >> <snip> >> timeplot = Timeplot.create(document.getElementById("TIMEPLOT"), >> plotInfo); >> eventSource.loadPlotData(plot_data); // JSON data >> eventSource2.loadXML(eventsXMLDoc, ''); // XML data >> </snip> >> >> I can't really speak on whether it is better to pre or post normalize but >> Timeplot certaily won't normalise the data for you. >> >> It does however support linear and logarithmic data scales if that helps. >> Here's my updateTimePlot function in case it helps you... (ignore the >> height/width theme code, it isn't working) >> >> Note that the plot data and events are loaded directly to the eventsource >> as objects not read as files. Note the columnSource definitions and the >> axis geometry definitions. >> >> function updateTimePlot(plot_data, xml_events, width, height) { >> >> var theme = Timeline.ClassicTheme.create(); >> theme.event.bubble.width = width + 300; >> theme.event.bubble.height = height + 400; >> glob_w = width + 20; >> glob_h = height + 20; >> >> var blue = new Timeplot.Color("#4682B4"); >> var green = new Timeplot.Color("#228B22"); >> var red = new Timeplot.Color("#DC143C"); >> >> var gridColor = new Timeplot.Color('#888888'); >> >> var eventSource = new Timeplot.DefaultEventSource(); >> >> var timeGeometry = new Timeplot.DefaultTimeGeometry({ >> gridColor: gridColor, >> axisLabelsPlacement: "top", >> min: 0 >> }); >> >> logGeometry = new Timeplot.LogarithmicValueGeometry({ >> gridColor: gridColor, >> axisLabelsPlacement: "left", >> min: 0 >> }); >> >> var callTime = new Timeplot.ColumnSource(eventSource,1); >> var referralTime = new Timeplot.ColumnSource(eventSource,2); >> var responseTime = new Timeplot.ColumnSource(eventSource,3); >> >> var eventSource2 = new Timeplot.DefaultEventSource(); >> >> var plotInfo = [ >> Timeplot.createPlotInfo({ >> id: "adCall-time", >> timeZone: 11, >> dataSource: callTime, >> timeGeometry: timeGeometry, >> valueGeometry: logGeometry, >> lineColor: blue, >> lineWidth: 3.0, >> dotRadius: 5.0, >> dotColor: blue, >> showValues: true >> }), >> Timeplot.createPlotInfo({ >> id: "referral-time", >> timeZone: 11, >> dataSource: referralTime, >> valueGeometry: logGeometry, >> lineColor: green, >> lineWidth: 3.0, >> dotRadius: 5.0, >> dotColor: green, >> showValues: true >> }), >> Timeplot.createPlotInfo({ >> id: "response-time", >> timeZone: 11, >> dataSource: responseTime, >> valueGeometry: logGeometry, >> lineColor: red, >> lineWidth: 3.0, >> dotRadius: 5.0, >> dotColor: red, >> showValues: true >> }), >> Timeplot.createPlotInfo({ >> id: "Events", >> timeZone: 11, >> eventSource: eventSource2, >> timeGeometry: timeGeometry, >> lineColor: red, >> theme: theme >> }) >> ]; >> >> timeplot = Timeplot.create(document.getElementById("TIMEPLOT"), >> plotInfo); >> eventSource.loadPlotData(plot_data); >> eventSource2.loadXML(xml_events, ''); >> >> var key = document.getElementById("TIMEPLOT_KEY"); >> key.innerHTML = '<span style="color: #4682B4;"><b>Ad Call >> Time</b></span> / <span style="color: #228B22;"><b>Referral Call >> Time</b></span> / <span style="color: #DC143C;"><b>Content Delivery >> Time</b></span>'; >> >> } >> >> >> On Fri, Mar 6, 2009 at 9:27 AM, Adam Nelson <[email protected]> wrote: >> >>> Scott, >>> >>> That will help alot. It leads me to another question. A little >>> background: >>> >>> I'm trying to create a voting app that shows the probability of a number >>> of outcomes happening historically. I can pull that data as >>> {datetime,score} for each possible outcome and then normalize it in JS with >>> the other scores at that datetime so the probability of all the outcomes = 1 >>> (or 100% - however you want to say it). This would require me to generate >>> the file whenever somebody requests it after somebody voted on that outcome. >>> >>> Or, I can pull the data pre-normalized, but then it would be best to pull >>> the data like {outcome_id,datetime,normalized_score} which doesn't seem to >>> be something that timeplot can handle AFAIK. This would be the functional >>> equivalent as the above situation but it's N-1 fewer queries where N is the >>> number of outcomes. >>> >>> The third option is to simply generate a file for each possible outcome >>> and update it every time somebody requests the data after somebody else >>> voted on ANY outcome. >>> >>> Have you or anybody else dealt with this kind of situation? >>> >>> Thanks very much, >>> Adam >>> >>> On Thu, Mar 5, 2009 at 5:08 PM, Scott Thomson < >>> [email protected]> wrote: >>> >>>> I tooled around with it for a while... the timeplot data seems to >>>> support JSON, but the timeline integration does not. >>>> >>>> <snip> >>>> timeplot = Timeplot.create(document.getElementById("TIMEPLOT"), >>>> plotInfo); >>>> eventSource.loadPlotData(plot_data); // JSON data >>>> eventSource2.loadXML(xml_events, ''); // XML data >>>> </snip> >>>> >>>> I used a Java servlet to generate the timeplot JSON data and then used a >>>> combination of DOJO and an xml.js library to generate the XML data for the >>>> timeline. >>>> >>>> <snip> >>>> var xml_events; >>>> for (var i = 0; i < lastQuery.adcalls.length; i++) >>>> { >>>> var adcall = lastQuery.adcalls[i]; >>>> var referral = lastQuery.adcalls[i].referrals[0]; >>>> var response = referral.responses[0]; >>>> >>>> var row = new Array(4); >>>> row[0] = adcall.date; // Add date >>>> row[1] = adcall.time; // Add adcall time >>>> row[2] = referral.time; // Add referral time >>>> row[3] = response.time; // Add response time >>>> >>>> // Add row to timeplot data >>>> plot_data[global_plot_data.length] = row; >>>> : >>>> //ellided >>>> : >>>> var attr_str = '{start: "' + adcall.tl_date + '", ' + >>>> 'title: "Test #' + (global_event_count++) + '", ' + >>>> 'link: "' + escape(referral.url) + '"}'; >>>> var attrs = eval('(' + attr_str + ')'); >>>> >>>> var desc = response.type + ' (' + response.length + ' bytes)'; >>>> >>>> xml_events += elementNL( >>>> 'event', >>>> desc, >>>> attrs >>>> ); >>>> } >>>> // Prepare XML >>>> var xml_txt = '<data>\n' + xml_events + '</data>'; >>>> // alert(xml_txt); >>>> >>>> var parser=new DOMParser(); >>>> var eventsXMLDoc=parser.parseFromString(xml_txt,"text/xml"); >>>> >>>> // update Timplot >>>> if (plot_data.length > 1) { >>>> updateTimePlot(plot_data, eventsXMLDoc, width, height); >>>> } >>>> </snip> >>>> >>>> The updateTimePlot function calls standard timeplot creation calls as >>>> per the top of this email. >>>> >>>> >>>> >>>> >>>> >>>> On Fri, Mar 6, 2009 at 7:18 AM, Adam N <[email protected]> wrote: >>>> >>>>> >>>>> Has anybody extended Timeplot to handle different data sources >>>>> (specifically JSON)? I'm new to the project so I'll probably just >>>>> convert my data to the text format available - but I'd prefer to use >>>>> JSON since everything I would typically spit out is JSON . >>>>> >>>>> Thanks. >>>>> >>>>> >>>> >>>> >>>> -- >>>> Scott Thomson >>>> 0401 726 889 >>>> >>>> >>>> >>>> >>> >>> >>> -- >>> Adam Nelson >>> >>> http://www.varud.com >>> http://twitter.com/varud >>> http://www.linkedin.com/in/adamcnelson >>> >>> >>> >>> >> >> >> -- >> Scott Thomson >> 0401 726 889 >> >> >> > > > -- > Adam Nelson > > http://www.varud.com > http://twitter.com/varud > http://www.linkedin.com/in/adamcnelson > > > > -- Scott Thomson 0401 726 889 --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "SIMILE Widgets" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/simile-widgets?hl=en -~----------~----~----~----~------~----~------~--~---
