-
-
Notifications
You must be signed in to change notification settings - Fork 2.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Row Evolution: historical view of one or many specific rows in all Piwik reports! #534
Comments
No description provided. |
This would make Piwik a much stronger Analytics tool. |
to stay on track from #508 |
For reports that have a limited number of rows, for example: #2031, #583, #536, #584 It would be very nice to easily be able to splot the trends of each of these values over time, without having to click on each value separately to see the graph. The graph plotting history could be shown for all these values at once, maybe with multiple lines on a line plot? |
Page URL, page title, country and keyword are the labels of the DataTables. We could add a parameter "label" to the API. If set, the API plugin filters the table by label. This way, the other plugins don't event need to know about it. This filtering funcionality has to be available for other plugins as well, eg for Actions.getPageUrl. Maybe it can be implemented in the DataTable class itself. DataTable_Array has to implement a similar function which passes the request to the other tables. The filtering should provide only one record. If a match is found, we can stop searching. This is especially important for nested DataTables. If performance is poor (which I suspect), we could add some sort of index to the DataTables. It doesn't have to be super fast so we can pick a lightweight one. |
The datatable related code must definitely be automatic for all reports, and work consistently across them without need for custom hacks for some reports. The big challenge of this ticket is the UI of drawing a graph for 1 row, or several rows at once eg.
The UI should make it easy to plot one row, but also plot multiple. How could it look like? how would we "reset" to the previous table view? Where would the graph be displayed? What would be the possible interactions with the graph? We could ask Marcin our designer to prepare pixel perfect mockup but before would need to come up with wireframe level ideas of such complicated-to-integrate-nicely UI element. Any idea please suggest :) |
I've started implementing the filters for the API using the indexes that are already there on DataTables. The API gets a new parameter "label" and filters the result, if it's a DataTable or DataTable_Array. I also updated the recursive search code of the Actions plugin - works fine. As for the UI, we could open a properties dialog (similar to right-click in windows) when a row is clicked. There, we can show the available actions like "open url", "show recent development" etc. This is more flexible than icons and clutters the UI less. |
Proposal for below the graph mini dashboard
See attached proposal mockup, workflow could be:
|
Attachment: Mockup to show click to launch popover |
In the popover, when showing
thoughts? |
(In [5737]) Remove exit_rate from common metrics Refs #534 |
(In [5739]) * Refs #534 Removing exit_rate from metadata API, it was added in the standard processed metrics causing other reports to display it with 0% values
|
(In [5758]) refs #534 recursive label filter for the api |
(In [5759]) refs #534 integration tests for label filter |
The previous commits introduce a label filter. It works for all API methods and filters out a single row - even from a subtable. This filter will be used to get statistics for a single row in row evolution. In JS, the label (or the parts of the label in a nested table) will be retrived from the data table dom-nodes and an appropriate API request will be made. Please review this part. |
(In [5760]) refs #534 label filter integration tests for range (=> DataTable_Array) |
(In [5761]) refs #534 removed originalLabel (left over from an earlier version of row evolution, not needed anymore) |
(In [5762]) refs #534 svn properties set on new file DataTableLabelFilter.php |
(In [5767]) refs #534: introducing row actions for data tables |
The previous commit does not change the UI yet becuase I didn't commit the row actions' HTML in the template. I'll do that as soon as the other row evolution code is ready (because the committed code triggers row evolution). For now, we can discuss the way row actions work. I didn't add them to datatable.js because this code is already pretty long and complex. Instead, datatable.js contains code that loads row action objects based on DOM elements in the table. This way, we can add more actions to the HTML and the existing code will load new actions, which we then have to add to datatable_rowactions.js. Sounds good? |
@ezdesign Kuddos!! Review:
I think the if() could actually maybe be triggered, because of this frequent bug: #1024 I will make a few minor modifications as well in the next few hours |
The DataTable_Array case is used every time row evolution is displayed. We want to get statistics for the previous days at once, so that will be an array. |
(In [5774]) Refs #534
|
One more code review note:
Otherwise looks good, please go ahead with the rest of commit -- I'm excited! :) |
In ResponseBuilder, we get the label from $this->request. The problem is that the values are trimmed in Piwik_API_Request::getRequestArrayFromString(). The page titles reports has labels starting with a space and therefore the labels can't be found using the index of the DataTable. Can we remove the trimming in Piwik_API_Request? |
In [5848] you reverted backing up the original label to the DOM node's data because it changed the truncation. I can't reproduce the problem and neither jquery.truncate nor jquery.tooltip read data('originalText'). Can you please investigate and tell me how to reproduce the problem? We need to know the original text in order to send it to the label filter. |
(In [5872]) refs #534 lib / graph updates
|
Please try removing the escaping of single/double quotes at this line. If all graphs still work then it's good :) it probably should not be there anyway but worth confirming that nothing else breaks. |
(In [6196]) refs #534
|
so good to see Row evolution commits :) Feedback
|
Attachment: |
Attachment: |
We are going to release Row Evolution Beta as part of the next Piwik release as it's incredibly useful and a must have! I propose to move all suggestions, ideas, bug reports to another ticket and close this ticket as we reached the beta milestone. OK to close this ticket, or is there some critical bug to be fixed before stable release? |
Timo, thanks for all the bug fixes earlier... there are really not any bug I can find now :) I created the follow up ticket for all other improvements for Row Evolution V2: #3158 It would be good to fix the following 2 small bugs before stable release:
|
(In [6383]) refs #534 close row evolution popover on click outside + cancel requested content if popover is closed before loading is finished |
(In [6384]) refs #534 disable links in popover evolution charts to switch the date |
Thanks so much Steve! ROW EVOLUTION V1 done! :) well done guys.. |
(In [7179]) refs #534: bringing the new popover behavior to row evolution
|
Show graph of visits/pages over the last 30 days, for a specific row (keyword, country, etc.)
The plugin would add, in all data tables, an icon next to the keyword/ country / page view (or on hover), that would ajax load an evolution graph of the number of visits for this keyword, country or page, over the last 30 days/weeks/month. The graph would have the ‘data export’ links.
UI
We should find out how to provide this UI feature without bloating the UI with icons and new functionnality. Note that some rows in Piwik are already clickable (eg. to get the list of keyword by search engine).
One way of doing it would be to show a semi transparent icon when hovering over a row. The icon would be shown at the end of the row.
The new UI would also be used to report the new reports from #756
Report
The report would contain, for a specific keyword or search engine or country or page, the following information:
- visits in date range + sparkline
- unique visitors in date range + sparkline
- bounce rate + sparkline
- (for pages) time per page, exit rate, etc. + sparkline
Also, we should report Goals conversions, maybe in a different report, available by a click on a tab, or some other mechanism.
This report would show, for this keyword/country/page, the following info:
- overall conversions / conversion rate / revenue per visit
- for each goal…
– conversions / conversion rate/ revenue per visit.
Performance note
Piwik stores data on a “per day” basis. When plotting number of page views for the url ‘http://example.org/category/photo’ for the last 30 days, it will require selecting data for the 30 days, and navigate through the tree to get the child node data (/photo) – this is all done automatically via filters. In this example, piwik would select 90 blobs of data, and unserialize, load in memory, grep, etc. This is a severe requirement and feasability should be studied before starting the implementation.
When plotting evolution of keyword “piwik” over the last 30 days, this would require 30 blobs of data to be selected/unserialize/loaded/etc.
Note
In the first version, only one data would be plottable. In future versions, we could think about plotting 3 or 4 keywords/countris on the same graph. How would this be available in the UI? Clicking on the icon could “enable” the line to be displayed on the graph, and a “reset” button, or a click on the icon, would disable this line. Requires #397.
Keywords: evolution, graph, multiple values, multi lines, plot, entity, UI pattern
The text was updated successfully, but these errors were encountered: