diff --git a/flask/app/datalogger/models.py b/flask/app/datalogger/models.py index 6fd705f..e2dfa6e 100644 --- a/flask/app/datalogger/models.py +++ b/flask/app/datalogger/models.py @@ -292,7 +292,7 @@ class Note(db.Model): __tablename__ = "notes" _id = db.Column(db.Integer, primary_key=True) note_text = db.Column(db.String(256)) - author = db.String(128) + author = db.Column(db.String(128)) created_on = db.Column(db.DateTime(), default=datetime.utcnow) updated_on = db.Column(db.DateTime(), default=datetime.utcnow, onupdate=datetime.utcnow) diff --git a/flask/app/static/index.html b/flask/app/static/index.html index 7bf0f66..5dd6b72 100644 --- a/flask/app/static/index.html +++ b/flask/app/static/index.html @@ -39,7 +39,7 @@
  • Gauge Off
  • Well Test
  • Events
  • -
  • Notes
  • +
  • Notes
  • Docs
  • @@ -80,6 +80,7 @@ + @@ -90,6 +91,7 @@ + diff --git a/flask/app/static/js/notes.controller.js b/flask/app/static/js/notes.controller.js new file mode 100644 index 0000000..c6a2370 --- /dev/null +++ b/flask/app/static/js/notes.controller.js @@ -0,0 +1,93 @@ +poconsole.controller('notesCtrl', function($scope, Page, Note) { + Page.setTitle('Notes'); + Page.setPage('notes'); + + $scope.loadNotesPageData = function(page_number){ + var getData = Note.getNotesPage(page_number); + getData.then(function(d){ + for(var j = 0; j < d.objects.length; j++){ + // console.log({'Date Before':d.objects[j].created_on}); + d.objects[j].created_on = Date.create(d.objects[j].created_on + "Z", { fromUTC: true }); + // console.log({'Date After':d.objects[j].created_on}); + } + $scope.notes_data = d.objects; + $scope.num_pages = d.total_pages; + $scope.page_list = []; + $scope.page_num = d.page; + + if ($scope.page_num < $scope.num_pages){ + $scope.page_num_next = $scope.page_num + 1; + } else { + $scope.page_num_next = $scope.num_pages; + } + + if ($scope.page_num > 1){ + $scope.page_num_prev = $scope.page_num - 1; + } else { + $scope.page_num_prev = 1; + } + + for(var i = 1; i <= $scope.num_pages; i++){ + $scope.page_list.push(i); + } + }); + }; + + $scope.loadNotesPageData(1); + + $scope.startCreateNote = function(){ + $scope.newNote = { + 'note_text': "SAMPLE TEXT", + 'author': "Mark Twain", + 'created_on': Date.create() + }; + }; + + $scope.submitNewNote = function(){ + var temp_date = Date.create($scope.newNote.created_on); + $scope.newNote.created_on = temp_date.utc().format('{yyyy}-{MM}-{dd}T{HH}:{mm}:00.00000'); + var createNote = Note.createNote($scope.newNote); + createNote.then(function(response_data){ + console.log("Response from API"); + console.log(response_data); + $scope.loadNotesPageData(1); + }); + }; + + $scope.startEditNote = function(id){ + var getEditNoteData = Note.getNote(id); + getEditNoteData.then(function(d){ + $scope.editNote = d; + $scope.editNote.created_on = Date.utc.create($scope.editNote.created_on); + }); + }; + + $scope.submitEditNote = function(){ + var temp_date = Date.create($scope.editNote.created_on); + $scope.editNote.created_on = temp_date.utc().format('{yyyy}-{MM}-{dd}T{HH}:{mm}:00.00000'); + var updateNote = Note.updateNote($scope.editNote); + updateNote.then(function(response_data){ + console.log("Response from API"); + console.log(response_data); + $scope.loadNotesPageData(1); + }); + }; + + $scope.openDeleteNote = function(id){ + var getDeleteNoteData = Note.getNote(id); + getDeleteNoteData.then(function(d){ + $scope.deleteNote = d; + }); + }; + + $scope.submitDeleteNote = function(){ + var deleteSelectedNote = Note.deleteNote($scope.deleteNote._id); + deleteSelectedNote.then(function(data){ + $scope.loadNotesPageData(1); + }); + }; + + + + +}); diff --git a/flask/app/static/js/notes.factory.js b/flask/app/static/js/notes.factory.js new file mode 100644 index 0000000..5a1f798 --- /dev/null +++ b/flask/app/static/js/notes.factory.js @@ -0,0 +1,64 @@ +poconsole.factory('Note',function($q, $http, $log){ + var getNotesPage = function(page_number) { + var deferred = $q.defer(); + $http.get('/api/notes?q={"order_by":[{"field":"created_on","direction":"desc"}]}&page=' + page_number).success(function(data) { + deferred.resolve(data); + }); + return deferred.promise; + }; + + var getNote = function(id){ + var deferred = $q.defer(); + $http.get('/api/notes/' + id).success(function(data) { + deferred.resolve(data); + }); + return deferred.promise; + }; + + var createNote = function(n){ + var deferred = $q.defer(); + var note_obj = { + 'note_text': n.note_text, + 'author': n.author, + 'created_on': n.created_on + }; + $http.post('/api/notes', note_obj).success(function(data){ + deferred.resolve(data); + }); + return deferred.promise; + }; + + var updateNote = function(n){ + var deferred = $q.defer(); + var note_obj = { + 'note_text': n.note_text, + 'author': n.author, + 'created_on': n.created_on + }; + $http.put('/api/notes/'+ n._id, data=note_obj).success(function(data){ + deferred.resolve(data); + }); + return deferred.promise; + }; + + var deleteNote = function(id){ + var deferred = $q.defer(); + var url = '/api/notes/' + id; + $http.delete(url).success(function(data) { + deferred.resolve({ + data: data + }); + }); + return deferred.promise; + }; + + + + return { + getNotesPage: getNotesPage, + getNote: getNote, + createNote: createNote, + deleteNote: deleteNote, + updateNote: updateNote + }; +}); diff --git a/flask/app/static/js/router.js b/flask/app/static/js/router.js index e73d8d4..c14a59b 100644 --- a/flask/app/static/js/router.js +++ b/flask/app/static/js/router.js @@ -31,6 +31,9 @@ tagserver.config([ }).when('/events', { templateUrl: '/templates/events.html', controller: 'eventsCtrl' + }).when('/notes', { + templateUrl: '/templates/notes.html', + controller: 'notesCtrl' }).when('/', { templateUrl: '/templates/dashboard.html', controller: 'dashboardCtrl' diff --git a/flask/app/static/js/welltest.controller.js b/flask/app/static/js/welltest.controller.js index 50226aa..011583a 100644 --- a/flask/app/static/js/welltest.controller.js +++ b/flask/app/static/js/welltest.controller.js @@ -1,4 +1,4 @@ -poconsole.controller('wellTestCtrl', function($scope, $route, $http, $routeParams, Page, WellTest) { +poconsole.controller('wellTestCtrl', function($scope, Page, WellTest) { Page.setTitle('Well Tests'); Page.setPage('welltest'); @@ -10,7 +10,7 @@ poconsole.controller('wellTestCtrl', function($scope, $route, $http, $routeParam d.objects[j].created_on = Date.create(d.objects[j].created_on + "Z", { fromUTC: true }); // console.log({'Date After':d.objects[j].created_on}); } - $scope.well_test_vals = d.objects; + $scope.notes = d.objects; $scope.num_pages = d.total_pages; $scope.page_list = []; $scope.page_num = d.page; diff --git a/flask/app/static/js/welltest.factory.js b/flask/app/static/js/welltest.factory.js index 7327659..3d7cbf8 100644 --- a/flask/app/static/js/welltest.factory.js +++ b/flask/app/static/js/welltest.factory.js @@ -1,4 +1,4 @@ -poconsole.factory('WellTest',function($q, $http, $log, dateConversion){ +poconsole.factory('WellTest',function($q, $http, $log){ 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) { diff --git a/flask/app/static/templates/notes.html b/flask/app/static/templates/notes.html new file mode 100644 index 0000000..5e7e727 --- /dev/null +++ b/flask/app/static/templates/notes.html @@ -0,0 +1,141 @@ + + + + + + + + +
    +
    +
    +

    Notes

    + +
    + +
    +
    +
    + + +
    +
    + + + + + + + + + + + + + + + + + + + +
    DateNoteAuthor
    {{ n.created_on | date:'medium'}}{{ n.note_text }}{{ n.author }}
    +
    No stored notes yet.
    +
    +
    +
    diff --git a/flask/app/static/templates/welltest.html b/flask/app/static/templates/welltest.html index c8e2159..64442e9 100644 --- a/flask/app/static/templates/welltest.html +++ b/flask/app/static/templates/welltest.html @@ -224,6 +224,8 @@ + +
    No stored notes yet.
    diff --git a/flask/tests/dbtests.py b/flask/tests/dbtests.py index dd73bbc..f2113ad 100644 --- a/flask/tests/dbtests.py +++ b/flask/tests/dbtests.py @@ -166,40 +166,59 @@ def get_data(db_table, obj_id): # print("testing {}: {} == {}".format(x, test_well_test[x], data_in_db[x])) # self.assertTrue(test_well_test[x] == data_in_db[x]) -class TestEvents(unittest.TestCase): +# class TestEvents(unittest.TestCase): +# def test_insert(self): +# # event_id = db.Column(db.Integer, db.ForeignKey('event_configs._id')) +# # event_type = db.Column(db.String(64)) +# # event_condition = db.Column(db.String(64)) +# test_analog_event = { +# 'event_id': 1, +# 'event_type': 'Alarm', +# 'event_condition': 'High Alarm' +# } +# +# id_added = insert_data("events", test_analog_event) +# print("Added event at _id {}".format(id_added)) +# +# if id_added > 0: +# data_in_db = get_data("events", id_added) +# for x in test_analog_event: +# print("testing {}: {} == {}".format(x, test_analog_event[x], data_in_db[x])) +# self.assertTrue(test_analog_event[x] == data_in_db[x]) +# +# test_bit_event = { +# 'event_id': 16, +# 'event_type': 'Info', +# 'event_condition': 'Unit Start' +# } +# +# id_added = insert_data("events", test_bit_event) +# print("Added event at _id {}".format(id_added)) +# +# if id_added > 0: +# data_in_db = get_data("events", id_added) +# for x in test_bit_event: +# print("testing {}: {} == {}".format(x, test_bit_event[x], data_in_db[x])) +# self.assertTrue(test_bit_event[x] == data_in_db[x]) + +class TestWellTest(unittest.TestCase): def test_insert(self): - # event_id = db.Column(db.Integer, db.ForeignKey('event_configs._id')) - # event_type = db.Column(db.String(64)) - # event_condition = db.Column(db.String(64)) - test_analog_event = { - 'event_id': 1, - 'event_type': 'Alarm', - 'event_condition': 'High Alarm' + # note_text = db.Column(db.String(256)) + # author = db.String(128) + + test_note = { + 'note_text': "THIS IS A TEST OF THE NOTE SYSTEM.", + 'author': "Patrick F-ing McDonagh" } - id_added = insert_data("events", test_analog_event) - print("Added event at _id {}".format(id_added)) + id_added = insert_data("notes", test_note) + print("Added note at _id {}".format(id_added)) if id_added > 0: - data_in_db = get_data("events", id_added) - for x in test_analog_event: - print("testing {}: {} == {}".format(x, test_analog_event[x], data_in_db[x])) - self.assertTrue(test_analog_event[x] == data_in_db[x]) - - test_bit_event = { - 'event_id': 16, - 'event_type': 'Info', - 'event_condition': 'Unit Start' - } - - id_added = insert_data("events", test_bit_event) - print("Added event at _id {}".format(id_added)) - - if id_added > 0: - data_in_db = get_data("events", id_added) - for x in test_bit_event: - print("testing {}: {} == {}".format(x, test_bit_event[x], data_in_db[x])) - self.assertTrue(test_bit_event[x] == data_in_db[x]) + data_in_db = get_data("notes", id_added) + for x in test_note: + print("testing {}: {} == {}".format(x, test_note[x], data_in_db[x])) + self.assertTrue(test_note[x] == data_in_db[x])