added geolocation and ip address to submission table
This commit is contained in:
parent
a66dd0fc20
commit
6ef2c500dc
|
@ -109,10 +109,10 @@ exports.createSubmission = function(req, res) {
|
||||||
|
|
||||||
if(form.pdf) submission.pdf = form.pdf;
|
if(form.pdf) submission.pdf = form.pdf;
|
||||||
|
|
||||||
|
//Save submitter's IP Address
|
||||||
if(req.headers['x-forwarded-for'] || req.connection.remoteAddress){
|
if(req.headers['x-forwarded-for'] || req.connection.remoteAddress){
|
||||||
var ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
|
var ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
|
||||||
// console.log('ip address of client is: '+ip);
|
if(ip && process.env.NODE_ENV !== 'development') submission.ipAddr = ip;
|
||||||
// if(ip) submission.ipAddr = ip;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(form.autofillPDFs){
|
if(form.autofillPDFs){
|
||||||
|
@ -148,30 +148,26 @@ exports.listSubmissions = function(req, res) {
|
||||||
console.log('listSubmissions');
|
console.log('listSubmissions');
|
||||||
// console.log(_form);
|
// console.log(_form);
|
||||||
|
|
||||||
// if(_form.submissions.length){
|
FormSubmission.find({ form: _form._id }).exec(function(err, _submissions) {
|
||||||
// res.json(_form.submissions);
|
if (err) {
|
||||||
// }else{
|
console.log(err);
|
||||||
FormSubmission.find({ form: _form._id, admin: _user._id }).populate('admin', 'form').exec(function(err, _submissions) {
|
res.status(400).send({
|
||||||
|
message: errorHandler.getErrorMessage(err)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
_form.update({ $set : { submissions: _submissions }}).exec(function(err, form){
|
||||||
if (err) {
|
if (err) {
|
||||||
console.log(err);
|
console.log(err);
|
||||||
res.status(400).send({
|
res.status(400).send({
|
||||||
message: errorHandler.getErrorMessage(err)
|
message: errorHandler.getErrorMessage(err)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
res.json(_submissions);
|
||||||
_form.update({ $set : { submissions: _submissions }}).exec(function(err, form){
|
|
||||||
if (err) {
|
|
||||||
console.log(err);
|
|
||||||
res.status(400).send({
|
|
||||||
message: errorHandler.getErrorMessage(err)
|
|
||||||
});
|
|
||||||
}
|
|
||||||
res.json(_submissions);
|
|
||||||
});
|
|
||||||
// res.status(200).send('Updated forms');
|
|
||||||
|
|
||||||
});
|
});
|
||||||
// }
|
|
||||||
|
});
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -205,12 +205,13 @@ FormSubmissionSchema.pre('save', function (next) {
|
||||||
|
|
||||||
//Check for IP Address of submitting person
|
//Check for IP Address of submitting person
|
||||||
FormSubmissionSchema.pre('save', function (next){
|
FormSubmissionSchema.pre('save', function (next){
|
||||||
|
var that = this;
|
||||||
if(this.ipAddr){
|
if(this.ipAddr){
|
||||||
if(this.isModified('ipAddr')){
|
if(this.isModified('ipAddr')){
|
||||||
satelize.satelize({ip: this.ipAddr}, function(err, geoData){
|
satelize.satelize({ip: this.ipAddr}, function(err, geoData){
|
||||||
if (err) next( new Error(err.message) );
|
if (err) next( new Error(err.message) );
|
||||||
|
|
||||||
this.geoLocation = JSON.parse(geoData);
|
that.geoLocation = JSON.parse(geoData);
|
||||||
next();
|
next();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,7 +38,7 @@ module.exports = function(app) {
|
||||||
.delete(users.requiresLogin, forms.hasAuthorization, forms.delete);
|
.delete(users.requiresLogin, forms.hasAuthorization, forms.delete);
|
||||||
|
|
||||||
app.route('/forms/:formId([a-zA-Z0-9]+)/submissions')
|
app.route('/forms/:formId([a-zA-Z0-9]+)/submissions')
|
||||||
.get(forms.listSubmissions)
|
.get(forms.listSubmissions, users.requiresLogin, forms.hasAuthorization)
|
||||||
.delete(users.requiresLogin, forms.hasAuthorization, forms.deleteSubmissions);
|
.delete(users.requiresLogin, forms.hasAuthorization, forms.deleteSubmissions);
|
||||||
|
|
||||||
// Finish by binding the form middleware
|
// Finish by binding the form middleware
|
||||||
|
|
|
@ -154,8 +154,8 @@ describe('FormSubmission Model Unit Tests:', function() {
|
||||||
|
|
||||||
should.not.exist(err);
|
should.not.exist(err);
|
||||||
should.exist(submission);
|
should.exist(submission);
|
||||||
should.exist(submission.oscarDemoNum);
|
// should.exist(submission.oscarDemoNum);
|
||||||
oscar_demo_num = submission.oscarDemoNum;
|
// oscar_demo_num = submission.oscarDemoNum;
|
||||||
|
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,208 +1,208 @@
|
||||||
// 'use strict';
|
'use strict';
|
||||||
|
|
||||||
// var should = require('should'),
|
var should = require('should'),
|
||||||
// _ = require('lodash'),
|
_ = require('lodash'),
|
||||||
// app = require('../../server'),
|
app = require('../../server'),
|
||||||
// request = require('supertest'),
|
request = require('supertest'),
|
||||||
// Session = require('supertest-session')({
|
Session = require('supertest-session')({
|
||||||
// app: app
|
app: app
|
||||||
// }),
|
}),
|
||||||
// mongoose = require('mongoose'),
|
mongoose = require('mongoose'),
|
||||||
// User = mongoose.model('User'),
|
User = mongoose.model('User'),
|
||||||
// config = require('../../config/config'),
|
config = require('../../config/config'),
|
||||||
// tmpUser = mongoose.model(config.tempUserCollection),
|
tmpUser = mongoose.model(config.tempUserCollection),
|
||||||
// agent = request.agent(app),
|
agent = request.agent(app),
|
||||||
// url = require('url');
|
url = require('url');
|
||||||
|
|
||||||
// var mailosaur = require('mailosaur')(config.mailosaur.key),
|
var mailosaur = require('mailosaur')(config.mailosaur.key),
|
||||||
// mailbox = new mailosaur.Mailbox(config.mailosaur.mailbox_id);
|
mailbox = new mailosaur.Mailbox(config.mailosaur.mailbox_id);
|
||||||
|
|
||||||
// var mandrill = require('node-mandrill')(config.mailer.options.auth.pass);
|
var mandrill = require('node-mandrill')(config.mailer.options.auth.pass);
|
||||||
|
|
||||||
// /**
|
/**
|
||||||
// * Globals
|
* Globals
|
||||||
// */
|
*/
|
||||||
// var credentials, _User, _Session;
|
var credentials, _User, _Session;
|
||||||
|
|
||||||
// /**
|
/**
|
||||||
// * Form routes tests
|
* Form routes tests
|
||||||
// */
|
*/
|
||||||
// describe('User CRUD tests', function() {
|
describe('User CRUD tests', function() {
|
||||||
// this.timeout(15000);
|
this.timeout(15000);
|
||||||
// var userSession;
|
var userSession;
|
||||||
|
|
||||||
// beforeEach(function() {
|
beforeEach(function() {
|
||||||
// //Initialize Session
|
//Initialize Session
|
||||||
// userSession = new Session();
|
userSession = new Session();
|
||||||
|
|
||||||
// // Create user credentials
|
// Create user credentials
|
||||||
// credentials = {
|
credentials = {
|
||||||
// username: 'be1e58fb@mailosaur.in',
|
username: 'be1e58fb@mailosaur.in',
|
||||||
// password: 'password'
|
password: 'password'
|
||||||
// };
|
};
|
||||||
|
|
||||||
// // Create a new user
|
Create a new user
|
||||||
// // _User = {
|
_User = {
|
||||||
// // firstName: 'Full',
|
firstName: 'Full',
|
||||||
// // lastName: 'Name',
|
lastName: 'Name',
|
||||||
// // email: credentials.username,
|
email: credentials.username,
|
||||||
// // username: credentials.username,
|
username: credentials.username,
|
||||||
// // password: credentials.password,
|
password: credentials.password,
|
||||||
// // };
|
};
|
||||||
// });
|
});
|
||||||
|
|
||||||
// // describe('Create, Verify and Activate a User', function() {
|
describe('Create, Verify and Activate a User', function() {
|
||||||
// // var username = 'testActiveAccount1.be1e58fb@mailosaur.in';
|
var username = 'testActiveAccount1.be1e58fb@mailosaur.in';
|
||||||
// // var link, _tmpUser, activateToken;
|
var link, _tmpUser, activateToken;
|
||||||
// // this.timeout(15000);
|
this.timeout(15000);
|
||||||
|
|
||||||
// // it('should be able to create a temporary (non-activated) User', function(done) {
|
it('should be able to create a temporary (non-activated) User', function(done) {
|
||||||
// // _User.email = _User.username = username;
|
_User.email = _User.username = username;
|
||||||
// // userSession.post('/auth/signup')
|
userSession.post('/auth/signup')
|
||||||
// // .send(_User)
|
.send(_User)
|
||||||
// // .expect(200, 'An email has been sent to you. Please check it to verify your account.')
|
.expect(200, 'An email has been sent to you. Please check it to verify your account.')
|
||||||
// // .end(function(FormSaveErr, FormSaveRes) {
|
.end(function(FormSaveErr, FormSaveRes) {
|
||||||
|
|
||||||
// // tmpUser.findOne({username: _User.username}, function (err, user) {
|
tmpUser.findOne({username: _User.username}, function (err, user) {
|
||||||
// // should.not.exist(err);
|
should.not.exist(err);
|
||||||
// // should.exist(user);
|
should.exist(user);
|
||||||
// // _tmpUser = user;
|
_tmpUser = user;
|
||||||
|
|
||||||
// // _User.username.should.equal(user.username);
|
_User.username.should.equal(user.username);
|
||||||
// // _User.firstName.should.equal(user.firstName);
|
_User.firstName.should.equal(user.firstName);
|
||||||
// // _User.lastName.should.equal(user.lastName);
|
_User.lastName.should.equal(user.lastName);
|
||||||
// // activateToken = user.GENERATED_VERIFYING_URL;
|
activateToken = user.GENERATED_VERIFYING_URL;
|
||||||
|
|
||||||
// // done();
|
done();
|
||||||
// // });
|
});
|
||||||
|
|
||||||
// // // // mandrill('/messages/search', {
|
// // mandrill('/messages/search', {
|
||||||
// // // // query: "subject:Confirm",
|
// // query: "subject:Confirm",
|
||||||
// // // // senders: [
|
// // senders: [
|
||||||
// // // // "test@forms.polydaic.com"
|
// // "test@forms.polydaic.com"
|
||||||
// // // // ],
|
// // ],
|
||||||
// // // // limit: 1
|
// // limit: 1
|
||||||
// // // // }, function(error, emails) {
|
// // }, function(error, emails) {
|
||||||
// // // // if (error) console.log( JSON.stringify(error) );
|
// // if (error) console.log( JSON.stringify(error) );
|
||||||
|
|
||||||
// // // // var confirmation_email = emails[0];
|
// // var confirmation_email = emails[0];
|
||||||
|
|
||||||
// // // // mandrill('/messages/content', {
|
// // mandrill('/messages/content', {
|
||||||
// // // // id: confirmation_email._id
|
// // id: confirmation_email._id
|
||||||
// // // // }, function(error, email) {
|
// // }, function(error, email) {
|
||||||
// // // // if (error) console.log( JSON.stringify(error) );
|
// // if (error) console.log( JSON.stringify(error) );
|
||||||
|
|
||||||
// // // // // console.log(email);
|
// // // console.log(email);
|
||||||
// // // // var link = _(email.text.split('\n')).reverse().value()[1];
|
// // var link = _(email.text.split('\n')).reverse().value()[1];
|
||||||
// // // // console.log(link);
|
// // console.log(link);
|
||||||
// // // // activateToken = _(url.parse(link).hash.split('/')).reverse().value()[0];
|
// // activateToken = _(url.parse(link).hash.split('/')).reverse().value()[0];
|
||||||
// // // // console.log('actual activateToken: '+ activateToken);
|
// // console.log('actual activateToken: '+ activateToken);
|
||||||
// // // // console.log('expected activateToken: ' + user.GENERATED_VERIFYING_URL);
|
// // console.log('expected activateToken: ' + user.GENERATED_VERIFYING_URL);
|
||||||
|
|
||||||
// // // // done();
|
// // done();
|
||||||
|
|
||||||
// // // // });
|
// // });
|
||||||
// // // // });
|
// // });
|
||||||
|
|
||||||
// // // // mailbox.getEmails(function(err, _emails) {
|
// // mailbox.getEmails(function(err, _emails) {
|
||||||
// // // // if(err) done(err);
|
// // if(err) done(err);
|
||||||
|
|
||||||
// // // // var emails = _emails;
|
// // var emails = _emails;
|
||||||
|
|
||||||
// // // // console.log('mailbox.getEmails:');
|
// // console.log('mailbox.getEmails:');
|
||||||
// // // // console.log(emails[0].text.links);
|
// // console.log(emails[0].text.links);
|
||||||
|
|
||||||
// // // // var link = emails[0].text.links[0].href;
|
// // var link = emails[0].text.links[0].href;
|
||||||
// // // // activateToken = _(url.parse(link).hash.split('/')).reverse().value()[0];
|
// // activateToken = _(url.parse(link).hash.split('/')).reverse().value()[0];
|
||||||
// // // // console.log('actual activateToken: '+ activateToken);
|
// // console.log('actual activateToken: '+ activateToken);
|
||||||
// // // // console.log('expected activateToken: ' + user.GENERATED_VERIFYING_URL);
|
// // console.log('expected activateToken: ' + user.GENERATED_VERIFYING_URL);
|
||||||
// // // // (activateToken).should.equal(user.GENERATED_VERIFYING_URL);
|
// // (activateToken).should.equal(user.GENERATED_VERIFYING_URL);
|
||||||
|
|
||||||
// // // // done();
|
// // done();
|
||||||
// // // // });
|
// // });
|
||||||
// // // });
|
// });
|
||||||
// // });
|
});
|
||||||
// // });
|
});
|
||||||
|
|
||||||
// // it('should be able to verify a User Account', function(done) {
|
it('should be able to verify a User Account', function(done) {
|
||||||
// // console.log('activateToken: '+activateToken);
|
console.log('activateToken: '+activateToken);
|
||||||
// // userSession.get('/auth/verify/'+activateToken)
|
userSession.get('/auth/verify/'+activateToken)
|
||||||
// // .expect(200)
|
.expect(200)
|
||||||
// // .end(function(VerifyErr, VerifyRes) {
|
.end(function(VerifyErr, VerifyRes) {
|
||||||
// // should.not.exist(VerifyErr);
|
should.not.exist(VerifyErr);
|
||||||
// // if(VerifyErr) console.log(VerifyRes.text);
|
if(VerifyErr) console.log(VerifyRes.text);
|
||||||
// // (VerifyRes.text).should.equal('User successfully verified');
|
(VerifyRes.text).should.equal('User successfully verified');
|
||||||
// // done();
|
done();
|
||||||
// // });
|
});
|
||||||
// // });
|
});
|
||||||
|
|
||||||
// // // it('should receive confirmation email after verifying a User Account', function(done) {
|
// it('should receive confirmation email after verifying a User Account', function(done) {
|
||||||
// // // mailbox.getEmails(function(err, _emails) {
|
// mailbox.getEmails(function(err, _emails) {
|
||||||
// // // if(err) throw err;
|
// if(err) throw err;
|
||||||
// // // var email = _emails[0];
|
// var email = _emails[0];
|
||||||
|
|
||||||
// // // // console.log('mailbox.getEmails:');
|
// // console.log('mailbox.getEmails:');
|
||||||
// // // console.log(email);
|
// console.log(email);
|
||||||
// // // (email.subject).should.equal('Account successfully verified!');
|
// (email.subject).should.equal('Account successfully verified!');
|
||||||
// // // done();
|
// done();
|
||||||
// // // });
|
// });
|
||||||
// // // });
|
// });
|
||||||
// // });
|
});
|
||||||
|
|
||||||
// it('should be able to login and logout a User', function (done) {
|
it('should be able to login and logout a User', function (done) {
|
||||||
// var username = 'testActiveAccount.be1e58fb@mailosaur.in';
|
var username = 'testActiveAccount.be1e58fb@mailosaur.in';
|
||||||
// // _User.email = _User.username = credentials.username = username;
|
// _User.email = _User.username = credentials.username = username;
|
||||||
// // Create a new user
|
// Create a new user
|
||||||
// var newUser = {
|
var newUser = {
|
||||||
// firstName: 'Full',
|
firstName: 'Full',
|
||||||
// lastName: 'Name',
|
lastName: 'Name',
|
||||||
// email: credentials.username,
|
email: credentials.username,
|
||||||
// username: credentials.username,
|
username: credentials.username,
|
||||||
// password: credentials.password,
|
password: credentials.password,
|
||||||
// };
|
};
|
||||||
// userSession.post('/auth/signup')
|
userSession.post('/auth/signup')
|
||||||
// .send(newUser)
|
.send(newUser)
|
||||||
// .expect(200)
|
.expect(200)
|
||||||
// .end(function(FormSaveErr, FormSaveRes) {
|
.end(function(FormSaveErr, FormSaveRes) {
|
||||||
// (FormSaveRes.text).should.equal('An email has been sent to you. Please check it to verify your account.');
|
(FormSaveRes.text).should.equal('An email has been sent to you. Please check it to verify your account.');
|
||||||
|
|
||||||
// userSession.post('/auth/signin')
|
userSession.post('/auth/signin')
|
||||||
// .send(credentials)
|
.send(credentials)
|
||||||
// .expect('Content-Type', /json/)
|
.expect('Content-Type', /json/)
|
||||||
// .expect(200)
|
.expect(200)
|
||||||
// .end(function(signinErr, signinRes) {
|
.end(function(signinErr, signinRes) {
|
||||||
|
|
||||||
// // Handle signin error
|
// Handle signin error
|
||||||
// if (signinErr) throw signinErr;
|
if (signinErr) throw signinErr;
|
||||||
|
|
||||||
// userSession.get('/auth/signout')
|
userSession.get('/auth/signout')
|
||||||
// .expect(200)
|
.expect(200)
|
||||||
// .end(function(signoutErr, signoutRes) {
|
.end(function(signoutErr, signoutRes) {
|
||||||
|
|
||||||
// // Handle signout error
|
// Handle signout error
|
||||||
// if (signoutErr) throw signoutErr;
|
if (signoutErr) throw signoutErr;
|
||||||
|
|
||||||
// (signoutRes.text).should.equal('Successfully logged out');
|
(signoutRes.text).should.equal('Successfully logged out');
|
||||||
|
|
||||||
// done();
|
done();
|
||||||
// });
|
});
|
||||||
// });
|
});
|
||||||
// });
|
});
|
||||||
// });
|
});
|
||||||
|
|
||||||
// it('should be able to reset a User\'s password');
|
it('should be able to reset a User\'s password');
|
||||||
|
|
||||||
// it('should be able to delete a User account without any problems');
|
it('should be able to delete a User account without any problems');
|
||||||
|
|
||||||
// afterEach(function(done) {
|
afterEach(function(done) {
|
||||||
// User.remove().exec(function () {
|
User.remove().exec(function () {
|
||||||
// tmpUser.remove().exec(function(){
|
tmpUser.remove().exec(function(){
|
||||||
// // mailbox.deleteAllEmail(function (err, body) {
|
// mailbox.deleteAllEmail(function (err, body) {
|
||||||
// // if(err) throw err;
|
// if(err) throw err;
|
||||||
// userSession.destroy();
|
userSession.destroy();
|
||||||
// done();
|
done();
|
||||||
// // });
|
// });
|
||||||
// });
|
});
|
||||||
// });
|
});
|
||||||
// });
|
});
|
||||||
// });
|
});
|
||||||
|
|
|
@ -55,6 +55,7 @@
|
||||||
"grunt-ng-annotate": "~1.0.1",
|
"grunt-ng-annotate": "~1.0.1",
|
||||||
"grunt-node-inspector": "~0.4.1",
|
"grunt-node-inspector": "~0.4.1",
|
||||||
"grunt-nodemon": "~0.4.0",
|
"grunt-nodemon": "~0.4.0",
|
||||||
|
"grunt-html2js": "~0.3.5",
|
||||||
"helmet": "~0.14.0",
|
"helmet": "~0.14.0",
|
||||||
"load-grunt-tasks": "~3.3.0",
|
"load-grunt-tasks": "~3.3.0",
|
||||||
"lodash": "^2.4.1",
|
"lodash": "^2.4.1",
|
||||||
|
|
|
@ -49,28 +49,6 @@ angular.module('forms').config(['$stateProvider',
|
||||||
}).state('viewForm.analyze', {
|
}).state('viewForm.analyze', {
|
||||||
url: '/analyze',
|
url: '/analyze',
|
||||||
templateUrl: 'modules/forms/views/adminTabs/analyze.html',
|
templateUrl: 'modules/forms/views/adminTabs/analyze.html',
|
||||||
resolve: {
|
|
||||||
mySubmissions: function() {
|
|
||||||
$http.get('/forms/'+$stateParams.formId+'/submissions')
|
|
||||||
.success(function(data, status, headers){
|
|
||||||
|
|
||||||
var _tmpSubFormFields,
|
|
||||||
defaultFormFields = _.cloneDeep($scope.myform.form_fields);
|
|
||||||
|
|
||||||
//Iterate through form's submissions
|
|
||||||
for(var i=0; i<data.length; i++){
|
|
||||||
_tmpSubFormFields = _.merge(defaultFormFields, data[i].form_fields);
|
|
||||||
data[i].form_fields = _tmpSubFormFields;
|
|
||||||
data[i].selected = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return data;
|
|
||||||
})
|
|
||||||
.error(function(err){
|
|
||||||
console.error('Could not fetch form submissions.\nError: '+err);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}).state('viewForm.create', {
|
}).state('viewForm.create', {
|
||||||
url: '/create',
|
url: '/create',
|
||||||
templateUrl: 'modules/forms/views/adminTabs/create.html'
|
templateUrl: 'modules/forms/views/adminTabs/create.html'
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
angular.module('forms').directive('editSubmissionsFormDirective', ['$rootScope', '$http', 'Upload', '$timeout', 'TimeCounter', 'Auth', 'FormFields', 'mySubmissions',
|
angular.module('forms').directive('editSubmissionsFormDirective', ['$rootScope', '$http', 'Upload', '$timeout', 'TimeCounter', 'Auth', 'FormFields',
|
||||||
function ($rootScope, $http, Upload, $timeout, TimeCounter, Auth, FormFields, mySubmissions) {
|
function ($rootScope, $http, Upload, $timeout, TimeCounter, Auth, FormFields) {
|
||||||
return {
|
return {
|
||||||
templateUrl: 'modules/forms/views/directiveViews/form/edit-submissions-form.client.view.html',
|
templateUrl: 'modules/forms/views/directiveViews/form/edit-submissions-form.client.view.html',
|
||||||
restrict: 'E',
|
restrict: 'E',
|
||||||
|
@ -12,7 +12,7 @@ angular.module('forms').directive('editSubmissionsFormDirective', ['$rootScope',
|
||||||
controller: function($scope){
|
controller: function($scope){
|
||||||
$scope.table = {
|
$scope.table = {
|
||||||
masterChecker: false,
|
masterChecker: false,
|
||||||
rows: mySubmissions
|
rows: []
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -54,6 +54,7 @@ angular.module('forms').directive('editSubmissionsFormDirective', ['$rootScope',
|
||||||
data[i].form_fields = _tmpSubFormFields;
|
data[i].form_fields = _tmpSubFormFields;
|
||||||
data[i].selected = false;
|
data[i].selected = false;
|
||||||
}
|
}
|
||||||
|
console.log(data);
|
||||||
|
|
||||||
$scope.table.rows = data;
|
$scope.table.rows = data;
|
||||||
|
|
||||||
|
|
|
@ -43,6 +43,12 @@
|
||||||
<th>
|
<th>
|
||||||
Time Elapsed
|
Time Elapsed
|
||||||
</th>
|
</th>
|
||||||
|
<th>
|
||||||
|
Geolacation
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
IP Address
|
||||||
|
</th>
|
||||||
<th>
|
<th>
|
||||||
Date Submitted (UTC)
|
Date Submitted (UTC)
|
||||||
</th>
|
</th>
|
||||||
|
@ -60,8 +66,8 @@
|
||||||
<th class="scope">
|
<th class="scope">
|
||||||
{{$index+1}}
|
{{$index+1}}
|
||||||
</th>
|
</th>
|
||||||
<td data-ng-repeat="(key, value) in row.form_fields">
|
<td data-ng-repeat="field in row.form_fields">
|
||||||
{{value.fieldValue}}
|
{{field.fieldValue}}
|
||||||
</td>
|
</td>
|
||||||
<td ng-if="myform.plugins.oscarhost.baseUrl">
|
<td ng-if="myform.plugins.oscarhost.baseUrl">
|
||||||
<a href="{{myform.plugins.oscarhost.baseUrl.split('ws')[0]}}demographic/demographiccontrol.jsp?demographic_no={{row.oscarDemoNum}}&displaymode=edit">
|
<a href="{{myform.plugins.oscarhost.baseUrl.split('ws')[0]}}demographic/demographiccontrol.jsp?demographic_no={{row.oscarDemoNum}}&displaymode=edit">
|
||||||
|
@ -74,6 +80,12 @@
|
||||||
<td>
|
<td>
|
||||||
{{row.timeElapsed}}
|
{{row.timeElapsed}}
|
||||||
</td>
|
</td>
|
||||||
|
<td>
|
||||||
|
{{row.geoLocation}}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{row.ipAddr}}
|
||||||
|
</td>
|
||||||
<td>
|
<td>
|
||||||
{{row.created | date:'yyyy-MM-dd HH:mm:ss'}}
|
{{row.created | date:'yyyy-MM-dd HH:mm:ss'}}
|
||||||
</td>
|
</td>
|
||||||
|
|
|
@ -86,7 +86,7 @@
|
||||||
<div class="row form-actions">
|
<div class="row form-actions">
|
||||||
<p class="text-center col-xs-4 col-xs-offset-4">
|
<p class="text-center col-xs-4 col-xs-offset-4">
|
||||||
<button ng-click="reloadForm()" class="btn btn-info" type="button">
|
<button ng-click="reloadForm()" class="btn btn-info" type="button">
|
||||||
<a style="color:white; font-size: 1.6em; text-decoration: none;" > Go back to Form</a>
|
<a style="color:white; font-size: 1.6em; text-decoration: none;"> Go back to Form</a>
|
||||||
</button>
|
</button>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Reference in a new issue