<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-11508009</id><updated>2024-09-02T10:37:28.781+03:00</updated><title type='text'>brainstorm</title><subtitle type='html'>&lt;a href=&quot;http://www.next-reports.com&quot;&gt;NextReports&lt;/a&gt;</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://brainstormforever.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11508009/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://brainstormforever.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/11508009/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Mihai Dinca-Panaitescu</name><uri>http://www.blogger.com/profile/08537984927215211506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhs7s3DP3hBexkFGh1lwNzAyDVxZiWFCe8cGDmIwrHO-dzc97tSTm6DgHHrAT0_pAgJz6J192YOGWobIc_TPFXqdfgc3DVcsD91Up5aj7e4puxgXDy_q6n9IOwoUbiekQ/s113/splash.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>191</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-11508009.post-6179543087728232384</id><published>2016-02-01T16:42:00.000+02:00</published><updated>2016-02-01T16:42:23.117+02:00</updated><title type='text'>NextReports 9 : Creating a server color theme</title><content type='html'>NextReports 9 changed the UI by adopting bootstrap and less css preprocessor.&amp;nbsp; This means &lt;a href=&quot;http://blog.next-reports.com/2013/04/nextreports-server-create-your-color.html&quot; target=&quot;_blank&quot;&gt;the old way of adding a new theme&lt;/a&gt; is now obsolete.&lt;br /&gt;
&lt;br /&gt;
To make a new theme for NextReports Server you will have to know the following:&lt;br /&gt;
&lt;br /&gt;
- there is a &lt;b&gt;themes&lt;/b&gt; folder with 3 defined folders from start : &lt;i&gt;green&lt;/i&gt;,&lt;i&gt; red&lt;/i&gt;, &lt;i&gt;blue&lt;/i&gt;&lt;br /&gt;
- you must create a new theme folder which is similar with &lt;i&gt;red&lt;/i&gt; or &lt;i&gt;blue&lt;/i&gt; theme folder (the entire structure)&lt;br /&gt;
- inside images folder you must put your logo image for the specific theme&lt;br /&gt;
- inside less folder you have &lt;b&gt;style.less&lt;/b&gt; identical with that from &lt;i&gt;red&lt;/i&gt; or &lt;i&gt;blue&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;- &lt;/i&gt;the color changes are taken inside &lt;b&gt;variable.less&lt;/b&gt; file&lt;br /&gt;
&lt;i&gt; &lt;/i&gt;&lt;br /&gt;
Here you can look for all colors, but the important ones are:&lt;br /&gt;
&lt;i&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;// Theme Colors&lt;br /&gt;@main-color:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #FF5722;&lt;br /&gt;@main-light-color:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #FFDDD3;&lt;br /&gt;@main-lightest-color:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #FFEFE9;&lt;br /&gt;@main-lightest-bg-color:&amp;nbsp; #faf8f7;&lt;br /&gt;@main-dark-color:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #DF4C1E;&lt;br /&gt;@main-darkest-color:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #A03715;&lt;br /&gt;@secondary-color:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #4D433F;&lt;br /&gt;@secondary-light-color:&amp;nbsp;&amp;nbsp;&amp;nbsp; #E6D9D5;&lt;br /&gt;@secondary-dark-color:&amp;nbsp;&amp;nbsp;&amp;nbsp; #332C2A; &lt;br /&gt;@body-color:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #edecec;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
You can use an editor like &lt;a href=&quot;http://brackets.io/&quot; target=&quot;_blank&quot;&gt;brackets&lt;/a&gt;&lt;i&gt; . &lt;/i&gt;The advantage is that you need to compile&lt;i&gt; &lt;/i&gt;less files to obtain the final &lt;b&gt;style.css&lt;/b&gt;. And &#39;brackets&#39; editor can be set to compile a less file when you &#39;save&#39; it (LESS Autocompile extension), which is very handy. You practically modify variable.less file and save / compile it. Then you save / compile style.less which will generate your style.css file.&lt;br /&gt;
&lt;br /&gt;
All i18n files must contain a new property called: &amp;nbsp; &lt;b&gt;Settings.personalize.theme.&lt;/b&gt;&lt;i&gt;&amp;lt;color&amp;gt;&lt;/i&gt;&lt;b&gt;=&lt;/b&gt;&lt;i&gt;&amp;lt;name of theme&amp;gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://brainstormforever.blogspot.com/feeds/6179543087728232384/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11508009/6179543087728232384' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11508009/posts/default/6179543087728232384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11508009/posts/default/6179543087728232384'/><link rel='alternate' type='text/html' href='http://brainstormforever.blogspot.com/2016/02/nextreports-9-creating-server-color.html' title='NextReports 9 : Creating a server color theme'/><author><name>Mihai Dinca-Panaitescu</name><uri>http://www.blogger.com/profile/08537984927215211506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhs7s3DP3hBexkFGh1lwNzAyDVxZiWFCe8cGDmIwrHO-dzc97tSTm6DgHHrAT0_pAgJz6J192YOGWobIc_TPFXqdfgc3DVcsD91Up5aj7e4puxgXDy_q6n9IOwoUbiekQ/s113/splash.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11508009.post-3550158492120324427</id><published>2016-01-21T11:35:00.000+02:00</published><updated>2016-01-21T11:35:48.665+02:00</updated><title type='text'>NextReports Server: See your refresh time</title><content type='html'>Any widget inside a NextReports Server&amp;nbsp; dashboard can have a refresh time. By default this is zero and no refresh is done. If it is set to a bigger value, then after the specified number of seconds the widget is auto refreshed.&lt;br /&gt;
&lt;br /&gt;
Sometimes, if a dashboard has many widgets, you may want to find which of them have a refresh &amp;gt; 0. From version 9.0 this will be easily possible because widget&#39;s header will contain the actual refresh time if any:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhp_255K5s3bE_-Qrsz_COzJAQSa5eAlhh3dfOAhuipmMm4eLQ-ergB8moHCZDpb_c665yu5iGnM3cjKNtU59BylzyxGuovmReXvgIdxp-im53_wsltE05psNRxIpekXSmMhih56g/s1600/rt-30.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhp_255K5s3bE_-Qrsz_COzJAQSa5eAlhh3dfOAhuipmMm4eLQ-ergB8moHCZDpb_c665yu5iGnM3cjKNtU59BylzyxGuovmReXvgIdxp-im53_wsltE05psNRxIpekXSmMhih56g/s1600/rt-30.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
The time is nicely show in hours, minutes and seconds (if any):&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgK7dC9IycG-_dYAr6SmKKtLa32fzzp0lnVQtMDmTwnFs5bz6faFGVjIMO_5ajL-JkbbcrS7Eh84q3UDrfkvIuSaU_QtvW7hyFfkeC3H4i4-8vmh0RAaVcg0N0HhVLc0dzb2D7ICQ/s1600/rt.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgK7dC9IycG-_dYAr6SmKKtLa32fzzp0lnVQtMDmTwnFs5bz6faFGVjIMO_5ajL-JkbbcrS7Eh84q3UDrfkvIuSaU_QtvW7hyFfkeC3H4i4-8vmh0RAaVcg0N0HhVLc0dzb2D7ICQ/s1600/rt.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgo56-Ti6KaCzoid0PGj3aoQnpBCAvwjgsD74MB8jWSIx6uQlwS60uSQI6bGL_eyFfRw2arfWjhCC3aAVHxIpZ6R8b1MztyYf5bUG5VH3bT9uzEv4KmmTNPywN2UVJmfUQTMfukGQ/s1600/rt.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://brainstormforever.blogspot.com/feeds/3550158492120324427/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11508009/3550158492120324427' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11508009/posts/default/3550158492120324427'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11508009/posts/default/3550158492120324427'/><link rel='alternate' type='text/html' href='http://brainstormforever.blogspot.com/2016/01/nextreports-server-see-your-refresh-time.html' title='NextReports Server: See your refresh time'/><author><name>Mihai Dinca-Panaitescu</name><uri>http://www.blogger.com/profile/08537984927215211506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhs7s3DP3hBexkFGh1lwNzAyDVxZiWFCe8cGDmIwrHO-dzc97tSTm6DgHHrAT0_pAgJz6J192YOGWobIc_TPFXqdfgc3DVcsD91Up5aj7e4puxgXDy_q6n9IOwoUbiekQ/s113/splash.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhp_255K5s3bE_-Qrsz_COzJAQSa5eAlhh3dfOAhuipmMm4eLQ-ergB8moHCZDpb_c665yu5iGnM3cjKNtU59BylzyxGuovmReXvgIdxp-im53_wsltE05psNRxIpekXSmMhih56g/s72-c/rt-30.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11508009.post-3329501388465299315</id><published>2016-01-20T16:14:00.000+02:00</published><updated>2016-01-20T16:14:09.843+02:00</updated><title type='text'>NextReports 9: A New Header Menu</title><content type='html'>Before NextReports 9 a Tab Menu was used to show all the features. Because this was not scalable and increasing number of tabs made the application UI looked a bit ugly when a tab or more were falling to next row, NextReports 9 will use a new header menu which will contain all the sections.&lt;br /&gt;
&lt;br /&gt;
By default more space can be used by server UI because there are no tabs anymore:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUPSQgAW4nOIUczBi1BbtzVFlBxf-pm9wv-p_T-H_nXidenwFjO-bdVJgOLUAZbFT-vVNpESUO18PRMXfBXfF85CYgyuxqCW7i7RBSec3MpqDJysGQMiGSp9beMgt5y5Pmbt2CJA/s1600/1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUPSQgAW4nOIUczBi1BbtzVFlBxf-pm9wv-p_T-H_nXidenwFjO-bdVJgOLUAZbFT-vVNpESUO18PRMXfBXfF85CYgyuxqCW7i7RBSec3MpqDJysGQMiGSp9beMgt5y5Pmbt2CJA/s400/1.png&quot; width=&quot;307&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
When user clicks the menu button from top left, &lt;span class=&quot;short_text&quot; id=&quot;result_box&quot; lang=&quot;en&quot;&gt;&lt;span class=&quot;hps&quot;&gt;the menu will&lt;/span&gt; &lt;span class=&quot;hps&quot;&gt;slide&lt;/span&gt; &lt;span class=&quot;hps&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;hps&quot;&gt;left to right showing available sections:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;short_text&quot; id=&quot;result_box&quot; lang=&quot;en&quot;&gt;&lt;span class=&quot;hps&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrzlQjfuaMOb9-KrIlL46m696MsldP-IRd2isJSwmPL2cYjcpW1EVRMawAwKq3L9ppSk8A0jUOfdNXdunUSFbx0rDJDkjQam8YfIVUlwRNMRKULwrsqzDNOewlhBJjllv1xyX8Yw/s1600/2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;388&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrzlQjfuaMOb9-KrIlL46m696MsldP-IRd2isJSwmPL2cYjcpW1EVRMawAwKq3L9ppSk8A0jUOfdNXdunUSFbx0rDJDkjQam8YfIVUlwRNMRKULwrsqzDNOewlhBJjllv1xyX8Yw/s400/2.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span class=&quot;short_text&quot; id=&quot;result_box&quot; lang=&quot;en&quot;&gt;&lt;span class=&quot;hps&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;short_text&quot; id=&quot;result_box&quot; lang=&quot;en&quot;&gt;&lt;span class=&quot;hps&quot;&gt;Actions from top right like &#39;Change password&#39; and&amp;nbsp; &#39;Log out&#39; where grouped to a top right actions menu:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;short_text&quot; id=&quot;result_box&quot; lang=&quot;en&quot;&gt;&lt;span class=&quot;hps&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNr5AUB8IDsdgq8kScbqRnkGFnNuhlAW4i-iKUBHU3Vd5G-mO38CmRkFW-aybJdQVNZnsTQEISQwyqGtkU7xQSwusW5BT_11U5zAnKz1RuPKpU0Mg9CoWWbaqfFWO32nGIdCvZ7g/s1600/3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNr5AUB8IDsdgq8kScbqRnkGFnNuhlAW4i-iKUBHU3Vd5G-mO38CmRkFW-aybJdQVNZnsTQEISQwyqGtkU7xQSwusW5BT_11U5zAnKz1RuPKpU0Mg9CoWWbaqfFWO32nGIdCvZ7g/s1600/3.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span class=&quot;short_text&quot; id=&quot;result_box&quot; lang=&quot;en&quot;&gt;&lt;span class=&quot;hps&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://brainstormforever.blogspot.com/feeds/3329501388465299315/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11508009/3329501388465299315' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11508009/posts/default/3329501388465299315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11508009/posts/default/3329501388465299315'/><link rel='alternate' type='text/html' href='http://brainstormforever.blogspot.com/2016/01/nextreports-9-new-header-menu.html' title='NextReports 9: A New Header Menu'/><author><name>Mihai Dinca-Panaitescu</name><uri>http://www.blogger.com/profile/08537984927215211506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhs7s3DP3hBexkFGh1lwNzAyDVxZiWFCe8cGDmIwrHO-dzc97tSTm6DgHHrAT0_pAgJz6J192YOGWobIc_TPFXqdfgc3DVcsD91Up5aj7e4puxgXDy_q6n9IOwoUbiekQ/s113/splash.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUPSQgAW4nOIUczBi1BbtzVFlBxf-pm9wv-p_T-H_nXidenwFjO-bdVJgOLUAZbFT-vVNpESUO18PRMXfBXfF85CYgyuxqCW7i7RBSec3MpqDJysGQMiGSp9beMgt5y5Pmbt2CJA/s72-c/1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11508009.post-832723411443601509</id><published>2015-12-22T14:34:00.002+02:00</published><updated>2015-12-22T14:37:30.994+02:00</updated><title type='text'>Santa is working hard ...</title><content type='html'>NextReports Server will have a new user interface and Santa is working very hard to it.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEil-93kw-fkTXmUjYB01BzS-zl16nimJo28C3Ds1WBsB_f2Xl0NQRtRVbNDkT4cNWH2pLSR1WfeUUUQv_CrftQL6DMYflvHx4yQSkz9hGQR0otQltKWC0Lc1qh9l4tQJDM-4YxnbQ/s1600/santa.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEil-93kw-fkTXmUjYB01BzS-zl16nimJo28C3Ds1WBsB_f2Xl0NQRtRVbNDkT4cNWH2pLSR1WfeUUUQv_CrftQL6DMYflvHx4yQSkz9hGQR0otQltKWC0Lc1qh9l4tQJDM-4YxnbQ/s320/santa.gif&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
The new UI uses Bootstrap and brings many improvements in how the entire layout is created and shown to users.&lt;br /&gt;
&lt;br /&gt;
The themes were redesigned and now they are applied also to the Login page:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBIovqo49cMGeE2SoxmrUFjOYBRHGHx8A8JSAsVMzaTRE85Nzy8RtR2faUlSb7P-ZrrNa4rt7DhHFV_sIn8AlqPWXc-nUrwaWTTXV-ykM_Zhb9TaHNIBmS5H6QMyfyfDpw5_zgGQ/s1600/ui1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBIovqo49cMGeE2SoxmrUFjOYBRHGHx8A8JSAsVMzaTRE85Nzy8RtR2faUlSb7P-ZrrNa4rt7DhHFV_sIn8AlqPWXc-nUrwaWTTXV-ykM_Zhb9TaHNIBmS5H6QMyfyfDpw5_zgGQ/s640/ui1.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
The tabs were replaced with a vertical menu offering now more space and allowing for scalability (number of tabs was big enough to go to second row and creating an ugly effect). You can take a look at some screenshots:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxrTkSTAUqC_GexO6CZhx_2ad0hOK9CT7o826HmLLGKedzsNhcA264V4Z8yeP4dMsI2Am2-hHJ1O3SAttTZcWiExY-miR8jo2Jm79__TgzAGYmi1EUCdGE5sfD7CYV9wDgk_kxag/s1600/ui2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;378&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxrTkSTAUqC_GexO6CZhx_2ad0hOK9CT7o826HmLLGKedzsNhcA264V4Z8yeP4dMsI2Am2-hHJ1O3SAttTZcWiExY-miR8jo2Jm79__TgzAGYmi1EUCdGE5sfD7CYV9wDgk_kxag/s640/ui2.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqHHu3HessfD7mvIOWuJxqxxTRgoPRGpuI8EUZNH5epF_HUXWdUfnCz4SnEGhUDz3lEwakSnPUe9fjbCnkosCiUCpBhBNRXkVBZJ8Q3u9Szaw_xf8uUfH7bmVtzu8AQndRXPUZxw/s1600/ui4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;480&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqHHu3HessfD7mvIOWuJxqxxTRgoPRGpuI8EUZNH5epF_HUXWdUfnCz4SnEGhUDz3lEwakSnPUe9fjbCnkosCiUCpBhBNRXkVBZJ8Q3u9Szaw_xf8uUfH7bmVtzu8AQndRXPUZxw/s640/ui4.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1Q-B9DAVoexyNOXU5DAhvzZGx88vfdofbacODVCZ6bWVwzbhr2IBrEqR6-qgyqIL50KAfMy4YNNK793LWP07EblxdpwqCljwv8gX24hbYnyh11CTFzyruheNjQQKJTiKpngy0EA/s1600/ui3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;376&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1Q-B9DAVoexyNOXU5DAhvzZGx88vfdofbacODVCZ6bWVwzbhr2IBrEqR6-qgyqIL50KAfMy4YNNK793LWP07EblxdpwqCljwv8gX24hbYnyh11CTFzyruheNjQQKJTiKpngy0EA/s640/ui3.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Because changing the UI was a big step it wasn&#39;t time to release a new version of NextReports this year. So, instead of an awaited 8.3, a new version 9.0 will be released in January.&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;b&gt;Merry Christmas and&amp;nbsp; A Happy New Year to all NextReports users!&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://brainstormforever.blogspot.com/feeds/832723411443601509/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11508009/832723411443601509' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11508009/posts/default/832723411443601509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11508009/posts/default/832723411443601509'/><link rel='alternate' type='text/html' href='http://brainstormforever.blogspot.com/2015/12/santa-is-working-hard.html' title='Santa is working hard ...'/><author><name>Mihai Dinca-Panaitescu</name><uri>http://www.blogger.com/profile/08537984927215211506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhs7s3DP3hBexkFGh1lwNzAyDVxZiWFCe8cGDmIwrHO-dzc97tSTm6DgHHrAT0_pAgJz6J192YOGWobIc_TPFXqdfgc3DVcsD91Up5aj7e4puxgXDy_q6n9IOwoUbiekQ/s113/splash.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEil-93kw-fkTXmUjYB01BzS-zl16nimJo28C3Ds1WBsB_f2Xl0NQRtRVbNDkT4cNWH2pLSR1WfeUUUQv_CrftQL6DMYflvHx4yQSkz9hGQR0otQltKWC0Lc1qh9l4tQJDM-4YxnbQ/s72-c/santa.gif" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11508009.post-7452814788385884500</id><published>2015-11-26T17:41:00.000+02:00</published><updated>2015-11-26T17:41:03.433+02:00</updated><title type='text'>NextReports Server: More Settings</title><content type='html'>NextReports 8.3 will add a lot of new settings for users.&lt;br /&gt;
&lt;br /&gt;
Inside Application Settings a new &quot;Distribution&quot; set is found. This groups all email settings and two new:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Distributor Date Pattern&lt;/li&gt;
&lt;li&gt;Distributor Time Pattern&lt;/li&gt;
&lt;/ul&gt;
These patterns are used by generated report files if ${date} and ${time} are used inside their names.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibF9KYSe4rBufa-gvzoYXsDCBWpnxWyRqVDIc2WgR-kHwBVRsxTPo8fuGaEK-seUytmj0rebOdLa1Ig4NPOckf-KJfOOyniFCea79oNwXuOXYsFo-toFe-GnyihMUFP4xTxJ22_Q/s1600/set1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;372&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibF9KYSe4rBufa-gvzoYXsDCBWpnxWyRqVDIc2WgR-kHwBVRsxTPo8fuGaEK-seUytmj0rebOdLa1Ig4NPOckf-KJfOOyniFCea79oNwXuOXYsFo-toFe-GnyihMUFP4xTxJ22_Q/s640/set1.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&quot;General&quot;&amp;nbsp; section will have new properties like:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Polling interval (s) : number of seconds after a poll is done (to show messages to users)&lt;/li&gt;
&lt;li&gt;Upload Size (MB) : maximum size of a file that can be upload to server (in previous version it was 1MB and it was not configurable)&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh34WQZL1ve7Luy1SWOOV3JAteOMH_0owyl8hAF7ec-M0MPvCx-lUf_QuLhYw-MKKMfIHE6iWKNDbfsh5iUCohlfsRW0WT0KYEsonupuSsS2C8JzAiSkTB5mvRVOls9f9cwNpHlPw/s1600/set2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;378&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh34WQZL1ve7Luy1SWOOV3JAteOMH_0owyl8hAF7ec-M0MPvCx-lUf_QuLhYw-MKKMfIHE6iWKNDbfsh5iUCohlfsRW0WT0KYEsonupuSsS2C8JzAiSkTB5mvRVOls9f9cwNpHlPw/s640/set2.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;Data Source definition will contain two new properties for connections pool:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Increment connections number (if pool is full a number of new connections will be created inside it)&lt;/li&gt;
&lt;li&gt;Idle connection time (time a connection can stay inside pool if it is idle)&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggpCwThLNP7EhHCRJ17OQgnjNZom9gtlg4xoMODUWA8SXrXgFp3lpQMdOfIu0AwaUUApLiwLJAOGCaJ2p7r0w0bTjB91ZelvTOQQsgTAIX22ejqp7L8u8mpUtrZ5Cs2UcBFdzVlg/s1600/set3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggpCwThLNP7EhHCRJ17OQgnjNZom9gtlg4xoMODUWA8SXrXgFp3lpQMdOfIu0AwaUUApLiwLJAOGCaJ2p7r0w0bTjB91ZelvTOQQsgTAIX22ejqp7L8u8mpUtrZ5Cs2UcBFdzVlg/s1600/set3.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Any table widget will have a new property called : &quot;Enable filters&quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8t0W0grK08mUBmSv35VoZufyJFHNCAO3FErbbqXx3bfqFGEJJMOTMDbSzPhAdYk9yZFzQNHpVpkV2STxlin4VePQDaGiR8hepaWza0n-13omhXE-mIRs8rU6tgh6rkDUfeBvF4g/s1600/set4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8t0W0grK08mUBmSv35VoZufyJFHNCAO3FErbbqXx3bfqFGEJJMOTMDbSzPhAdYk9yZFzQNHpVpkV2STxlin4VePQDaGiR8hepaWza0n-13omhXE-mIRs8rU6tgh6rkDUfeBvF4g/s1600/set4.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
If this is checked, then a row with filters will be seen:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhi6tY2X4HOqOqoiOWtYVwJLRYuDeAyLWpm9wZG1njCLMb-XvtLzmSLMic_XUO4c37JvBV6FWXIwo3D4a4IeXz63T6PAKmngb0RfpXd7qKXPbX0l43QNzSRAmdzErxh7a-ulD4K9Q/s1600/set5.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;308&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhi6tY2X4HOqOqoiOWtYVwJLRYuDeAyLWpm9wZG1njCLMb-XvtLzmSLMic_XUO4c37JvBV6FWXIwo3D4a4IeXz63T6PAKmngb0RfpXd7qKXPbX0l43QNzSRAmdzErxh7a-ulD4K9Q/s640/set5.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
These are just a few properties that will increase the level of configuration inside NextReports Server.</content><link rel='replies' type='application/atom+xml' href='http://brainstormforever.blogspot.com/feeds/7452814788385884500/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11508009/7452814788385884500' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11508009/posts/default/7452814788385884500'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11508009/posts/default/7452814788385884500'/><link rel='alternate' type='text/html' href='http://brainstormforever.blogspot.com/2015/11/nextreports-server-more-settings.html' title='NextReports Server: More Settings'/><author><name>Mihai Dinca-Panaitescu</name><uri>http://www.blogger.com/profile/08537984927215211506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhs7s3DP3hBexkFGh1lwNzAyDVxZiWFCe8cGDmIwrHO-dzc97tSTm6DgHHrAT0_pAgJz6J192YOGWobIc_TPFXqdfgc3DVcsD91Up5aj7e4puxgXDy_q6n9IOwoUbiekQ/s113/splash.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibF9KYSe4rBufa-gvzoYXsDCBWpnxWyRqVDIc2WgR-kHwBVRsxTPo8fuGaEK-seUytmj0rebOdLa1Ig4NPOckf-KJfOOyniFCea79oNwXuOXYsFo-toFe-GnyihMUFP4xTxJ22_Q/s72-c/set1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11508009.post-2678695647219284032</id><published>2015-10-29T16:03:00.000+02:00</published><updated>2015-10-29T16:03:40.838+02:00</updated><title type='text'>NextReports: line spacing</title><content type='html'>From version 8.3 a new cell property will be available: &lt;b&gt;line spacing&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfJpeOOUKOBLYo1KfNi5U_0_uVNL1YkWRSomBmvdWT5IYZU6aAh-eyiw9RSV4e0sjr-k3Jr2Us4pzJ9KyVweGwB85aZJF9k_wjKbGe2QcbP84U9BKn0mkom8jh0gRiI8Rlp0E_NQ/s1600/ls1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfJpeOOUKOBLYo1KfNi5U_0_uVNL1YkWRSomBmvdWT5IYZU6aAh-eyiw9RSV4e0sjr-k3Jr2Us4pzJ9KyVweGwB85aZJF9k_wjKbGe2QcbP84U9BKn0mkom8jh0gRiI8Rlp0E_NQ/s1600/ls1.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
This property is in percents and its default value is 100.&amp;nbsp; This property has meaning if &lt;b&gt;wrap text&lt;/b&gt; is set to true and only for PDF, HTML and DOCX exporters.&lt;br /&gt;
&lt;br /&gt;
A simple header with default line spacing looks like:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgP3U2_53LJNxm64PP_xj0YptAjUrd06opbsJMvJvn9RIubIJYdNerUQHdH2cfrocW7DpR5lthtXL_uwp0t-lZu8MpbhUkwJ5KC6pcUxLSZEQWtvMeHut3mh5W6jmJdWUBnFVF5g/s1600/ls2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;271&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgP3U2_53LJNxm64PP_xj0YptAjUrd06opbsJMvJvn9RIubIJYdNerUQHdH2cfrocW7DpR5lthtXL_uwp0t-lZu8MpbhUkwJ5KC6pcUxLSZEQWtvMeHut3mh5W6jmJdWUBnFVF5g/s640/ls2.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
If we increase the line spacing to 140, it will look like:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgw_y4_N_WlH9kijLWl54defcJYpoqJXnRsls9QA4NxF7xwuUN0C9b6ufRDQbXzHLkMf-kpky6ALoGTgtW9FetBWRmR_LXcGKs5php03c5bOF_a6XI_rD_qomUij0KFOFOjKiC46Q/s1600/ls3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;326&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgw_y4_N_WlH9kijLWl54defcJYpoqJXnRsls9QA4NxF7xwuUN0C9b6ufRDQbXzHLkMf-kpky6ALoGTgtW9FetBWRmR_LXcGKs5php03c5bOF_a6XI_rD_qomUij0KFOFOjKiC46Q/s640/ls3.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://brainstormforever.blogspot.com/feeds/2678695647219284032/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11508009/2678695647219284032' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11508009/posts/default/2678695647219284032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11508009/posts/default/2678695647219284032'/><link rel='alternate' type='text/html' href='http://brainstormforever.blogspot.com/2015/10/nextreports-line-spacing.html' title='NextReports: line spacing'/><author><name>Mihai Dinca-Panaitescu</name><uri>http://www.blogger.com/profile/08537984927215211506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhs7s3DP3hBexkFGh1lwNzAyDVxZiWFCe8cGDmIwrHO-dzc97tSTm6DgHHrAT0_pAgJz6J192YOGWobIc_TPFXqdfgc3DVcsD91Up5aj7e4puxgXDy_q6n9IOwoUbiekQ/s113/splash.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfJpeOOUKOBLYo1KfNi5U_0_uVNL1YkWRSomBmvdWT5IYZU6aAh-eyiw9RSV4e0sjr-k3Jr2Us4pzJ9KyVweGwB85aZJF9k_wjKbGe2QcbP84U9BKn0mkom8jh0gRiI8Rlp0E_NQ/s72-c/ls1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11508009.post-6709269683306706144</id><published>2015-10-26T14:03:00.000+02:00</published><updated>2015-10-26T14:03:36.514+02:00</updated><title type='text'>NextReports: Report with Empty Data</title><content type='html'>When NextReports generates a report, in case there is no data, the generation process stops without creating any file.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUZA2z28HyA4WI2_HLFn-pvPWa2j5hauAC5_etn5mUw77JwWDQNLDSF2-cvEX4GpUs8t8pWdKQAhwqfp5ma77-JpncqGIc5SOCMcrt1emOSGTzPCuhNduY68VE_AlFKbyfdHazdQ/s1600/ed2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUZA2z28HyA4WI2_HLFn-pvPWa2j5hauAC5_etn5mUw77JwWDQNLDSF2-cvEX4GpUs8t8pWdKQAhwqfp5ma77-JpncqGIc5SOCMcrt1emOSGTzPCuhNduY68VE_AlFKbyfdHazdQ/s1600/ed2.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
From version 8.3 we will extend this with a new feature. Users will be able to configure how the generation process must behave regarding empty data. On any report, a new property called &lt;b&gt;&quot;show empty data&quot;&lt;/b&gt; will be available. By default it is set to false, meaning no file will be created in case of empty data.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwOLxQKoU4OVm65j6QZesxJqsbBZA9USd7QsoOTKroIZnBCxL0Ne5ACgtpB7fCCRfSV09Sub-yBzskLuvw38hWsZwmUXTixmE3LvsAxFIX2HsMRfMcU9SPKa8yH8eZLQketjqMKQ/s1600/ed1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwOLxQKoU4OVm65j6QZesxJqsbBZA9USd7QsoOTKroIZnBCxL0Ne5ACgtpB7fCCRfSV09Sub-yBzskLuvw38hWsZwmUXTixmE3LvsAxFIX2HsMRfMcU9SPKa8yH8eZLQketjqMKQ/s1600/ed1.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
But if we set it to true, then the report will be generated showing everything is available in all bands except detail band. &lt;b&gt;&quot;Timesheet&quot;&lt;/b&gt; demo report from designer will show like this:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEje9_LduP5FaYp9lZsf3zWHkhz3fTObYjCMt9db653xMjwGu9FBb9bf2THTh6LN6T95m_56Tr9vOqdJxkuBXK3cUe0SwuPAW_B53VLwM-elZb3xp78m7RusGPv3hc3mqlRyt2cvrg/s1600/ed3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEje9_LduP5FaYp9lZsf3zWHkhz3fTObYjCMt9db653xMjwGu9FBb9bf2THTh6LN6T95m_56Tr9vOqdJxkuBXK3cUe0SwuPAW_B53VLwM-elZb3xp78m7RusGPv3hc3mqlRyt2cvrg/s1600/ed3.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
In addition, users can create some layout in detail band for cases with empty data. For example, in our &quot;Timesheet&quot; report we add a new detail row with cell &lt;b&gt;&quot;No Data Found in Query!&quot;&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3gTfYzbk8rfM9N_OOOLZk9M5X4rdH0oAWh2IBEGbjDFOY2LuUMdnQpLbk8Vv7YNmI5T8mdsv8ju9iYkuC22cwj2YDyqvYPTS9eeeJBCvpThJu3i5gqZ-kzpKCaX-uNRjyDOAhhA/s1600/ed4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3gTfYzbk8rfM9N_OOOLZk9M5X4rdH0oAWh2IBEGbjDFOY2LuUMdnQpLbk8Vv7YNmI5T8mdsv8ju9iYkuC22cwj2YDyqvYPTS9eeeJBCvpThJu3i5gqZ-kzpKCaX-uNRjyDOAhhA/s1600/ed4.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
To make this row be hidden in case there is data, we must select for this cell a &lt;b&gt;&quot;hide when expression&quot;&lt;/b&gt; property. A new variable called &lt;b&gt;EMPTY_DATA&lt;/b&gt; will help us to achieve this.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLbkyyRymb4wmIfHk0k1lBV_hnLn5gqm_kjkKtZs1a4bTV8mmUP7_U18SQFBziBzShHu8YaKD-2RumUTTXcbw_ALO8KENZjt8kQrqsNmXKraEMJPbJHlse62AM7hX0_nK673gIew/s1600/ed5.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLbkyyRymb4wmIfHk0k1lBV_hnLn5gqm_kjkKtZs1a4bTV8mmUP7_U18SQFBziBzShHu8YaKD-2RumUTTXcbw_ALO8KENZjt8kQrqsNmXKraEMJPbJHlse62AM7hX0_nK673gIew/s1600/ed5.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Now, when we generate the &quot;Timesheet&quot; report and there is no data, the result will look like:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-622pBKARZxN7U07IVok8AI4JGGsRTISpDEMm9owqZ5UteVNB41Ss-jqcw4HwhRQcPcJVgUzx5by9eIfZgD1UDwMcm6YgXTurMi4BFLUGtaD08KCbJFDvMHoJXWWZBwz23XEPfQ/s1600/ed6.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-622pBKARZxN7U07IVok8AI4JGGsRTISpDEMm9owqZ5UteVNB41Ss-jqcw4HwhRQcPcJVgUzx5by9eIfZgD1UDwMcm6YgXTurMi4BFLUGtaD08KCbJFDvMHoJXWWZBwz23XEPfQ/s1600/ed6.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://brainstormforever.blogspot.com/feeds/6709269683306706144/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11508009/6709269683306706144' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11508009/posts/default/6709269683306706144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11508009/posts/default/6709269683306706144'/><link rel='alternate' type='text/html' href='http://brainstormforever.blogspot.com/2015/10/nextreports-report-with-empty-data.html' title='NextReports: Report with Empty Data'/><author><name>Mihai Dinca-Panaitescu</name><uri>http://www.blogger.com/profile/08537984927215211506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhs7s3DP3hBexkFGh1lwNzAyDVxZiWFCe8cGDmIwrHO-dzc97tSTm6DgHHrAT0_pAgJz6J192YOGWobIc_TPFXqdfgc3DVcsD91Up5aj7e4puxgXDy_q6n9IOwoUbiekQ/s113/splash.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUZA2z28HyA4WI2_HLFn-pvPWa2j5hauAC5_etn5mUw77JwWDQNLDSF2-cvEX4GpUs8t8pWdKQAhwqfp5ma77-JpncqGIc5SOCMcrt1emOSGTzPCuhNduY68VE_AlFKbyfdHazdQ/s72-c/ed2.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11508009.post-337090143939956673</id><published>2015-09-29T11:33:00.003+03:00</published><updated>2015-09-29T11:33:34.773+03:00</updated><title type='text'>Deploy NextReports Server on WebLogic 12c</title><content type='html'>First, you should  create a &lt;b&gt;nextreports-server.war&lt;/b&gt; folder and unarchive the war file here.&lt;br /&gt;
&lt;br /&gt;
Inside &lt;b&gt;nextreports-server.war/WEB-INF&lt;/b&gt;you should add weblogic.xml file:&lt;br /&gt;
&lt;pre class=&quot;java&quot; name=&quot;code&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
&amp;lt;wls:weblogic-web-app
        xmlns:wls=&quot;http://xmlns.oracle.com/weblogic/weblogic-web-app&quot;
        xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
        xsi:schemaLocation=&quot;http://java.sun.com/xml/ns/javaee
        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd
        http://xmlns.oracle.com/weblogic/weblogic-web-app
        http://xmlns.oracle.com/weblogic/weblogic-web-app/1.1/weblogic-web-app.xsd&quot;&amp;gt;

          &amp;lt;wls:weblogic-version&amp;gt;12c&amp;lt;/wls:weblogic-version&amp;gt;
 
          &amp;lt;wls:jsp-descriptor&amp;gt;
             &amp;lt;wls:debug&amp;gt;true&amp;lt;/wls:debug&amp;gt;
          &amp;lt;/wls:jsp-descriptor&amp;gt;
 
          &amp;lt;wls:container-descriptor&amp;gt;
             &amp;lt;wls:prefer-application-packages&amp;gt;
                &amp;lt;wls:package-name&amp;gt;org.joda.time.*&amp;lt;/wls:package-name&amp;gt;
             &amp;lt;/wls:prefer-application-packages&amp;gt;
          &amp;lt;/wls:container-descriptor&amp;gt;

&amp;lt;/wls:weblogic-web-app&amp;gt;
&lt;/pre&gt;
Here we specified we want another joda library than that used by weblogic.&lt;br /&gt;
&lt;br /&gt;
Next, we have to register reports folder as a web context. We create a &lt;b&gt;reports.war&lt;/b&gt; folder as a sibling to nextreports-server.war, and inside it we have a WEB-INF folder with two files:
&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;web.xml&lt;/b&gt;

&lt;br /&gt;
&lt;pre class=&quot;java&quot; name=&quot;code&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
&amp;lt;web-app 
 xmlns=&quot;http://java.sun.com/xml/ns/j2ee&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
 xsi:schemaLocation=&quot;http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd&quot;&amp;gt;
&amp;lt;/web-app&amp;gt;
&lt;/pre&gt;
and &lt;b&gt;weblogic.xml&lt;/b&gt; where we specified local path to our reports folder:

&lt;br /&gt;
&lt;pre class=&quot;java&quot; name=&quot;code&quot;&gt;&amp;lt;!DOCTYPE weblogic-web-app PUBLIC &quot;-//BEA Systems, Inc.//DTD Web Application 8.1//EN&quot; &quot;http://www.bea.com/servers/wls810/dtd/weblogic-web-jar.dtd&quot;&amp;gt;

&amp;lt;weblogic-web-app&amp;gt;

         &amp;lt;container-descriptor&amp;gt;
             &amp;lt;index-directory-enabled&amp;gt;true&amp;lt;/index-directory-enabled&amp;gt;
         &amp;lt;/container-descriptor&amp;gt;

         &amp;lt;virtual-directory-mapping&amp;gt;
             &amp;lt;local-path&amp;gt;/appsvr/reports&amp;lt;/local-path&amp;gt;
             &amp;lt;url-pattern&amp;gt;*&amp;lt;/url-pattern&amp;gt;
         &amp;lt;/virtual-directory-mapping&amp;gt;

         &amp;lt;context-root&amp;gt;/reports&amp;lt;/context-root&amp;gt;

&amp;lt;/weblogic-web-app&amp;gt;
&lt;/pre&gt;
After your server starts, you should accordingly modify your server settings like base url, reports url , mail server and so on.&lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
&lt;a href=&quot;https://blogs.oracle.com/middleware/entry/publish_static_content_to_weblogic&quot; target=&quot;_blank&quot;&gt;Publish static context to WebLogic&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://brainstormforever.blogspot.com/feeds/337090143939956673/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11508009/337090143939956673' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11508009/posts/default/337090143939956673'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11508009/posts/default/337090143939956673'/><link rel='alternate' type='text/html' href='http://brainstormforever.blogspot.com/2015/09/deploy-nextreports-server-on-weblogic.html' title='Deploy NextReports Server on WebLogic 12c'/><author><name>Mihai Dinca-Panaitescu</name><uri>http://www.blogger.com/profile/08537984927215211506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhs7s3DP3hBexkFGh1lwNzAyDVxZiWFCe8cGDmIwrHO-dzc97tSTm6DgHHrAT0_pAgJz6J192YOGWobIc_TPFXqdfgc3DVcsD91Up5aj7e4puxgXDy_q6n9IOwoUbiekQ/s113/splash.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11508009.post-4897736859436155915</id><published>2015-08-18T10:38:00.000+03:00</published><updated>2015-08-18T10:38:20.898+03:00</updated><title type='text'>NextCharts: Bar Charts with Negative Values</title><content type='html'>NextCharts has now support for bar charts with negative values. A new chart type called &lt;b&gt;nbar &lt;/b&gt;was introduced. From NextReports 8.2 version this feature will be part of designer and server.&lt;br /&gt;
&lt;br /&gt;
A simple bar chart with negative and positive values will show all values over X axis if chart type is &lt;b&gt;bar&lt;/b&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaDsuiAls-hkb4d_NHClF4JeylZgACkRgnIX7iBfO9VZercT_0Y765-MPN-6pEJC8kVqq60X1IfWJWd0cnXJMJM1gcEgXfhsIqg5CyUICHXzNkm0ze_o5yr9uxeTO5UwC7Zi9FcA/s1600/nbar-1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaDsuiAls-hkb4d_NHClF4JeylZgACkRgnIX7iBfO9VZercT_0Y765-MPN-6pEJC8kVqq60X1IfWJWd0cnXJMJM1gcEgXfhsIqg5CyUICHXzNkm0ze_o5yr9uxeTO5UwC7Zi9FcA/s1600/nbar-1.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
If we just change the type from &lt;b&gt;bar &lt;/b&gt;to &lt;b&gt;nbar&lt;/b&gt;,&lt;b&gt;&amp;nbsp; &lt;/b&gt;X axis will be considered at 0, so positive values will be shown over it and negative values will be shown under it:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieQNtARvpstrVjCdXImPDk7NA8x3i71RIkdh5z7HmLtjJTjJczt25hCPS1mvN1LhXuY3nI0CS1UOqbxg7w5g26zJCIDa0YGandVJeBYvxPkOHlHQul3JeRn47bpAa6BPyv-jbBgQ/s1600/nbar-2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieQNtARvpstrVjCdXImPDk7NA8x3i71RIkdh5z7HmLtjJTjJczt25hCPS1mvN1LhXuY3nI0CS1UOqbxg7w5g26zJCIDa0YGandVJeBYvxPkOHlHQul3JeRn47bpAa6BPyv-jbBgQ/s1600/nbar-2.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
In case all values for nbar are positive, then it will be no difference between bar with startingFromZero=true and a nbar chart.&lt;br /&gt;
&lt;br /&gt;
In case all values for nbar are negative, then the chart will have all its values under X axis:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiORoNpGJIX9Ou_NaC85u7oVgZV3sf_ETxtRnLcVriXhCMI5zsnIlLs7V-JEj1ERmAz_Dnl7xQf-I2evjQmUSQaoLqxQtu1ND3tLgTLXpWra_cgsW9fyVfaeYBFaZBRJAw5Mq1cAw/s1600/nbar-3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiORoNpGJIX9Ou_NaC85u7oVgZV3sf_ETxtRnLcVriXhCMI5zsnIlLs7V-JEj1ERmAz_Dnl7xQf-I2evjQmUSQaoLqxQtu1ND3tLgTLXpWra_cgsW9fyVfaeYBFaZBRJAw5Mq1cAw/s1600/nbar-3.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;nbar&lt;/b&gt; chart can support as styles &lt;b&gt;glass&lt;/b&gt; (as above) or &lt;b&gt;normal&lt;/b&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJtYrcI-Z8LX3whUhv3kDw0McaaIwFlwHfx_fvHGva5pkQRCHPGTHLBaxmBRGM_cwYCe-EWgTC49fNImUYCrdPaTAXSSPB1Tvt_sezYS0xUzW4WhJa1XotXuLyYIf89GeKZG-UzA/s1600/nbar-4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJtYrcI-Z8LX3whUhv3kDw0McaaIwFlwHfx_fvHGva5pkQRCHPGTHLBaxmBRGM_cwYCe-EWgTC49fNImUYCrdPaTAXSSPB1Tvt_sezYS0xUzW4WhJa1XotXuLyYIf89GeKZG-UzA/s1600/nbar-4.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://brainstormforever.blogspot.com/feeds/4897736859436155915/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11508009/4897736859436155915' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11508009/posts/default/4897736859436155915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11508009/posts/default/4897736859436155915'/><link rel='alternate' type='text/html' href='http://brainstormforever.blogspot.com/2015/08/nextcharts-bar-charts-with-negative.html' title='NextCharts: Bar Charts with Negative Values'/><author><name>Mihai Dinca-Panaitescu</name><uri>http://www.blogger.com/profile/08537984927215211506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhs7s3DP3hBexkFGh1lwNzAyDVxZiWFCe8cGDmIwrHO-dzc97tSTm6DgHHrAT0_pAgJz6J192YOGWobIc_TPFXqdfgc3DVcsD91Up5aj7e4puxgXDy_q6n9IOwoUbiekQ/s113/splash.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaDsuiAls-hkb4d_NHClF4JeylZgACkRgnIX7iBfO9VZercT_0Y765-MPN-6pEJC8kVqq60X1IfWJWd0cnXJMJM1gcEgXfhsIqg5CyUICHXzNkm0ze_o5yr9uxeTO5UwC7Zi9FcA/s72-c/nbar-1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11508009.post-168643056633141756</id><published>2015-08-05T11:10:00.000+03:00</published><updated>2015-08-05T11:10:34.258+03:00</updated><title type='text'>NextCharts: Highlight selection</title><content type='html'>From version 1.5, in addition to tooltip message,&amp;nbsp; NextCharts allows to highlight selected element through a changed color. This version of library will be used by NextReports Server 8.2&lt;br /&gt;
&lt;br /&gt;
There are different situations which were taken into account. For simple 2D charts like line, area, bar, pie, bubble, selected element (like bar, arc, circle) will have another color, lighter or darker depending on the brightness of the current color. For 3D charts like dome, cylinder, parallelepiped, selected element will be the &#39;visible&#39; part of it and it needs some more drawing adjustments to show (after fill) all the lines and arcs that are supposed to be on top.&lt;br /&gt;
&lt;br /&gt;
Let&#39;s see some examples of highlighting.&lt;br /&gt;
&lt;br /&gt;
Bar highlighting: &lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIYFeUFQPIAUZbQYlGK05FxgxMrvb2fh4hSCefoqg0sKXPa-6c0ozti2_i5LW6XqRa2hkW-3X1peotHe8603gsT81ukL-gRujZDX1TKkTAcIkAz2hl0dlysVk0s5dNpssdrHgADA/s1600/high-bar-1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;289&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIYFeUFQPIAUZbQYlGK05FxgxMrvb2fh4hSCefoqg0sKXPa-6c0ozti2_i5LW6XqRa2hkW-3X1peotHe8603gsT81ukL-gRujZDX1TKkTAcIkAz2hl0dlysVk0s5dNpssdrHgADA/s640/high-bar-1.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjn-g2eThu9r48q5QfyXsh8_L3tUk1LNJzoZd_EHAIsVPhdvczwJsQy7-rGZZicebvo8RigLFk5C1LhGSAtrdFnBUv71anhADLvgrFCWa2epFkP_gl21TNk6FhB9Z8gxa5HZQhhw/s1600/high-bar-2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;288&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjn-g2eThu9r48q5QfyXsh8_L3tUk1LNJzoZd_EHAIsVPhdvczwJsQy7-rGZZicebvo8RigLFk5C1LhGSAtrdFnBUv71anhADLvgrFCWa2epFkP_gl21TNk6FhB9Z8gxa5HZQhhw/s640/high-bar-2.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Stackedbar highlighting:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwOb3gmED4ZYy6FfE2HqvRRJvIU2TbUcRoUEkFCrradfFU-_uOBBhjwWWR2JwOx5a-stKpIqSitIvrqyV8GZiIqsbm85Ewnutcc3FQrltBnrD6Ieh4KG-bbrP9Jr9kfUmk_zMKUg/s1600/high-sbar-1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;288&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwOb3gmED4ZYy6FfE2HqvRRJvIU2TbUcRoUEkFCrradfFU-_uOBBhjwWWR2JwOx5a-stKpIqSitIvrqyV8GZiIqsbm85Ewnutcc3FQrltBnrD6Ieh4KG-bbrP9Jr9kfUmk_zMKUg/s640/high-sbar-1.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhIju77WF7goNuugYtRYNNkSi_bYWutHpJ7YD7BBIEEWGlsUrokzN3Z7Vr9J1W-tm0ZlLqXs69NU3tKjWM3QwUqCY4ccAfgJNoQInT4hVXgzAiCX_OZ-s_Ds-I5K1I0MLaMa5eCA/s1600/high-sbar-2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;288&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhIju77WF7goNuugYtRYNNkSi_bYWutHpJ7YD7BBIEEWGlsUrokzN3Z7Vr9J1W-tm0ZlLqXs69NU3tKjWM3QwUqCY4ccAfgJNoQInT4hVXgzAiCX_OZ-s_Ds-I5K1I0MLaMa5eCA/s640/high-sbar-2.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Line highlighting:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYp8DPO-G-awCO2GrUjOs23_pZvyyPofTYjyMzvj9BOyEXCr15Y1cT0xlr2G6TmoL7h7PFnW1vK_2DlyM_hA4PQSs-IjJdBGAW8oTH4u8pi8vWmGpFzO4kj1Jb8xiJ4xxHjGJxnQ/s1600/high-line-1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;288&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYp8DPO-G-awCO2GrUjOs23_pZvyyPofTYjyMzvj9BOyEXCr15Y1cT0xlr2G6TmoL7h7PFnW1vK_2DlyM_hA4PQSs-IjJdBGAW8oTH4u8pi8vWmGpFzO4kj1Jb8xiJ4xxHjGJxnQ/s640/high-line-1.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcUXL48OxOjBlZxIjpztP4MTnvUZfFY6opETGZBJr92mQ7b_uLZ5jXvBGYLFFq58eRjecfvO75apVug67sSgOCc7uhs8MjrKNTGqkeUMXehhi3tc4qP7FQqxFE9rTZic23DXJhBw/s1600/high-line-2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;288&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcUXL48OxOjBlZxIjpztP4MTnvUZfFY6opETGZBJr92mQ7b_uLZ5jXvBGYLFFq58eRjecfvO75apVug67sSgOCc7uhs8MjrKNTGqkeUMXehhi3tc4qP7FQqxFE9rTZic23DXJhBw/s640/high-line-2.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Pie highlighting:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZoAgACdZSXUKF4Bt_b86V9-xCsMogfUyfJXuSLK-j95ZPWhYKFozRYLYd8DQpNMR9Ab4rpo6S95FRVPRx4lr9aaNHBFLbXLswCAN9O5yzBEY0L6dx76BwLqgS8o77jFRyHlsq3g/s1600/high-pie-1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;362&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZoAgACdZSXUKF4Bt_b86V9-xCsMogfUyfJXuSLK-j95ZPWhYKFozRYLYd8DQpNMR9Ab4rpo6S95FRVPRx4lr9aaNHBFLbXLswCAN9O5yzBEY0L6dx76BwLqgS8o77jFRyHlsq3g/s640/high-pie-1.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifzFVVEblv2AHx16_CG6ICnTMkrrLOj7Ds2OAdLh2W56rXMQ6HS_yMh_e8-ilHQ8c1bIEWqnVT-G3SrJ5YEljIwnUQANG0SSvNKq3T2kV79WtrYfKniPu4qscsRlS4_HSt0-D1AQ/s1600/high-pie-2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;362&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifzFVVEblv2AHx16_CG6ICnTMkrrLOj7Ds2OAdLh2W56rXMQ6HS_yMh_e8-ilHQ8c1bIEWqnVT-G3SrJ5YEljIwnUQANG0SSvNKq3T2kV79WtrYfKniPu4qscsRlS4_HSt0-D1AQ/s640/high-pie-2.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Cylinder highlighting with different area selection between top and other elements:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgq0DNK-BVTCDwXtoTWsb-7zpQUEn2cJhp7MhUr5OgSsJb3jXQ3TCn9BGd_6jKLRw4xKNUqfysP7xlzHCEXV7EB-_9PtN_h9KVl8wdVvOnY8_STxT7qoH4E4whcDzCeEk71LzBb-A/s1600/high-cyl-1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;366&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgq0DNK-BVTCDwXtoTWsb-7zpQUEn2cJhp7MhUr5OgSsJb3jXQ3TCn9BGd_6jKLRw4xKNUqfysP7xlzHCEXV7EB-_9PtN_h9KVl8wdVvOnY8_STxT7qoH4E4whcDzCeEk71LzBb-A/s640/high-cyl-1.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_RBtBOakNu0o8jOiWja-TPrpyS1MN0FViENn9G6oWKtmnMZLA7lkVgH4xkN6iWUHtxJbtohlxu-IRgFVI3NCKRUO0mrekcso9XEdi5oLN0aumDdcXBQQw-HFYdVGK5bubm8A05A/s1600/high-cyl-2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;366&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_RBtBOakNu0o8jOiWja-TPrpyS1MN0FViENn9G6oWKtmnMZLA7lkVgH4xkN6iWUHtxJbtohlxu-IRgFVI3NCKRUO0mrekcso9XEdi5oLN0aumDdcXBQQw-HFYdVGK5bubm8A05A/s640/high-cyl-2.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj24cVviPiI6PVES26d-nr_-iHRQCBnt7c5zjXC83h1NDwWWbOX0Km6BPOcNkY7iRCa6pszxWIXWbXbzC8M6GlmzJC3wE2M7KBoEmuoxvyVUQ0MStezdeRlwUu3PZhimlT_6r5YNw/s1600/high-cyl-3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;366&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj24cVviPiI6PVES26d-nr_-iHRQCBnt7c5zjXC83h1NDwWWbOX0Km6BPOcNkY7iRCa6pszxWIXWbXbzC8M6GlmzJC3wE2M7KBoEmuoxvyVUQ0MStezdeRlwUu3PZhimlT_6r5YNw/s640/high-cyl-3.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://brainstormforever.blogspot.com/feeds/168643056633141756/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11508009/168643056633141756' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11508009/posts/default/168643056633141756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11508009/posts/default/168643056633141756'/><link rel='alternate' type='text/html' href='http://brainstormforever.blogspot.com/2015/08/nextcharts-highlight-selection.html' title='NextCharts: Highlight selection'/><author><name>Mihai Dinca-Panaitescu</name><uri>http://www.blogger.com/profile/08537984927215211506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhs7s3DP3hBexkFGh1lwNzAyDVxZiWFCe8cGDmIwrHO-dzc97tSTm6DgHHrAT0_pAgJz6J192YOGWobIc_TPFXqdfgc3DVcsD91Up5aj7e4puxgXDy_q6n9IOwoUbiekQ/s113/splash.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIYFeUFQPIAUZbQYlGK05FxgxMrvb2fh4hSCefoqg0sKXPa-6c0ozti2_i5LW6XqRa2hkW-3X1peotHe8603gsT81ukL-gRujZDX1TKkTAcIkAz2hl0dlysVk0s5dNpssdrHgADA/s72-c/high-bar-1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11508009.post-3599202531031787489</id><published>2015-07-14T10:54:00.001+03:00</published><updated>2015-07-14T10:55:15.326+03:00</updated><title type='text'>NextReports: Grid Style for Charts</title><content type='html'>NextReports charts can have a grid shown for x, y values. Till version 8.2, this grid can only be a full-line of a specific color. From version 8.2 this grid can also have style like line, dashed line or dotted line. This style is specified for both X and Y grid lines:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1Jg6klLBr8iKhlBBwPZbmlpVyyo3eOEfYMLTZOuTsY3AKxnyEy7Cv0NWLRvXr2W0qy1UvJnEsxuzGarhPwb4dLEQ2nk5AsOjq6EcQYuWP2ZR-8QWTgFY1IAPtSbSHNlEad8Ggvw/s1600/s1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1Jg6klLBr8iKhlBBwPZbmlpVyyo3eOEfYMLTZOuTsY3AKxnyEy7Cv0NWLRvXr2W0qy1UvJnEsxuzGarhPwb4dLEQ2nk5AsOjq6EcQYuWP2ZR-8QWTgFY1IAPtSbSHNlEad8Ggvw/s1600/s1.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
By default, simple line style is used:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgc7cjY7vuPMKv3Caaje2eSc9dhAsIKRm-wS4hhmq5SJnisSZdqL3FJHbLpwcp1V7FOkm_0KWFrehJOzQgVqBKhLi5soCuzuURcQcstc2hWl31XlKIlpepzKjq1IPlIrSzau8CKMg/s1600/s3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgc7cjY7vuPMKv3Caaje2eSc9dhAsIKRm-wS4hhmq5SJnisSZdqL3FJHbLpwcp1V7FOkm_0KWFrehJOzQgVqBKhLi5soCuzuURcQcstc2hWl31XlKIlpepzKjq1IPlIrSzau8CKMg/s1600/s3.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
The other two styles are dashed line:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCVYxyv7iBbeGS8IqItIHoXCWDvvQrSc_Cl6lcjTKTB1aHtIKxCpHdXTTKhtQVHVTKeIqgry6nyoccLnCw896HoUWnxMnWR41vSCtcN124Cdhl6GHQcTDNTbSbinc8iYuAAZbCkA/s1600/s4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCVYxyv7iBbeGS8IqItIHoXCWDvvQrSc_Cl6lcjTKTB1aHtIKxCpHdXTTKhtQVHVTKeIqgry6nyoccLnCw896HoUWnxMnWR41vSCtcN124Cdhl6GHQcTDNTbSbinc8iYuAAZbCkA/s1600/s4.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
and dotted line:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimktWBw0VPd2i3eVnbBNsUORQWHi-3Xi5WxzoflKE05R_OINOS5yuWsFxI5mXc7vI4AWoqpQ2gckf9RdE3ODsAPOl65hknpdeV-QpQBIbYAcNnbK5u9pBef-BM6i5pb6vNHIlmbw/s1600/s2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimktWBw0VPd2i3eVnbBNsUORQWHi-3Xi5WxzoflKE05R_OINOS5yuWsFxI5mXc7vI4AWoqpQ2gckf9RdE3ODsAPOl65hknpdeV-QpQBIbYAcNnbK5u9pBef-BM6i5pb6vNHIlmbw/s1600/s2.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
This feature is available on all modern browsers and it is supported from Firefox 27+, IE 11+.</content><link rel='replies' type='application/atom+xml' href='http://brainstormforever.blogspot.com/feeds/3599202531031787489/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11508009/3599202531031787489' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11508009/posts/default/3599202531031787489'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11508009/posts/default/3599202531031787489'/><link rel='alternate' type='text/html' href='http://brainstormforever.blogspot.com/2015/07/nextreports-grid-style-for-charts.html' title='NextReports: Grid Style for Charts'/><author><name>Mihai Dinca-Panaitescu</name><uri>http://www.blogger.com/profile/08537984927215211506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhs7s3DP3hBexkFGh1lwNzAyDVxZiWFCe8cGDmIwrHO-dzc97tSTm6DgHHrAT0_pAgJz6J192YOGWobIc_TPFXqdfgc3DVcsD91Up5aj7e4puxgXDy_q6n9IOwoUbiekQ/s113/splash.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1Jg6klLBr8iKhlBBwPZbmlpVyyo3eOEfYMLTZOuTsY3AKxnyEy7Cv0NWLRvXr2W0qy1UvJnEsxuzGarhPwb4dLEQ2nk5AsOjq6EcQYuWP2ZR-8QWTgFY1IAPtSbSHNlEad8Ggvw/s72-c/s1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11508009.post-4733444448016108615</id><published>2015-06-22T15:00:00.000+03:00</published><updated>2015-06-22T15:00:27.139+03:00</updated><title type='text'>Adjust your SQL queries to see data series</title><content type='html'>Many users have data in a specific table format with a &#39;type&#39; column and want to show inside a chart series for every value of &#39;type&#39;.&lt;br /&gt;
&lt;br /&gt;
Lets take a simple example of a DAY table (where NAME column is our &#39;type&#39;) :&lt;br /&gt;
&lt;pre class=&quot;java&quot; name=&quot;code&quot;&gt;NAME&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VALUE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CREATION_DATE
----------------------------------------------------------------- 
MORNING&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;     90&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2015-06-12
NOON&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 210&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2015-06-12
EVENING &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;   60&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2015-06-12
MORNING&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;     85 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2015-06-13
NOON&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 240&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2015-06-13
EVENING &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;   50&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2015-06-13
MORNING&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;     92&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2015-06-14
NOON&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 235  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2015-06-14
EVENING &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;   55 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2015-06-14&lt;/pre&gt;
&lt;br /&gt;
We want to show DATE on x axis and series for MORNING, NOON, EVENING on y axis. To make this happen NextReports must obtain a query result like:&lt;br /&gt;
&lt;pre class=&quot;java&quot; name=&quot;code&quot;&gt;CREATION_DATE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MORNING_V&amp;nbsp;&amp;nbsp;  NOON_V   EVENING_V
-------------------------------------------------------------------------------------------------
2015-06-12 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;90 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 210 &amp;nbsp; &amp;nbsp;  60 
2015-06-13&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 85&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 240 &amp;nbsp; &amp;nbsp;  50 &amp;nbsp; 
2015-06-14 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 92 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 235 &amp;nbsp; &amp;nbsp;  55 
&lt;/pre&gt;
&lt;br /&gt;
Then it is very easy to add DATE on x axis and MORNING_V, NOON_V, EVENING_V on y axis as column series. &lt;br /&gt;
&lt;br /&gt;
This transformation can be easily obtained using sub-queries. For example, on our table we will use following sql:&lt;br /&gt;
&lt;pre class=&quot;java&quot; name=&quot;code&quot;&gt;SELECT DISTINCT
&amp;nbsp;&amp;nbsp; a1.CREATIONDATE,
 &amp;nbsp; (select VALUE from DAY a2 where a2.name=&#39;MORNING&#39; and&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a2.CREATIONDATE=a1.CREATIONDATE) as MORNING_V,
&amp;nbsp;&amp;nbsp; (select VALUE from DAY a2 where a2.name=&#39;NOON&#39; and
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a2.CREATIONDATE=a1.CREATIONDATE) as NOON_V,
&amp;nbsp;&amp;nbsp; (select VALUE from DAY a2 where a2.name=&#39;EVENING&#39; and
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a2.CREATIONDATE=a1.CREATIONDATE) as EVENING_V
FROM
DAY a1
&lt;/pre&gt;
</content><link rel='replies' type='application/atom+xml' href='http://brainstormforever.blogspot.com/feeds/4733444448016108615/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11508009/4733444448016108615' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11508009/posts/default/4733444448016108615'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11508009/posts/default/4733444448016108615'/><link rel='alternate' type='text/html' href='http://brainstormforever.blogspot.com/2015/06/adjust-your-sql-queries-to-see-data.html' title='Adjust your SQL queries to see data series'/><author><name>Mihai Dinca-Panaitescu</name><uri>http://www.blogger.com/profile/08537984927215211506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhs7s3DP3hBexkFGh1lwNzAyDVxZiWFCe8cGDmIwrHO-dzc97tSTm6DgHHrAT0_pAgJz6J192YOGWobIc_TPFXqdfgc3DVcsD91Up5aj7e4puxgXDy_q6n9IOwoUbiekQ/s113/splash.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11508009.post-1191116082502822277</id><published>2015-06-04T15:47:00.000+03:00</published><updated>2015-06-04T15:47:19.540+03:00</updated><title type='text'>NextReports Server: JNDI Data Source</title><content type='html'>Starting with version 8.1, NextReports Server (war) can use JNDI protocol to connect to such data sources defined inside some web server.&lt;br /&gt;
&lt;br /&gt;
A new type (JNDI) was added and users will just need to specify the JNDI name:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBMu-8N6q49lEAUl3iCoNFesb8njyYf0ar0sEx0qdWw8AeBUylfVZ6HXBz1ASZ5_dUesyW4Cl9pv7n_bEikxufSlTwUbMn6USB3CyhcAcfHdlMGmgrzQuxeDPt8cNMXFy-fJP8uQ/s1600/jndi.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;137&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBMu-8N6q49lEAUl3iCoNFesb8njyYf0ar0sEx0qdWw8AeBUylfVZ6HXBz1ASZ5_dUesyW4Cl9pv7n_bEikxufSlTwUbMn6USB3CyhcAcfHdlMGmgrzQuxeDPt8cNMXFy-fJP8uQ/s320/jndi.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://brainstormforever.blogspot.com/feeds/1191116082502822277/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11508009/1191116082502822277' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11508009/posts/default/1191116082502822277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11508009/posts/default/1191116082502822277'/><link rel='alternate' type='text/html' href='http://brainstormforever.blogspot.com/2015/06/nextreports-server-jndi-data-source.html' title='NextReports Server: JNDI Data Source'/><author><name>Mihai Dinca-Panaitescu</name><uri>http://www.blogger.com/profile/08537984927215211506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhs7s3DP3hBexkFGh1lwNzAyDVxZiWFCe8cGDmIwrHO-dzc97tSTm6DgHHrAT0_pAgJz6J192YOGWobIc_TPFXqdfgc3DVcsD91Up5aj7e4puxgXDy_q6n9IOwoUbiekQ/s113/splash.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBMu-8N6q49lEAUl3iCoNFesb8njyYf0ar0sEx0qdWw8AeBUylfVZ6HXBz1ASZ5_dUesyW4Cl9pv7n_bEikxufSlTwUbMn6USB3CyhcAcfHdlMGmgrzQuxeDPt8cNMXFy-fJP8uQ/s72-c/jndi.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11508009.post-5322122469375828037</id><published>2015-05-26T17:18:00.000+03:00</published><updated>2015-05-26T17:18:04.784+03:00</updated><title type='text'>NextReports: Batch Mode</title><content type='html'>From version 8.1 users can &lt;b&gt;run/schedule a report in batch mode&lt;/b&gt;. What does this mean?&lt;br /&gt;
If a report has a single-selection parameter with a source and if this parameter is selected as a &quot;batch parameter&quot; then running it in batch mode will generate a report for every value of that batch parameter.&lt;br /&gt;
&lt;br /&gt;
To make this right there are two conditions that must be met:&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&lt;b&gt;Batch parameter must not be set as dynamic&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;All chained parameters that are children of batch parameter must be set as dynamic.&lt;/b&gt;&lt;/li&gt;
&lt;/ol&gt;
These two conditions are also written inside batch definition panel and are automatically set on save if user does not do it.&lt;br /&gt;
&lt;br /&gt;
As an example, we use a report that shows the Timesheet for an employee on all projects he is assigned to. There are two parameters : Employee and Work code (work, meeting, administration, travel) so we can see the Timesheet for that employee for a specific list of work codes.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMrin_pVTY6Gnz477YNfA6uQ0IPei6PFv-BwlnvoevpYpNfaC0CQbj00BrSPlHpqico10mhA3Ia8Wzc5PPXCw1ZPBxUpGmwQ_bQ4PVhoApd6AyXaXViBG2mHhV-vq4Oq6brgnFBw/s1600/b1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;366&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMrin_pVTY6Gnz477YNfA6uQ0IPei6PFv-BwlnvoevpYpNfaC0CQbj00BrSPlHpqico10mhA3Ia8Wzc5PPXCw1ZPBxUpGmwQ_bQ4PVhoApd6AyXaXViBG2mHhV-vq4Oq6brgnFBw/s1600/b1.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Here we see that the parameter we want to use in batch (Employee) is not set as dynamic, but the other parameter (Code) which is a child of Employee parameter is set as dynamic.&lt;br /&gt;
&lt;br /&gt;
Batch Mode is practically a new step in run/schedule wizard process:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkWClkeSm9ZryRrpb_pmJSgISQvnG0XMJI-jBgefgcAlLucExBWRYNAHDBF7-Xr6n_QaP2XaVldDHWJQQj0Rv4vXdGD7GcK7S1Dmo76A8eW8tosXOJfA_dzrwF-H1PNl1NB1e58Q/s1600/b2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;366&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkWClkeSm9ZryRrpb_pmJSgISQvnG0XMJI-jBgefgcAlLucExBWRYNAHDBF7-Xr6n_QaP2XaVldDHWJQQj0Rv4vXdGD7GcK7S1Dmo76A8eW8tosXOJfA_dzrwF-H1PNl1NB1e58Q/s1600/b2.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&quot;Employee&quot; parameter was set as a &lt;b&gt;batch parameter&lt;/b&gt;. This simple selection means the report will be generated for all &quot;Employee&quot; values.&lt;br /&gt;
&lt;br /&gt;
Second field, called &lt;b&gt;Batch Data Query&lt;/b&gt;, is a simple sql select that gives an email address for every Employee. First column in query must be the same as that used in source for Employee parameter, which is defined as: &lt;br /&gt;
&lt;br /&gt;
select distinct &lt;b&gt;employeeid&lt;/b&gt;, 
       firstname || &#39; &#39; || name as fullName
from employee&lt;br /&gt;
&lt;br /&gt;
Second column in query is the email column.&lt;br /&gt;
&lt;br /&gt;
Batch Data Query is needed only if we need to send every generated report to it&#39;s actual employee.&lt;br /&gt;
&lt;br /&gt;
Mail Destination Step in this case is allowed to not define a &lt;b&gt;To&lt;/b&gt; property, because it is dynamically set at run time:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipvsrJZxTiCJsLNb752APS_80XU9cfzMYOi0UTis1GRUL1BZ4yzfbE3d4A1HpPvBn10jMKZQcGX-jTTFOiXyzDaKhkojor75PJWky984V-5RFqGbP07U9YEEaP9PF7tgB9m0taGA/s1600/b3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;368&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipvsrJZxTiCJsLNb752APS_80XU9cfzMYOi0UTis1GRUL1BZ4yzfbE3d4A1HpPvBn10jMKZQcGX-jTTFOiXyzDaKhkojor75PJWky984V-5RFqGbP07U9YEEaP9PF7tgB9m0taGA/s1600/b3.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
But we can also select a &lt;b&gt;To&lt;/b&gt; property if we also want to send all generated reports to a static email address. In mail step, we can see that besides existing template values until version 8.1 (like ${date}, ${time}, ${name}) we can use parameter values as $P{Employee} or $P{Code}. This allows to have a mail message customized for every employee.</content><link rel='replies' type='application/atom+xml' href='http://brainstormforever.blogspot.com/feeds/5322122469375828037/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11508009/5322122469375828037' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11508009/posts/default/5322122469375828037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11508009/posts/default/5322122469375828037'/><link rel='alternate' type='text/html' href='http://brainstormforever.blogspot.com/2015/05/nextreports-batch-mode.html' title='NextReports: Batch Mode'/><author><name>Mihai Dinca-Panaitescu</name><uri>http://www.blogger.com/profile/08537984927215211506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhs7s3DP3hBexkFGh1lwNzAyDVxZiWFCe8cGDmIwrHO-dzc97tSTm6DgHHrAT0_pAgJz6J192YOGWobIc_TPFXqdfgc3DVcsD91Up5aj7e4puxgXDy_q6n9IOwoUbiekQ/s113/splash.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMrin_pVTY6Gnz477YNfA6uQ0IPei6PFv-BwlnvoevpYpNfaC0CQbj00BrSPlHpqico10mhA3Ia8Wzc5PPXCw1ZPBxUpGmwQ_bQ4PVhoApd6AyXaXViBG2mHhV-vq4Oq6brgnFBw/s72-c/b1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11508009.post-6757025967559268604</id><published>2015-05-21T11:46:00.000+03:00</published><updated>2015-05-21T11:46:16.723+03:00</updated><title type='text'>NextReports Server: Connection Logging</title><content type='html'>Starting from NextReports 8.1 connection creation is written to log for debug purposes. By default all connections are written to connections.log found inside &lt;server_install_folder&gt;&amp;lt;server_install_folder&amp;gt;/logs folder. Default log level type is INFO&lt;/server_install_folder&gt;&lt;br /&gt;
&lt;br /&gt;
Inside &lt;server_install_folder&gt;&amp;lt;server_install_folder&amp;gt;/webapps/nextreports-server/WEB-INF/classes/log4j.properties user can change log level from INFO to DEBUG, to see information from the pool when a connection is created/used:&lt;/server_install_folder&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;java&quot; name=&quot;code&quot;&gt;log4j.logger.ro.nextreports.server.util.ConnectionUtil=INFO, CONNECTION_FILE
log4j.additivity.ro.nextreports.server.util.ConnectionUtil=false
&lt;/pre&gt;
&lt;br /&gt;
Users will be able to see on DEBUG level how many connections are in pool (min and max values), how many connection are active, idle or busy.&lt;br /&gt;
&lt;br /&gt;
In case you experience some connections problems (like timeouts) and you are sure your database is up and running, you should put this log&#39;s level on DEBUG and start accumulating data to reproduce the problem again. </content><link rel='replies' type='application/atom+xml' href='http://brainstormforever.blogspot.com/feeds/6757025967559268604/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11508009/6757025967559268604' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11508009/posts/default/6757025967559268604'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11508009/posts/default/6757025967559268604'/><link rel='alternate' type='text/html' href='http://brainstormforever.blogspot.com/2015/05/nextreports-server-connection-logging.html' title='NextReports Server: Connection Logging'/><author><name>Mihai Dinca-Panaitescu</name><uri>http://www.blogger.com/profile/08537984927215211506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhs7s3DP3hBexkFGh1lwNzAyDVxZiWFCe8cGDmIwrHO-dzc97tSTm6DgHHrAT0_pAgJz6J192YOGWobIc_TPFXqdfgc3DVcsD91Up5aj7e4puxgXDy_q6n9IOwoUbiekQ/s113/splash.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11508009.post-3253892975512047439</id><published>2015-05-19T16:16:00.000+03:00</published><updated>2015-05-19T16:16:04.397+03:00</updated><title type='text'>NextReports: Analysis versus Table Widgets</title><content type='html'>Even if a table widget inside a dashboard seems to be similar to an analysis table, there are many differences between them.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&quot;Analysis&quot; &lt;/b&gt;is a special object with following major differences than a widget table:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Analysis shows raw data (no patterns are used) and that makes the possibility to easily have sortable columns&lt;/li&gt;
&lt;li&gt;Analysis can have a list of sortable columns (sort by column1, then column 2, ….)&lt;/li&gt;
&lt;li&gt;Analysis persists sortable columns&lt;/li&gt;
&lt;li&gt;Analysis has a lot of other features&amp;nbsp; like selection, grouping, filtering, pagination, freeze.&lt;/li&gt;
&lt;li&gt;Analysis uses local data brought here by an ETL process&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;&quot;Table Widget&quot;&lt;/b&gt; has the following characteristics :&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Table Widget has behind a report with a layout &lt;/li&gt;
&lt;li&gt;Table widget may contain formatted data (if patterns are used like for dates, numbers,..)&lt;/li&gt;
&lt;li&gt;The report behind a table widget may contain different type of values on same column (because report&#39;s layout can have more than one detail band).&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Table Widget may have a style (foreground and background colors) &lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;From version 8.1 of NextReports Server&lt;/b&gt; :&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Table widgets will have a header with sorting columns.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Sorting is added only to those table widgets that contain only one detail band (the actual database columns). On all others table widgets sorting has no sense.&lt;/li&gt;
&lt;li&gt;Sorting on table widgets is not persisted, so if you will leave dashboard and return or if you do a refresh the sorting will disappear. But if you sort, you are able (before refresh) to Save to Excel with the used sorting.&lt;/li&gt;
&lt;/ul&gt;
</content><link rel='replies' type='application/atom+xml' href='http://brainstormforever.blogspot.com/feeds/3253892975512047439/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11508009/3253892975512047439' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11508009/posts/default/3253892975512047439'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11508009/posts/default/3253892975512047439'/><link rel='alternate' type='text/html' href='http://brainstormforever.blogspot.com/2015/05/nextreports-analysis-versus-table.html' title='NextReports: Analysis versus Table Widgets'/><author><name>Mihai Dinca-Panaitescu</name><uri>http://www.blogger.com/profile/08537984927215211506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhs7s3DP3hBexkFGh1lwNzAyDVxZiWFCe8cGDmIwrHO-dzc97tSTm6DgHHrAT0_pAgJz6J192YOGWobIc_TPFXqdfgc3DVcsD91Up5aj7e4puxgXDy_q6n9IOwoUbiekQ/s113/splash.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11508009.post-8479950058911594831</id><published>2015-05-14T15:37:00.000+03:00</published><updated>2015-05-14T15:37:09.405+03:00</updated><title type='text'>NextReports: yAxis with &#39;starting from zero&#39; property</title><content type='html'>From NextReport 8.1, Next Charts library will add a new property on yAxis called &lt;b&gt;&#39;starting from zero&#39;&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
The minimum value on yAxis is computed so that all y values be some &#39;nice&#39; numbers. This minimum value can be sometimes negative, sometimes 0 and sometimes positive. In case of positive numbers users may desire to start yAxis from zero&amp;nbsp; if computed minimum&amp;nbsp; value is bigger than zero.&lt;br /&gt;
&lt;br /&gt;
Let&#39;s take following chart, for example, with values 44, 32, 34, 31. Computed min value is 30.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzImsXtzhhmCL_iqiZawOpid3y1BQplAg-GmKZrSD3DXknCnBO_DDgg68rbnhuh3FEZTayirZ3GLaiF-cm8oQY0kwKAyKJM-viGy87Oq4CAOtiroci8h0vzR-LwLuB_xlolx2EDQ/s1600/d1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzImsXtzhhmCL_iqiZawOpid3y1BQplAg-GmKZrSD3DXknCnBO_DDgg68rbnhuh3FEZTayirZ3GLaiF-cm8oQY0kwKAyKJM-viGy87Oq4CAOtiroci8h0vzR-LwLuB_xlolx2EDQ/s1600/d1.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
If users want to see the chart starting from zero, this is easily done by selecting &#39;starting from zero&#39; property:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSWq37OMkqV6F6040CUd2FdyZAsmhTXlhJ4tXOUVjxnooq4GOjzS-9swhlZKiqxgjMLrAs-K3bdpwBI5J51aAWbwaZtE9PadOUrW0f2Pzx4l5KROUgWDuT1mkz14Qvhx_jaRanPQ/s1600/d2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSWq37OMkqV6F6040CUd2FdyZAsmhTXlhJ4tXOUVjxnooq4GOjzS-9swhlZKiqxgjMLrAs-K3bdpwBI5J51aAWbwaZtE9PadOUrW0f2Pzx4l5KROUgWDuT1mkz14Qvhx_jaRanPQ/s640/d2.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
In this case computed min value is considered zero and the chart will look accordingly:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuWIfxHhKE8QsHHFPK5dOd17mQFNEZCr43ulQVh-c3cAlEi0zgaYPSaYsGig1_sTcjogCrO1mjQR0h-9hw3jE-qiv5MH2HkALm17eehtsy4WRnq2Y-LHue4hskKcDj0op7oLMx8g/s1600/d3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuWIfxHhKE8QsHHFPK5dOd17mQFNEZCr43ulQVh-c3cAlEi0zgaYPSaYsGig1_sTcjogCrO1mjQR0h-9hw3jE-qiv5MH2HkALm17eehtsy4WRnq2Y-LHue4hskKcDj0op7oLMx8g/s1600/d3.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
In case of negative values, this property has no effect.</content><link rel='replies' type='application/atom+xml' href='http://brainstormforever.blogspot.com/feeds/8479950058911594831/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11508009/8479950058911594831' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11508009/posts/default/8479950058911594831'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11508009/posts/default/8479950058911594831'/><link rel='alternate' type='text/html' href='http://brainstormforever.blogspot.com/2015/05/nextreports-yaxis-with-starting-from.html' title='NextReports: yAxis with &#39;starting from zero&#39; property'/><author><name>Mihai Dinca-Panaitescu</name><uri>http://www.blogger.com/profile/08537984927215211506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhs7s3DP3hBexkFGh1lwNzAyDVxZiWFCe8cGDmIwrHO-dzc97tSTm6DgHHrAT0_pAgJz6J192YOGWobIc_TPFXqdfgc3DVcsD91Up5aj7e4puxgXDy_q6n9IOwoUbiekQ/s113/splash.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzImsXtzhhmCL_iqiZawOpid3y1BQplAg-GmKZrSD3DXknCnBO_DDgg68rbnhuh3FEZTayirZ3GLaiF-cm8oQY0kwKAyKJM-viGy87Oq4CAOtiroci8h0vzR-LwLuB_xlolx2EDQ/s72-c/d1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11508009.post-7212203533835484822</id><published>2015-05-05T15:49:00.001+03:00</published><updated>2015-05-05T15:49:50.586+03:00</updated><title type='text'>NextReports Server: Internal Reports</title><content type='html'>Starting with NextReports 8.1 version a new section called Audit will be available.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhT9msdtLncb944su0JJhc0pl0R0U4UmwKmiL98va9wjKADWObL6s_2SFm9BQT0GNfcmXZYqCIXNja6O32vKU-WmJWjQGBBZuH5vkuj_F0URwpvzxcMoLQ3VDw1-woaMZHFYg8AOg/s1600/audit_section.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;424&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhT9msdtLncb944su0JJhc0pl0R0U4UmwKmiL98va9wjKADWObL6s_2SFm9BQT0GNfcmXZYqCIXNja6O32vKU-WmJWjQGBBZuH5vkuj_F0URwpvzxcMoLQ3VDw1-woaMZHFYg8AOg/s1600/audit_section.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Here, any administrator can obtain data from NextReports Server repository.&lt;br /&gt;
&lt;br /&gt;
Just some examples of questions, users can get an easy answer:&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;What are the reports with write permission for group &#39;Test&#39;?&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;What were the failed run reports yesterday?&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;What is the full list of Schedulers?&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Users can sort the result and save it as an excel file.</content><link rel='replies' type='application/atom+xml' href='http://brainstormforever.blogspot.com/feeds/7212203533835484822/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11508009/7212203533835484822' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11508009/posts/default/7212203533835484822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11508009/posts/default/7212203533835484822'/><link rel='alternate' type='text/html' href='http://brainstormforever.blogspot.com/2015/05/nextreports-server-internal-reports.html' title='NextReports Server: Internal Reports'/><author><name>Mihai Dinca-Panaitescu</name><uri>http://www.blogger.com/profile/08537984927215211506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhs7s3DP3hBexkFGh1lwNzAyDVxZiWFCe8cGDmIwrHO-dzc97tSTm6DgHHrAT0_pAgJz6J192YOGWobIc_TPFXqdfgc3DVcsD91Up5aj7e4puxgXDy_q6n9IOwoUbiekQ/s113/splash.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhT9msdtLncb944su0JJhc0pl0R0U4UmwKmiL98va9wjKADWObL6s_2SFm9BQT0GNfcmXZYqCIXNja6O32vKU-WmJWjQGBBZuH5vkuj_F0URwpvzxcMoLQ3VDw1-woaMZHFYg8AOg/s72-c/audit_section.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11508009.post-1935005810440362505</id><published>2015-04-28T15:45:00.000+03:00</published><updated>2015-04-28T15:45:06.074+03:00</updated><title type='text'>NextReports Server: Audits at your hand</title><content type='html'>By default NextReports Server outputs some events to log files with following action names:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Sign in&lt;/li&gt;
&lt;li&gt;Sign in failed&lt;/li&gt;
&lt;li&gt;Sign out&lt;/li&gt;
&lt;li&gt;Add entity&lt;/li&gt;
&lt;li&gt;Modify entity&lt;/li&gt;
&lt;li&gt;Delete entity&lt;/li&gt;
&lt;li&gt;Copy entity&lt;/li&gt;
&lt;li&gt;Move entity&lt;/li&gt;
&lt;li&gt;Rename entity&lt;/li&gt;
&lt;li&gt;Restore entity&lt;/li&gt;
&lt;li&gt;Grant user / group&lt;/li&gt;
&lt;li&gt;Revoke user / group&lt;/li&gt;
&lt;li&gt;Run report &lt;/li&gt;
&lt;/ul&gt;
These events have some common properties like id, date, user name, action,session, ip, level (0=info, 1=error), error message. For some events there are also other properties. For example for &quot;Run report&quot; there are report path and duration; for &quot;Grant user&quot; there are entity path, user name to grant for, permissions and recursive flag.&lt;br /&gt;
&lt;br /&gt;
NextReports Server has an extensible auditor feature. A database auditor can be defined to save all these events inside a database. This is very important because NextReports can generate reports over that database to get valuable information.&lt;br /&gt;
&lt;br /&gt;
Inside securityContext.xml there is a bean called auditor:&lt;br /&gt;
&lt;pre class=&quot;java&quot; name=&quot;code&quot;&gt;&amp;nbsp;&amp;lt;bean class=&quot;ro.nextreports.server.audit.CompoundAuditor&quot; id=&quot;auditor&quot;&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name=&quot;auditors&quot;&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;list&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ref bean=&quot;logAuditor&quot;/&amp;gt;
            &amp;lt;/list&amp;gt;
        &amp;lt;/property&amp;gt;
&amp;lt;/bean&amp;gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 

&lt;/pre&gt;
In this list, besides the log auditor we can add a database auditor:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;java&quot; name=&quot;code&quot;&gt;&amp;lt;bean class=&quot;ro.nextreports.server.audit.CompoundAuditor&quot; id=&quot;auditor&quot;&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
        &amp;lt;property name=&quot;auditors&quot;&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
           &amp;lt;list&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ref bean=&quot;logAuditor&quot;/&amp;gt;
                 &amp;lt;ref bean=&quot;dbAuditor&quot;/&amp;gt; 
           &amp;nbsp;&amp;lt;/list&amp;gt;
        &amp;lt;/property&amp;gt;
&amp;lt;/bean&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;
&amp;lt;bean class=&quot;ro.nextreports.server.audit.MySqlAuditor&quot; id=&quot;dbAuditor&quot;&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name=&quot;dataSource&quot; ref=&quot;auditDataSource&quot;/&amp;gt;
&amp;lt;/bean&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;bean class=&quot;org.springframework.jdbc.datasource.DriverManagerDataSource&quot; id=&quot;auditDataSource&quot;&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name=&quot;driverClassName&quot; value=&quot;com.mysql.jdbc.Driver&quot;/&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
      &amp;lt;property name=&quot;url&quot; value=&quot;&quot;/&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name=&quot;username&quot; value=&quot;&quot;/&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name=&quot;password&quot; value=&quot;&quot;/&amp;gt;
&amp;lt;/bean&amp;gt;
&lt;/pre&gt;
&lt;br /&gt;
The database behind must contain two tables and a sequence:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;NS_AUDIT&lt;/b&gt; (EVENT_ID, EVENT_DATE, EVENT_USERNAME, EVENT_ACTION, EVENT_SESSION, EVENT_IP, EVENT_LEVEL, EVENT_ERROR_MESSAGE)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;NS_AUDIT_CONTEXT&lt;/b&gt; (EVENT_ID, EVENT_NAME, EVENT_VALUE)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;NS_AUDIT_SEQ&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
As stated before, common properties will be saved inside NS_AUDIT, while specific event properties will be saved inside NS_AUDIT_CONTEXT.&lt;br /&gt;
&lt;br /&gt;
For example, for a MySql database we need to call following sqls to initialize:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;java&quot; name=&quot;code&quot;&gt;CREATE TABLE NS_AUDIT (
&amp;nbsp; EVENT_ID INT UNSIGNED NOT NULL, 
&amp;nbsp; EVENT_DATE TIMESTAMP, 
&amp;nbsp; EVENT_USERNAME VARCHAR(50), 
&amp;nbsp; EVENT_ACTION VARCHAR(30),
&amp;nbsp; EVENT_SESSION VARCHAR(100), 
&amp;nbsp; EVENT_IP VARCHAR(20), 
&amp;nbsp; EVENT_LEVEL&amp;nbsp; INT(2) , 
&amp;nbsp; EVENT_ERROR_MESSAGE VARCHAR(150)
) 

CREATE TABLE NS_AUDIT_CONTEXT (
&amp;nbsp; EVENT_ID INT UNSIGNED, 
&amp;nbsp; EVENT_NAME VARCHAR(50),&amp;nbsp;
&amp;nbsp; EVENT_VALUE VARCHAR(200)
)&amp;nbsp;
&amp;nbsp;
CREATE TABLE NS_AUDIT_SEQ( 
&amp;nbsp; EVENT_ID INT UNSIGNED&amp;nbsp; NOT NULL,
&amp;nbsp; CONSTRAINT event_pk PRIMARY KEY (EVENT_ID)
)

INSERT INTO NS_AUDIT_SEQ (EVENT_ID) VALUES(0) 
&lt;/pre&gt;
&lt;br /&gt;
You should also create an index on EVENT_ID column from NS_AUDIT.</content><link rel='replies' type='application/atom+xml' href='http://brainstormforever.blogspot.com/feeds/1935005810440362505/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11508009/1935005810440362505' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11508009/posts/default/1935005810440362505'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11508009/posts/default/1935005810440362505'/><link rel='alternate' type='text/html' href='http://brainstormforever.blogspot.com/2015/04/nextreports-server-audits-at-your-hand.html' title='NextReports Server: Audits at your hand'/><author><name>Mihai Dinca-Panaitescu</name><uri>http://www.blogger.com/profile/08537984927215211506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhs7s3DP3hBexkFGh1lwNzAyDVxZiWFCe8cGDmIwrHO-dzc97tSTm6DgHHrAT0_pAgJz6J192YOGWobIc_TPFXqdfgc3DVcsD91Up5aj7e4puxgXDy_q6n9IOwoUbiekQ/s113/splash.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11508009.post-2226116071199153863</id><published>2015-04-14T15:36:00.002+03:00</published><updated>2015-04-14T15:36:40.827+03:00</updated><title type='text'>NextReports Server: What are the references?</title><content type='html'>NextReports Server contains (among others) a number of entities like :&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;data sources&lt;/li&gt;
&lt;li&gt;reports &amp;amp; charts&lt;/li&gt;
&lt;li&gt;schedulers&lt;/li&gt;
&lt;li&gt;widgets&lt;/li&gt;
&lt;li&gt;dashboards&lt;/li&gt;
&lt;/ul&gt;
Some of them are referenced by others. For example&amp;nbsp; any report or chart has a data source. That means a data source is referenced by that report / chart. What happens if we want to delete this data source? User will be informed the action cannot be done because there are other entities that use it.&lt;br /&gt;
&lt;br /&gt;
The message is not very useful to users because if they do not know what are the entities, they must to search for them and delete those first (if the deletion is needed).&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibHoV77pzNNco8K5OVjwxaW-GoDV-Cx6Y1uEHUqMY3vahfwrG5I7GcVt_Xj6Ujr904AUQTbqNg5WqE9ot6IHzKAZLubY9dtWcfFl43bVlRp_HTTb7yAVBjeW77mMV3kCtRjyFKCQ/s1600/c1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibHoV77pzNNco8K5OVjwxaW-GoDV-Cx6Y1uEHUqMY3vahfwrG5I7GcVt_Xj6Ujr904AUQTbqNg5WqE9ot6IHzKAZLubY9dtWcfFl43bVlRp_HTTb7yAVBjeW77mMV3kCtRjyFKCQ/s1600/c1.png&quot; height=&quot;124&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
From NextReports Server 8.1, users will be informed about these entities with their full path. For example if we want to delete a report which was scheduled by a number of schedulers, the following message will be shown:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggGBfOrQg8q3cMcBm5NB2uZBsT_apxk_uY62CyHZdNZyFYrixvydqaJAzVDdR4PgdUMreneiTcPCNijVIsI-mZSttZxF9psvx2vswOaiYqZ6-aGXxFRMMkipdu12bncLCtJxHxdQ/s1600/c3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggGBfOrQg8q3cMcBm5NB2uZBsT_apxk_uY62CyHZdNZyFYrixvydqaJAzVDdR4PgdUMreneiTcPCNijVIsI-mZSttZxF9psvx2vswOaiYqZ6-aGXxFRMMkipdu12bncLCtJxHxdQ/s1600/c3.png&quot; height=&quot;232&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
In case there are too many referenced entities, only the first 10 will be shown. In next image we want to delete a data source and we will see the list of reports and charts that use it:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0TnBGrnjPRS_RUr9KDdRdsUfrEGX5VOn7i7Xevf8VOCJA-j_PYANGDNduLFtZ8x1xRGdDXDMWcMbUZaW3w6ZziByms9MdBgnedeEp8g4diRKnk9WJKGiPRCSLk5JTZHfH9iW4pg/s1600/c2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0TnBGrnjPRS_RUr9KDdRdsUfrEGX5VOn7i7Xevf8VOCJA-j_PYANGDNduLFtZ8x1xRGdDXDMWcMbUZaW3w6ZziByms9MdBgnedeEp8g4diRKnk9WJKGiPRCSLk5JTZHfH9iW4pg/s1600/c2.png&quot; height=&quot;261&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
In case a report or chart is used (referenced) inside a dashboard as a widget, it can be deleted and the user will see inside dashboard a message that the entity behind it was removed.</content><link rel='replies' type='application/atom+xml' href='http://brainstormforever.blogspot.com/feeds/2226116071199153863/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11508009/2226116071199153863' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11508009/posts/default/2226116071199153863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11508009/posts/default/2226116071199153863'/><link rel='alternate' type='text/html' href='http://brainstormforever.blogspot.com/2015/04/nextreports-server-what-are-references.html' title='NextReports Server: What are the references?'/><author><name>Mihai Dinca-Panaitescu</name><uri>http://www.blogger.com/profile/08537984927215211506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhs7s3DP3hBexkFGh1lwNzAyDVxZiWFCe8cGDmIwrHO-dzc97tSTm6DgHHrAT0_pAgJz6J192YOGWobIc_TPFXqdfgc3DVcsD91Up5aj7e4puxgXDy_q6n9IOwoUbiekQ/s113/splash.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibHoV77pzNNco8K5OVjwxaW-GoDV-Cx6Y1uEHUqMY3vahfwrG5I7GcVt_Xj6Ujr904AUQTbqNg5WqE9ot6IHzKAZLubY9dtWcfFl43bVlRp_HTTb7yAVBjeW77mMV3kCtRjyFKCQ/s72-c/c1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11508009.post-68907118069459072</id><published>2015-04-02T16:21:00.004+03:00</published><updated>2015-04-02T16:21:58.971+03:00</updated><title type='text'>NextReports Server: Dashboard Embedded Code</title><content type='html'>NextReports Server is able to offer dashboards page as an url like&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;http://localhost:8081/nextreports-server/app/dashboards&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
This will bring to users the following page, without header, footer and tabs menu:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjW8fsgrdZa0QeU1xouqwQ2QziAaDjCHzqKBSsf1AwnCJ2pfQ5geJCgma98Qi6YEZXl16RXgrpzQZjHvGiArLNs5W1MiC1oU0Kcvg__K0x82ZTyoDpLpiu65LCRRDD4_Qc7MeCW4Q/s1600/b1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjW8fsgrdZa0QeU1xouqwQ2QziAaDjCHzqKBSsf1AwnCJ2pfQ5geJCgma98Qi6YEZXl16RXgrpzQZjHvGiArLNs5W1MiC1oU0Kcvg__K0x82ZTyoDpLpiu65LCRRDD4_Qc7MeCW4Q/s1600/b1.png&quot; height=&quot;376&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
From version 8.1 a new Dashboard Embedded Code action is available in dashboard popup actions:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjglgc4NHLaKhJZ21BVOhFDwNzTn-EzgLlGpBN5AcvD99HeSQreaJGjRzUOHBfkh90XNyPHnf8MDL09_jXJGPdL8q4q_68ExKk_Z0KZh3vbS8y0FULgWo8DpdpKXYcmy8BRmPhI3g/s1600/dashboards_share.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjglgc4NHLaKhJZ21BVOhFDwNzTn-EzgLlGpBN5AcvD99HeSQreaJGjRzUOHBfkh90XNyPHnf8MDL09_jXJGPdL8q4q_68ExKk_Z0KZh3vbS8y0FULgWo8DpdpKXYcmy8BRmPhI3g/s1600/dashboards_share.png&quot; height=&quot;200&quot; width=&quot;185&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
This will give users the url for a specific dashboard:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;http://localhost:8081/nextreports-server/app/dashboard?dashboardId=4f6cb7bd-c8df-4ffd-91a9-38c2c2c50b16&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipsKgyZeLE_YBmTS6VZEBnoFYv2MOKwESUE3SfDANQqctkhl_fE_vlkEpkJ5yVlwM1pddx7_lTgTCUw_8-UE63ZHH2nQCmOuwuhXwIdjM_K_uAugXtXSICD3zOvmcKE9ZyIL-mxQ/s1600/dashboards_embed.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipsKgyZeLE_YBmTS6VZEBnoFYv2MOKwESUE3SfDANQqctkhl_fE_vlkEpkJ5yVlwM1pddx7_lTgTCUw_8-UE63ZHH2nQCmOuwuhXwIdjM_K_uAugXtXSICD3zOvmcKE9ZyIL-mxQ/s1600/dashboards_embed.png&quot; height=&quot;146&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
This url will show users the dashboard without navigator and buttons and will become the default way of how to show a full dashboard on a monitor screen for visualization.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGVWRbK6c11qzOsb5JsBkXd5DHjW1BhyONFxa12aOP0XwadsLxiKq14k0L_TkTXsAxfEP-rcV9vFO5Gsx8XK3UAhfdC9dgueh9MuicuwHOivaEAySV43S7aNlNdpoFc7DPcEs9SA/s1600/b2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGVWRbK6c11qzOsb5JsBkXd5DHjW1BhyONFxa12aOP0XwadsLxiKq14k0L_TkTXsAxfEP-rcV9vFO5Gsx8XK3UAhfdC9dgueh9MuicuwHOivaEAySV43S7aNlNdpoFc7DPcEs9SA/s1600/b2.png&quot; height=&quot;368&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://brainstormforever.blogspot.com/feeds/68907118069459072/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11508009/68907118069459072' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11508009/posts/default/68907118069459072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11508009/posts/default/68907118069459072'/><link rel='alternate' type='text/html' href='http://brainstormforever.blogspot.com/2015/04/nextreports-server-dashboard-embedded.html' title='NextReports Server: Dashboard Embedded Code'/><author><name>Mihai Dinca-Panaitescu</name><uri>http://www.blogger.com/profile/08537984927215211506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhs7s3DP3hBexkFGh1lwNzAyDVxZiWFCe8cGDmIwrHO-dzc97tSTm6DgHHrAT0_pAgJz6J192YOGWobIc_TPFXqdfgc3DVcsD91Up5aj7e4puxgXDy_q6n9IOwoUbiekQ/s113/splash.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjW8fsgrdZa0QeU1xouqwQ2QziAaDjCHzqKBSsf1AwnCJ2pfQ5geJCgma98Qi6YEZXl16RXgrpzQZjHvGiArLNs5W1MiC1oU0Kcvg__K0x82ZTyoDpLpiu65LCRRDD4_Qc7MeCW4Q/s72-c/b1.png" height="72" width="72"/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11508009.post-6594532381603675322</id><published>2015-03-19T13:30:00.000+02:00</published><updated>2015-03-19T13:30:47.902+02:00</updated><title type='text'>NextReports: Iframe new parameters</title><content type='html'>Starting from NextReports 8.1 iframes will be able to contain in their url some new parameters alongside width, height and report parameters. See this &lt;a href=&quot;http://blog.next-reports.com/2012/12/nextreports-server-iframe-tunning.html&quot; target=&quot;_blank&quot;&gt;old post about iframe parameters&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Two of them are meaningful for table widgets: &lt;b&gt;tableFontSize &lt;/b&gt;and &lt;b&gt;tableCellPadding &lt;/b&gt;in points. These can be handy if you want to have an iframe on a big monitor screen and users need to look at it from distance. To show the difference you can compare following two screens:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXxzst95q1dbyHSo_shEJSsnC9P0vG3QMfIFk2I_Gi4Z3h5GOi9e32dBmQRREPZDd0x1B6btnB3TKoLhFzJCAJH2mOlZbF4e5h066uqYViBQsYCITwu7DXNNd4i33BCg4YiLStPg/s1600/t1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXxzst95q1dbyHSo_shEJSsnC9P0vG3QMfIFk2I_Gi4Z3h5GOi9e32dBmQRREPZDd0x1B6btnB3TKoLhFzJCAJH2mOlZbF4e5h066uqYViBQsYCITwu7DXNNd4i33BCg4YiLStPg/s1600/t1.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQcjsEF3krfgwCGmsWSNmkmx7UoH0e9ikVczIPxOp02JaCMvQ9YjLFzYfmYoeip5tH8YjUtC9zYBe3rll4zfWVO0vKjhVbBWunAHu_HxahBdEcOp6Lu98zIQHs9V9x1vMkYIc4lA/s1600/t2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQcjsEF3krfgwCGmsWSNmkmx7UoH0e9ikVczIPxOp02JaCMvQ9YjLFzYfmYoeip5tH8YjUtC9zYBe3rll4zfWVO0vKjhVbBWunAHu_HxahBdEcOp6Lu98zIQHs9V9x1vMkYIc4lA/s1600/t2.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
The second one has tableFontSize=18 and tableCellPadding=10.&lt;br /&gt;
&lt;br /&gt;
Another parameter, &lt;b&gt;adjustableTextFontSize&lt;/b&gt;, has a boolean value and by setting it to true the chart from iframe will have texts from title, legends and axis values adjusted in concordance with iframe width. This parameter is automatically set to true on chart Detach action from NextReports Server.&lt;br /&gt;
&lt;br /&gt;
A simple comparison can be seen here:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCPG7gVCPOr4NhrN8UyrZTre0wEr2EDdhEatv5ozLRZgv4F44oqmRCW_bk5ZHkB50RXzlqSvZySJYD0UcQfQ2wt8zLsWhtzNl39zq4CTKn57f1QsvRqDoU87ET2pM-RuUG1k_VdA/s1600/t3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCPG7gVCPOr4NhrN8UyrZTre0wEr2EDdhEatv5ozLRZgv4F44oqmRCW_bk5ZHkB50RXzlqSvZySJYD0UcQfQ2wt8zLsWhtzNl39zq4CTKn57f1QsvRqDoU87ET2pM-RuUG1k_VdA/s1600/t3.png&quot; height=&quot;402&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjy5YrdTVUF1jxLAGtIXdMWT7IPU9At3BnLs9bS4UcNyTNblmmM0IbdDxV5vhtImCNCGUnsaivB69RylObHaR_cQm9j8aAT2sUxkTVEgeFd4vgbrrHjllT389dL770EjGENuWDGIw/s1600/t4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjy5YrdTVUF1jxLAGtIXdMWT7IPU9At3BnLs9bS4UcNyTNblmmM0IbdDxV5vhtImCNCGUnsaivB69RylObHaR_cQm9j8aAT2sUxkTVEgeFd4vgbrrHjllT389dL770EjGENuWDGIw/s1600/t4.png&quot; height=&quot;400&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
This example is shown for an iframe with width=800 and height=500 pixels.&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://brainstormforever.blogspot.com/feeds/6594532381603675322/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11508009/6594532381603675322' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11508009/posts/default/6594532381603675322'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11508009/posts/default/6594532381603675322'/><link rel='alternate' type='text/html' href='http://brainstormforever.blogspot.com/2015/03/nextreports-iframe-new-parameters.html' title='NextReports: Iframe new parameters'/><author><name>Mihai Dinca-Panaitescu</name><uri>http://www.blogger.com/profile/08537984927215211506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhs7s3DP3hBexkFGh1lwNzAyDVxZiWFCe8cGDmIwrHO-dzc97tSTm6DgHHrAT0_pAgJz6J192YOGWobIc_TPFXqdfgc3DVcsD91Up5aj7e4puxgXDy_q6n9IOwoUbiekQ/s113/splash.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXxzst95q1dbyHSo_shEJSsnC9P0vG3QMfIFk2I_Gi4Z3h5GOi9e32dBmQRREPZDd0x1B6btnB3TKoLhFzJCAJH2mOlZbF4e5h066uqYViBQsYCITwu7DXNNd4i33BCg4YiLStPg/s72-c/t1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11508009.post-7795826119991548819</id><published>2015-03-12T11:03:00.000+02:00</published><updated>2015-03-12T11:03:04.704+02:00</updated><title type='text'>How to access NextReports Server web services in your application</title><content type='html'>NextReports Server has a number of web services. These can be found in ro.nextreports.server.api. NextReports uses Jersey web services so in any web service class users can see @Path and @QueryParam annotations to know how to create the url. All urls start with:&lt;br /&gt;
&lt;pre class=&quot;java&quot; name=&quot;code&quot;&gt;http://&amp;lt;server_ip&amp;gt;:&amp;lt;server_port&amp;gt;/nextreports-server/api
&lt;/pre&gt;
&lt;br /&gt;
If users need to access these services using java code, then a client for these services already exists and can be found in ro.nextreports.server.api.client. Inside designer installation folder in lib there is nextreports-server-client-8.0.jar library which can be used. To see how it is used in designer&amp;nbsp; you can look in 
ro.nextreports.designer.wizpublish . Here is the code used to 
publish/download report/charts to/from server. (it involves also how to 
authenticate, to get list of entities from server, create a folder in 
server structure and more)&lt;br /&gt;
&lt;br /&gt;
For example to authenticate you have to do the following with the root url previously shown:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;java&quot; name=&quot;code&quot;&gt;WebServiceClient client = new WebServiceClient();&amp;nbsp;&amp;nbsp;&amp;nbsp;
client.setServer(url);
client.setUsername(userTextField.getText());
client.setPassword(new String(passField.getPassword()));
client.setPasswordEncoder(new Md5PasswordEncoder());

boolean authorized = false;
try {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; authorized = client.isAuthorized();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
} catch (Exception e) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // connection error
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return false;
}
&lt;/pre&gt;
&lt;br /&gt;
To get entities from server:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;java&quot; name=&quot;code&quot;&gt;List&amp;lt;EntityMetaData&amp;gt; entities = client.getEntities(folderPath);
&lt;/pre&gt;
&lt;br /&gt;
This method sets the server url path by appending to base api url &quot;storage/getEntities/&quot; and then the folder path. There are some root constants used to create folderPath like /reports, /charts, /dataSources.&lt;br /&gt;
&lt;br /&gt;
If you want to call Next web services&amp;nbsp; from Javascript/JQuery and get reports from a path, you have also to be authenticated. Next example uses two javascript libraries:&lt;br /&gt;
&lt;br /&gt;
Base64 encoder (jquery.base64.js) : https://github.com/carlo/jquery-base64/archive/master.zip&lt;br /&gt;
MD5 generation (core-min.js and md5-min.js) : https://code.google.com/p/crypto-js/#MD5 &lt;br /&gt;
&lt;br /&gt;
This example does an ajax get to obtain the list of reports from root /reports path. Request header contains an Authorization object. On success the list of entities (path and type) is shown in a html list.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;java&quot; name=&quot;code&quot;&gt;&amp;lt;html&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;head&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;title&amp;gt;NextReports Server JQuery Test&amp;lt;/title&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;script src=&quot;jquery-1.10.2.min.js&quot; type=&quot;text/javascript&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;script src=&quot;jquery.base64.js&quot; type=&quot;text/javascript&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;script src=&quot;core-min.js&quot; type=&quot;text/javascript&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;script src=&quot;md5-min.js&quot; type=&quot;text/javascript&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;script&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var serverPath = &quot;/reports&quot;;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; var username=&quot;admin&quot;;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var password=&quot;1&quot;;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var passwordHash = CryptoJS.MD5(&quot;1&quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var base64 = $.base64.encode( username + &quot;:&quot; + passwordHash );&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $.ajax( {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; type: &quot;GET&quot;,
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; url : &#39;http://localhost:8081/nextreports-server/api/storage/getEntities?path=&#39; + serverPath,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dataType : &quot;xml&quot;,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; beforeSend : function(xhr) {&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; console.log(base64);
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xhr.setRequestHeader(&#39;Authorization&#39;, &#39;Basic &#39; + base64);
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; error : function(xhr, ajaxOptions, thrownError) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; console.log(&quot;error&quot;);&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; alert(thrownError);
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; },
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; success : function(data) {&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; console.log(&quot;success&quot;);&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; console.log(data);&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  $(&#39;#title&#39;).append(serverPath);&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  var paths = data.getElementsByTagName(&quot;path&quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  var types = data.getElementsByTagName(&quot;type&quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  var root = $(&quot;#list&quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  for (var i=0; i&amp;lt;paths.length; i++) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var type = &quot;&quot;;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (types[i].textContent === &quot;1&quot;) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; type = &quot;folder&quot;;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else if (types[i].textContent === &quot;3&quot;) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; type = &quot;next-report&quot;;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else if (types[i].textContent === &quot;4&quot;) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; type = &quot;jasper-report&quot;;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root.append(&#39;&amp;lt;li&amp;gt;&#39;+paths[i].textContent+ &#39; (&#39; + type + &#39;)&amp;lt;/li&amp;gt;&#39;);
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/script&amp;gt;
    &amp;lt;/head&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;body&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;span id=&quot;title&quot;&amp;gt;List of reports from path: &amp;lt;/span&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ul id=&quot;list&quot;&amp;gt;&amp;lt;/ul&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/body&amp;gt;
&lt;/pre&gt;
&lt;br /&gt;
To be able to run this example you must be in the same domain as server, otherwise a cross domain exception will be seen in console. From NextReports Server 8.1 inside web.xml for jersey.springServlet you can uncomment the following to allow for cross domain testing calls (please be sure to comment it back after you make your tests):&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;init-param&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;param-name&amp;gt;com.sun.jersey.spi.container.ContainerResponseFilters&amp;lt;/param-name&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;param-value&amp;gt;ro.nextreports.server.web.core.ResponseCorsFilter&amp;lt;/param-value&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/init-param&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://brainstormforever.blogspot.com/feeds/7795826119991548819/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11508009/7795826119991548819' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11508009/posts/default/7795826119991548819'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11508009/posts/default/7795826119991548819'/><link rel='alternate' type='text/html' href='http://brainstormforever.blogspot.com/2015/03/how-to-access-nextreports-server-web.html' title='How to access NextReports Server web services in your application'/><author><name>Mihai Dinca-Panaitescu</name><uri>http://www.blogger.com/profile/08537984927215211506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhs7s3DP3hBexkFGh1lwNzAyDVxZiWFCe8cGDmIwrHO-dzc97tSTm6DgHHrAT0_pAgJz6J192YOGWobIc_TPFXqdfgc3DVcsD91Up5aj7e4puxgXDy_q6n9IOwoUbiekQ/s113/splash.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11508009.post-6953310149772443029</id><published>2015-03-03T14:13:00.000+02:00</published><updated>2015-03-03T14:13:33.426+02:00</updated><title type='text'>NextReports Server: Analysis</title><content type='html'>NextReports Server 8.0 has a new module (section) called &lt;b&gt;Analysis&lt;/b&gt;. To be able to create an analysis, users must run/schedule an ETL (extract transform load) process which gets data from a data source and brings it locally to A NoSQL database. This process is just a run type defined in export property:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyD94J3xHaktjCmrO6cEsm7nP8U9EjvMNna0Fk_YtAm7Hm8s1AoMo4ftNrSF23pW3Txq6yNhPci9CkzAYpbHKjb2Tm-7zCwQgaAAu2WWiymjatGGiP3hEaOty8RoaLQsrUqfm3aQ/s1600/analysis_etl.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyD94J3xHaktjCmrO6cEsm7nP8U9EjvMNna0Fk_YtAm7Hm8s1AoMo4ftNrSF23pW3Txq6yNhPci9CkzAYpbHKjb2Tm-7zCwQgaAAu2WWiymjatGGiP3hEaOty8RoaLQsrUqfm3aQ/s1600/analysis_etl.png&quot; height=&quot;167&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Anytime an ETL process is run, all data for it is first cleared and then new data is brought on.&lt;br /&gt;
&lt;br /&gt;
Inside analysis section, users can select from existing &quot;analysis sources&quot; to create new analysis. At the beginning all the columns are selected and users will see the entire set of data.&lt;br /&gt;
&lt;br /&gt;
From this step, users can start to play with data. New columns can be created like string concatenations, mathematical expressions, aggregate functions:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGraXHlo5ZEaED4qSAhtNmqrnwHPS_mV032SlD-0Daa_hOCvJHwToGGp4lA0DA6699NafV3Wac1GNGRY5mYwGWKUx6hnU2i-MiQ2fX2qOzP0P3_pc53fQBB-sY4JKUkikSPQmcFg/s1600/analysis_create_concat.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGraXHlo5ZEaED4qSAhtNmqrnwHPS_mV032SlD-0Daa_hOCvJHwToGGp4lA0DA6699NafV3Wac1GNGRY5mYwGWKUx6hnU2i-MiQ2fX2qOzP0P3_pc53fQBB-sY4JKUkikSPQmcFg/s1600/analysis_create_concat.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Users can select and order the columns they are interested in:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_9NjwKmuDckmRjJI0oZlUR1TSXZKJleiKN9QYpE2gcvmWPoqGF5_ApgEEznq_hXuzU7e0b1X01a-31elHA8htOwg6Tik7qOlmdf5lFvcutpjbVwuWTYZ5s-pXA0HRGK5g2RMMHQ/s1600/analysis_select.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_9NjwKmuDckmRjJI0oZlUR1TSXZKJleiKN9QYpE2gcvmWPoqGF5_ApgEEznq_hXuzU7e0b1X01a-31elHA8htOwg6Tik7qOlmdf5lFvcutpjbVwuWTYZ5s-pXA0HRGK5g2RMMHQ/s1600/analysis_select.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&amp;nbsp;Users can sort, group and filter data:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBM_eeWtywVo72ZhFehVavbtA7EEd-gIfyd13N0qLv043hQ8AybkH8sfLfLuAE-Ollr8AE6bKp441pJnULw5KtaGhAeoELQoVrP1qJDQ2F8wI8xh_GW67xvrAhfGv30DJYI5TdLw/s1600/analysis_filter_like.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBM_eeWtywVo72ZhFehVavbtA7EEd-gIfyd13N0qLv043hQ8AybkH8sfLfLuAE-Ollr8AE6bKp441pJnULw5KtaGhAeoELQoVrP1qJDQ2F8wI8xh_GW67xvrAhfGv30DJYI5TdLw/s1600/analysis_filter_like.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Pagination is mandatory but can be modified to suit users needs:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1Vt6p1Jp5-5UT4nNCKp7ODBIx_1fX9JITPtfC_PDma8wX9CIZdmXXFMlh-747GbUheSEshAIM7Fn6SLjDcSDrrTcmJKYmQiyR8b1_xkmNVk9GOwZ-0Ln171EdVD5UACzrosup1g/s1600/analysis_paginate.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1Vt6p1Jp5-5UT4nNCKp7ODBIx_1fX9JITPtfC_PDma8wX9CIZdmXXFMlh-747GbUheSEshAIM7Fn6SLjDcSDrrTcmJKYmQiyR8b1_xkmNVk9GOwZ-0Ln171EdVD5UACzrosup1g/s1600/analysis_paginate.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
After obtaining the results, users can save the analysis for future view. This is handy, because if there is a scheduled ETL&amp;nbsp; process that brings data locally, users are able to see updated data just by entering the analysis section.&lt;br /&gt;
&lt;br /&gt;
Results can be exported as excel and can be frozen. A &quot;freeze&quot; action means the data set is saved as a copy inside NoSql database and no other ETL process can modify it.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-IR-A-cQNHDbTzjCUnFMwb3qdVl_zj2OjYvvn4KRostPG2lrf0iZ-EkfdCZRWYXkA5Pc51LiLi-Pm-aPm_m31RVWewlLiDEwlHEzxZXvitMlygYJdh9R3oHIuY8mbuKjVGjm9bQ/s1600/analysis_section.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-IR-A-cQNHDbTzjCUnFMwb3qdVl_zj2OjYvvn4KRostPG2lrf0iZ-EkfdCZRWYXkA5Pc51LiLi-Pm-aPm_m31RVWewlLiDEwlHEzxZXvitMlygYJdh9R3oHIuY8mbuKjVGjm9bQ/s1600/analysis_section.png&quot; height=&quot;352&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Analysis can be shared to other users. If there is no need for it, analysis can be deleted. This process will also delete the data set associated with it if there is no any other analysis linked to that data set.&lt;br /&gt;
&lt;br /&gt;
To find more, you should read the server section manual.</content><link rel='replies' type='application/atom+xml' href='http://brainstormforever.blogspot.com/feeds/6953310149772443029/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11508009/6953310149772443029' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11508009/posts/default/6953310149772443029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11508009/posts/default/6953310149772443029'/><link rel='alternate' type='text/html' href='http://brainstormforever.blogspot.com/2015/03/nextreports-server-analysis.html' title='NextReports Server: Analysis'/><author><name>Mihai Dinca-Panaitescu</name><uri>http://www.blogger.com/profile/08537984927215211506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhs7s3DP3hBexkFGh1lwNzAyDVxZiWFCe8cGDmIwrHO-dzc97tSTm6DgHHrAT0_pAgJz6J192YOGWobIc_TPFXqdfgc3DVcsD91Up5aj7e4puxgXDy_q6n9IOwoUbiekQ/s113/splash.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyD94J3xHaktjCmrO6cEsm7nP8U9EjvMNna0Fk_YtAm7Hm8s1AoMo4ftNrSF23pW3Txq6yNhPci9CkzAYpbHKjb2Tm-7zCwQgaAAu2WWiymjatGGiP3hEaOty8RoaLQsrUqfm3aQ/s72-c/analysis_etl.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11508009.post-8984808594375295479</id><published>2015-02-19T12:01:00.000+02:00</published><updated>2015-02-19T12:01:18.871+02:00</updated><title type='text'>NextReports Server: Capture dashboard as PDF</title><content type='html'>NextReports 8.0 will allow users to &lt;b&gt;capture a dashboard as PDF&lt;/b&gt;. PDF file will contain a single landscape page with the visible part of the dashboard. This means all content which is not visible, because a scroll is involved won&#39;t be captured.&lt;br /&gt;
&lt;br /&gt;
Users has a small number of tricks to make the dashboard full-visible:&lt;br /&gt;
&lt;br /&gt;
- NextReports Server has a button to hide dashboards explorer&lt;br /&gt;
- Browser F11 button makes it to be visible in full screen&lt;br /&gt;
- CTRL+mouse wheel will allow to zoom-in/zoom-out the browser content&lt;br /&gt;
&lt;br /&gt;
Using the tricks above we make a dashboard like the following to be fully visible: &lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinAF-ukAXoWYlBjFNE36Hnf1USKhy0JOyX10_rKSFzwb64fDl7m84WdUtyHuB2zON54LBS4w9eeZiIjs1QqzYu_abvAEIt7bDJ5OQGI8EF8xNpfBh-SrRcTSx7pl3JKtiHkvaDWA/s1600/cp_4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinAF-ukAXoWYlBjFNE36Hnf1USKhy0JOyX10_rKSFzwb64fDl7m84WdUtyHuB2zON54LBS4w9eeZiIjs1QqzYu_abvAEIt7bDJ5OQGI8EF8xNpfBh-SrRcTSx7pl3JKtiHkvaDWA/s1600/cp_4.png&quot; height=&quot;342&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
PDF capture&amp;nbsp; will generate a file which contains the dashboard name and a footer with generation date:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfeMFQUStIvQ43ITOk-cv2EIXacLrXAKCkJbv5s3igvzeZUsponramMMppimgYOgkRQWp6PwRYdlEgN-hQ10lSj9vkig3U5HQUY1a7gB5NVUuexApc5RuytWDv3ZgRqgiDNFEC-w/s1600/cp_5.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfeMFQUStIvQ43ITOk-cv2EIXacLrXAKCkJbv5s3igvzeZUsponramMMppimgYOgkRQWp6PwRYdlEgN-hQ10lSj9vkig3U5HQUY1a7gB5NVUuexApc5RuytWDv3ZgRqgiDNFEC-w/s1600/cp_5.png&quot; height=&quot;506&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://brainstormforever.blogspot.com/feeds/8984808594375295479/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11508009/8984808594375295479' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11508009/posts/default/8984808594375295479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11508009/posts/default/8984808594375295479'/><link rel='alternate' type='text/html' href='http://brainstormforever.blogspot.com/2015/02/nextreports-server-capture-dashboard-as.html' title='NextReports Server: Capture dashboard as PDF'/><author><name>Mihai Dinca-Panaitescu</name><uri>http://www.blogger.com/profile/08537984927215211506</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhs7s3DP3hBexkFGh1lwNzAyDVxZiWFCe8cGDmIwrHO-dzc97tSTm6DgHHrAT0_pAgJz6J192YOGWobIc_TPFXqdfgc3DVcsD91Up5aj7e4puxgXDy_q6n9IOwoUbiekQ/s113/splash.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinAF-ukAXoWYlBjFNE36Hnf1USKhy0JOyX10_rKSFzwb64fDl7m84WdUtyHuB2zON54LBS4w9eeZiIjs1QqzYu_abvAEIt7bDJ5OQGI8EF8xNpfBh-SrRcTSx7pl3JKtiHkvaDWA/s72-c/cp_4.png" height="72" width="72"/><thr:total>0</thr:total></entry></feed>