Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Csv export support #585

Closed
wants to merge 29 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
0839967
csv export support for histogram panel
bobrik Oct 17, 2013
11eb0f1
using csv partial, terms support
bobrik Oct 22, 2013
c1f87e5
removed debug
bobrik Oct 22, 2013
a49e10d
iso8601 dates
bobrik Oct 23, 2013
6a92a2c
using precalculated data in csv.html
bobrik Oct 23, 2013
e4a5db5
Merge branch 'master' into csv-export
bobrik Oct 29, 2013
d24bc27
calculating csv only when showing modal
bobrik Oct 29, 2013
03de7af
fixed csv download
bobrik Oct 29, 2013
004d0c1
using scope variable, updating it on modal show
bobrik Oct 29, 2013
4f94067
textarea instead of pre for easier copying
bobrik Oct 31, 2013
9cac2fe
Merge branch 'master' into csv-export
bobrik Oct 31, 2013
e3dfc34
Merge branch 'master' into csv-export
bobrik Nov 5, 2013
d2aca55
Merge branch 'master' of github.com:elasticsearch/kibana into csv-export
bobrik Nov 6, 2013
5a69134
Merge branch 'master' into csv-export
bobrik Dec 28, 2013
53bbfc9
Merge branch 'master' into csv-export
bobrik Jan 5, 2014
4429e44
fixed csv export from histogram
bobrik Jan 5, 2014
11d47cd
csv escaping
bobrik Jan 5, 2014
a9ee200
merged master
bobrik Jan 20, 2014
2a6b13e
newline
bobrik Jan 20, 2014
6f9feb5
csv export for stats panel
bobrik Jan 20, 2014
e1aaf6f
csv export for table panel
bobrik Jan 20, 2014
56de56c
Merge branch 'master' into csv-export
bobrik Feb 18, 2014
2387e13
fixed linting error
bobrik Feb 18, 2014
ad1c6f5
Merge branch 'master' into csv-export
bobrik Feb 19, 2014
71d0fdf
Merge branch 'master' into csv-export
bobrik Mar 4, 2014
b163f4a
Merge branch 'master' into csv-export
bobrik Mar 20, 2014
a37c563
fixed conflict
bobrik May 5, 2014
0edd204
Merge branch 'master' into csv-export
bobrik May 13, 2014
e3a1a77
Merge branch 'master' into csv-export
bobrik Jun 18, 2014
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/app/directives/kibanaPanel.js
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ function (angular,$) {

'<span ng-repeat="task in panelMeta.modals" class="row-button extra" ng-show="task.show">' +
'<span bs-modal="task.partial" class="pointer"><i ' +
'bs-tooltip="task.description" ng-class="task.icon" class="pointer"></i></span>'+
'bs-tooltip="task.description" ng-class="task.icon" class="pointer" ng-click="task.click()"></i></span>'+
'</span>' +

'<span class="row-button extra" ng-show="panelMeta.loading == true">' +
Expand Down
65 changes: 65 additions & 0 deletions src/app/panels/histogram/module.js
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,13 @@ function (angular, app, $, _, kbn, moment, timeSeries, numeral) {
icon: "icon-info-sign",
partial: "app/partials/inspector.html",
show: $scope.panel.spyable
},
{
description: "Csv",
icon: "icon-table",
partial: "app/partials/csv.html",
show: true,
click: function() { $scope.csv_data = $scope.to_csv(); }
}
],
editorTabs : [
Expand Down Expand Up @@ -511,6 +518,13 @@ function (angular, app, $, _, kbn, moment, timeSeries, numeral) {
});
};

$scope.download_csv = function() {
var blob = new Blob([$scope.csv_data], { type: "text/csv" });
// from filesaver.js
window.saveAs(blob, $scope.panel.title + ".csv");
return true;
};

// function $scope.zoom
// factor :: Zoom factor, so 0.5 = cuts timespan in half, 2 doubles timespan
$scope.zoom = function(factor) {
Expand Down Expand Up @@ -579,6 +593,57 @@ function (angular, app, $, _, kbn, moment, timeSeries, numeral) {
render_panel(data);
});

scope.to_csv = function() {
var headers, rows, csv;

headers = [];
rows = {};
csv = [];

headers.push('"time"');

_.each(data, function(series) {
headers.push('"' + (series.info.alias || series.info.query) + '"');
_.each(series.data, function(point, row) {
if (!rows[row]) {
rows[row] = {
time : point[0],
values : []
};
}

rows[row].values.push(point[1] || 0);
});

rows = _.filter(rows, function(row) {
return row.values.length > 0;
});
});

csv.push(headers);
_.each(rows, function(row) {
var values = [];

values.push(moment(row.time).format('"YYYY-MM-DDTHH:mm:ss"'));
_.each(row.values, function(value) {
values.push(value);
});

csv.push(values.join(","));
});

return csv.join("\n") + "\n";
};

scope.$watch('panel.span', function(){
render_panel(data);
});

// Re-render if the window is resized
angular.element(window).bind('resize', function(){
render_panel(data);
});

var scale = function(series,factor) {
return _.map(series,function(p) {
return [p[0],p[1]*factor];
Expand Down
24 changes: 24 additions & 0 deletions src/app/panels/stats/module.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,13 @@ define([
icon: "icon-info-sign",
partial: "app/partials/inspector.html",
show: $scope.panel.spyable
},
{
description: "Csv",
icon: "icon-table",
partial: "app/partials/csv.html",
show: true,
click: function() { $scope.csv_data = $scope.to_csv(); }
}
],
editorTabs : [
Expand Down Expand Up @@ -189,6 +196,23 @@ define([
$scope.$emit('render');
};

$scope.to_csv = function() {
var rows = [];

_.each($scope.data.rows, function(row) {
rows.push('"' + row.Label + '"' + "," + row.Value);
});

return rows.join("\n") + "\n";
};

$scope.download_csv = function() {
var blob = new Blob([$scope.csv_data], { type: "text/csv" });
// from filesaver.js
window.saveAs(blob, $scope.panel.title + ".csv");
return true;
};

});

module.filter('formatstats', function(){
Expand Down
51 changes: 51 additions & 0 deletions src/app/panels/table/module.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,13 @@ function (angular, app, _, kbn, moment) {
icon: "icon-info-sign",
partial: "app/partials/inspector.html",
show: $scope.panel.spyable
},
{
description: "Csv",
icon: "icon-table",
partial: "app/partials/csv.html",
show: true,
click: function() { $scope.csv_data = $scope.to_csv(); }
}
],
editorTabs : [
Expand Down Expand Up @@ -466,6 +473,50 @@ function (angular, app, _, kbn, moment) {
return obj;
};

$scope.to_csv = function() {
var headers, rows, csv, fields;

headers = [];
rows = [];
csv = [];

if ($scope.panel.fields.length === 0) {
fields = $scope.fields.list;
} else {
fields = $scope.panel.fields;
}

_.each(fields, function(field) {
headers.push('"' + field + '"');
});

rows.push(headers);

_.each($scope.data, function(event) {
rows.push(_.map(fields, function(field) {
var value = event.kibana._source[field];

if (_.isUndefined(value)) {
return "";
} else {
return '"' + value + '"';
}
}));
});

_.each(rows, function(row) {
csv.push(row.join(","));
});

return csv.join("\n") + "\n";
};

$scope.download_csv = function() {
var blob = new Blob([$scope.csv_data], { type: "text/csv" });
// from filesaver.js
window.saveAs(blob, $scope.panel.title + ".csv");
return true;
};

});

Expand Down
24 changes: 24 additions & 0 deletions src/app/panels/terms/module.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,13 @@ function (angular, app, _, $, kbn) {
icon: "icon-info-sign",
partial: "app/partials/inspector.html",
show: $scope.panel.spyable
},
{
description: "Csv",
icon: "icon-table",
partial: "app/partials/csv.html",
show: true,
click: function() { $scope.csv_data = $scope.to_csv(); }
}
],
editorTabs : [
Expand Down Expand Up @@ -249,6 +256,23 @@ function (angular, app, _, $, kbn) {
return true;
};

$scope.to_csv = function() {
var csv = [];

_.each($scope.data, function(series) {
csv.push(['"' + series.label + '"', series.data[0][1]].join(","));
});

return csv.join("\n") + "\n";
};

$scope.download_csv = function() {
var blob = new Blob([$scope.csv_data], { type: "text/csv" });
// from filesaver.js
window.saveAs(blob, $scope.panel.title + "-" + $scope.panel.field + ".csv");
return true;
};

});

module.directive('termsChart', function(querySrv) {
Expand Down
12 changes: 12 additions & 0 deletions src/app/partials/csv.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3>CSV (<a ng-click="download_csv()">download</a>)</h3>
</div>
<div class="modal-body">

<textarea style="height: 350px" class="input-block-level">{{ csv_data }}</textarea>

</div>
<div class="modal-footer">
<button type="button" class="btn btn-success" ng-click="dismiss()">Close</button>
</div>