-
Notifications
You must be signed in to change notification settings - Fork 51
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: Added functionality for user to delete measurements of sensors …
…of their own boxes Users can delete measurements - either all, several specific by timestamps defined, or all measurements between two timestamps. They can do so on account.box.edit.sensors page. BREAKING CHANGE: Deletion of measurements was not able for users per opensensemap.org before #85
- Loading branch information
Showing
3 changed files
with
307 additions
and
11 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -5,12 +5,15 @@ | |
.module('openSenseMapApp') | ||
.controller('EditBoxSensorsController', EditBoxSensorsController); | ||
|
||
EditBoxSensorsController.$inject = ['boxData', 'notifications', 'SensorIcons', 'AccountService']; | ||
EditBoxSensorsController.$inject = ['boxData', 'notifications', 'SensorIcons', 'AccountService', 'OpenSenseMapAPI']; | ||
|
||
function EditBoxSensorsController (boxData, notifications, SensorIcons, AccountService) { | ||
function EditBoxSensorsController (boxData, notifications, SensorIcons, AccountService, OpenSenseMapAPI) { | ||
var vm = this; | ||
vm.sensors = []; | ||
vm.icons = []; | ||
vm.timestamps = [{ name: '2018-03-19T18:53:18.005Z'}]; | ||
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
bkari02
Author
Contributor
|
||
vm.deleteStamps = []; | ||
//vm.sensor.chart.data = []; | ||
|
||
vm.addSensor = addSensor; | ||
vm.deleteSensor = deleteSensor; | ||
|
@@ -21,9 +24,51 @@ | |
vm.getIcon = getIcon; | ||
vm.setIcon = setIcon; | ||
vm.undo = undo; | ||
vm.editMeasurements = editMeasurements; | ||
vm.deleteMeasurements = deleteMeasurements; | ||
vm.getSensorData = getSensorData; | ||
vm.addTimestamp = addTimestamp; | ||
vm.openCalendar = openCalendar; | ||
|
||
vm.save = save; | ||
|
||
|
||
vm.settings = { | ||
deletePickerStart: { | ||
date: moment().subtract(5, 'm').toDate(), | ||
open: false, | ||
buttonBar: { | ||
show: false | ||
}, | ||
timepickerOptions: { | ||
readonlyInput: false, | ||
showMeridian: false, | ||
max: null, | ||
min: null | ||
}, | ||
datepickerOptions: { | ||
minDate: null | ||
} | ||
}, | ||
deletePickerEnd: { | ||
date: moment().toDate(), | ||
open: false, | ||
buttonBar: { | ||
show: false | ||
}, | ||
timepickerOptions: { | ||
readonlyInput: false, | ||
showMeridian: false, | ||
max: null, | ||
min: null | ||
}, | ||
datepickerOptions: { | ||
maxDate: null | ||
} | ||
} | ||
}; | ||
|
||
|
||
activate(); | ||
|
||
//// | ||
|
@@ -77,12 +122,28 @@ | |
title: undefined, | ||
unit: undefined, | ||
editing: true, | ||
new: true | ||
new: true, | ||
}); | ||
|
||
setSensorsEditMode(); | ||
} | ||
|
||
|
||
|
||
/*function getLatestSensorData (boxId, sensorId) { | ||
return $http.get(getUrl() + '/boxes/' + boxId + '/data/' + sensorId) | ||
.then(success) | ||
.then(function (measurements) { | ||
// attach an id to each measurement | ||
for (var i = 0; i < measurements.length; i++) { | ||
measurements[i].id = i; | ||
} | ||
return measurements; | ||
}) | ||
.catch(failed); | ||
}*/ | ||
|
||
function deleteSensor (sensor) { | ||
if(sensor.new){ | ||
var index = vm.sensors.indexOf(sensor); | ||
|
@@ -129,6 +190,7 @@ | |
delete sensor.incomplete; | ||
delete sensor.editing; | ||
delete sensor.restore; | ||
delete sensor.measurementsediting; | ||
} | ||
|
||
setSensorsEditMode(); | ||
|
@@ -137,18 +199,19 @@ | |
function editSensor (sensor) { | ||
sensor.restore = angular.copy(sensor); | ||
sensor.editing = true; | ||
|
||
console.log(sensor); | ||
setSensorsEditMode(); | ||
} | ||
|
||
function setSensorsEditMode () { | ||
for (var i = vm.sensors.length - 1; i >= 0; i--) { | ||
if (vm.sensors[i].editing) { | ||
if (vm.sensors[i].editing || vm.sensors[i].measurementsediting) { | ||
vm.sensorsEditMode = true; | ||
return; | ||
} | ||
} | ||
vm.sensorsEditMode = false; | ||
// sensorEditMode = ??? was ist das wo wird benutzt | ||
} | ||
|
||
function getIcon (sensor) { | ||
|
@@ -178,5 +241,120 @@ | |
function undo (sensor) { | ||
delete sensor.deleted; | ||
} | ||
|
||
function editMeasurements (sensor) { | ||
sensor.restore = angular.copy(sensor); | ||
sensor.measurementsediting = true; | ||
console.log(sensor); | ||
getSensorData(sensor, {}); | ||
//sensor.editing = true; | ||
|
||
|
||
/*return getLatestSensorData(boxData._id, sensor._id) | ||
.then(function (response) { | ||
angular.copy(response.data, sensor.chart.data); | ||
angular.copy(sensor.chart.data, vm.sensor.chart.data); | ||
notifications.addAlert('info', 'NOTIFICATION_BOX_UPDATE_SUCCESS'); | ||
}) | ||
.catch(function (error) { | ||
console.log('ERROR RESPONSE'); | ||
console.log(error); | ||
notifications.addAlert('danger', 'NOTIFICATION_BOX_UPDATE_FAILED'); | ||
});*/ | ||
|
||
setSensorsEditMode(); | ||
} | ||
|
||
function deleteMeasurements (sensor){ | ||
console.log(vm.deleteOptions); | ||
if(vm.deleteOptions === 'deleteAll'){ | ||
console.log('I am Delete All'); | ||
return AccountService.deleteMeasurement(boxData._id, sensor._id, | ||
{ | ||
deleteAllMeasurements: true | ||
}); | ||
} | ||
|
||
if(vm.deleteOptions === 'timestamps'){ | ||
console.log('I am timestamps'); | ||
var timestampsArr = vm.deleteStamps; | ||
return AccountService.deleteMeasurement(boxData._id, sensor._id, | ||
{ | ||
timestamps: timestampsArr | ||
}); | ||
} | ||
if(vm.deleteOptions === 'fromToDate'){ | ||
console.log('I am fromToDate'); | ||
var fromDate = vm.settings.deletePickerStart.date; | ||
var toDate = vm.settings.deletePickerEnd.date; | ||
return AccountService.deleteMeasurement(boxData._id, sensor._id, | ||
{ | ||
'from-date': fromDate, | ||
'to-date': toDate | ||
}); | ||
} | ||
|
||
setSensorsEditMode(); | ||
} | ||
|
||
function getSensorData (sensor, data) { | ||
return OpenSenseMapAPI.getSensorData(boxData._id, sensor._id, data) | ||
.then(function (response) { | ||
sensor.chart = []; | ||
sensor.chart.data = []; | ||
for (var j = 0; j < response.length; j++) { | ||
sensor.chart.data.push({ | ||
id: response[j].id, | ||
value: parseFloat(response[j].value), | ||
date: new Date(response[j].createdAt), | ||
unit: sensor.unit, | ||
}); | ||
} | ||
sensor.chart.done = true; | ||
return response; | ||
}) | ||
.then(function (measurements) { | ||
return measurements; | ||
}) | ||
.catch(function (error) { | ||
sensor.chart.error = true; | ||
}); | ||
} | ||
|
||
|
||
|
||
function addTimestamp () { | ||
console.log('hello'); | ||
if (vm.timestampName) { | ||
vm.timestamps.push({ name: vm.timestampName }); | ||
vm.deleteStamps.push(vm.timestampName); | ||
console.log(vm.deleteStamps); | ||
vm.timestampName = ''; | ||
} | ||
} | ||
|
||
function openCalendar (e, picker) { | ||
e.preventDefault(); | ||
e.stopPropagation(); | ||
switch(picker) { | ||
case 'deletePickerStart': | ||
vm.settings.deletePickerStart.open = true; | ||
break; | ||
case 'deletePickerEnd': | ||
vm.settings.deletePickerEnd.open = true; | ||
vm.settings.deletePickerEnd.datepickerOptions.maxDate = moment().toDate(); | ||
vm.settings.deletePickerEnd.datepickerOptions.minDate = vm.settings.deletePickerStart.date; | ||
vm.settings.deletePickerEnd.timepickerOptions.max = moment().toDate(); | ||
vm.settings.deletePickerEnd.timepickerOptions.min = vm.settings.deletePickerStart.timepickerOptions.max; | ||
/*$timeout(function () { | ||
//TODO check jqLite | ||
// angular.element('#deletePickerEnd').parent()[0].children[1].style.right = "0px"; | ||
// angular.element('#deletePickerEnd').parent()[0].children[1].style.left = "auto"; | ||
});*/ | ||
break; | ||
} | ||
} | ||
|
||
|
||
} | ||
})(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
1 comment
on commit bd345b0
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ist noch nicht final, aber Grundfunktionen müssten schon laufen.
default?