diff --git a/app/config.xml b/app/config.xml index f03fa450..852cadb6 100644 --- a/app/config.xml +++ b/app/config.xml @@ -1,10 +1,5 @@ - - - - - - + EgoWeb Mobile A sample Apache Cordova application that responds to the deviceready event. @@ -13,31 +8,17 @@ Apache Cordova Team - - - - - - - - - - + + + + + + - - - - - - - - - NSAllowsArbitraryLoads - YES - - - - - + + + + + + - diff --git a/app/plugins/android.json b/app/plugins/android.json index a1024f02..4909a9a9 100644 --- a/app/plugins/android.json +++ b/app/plugins/android.json @@ -9,6 +9,9 @@ "installed_plugins": { "cordova-plugin-statusbar": { "PACKAGE_NAME": "com.rand.egowebmoble" + }, + "cordova-plugin-whitelist": { + "PACKAGE_NAME": "com.rand.egowebmoble" } }, "dependent_plugins": {} diff --git a/app/plugins/fetch.json b/app/plugins/fetch.json index 3d854db5..20c454e2 100644 --- a/app/plugins/fetch.json +++ b/app/plugins/fetch.json @@ -6,5 +6,13 @@ }, "is_top_level": true, "variables": {} + }, + "cordova-plugin-whitelist": { + "source": { + "type": "registry", + "id": "cordova-plugin-whitelist@1.3.2" + }, + "is_top_level": true, + "variables": {} } } \ No newline at end of file diff --git a/app/www/css/mobile.css b/app/www/css/mobile.css index dd34fbc9..a26f5345 100644 --- a/app/www/css/mobile.css +++ b/app/www/css/mobile.css @@ -20,6 +20,10 @@ -webkit-tap-highlight-color: rgba(0,0,0,0); /* make transparent link selection, adjust last value opacity 0 to 1.0 */ } +#main_buttons +{ + display: none; +} .admin{ border-radius: 5px; background-color: #e58320; diff --git a/app/www/js/interview.js b/app/www/js/interview.js index fe2ab182..725fdc34 100644 --- a/app/www/js/interview.js +++ b/app/www/js/interview.js @@ -407,6 +407,11 @@ app.controller('interviewController', ['$scope', '$log', '$routeParams','$sce', // check to make sure the form is completely valid deleteAlter.getAlters().then(function(data){ alters = JSON.parse(data); + for(k in alters){ + if (alters[k].ID == alterId ){ + delete alters[k]; + } + } $route.reload(); }); }; @@ -1034,11 +1039,16 @@ function buildQuestions(pageNumber, interviewId){ page[i] = new Object; } + // first pass at ego questions if(interviewId != null){ ego_question_list = new Object; network_question_list = new Object; prompt = ""; + for(j in ego_questions){ + if (ego_questions[j].TITLE.indexOf("VS3.") >= 0){ + break; + } ego_questions[j].array_id = ego_questions[j].ID; if(Object.keys(ego_question_list).length > 0 && (parseInt(ego_questions[j].ASKINGSTYLELIST) != 1 || prompt != ego_questions[j].PROMPT.replace(/<\/*[^>]*>/gm, '').replace(/(\r\n|\n|\r)/gm,""))){ if(pageNumber == i){ @@ -1445,6 +1455,74 @@ function buildQuestions(pageNumber, interviewId){ page[i] = new Object; } + // second ego round - DSM 032217 + var second_ego_q = 0; + for(j in ego_questions){ + + if (ego_questions[j].TITLE.indexOf("VS3.") >= 0){ + second_ego_q++; + } + + if (second_ego_q < 1){ + continue; + } + + ego_questions[j].array_id = ego_questions[j].ID; + if(Object.keys(ego_question_list).length > 0 && (parseInt(ego_questions[j].ASKINGSTYLELIST) != 1 || prompt != ego_questions[j].PROMPT.replace(/<\/*[^>]*>/gm, '').replace(/(\r\n|\n|\r)/gm,""))){ + if(pageNumber == i){ + page[i] = ego_question_list; + return page[i]; + } + ego_question_list = new Object; + prompt = ""; + i++; + page[i] = new Object; + } + + if(evalExpression(ego_questions[j].ANSWERREASONEXPRESSIONID) != true){ + saveSkip(interviewId, ego_questions[j].ID, "", "", ego_questions[j].ID); + continue; + } + + if(ego_questions[j].PREFACE != ""){ + if(pageNumber == i){ + preface = new Object; + preface.ID = ego_questions[j].ID; + preface.ANSWERTYPE = "PREFACE"; + preface.SUBJECTTYPE = "PREFACE"; + preface.PROMPT = ego_questions[j].PREFACE; + page[i][0] = preface; + return page[i]; + } + i++; + page[i] = new Object; + } + if(parseInt(ego_questions[j].ASKINGSTYLELIST) == 1){ + //console.log(prompt + ":" +ego_questions[j].PROMPT); + if(prompt == "" || prompt == ego_questions[j].PROMPT.replace(/<\/*[^>]*>/gm, '').replace(/(\r\n|\n|\r)/gm,"")){ + //console.log('list type question'); + prompt = ego_questions[j].PROMPT.replace(/<\/*[^>]*>/gm, '').replace(/(\r\n|\n|\r)/gm,""); + ego_question_list[parseInt(ego_questions[j].ORDERING) + 1] = ego_questions[j]; + } + }else{ + if(pageNumber == i){ + page[i][ego_questions[j].ID] = ego_questions[j]; + return page[i]; + } + i++; + page[i] = new Object; + } + } + + if(Object.keys(ego_question_list).length > 0){ + if(pageNumber == i){ + page[i] = ego_question_list; + return page[i]; + } + i++; + page[i] = new Object; + } + conclusion = new Object; conclusion.ANSWERTYPE = "CONCLUSION"; conclusion.PROMPT = study.CONCLUSION; @@ -2436,7 +2514,17 @@ function buildNav(pageNumber, scope){ } var prompt = ""; var ego_question_list = ''; - for(j in ego_questions){ + var skip_ego_questions = 0; + for(j in ego_questions){ + if (ego_questions[j].TITLE.indexOf("VS3.") >= 0) + skip_ego_questions = j; + } + + // first pass at ego questions + for(j in ego_questions){ + if (ego_questions[j].TITLE.indexOf("VS3.") >= 0){ + break; + } if(evalExpression(ego_questions[j].ANSWERREASONEXPRESSIONID, interviewId) != true) continue; @@ -2652,6 +2740,47 @@ function buildNav(pageNumber, scope){ i++; } + // second ego round - DSM 032217 + var second_ego_nav = 0; + for(j in ego_questions){ + + if (ego_questions[j].TITLE.indexOf("VS3.") >= 0){ + second_ego_nav++; + } + + if (second_ego_nav < 1){ + continue; + } + + if(evalExpression(ego_questions[j].ANSWERREASONEXPRESSIONID, interviewId) != true) + continue; + + if((parseInt(ego_questions[j].ASKINGSTYLELIST) != 1 || prompt != ego_questions[j].PROMPT.replace(/<\/*[^>]*>/gm, '').replace(/(\r\n|\n|\r)/gm,"")) && ego_question_list){ + pages[i] = this.checkPage(i, pageNumber, ego_question_list.TITLE); + prompt = ""; + ego_question_list = ''; + i++; + } + if(ego_questions[j].PREFACE != ""){ + pages[i] = this.checkPage(i, pageNumber, "PREFACE"); + i++; + } + if(parseInt(ego_questions[j].ASKINGSTYLELIST) == 1){ + prompt = ego_questions[j].PROMPT.replace(/<\/*[^>]*>/gm, '').replace(/(\r\n|\n|\r)/gm,""); + if(ego_question_list == '') + ego_question_list = ego_questions[j]; + }else{ + pages[i] = this.checkPage(i, pageNumber, ego_questions[j].TITLE); + i++; + } + + } + if(ego_question_list){ + pages[i] = this.checkPage(i, pageNumber, ego_question_list.TITLE); + ego_question_list = ''; + i++; + } + pages[i] = this.checkPage(i, pageNumber, "CONCLUSION"); return pages; } @@ -2713,4 +2842,4 @@ function unfixHeader(){ $(window).unbind('scroll'); $(window).unbind('touchmove'); $(window).unbind('resize'); -} \ No newline at end of file +} diff --git a/app/www/js/mobile.js b/app/www/js/mobile.js index 712e3947..915d7728 100644 --- a/app/www/js/mobile.js +++ b/app/www/js/mobile.js @@ -1,5 +1,6 @@ isGuest = 0; - +console.log("TEST"); +console.debug("boot"); app.config(function($routeProvider) { $routeProvider @@ -21,8 +22,15 @@ app.config(function($routeProvider) { }); app.factory("getStudies", function($http, $q) { + console.log(JSON.stringify(db.queryObjects("SELECT * FROM serverstudy").data)); var result = function(id) { + + console.log(JSON.stringify(db.queryObjects("SELECT * FROM serverstudy").data)); + try { + var server = db.queryRowObject("SELECT * FROM server WHERE id = " + id); + console.log("Server: " + server); + console.log("getStudies"); var url = server.ADDRESS + '/mobile/getstudies'; if (!url.match('http') && !url.match('https')) url = "http://" + url; return $.ajax({ @@ -31,17 +39,26 @@ app.factory("getStudies", function($http, $q) { data: $("#serverForm_" + server.ID).serialize(), crossDomain: true, success: function(data) { + + if (data != "error") { return data; $('#addServerButton').show(); } else { $('#status').html($('#status').html() + 'validation failed'); } + + console.log(JSON.stringify(db.queryObjects("SELECT * FROM serverstudy").data)); + }, error: function(data) { $('#status').html($('#status').html() + 'error'); } }); + + } catch(err){ + console.log(JSON.stringify(err)); + } } return { result: result @@ -76,7 +93,9 @@ app.factory("uploadData", function($http, $q) { }); app.factory("getServer", function($http, $q) { + console.log(JSON.stringify(db.queryObjects("SELECT * FROM serverstudy").data)); var result = function(address) { + console.log("getServer"); var url = address + '/mobile/check'; if (!url.match('http') && !url.match('https')) url = "http://" + url; return $.ajax({ @@ -85,7 +104,7 @@ app.factory("getServer", function($http, $q) { crossDomain: true, success: function(data) { if (data == "success") { - newId = db.queryValue("SELECT id FROM server ORDER BY id DESC"); + try { newId = db.queryValue("SELECT id FROM server ORDER BY id DESC"); if (!newId) newId = 0; server = [parseInt(newId) + 1, address]; db.catalog.getTable('server').insertRow(server); @@ -94,6 +113,9 @@ app.factory("getServer", function($http, $q) { //$('#status').html('successfully added server'); //$("#page").html($("#serverList").html()); //listServers($("#list")); + } catch(err){ + console.log(JSON.stringify(err)); + } } else { $('#status').html($('#status').html() + 'no response from server'); } @@ -186,10 +208,13 @@ app.factory("deleteAlter", function($http, $q) { app.factory("importStudy", function($http, $q) { + console.log(JSON.stringify(db.queryObjects("SELECT * FROM serverstudy").data)); var result = function(address, studyId) { loadedAudioFiles = 0; totalAudioFiles = 0; + console.log(JSON.stringify(db.queryObjects("SELECT * FROM serverstudy").data)); + var server = db.queryRowObject("SELECT * FROM server WHERE address = '" + address + "'"); $('#status').html("Importing study..."); var url = address + '/mobile/ajaxdata/' + studyId; @@ -344,6 +369,7 @@ app.factory("importStudy", function($http, $q) { console.log("alter prompts imported..."); db.commit(); //$('#status').html($('#status').html()+"DONE!"); + console.log(JSON.stringify(db.queryObjects("SELECT * FROM serverstudy").data)); } }); } @@ -354,16 +380,48 @@ app.factory("importStudy", function($http, $q) { app.controller('mainController', ['$scope', '$log', '$routeParams', '$sce', '$location', '$route', function($scope, $log, $routeParams, $sce, $location, $route) { studyList = {}; + if(loaded) + { + $("#main_buttons").show(); + $("#loading_indicator").hide(); + } $("#questionMenu").addClass("hidden"); $("#studyTitle").html(""); $("#questionTitle").html(""); + // console.log(JSON.stringify(db)); + try{ + console.log(JSON.stringify(db.queryObjects("SELECT * FROM serverstudy").data)); + } catch(err){ + console.log(JSON.stringify(err)); + } +// console.log("MainController " + db.queryObjects("SELECT * FROM study")); + console.log("Looking for storage - main Controller"); + navigator.webkitTemporaryStorage.queryUsageAndQuota( function(a, b, c){ console.log(a); + console.log(b); }); + navigator.webkitPersistentStorage.queryUsageAndQuota( function(a, b, c){ console.log(a); + console.log(b); }); + }]); app.controller('studiesController', ['$scope', '$log', '$routeParams', '$sce', '$location', '$route', function($scope, $log, $routeParams, $sce, $location, $route) { + + console.log(JSON.stringify(db.queryObjects("SELECT * FROM serverstudy").data)); $("#questionMenu").addClass("hidden"); $("#studyTitle").html("Studies"); $("#questionTitle").html(""); - $scope.studies = db.queryObjects("SELECT * FROM study").data; + try{ + $scope.studies = db.queryObjects("SELECT * FROM study").data; + } + catch(err) + { + $scope.studies = []; + console.log(err.getMessage()); + console.log(JSON.stringify(err)); + } + +// console.log("studiesController: " + JSON.stringify(db.queryObjects("SELECT * FROM study").data)); + $("#questionMenu").addClass("hidden"); + $scope.interviews = []; $scope.done = []; justUploaded = []; @@ -381,6 +439,8 @@ app.controller('studiesController', ['$scope', '$log', '$routeParams', '$sce', ' $scope.interviews[$scope.studies[k].ID] = interviews; } console.log($scope.interviews); + + $scope.startSurvey = function(studyId, intId) { study = db.queryRowObject("SELECT * FROM study WHERE id = " + studyId); if(typeof study.MULTISESSIONEGOID != "undefined" && parseInt(study.MULTISESSIONEGOID) != 0){ @@ -540,7 +600,10 @@ app.controller('adminController', ['$scope', '$log', '$routeParams', '$sce', '$l $("#studyTitle").html("Admin"); $("#questionTitle").html(""); $("#questionMenu").addClass("hidden"); - console.log(studyList); + console.log(JSON.stringify(studyList)); + console.log(JSON.stringify(db.queryObjects("SELECT * FROM serverstudy").data)); + + $scope.studyList = studyList; $scope.connect = function(id) { getStudies.result(id).then(function(data) { @@ -555,7 +618,7 @@ app.controller('adminController', ['$scope', '$log', '$routeParams', '$sce', '$l } $scope.importStudy = function(address, studyId) { importStudy.result(address, studyId).then(function(data) { - console.log("done"); + console.log("importStudy done"); for(k in studyList[address]){ studyList[address][k].localStudyId = db.queryValue("SELECT id FROM serverstudy WHERE address = '" + address + "' AND serverstudyid = " + studyList[address][k].id); } @@ -620,7 +683,8 @@ app.controller('adminController', ['$scope', '$log', '$routeParams', '$sce', '$l } } $scope.servers = db.queryObjects("SELECT * FROM server").data; - console.log($scope.servers); + console.log(JSON.stringify($scope.servers)); + console.log(JSON.stringify(db.queryObjects("SELECT * FROM serverstudy").data)); }]); baseUrl = ""; @@ -629,45 +693,71 @@ document.addEventListener("deviceready", onDeviceReady, false); function onDeviceReady() { } - +var loaded = false; $(function(){ - setTimeout(function(){ - db.catalog.setPersistenceScope(db.SCOPE_LOCAL); - tableNames = new Array(); - for(i=0; i Admin @@ -12,4 +14,8 @@ Studies Start a new interview or continue a previous interview. - \ No newline at end of file + + + + Loading... + diff --git a/app/www/studies.html b/app/www/studies.html index 78e8d7f8..6ba63ce1 100644 --- a/app/www/studies.html +++ b/app/www/studies.html @@ -15,3 +15,6 @@ + + There are no studies to show. +
Start a new interview or continue a previous interview.