Skip to content

Commit

Permalink
Merge pull request #3214 from SEED-platform/3209-feat/export-datalogg…
Browse files Browse the repository at this point in the history
…ers-and-sensors

3209 feat/export dataloggers and sensors
  • Loading branch information
nllong committed Apr 29, 2022
2 parents 29be230 + 69a22dd commit c3ffd4e
Show file tree
Hide file tree
Showing 7 changed files with 58 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,41 @@ angular.module('BE.seed.controller.inventory_detail_sensors', [])
fastWatch: true
};

$scope.exportSensors = function (grid_data, data_type) {
let title = `${data_type}_for_${$scope.inventory_type == 'properties' ? 'Property' : 'Taxlot'}_${$scope.item_state.pm_property_id}_${moment().format('YYYY_MM_DD')}`;
let keys = grid_data.columnDefs.map(c => c.field).filter(key => key != 'data_logger');
let data = [keys.join(',')];

grid_data.data.forEach(d => {
let row = [];
keys.forEach(k => row.push(d[k]));
data.push(row.join(','));
});

saveAs(new Blob([data.join('\n')], {type: 'text/csv'}), title);
}
$scope.exportSensorUsages = function (grid_data, sensor_data, data_type) {
let title = `${data_type}_for_${$scope.inventory_type == 'properties' ? 'Property' : 'Taxlot'}_${$scope.item_state.pm_property_id}_${moment().format('YYYY_MM_DD')}`;
let keys = grid_data.columnDefs.map(c => c.field)

// grid data headers are a combination of display name and data logger. Use sensor_data to make a conversion object
let display_to_column = {'timestamp': 'timestamp'}
sensor_data.data.forEach(sensor => {
display_to_column[`${sensor.display_name} (${sensor.data_logger})`] = sensor.column_name
})

let data = [keys.map(k => display_to_column[k]).join(',')];

grid_data.data.forEach(d => {
let row = []
keys.forEach(k => row.push(d[k]))
data.push(row.join(','))
});

saveAs(new Blob([data.join('\n')], {type: 'text/csv'}), title);
}


$scope.apply_column_settings = function () {
_.forEach($scope.usageGridOptions.columnDefs, function (column) {
column.enableHiding = false;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ angular.module('BE.seed.controller.sensors_upload_modal', [])
data_logger,
datasets
) {
console.log(data_logger)
$scope.step = {
number: 1
};
Expand Down
11 changes: 9 additions & 2 deletions seed/static/seed/partials/inventory_detail_sensors.html
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,10 @@ <h4 translate>DATA_LOGGERS</h4>
</div>

<div id="sensor-info-container">
<h4 translate>SENSORS</h4>
<div class="sensor-header-container">
<h4 translate>SENSORS</h4>
<button ng-hide="!has_sensors" type="button" class="btn btn-primary" ng-click="exportSensors(sensorGridOptions, 'Sensors')" translate>Export CSV</button>
</div>
<div id="grid-container" style="padding-top: 15px">
<div ng-show="has_sensors">
<div ui-grid="sensorGridOptions" ui-grid-resize-columns ui-grid-auto-resize></div>
Expand Down Expand Up @@ -106,7 +109,11 @@ <h4 translate>SENSORS</h4>
</div>
</div>
<div class="section_content" ng-show="has_sensor_readings">
<h4 translate>SENSOR_READINGS</h4>
<div class="sensor-header-container">
<h4 translate>SENSOR_READINGS</h4>
<button ng-hide="!has_sensor_readings" type="button" class="btn btn-primary" ng-click="exportSensorUsages(usageGridOptions, sensorGridOptions, 'Sensor_Usage')" translate>Export CSV</button>
</div>

<div id="usage-grid-container">
<div ui-grid="usageGridOptions" ui-grid-resize-columns></div>
</div>
Expand Down
14 changes: 14 additions & 0 deletions seed/static/seed/scss/style.scss
Original file line number Diff line number Diff line change
Expand Up @@ -4221,3 +4221,17 @@ iframe.analysis-results {
margin: 0.5em 0 0 0.5em;
float: left;
}

.sensor-header-container{
position: relative;
margin-top: 10px;

h4 {
display: inline-block;
}

button {
position: absolute;
right: 0;
}
}
File renamed without changes.

0 comments on commit c3ffd4e

Please sign in to comment.