Skip to content

Commit 425ed38

Browse files
committed
1.25.0 release
1 parent d57e1ea commit 425ed38

39 files changed

+1278
-421
lines changed

CHANGELOG.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,23 @@
1+
# 1.25.0 (02/18/2016)
2+
3+
## Features
4+
5+
- Image Widget: added a new Widget for displaying images.
6+
7+
- YouTube Widget: added a new Widget for displaying YouTube videos.
8+
9+
- Data Source Broadcasting: rewrote all Data Sources and Widgets to communicate using global events. This resolves memory leaks and performance degredation due to unremoved callbacks.
10+
11+
- Improved logging, and added a configurable property to enable debug logging (globally)
12+
13+
## Bug Fixes
14+
15+
- Removed unique constraint on email field for Users
16+
17+
## Breaking Changes
18+
19+
- The Data Source api method 'getData()' has been deprecated. Any custom Widgets should be rewritten to follow the new event-based messaging pattern. Any custom Data Sources which use the Data Source Factory (recommended) will automatically use the new pattern.
20+
121
# 1.24.0 (02/04/2016)
222

323
## Features

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ Dashboards are defined declaratively as a JSON document, which contains all the
3434

3535
* Declarative definition of Dashboards, requiring no HTML or JavaScript (although it's optionally available)
3636

37-
* Included Widgets: chart, table, number, html, javascript, iframe, stoplight, treemap
37+
* Included Widgets: annotationChart, chart, table, number, html, javascript, iframe, image, stoplight, treemap, youtube
3838

3939
* Included Data Sources: JSON, Graphite, Splunk, JavaScript
4040

cyclotron-site/app/partials/help/about.jade

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,7 @@ p.
5858
of customization with some coding. Cyclotron works best with minimally-interactive dashboards, as it lacks more robust
5959
interaction features like dependent widgets and triggers.
6060
p.
61-
Cyclotron has no data backend and doesn't store any Dashboard data. Through Crunch, Cyclotron can pull data from databases, web services,
62-
file shares, Hadoop/Hive, etc. Crunch can do light processing and transformations, but is not a replacement for
63-
a scheduled ETL process. In this regard, Cyclotron is ideal as a front-end for an existing database or web service.
61+
Cyclotron has no data backend and doesn't store any Dashboard data. In this regard, Cyclotron is ideal as a front-end for an existing database or web service.
6462
p.
6563
Finally, Cyclotron has automatic page rotation and data-refreshing features, making it well-suited to hosting status boards and monitoring dashboards. It is less suitable for generating
6664
reports (although PDF export is available).

cyclotron-site/app/partials/help/dataSources.jade

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,10 @@ h3 Data Sources
22

33
p.
44
Cyclotron provides several Data Source Types, each of which connects to an external service to
5-
pull in data for the Dashboard. Most Data Sources and Widgets consume a common row/column interface, so Widgets and
6-
Data Sources are interchangeable. Each Data Source handles converting data into this format automatically.
5+
pull in data for the Dashboard. Data Sources and Widgets consume a common row/column interface, so Widgets and Data Sources are interchangeable. Each Data Source handles converting data into this format automatically.
76

87
p.
9-
Here is an example of the tabular data format, consisting of an array of rows.
10-
Each row is a JavaScript object, where the keys represent columns and the values represent the value of each column.
8+
Data Sources use a simple tabular data format, consisting of an array of rows. Each row is a JavaScript object, where the keys represent columns and the values represent the value of each column. Here's an example:
119

1210
pre.code.
1311
[
@@ -19,11 +17,9 @@ pre.code.
1917
]
2018

2119
p.
22-
The easiest way to verify that a Data Source is working is to use the Table Widget. By default, the Table
23-
Widget will display all columns and rows, so it can be used to quickly view and verify the data available
24-
from a Data Source. Be aware that the Table Widget will automatically camel-case the column headers,
25-
but the correct capitalization must be used elsewhere to reference the columns.
26-
20+
Cyclotron is case-sensitive, which is especially significant when working with Data Sources. When referencing column names in the Data Source, the correct capitalization must be used to match the upstream source. Cyclotron itself does not modify the original capitalization of columns.
21+
p.
22+
The easiest way to verify that a Data Source is working is to use the Table Widget. By default, the Table Widget will display all columns and rows, so it can be used to quickly view and verify the data available from a Data Source. Be aware that the Table Widget will automatically camel-case the column headers, but the correct capitalization must be used elsewhere to reference the columns.
2723

2824
h4 Common Properties
2925

cyclotron-site/app/partials/help/encryptedStrings.jade

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,19 @@ p.
66
p
77
| This feature is available in Data Sources that can be proxied through the Cyclotron Service, and require the
88
em proxy
9-
| property to be set. This includes the Crunch Data Source, JSON Data Source, and Graphite Data Source.
9+
| property to be set. This includes the JSON Data Source, Graphite Data Source, and Splunk Data Source.
1010

1111
h3 How It Works
1212

1313
ol
1414
li The Cyclotron Dashboard Editor encrypts the plaintext (before saving!), and wraps the encrypted text in \!{} to indicate that text is encrypted.
1515
li The encrypted text is saved directly in the Dashboard, and the unencrypted text is not saved at all.
16-
li When viewing the Dashboard, the user's browser downloads the Dashboard definition, including the Data Sources and the Crunch query containing the encrypted password.
17-
li The Crunch query is sent to the Proxy Server, which parses the query for sections of encrypted text. Each one is decrypted using the same key.
18-
li The unencrypted Crunch query is sent from the Proxy Server to the Crunch service, which executes the query and returns the results.
19-
li The Proxy Server returns the results to the browser.
16+
li When viewing the Dashboard, the user's browser downloads the Dashboard definition, including the Data Sources and properties containing the encrypted password.
17+
li An encrypted query is sent to the Proxy Server, which parses the request for sections of encrypted text. Each one is decrypted using the same key.
18+
li The unencrypted reuqest is then executed from the Cyclotron service and the results returned to the proxy server.
19+
li The Proxy Server returns the results to the browser, without leaking the unencrypted data.
2020

21-
p This example assumes a Crunch query, but it applies similarly to other Data Sources with different encrypted properties. Any property of the Data Source that is sent to the proxy server can be encrypted, as they are all handled generically. The JSON Data Source supports encrypting the URL, Query Parameters, and Options. The Graphite Data Source supports encrypting the URL, Targets, and From/Until.
21+
p This example applies similarly to any Data Sources with different encrypted properties. Any property of the Data Source that is sent to the proxy server can be encrypted, as they are all handled generically. The JSON Data Source supports encrypting the URL, Query Parameters, and Options. The Graphite Data Source supports encrypting the URL, Targets, and From/Until.
2222

2323
p All Cyclotron servers share the same encryption/decryption key, so any server can be used a proxy for any Dashboard.
2424

cyclotron-site/app/scripts/common/services/services.analytics.coffee

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
# language governing permissions and limitations under the License.
1515
###
1616

17-
cyclotronServices.factory 'analyticsService', ($http, $q, $localForage, $location, userService, configService) ->
17+
cyclotronServices.factory 'analyticsService', ($http, $q, $localForage, $location, configService, logService, userService) ->
1818

1919
# Helper for API methods that take optional dashboardId/startDate/endDate
2020
analyticsHelper = (name, endpoint, dashboardId, startDate, endDate) ->
@@ -152,6 +152,7 @@ cyclotronServices.factory 'analyticsService', ($http, $q, $localForage, $locatio
152152
if userService.cachedUserId?
153153
req.user = userService.cachedUserId
154154

155+
logService.debug 'Page View Analytics:', req
155156
$http.post(configService.restServiceUrl + '/analytics/pageviews?newVisit=' + newVisit + '&' + 'exporting=' + exports.isExporting, req)
156157

157158
# Record the execution of a Data Source
@@ -171,6 +172,8 @@ cyclotronServices.factory 'analyticsService', ($http, $q, $localForage, $locatio
171172
duration: duration
172173
details: details
173174

175+
logService.debug 'Data Source Analytics:', req
176+
174177
$http.post(configService.restServiceUrl + '/analytics/datasources', req)
175178

176179
# Generic schema for recording events
@@ -192,6 +195,7 @@ cyclotronServices.factory 'analyticsService', ($http, $q, $localForage, $locatio
192195
if userService.cachedUserId?
193196
req.user = userService.cachedUserId
194197

198+
logService.debug 'Event Analytics:', req
195199
$http.post(configService.restServiceUrl + '/analytics/events', req)
196200

197201
return exports

0 commit comments

Comments
 (0)