Source: public/modules/core/controllers/questionnaire.client.controller.js

'use strict';

/**
 * In the demo application, the `QuestionnaireController` is responsible for
 * making questionnaire data (as specified in the [study specification
 * document](index.html) and retrieved through the {@link
 * Angular.TrialData|TrialData} service) available on its `$scope`. All of
 * the 'hard' work of dynamically constructing questionnaires is
 * accomplished through various directives:
 *
 * - {@link Angular.questionnaireDirective|questionnaireDirective}
 * - {@link Angular.checkboxQuestionDirective|checkboxQuestionDirective}
 * - {@link Angular.dropdownQuestionDirective|dropdownQuestionDirective}
 * - {@link Angular.radioQuestionDirective|radioQuestionDirective}
 * - {@link Angular.scaleQuestionDirective|scaleQuestionDirective}
 *
 * @class Angular.QuestionnaireController
 * @see Angular.questionnaireDirective
 * @see Angular.checkboxQuestionDirective
 * @see Angular.dropdownQuestionDirective
 * @see Angular.radioQuestionDirective
 * @see Angular.scaleQuestionDirective
 */

angular.module('core').controller('QuestionnaireController', [
    '$scope',
    'TrialData',
    '$log',
    function($scope, TrialData, $log) {

        $log.debug('Loading QuestionnaireController.');

        /**
         * The `QuestionnaireController`'s `$scope` object. All properties on
         * `$scope` are available to the view.
         *
         * @name $scope
         * @namespace
         * @instance
         * @memberof Angular.QuestionnaireController
         * @type {{}}
         */

        /**
         * The questionnaire data retrieved from {@link
         * Angular.TrialData|TrialData}.
         *
         * @name questionnaireData
         * @memberof Angular.QuestionnaireController#$scope
         * @instance
         * @type {{}}
         */
        $scope.questionnaireData =
            TrialData.data.schema[TrialData.data.state.currentSlideIndex].data;
    }
]);