Pass question directly for survey taker

This commit is contained in:
Joe Fiorini 2015-08-12 11:16:43 -04:00
parent dd143c1c71
commit 524d0da0de
4 changed files with 42 additions and 11 deletions

View File

@ -9,12 +9,13 @@
* })
*
*/
export default
function FinalizeQuestion(GetBasePath, Rest, Wait, ProcessErrors, $compile, Empty, $filter) {
function FinalizeQuestion(GetBasePath, Rest, Wait, ProcessErrors, $compile, Empty, $filter, questionScope) {
return function(params) {
var scope = params.scope,
question = params.question,
var question = params.question,
scope = questionScope(question, params.scope),
index = params.index,
required,
element,
@ -80,7 +81,7 @@ export default
html += '<div class="row">';
html += '<div class="col-xs-8">';
html += '<div class="SurveyControls-selectWrapper">';
html += '<survey-question type="' + question.type + '" index="' + question.index + '" survey-questions="survey_questions" ng-required="' + question.required + '" ng-model="' + defaultScopePropertyName + '"></survey-question>';
html += '<survey-question type="' + question.type + '" question="question" ng-required="' + question.required + '" ng-model="' + defaultScopePropertyName + '"></survey-question>';
html += '</div>';
html += '</div>';
html += '</div>';
@ -132,8 +133,8 @@ export default
element = angular.element(document.getElementById('question_'+question.index));
// // element.html(html);
//element.css('opacity', 0.7);
$compile(element)(scope);
// var questionScope = scope.$new;
$('#add_question_btn').show();
$('#add_question_btn').removeAttr('disabled');
@ -187,5 +188,6 @@ FinalizeQuestion.$inject =
'ProcessErrors',
'$compile',
'Empty',
'$filter'
'$filter',
'questionScope'
];

View File

@ -1,7 +1,9 @@
import questionScope from './question-scope.factory';
import finalize from './finalize.factory';
import edit from './edit.factory';
export default
angular.module('jobTemplates.surveyMaker.questions', [])
.factory('finalizeQuestion', finalize)
.factory('questionScope', questionScope)
.factory('editQuestion', edit);

View File

@ -0,0 +1,25 @@
var typesSupportingIsolatedScope =
[ 'multiselect',
'multiplechoice'
];
function typeSupportsIsolatedScope(type) {
return _.include(typesSupportingIsolatedScope, type);
}
function getIsolatedScope(question, oldScope) {
var newScope = oldScope.$new();
newScope.question = question;
return newScope;
}
export default
function() {
return function(question, oldScope) {
if (typeSupportsIsolatedScope(question.type)) {
return getIsolatedScope(question, oldScope);
} else {
return oldScope;
}
};
}

View File

@ -24,12 +24,13 @@ function findQuestionByIndex(questions, index) {
}
function link(scope, element, attrs) {
var question = findQuestionByIndex(scope.surveyQuestions, Number(attrs.index));
scope.question = question;
if (!scope.question) {
scope.question = findQuestionByIndex(scope.surveyQuestions, Number(attrs.index));
}
if (!_.isUndefined(question.choices)) {
scope.choices = question.choices.split('\n');
if (!_.isUndefined(scope.question.choices)) {
scope.choices = scope.question.choices.split('\n');
}
}
@ -38,8 +39,9 @@ export default
var directive =
{ restrict: 'E',
scope:
{ surveyQuestions: '=',
{ question: '=',
selectedValue: '=ngModel',
surveyQuestions: '=',
isRequired: '@ngRequired'
},
templateUrl: templateUrl('job-templates/survey-maker/render/survey-question'),