Skip to content
Shekhar Prasad Rajak edited this page Dec 19, 2018 · 37 revisions

Read about daru-view here , before reading this.


New Ideas (To be reviewed)

  • Currently daru-view depends on gems like google_visualr, lazy_high_charts. Another dependencies were Nyaplot (SciRuby gem), daru-data_tables (created during GSoC'18 daru-view project). I(Shekhar) personally think that daru-view mustbe independent from google_visualr, lazy_high_charts gems.

  • Optimise loading of js files in IRuby notebook and Web application (Using proper design pattern like proxy design pattern).

  • Number of js files are increasing in adpater/js folder. It can make gem bulky. It will be better if user is having net connectiviy then load the js online (or during the installation of the gem download the js, css files in vendor/assets folder).

  • Strategy design pattern , to change the behaviour of plot and table object runtime?

    • If user want to write javascript code for the chart, they must be able to have option for it. It must be added into script tag.
  • Custom exception handling in daru-view

Why ?

  1. We are extending google_visualr, lazy_high_charts gems in daru-view, so why not to have our own gems, named daru-view-googlecharts, daru-view-highcharts and there we keep updating our code. Also we are not tracking the new commits on google_visualr, lazy_high_charts gems.

  2. I(Shekhar) personally feel that we need more modular code such that people who understand the googlecharts, highcharts official tutorials can use the our gem. (i.e. if in future some new features is added then our gem must be able to generate the js code for the same and work smoothly).


GSoC 2018 accepted Ideas :

One of the good feature daru-view provide is, we can use all the function/methods, that plotting tool already have; by accessing chart/table class using #chart or #table. But we are using google_visualr, lazy_highcharts gem to actually access the features present in Google charts JS, HighCharts.

Google charts tool

  • Since google charts have more features now and developers are keep updating it. It is important for us to extend google_visualr gems code in daru-view, i.e. adding more methods in daru/view/adapter/googlechart and use the features from the google chart js directly. (I am searching new features that can be used in daru-view)

  • DataView, ChartWrapper class, ChartEditor class; need to be implemented in daru/view/adapter/googlecharts.

  • Export the chart in various format: In google chart we can get the image url using chart.getImageURI() , then we can download the chart in different format. refer: https://stackoverflow.com/questions/46417248/how-to-export-google-chart-in-pdf

HighCharts

  • Similarly Highcharts js are updated in official site and more features are added. So we must keep updating our daru-view gem adapter/highcharts; i.e. extend the lazy_high_charts code in daru-view. (need to see new features that can be used in daru-view)

  • Currently daru-view is just using Highcharts JS but we can use more features using HighMap and HighStock. Implementation of these features in daru/view/adapter/highcharts will be very useful. Also it will be usable offline. (Since in daru-view Highcharts adapter can be used fully offline)

There are many examples present on the Highcharts -> HighStock site and some advance examples in blog as well (like this).

  • Custom styling CSS in HighCharts. Refer : https://www.highcharts.com/docs/chart-design-and-style/style-by-css

  • We can export the chart in various format (like jpg, png, svg, pdf) when we see it in browser (using iruby notebook or web app, we can see the download button at the right corner). So there must be an api(like chart.export_png) using which we can directly download the chart from the code.

DataTables

daru-data_tables is created only to use it in daru-view gem. But daru-data_tables gem is not fully completed. Currently it can display table in web applications but not iruby notebook (refer https://github.com/Shekharrajak/daru-data_tables/issues/2).

We want to load large set of data piece by piece as I discussed it here : https://datatables.net/forums/discussion/43379 But it is still not implemented.

Refer blog post for more info : http://shekharrajak.github.io/blog/GSoC-2017/Coding-Period-Week-7

There are many features we can add in daru-view/DataTables.

Updating js files

  • Google chart JS and highcharts js must be updated whenever user want. These dependent js files are updated in the official links. Refer : https://github.com/SciRuby/daru-view/issues/47

  • To make daru-view workable offline, it is loading the JS files in iruby notebook and web application. But when yousee the html source code, you see bunch of lines at the page because of js. We must have something like this

//= require daru-view/highcharts/highcharts
//= require daru-view/highcharts/highcharts-more
//= require daru-view/highcharts/highstock
//= require daru-view/googlecharts

to load js files. Refer : https://github.com/SciRuby/daru-view/issues/24#issuecomment-319287696


Note:

Contributor may need to understand the codebase of nyaplot, googlevisualr, lazy_highcharts, daru-data_tables to extend the feature. May be in near future we will remove these dependent gem(by adding all our required code into daru-view only) and use only daru-view code.

I am not expecting changes in dependent gems, since our requirement is to make it usable with daru gem and in iruby notebook as well as ruby web applications.

  • These are good to start with:
  1. https://github.com/SciRuby/daru-view/issues/67
  2. https://github.com/SciRuby/daru-view/issues/66
  3. There are many examples present in GoogleCharts and HighCharts site, that need to be present in spec/dummy_iruby examples. More examples will lead us to know more features and bugs present if any. refer: https://github.com/SciRuby/daru-view/issues/72

Questions

  • Can we create advance charts like this by extending the daru-view/highcharts code (i.e. creating methods. How will the data will be send? How those options will be set to modify the charts?)

  • Is it good idea to have some plugin (plugin in the sense, user can add more available adapters for plotting, using some command like daru-view add_adapter abc_charts)? Then user will be able to use it. I don't think it is good idea to have many adapters in daru-view itself. It must be easy to extend, when required.


Apart from these, if you have any kind of idea or suggestion; that can make daru-view better, feel free to add it here.

Clone this wiki locally