fixed edit-submission-form-directive test and removed unnessecary console.log() statements

This commit is contained in:
David Baldwynn 2017-07-28 14:47:09 -07:00
parent 235a924fae
commit ed032d6db9
34 changed files with 3134 additions and 2974 deletions

View file

@ -10,9 +10,9 @@
"description": "Disable support for running subdomains. (This should be true if you are not using your own custom domain.", "description": "Disable support for running subdomains. (This should be true if you are not using your own custom domain.",
"value": "TRUE" "value": "TRUE"
}, },
"DISABLE_CLUSTER_MODE": { "ENABLE_CLUSTER_MODE": {
"description": "Disable support for running in cluster mode on pm2", "description": "ENABLE support for running in cluster mode on pm2",
"value": "TRUE" "value": "FALSE"
}, },
"NODE_ENV": { "NODE_ENV": {
"description": "Choose whether to run app in development or production mode", "description": "Choose whether to run app in development or production mode",

View file

@ -139,7 +139,6 @@ exports.read = function(req, res) {
if(!req.user || (req.form.admin.id !== req.user.id) ){ if(!req.user || (req.form.admin.id !== req.user.id) ){
readForRender(req, res); readForRender(req, res);
} else { } else {
FormSubmission.find({ form: req.form._id }).exec(function(err, _submissions) { FormSubmission.find({ form: req.form._id }).exec(function(err, _submissions) {
if (err) { if (err) {
res.status(400).send({ res.status(400).send({

View file

@ -58,6 +58,16 @@ var FormSubmissionSchema = new Schema({
} }
}); });
FormSubmissionSchema.pre('save', function (next) {
//Iterate through form fields and format data
for(var i = 0; i < this.form_fields.length; i++){
if(this.form_fields[i].fieldType === 'dropdown'){
this.form_fields[i].fieldValue = this.form_fields[i].fieldValue.option_value;
}
}
next();
});
FormSubmissionSchema.path('form_fields', { FormSubmissionSchema.path('form_fields', {
set: function(form_fields){ set: function(form_fields){
for (var i = 0; i < form_fields.length; i++) { for (var i = 0; i < form_fields.length; i++) {

2
config/env/all.js vendored
View file

@ -28,7 +28,7 @@ module.exports = {
reCAPTCHA_Key: process.env.reCAPTCHA_KEY || '', reCAPTCHA_Key: process.env.reCAPTCHA_KEY || '',
signupDisabled: (process.env.SIGNUP_DISABLED === 'TRUE'), signupDisabled: (process.env.SIGNUP_DISABLED === 'TRUE'),
disableClusterMode: (process.env.DISABLE_CLUSTER_MODE === 'TRUE'), enableClusterMode: (process.env.ENABLE_CLUSTER_MODE === 'TRUE'),
baseUrl: '', baseUrl: '',
tempUserCollection: 'temporary_users', tempUserCollection: 'temporary_users',

View file

@ -9,7 +9,6 @@ module.exports = {
pass: '' pass: ''
} }
}, },
log: { log: {
// Can specify one of 'combined', 'common', 'dev', 'short', 'tiny' // Can specify one of 'combined', 'common', 'dev', 'short', 'tiny'
format: 'dev', format: 'dev',

View file

@ -7,7 +7,7 @@ module.exports = {
}, },
port: process.env.PORT || 5000, port: process.env.PORT || 5000,
socketUrl: process.env.SOCKET_URL || 'ws.tellform.com', socketUrl: process.env.SOCKET_URL || 'ws.tellform.com',
socketPort: process.env.SOCKET_PORT || null, socketPort: process.env.SOCKET_PORT || 20523,
log: { log: {
// Can specify one of 'combined', 'common', 'dev', 'short', 'tiny' // Can specify one of 'combined', 'common', 'dev', 'short', 'tiny'
format: 'combined', format: 'combined',

View file

@ -58,15 +58,12 @@ module.exports = function(db) {
if(config.socketPort){ if(config.socketPort){
app.locals.socketPort = config.socketPort; app.locals.socketPort = config.socketPort;
} else {
app.locals.socketPort = false;
} }
if(config.socketUrl){ if(config.socketUrl){
app.locals.socketUrl = config.socketUrl; app.locals.socketUrl = config.socketUrl;
} else {
app.locals.socketUrl = false;
} }
app.locals.bowerJSFiles = config.getBowerJSAssets(); app.locals.bowerJSFiles = config.getBowerJSAssets();
app.locals.bowerCssFiles = config.getBowerCSSAssets(); app.locals.bowerCssFiles = config.getBowerCSSAssets();
app.locals.bowerOtherFiles = config.getBowerOtherAssets(); app.locals.bowerOtherFiles = config.getBowerOtherAssets();

View file

@ -11,7 +11,7 @@ module.exports = function (app, db) {
var server = http.createServer(app); var server = http.createServer(app);
var io = socketio(config.socketPort, { transports: ['websocket', 'polling'] }); var io = socketio(config.socketPort, { transports: ['websocket', 'polling'] });
if(config.disableClusterMode){ if(config.enableClusterMode){
var redis = require('socket.io-redis'); var redis = require('socket.io-redis');
io.adapter(redis( process.env.REDIS_URL || { host: process.env.REDIS_DB_PORT_6379_TCP_ADDR || '127.0.0.1' , port: process.env.REDIS_DB_PORT_6379_TCP_PORT || 6379 })); io.adapter(redis( process.env.REDIS_URL || { host: process.env.REDIS_DB_PORT_6379_TCP_ADDR || '127.0.0.1' , port: process.env.REDIS_DB_PORT_6379_TCP_PORT || 6379 }));
} }

View file

@ -217,6 +217,14 @@ module.exports = function(grunt) {
unit: { unit: {
configFile: 'karma.conf.js', configFile: 'karma.conf.js',
singleRun: true singleRun: true
},
debug: {
configFile: 'karma.conf.js',
browserConsoleLogOptions: {
level: 'log',
terminal: true
},
singleRun: true
} }
}, },
protractor: { protractor: {
@ -367,4 +375,6 @@ module.exports = function(grunt) {
grunt.registerTask('test', ['lint:tests', 'test:server', 'test:client']); grunt.registerTask('test', ['lint:tests', 'test:server', 'test:client']);
grunt.registerTask('test:server', ['lint:tests', 'env:test', 'mochaTest']); grunt.registerTask('test:server', ['lint:tests', 'env:test', 'mochaTest']);
grunt.registerTask('test:client', ['lint:tests', 'html2js:main', 'html2js:forms', 'env:test', 'karma:unit']); grunt.registerTask('test:client', ['lint:tests', 'html2js:main', 'html2js:forms', 'env:test', 'karma:unit']);
grunt.registerTask('testdebug', ['env:test', 'karma:debug']);
}; };

View file

@ -126,7 +126,7 @@
"karma-jasmine-html-reporter": "^0.1.8", "karma-jasmine-html-reporter": "^0.1.8",
"karma-mocha-reporter": "^1.1.1", "karma-mocha-reporter": "^1.1.1",
"karma-ng-html2js-preprocessor": "^0.2.0", "karma-ng-html2js-preprocessor": "^0.2.0",
"karma-phantomjs-launcher": "~0.2.1", "karma-phantomjs-launcher": "^1.0.4",
"mailosaur": "^1.0.1", "mailosaur": "^1.0.1",
"mocha": "^3.1.2", "mocha": "^3.1.2",
"mocha-lcov-reporter": "^1.0.0", "mocha-lcov-reporter": "^1.0.0",

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -44,10 +44,11 @@
socket: null socket: null
}; };
console.log($window.socketUrl);
var url = ''; var url = '';
if($window.socketUrl && $window.socketPort){ if($window.socketUrl && $window.socketPort){
url = window.location.protocol + '//' + $window.socketUrl + ':' + $window.socketPort; url = window.location.protocol + '//' + $window.socketUrl + ':' + $window.socketPort;
} else if ($window.socketUrl && !$window.socketPort){ } else if ($window.socketUrl){
url = window.location.protocol + '//' + $window.socketUrl; url = window.location.protocol + '//' + $window.socketUrl;
} else if ($window.socketPort){ } else if ($window.socketPort){
url = window.location.protocol + '//' + window.location.hostname + ':' + $window.socketPort; url = window.location.protocol + '//' + window.location.hostname + ':' + $window.socketPort;
@ -65,5 +66,4 @@
Socket.$inject = ['$timeout', '$window']; Socket.$inject = ['$timeout', '$window'];
}()); }());

View file

@ -25,13 +25,11 @@ angular.module(ApplicationConfiguration.applicationModuleName).run(['$rootScope'
if(statesToIgnore.indexOf(toState.name) > 0){ if(statesToIgnore.indexOf(toState.name) > 0){
if(Auth.isAuthenticated()){ if(Auth.isAuthenticated()){
event.preventDefault(); // stop current execution event.preventDefault(); // stop current execution
//console.log('go to forms');
$state.go('listForms'); // go to listForms page $state.go('listForms'); // go to listForms page
} }
} }
//Redirect to 'signup' route if user is not authenticated //Redirect to 'signup' route if user is not authenticated
else if(toState.name !== 'access_denied' && !Auth.isAuthenticated() && toState.name !== 'submitForm'){ else if(toState.name !== 'access_denied' && !Auth.isAuthenticated() && toState.name !== 'submitForm'){
console.log('go to signup');
event.preventDefault(); // stop current execution event.preventDefault(); // stop current execution
$state.go('listForms'); // go to listForms page $state.go('listForms'); // go to listForms page
} }

View file

@ -51,10 +51,10 @@ angular.module('forms').controller('AdminFormController', ['$rootScope', '$windo
heading: $filter('translate')('CONFIGURE_TAB'), heading: $filter('translate')('CONFIGURE_TAB'),
templateName: 'configure' templateName: 'configure'
}, },
{ /*{
heading: $filter('translate')('ANALYZE_TAB'), heading: $filter('translate')('ANALYZE_TAB'),
templateName: 'analyze' templateName: 'analyze'
} }*/
]; ];
$scope.setForm = function(form){ $scope.setForm = function(form){

View file

@ -28,8 +28,6 @@ angular.module('forms').directive('editFormDirective', ['$rootScope', 'FormField
}); });
}, },
start: function(e, ui) { start: function(e, ui) {
console.log(ui.item);
console.log(ui.placeholder);
} }
}; };

View file

@ -13,18 +13,16 @@ angular.module('forms').directive('editSubmissionsFormDirective', ['$rootScope',
$scope.table = { $scope.table = {
masterChecker: false, masterChecker: false,
rows: [] rows: $scope.myform.submissions
}; };
$scope.table.rows = [];
var initController = function(){ var initController = function(){
Forms.get({ Forms.get({
formId: $stateParams.formId formId: $stateParams.formId
}, function(form){ }, function(form){
$scope.myform = form; $scope.myform = form;
var defaultFormFields = _.cloneDeep($scope.myform.form_fields); $scope.table.rows = form.submissions;
/*var defaultFormFields = _.cloneDeep($scope.myform.form_fields);
var submissions = $scope.myform.submissions || []; var submissions = $scope.myform.submissions || [];
@ -41,24 +39,25 @@ angular.module('forms').directive('editSubmissionsFormDirective', ['$rootScope',
submissions[i].selected = false; submissions[i].selected = false;
} }
$scope.table.rows = submissions; $scope.table.rows = submissions;*/
});
};
/* /*
** Analytics Functions ** Analytics Functions
*/ */
$scope.AverageTimeElapsed = (function(){ $scope.AverageTimeElapsed = (function(){
var totalTime = 0; var totalTime = 0;
var numSubmissions = $scope.table.rows.length; var numSubmissions = $scope.table.rows.length;
for(i=0; i<$scope.table.rows.length; i++){ for(var i=0; i<$scope.table.rows.length; i++){
totalTime += $scope.table.rows[i].timeElapsed; totalTime += $scope.table.rows[i].timeElapsed;
} }
if(numSubmissions === 0) { if(numSubmissions === 0) {
return 0; return 0;
} }
return (totalTime/numSubmissions).toFixed(0); return (totalTime/numSubmissions).toFixed(0);
})(); })();
@ -82,7 +81,7 @@ angular.module('forms').directive('editSubmissionsFormDirective', ['$rootScope',
if($scope.myform.analytics && $scope.myform.analytics.visitors) { if($scope.myform.analytics && $scope.myform.analytics.visitors) {
var visitors = $scope.myform.analytics.visitors; var visitors = $scope.myform.analytics.visitors;
for (i = 0; i < visitors.length; i++) { for (var i = 0; i < visitors.length; i++) {
var visitor = visitors[i]; var visitor = visitors[i];
var deviceType = visitor.deviceType; var deviceType = visitor.deviceType;
@ -105,11 +104,6 @@ angular.module('forms').directive('editSubmissionsFormDirective', ['$rootScope',
return stats; return stats;
})(); })();
});
};
initController();
var updateFields = $interval(initController, 1000000); var updateFields = $interval(initController, 1000000);
$scope.$on('$destroy', function() { $scope.$on('$destroy', function() {

View file

@ -62,11 +62,14 @@
<div class="col-xs-12"> <div class="col-xs-12">
<uib-tabset active="activePill" vertical="true" type="pills"> <uib-tabset active="activePill" vertical="true" type="pills">
<uib-tab index="0" heading="{{ 'CREATE_TAB' | translate }}"> <uib-tab index="0" heading="{{ 'CREATE_TAB' | translate }}">
<edit-form-directive myform="myform"></edit-form-directive> <edit-submissions-form-directive myform="myform"></edit-submissions-form-directive>
</uib-tab> </uib-tab>
<uib-tab ng-repeat="tab in tabData" index="{{$index}}+1" heading="{{tab.heading}}"> <uib-tab ng-repeat="tab in tabData" index="{{$index}}+1" heading="{{tab.heading}}">
<div class='row' data-ng-include="'/static/modules/forms/admin/views/adminTabs/'+tab.templateName+'.html'" onload="form_url = trustSrc(formURL)"></div> <div class='row' data-ng-include="'/static/modules/forms/admin/views/adminTabs/'+tab.templateName+'.html'" onload="form_url = trustSrc(formURL)"></div>
</uib-tab> </uib-tab>
<uib-tab index="2" heading="{{ 'ANALYZE_TAB' | translate }}">
<edit-form-directive myform="myform" user="myform.admin"></edit-form-directive>
</uib-tab>
<uib-tab ng-if="tabData" heading="Share" index="{{tabData.length}}"> <uib-tab ng-if="tabData" heading="Share" index="{{tabData.length}}">
<div class="config-form"> <div class="config-form">
<div class="row"> <div class="row">

View file

@ -382,7 +382,7 @@
<div class="row"> <div class="row">
<div class="col-md-4 col-xs-12 field-input">{{ 'DISABLED' | translate }}</div> <div class="col-md-4 col-xs-12 field-input">{{ 'DISABLED' | translate }}</div>
<div class="col-md-8 col-xs-12 field-input"> <div class="col-md-8 col-xs-12 field-input">
<label class="switch-light switch-holo" ng-click="console.log('clicked switch')"> <label class="switch-light switch-holo">
<input type="checkbox" ng-model="field.disabled"> <input type="checkbox" ng-model="field.disabled">
<span> <span>
<span> {{ 'OFF' | translate }}</span> <span> {{ 'OFF' | translate }}</span>

View file

@ -57,9 +57,7 @@ angular.module('forms').directive('fieldDirective', ['$http', '$compile', '$root
}else if(type === 'rating'){ }else if(type === 'rating'){
scope.field.fieldValue = 0; scope.field.fieldValue = 0;
}else if(scope.field.fieldType === 'radio'){ }else if(scope.field.fieldType === 'radio'){
console.log(scope.field);
scope.field.fieldValue = scope.field.fieldOptions[0].option_value; scope.field.fieldValue = scope.field.fieldOptions[0].option_value;
console.log(scope.field.fieldValue);
}else if(type === 'legal'){ }else if(type === 'legal'){
scope.field.fieldValue = 'true'; scope.field.fieldValue = 'true';
$rootScope.nextField(); $rootScope.nextField();
@ -68,7 +66,6 @@ angular.module('forms').directive('fieldDirective', ['$http', '$compile', '$root
scope.setActiveField = $rootScope.setActiveField; scope.setActiveField = $rootScope.setActiveField;
console.log(scope);
//Set format only if field is a date //Set format only if field is a date
if(scope.field.fieldType === 'date'){ if(scope.field.fieldType === 'date'){
scope.dateOptions = { scope.dateOptions = {

View file

@ -219,8 +219,6 @@ angular.module('forms').directive('submitFormDirective', ['$http', 'TimeCounter'
setTimeout(function () { setTimeout(function () {
$scope.submitPromise = $http.post('/forms/' + $scope.myform._id, form) $scope.submitPromise = $http.post('/forms/' + $scope.myform._id, form)
.success(function (data, status, headers) { .success(function (data, status, headers) {
console.log('\n\n\n\n\nSUBMITTING PROMISE');
console.log(data);
$scope.myform.submitted = true; $scope.myform.submitted = true;
$scope.loading = false; $scope.loading = false;
SendVisitorData.send($scope.myform, getActiveField(), _timeElapsed); SendVisitorData.send($scope.myform, getActiveField(), _timeElapsed);

View file

@ -1,49 +1,14 @@
(function () { (function () {
'use strict'; 'use strict';
//Dummy Service for Previewing Form
function SendVisitorData() { function SendVisitorData() {
// Create a controller method for sending visitor data // Create a controller method for sending visitor data
function send(form, lastActiveIndex) { function send(form, lastActiveIndex) {
// Create a new message object
/*var visitorData = {
referrer: document.referrer,
isSubmitted: form.submitted,
formId: form._id,
lastActiveField: form.form_fields[lastActiveIndex]._id,
timeElapsed: timeElapsed,
//@TODO @FIXME: David: Need to make this get the language from the HTTP Header instead
language: window.navigator.userLanguage || window.navigator.language,
ipAddr: '',
deviceType: ''
};
$http.get('https://jsonip.com/').success(function(response) {
visitorData.ipAddr = response['ip']+'';
}).error(function(error) {
console.error('Could not get users\'s ip');
}).then(function(){
visitorData.userAgent = deviceDetector.raw;
if(deviceDetector.isTablet()) {
visitorData.deviceType = 'tablet';
}else if(deviceDetector.isMobile()){
visitorData.deviceType = 'phone';
}else {
visitorData.deviceType = 'desktop';
}
console.log(visitorData.deviceType);
Socket.emit('form-visitor-data', visitorData);
});*/
} }
function init(){ function init(){
// Make sure the Socket is connected
/*if (!Socket.socket) {
Socket.connect();
}*/
} }
var service = { var service = {
@ -54,14 +19,11 @@
return service; return service;
} }
// Create the SendVisitorData service // Create the SendVisitorData service
angular angular
.module('forms') .module('forms')
.factory('SendVisitorData', SendVisitorData); .factory('SendVisitorData', SendVisitorData);
SendVisitorData.$inject = []; SendVisitorData.$inject = [];
}()); }());

View file

@ -243,7 +243,6 @@
//Run controller functionality //Run controller functionality
scope.openDeleteModal(); scope.openDeleteModal();
console.log(scope.deleteModal);
expect(scope.deleteModal.opened).toEqual(true); expect(scope.deleteModal.opened).toEqual(true);
}); });

View file

@ -140,8 +140,6 @@
describe('Form Table Methods', function(){ describe('Form Table Methods', function(){
it('$scope.toggleAllCheckers should toggle all checkboxes in table', function(){ it('$scope.toggleAllCheckers should toggle all checkboxes in table', function(){
$httpBackend.flush();
//Run Controller Logic to Test //Run Controller Logic to Test
scope.table.masterChecker = true; scope.table.masterChecker = true;
scope.toggleAllCheckers(); scope.toggleAllCheckers();
@ -153,8 +151,6 @@
}); });
it('$scope.isAtLeastOneChecked should return true when at least one checkbox is selected', function(){ it('$scope.isAtLeastOneChecked should return true when at least one checkbox is selected', function(){
$httpBackend.flush();
scope.table.masterChecker = true; scope.table.masterChecker = true;
scope.toggleAllCheckers(); scope.toggleAllCheckers();
@ -165,8 +161,6 @@
}); });
it('$scope.deleteSelectedSubmissions should delete all submissions that are selected', function(){ it('$scope.deleteSelectedSubmissions should delete all submissions that are selected', function(){
$httpBackend.flush();
scope.table.masterChecker = true; scope.table.masterChecker = true;
scope.toggleAllCheckers(); scope.toggleAllCheckers();

View file

@ -65,7 +65,6 @@
// it('should be able to render entryPage in html', function() { // it('should be able to render entryPage in html', function() {
// scope.myStartPage = _.cloneDeep(sampleStartPage); // scope.myStartPage = _.cloneDeep(sampleStartPage);
// console.log(scope.myStartPage);
// var element = angular.element('<entry-page pageData="myStartPage" pageType="startPage"></entry-page>'); // var element = angular.element('<entry-page pageData="myStartPage" pageType="startPage"></entry-page>');
// $compile(element)(scope); // $compile(element)(scope);
// scope.$digest(); // scope.$digest();

View file

@ -12,7 +12,6 @@ angular.module('stateMock').service('$state', function($q){
}else{ }else{
throw Error('No more transitions were expected! Tried to transition to '+ stateName ); throw Error('No more transitions were expected! Tried to transition to '+ stateName );
} }
console.log('Mock transition to: ' + stateName);
var deferred = $q.defer(); var deferred = $q.defer();
var promise = deferred.promise; var promise = deferred.promise;
deferred.resolve(); deferred.resolve();