Completes POCONSOLE-46. Well Test entry, edit, and deletion are working.

This commit is contained in:
Patrick McDonagh
2016-11-16 15:03:52 -06:00
parent 891458543a
commit 6f1aedd13d
5 changed files with 280 additions and 45 deletions

View File

@@ -13,8 +13,8 @@ manager.create_api(Tag, methods=['GET', 'POST', 'DELETE', 'PUT'], results_per_pa
manager.create_api(Tag_val, methods=['GET', 'POST', 'DELETE'], allow_delete_many=True)
manager.create_api(Card, methods=['GET', 'POST', 'DELETE'], allow_delete_many=True)
manager.create_api(GaugeOffVal, methods=['GET', 'POST', 'DELETE'], allow_delete_many=True)
manager.create_api(WellTest, methods=['GET', 'POST', 'DELETE'], allow_delete_many=True)
manager.create_api(Note, methods=['GET', 'POST', 'DELETE'], allow_delete_many=True)
manager.create_api(EventConfig, methods=['GET', 'POST', 'DELETE'], allow_delete_many=True)
manager.create_api(WellTest, methods=['GET', 'POST', 'DELETE', 'PUT'], allow_delete_many=True)
manager.create_api(Note, methods=['GET', 'POST', 'DELETE', 'PUT'], allow_delete_many=True)
manager.create_api(EventConfig, methods=['GET', 'POST', 'DELETE', 'PUT'])
manager.create_api(Event, methods=['GET', 'POST', 'DELETE'], allow_delete_many=True)
manager.create_api(RunStatus, methods=['GET', 'POST', 'DELETE'], allow_delete_many=True)

View File

@@ -1,9 +1,9 @@
poconsole.controller('wellTestCtrl', function($scope, $route, $http, $routeParams, Page, wellTest) {
poconsole.controller('wellTestCtrl', function($scope, $route, $http, $routeParams, Page, WellTest) {
Page.setTitle('Well Tests');
Page.setPage('welltest');
$scope.loadWellTestData = function(page_number){
var getData = wellTest.getWellTestPage(page_number);
var getData = WellTest.getWellTestPage(page_number);
getData.then(function(d){
for(var j = 0; j < d.objects.length; j++){
// console.log({'Date Before':d.objects[j].created_on});
@@ -11,9 +11,6 @@ poconsole.controller('wellTestCtrl', function($scope, $route, $http, $routeParam
// console.log({'Date After':d.objects[j].created_on});
}
$scope.well_test_vals = d.objects;
console.log($scope.well_test_vals);
$scope.num_pages = d.total_pages;
$scope.page_list = [];
$scope.page_num = d.page;
@@ -38,5 +35,66 @@ poconsole.controller('wellTestCtrl', function($scope, $route, $http, $routeParam
$scope.loadWellTestData(1);
$scope.startCreateWellTest = function(){
$scope.newWellTest = {
'duration_hours': 24,
'volume_h2o_actual': 0,
'volume_oil_actual': 0,
'volume_gas_actual': 0,
'volume_h2o_projected': 0,
'volume_oil_projected': 0,
'volume_gas_projected': 0,
'api_gravity_oil': 2.0,
'spc_gravity_h2o': 1.011,
'created_on': Date.create()
};
};
$scope.submitNewWellTest = function(){
var temp_date = Date.create($scope.newWellTest.created_on);
$scope.newWellTest.created_on = temp_date.utc().format('{yyyy}-{MM}-{dd}T{HH}:{mm}:00.00000');
var createWellTest = WellTest.createWellTest($scope.newWellTest);
createWellTest.then(function(response_data){
console.log("Response from API");
console.log(response_data);
$scope.loadWellTestData(1);
});
};
$scope.startEditWellTest = function(id){
var getEditWellTestData = WellTest.getWellTest(id);
getEditWellTestData.then(function(d){
$scope.editWellTest = d;
$scope.editWellTest.created_on = Date.utc.create($scope.editWellTest.created_on);
});
};
$scope.submitEditWellTest = function(){
var temp_date = Date.create($scope.editWellTest.created_on);
$scope.editWellTest.created_on = temp_date.utc().format('{yyyy}-{MM}-{dd}T{HH}:{mm}:00.00000');
var updateWellTest = WellTest.updateWellTest($scope.editWellTest);
updateWellTest.then(function(response_data){
console.log("Response from API");
console.log(response_data);
$scope.loadWellTestData(1);
});
};
$scope.openDeleteWellTest = function(id){
var getDeleteWellTestData = WellTest.getWellTest(id);
getDeleteWellTestData.then(function(d){
$scope.deleteWellTest = d;
});
};
$scope.submitDeleteWellTest = function(){
var deleteSelectedWellTest = WellTest.deleteWellTest($scope.deleteWellTest._id);
deleteSelectedWellTest.then(function(data){
$scope.loadWellTestData(1);
});
};
});

View File

@@ -1,4 +1,4 @@
poconsole.factory('wellTest',function($q, $http, $log, dateConversion){
poconsole.factory('WellTest',function($q, $http, $log, dateConversion){
var getWellTestPage = function(page_number) {
var deferred = $q.defer();
$http.get('/api/well_test_vals?q={"order_by":[{"field":"created_on","direction":"desc"}]}&page=' + page_number).success(function(data) {
@@ -7,50 +7,57 @@ poconsole.factory('wellTest',function($q, $http, $log, dateConversion){
return deferred.promise;
};
var createWellTest = function(tag){
$http.post('/api/tags', {
tag: tag.tag,
name: tag.name,
tag_class_id: parseInt(tag.tag_class_id),
device_id: parseInt(tag.device_id),
units: tag.units,
min_expected: tag.min_expected,
max_expected: tag.max_expected,
guarantee_sec: tag.guarantee_sec,
change_threshold: tag.change_threshold,
description: tag.description,
data_type_id: parseInt(tag.data_type_id)
}).success(function(data){
return data;
var getWellTest = function(id){
var deferred = $q.defer();
$http.get('/api/well_test_vals/' + id).success(function(data) {
deferred.resolve(data);
});
return deferred.promise;
};
var updateWellTest = function(tag){
$log.info("updateTag called with "+ JSON.stringify(tag));
var put_obj = {
tag: tag.tag,
name: tag.name,
tag_class_id: parseInt(tag.tag_class_id),
device_id: parseInt(tag.device_id),
units: tag.units,
min_expected: tag.min_expected,
max_expected: tag.max_expected,
guarantee_sec: tag.guarantee_sec,
change_threshold: tag.change_threshold,
description: tag.description,
data_type_id: parseInt(tag.data_type_id)
var createWellTest = function(t){
var deferred = $q.defer();
var well_test = {
'duration_hours': t.duration_hours,
'volume_h2o_actual': t.volume_h2o_actual,
'volume_oil_actual': t.volume_oil_actual,
'volume_gas_actual': t.volume_gas_actual,
'volume_h2o_projected': t.volume_h2o_projected,
'volume_oil_projected': t.volume_oil_projected,
'volume_gas_projected': t.volume_gas_projected,
'api_gravity_oil': t.api_gravity_oil,
'spc_gravity_h2o': t.spc_gravity_h2o,
'created_on': t.created_on
};
console.log({id: tag._id, put_obj: put_obj});
$http.put('/api/tags/'+ tag._id, data=put_obj).success(function(data){
return data;
}).error(function(err){
$log.warn("updateTag Error: " + err);
$http.post('/api/well_test_vals', well_test).success(function(data){
deferred.resolve(data);
});
return deferred.promise;
};
var updateWellTest = function(t){
var deferred = $q.defer();
var well_test = {
'duration_hours': t.duration_hours,
'volume_h2o_actual': t.volume_h2o_actual,
'volume_oil_actual': t.volume_oil_actual,
'volume_gas_actual': t.volume_gas_actual,
'volume_h2o_projected': t.volume_h2o_projected,
'volume_oil_projected': t.volume_oil_projected,
'volume_gas_projected': t.volume_gas_projected,
'api_gravity_oil': t.api_gravity_oil,
'spc_gravity_h2o': t.spc_gravity_h2o,
'created_on': t.created_on
};
$http.put('/api/well_test_vals/'+ t._id, data=well_test).success(function(data){
deferred.resolve(data);
});
return deferred.promise;
};
var deleteWellTest = function(id){
var deferred = $q.defer();
var url = '/api/tags/' + id;
var url = '/api/well_test_vals/' + id;
$http.delete(url).success(function(data) {
deferred.resolve({
data: data
@@ -63,6 +70,7 @@ poconsole.factory('wellTest',function($q, $http, $log, dateConversion){
return {
getWellTestPage: getWellTestPage,
getWellTest: getWellTest,
createWellTest: createWellTest,
deleteWellTest: deleteWellTest,
updateWellTest: updateWellTest

View File

@@ -144,7 +144,7 @@
</div>
</div>
</form>
<pre>{{editTag}}</pre>
<!-- <pre>{{editTag}}</pre> -->
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>

View File

@@ -1,3 +1,165 @@
<div class="modal fade" id="addModal">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title">Add a New Well Test...</h4>
</div>
<div class="modal-body">
<div class="well" ng-if="message"><h3 class="text-danger">{{message}}</h3></div>
<form>
<h2>Actual Volumes</h2>
<div class="form-group">
<label for="volume_oil_actual">Volume Oil (BBL)</label>
<input type="number" ng-model="newWellTest.volume_oil_actual" class="form-control" id="volume_oil_actual" />
</div>
<div class="form-group">
<label for="volume_h2o_actual">Volume Water (BBL)</label>
<input type="number" ng-model="newWellTest.volume_h2o_actual" class="form-control" id="volume_h2o_actual" />
</div>
<div class="form-group">
<label for="volume_gas_actual">Volume Gas (MMCF)</label>
<input type="number" ng-model="newWellTest.volume_gas_actual" class="form-control" id="volume_gas_actual" />
</div>
<hr />
<h2>Projected Volumes</h2>
<div class="form-group">
<label for="volume_oil_projected">Volume Oil (BBL)</label>
<input type="number" ng-model="newWellTest.volume_oil_projected" class="form-control" id="volume_oil_projected" />
</div>
<div class="form-group">
<label for="volume_h2o_projected">Volume Water (BBL)</label>
<input type="number" ng-model="newWellTest.volume_h2o_projected" class="form-control" id="volume_h2o_projected" />
</div>
<div class="form-group">
<label for="volume_gas_projected">Volume Gas (MMCF)</label>
<input type="number" ng-model="newWellTest.volume_gas_projected" class="form-control" id="volume_gas_projected" />
</div>
<hr />
<h2>Fluid Parameters</h2>
<div class="form-group">
<label for="api_gravity_oil">Oil API Gravity</label>
<input type="number" ng-model="newWellTest.api_gravity_oil" class="form-control" id="api_gravity_oil" />
</div>
<div class="form-group">
<label for="spc_gravity_h2o">Water Specific Gravity</label>
<input type="number" ng-model="newWellTest.spc_gravity_h2o" class="form-control" id="spc_gravity_h2o" />
</div>
<hr />
<div class="form-group">
<label for="created_on">Test Start</label>
<br />
<quick-datepicker id="created_on" ng-model='newWellTest.created_on'></quick-datepicker>
</div>
<div class="form-group">
<label for="duration_hours">Test Duration (Hours)</label>
<input type="number" ng-model="newWellTest.duration_hours" class="form-control" id="duration_hours" />
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary" ng-click="submitNewWellTest();" data-dismiss="modal">Submit Well Test</button>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
<div class="modal fade" id="editModal">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title">Edit a Tag...</h4>
</div>
<div class="modal-body">
<div class="well" ng-if="message"><h3 class="text-danger">{{message}}</h3></div>
<form>
<h2>Actual Volumes</h2>
<div class="form-group">
<label for="volume_oil_actual">Volume Oil (BBL)</label>
<input type="number" ng-model="editWellTest.volume_oil_actual" class="form-control" id="volume_oil_actual" />
</div>
<div class="form-group">
<label for="volume_h2o_actual">Volume Water (BBL)</label>
<input type="number" ng-model="editWellTest.volume_h2o_actual" class="form-control" id="volume_h2o_actual" />
</div>
<div class="form-group">
<label for="volume_gas_actual">Volume Gas (MMCF)</label>
<input type="number" ng-model="editWellTest.volume_gas_actual" class="form-control" id="volume_gas_actual" />
</div>
<hr />
<h2>Projected Volumes</h2>
<div class="form-group">
<label for="volume_oil_projected">Volume Oil (BBL)</label>
<input type="number" ng-model="editWellTest.volume_oil_projected" class="form-control" id="volume_oil_projected" />
</div>
<div class="form-group">
<label for="volume_h2o_projected">Volume Water (BBL)</label>
<input type="number" ng-model="editWellTest.volume_h2o_projected" class="form-control" id="volume_h2o_projected" />
</div>
<div class="form-group">
<label for="volume_gas_projected">Volume Gas (MMCF)</label>
<input type="number" ng-model="editWellTest.volume_gas_projected" class="form-control" id="volume_gas_projected" />
</div>
<hr />
<h2>Fluid Parameters</h2>
<div class="form-group">
<label for="api_gravity_oil">Oil API Gravity</label>
<input type="number" ng-model="editWellTest.api_gravity_oil" class="form-control" id="api_gravity_oil" />
</div>
<div class="form-group">
<label for="spc_gravity_h2o">Water Specific Gravity</label>
<input type="number" ng-model="editWellTest.spc_gravity_h2o" class="form-control" id="spc_gravity_h2o" />
</div>
<hr />
<div class="form-group">
<label for="created_on">Test Start</label>
<br />
<quick-datepicker id="created_on" ng-model='editWellTest.created_on'></quick-datepicker>
</div>
<div class="form-group">
<label for="duration_hours">Test Duration (Hours)</label>
<input type="number" ng-model="editWellTest.duration_hours" class="form-control" id="duration_hours" />
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary" ng-click="submitEditWellTest();" data-dismiss="modal">Submit Well Test Edits</button>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
<div class="modal fade" id="deleteModal">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title">Are you sure?</h4>
</div>
<div class="modal-body">
<div class="well" ng-if="message"><h3 class="text-danger">{{message}}</h3></div>
<h3>Are you sure you want to delete the Well Test at {{deleteWellTest.created_on}}?</h3>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary" data-dismiss="modal">NO!!!!!!</button>
<button type="button" class="btn btn-danger" ng-click="submitDeleteWellTest(deleteWellTest._id);" data-dismiss="modal">Yes, delete it!</button>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
<div class='container'>
<div class="row">
<div class="col-md-12">
@@ -8,6 +170,9 @@
<div class='row'>
<div class='col-md-12'>
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#addModal">
New Well Test
</button>
<div ng-if="num_pages>1" style="text-align:center;">
<ul class="pagination">
<li>
@@ -37,6 +202,8 @@
<th>Proj. Vol. Gas</th>
<th>API Grav. Oil</th>
<th>Specific Grav. Water</th>
<th></th>
<th></th>
</tr>
</thead>
@@ -52,6 +219,8 @@
<td nowrap>{{ test.volume_gas_projected }} mmcf</td>
<td nowrap>{{ test.api_gravity_oil }}</td>
<td nowrap>{{ test.spc_gravity_h2o }}</td>
<td><button data-toggle="modal" data-target="#editModal" ng-click="startEditWellTest(test._id)" class="btn btn-primary">Edit</button></td>
<td><button data-toggle="modal" data-target="#deleteModal" ng-click="openDeleteWellTest(test._id)" class="btn btn-danger">Delete</button></td>
</tr>
</tbody>
</table>