From 79abb6892bd15c3e0f4f1877e67fb43b02cf032c Mon Sep 17 00:00:00 2001 From: jeff wilde Date: Wed, 16 Mar 2016 15:56:57 -0600 Subject: [PATCH 01/14] Adds toggle to visibility based on a radio value MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds option to toggle a question’s visibility based on the answer to a radio question. --- dist/form-builder.min.js | 1384 ++++++++++++++++- dist/form-utils.min.js | 387 ++++- dist/form-viewer.min.js | 517 +++++- dist/i18n/en/angular-surveys.json | 2 +- dist/i18n/es/angular-surveys.json | 2 +- dist/i18n/pl/angular-surveys.json | 2 +- i18n/en/angular-surveys.json | 4 +- i18n/es/angular-surveys.json | 4 +- i18n/pl/angular-surveys.json | 5 +- .../form-question-builder.directive.js | 17 + src/builder/mw-form-question-builder.html | 27 + src/viewer/form-viewer.directive.js | 17 + src/viewer/mw-form-viewer-content.html | 2 +- 13 files changed, 2337 insertions(+), 33 deletions(-) diff --git a/dist/form-builder.min.js b/dist/form-builder.min.js index 613de1b..a354df3 100644 --- a/dist/form-builder.min.js +++ b/dist/form-builder.min.js @@ -1,17 +1,1367 @@ -angular.module("mwFormBuilder",["ngSanitize","ui.bootstrap","ng-sortable","pascalprecht.translate"]).constant("MW_QUESTION_TYPES",["text","textarea","radio","checkbox","grid","priority","division","number","date","time","email","range","url"]).value("mwFormBuilderOptions",{}); -angular.module("mwFormBuilder").service("mwFormUuid",function(){function r(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}this.get=function(){return r()+r()+r()+r()+r()+r()+r()+r()}}).factory("mwFormClone",["mwFormUuid",function(r){var e={},n=[];return e.resetIds=function(t,a){if(a&&(n=[]),!(n.indexOf(t)>=0)&&(n.push(t),!t!==Object(t))){if(Array.isArray(t))return void t.forEach(e.resetIds);for(var o in t)t.hasOwnProperty(o)&&e.resetIds(t[o]);if(t.hasOwnProperty("id")){var i=r.get();t.id;t.id=i}}},e.cloneElement=function(r){var n={};return angular.copy(r,n),e.resetIds(n,!0),n},e.clonePage=function(n){var t={};angular.copy(n,t),t.id=r.get();var a=[];if(Array.isArray(n.elements))for(var o=0;o
'),e.put("mw-form-confirmation-page-builder.html",'
Strona potwierdzenia
'),e.put("mw-form-image-builder.html",'


{{ctrl.image.caption}}
'),e.put("mw-form-page-builder.html",'
Strona 1 z 3
Brak elementów
'),e.put("mw-form-page-element-builder.html",'
'),e.put("mw-form-paragraph-builder.html",'

'),e.put("mw-form-question-builder.html",'
Min: Max:

Range from to



{{ctrl.question.text}} *
{{row.label}}
SortedAvailable
{{::item.value}}
{{ctrl.question.unit}}
{{ctrl.question.unit}} z wymaganych {{ctrl.question.quantity}} {{ctrl.question.unit}}
'),e.put("mw-label.html",""),e.put("mw-question-division-builder.html",'
'),e.put("mw-question-grid-builder.html",'
'),e.put("mw-question-offered-answer-list-builder.html",'
lub
'),e.put("mw-question-priority-list-builder.html",'
')}]); -angular.module("mwFormBuilder").directive("mwQuestionPriorityListBuilder",function(){return{replace:!0,restrict:"AE",require:"^mwFormQuestionBuilder",scope:{question:"=",readOnly:"=?",options:"=?"},templateUrl:"mw-question-priority-list-builder.html",controllerAs:"ctrl",bindToController:!0,controller:["mwFormUuid",function(i){function e(i){if(i)for(var e=0;e=0&&m(a.formPage.elements,n,o),t()},a.addQuestion=function(){a.addElement("question")},a.addImage=function(){a.addElement("image")},a.addParagraph=function(){a.addElement("paragraph")},a.isElementActive=function(e){return a.activeElement==e},a.selectElement=function(e){a.activeElement=e},a.onElementReady=function(){e(function(){a.activeElement=null})},a.hoverIn=function(){a.hoverEdit=!0},a.hoverOut=function(){a.hoverEdit=!1},a.updateElementsOrderNo=t}],link:function(e,n,o,t){var r=e.ctrl;r.possiblePageFlow=t.possiblePageFlow,r.moveDown=function(){t.moveDownPage(r.formPage)},r.moveUp=function(){t.moveUpPage(r.formPage)},r.removePage=function(){t.removePage(r.formPage)},r.addPage=function(){t.addPageAfter(r.formPage)},e.$watch("ctrl.formPage.elements.length",function(e,n){e!=n&&r.updateElementsOrderNo()}),r.options=t.options,r.onImageSelection=t.onImageSelection}}}); -angular.module("mwFormBuilder").factory("FormImageBuilderId",function(){var e=0;return{next:function(){return++e}}}).directive("mwFormImageBuilder",function(){return{replace:!0,restrict:"AE",require:"^mwFormPageElementBuilder",scope:{image:"=",formObject:"=",onReady:"&",isPreview:"=?",readOnly:"=?",onImageSelection:"&"},templateUrl:"mw-form-image-builder.html",controllerAs:"ctrl",bindToController:!0,controller:["$timeout","FormImageBuilderId","mwFormUuid",function(e,r,t){var n=this;n.id=r.next(),n.formSubmitted=!1,n.save=function(){n.formSubmitted=!0,n.form.$valid&&n.onReady()},n.selectImageButtonClicked=function(){var e=n.onImageSelection();e.then(function(e){n.image.src=e})["catch"](function(){})},n.setAlign=function(e){n.image.align=e}}],link:function(e,r,t,n){e.ctrl}}}); -angular.module("mwFormBuilder").directive("mwFormConfirmationPageBuilder",function(){return{replace:!0,restrict:"AE",scope:{formObject:"=",readOnly:"=?"},templateUrl:"mw-form-confirmation-page-builder.html",controllerAs:"ctrl",bindToController:!0,controller:["$timeout",function(r){var o=this;o.hoverEdit=!1,o.hoverIn=function(){o.hoverEdit=!0},o.hoverOut=function(){o.hoverEdit=!1}}],link:function(r,o,e){}}}); -angular.module("mwFormBuilder").directive("mwFormBuilder",function(){return{replace:!0,restrict:"AE",scope:{formData:"=",readOnly:"=?",options:"=?",formStatus:"=?",onImageSelection:"&",api:"=?"},templateUrl:"mw-form-builder.html",controllerAs:"ctrl",bindToController:!0,controller:["mwFormUuid","MW_QUESTION_TYPES","mwFormBuilderOptions",function(e,a,o){function t(a){var o=null;return s.possiblePageFlow&&(o=s.possiblePageFlow[0]),{id:e.get(),number:a,name:null,description:null,pageFlow:o,elements:[]}}function n(){for(var e=0;e=0&&r(s.formData.pages,a,o),n()},s.removePage=function(e){var a=s.formData.pages.indexOf(e);s.formData.pages.splice(a,1),n()},s.api&&(s.api.reset=function(){for(var e in s.formData)s.formData.hasOwnProperty(e)&&"pages"!=e&&delete s.formData[e];s.formData.pages.length=0,s.formData.pages.push(t(1))})}],link:function(e,a,o){var t=e.ctrl;t.formStatus&&(t.formStatus.form=t.form),t.possiblePageFlow=[];var n={nextPage:!0,label:"mwForm.pageFlow.goToNextPage"};t.possiblePageFlow.push(n),t.isSamePageFlow=function(e,a){return e.page&&a.page&&e.page.id==a.page.id||e.formSubmit&&a.formSubmit||e.nextPage&&a.nextPage},t.updatePageFlow=function(){t.possiblePageFlow.length=1,t.formData.pages.forEach(function(e){t.possiblePageFlow.push({page:{id:e.id,number:e.number},label:"mwForm.pageFlow.goToPage"})}),t.possiblePageFlow.push({formSubmit:!0,label:"mwForm.pageFlow.submitForm"}),t.formData.pages.forEach(function(e){t.possiblePageFlow.forEach(function(a){e.pageFlow?t.isSamePageFlow(a,e.pageFlow)&&(e.pageFlow=a):e.pageFlow=n,e.elements.forEach(function(e){var o=e.question;o&&o.pageFlowModifier&&o.offeredAnswers.forEach(function(e){e.pageFlow&&t.isSamePageFlow(a,e.pageFlow)&&(e.pageFlow=a)})})})})},e.$watch("ctrl.formData.pages.length",function(e,a){t.updatePageFlow()})}}}); -angular.module("mwFormBuilder").directive("wdFocusMe",["$timeout","$parse",function(n,u){return{link:function(o,t,c){var i=u(c.wdFocusMe);o.$watch(i,function(u){u===!0&&n(function(){t[0].focus()})}),t.bind("blur",function(){o.$apply(i.assign(o,!1))})}}}]).factory("focus",["$timeout","$window",function(n,u){return function(o){n(function(){var n=u.document.getElementById(o);n&&n.focus()})}}]); -"use strict";angular.module("mwFormBuilder").directive("mwConfirmClick",["$window",function(i){return{restrict:"A",link:function(n,r,c){var o=c.wdConfirmClick||"Are you sure?";r.bind("click",function(r){i.confirm(o)&&n.$apply(c.confirmedAction)})}}}]); \ No newline at end of file +angular.module('mwFormBuilder', ['ngSanitize', 'ui.bootstrap','ng-sortable', 'pascalprecht.translate']) + .constant('MW_QUESTION_TYPES', ['text', 'textarea', 'radio', 'checkbox', 'grid', 'priority', 'division', 'number', 'date', 'time', 'email', 'range', 'url']) + .value('mwFormBuilderOptions', {}); + + + +angular.module('mwFormBuilder') + .service('mwFormUuid', function () { + function s4() { + return Math.floor((1 + Math.random()) * 0x10000) + .toString(16) + .substring(1); + } + this.get = function () { + return s4() + s4() + s4() + s4() + s4() + s4() + s4() + s4(); + + + }; + }).factory('mwFormClone', ["mwFormUuid", function (mwFormUuid) { + var service = {}; + var checkedObjects = []; + + service.resetIds = function (obj, root) { + if (root) { + checkedObjects = []; + } + if (checkedObjects.indexOf(obj) >= 0) { + return; + } + checkedObjects.push(obj); + if (!obj === Object(obj)) { + return; + } + + if (Array.isArray(obj)) { + obj.forEach(service.resetIds); + return; + } + + for (var property in obj) { + if (obj.hasOwnProperty(property)) { + service.resetIds(obj[property]); + } + } + + if (obj.hasOwnProperty('id')) { + var newId = mwFormUuid.get(); + var oldId = obj.id; + obj.id = newId; + } + }; + + service.cloneElement = function (pageElement) { + var element = {}; + angular.copy(pageElement, element); + service.resetIds(element, true); + return element; + }; + + service.clonePage = function (formPage) { + var _page = {}; + angular.copy(formPage, _page); + _page.id = mwFormUuid.get(); + var _elements = []; + if (Array.isArray(formPage.elements)) { + for (var i = 0; i < formPage.elements.length; i++) { + _elements.push(service.cloneElement(formPage.elements[i])); + } + } + _page.elements = _elements; + return _page; + }; + + service.cloneForm = function (form) { + var _form = {}; + angular.copy(form, _form); + var _pages = []; + if (Array.isArray(form.pages)) { + for (var i = 0; i < form.pages.length; i++) { + _pages.push(service.clonePage(form.pages[i])); + } + } + _form.pages = _pages; + return _form; + }; + + return service; + + }]); + +/* .factory('CollectionsUtil', function(){ + return{ + replaceByEqualObject: function(collection, referenceObjects, equalFn){ + return _.map(collection, function(element){ + var foundRefObj = _.find(referenceObjects, function(refObj){ + if(equalFn){ + return equalFn(element, refObj); + }else{ + return _.isEqual(element, refObj); + } + }); + if(foundRefObj){ + return foundRefObj; + }else{ + return element; + } + }); + }, + isNotEmptyArray: function(object){ + return object && $.isArray(object) && object.length > 0; + } + } + });*/ +angular.module("mwFormBuilder").run(["$templateCache", function($templateCache) {$templateCache.put("mw-form-builder.html","
"); +$templateCache.put("mw-form-confirmation-page-builder.html","
Strona potwierdzenia
"); +$templateCache.put("mw-form-image-builder.html","


{{ctrl.image.caption}}
"); +$templateCache.put("mw-form-page-builder.html","
Strona 1 z 3
Brak elementów
"); +$templateCache.put("mw-form-page-element-builder.html","
"); +$templateCache.put("mw-form-paragraph-builder.html","

"); +$templateCache.put("mw-form-question-builder.html","
Min: Max:

Range from to



{{ctrl.question.text}} *
{{row.label}}
SortedAvailable
{{::item.value}}
{{ctrl.question.unit}}
{{ctrl.question.unit}} z wymaganych {{ctrl.question.quantity}} {{ctrl.question.unit}}
"); +$templateCache.put("mw-label.html",""); +$templateCache.put("mw-question-division-builder.html","
"); +$templateCache.put("mw-question-grid-builder.html","
"); +$templateCache.put("mw-question-offered-answer-list-builder.html","
lub
"); +$templateCache.put("mw-question-priority-list-builder.html","
");}]); + +angular.module('mwFormBuilder').directive('mwQuestionPriorityListBuilder', function () { + + return { + replace: true, + restrict: 'AE', + require: '^mwFormQuestionBuilder', + scope: { + question: '=', + readOnly: '=?', + options: '=?' + }, + templateUrl: 'mw-question-priority-list-builder.html', + controllerAs: 'ctrl', + bindToController: true, + controller: ["mwFormUuid", function(mwFormUuid){ + var ctrl = this; + ctrl.isNewItem = {}; + + ctrl.addNewItem=function(noFocus){ + + var item = { + id: mwFormUuid.get(), + orderNo: ctrl.question.priorityList.length + 1, + value: null + }; + if(!noFocus){ + ctrl.isNewItem[item.id]=true; + } + + ctrl.question.priorityList.push(item); + }; + + + if(!ctrl.question.priorityList){ + ctrl.question.priorityList = []; + ctrl.addNewItem(); + } + + + sortByOrderNo(ctrl.question.priorityList); + + function updateOrderNo(array) { + if(array){ + for(var i=0; i=0){ + arrayMove(ctrl.formPage.elements, fromIndex, toIndex); + } + updateElementsOrderNo(); + }; + + ctrl.addQuestion = function(){ + ctrl.addElement('question'); + }; + + ctrl.addImage = function(){ + ctrl.addElement('image'); + }; + + ctrl.addParagraph= function(){ + ctrl.addElement('paragraph'); + }; + + ctrl.isElementActive= function(element){ + return ctrl.activeElement==element; + }; + + ctrl.selectElement = function(element){ + ctrl.activeElement=element; + }; + + ctrl.onElementReady = function(){ + $timeout(function(){ + ctrl.activeElement=null; + }); + }; + + function createEmptyElement(type,orderNo){ + return { + id: mwFormUuid.get(), + orderNo: orderNo, + type: type + }; + } + + function arrayMove(arr, fromIndex, toIndex) { + var element = arr[fromIndex]; + arr.splice(fromIndex, 1); + arr.splice(toIndex, 0, element); + } + + ctrl.hoverIn = function(){ + ctrl.hoverEdit = true; + }; + + ctrl.hoverOut = function(){ + ctrl.hoverEdit = false; + }; + + + ctrl.updateElementsOrderNo = updateElementsOrderNo; + + }], + link: function (scope, ele, attrs, formBuilderCtrl){ + var ctrl = scope.ctrl; + ctrl.possiblePageFlow = formBuilderCtrl.possiblePageFlow; + ctrl.moveDown= function(){ + + formBuilderCtrl.moveDownPage(ctrl.formPage); + }; + + ctrl.moveUp= function(){ + formBuilderCtrl.moveUpPage(ctrl.formPage); + }; + + ctrl.removePage=function(){ + formBuilderCtrl.removePage(ctrl.formPage); + }; + + ctrl.addPage=function(){ + formBuilderCtrl.addPageAfter(ctrl.formPage); + }; + + scope.$watch('ctrl.formPage.elements.length', function(newValue, oldValue){ + if(newValue!=oldValue){ + ctrl.updateElementsOrderNo(); + } + }); + ctrl.options = formBuilderCtrl.options; + ctrl.onImageSelection = formBuilderCtrl.onImageSelection; + } + }; +}); + + +angular.module('mwFormBuilder').factory("FormImageBuilderId", function(){ + var id = 0; + return { + next: function(){ + return ++id; + } + } + }) + + .directive('mwFormImageBuilder', function () { + + return { + replace: true, + restrict: 'AE', + require: '^mwFormPageElementBuilder', + scope: { + image: '=', + formObject: '=', + onReady: '&', + isPreview: '=?', + readOnly: '=?', + onImageSelection: '&' + }, + templateUrl: 'mw-form-image-builder.html', + controllerAs: 'ctrl', + bindToController: true, + controller: ["$timeout", "FormImageBuilderId", "mwFormUuid", function($timeout,FormImageBuilderId, mwFormUuid){ + var ctrl = this; + ctrl.id = FormImageBuilderId.next(); + ctrl.formSubmitted=false; + + ctrl.save=function(){ + ctrl.formSubmitted=true; + if(ctrl.form.$valid){ + ctrl.onReady(); + } + }; + + ctrl.selectImageButtonClicked = function(){ + var resultPromise = ctrl.onImageSelection(); + resultPromise.then(function(imageSrc){ + ctrl.image.src = imageSrc; + + }).catch(function(){ + + }); + }; + + ctrl.setAlign = function(align){ + ctrl.image.align = align; + } + + + }], + link: function (scope, ele, attrs, formPageElementBuilder){ + var ctrl = scope.ctrl; + } + }; +}); + +angular.module('mwFormBuilder').directive('mwFormConfirmationPageBuilder', function () { + + return { + replace: true, + restrict: 'AE', + scope: { + formObject: '=', + readOnly: '=?' + }, + templateUrl: 'mw-form-confirmation-page-builder.html', + controllerAs: 'ctrl', + bindToController: true, + controller: ["$timeout", function($timeout){ + var ctrl = this; + ctrl.hoverEdit = false; + + + ctrl.hoverIn = function(){ + ctrl.hoverEdit = true; + }; + + ctrl.hoverOut = function(){ + ctrl.hoverEdit = false; + }; + + }], + link: function (scope, ele, attrs){ + + } + }; +}); + + +angular.module('mwFormBuilder').directive('mwFormBuilder', function () { + + return { + replace: true, + restrict: 'AE', + scope: { + formData: '=', + readOnly: '=?', + options: '=?', + formStatus: '=?', + onImageSelection: '&', + api: '=?' + }, + templateUrl: 'mw-form-builder.html', + controllerAs: 'ctrl', + bindToController: true, + controller: ["mwFormUuid", "MW_QUESTION_TYPES", "mwFormBuilderOptions", function(mwFormUuid, MW_QUESTION_TYPES, mwFormBuilderOptions){ + var ctrl = this; + if(!ctrl.formData.pages || !ctrl.formData.pages.length){ + ctrl.formData.pages = []; + ctrl.formData.pages.push(createEmptyPage(1)); + } + mwFormBuilderOptions.questionTypes = MW_QUESTION_TYPES; + mwFormBuilderOptions.elementButtons = []; + mwFormBuilderOptions.additionalSelects = []; + + if(ctrl.options){ + if(ctrl.options.questionTypes){ + mwFormBuilderOptions.questionTypes = ctrl.options.questionTypes; + } + if(ctrl.options.additionalSelects){ + mwFormBuilderOptions.additionalSelects = ctrl.options.additionalSelects; + } + if(ctrl.options.elementButtons){ + mwFormBuilderOptions.elementButtons = ctrl.options.elementButtons; + } + } + + + + ctrl.addPage = function(){ + ctrl.formData.pages.push(createEmptyPage(ctrl.formData.pages.length+1)); + }; + + + function createEmptyPage(number){ + var defaultPageFlow = null; + if(ctrl.possiblePageFlow){ + defaultPageFlow = ctrl.possiblePageFlow[0]; + } + + return { + id: mwFormUuid.get(), + number: number, + name: null, + description: null, + pageFlow: defaultPageFlow, + elements: [] + }; + } + + function updatePageNumbers() { + for(var i=0; i=0){ + arrayMove(ctrl.formData.pages, fromIndex, toIndex); + } + updatePageNumbers(); + }; + + ctrl.removePage=function(page){ + var index = ctrl.formData.pages.indexOf(page); + ctrl.formData.pages.splice(index,1); + updatePageNumbers(); + }; + + function arrayMove(arr, fromIndex, toIndex) { + var element = arr[fromIndex]; + arr.splice(fromIndex, 1); + arr.splice(toIndex, 0, element); + } + + if(ctrl.api){ + ctrl.api.reset = function(){ + for (var prop in ctrl.formData) { + if (ctrl.formData.hasOwnProperty(prop) && prop != 'pages') { + delete ctrl.formData[prop]; + } + } + + ctrl.formData.pages.length=0; + ctrl.formData.pages.push(createEmptyPage(1)); + + } + } + + }], + link: function (scope, ele, attrs){ + var ctrl = scope.ctrl; + if(ctrl.formStatus){ + ctrl.formStatus.form = ctrl.form; + } + + ctrl.possiblePageFlow = []; + var defaultPageFlow = { + nextPage: true, + label: 'mwForm.pageFlow.goToNextPage' + }; + ctrl.possiblePageFlow.push(defaultPageFlow); + ctrl.isSamePageFlow = function (p1, p2){ + return (p1.page && p2.page && p1.page.id==p2.page.id) || p1.formSubmit && p2.formSubmit || p1.nextPage && p2.nextPage; + }; + + ctrl.updatePageFlow = function(){ + ctrl.possiblePageFlow.length=1; + + ctrl.formData.pages.forEach(function(page){ + + ctrl.possiblePageFlow.push({ + page:{ + id: page.id, + number: page.number + }, + label: 'mwForm.pageFlow.goToPage' + }); + }); + + ctrl.possiblePageFlow.push({ + formSubmit:true, + label: 'mwForm.pageFlow.submitForm' + }); + ctrl.formData.pages.forEach(function(page){ + ctrl.possiblePageFlow.forEach(function(pageFlow){ + if(page.pageFlow) { + if(ctrl.isSamePageFlow(pageFlow, page.pageFlow)){ + page.pageFlow = pageFlow; + } + }else{ + page.pageFlow = defaultPageFlow; + } + + page.elements.forEach(function(element){ + var question = element.question; + if(question && question.pageFlowModifier){ + question.offeredAnswers.forEach(function(answer){ + if(answer.pageFlow){ + if(ctrl.isSamePageFlow(pageFlow, answer.pageFlow)){ + answer.pageFlow = pageFlow; + } + } + }); + } + + }); + }); + }); + }; + + scope.$watch('ctrl.formData.pages.length', function(newVal, oldVal){ + ctrl.updatePageFlow(); + }); + } + }; +}); + +angular.module('mwFormBuilder') + .directive('wdFocusMe', ["$timeout", "$parse", function($timeout, $parse) { + return { + link: function(scope, element, attrs) { + var model = $parse(attrs.wdFocusMe); + scope.$watch(model, function(value) { + if(value === true) { + $timeout(function() { + element[0].focus(); + }); + } + }); + element.bind('blur', function() { + scope.$apply(model.assign(scope, false)); + }); + } + }; + }]) + .factory('focus', ["$timeout", "$window", function($timeout, $window) { + return function(id) { + $timeout(function() { + var element = $window.document.getElementById(id); + if(element) + element.focus(); + }); + }; + }]); + +'use strict'; + +angular.module('mwFormBuilder') + .directive('mwConfirmClick', ["$window", function($window){ + return { + restrict: 'A', + link: function (scope, element, attr) { + var msg = attr.wdConfirmClick || "Are you sure?"; + element.bind('click',function (event) { + if ( $window.confirm(msg) ) { + scope.$apply(attr.confirmedAction); + } + }); + } + } + }]); diff --git a/dist/form-utils.min.js b/dist/form-utils.min.js index 9b35a28..156e656 100644 --- a/dist/form-utils.min.js +++ b/dist/form-utils.min.js @@ -1,2 +1,385 @@ -angular.module("mwFormUtils",["mwFormUtils.responseUtils"]); -angular.module("mwFormUtils.responseUtils",[]).factory("mwFormResponseUtils",function(){var e={};return e.$getObjectByIdMap=function(e,t){var r={};return e?(e.forEach(function(e){var i=e;t&&(i=t(e)),r[e.id]=i}),r):r},e.$getOfferedAnswerByIdMap=function(t){return e.$getObjectByIdMap(t.offeredAnswers,function(e){return{id:e.id,value:e.value}})},e.$extractResponseForRadioOrCheckboxQuestion=function(t,r){var i=e.$getOfferedAnswerByIdMap(t),n={};return r.selectedAnswers?(n.selectedAnswers=[],r.selectedAnswers.forEach(function(e){n.selectedAnswers.push(i[e])})):r.selectedAnswer&&(n.selectedAnswer=i[r.selectedAnswer]),r.other&&(n.other=r.other),n},e.$extractResponseForPriorityQuestion=function(t,r){var i=[];if(!r.priorityList)return i;var n=e.$getObjectByIdMap(t.priorityList);return r.priorityList.forEach(function(e){var t=n[e.id];i.push({id:t.id,value:t.value,priority:e.priority})}),i},e.$extractResponseForDivisionQuestion=function(t,r){var i=[],n=e.$getObjectByIdMap(t.divisionList);return Object.getOwnPropertyNames(r).forEach(function(e){var t=r[e],o=n[e];o&&i.push({id:o.id,label:o.value,value:t})}),i},e.$extractResponseForGridQuestion=function(t,r){var i=[];if(!t.grid||!t.grid.rows)return i;var n=e.$getObjectByIdMap(t.grid.cols);return t.grid.rows.forEach(function(e){var t=r[e.id],o=null;t&&(o=n[t]);var s={row:{id:e.id,label:e.label},col:null};o&&(s.col={id:o.id,label:o.label}),i.push(s)}),i},e.extractResponse=function(t,r){return"text"==t.type||"textarea"==t.type?r.answer:"radio"==t.type||"checkbox"==t.type?e.$extractResponseForRadioOrCheckboxQuestion(t,r):"grid"==t.type?e.$extractResponseForGridQuestion(t,r):"priority"==t.type?e.$extractResponseForPriorityQuestion(t,r):"division"==t.type?e.$extractResponseForDivisionQuestion(t,r):null},e.mergeFormWithResponse=function(t,r){var i={};return angular.copy(t,i),i.pages.forEach(function(t){t.elements.forEach(function(t){var i=t.question;if(i){var n=r[i.id];n&&(i.response=e.extractResponse(i,n))}})}),i},e.getQuestionList=function(e,t){var r=[];return e.pages.forEach(function(e){e.elements.forEach(function(e){if(e.question){var i=e.question;t&&(i={},angular.copy(e.question,i)),r.push(i)}})}),r},e.getQuestionWithResponseList=function(t,r){var i=[];return e.getQuestionList(t,!0).forEach(function(t){var n=r[t.id];n?t.response=e.extractResponse(t,n):t.response=null,i.push(t)}),i},e.$$getHeader=function(e,t,r,i,n){var o="";return n&&((e||0===e)&&(o+=e+"."),(r||0===r)&&(o+=r+"."),o.length&&(o+=" ")),o+=t,i&&(o+=" ["+i+"]"),o},e.getResponseSheetHeaders=function(t,r){var i=[],n=0;return e.getQuestionList(t).forEach(function(t){n++;var o=1;if("text"==t.type||"textarea"==t.type||"radio"==t.type||"checkbox"==t.type)i.push(e.$$getHeader(n,t.text,null,null,r));else if("grid"==t.type){if(!t.grid)return;t.grid.rows.forEach(function(s){i.push(e.$$getHeader(n,t.text,o,s.label,r)),o++})}else if("priority"==t.type){if(!t.priorityList)return;t.priorityList.forEach(function(s){i.push(e.$$getHeader(n,t.text,o,s.value,r)),o++})}else if("division"==t.type){if(!t.divisionList)return;t.divisionList.forEach(function(s){i.push(e.$$getHeader(n,t.text,o,s.value,r)),o++})}}),i},e.getResponseSheetRow=function(t,r){var i="; ",n=[];if(!r)return n;for(var o=e.getQuestionWithResponseList(t,r),s=0;s
{{ctrl.confirmationMessage}} Twoja odpowiedź została zapisana
Bład. Twoja odpowiedź nie została zapisana.
Zapisywanie odpowiedzi w trakcie.
"),e.put("mw-form-question.html",'
{{ctrl.question.text}} *
{{::row.label}}
{{::ctrl.question.unit}}
{{ctrl.question.unit}} z wymaganych {{ctrl.question.quantity}} {{ctrl.question.unit}}
{{ctrl.questionResponse.answer}}
'),e.put("mw-form-viewer-content.html",'

{{ctrl.formData.name}}

{{ctrl.formData.description}}

{{ctrl.currentPage.name}}

{{pageElement.image.caption}}

'),e.put("mw-form-viewer.html","
"),e.put("mw-priority-list.html",'
SortedAvailable
{{$index+1}}. {{::ctrl.idToItem[item.id].value}}
{{::ctrl.idToItem[item.id].value}}
')}]); -angular.module("mwFormViewer").directive("mwPriorityList",function(){return{replace:!0,restrict:"AE",require:"^mwFormQuestion",scope:{question:"=",questionResponse:"=",readOnly:"=?",options:"=?"},templateUrl:"mw-priority-list.html",controllerAs:"ctrl",bindToController:!0,controller:function(){function i(i){if(i)for(var e=0;e0&&a.setCurrentPage(a.formData.pages[0])},a.resetPages=function(){a.prevPages=[],a.currentPage=null,a.nextPage=null,a.formSubmitted=!1,a.options.autoStart&&a.beginResponse()},a.resetPages(),a.goToPrevPage=function(){var e=a.prevPages.pop();a.setCurrentPage(e),a.updateNextPageBasedOnAllAnswers()},a.goToNextPage=function(){a.prevPages.push(a.currentPage),a.updateNextPageBasedOnAllAnswers(),a.setCurrentPage(a.nextPage)},a.updateNextPageBasedOnAllAnswers=function(){a.currentPage.elements.forEach(function(e){a.updateNextPageBasedOnPageElementAnswers(e)}),a.buttons.submitForm.visible=!a.nextPage,a.buttons.nextPage.visible=!!a.nextPage},a.updateNextPageBasedOnPageElementAnswers=function(e){var t=e.question;t&&t.pageFlowModifier&&t.offeredAnswers.forEach(function(e){e.pageFlow&&a.responseData[t.id].selectedAnswer==e.id&&(e.pageFlow.formSubmit?a.nextPage=null:e.pageFlow.page&&(a.nextPage=a.pageIdToPage[e.pageFlow.page.id]))})},a.onResponseChanged=function(e){a.setDefaultNextPage(),a.updateNextPageBasedOnAllAnswers()},a.api&&(a.api.reset=function(){for(var t in a.responseData)a.responseData.hasOwnProperty(t)&&delete a.responseData[t];a.buttons.submitForm.visible=!1,a.buttons.prevPage.visible=!1,a.buttons.nextPage.visible=!1,a.currentPage=null,e(a.resetPages,0)})}],link:function(e,t,a){var n=e.ctrl;n.formStatus&&(n.formStatus.form=n.form)}}}); -angular.module("mwFormViewer").factory("FormQuestionId",function(){var e=0;return{next:function(){return++e}}}).directive("mwFormQuestion",function(){return{replace:!0,restrict:"AE",require:"^mwFormViewer",scope:{question:"=",questionResponse:"=",readOnly:"=?",options:"=?",onResponseChanged:"&?"},templateUrl:"mw-form-question.html",controllerAs:"ctrl",bindToController:!0,controller:["$timeout","FormQuestionId",function(e,s){var n=this;n.id=s.next(),"radio"==n.question.type?(n.questionResponse.selectedAnswer||(n.questionResponse.selectedAnswer=null),n.questionResponse.other&&(n.isOtherAnswer=!0)):"checkbox"==n.question.type?(n.questionResponse.selectedAnswers&&n.questionResponse.selectedAnswers.length?n.selectedAnswer=!0:n.questionResponse.selectedAnswers=[],n.questionResponse.other&&(n.isOtherAnswer=!0)):"grid"==n.question.type||"division"==n.question.type&&(n.computeDivisionSum=function(){n.divisionSum=0,n.question.divisionList.forEach(function(e){0==n.questionResponse[e.id]||n.questionResponse[e.id]?n.divisionSum+=n.questionResponse[e.id]:(n.questionResponse[e.id]=null,n.divisionSum+=0)})},n.computeDivisionSum()),n.isAnswerSelected=!1,n.selectedAnswerChanged=function(){delete n.questionResponse.other,n.isOtherAnswer=!1,n.answerChanged()},n.otherAnswerRadioChanged=function(){n.isOtherAnswer&&(n.questionResponse.selectedAnswer=null),n.answerChanged()},n.otherAnswerCheckboxChanged=function(){n.isOtherAnswer||delete n.questionResponse.other,n.selectedAnswer=n.questionResponse.selectedAnswers.length||n.isOtherAnswer?!0:null,n.answerChanged()},n.toggleSelectedAnswer=function(e){-1===n.questionResponse.selectedAnswers.indexOf(e.id)?n.questionResponse.selectedAnswers.push(e.id):n.questionResponse.selectedAnswers.splice(n.questionResponse.selectedAnswers.indexOf(e.id),1),n.selectedAnswer=n.questionResponse.selectedAnswers.length||n.isOtherAnswer?!0:null,n.answerChanged()},n.answerChanged=function(){n.onResponseChanged&&n.onResponseChanged()}}],link:function(e,s,n,o){e.ctrl}}}); -angular.module("mwFormViewer").directive("mwFormConfirmationPage",function(){return{replace:!0,restrict:"AE",require:"^mwFormViewer",scope:{submitStatus:"=",confirmationMessage:"=",readOnly:"=?"},templateUrl:"mw-form-confirmation-page.html",controllerAs:"ctrl",bindToController:!0,controller:function(){},link:function(r,e,o,t){r.ctrl}}}); \ No newline at end of file +angular.module('mwFormViewer', ['ngSanitize', 'ui.bootstrap','ng-sortable', 'pascalprecht.translate']); + + + +angular.module("mwFormViewer").run(["$templateCache", function($templateCache) {$templateCache.put("mw-form-confirmation-page.html","
{{ctrl.confirmationMessage}} Twoja odpowiedź została zapisana
Bład. Twoja odpowiedź nie została zapisana.
Zapisywanie odpowiedzi w trakcie.
"); +$templateCache.put("mw-form-question.html","
{{ctrl.question.text}} *
{{::row.label}}
{{::ctrl.question.unit}}
{{ctrl.question.unit}} z wymaganych {{ctrl.question.quantity}} {{ctrl.question.unit}}
{{ctrl.questionResponse.answer}}
"); +$templateCache.put("mw-form-viewer-content.html","

{{ctrl.formData.name}}

{{ctrl.formData.description}}

{{ctrl.currentPage.name}}

{{pageElement.image.caption}}

"); +$templateCache.put("mw-form-viewer.html","
"); +$templateCache.put("mw-priority-list.html","
SortedAvailable
{{$index+1}}. {{::ctrl.idToItem[item.id].value}}
{{::ctrl.idToItem[item.id].value}}
");}]); + +angular.module('mwFormViewer') + .directive('mwPriorityList', function () { + + return { + replace: true, + restrict: 'AE', + require: '^mwFormQuestion', + scope: { + question: '=', + questionResponse: '=', + readOnly: '=?', + options: '=?' + }, + templateUrl: 'mw-priority-list.html', + controllerAs: 'ctrl', + bindToController: true, + controller: function(){ + var ctrl = this; + + if(!ctrl.questionResponse.priorityList){ + ctrl.questionResponse.priorityList=[]; + } + ctrl.idToItem = {}; + + + sortByPriority(ctrl.questionResponse.priorityList); + + ctrl.availableItems=[]; + ctrl.question.priorityList.forEach(function(item){ + ctrl.idToItem[item.id] = item; + var ordered = ctrl.questionResponse.priorityList.some(function(ordered){ + return item.id == ordered.id; + }); + if(!ordered){ + ctrl.availableItems.push({ + priority: null, + id: item.id + }); + } + }); + + ctrl.allItemsOrdered=ctrl.availableItems.length==0 ? true : null; + + + function updatePriority(array) { + if(array){ + for(var i=0; i0){ + ctrl.setCurrentPage(ctrl.formData.pages[0]); + } + }; + + ctrl.resetPages = function(){ + ctrl.prevPages=[]; + + ctrl.currentPage=null; + ctrl.nextPage = null; + ctrl.formSubmitted=false; + if(ctrl.options.autoStart){ + ctrl.beginResponse(); + } + + }; + ctrl.resetPages(); + + ctrl.goToPrevPage= function(){ + var prevPage = ctrl.prevPages.pop(); + ctrl.setCurrentPage(prevPage); + ctrl.updateNextPageBasedOnAllAnswers(); + }; + + ctrl.goToNextPage= function(){ + ctrl.prevPages.push(ctrl.currentPage); + + ctrl.updateNextPageBasedOnAllAnswers(); + + ctrl.setCurrentPage(ctrl.nextPage); + }; + + ctrl.updateNextPageBasedOnAllAnswers = function(){ + ctrl.currentPage.elements.forEach(function(element){ + ctrl.updateNextPageBasedOnPageElementAnswers(element); + }); + + ctrl.buttons.submitForm.visible=!ctrl.nextPage; + ctrl.buttons.nextPage.visible=!!ctrl.nextPage; + }; + + ctrl.updateNextPageBasedOnPageElementAnswers = function (element) { + var question = element.question; + if (question && question.pageFlowModifier) { + question.offeredAnswers.forEach(function (answer) { + if (answer.pageFlow) { + if(ctrl.responseData[question.id].selectedAnswer == answer.id){ + if (answer.pageFlow.formSubmit) { + ctrl.nextPage = null; + } else if (answer.pageFlow.page) { + ctrl.nextPage = ctrl.pageIdToPage[answer.pageFlow.page.id]; + } + } + } + }); + } + }; + + ctrl.onResponseChanged = function(pageElement){ + ctrl.setDefaultNextPage(); + ctrl.updateNextPageBasedOnAllAnswers(); + }; + + if(ctrl.api){ + ctrl.api.reset = function(){ + for (var prop in ctrl.responseData) { + if (ctrl.responseData.hasOwnProperty(prop)) { + delete ctrl.responseData[prop]; + } + } + + ctrl.buttons.submitForm.visible=false; + ctrl.buttons.prevPage.visible=false; + ctrl.buttons.nextPage.visible=false; + ctrl.currentPage=null; + $timeout(ctrl.resetPages, 0); + + } + } + + function sortPagesByNumber() { + ctrl.formData.pages.sort(function(a,b){ + return a.number - b.number; + }); + } + + }], + link: function (scope, ele, attrs){ + var ctrl = scope.ctrl; + if(ctrl.formStatus){ + ctrl.formStatus.form = ctrl.form; + } + + + } + }; +}); + + +angular.module('mwFormViewer').factory("FormQuestionId", function(){ + var id = 0; + return { + next: function(){ + return ++id; + } + } + }) + + .directive('mwFormQuestion', function () { + + return { + replace: true, + restrict: 'AE', + require: '^mwFormViewer', + scope: { + question: '=', + questionResponse: '=', + readOnly: '=?', + options: '=?', + onResponseChanged: '&?' + }, + templateUrl: 'mw-form-question.html', + controllerAs: 'ctrl', + bindToController: true, + controller: ["$timeout", "FormQuestionId", function($timeout,FormQuestionId){ + var ctrl = this; + ctrl.id = FormQuestionId.next(); + + if(ctrl.question.type=='radio'){ + if(!ctrl.questionResponse.selectedAnswer){ + ctrl.questionResponse.selectedAnswer=null; + } + if(ctrl.questionResponse.other){ + ctrl.isOtherAnswer=true; + } + + }else if(ctrl.question.type=='checkbox'){ + if(ctrl.questionResponse.selectedAnswers && ctrl.questionResponse.selectedAnswers.length){ + ctrl.selectedAnswer=true; + }else{ + ctrl.questionResponse.selectedAnswers=[]; + } + if(ctrl.questionResponse.other){ + ctrl.isOtherAnswer=true; + } + + + }else if(ctrl.question.type=='grid'){ + //if(ctrl.questionResponse.selectedAnswers){ + // + //}else{ + // ctrl.questionResponse.selectedAnswers={}; + //} + }else if(ctrl.question.type=='division'){ + + ctrl.computeDivisionSum = function(){ + ctrl.divisionSum=0; + ctrl.question.divisionList.forEach(function(item){ + + if(ctrl.questionResponse[item.id]!=0 && !ctrl.questionResponse[item.id]){ + ctrl.questionResponse[item.id]=null; + ctrl.divisionSum+=0; + }else{ + ctrl.divisionSum+=ctrl.questionResponse[item.id]; + } + }); + }; + + ctrl.computeDivisionSum(); + + + } + + + + ctrl.isAnswerSelected=false; + + ctrl.selectedAnswerChanged=function(){ + delete ctrl.questionResponse.other; + ctrl.isOtherAnswer=false; + ctrl.answerChanged(); + + }; + ctrl.otherAnswerRadioChanged= function(){ + if(ctrl.isOtherAnswer){ + ctrl.questionResponse.selectedAnswer=null; + } + ctrl.answerChanged(); + }; + + ctrl.otherAnswerCheckboxChanged= function(){ + if(!ctrl.isOtherAnswer){ + delete ctrl.questionResponse.other; + } + ctrl.selectedAnswer = ctrl.questionResponse.selectedAnswers.length||ctrl.isOtherAnswer ? true:null ; + ctrl.answerChanged(); + }; + + + ctrl.toggleSelectedAnswer= function(answer){ + if (ctrl.questionResponse.selectedAnswers.indexOf(answer.id) === -1) { + ctrl.questionResponse.selectedAnswers.push(answer.id); + } else { + ctrl.questionResponse.selectedAnswers.splice(ctrl.questionResponse.selectedAnswers.indexOf(answer.id), 1); + } + ctrl.selectedAnswer = ctrl.questionResponse.selectedAnswers.length||ctrl.isOtherAnswer ? true:null ; + + ctrl.answerChanged(); + }; + + ctrl.answerChanged = function(){ + if(ctrl.onResponseChanged){ + ctrl.onResponseChanged(); + } + } + + }], + link: function (scope, ele, attrs, mwFormViewer){ + var ctrl = scope.ctrl; + + } + }; +}); + + +angular.module('mwFormViewer') + .directive('mwFormConfirmationPage', function () { + + return { + replace: true, + restrict: 'AE', + require: '^mwFormViewer', + scope: { + submitStatus: '=', + confirmationMessage: '=', + readOnly: '=?' + }, + templateUrl: 'mw-form-confirmation-page.html', + controllerAs: 'ctrl', + bindToController: true, + controller: function(){ + var ctrl = this; + + + }, + link: function (scope, ele, attrs, mwFormViewer){ + var ctrl = scope.ctrl; + + } + }; +}); diff --git a/dist/i18n/en/angular-surveys.json b/dist/i18n/en/angular-surveys.json index 9993271..7d8bb2e 100644 --- a/dist/i18n/en/angular-surveys.json +++ b/dist/i18n/en/angular-surveys.json @@ -1 +1 @@ -{"mwForm":{"form":{"name":"Form name","name.placeholder":"Form title","description":"Description"},"buttons":{"addPage":"Add page","moveDown":"Move down","moveUp":"Move up","removePage":"Remove page","remove":"Remove","addElement":"Add element","questionReady":"Ready","next":"Next","back":"Back","submit":"Submit","begin":"Begin","fold":"Fold","unfold":"Unfold","edit":"Edit","clone":"Clone","view":"View"},"page":{"tab":{"heading":"Page {{page}} of {{allPages}}"},"elements":{"empty":"Empty page"},"pageWithNameCheckbox":"named","name":"Page name"},"pageFlow":{"afterPage":"After page {{page}}:","afterQuestionAnswer":"Go to page based on answer","goToPage":"Go to page {{page.number}}","goToNextPage":"Continue to next page","submitForm":"Submit form"},"elements":{"question":"Question","image":"Image","paragraph":"Paragraph"},"question":{"types":{"text":{"name":"Short text"},"textarea":{"name":"Long text"},"radio":{"name":"Radio"},"checkbox":{"name":"Checkboxes"},"grid":{"name":"Grid"},"priority":{"name":"Priority"},"division":{"name":"Division"},"number":{"name":"Number"},"date":{"name":"Date"},"datetime":{"name":"Datetime"},"time":{"name":"Time"},"email":{"name":"Email"},"range":{"name":"Range"},"url":{"name":"URL"}},"text":"Question text","type":"Question type","required":"Required","preview":{"text":"Short answer text","textarea":"Long answer text","otherAnswer":"Other"},"division":{"quantity":"Quantity","unit":"Unit label","assignedSumLabel":"Assigned","fromRequiredLabel":"from required"},"priority":{"sorted":"Sorted","available":"Available","clickToAddItem":"Click to add item"},"grid":{"rowLabel":"Row {{row}}","clickToAddRow":"Click to add row","columnLabel":"Column {{col}}","clickToAddColumn":"Click to add column"},"range":{"from":"Range from","to":"to"},"number":{"min":"Min","max":"Max"},"orLabel":"or ","otherLabel":"Other: ","userAnswer":"User answer","buttons":{"addOption":"Click to add option","addOther":"Add 'Other'"}},"image":{"selectImageButton":"Select image"},"paragraph":{"placeholder":"Enter paragraph text"},"confirmationPage":{"title":"Confirmation page","customMessage":"Custom confirmation message","defaultMessage":"Your response has been recorded","errorMessage":"Error! Your response has not been recorded","pendingMessage":"Your response is being saved."}}} \ No newline at end of file +{"mwForm":{"form":{"name":"Form name","name.placeholder":"Form title","description":"Description"},"buttons":{"addPage":"Add page","moveDown":"Move down","moveUp":"Move up","removePage":"Remove page","remove":"Remove","addElement":"Add element","questionReady":"Ready","next":"Next","back":"Back","submit":"Submit","begin":"Begin","fold":"Fold","unfold":"Unfold","edit":"Edit","clone":"Clone","view":"View"},"page":{"tab":{"heading":"Page {{page}} of {{allPages}}"},"elements":{"empty":"Empty page"},"pageWithNameCheckbox":"named","name":"Page name"},"pageFlow":{"afterPage":"After page {{page}}:","afterQuestionAnswer":"Go to page based on answer","goToPage":"Go to page {{page.number}}","goToNextPage":"Continue to next page","submitForm":"Submit form"},"elements":{"question":"Question","image":"Image","paragraph":"Paragraph"},"question":{"types":{"text":{"name":"Short text"},"textarea":{"name":"Long text"},"radio":{"name":"Radio"},"checkbox":{"name":"Checkboxes"},"grid":{"name":"Grid"},"priority":{"name":"Priority"},"division":{"name":"Division"},"number":{"name":"Number"},"date":{"name":"Date"},"datetime":{"name":"Datetime"},"time":{"name":"Time"},"email":{"name":"Email"},"range":{"name":"Range"},"url":{"name":"URL"}},"text":"Question text","type":"Question type","required":"Required","preview":{"text":"Short answer text","textarea":"Long answer text","otherAnswer":"Other"},"division":{"quantity":"Quantity","unit":"Unit label","assignedSumLabel":"Assigned","fromRequiredLabel":"from required"},"priority":{"sorted":"Sorted","available":"Available","clickToAddItem":"Click to add item"},"grid":{"rowLabel":"Row {{row}}","clickToAddRow":"Click to add row","columnLabel":"Column {{col}}","clickToAddColumn":"Click to add column"},"range":{"from":"Range from","to":"to"},"number":{"min":"Min","max":"Max"},"orLabel":"or ","otherLabel":"Other: ","userAnswer":"User answer","buttons":{"addOption":"Click to add option","addOther":"Add 'Other'"},"visibleIf":"Visible if ","equals":"equals"},"image":{"selectImageButton":"Select image"},"paragraph":{"placeholder":"Enter paragraph text"},"confirmationPage":{"title":"Confirmation page","customMessage":"Custom confirmation message","defaultMessage":"Your response has been recorded","errorMessage":"Error! Your response has not been recorded","pendingMessage":"Your response is being saved."}}} \ No newline at end of file diff --git a/dist/i18n/es/angular-surveys.json b/dist/i18n/es/angular-surveys.json index 77c27d0..8efeb8c 100644 --- a/dist/i18n/es/angular-surveys.json +++ b/dist/i18n/es/angular-surveys.json @@ -1 +1 @@ -{"mwForm":{"form":{"name":"Nombre del formulario","name.placeholder":"Título del formulario","description":"Descripción"},"buttons":{"addPage":"Agregar página","moveDown":"Bajar","moveUp":"Subir","removePage":"Remover página","remove":"Eliminar","addElement":"Agregar elemento","questionReady":"Listo","next":"Siguiente","back":"Atras","submit":"Enviar","begin":"Comenzar","fold":"Colapsar","unfold":"Expander","edit":"Editar","clone":"Duplicar","view":"Ver"},"page":{"tab":{"heading":"Página {{page}} de {{allPages}}"},"elements":{"empty":"Página vacia"},"pageWithNameCheckbox":"nombrar","name":"Nombre de página"},"pageFlow":{"afterPage":"Despues de página {{page}}:","afterQuestionAnswer":"Ir a página basado en respuesta","goToPage":"Ir a página {{page.number}}","goToNextPage":"Continuar a la siguiente página","submitForm":"Enviar formulario"},"elements":{"question":"Pregunta","image":"Imagen","paragraph":"Párrafo"},"question":{"types":{"text":{"name":"Texto corto"},"textarea":{"name":"Texto largo"},"radio":{"name":"Radio"},"checkbox":{"name":"Checkboxes"},"grid":{"name":"Grid"},"priority":{"name":"Prioridad"},"division":{"name":"Division"},"number":{"name":"Número"},"date":{"name":"Fecha"},"datetime":{"name":"Fecha y hora"},"time":{"name":"Hora"},"email":{"name":"Email"},"range":{"name":"Rango"},"url":{"name":"URL"}},"text":"Texto de pregunta","type":"Tipo de pregunta","required":"Requerida","preview":{"text":"Texto corto respuesta","textarea":"Texto largo respuesta","otherAnswer":"Otra"},"division":{"quantity":"Cantidad","unit":"Etiqueta de unidad","assignedSumLabel":"Asignado","fromRequiredLabel":"de lo requerido:"},"priority":{"sorted":"Ordenados","available":"Disponibles","clickToAddItem":"Click para agregar ítem"},"grid":{"rowLabel":"Fila {{row}}","clickToAddRow":"Click para agregar fila","columnLabel":"Columna {{col}}","clickToAddColumn":"Click para agregar columna"},"range":{"from":"Rango desde","to":"hasta"},"number":{"min":"Min","max":"Max"},"orLabel":"o ","otherLabel":"Otra: ","userAnswer":"Respuesta del usuario","buttons":{"addOption":"Click para agregar opción","addOther":"Agregar 'Otra'"}},"image":{"selectImageButton":"Seleccionar imagen"},"paragraph":{"placeholder":"Digite texto de párrafo"},"confirmationPage":{"title":"Página de confirmación","customMessage":"Mensaje de confirmación personalizada","defaultMessage":"Tus respuestas han sido guardadas","errorMessage":"Error! Tus respuestas no han sido guardadas","pendingMessage":"Tus respuestas estan siendo guardadas."}}} \ No newline at end of file +{"mwForm":{"form":{"name":"Nombre del formulario","name.placeholder":"Título del formulario","description":"Descripción"},"buttons":{"addPage":"Agregar página","moveDown":"Bajar","moveUp":"Subir","removePage":"Remover página","remove":"Eliminar","addElement":"Agregar elemento","questionReady":"Listo","next":"Siguiente","back":"Atras","submit":"Enviar","begin":"Comenzar","fold":"Colapsar","unfold":"Expander","edit":"Editar","clone":"Duplicar","view":"Ver"},"page":{"tab":{"heading":"Página {{page}} de {{allPages}}"},"elements":{"empty":"Página vacia"},"pageWithNameCheckbox":"nombrar","name":"Nombre de página"},"pageFlow":{"afterPage":"Despues de página {{page}}:","afterQuestionAnswer":"Ir a página basado en respuesta","goToPage":"Ir a página {{page.number}}","goToNextPage":"Continuar a la siguiente página","submitForm":"Enviar formulario"},"elements":{"question":"Pregunta","image":"Imagen","paragraph":"Párrafo"},"question":{"types":{"text":{"name":"Texto corto"},"textarea":{"name":"Texto largo"},"radio":{"name":"Radio"},"checkbox":{"name":"Checkboxes"},"grid":{"name":"Grid"},"priority":{"name":"Prioridad"},"division":{"name":"Division"},"number":{"name":"Número"},"date":{"name":"Fecha"},"datetime":{"name":"Fecha y hora"},"time":{"name":"Hora"},"email":{"name":"Email"},"range":{"name":"Rango"},"url":{"name":"URL"}},"text":"Texto de pregunta","type":"Tipo de pregunta","required":"Requerida","preview":{"text":"Texto corto respuesta","textarea":"Texto largo respuesta","otherAnswer":"Otra"},"division":{"quantity":"Cantidad","unit":"Etiqueta de unidad","assignedSumLabel":"Asignado","fromRequiredLabel":"de lo requerido:"},"priority":{"sorted":"Ordenados","available":"Disponibles","clickToAddItem":"Click para agregar ítem"},"grid":{"rowLabel":"Fila {{row}}","clickToAddRow":"Click para agregar fila","columnLabel":"Columna {{col}}","clickToAddColumn":"Click para agregar columna"},"range":{"from":"Rango desde","to":"hasta"},"number":{"min":"Min","max":"Max"},"orLabel":"o ","otherLabel":"Otra: ","userAnswer":"Respuesta del usuario","buttons":{"addOption":"Click para agregar opción","addOther":"Agregar 'Otra'"},"visibleIf":"visible si","equals":"es igual"},"image":{"selectImageButton":"Seleccionar imagen"},"paragraph":{"placeholder":"Digite texto de párrafo"},"confirmationPage":{"title":"Página de confirmación","customMessage":"Mensaje de confirmación personalizada","defaultMessage":"Tus respuestas han sido guardadas","errorMessage":"Error! Tus respuestas no han sido guardadas","pendingMessage":"Tus respuestas estan siendo guardadas."}}} \ No newline at end of file diff --git a/dist/i18n/pl/angular-surveys.json b/dist/i18n/pl/angular-surveys.json index 5d15473..880fc44 100644 --- a/dist/i18n/pl/angular-surveys.json +++ b/dist/i18n/pl/angular-surveys.json @@ -1 +1 @@ -{"mwForm":{"form":{"name":"Nazwa ankiety","name.placeholder":"Podaj nazwę ankiety","description":"Opis"},"buttons":{"addPage":"Dodaj stronę","moveDown":"Przenieś w dół","moveUp":"Przenieś w górę","removePage":"Usuń stronę","remove":"Usuń","addElement":"Dodaj element","questionReady":"Gotowe","next":"Dalej","back":"Wstecz","submit":"Prześlij","begin":"Rozpocznij","fold":"Zwiń","unfold":"Rozwiń","edit":"Edytuj","clone":"Klonuj","view":"Wyświetl"},"page":{"tab":{"heading":"Strona {{page}} z {{allPages}}"},"elements":{"empty":"Brak elementów"},"pageWithNameCheckbox":"nazwana","name":"Nazwa strony"},"pageFlow":{"afterPage":"Po stronie {{page}}","afterQuestionAnswer":"Przejdź do strony w oparciu o odpowiedź","goToPage":"Przejdź do strony numer {{page.number}}","goToNextPage":"Przejdz do następnej strony","submitForm":"Prześlij formularz"},"elements":{"question":"Pytanie/Polecenie","image":"Obraz","paragraph":"Paragraf"},"question":{"types":{"text":{"name":"Tekst"},"textarea":{"name":"Długi tekst"},"radio":{"name":"Jednokrotny wybór"},"checkbox":{"name":"Wielokrotny wybór"},"grid":{"name":"Siatka"},"priority":{"name":"Lista priorytetowa"},"division":{"name":"Podział"},"number":{"name":"Liczba"},"date":{"name":"Data"},"datetime":{"name":"Data i godzina"},"time":{"name":"Godzina"},"email":{"name":"Email"},"range":{"name":"Zakres"},"url":{"name":"Adres URL"}},"text":"Treść pytania","type":"Typ pytania","required":"Pytanie wymagane","preview":{"text":"Pole na wpisanie odpowiedzi","textarea":"Pole na wpisanie odpowiedzi","otherAnswer":"Inna"},"division":{"quantity":"Ilość","unit":"Etykieta jednostki","assignedSumLabel":"Przydzielono","fromRequiredLabel":"z wymaganych"},"priority":{"sorted":"Uszeregowane","available":"Pozostałe","clickToAddItem":"Kliknij aby dodać pozycję"},"grid":{"rowLabel":"Etykieta wiersza {{row}}","clickToAddRow":"Kliknij aby dodać wiersz","columnLabel":"Etykieta kolumny {{col}}","clickToAddColumn":"Kliknij aby dodać kolumnę"},"range":{"from":"Zakres od","to":"do"},"number":{"min":"Min","max":"Max"},"orLabel":"lub ","otherLabel":"Inna: ","userAnswer":"Odpowiedź użytkownika","buttons":{"addOption":"Kliknij aby dodać opcję","addOther":"Dodaj \"Inne\""}},"image":{"selectImageButton":"Wybierz obraz"},"paragraph":{"placeholder":"Wpisz treść paragrafu"},"confirmationPage":{"title":"Strona potwierdzenia","customMessage":"Niestandardowa wiadomość z potwierdzeniem","defaultMessage":"Twoja odpowiedź została zapisana","errorMessage":"Błąd. Twoja odpowiedź nie została zapisana.","pendingMessage":"Zapisywanie odpowiedzi w trakcie."}}} \ No newline at end of file +{"mwForm":{"form":{"name":"Nazwa ankiety","name.placeholder":"Podaj nazwę ankiety","description":"Opis"},"buttons":{"addPage":"Dodaj stronę","moveDown":"Przenieś w dół","moveUp":"Przenieś w górę","removePage":"Usuń stronę","remove":"Usuń","addElement":"Dodaj element","questionReady":"Gotowe","next":"Dalej","back":"Wstecz","submit":"Prześlij","begin":"Rozpocznij","fold":"Zwiń","unfold":"Rozwiń","edit":"Edytuj","clone":"Klonuj","view":"Wyświetl"},"page":{"tab":{"heading":"Strona {{page}} z {{allPages}}"},"elements":{"empty":"Brak elementów"},"pageWithNameCheckbox":"nazwana","name":"Nazwa strony"},"pageFlow":{"afterPage":"Po stronie {{page}}","afterQuestionAnswer":"Przejdź do strony w oparciu o odpowiedź","goToPage":"Przejdź do strony numer {{page.number}}","goToNextPage":"Przejdz do następnej strony","submitForm":"Prześlij formularz"},"elements":{"question":"Pytanie/Polecenie","image":"Obraz","paragraph":"Paragraf"},"question":{"types":{"text":{"name":"Tekst"},"textarea":{"name":"Długi tekst"},"radio":{"name":"Jednokrotny wybór"},"checkbox":{"name":"Wielokrotny wybór"},"grid":{"name":"Siatka"},"priority":{"name":"Lista priorytetowa"},"division":{"name":"Podział"},"number":{"name":"Liczba"},"date":{"name":"Data"},"datetime":{"name":"Data i godzina"},"time":{"name":"Godzina"},"email":{"name":"Email"},"range":{"name":"Zakres"},"url":{"name":"Adres URL"}},"text":"Treść pytania","type":"Typ pytania","required":"Pytanie wymagane","preview":{"text":"Pole na wpisanie odpowiedzi","textarea":"Pole na wpisanie odpowiedzi","otherAnswer":"Inna"},"division":{"quantity":"Ilość","unit":"Etykieta jednostki","assignedSumLabel":"Przydzielono","fromRequiredLabel":"z wymaganych"},"priority":{"sorted":"Uszeregowane","available":"Pozostałe","clickToAddItem":"Kliknij aby dodać pozycję"},"grid":{"rowLabel":"Etykieta wiersza {{row}}","clickToAddRow":"Kliknij aby dodać wiersz","columnLabel":"Etykieta kolumny {{col}}","clickToAddColumn":"Kliknij aby dodać kolumnę"},"range":{"from":"Zakres od","to":"do"},"number":{"min":"Min","max":"Max"},"orLabel":"lub ","otherLabel":"Inna: ","userAnswer":"Odpowiedź użytkownika","buttons":{"addOption":"Kliknij aby dodać opcję","addOther":"Dodaj \"Inne\""},"visibleIf":"visível se","equals":"é igual a"},"image":{"selectImageButton":"Wybierz obraz"},"paragraph":{"placeholder":"Wpisz treść paragrafu"},"confirmationPage":{"title":"Strona potwierdzenia","customMessage":"Niestandardowa wiadomość z potwierdzeniem","defaultMessage":"Twoja odpowiedź została zapisana","errorMessage":"Błąd. Twoja odpowiedź nie została zapisana.","pendingMessage":"Zapisywanie odpowiedzi w trakcie."}}} \ No newline at end of file diff --git a/i18n/en/angular-surveys.json b/i18n/en/angular-surveys.json index 4fb93f2..b734e71 100644 --- a/i18n/en/angular-surveys.json +++ b/i18n/en/angular-surveys.json @@ -132,7 +132,9 @@ "buttons":{ "addOption":"Click to add option", "addOther":"Add 'Other'" - } + }, + "visibleIf": "Visible if ", + "equals": "equals" }, "image":{ diff --git a/i18n/es/angular-surveys.json b/i18n/es/angular-surveys.json index 44eabaa..be18628 100644 --- a/i18n/es/angular-surveys.json +++ b/i18n/es/angular-surveys.json @@ -129,7 +129,9 @@ "buttons": { "addOption": "Click para agregar opción", "addOther": "Agregar 'Otra'" - } + }, + "visibleIf": "visible si", + "equals": "es igual" }, "image": { "selectImageButton": "Seleccionar imagen" diff --git a/i18n/pl/angular-surveys.json b/i18n/pl/angular-surveys.json index 03762ba..e0eb9b0 100644 --- a/i18n/pl/angular-surveys.json +++ b/i18n/pl/angular-surveys.json @@ -132,8 +132,9 @@ "buttons":{ "addOption":"Kliknij aby dodać opcję", "addOther":"Dodaj \"Inne\"" - } - + }, + "visibleIf": "visível se", + "equals": "é igual a" }, "image":{ "selectImageButton": "Wybierz obraz" diff --git a/src/builder/form-question-builder.directive.js b/src/builder/form-question-builder.directive.js index d6efc69..fbcbf04 100644 --- a/src/builder/form-question-builder.directive.js +++ b/src/builder/form-question-builder.directive.js @@ -29,6 +29,23 @@ angular.module('mwFormBuilder').factory("FormQuestionBuilderId", function(){ ctrl.id = FormQuestionBuilderId.next(); ctrl.questionTypes = mwFormBuilderOptions.questionTypes; ctrl.formSubmitted=false; + + function getRadioQuestions(){ + var result = []; + ctrl.formObject.pages.forEach(function (page){ + page.elements.filter(function (element){ + return element.type === 'question' && element.question.type === 'radio'; + }).forEach(function (radioQuestion) { + result.push(radioQuestion.question); + }); + }); + + return result; + } + + ctrl.toggleVisibleIf = function(){ + ctrl.radioQuestions = getRadioQuestions(); + }; sortAnswersByOrderNo(); function updateAnswersOrderNo() { diff --git a/src/builder/mw-form-question-builder.html b/src/builder/mw-form-question-builder.html index dbd27c2..6fc45c0 100644 --- a/src/builder/mw-form-question-builder.html +++ b/src/builder/mw-form-question-builder.html @@ -89,6 +89,33 @@

+ +
+
+
+
+
+ +
+ + + +
+
+
+ +
diff --git a/src/viewer/form-viewer.directive.js b/src/viewer/form-viewer.directive.js index ba26a4b..c703e72 100644 --- a/src/viewer/form-viewer.directive.js +++ b/src/viewer/form-viewer.directive.js @@ -34,6 +34,23 @@ angular.module('mwFormViewer').directive('mwFormViewer', function () { ctrl.formData.pages.forEach(function(page){ ctrl.pageIdToPage[page.id]=page; }); + + ctrl.showElement = function(element){ + + if (!element.question){ + return true; + } + + if (element.question.visibleIf === undefined){ + return true; + } + + if (element.question.visibleIf === false){ + return true; + } + + return ctrl.responseData[element.question.visibleIfQuestion.id].selectedAnswer === element.question.visibleIfAnswer; + } ctrl.buttons={ diff --git a/src/viewer/mw-form-viewer-content.html b/src/viewer/mw-form-viewer-content.html index 7ed1dfa..4d9886a 100644 --- a/src/viewer/mw-form-viewer-content.html +++ b/src/viewer/mw-form-viewer-content.html @@ -12,7 +12,7 @@

{{ctrl.formData.name}}

{{ctrl.currentPage.name}}

-
+
From 082839bfff822e0752b0aaa4d2b9c9803a17a698 Mon Sep 17 00:00:00 2001 From: jeff wilde Date: Wed, 16 Mar 2016 16:00:15 -0600 Subject: [PATCH 02/14] minimizes dist --- dist/form-builder.min.js | 1384 +------------------------------------- dist/form-utils.min.js | 387 +---------- dist/form-viewer.min.js | 517 +------------- 3 files changed, 25 insertions(+), 2263 deletions(-) diff --git a/dist/form-builder.min.js b/dist/form-builder.min.js index a354df3..5e6a2a9 100644 --- a/dist/form-builder.min.js +++ b/dist/form-builder.min.js @@ -1,1367 +1,17 @@ -angular.module('mwFormBuilder', ['ngSanitize', 'ui.bootstrap','ng-sortable', 'pascalprecht.translate']) - .constant('MW_QUESTION_TYPES', ['text', 'textarea', 'radio', 'checkbox', 'grid', 'priority', 'division', 'number', 'date', 'time', 'email', 'range', 'url']) - .value('mwFormBuilderOptions', {}); - - - -angular.module('mwFormBuilder') - .service('mwFormUuid', function () { - function s4() { - return Math.floor((1 + Math.random()) * 0x10000) - .toString(16) - .substring(1); - } - this.get = function () { - return s4() + s4() + s4() + s4() + s4() + s4() + s4() + s4(); - - - }; - }).factory('mwFormClone', ["mwFormUuid", function (mwFormUuid) { - var service = {}; - var checkedObjects = []; - - service.resetIds = function (obj, root) { - if (root) { - checkedObjects = []; - } - if (checkedObjects.indexOf(obj) >= 0) { - return; - } - checkedObjects.push(obj); - if (!obj === Object(obj)) { - return; - } - - if (Array.isArray(obj)) { - obj.forEach(service.resetIds); - return; - } - - for (var property in obj) { - if (obj.hasOwnProperty(property)) { - service.resetIds(obj[property]); - } - } - - if (obj.hasOwnProperty('id')) { - var newId = mwFormUuid.get(); - var oldId = obj.id; - obj.id = newId; - } - }; - - service.cloneElement = function (pageElement) { - var element = {}; - angular.copy(pageElement, element); - service.resetIds(element, true); - return element; - }; - - service.clonePage = function (formPage) { - var _page = {}; - angular.copy(formPage, _page); - _page.id = mwFormUuid.get(); - var _elements = []; - if (Array.isArray(formPage.elements)) { - for (var i = 0; i < formPage.elements.length; i++) { - _elements.push(service.cloneElement(formPage.elements[i])); - } - } - _page.elements = _elements; - return _page; - }; - - service.cloneForm = function (form) { - var _form = {}; - angular.copy(form, _form); - var _pages = []; - if (Array.isArray(form.pages)) { - for (var i = 0; i < form.pages.length; i++) { - _pages.push(service.clonePage(form.pages[i])); - } - } - _form.pages = _pages; - return _form; - }; - - return service; - - }]); - -/* .factory('CollectionsUtil', function(){ - return{ - replaceByEqualObject: function(collection, referenceObjects, equalFn){ - return _.map(collection, function(element){ - var foundRefObj = _.find(referenceObjects, function(refObj){ - if(equalFn){ - return equalFn(element, refObj); - }else{ - return _.isEqual(element, refObj); - } - }); - if(foundRefObj){ - return foundRefObj; - }else{ - return element; - } - }); - }, - isNotEmptyArray: function(object){ - return object && $.isArray(object) && object.length > 0; - } - } - });*/ -angular.module("mwFormBuilder").run(["$templateCache", function($templateCache) {$templateCache.put("mw-form-builder.html","
"); -$templateCache.put("mw-form-confirmation-page-builder.html","
Strona potwierdzenia
"); -$templateCache.put("mw-form-image-builder.html","


{{ctrl.image.caption}}
"); -$templateCache.put("mw-form-page-builder.html","
Strona 1 z 3
Brak elementów
"); -$templateCache.put("mw-form-page-element-builder.html","
"); -$templateCache.put("mw-form-paragraph-builder.html","

"); -$templateCache.put("mw-form-question-builder.html","
Min: Max:

Range from to



{{ctrl.question.text}} *
{{row.label}}
SortedAvailable
{{::item.value}}
{{ctrl.question.unit}}
{{ctrl.question.unit}} z wymaganych {{ctrl.question.quantity}} {{ctrl.question.unit}}
"); -$templateCache.put("mw-label.html",""); -$templateCache.put("mw-question-division-builder.html","
"); -$templateCache.put("mw-question-grid-builder.html","
"); -$templateCache.put("mw-question-offered-answer-list-builder.html","
lub
"); -$templateCache.put("mw-question-priority-list-builder.html","
");}]); - -angular.module('mwFormBuilder').directive('mwQuestionPriorityListBuilder', function () { - - return { - replace: true, - restrict: 'AE', - require: '^mwFormQuestionBuilder', - scope: { - question: '=', - readOnly: '=?', - options: '=?' - }, - templateUrl: 'mw-question-priority-list-builder.html', - controllerAs: 'ctrl', - bindToController: true, - controller: ["mwFormUuid", function(mwFormUuid){ - var ctrl = this; - ctrl.isNewItem = {}; - - ctrl.addNewItem=function(noFocus){ - - var item = { - id: mwFormUuid.get(), - orderNo: ctrl.question.priorityList.length + 1, - value: null - }; - if(!noFocus){ - ctrl.isNewItem[item.id]=true; - } - - ctrl.question.priorityList.push(item); - }; - - - if(!ctrl.question.priorityList){ - ctrl.question.priorityList = []; - ctrl.addNewItem(); - } - - - sortByOrderNo(ctrl.question.priorityList); - - function updateOrderNo(array) { - if(array){ - for(var i=0; i=0){ - arrayMove(ctrl.formPage.elements, fromIndex, toIndex); - } - updateElementsOrderNo(); - }; - - ctrl.addQuestion = function(){ - ctrl.addElement('question'); - }; - - ctrl.addImage = function(){ - ctrl.addElement('image'); - }; - - ctrl.addParagraph= function(){ - ctrl.addElement('paragraph'); - }; - - ctrl.isElementActive= function(element){ - return ctrl.activeElement==element; - }; - - ctrl.selectElement = function(element){ - ctrl.activeElement=element; - }; - - ctrl.onElementReady = function(){ - $timeout(function(){ - ctrl.activeElement=null; - }); - }; - - function createEmptyElement(type,orderNo){ - return { - id: mwFormUuid.get(), - orderNo: orderNo, - type: type - }; - } - - function arrayMove(arr, fromIndex, toIndex) { - var element = arr[fromIndex]; - arr.splice(fromIndex, 1); - arr.splice(toIndex, 0, element); - } - - ctrl.hoverIn = function(){ - ctrl.hoverEdit = true; - }; - - ctrl.hoverOut = function(){ - ctrl.hoverEdit = false; - }; - - - ctrl.updateElementsOrderNo = updateElementsOrderNo; - - }], - link: function (scope, ele, attrs, formBuilderCtrl){ - var ctrl = scope.ctrl; - ctrl.possiblePageFlow = formBuilderCtrl.possiblePageFlow; - ctrl.moveDown= function(){ - - formBuilderCtrl.moveDownPage(ctrl.formPage); - }; - - ctrl.moveUp= function(){ - formBuilderCtrl.moveUpPage(ctrl.formPage); - }; - - ctrl.removePage=function(){ - formBuilderCtrl.removePage(ctrl.formPage); - }; - - ctrl.addPage=function(){ - formBuilderCtrl.addPageAfter(ctrl.formPage); - }; - - scope.$watch('ctrl.formPage.elements.length', function(newValue, oldValue){ - if(newValue!=oldValue){ - ctrl.updateElementsOrderNo(); - } - }); - ctrl.options = formBuilderCtrl.options; - ctrl.onImageSelection = formBuilderCtrl.onImageSelection; - } - }; -}); - - -angular.module('mwFormBuilder').factory("FormImageBuilderId", function(){ - var id = 0; - return { - next: function(){ - return ++id; - } - } - }) - - .directive('mwFormImageBuilder', function () { - - return { - replace: true, - restrict: 'AE', - require: '^mwFormPageElementBuilder', - scope: { - image: '=', - formObject: '=', - onReady: '&', - isPreview: '=?', - readOnly: '=?', - onImageSelection: '&' - }, - templateUrl: 'mw-form-image-builder.html', - controllerAs: 'ctrl', - bindToController: true, - controller: ["$timeout", "FormImageBuilderId", "mwFormUuid", function($timeout,FormImageBuilderId, mwFormUuid){ - var ctrl = this; - ctrl.id = FormImageBuilderId.next(); - ctrl.formSubmitted=false; - - ctrl.save=function(){ - ctrl.formSubmitted=true; - if(ctrl.form.$valid){ - ctrl.onReady(); - } - }; - - ctrl.selectImageButtonClicked = function(){ - var resultPromise = ctrl.onImageSelection(); - resultPromise.then(function(imageSrc){ - ctrl.image.src = imageSrc; - - }).catch(function(){ - - }); - }; - - ctrl.setAlign = function(align){ - ctrl.image.align = align; - } - - - }], - link: function (scope, ele, attrs, formPageElementBuilder){ - var ctrl = scope.ctrl; - } - }; -}); - -angular.module('mwFormBuilder').directive('mwFormConfirmationPageBuilder', function () { - - return { - replace: true, - restrict: 'AE', - scope: { - formObject: '=', - readOnly: '=?' - }, - templateUrl: 'mw-form-confirmation-page-builder.html', - controllerAs: 'ctrl', - bindToController: true, - controller: ["$timeout", function($timeout){ - var ctrl = this; - ctrl.hoverEdit = false; - - - ctrl.hoverIn = function(){ - ctrl.hoverEdit = true; - }; - - ctrl.hoverOut = function(){ - ctrl.hoverEdit = false; - }; - - }], - link: function (scope, ele, attrs){ - - } - }; -}); - - -angular.module('mwFormBuilder').directive('mwFormBuilder', function () { - - return { - replace: true, - restrict: 'AE', - scope: { - formData: '=', - readOnly: '=?', - options: '=?', - formStatus: '=?', - onImageSelection: '&', - api: '=?' - }, - templateUrl: 'mw-form-builder.html', - controllerAs: 'ctrl', - bindToController: true, - controller: ["mwFormUuid", "MW_QUESTION_TYPES", "mwFormBuilderOptions", function(mwFormUuid, MW_QUESTION_TYPES, mwFormBuilderOptions){ - var ctrl = this; - if(!ctrl.formData.pages || !ctrl.formData.pages.length){ - ctrl.formData.pages = []; - ctrl.formData.pages.push(createEmptyPage(1)); - } - mwFormBuilderOptions.questionTypes = MW_QUESTION_TYPES; - mwFormBuilderOptions.elementButtons = []; - mwFormBuilderOptions.additionalSelects = []; - - if(ctrl.options){ - if(ctrl.options.questionTypes){ - mwFormBuilderOptions.questionTypes = ctrl.options.questionTypes; - } - if(ctrl.options.additionalSelects){ - mwFormBuilderOptions.additionalSelects = ctrl.options.additionalSelects; - } - if(ctrl.options.elementButtons){ - mwFormBuilderOptions.elementButtons = ctrl.options.elementButtons; - } - } - - - - ctrl.addPage = function(){ - ctrl.formData.pages.push(createEmptyPage(ctrl.formData.pages.length+1)); - }; - - - function createEmptyPage(number){ - var defaultPageFlow = null; - if(ctrl.possiblePageFlow){ - defaultPageFlow = ctrl.possiblePageFlow[0]; - } - - return { - id: mwFormUuid.get(), - number: number, - name: null, - description: null, - pageFlow: defaultPageFlow, - elements: [] - }; - } - - function updatePageNumbers() { - for(var i=0; i=0){ - arrayMove(ctrl.formData.pages, fromIndex, toIndex); - } - updatePageNumbers(); - }; - - ctrl.removePage=function(page){ - var index = ctrl.formData.pages.indexOf(page); - ctrl.formData.pages.splice(index,1); - updatePageNumbers(); - }; - - function arrayMove(arr, fromIndex, toIndex) { - var element = arr[fromIndex]; - arr.splice(fromIndex, 1); - arr.splice(toIndex, 0, element); - } - - if(ctrl.api){ - ctrl.api.reset = function(){ - for (var prop in ctrl.formData) { - if (ctrl.formData.hasOwnProperty(prop) && prop != 'pages') { - delete ctrl.formData[prop]; - } - } - - ctrl.formData.pages.length=0; - ctrl.formData.pages.push(createEmptyPage(1)); - - } - } - - }], - link: function (scope, ele, attrs){ - var ctrl = scope.ctrl; - if(ctrl.formStatus){ - ctrl.formStatus.form = ctrl.form; - } - - ctrl.possiblePageFlow = []; - var defaultPageFlow = { - nextPage: true, - label: 'mwForm.pageFlow.goToNextPage' - }; - ctrl.possiblePageFlow.push(defaultPageFlow); - ctrl.isSamePageFlow = function (p1, p2){ - return (p1.page && p2.page && p1.page.id==p2.page.id) || p1.formSubmit && p2.formSubmit || p1.nextPage && p2.nextPage; - }; - - ctrl.updatePageFlow = function(){ - ctrl.possiblePageFlow.length=1; - - ctrl.formData.pages.forEach(function(page){ - - ctrl.possiblePageFlow.push({ - page:{ - id: page.id, - number: page.number - }, - label: 'mwForm.pageFlow.goToPage' - }); - }); - - ctrl.possiblePageFlow.push({ - formSubmit:true, - label: 'mwForm.pageFlow.submitForm' - }); - ctrl.formData.pages.forEach(function(page){ - ctrl.possiblePageFlow.forEach(function(pageFlow){ - if(page.pageFlow) { - if(ctrl.isSamePageFlow(pageFlow, page.pageFlow)){ - page.pageFlow = pageFlow; - } - }else{ - page.pageFlow = defaultPageFlow; - } - - page.elements.forEach(function(element){ - var question = element.question; - if(question && question.pageFlowModifier){ - question.offeredAnswers.forEach(function(answer){ - if(answer.pageFlow){ - if(ctrl.isSamePageFlow(pageFlow, answer.pageFlow)){ - answer.pageFlow = pageFlow; - } - } - }); - } - - }); - }); - }); - }; - - scope.$watch('ctrl.formData.pages.length', function(newVal, oldVal){ - ctrl.updatePageFlow(); - }); - } - }; -}); - -angular.module('mwFormBuilder') - .directive('wdFocusMe', ["$timeout", "$parse", function($timeout, $parse) { - return { - link: function(scope, element, attrs) { - var model = $parse(attrs.wdFocusMe); - scope.$watch(model, function(value) { - if(value === true) { - $timeout(function() { - element[0].focus(); - }); - } - }); - element.bind('blur', function() { - scope.$apply(model.assign(scope, false)); - }); - } - }; - }]) - .factory('focus', ["$timeout", "$window", function($timeout, $window) { - return function(id) { - $timeout(function() { - var element = $window.document.getElementById(id); - if(element) - element.focus(); - }); - }; - }]); - -'use strict'; - -angular.module('mwFormBuilder') - .directive('mwConfirmClick', ["$window", function($window){ - return { - restrict: 'A', - link: function (scope, element, attr) { - var msg = attr.wdConfirmClick || "Are you sure?"; - element.bind('click',function (event) { - if ( $window.confirm(msg) ) { - scope.$apply(attr.confirmedAction); - } - }); - } - } - }]); +angular.module("mwFormBuilder",["ngSanitize","ui.bootstrap","ng-sortable","pascalprecht.translate"]).constant("MW_QUESTION_TYPES",["text","textarea","radio","checkbox","grid","priority","division","number","date","time","email","range","url"]).value("mwFormBuilderOptions",{}); +angular.module("mwFormBuilder").service("mwFormUuid",function(){function r(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}this.get=function(){return r()+r()+r()+r()+r()+r()+r()+r()}}).factory("mwFormClone",["mwFormUuid",function(r){var e={},n=[];return e.resetIds=function(t,a){if(a&&(n=[]),!(n.indexOf(t)>=0)&&(n.push(t),!t!==Object(t))){if(Array.isArray(t))return void t.forEach(e.resetIds);for(var o in t)t.hasOwnProperty(o)&&e.resetIds(t[o]);if(t.hasOwnProperty("id")){var i=r.get();t.id;t.id=i}}},e.cloneElement=function(r){var n={};return angular.copy(r,n),e.resetIds(n,!0),n},e.clonePage=function(n){var t={};angular.copy(n,t),t.id=r.get();var a=[];if(Array.isArray(n.elements))for(var o=0;o
'),e.put("mw-form-confirmation-page-builder.html",'
Strona potwierdzenia
'),e.put("mw-form-image-builder.html",'


{{ctrl.image.caption}}
'),e.put("mw-form-page-builder.html",'
Strona 1 z 3
Brak elementów
'),e.put("mw-form-page-element-builder.html",'
'),e.put("mw-form-paragraph-builder.html",'

'),e.put("mw-form-question-builder.html",'
Min: Max:

Range from to



{{ctrl.question.text}} *
{{row.label}}
SortedAvailable
{{::item.value}}
{{ctrl.question.unit}}
{{ctrl.question.unit}} z wymaganych {{ctrl.question.quantity}} {{ctrl.question.unit}}
'),e.put("mw-label.html",""),e.put("mw-question-division-builder.html",'
'),e.put("mw-question-grid-builder.html",'
'),e.put("mw-question-offered-answer-list-builder.html",'
lub
'),e.put("mw-question-priority-list-builder.html",'
')}]); +angular.module("mwFormBuilder").directive("mwQuestionPriorityListBuilder",function(){return{replace:!0,restrict:"AE",require:"^mwFormQuestionBuilder",scope:{question:"=",readOnly:"=?",options:"=?"},templateUrl:"mw-question-priority-list-builder.html",controllerAs:"ctrl",bindToController:!0,controller:["mwFormUuid",function(i){function e(i){if(i)for(var e=0;e=0&&m(a.formPage.elements,n,o),t()},a.addQuestion=function(){a.addElement("question")},a.addImage=function(){a.addElement("image")},a.addParagraph=function(){a.addElement("paragraph")},a.isElementActive=function(e){return a.activeElement==e},a.selectElement=function(e){a.activeElement=e},a.onElementReady=function(){e(function(){a.activeElement=null})},a.hoverIn=function(){a.hoverEdit=!0},a.hoverOut=function(){a.hoverEdit=!1},a.updateElementsOrderNo=t}],link:function(e,n,o,t){var r=e.ctrl;r.possiblePageFlow=t.possiblePageFlow,r.moveDown=function(){t.moveDownPage(r.formPage)},r.moveUp=function(){t.moveUpPage(r.formPage)},r.removePage=function(){t.removePage(r.formPage)},r.addPage=function(){t.addPageAfter(r.formPage)},e.$watch("ctrl.formPage.elements.length",function(e,n){e!=n&&r.updateElementsOrderNo()}),r.options=t.options,r.onImageSelection=t.onImageSelection}}}); +angular.module("mwFormBuilder").factory("FormImageBuilderId",function(){var e=0;return{next:function(){return++e}}}).directive("mwFormImageBuilder",function(){return{replace:!0,restrict:"AE",require:"^mwFormPageElementBuilder",scope:{image:"=",formObject:"=",onReady:"&",isPreview:"=?",readOnly:"=?",onImageSelection:"&"},templateUrl:"mw-form-image-builder.html",controllerAs:"ctrl",bindToController:!0,controller:["$timeout","FormImageBuilderId","mwFormUuid",function(e,r,t){var n=this;n.id=r.next(),n.formSubmitted=!1,n.save=function(){n.formSubmitted=!0,n.form.$valid&&n.onReady()},n.selectImageButtonClicked=function(){var e=n.onImageSelection();e.then(function(e){n.image.src=e})["catch"](function(){})},n.setAlign=function(e){n.image.align=e}}],link:function(e,r,t,n){e.ctrl}}}); +angular.module("mwFormBuilder").directive("mwFormConfirmationPageBuilder",function(){return{replace:!0,restrict:"AE",scope:{formObject:"=",readOnly:"=?"},templateUrl:"mw-form-confirmation-page-builder.html",controllerAs:"ctrl",bindToController:!0,controller:["$timeout",function(r){var o=this;o.hoverEdit=!1,o.hoverIn=function(){o.hoverEdit=!0},o.hoverOut=function(){o.hoverEdit=!1}}],link:function(r,o,e){}}}); +angular.module("mwFormBuilder").directive("mwFormBuilder",function(){return{replace:!0,restrict:"AE",scope:{formData:"=",readOnly:"=?",options:"=?",formStatus:"=?",onImageSelection:"&",api:"=?"},templateUrl:"mw-form-builder.html",controllerAs:"ctrl",bindToController:!0,controller:["mwFormUuid","MW_QUESTION_TYPES","mwFormBuilderOptions",function(e,a,o){function t(a){var o=null;return s.possiblePageFlow&&(o=s.possiblePageFlow[0]),{id:e.get(),number:a,name:null,description:null,pageFlow:o,elements:[]}}function n(){for(var e=0;e=0&&r(s.formData.pages,a,o),n()},s.removePage=function(e){var a=s.formData.pages.indexOf(e);s.formData.pages.splice(a,1),n()},s.api&&(s.api.reset=function(){for(var e in s.formData)s.formData.hasOwnProperty(e)&&"pages"!=e&&delete s.formData[e];s.formData.pages.length=0,s.formData.pages.push(t(1))})}],link:function(e,a,o){var t=e.ctrl;t.formStatus&&(t.formStatus.form=t.form),t.possiblePageFlow=[];var n={nextPage:!0,label:"mwForm.pageFlow.goToNextPage"};t.possiblePageFlow.push(n),t.isSamePageFlow=function(e,a){return e.page&&a.page&&e.page.id==a.page.id||e.formSubmit&&a.formSubmit||e.nextPage&&a.nextPage},t.updatePageFlow=function(){t.possiblePageFlow.length=1,t.formData.pages.forEach(function(e){t.possiblePageFlow.push({page:{id:e.id,number:e.number},label:"mwForm.pageFlow.goToPage"})}),t.possiblePageFlow.push({formSubmit:!0,label:"mwForm.pageFlow.submitForm"}),t.formData.pages.forEach(function(e){t.possiblePageFlow.forEach(function(a){e.pageFlow?t.isSamePageFlow(a,e.pageFlow)&&(e.pageFlow=a):e.pageFlow=n,e.elements.forEach(function(e){var o=e.question;o&&o.pageFlowModifier&&o.offeredAnswers.forEach(function(e){e.pageFlow&&t.isSamePageFlow(a,e.pageFlow)&&(e.pageFlow=a)})})})})},e.$watch("ctrl.formData.pages.length",function(e,a){t.updatePageFlow()})}}}); +angular.module("mwFormBuilder").directive("wdFocusMe",["$timeout","$parse",function(n,u){return{link:function(o,t,c){var i=u(c.wdFocusMe);o.$watch(i,function(u){u===!0&&n(function(){t[0].focus()})}),t.bind("blur",function(){o.$apply(i.assign(o,!1))})}}}]).factory("focus",["$timeout","$window",function(n,u){return function(o){n(function(){var n=u.document.getElementById(o);n&&n.focus()})}}]); +"use strict";angular.module("mwFormBuilder").directive("mwConfirmClick",["$window",function(i){return{restrict:"A",link:function(n,r,c){var o=c.wdConfirmClick||"Are you sure?";r.bind("click",function(r){i.confirm(o)&&n.$apply(c.confirmedAction)})}}}]); \ No newline at end of file diff --git a/dist/form-utils.min.js b/dist/form-utils.min.js index 156e656..9b35a28 100644 --- a/dist/form-utils.min.js +++ b/dist/form-utils.min.js @@ -1,385 +1,2 @@ -angular.module('mwFormUtils', ['mwFormUtils.responseUtils']); -angular.module('mwFormUtils.responseUtils', []) - .factory('mwFormResponseUtils', function mwFormResponseMergerFactory() { - - var service = {}; - service.$getObjectByIdMap = function (objectList, mappingFn) { - var objectById = {}; - if(!objectList){ - return objectById; - } - objectList.forEach(function (obj) { - var val = obj; - if(mappingFn){ - val = mappingFn(obj); - } - objectById[obj.id] = val; - }); - return objectById; - }; - service.$getOfferedAnswerByIdMap = function (question) { - return service.$getObjectByIdMap(question.offeredAnswers, function(offeredAnswer){ - return { - id: offeredAnswer.id, - value: offeredAnswer.value - }; - }); - }; - - service.$extractResponseForRadioOrCheckboxQuestion= function(question, questionResponse) { - var offeredAnswerById = service.$getOfferedAnswerByIdMap(question); - var result ={}; - if (questionResponse.selectedAnswers) { - result.selectedAnswers = []; - questionResponse.selectedAnswers.forEach(function (answerId) { - result.selectedAnswers.push(offeredAnswerById[answerId]); - }) - } else if (questionResponse.selectedAnswer) { - result.selectedAnswer = offeredAnswerById[questionResponse.selectedAnswer]; - } - if (questionResponse.other) { - result.other = questionResponse.other; - } - return result; - }; - - service.$extractResponseForPriorityQuestion= function(question, questionResponse) { - var result =[]; - if(!questionResponse.priorityList){ - return result; - } - var itemById = service.$getObjectByIdMap(question.priorityList); - questionResponse.priorityList.forEach(function(i){ - var item = itemById[i.id]; - result.push({ - id: item.id, - value: item.value, - priority: i.priority - }); - }); - return result; - }; - - service.$extractResponseForDivisionQuestion= function(question, questionResponse) { - var result =[]; - var itemById = service.$getObjectByIdMap(question.divisionList); - Object.getOwnPropertyNames(questionResponse).forEach(function(itemId){ - var value = questionResponse[itemId]; - var item = itemById[itemId]; - if(!item) { - return; - } - result.push({ - id: item.id, - label: item.value, - value: value - }); - }); - return result; - }; - - service.$extractResponseForGridQuestion= function(question, questionResponse) { - var result =[]; - if(!question.grid || !question.grid.rows){ - return result; - } - var colById = service.$getObjectByIdMap(question.grid.cols); - question.grid.rows.forEach(function(row){ - var selectedColId = questionResponse[row.id]; - var selectedCol = null; - if(selectedColId){ - selectedCol = colById[selectedColId]; - } - - var rowResponse= { - row:{ - id: row.id, - label: row.label - }, - col: null - }; - - if(selectedCol){ - rowResponse.col = { - id: selectedCol.id, - label: selectedCol.label - } - } - result.push(rowResponse); - }); - return result; - }; - - service.extractResponse = function(question, questionResponse) { - if(question.type=='text' || question.type=='textarea'){ - return questionResponse.answer; - } - if(question.type=='radio' || question.type=='checkbox'){ - return service.$extractResponseForRadioOrCheckboxQuestion(question, questionResponse); - } - if(question.type=='grid'){ - return service.$extractResponseForGridQuestion(question, questionResponse); - } - if(question.type=='priority'){ - return service.$extractResponseForPriorityQuestion(question, questionResponse); - } - if(question.type=='division'){ - return service.$extractResponseForDivisionQuestion(question, questionResponse); - } - return null; - }; - - service.mergeFormWithResponse = function(formData, responseData){ - var result = {}; - angular.copy(formData, result); - - result.pages.forEach(function (page){ - page.elements.forEach(function (element){ - var question = element.question; - if(!question){ - return; - } - - var questionResponse = responseData[question.id]; - if(!questionResponse){ - return; - } - question.response = service.extractResponse(question, questionResponse); - }); - - }); - - return result; - }; - - service.getQuestionList = function(formData, copy){ - var result = []; - formData.pages.forEach(function (page){ - page.elements.forEach(function (element){ - - if(!element.question){ - return; - } - var question = element.question; - if(copy){ - question = {}; - angular.copy(element.question, question); - } - result.push(question); - }); - - }); - return result; - }; - - service.getQuestionWithResponseList = function(formData, responseData){ - var result = []; - service.getQuestionList(formData, true).forEach(function (question) { - var questionResponse = responseData[question.id]; - if (questionResponse) { - question.response = service.extractResponse(question, questionResponse); - }else{ - question.response = null; - } - result.push(question); - }); - return result; - }; - - service.$$getHeader = function(number, questionText, subQuestionNumber, subQuestionText, withQuestionNumber){ - var result = ''; - - if(withQuestionNumber){ - if(number || number === 0){ - result+=number+'.'; - } - - if(subQuestionNumber || subQuestionNumber === 0){ - result+=subQuestionNumber+'.'; - } - if(result.length){ - result+=' '; - } - } - - - result +=questionText; - - if(subQuestionText){ - result +=' ['+subQuestionText+']'; - } - - return result; - }; - - service.getResponseSheetHeaders = function(formData, withQuestionNumbers){ - var result = []; - - var questionNumber = 0; - service.getQuestionList(formData).forEach(function (question) { - - questionNumber++; - var subIndex = 1; - if(question.type=='text' || question.type=='textarea' || question.type=='radio' || question.type=='checkbox'){ - result.push(service.$$getHeader(questionNumber,question.text, null, null,withQuestionNumbers)); - } - else if(question.type=='grid'){ - if(!question.grid){ - return; - } - question.grid.rows.forEach(function(row){ - result.push(service.$$getHeader(questionNumber,question.text, subIndex, row.label, withQuestionNumbers)); - subIndex++; - }); - } - else if(question.type=='priority'){ - if(!question.priorityList){ - return; - } - question.priorityList.forEach(function(item){ - result.push(service.$$getHeader(questionNumber,question.text, subIndex, item.value, withQuestionNumbers)); - subIndex++; - }); - } - else if(question.type=='division'){ - if(!question.divisionList){ - return; - } - question.divisionList.forEach(function(item){ - result.push(service.$$getHeader(questionNumber,question.text, subIndex, item.value, withQuestionNumbers)); - subIndex++; - }); - } - }); - return result; - }; - - service.getResponseSheetRow = function(formData, responseData){ - var answerDelimiter = '; '; - var result = []; - if(!responseData){ - return result; - } - var questions = service.getQuestionWithResponseList(formData, responseData); - var colIndex =0; - for(var i=0; i< questions.length; i++){ - var question = questions[i]; - var response = question.response; - - if(question.type=='text' || question.type=='textarea'){ - result.push(response? response : ""); - } - else if(question.type=='radio'){ - if(!response){ - result.push(""); - continue; - } - var cellVal = ""; - if(response.selectedAnswer){ - cellVal = response.selectedAnswer.value; - } - - if(response.other){ - if(cellVal){ - cellVal+=answerDelimiter - } - cellVal+=response.other; - } - result.push(cellVal); - } - else if(question.type=='checkbox'){ - if(!response || !response.selectedAnswers){ - result.push(""); - continue; - } - var cellVal=""; - response.selectedAnswers.forEach(function(selectedAnswer){ - if(cellVal){ - cellVal+=answerDelimiter; - } - cellVal+=selectedAnswer.value; - - }); - if(response.other){ - if(cellVal){ - cellVal+=answerDelimiter - } - cellVal+=response.other; - } - result.push(cellVal); - } - else if(question.type=='grid'){ - if(!question.grid){ - continue; - } - if(!response){ - question.grid.rows.forEach(function(){result.push("")}); - continue; - } - response.forEach(function(entry){ - result.push(entry.col ? entry.col.label:""); - - }); - } - else if(question.type=='priority'){ - if(!question.priorityList){ - continue; - } - var orderedItemById = service.$getObjectByIdMap(response); - question.priorityList.forEach(function(item){ - var orderedItem = orderedItemById[item.id]; - if(orderedItem){ - result.push(orderedItem.priority); - }else{ - result.push(""); - } - - }); - } - else if(question.type=='division'){ - if(!question.divisionList){ - continue; - } - var assignedItemById = service.$getObjectByIdMap(response); - question.divisionList.forEach(function(item){ - var assignedItem = assignedItemById[item.id]; - if(assignedItem){ - result.push(assignedItem.value); - }else{ - result.push(""); - } - - }); - } - - - } - return result; - }; - - service.getResponseSheetRows = function(formData, responseDataList){ - return responseDataList.map(function (response){ - return service.getResponseSheetRow(formData, response); - }); - }; - - service.getResponseSheet = function(formData, responseDataObjectOrList, headersWithQuestionNumber){ - var sheet = []; - var headers = service.getResponseSheetHeaders(formData,headersWithQuestionNumber); - sheet.push(headers); - if(!responseDataObjectOrList){ - return sheet; - } - if(responseDataObjectOrList instanceof Array){ - responseDataObjectOrList.forEach(function (response){ - sheet.push(service.getResponseSheetRow(formData, response)); - }); - }else{ - sheet.push(service.getResponseSheetRow(formData, responseDataObjectOrList)); - } - - return sheet; - }; - - return service; - }); +angular.module("mwFormUtils",["mwFormUtils.responseUtils"]); +angular.module("mwFormUtils.responseUtils",[]).factory("mwFormResponseUtils",function(){var e={};return e.$getObjectByIdMap=function(e,t){var r={};return e?(e.forEach(function(e){var i=e;t&&(i=t(e)),r[e.id]=i}),r):r},e.$getOfferedAnswerByIdMap=function(t){return e.$getObjectByIdMap(t.offeredAnswers,function(e){return{id:e.id,value:e.value}})},e.$extractResponseForRadioOrCheckboxQuestion=function(t,r){var i=e.$getOfferedAnswerByIdMap(t),n={};return r.selectedAnswers?(n.selectedAnswers=[],r.selectedAnswers.forEach(function(e){n.selectedAnswers.push(i[e])})):r.selectedAnswer&&(n.selectedAnswer=i[r.selectedAnswer]),r.other&&(n.other=r.other),n},e.$extractResponseForPriorityQuestion=function(t,r){var i=[];if(!r.priorityList)return i;var n=e.$getObjectByIdMap(t.priorityList);return r.priorityList.forEach(function(e){var t=n[e.id];i.push({id:t.id,value:t.value,priority:e.priority})}),i},e.$extractResponseForDivisionQuestion=function(t,r){var i=[],n=e.$getObjectByIdMap(t.divisionList);return Object.getOwnPropertyNames(r).forEach(function(e){var t=r[e],o=n[e];o&&i.push({id:o.id,label:o.value,value:t})}),i},e.$extractResponseForGridQuestion=function(t,r){var i=[];if(!t.grid||!t.grid.rows)return i;var n=e.$getObjectByIdMap(t.grid.cols);return t.grid.rows.forEach(function(e){var t=r[e.id],o=null;t&&(o=n[t]);var s={row:{id:e.id,label:e.label},col:null};o&&(s.col={id:o.id,label:o.label}),i.push(s)}),i},e.extractResponse=function(t,r){return"text"==t.type||"textarea"==t.type?r.answer:"radio"==t.type||"checkbox"==t.type?e.$extractResponseForRadioOrCheckboxQuestion(t,r):"grid"==t.type?e.$extractResponseForGridQuestion(t,r):"priority"==t.type?e.$extractResponseForPriorityQuestion(t,r):"division"==t.type?e.$extractResponseForDivisionQuestion(t,r):null},e.mergeFormWithResponse=function(t,r){var i={};return angular.copy(t,i),i.pages.forEach(function(t){t.elements.forEach(function(t){var i=t.question;if(i){var n=r[i.id];n&&(i.response=e.extractResponse(i,n))}})}),i},e.getQuestionList=function(e,t){var r=[];return e.pages.forEach(function(e){e.elements.forEach(function(e){if(e.question){var i=e.question;t&&(i={},angular.copy(e.question,i)),r.push(i)}})}),r},e.getQuestionWithResponseList=function(t,r){var i=[];return e.getQuestionList(t,!0).forEach(function(t){var n=r[t.id];n?t.response=e.extractResponse(t,n):t.response=null,i.push(t)}),i},e.$$getHeader=function(e,t,r,i,n){var o="";return n&&((e||0===e)&&(o+=e+"."),(r||0===r)&&(o+=r+"."),o.length&&(o+=" ")),o+=t,i&&(o+=" ["+i+"]"),o},e.getResponseSheetHeaders=function(t,r){var i=[],n=0;return e.getQuestionList(t).forEach(function(t){n++;var o=1;if("text"==t.type||"textarea"==t.type||"radio"==t.type||"checkbox"==t.type)i.push(e.$$getHeader(n,t.text,null,null,r));else if("grid"==t.type){if(!t.grid)return;t.grid.rows.forEach(function(s){i.push(e.$$getHeader(n,t.text,o,s.label,r)),o++})}else if("priority"==t.type){if(!t.priorityList)return;t.priorityList.forEach(function(s){i.push(e.$$getHeader(n,t.text,o,s.value,r)),o++})}else if("division"==t.type){if(!t.divisionList)return;t.divisionList.forEach(function(s){i.push(e.$$getHeader(n,t.text,o,s.value,r)),o++})}}),i},e.getResponseSheetRow=function(t,r){var i="; ",n=[];if(!r)return n;for(var o=e.getQuestionWithResponseList(t,r),s=0;s
{{ctrl.confirmationMessage}} Twoja odpowiedź została zapisana
Bład. Twoja odpowiedź nie została zapisana.
Zapisywanie odpowiedzi w trakcie.
"); -$templateCache.put("mw-form-question.html","
{{ctrl.question.text}} *
{{::row.label}}
{{::ctrl.question.unit}}
{{ctrl.question.unit}} z wymaganych {{ctrl.question.quantity}} {{ctrl.question.unit}}
{{ctrl.questionResponse.answer}}
"); -$templateCache.put("mw-form-viewer-content.html","

{{ctrl.formData.name}}

{{ctrl.formData.description}}

{{ctrl.currentPage.name}}

{{pageElement.image.caption}}

"); -$templateCache.put("mw-form-viewer.html","
"); -$templateCache.put("mw-priority-list.html","
SortedAvailable
{{$index+1}}. {{::ctrl.idToItem[item.id].value}}
{{::ctrl.idToItem[item.id].value}}
");}]); - -angular.module('mwFormViewer') - .directive('mwPriorityList', function () { - - return { - replace: true, - restrict: 'AE', - require: '^mwFormQuestion', - scope: { - question: '=', - questionResponse: '=', - readOnly: '=?', - options: '=?' - }, - templateUrl: 'mw-priority-list.html', - controllerAs: 'ctrl', - bindToController: true, - controller: function(){ - var ctrl = this; - - if(!ctrl.questionResponse.priorityList){ - ctrl.questionResponse.priorityList=[]; - } - ctrl.idToItem = {}; - - - sortByPriority(ctrl.questionResponse.priorityList); - - ctrl.availableItems=[]; - ctrl.question.priorityList.forEach(function(item){ - ctrl.idToItem[item.id] = item; - var ordered = ctrl.questionResponse.priorityList.some(function(ordered){ - return item.id == ordered.id; - }); - if(!ordered){ - ctrl.availableItems.push({ - priority: null, - id: item.id - }); - } - }); - - ctrl.allItemsOrdered=ctrl.availableItems.length==0 ? true : null; - - - function updatePriority(array) { - if(array){ - for(var i=0; i0){ - ctrl.setCurrentPage(ctrl.formData.pages[0]); - } - }; - - ctrl.resetPages = function(){ - ctrl.prevPages=[]; - - ctrl.currentPage=null; - ctrl.nextPage = null; - ctrl.formSubmitted=false; - if(ctrl.options.autoStart){ - ctrl.beginResponse(); - } - - }; - ctrl.resetPages(); - - ctrl.goToPrevPage= function(){ - var prevPage = ctrl.prevPages.pop(); - ctrl.setCurrentPage(prevPage); - ctrl.updateNextPageBasedOnAllAnswers(); - }; - - ctrl.goToNextPage= function(){ - ctrl.prevPages.push(ctrl.currentPage); - - ctrl.updateNextPageBasedOnAllAnswers(); - - ctrl.setCurrentPage(ctrl.nextPage); - }; - - ctrl.updateNextPageBasedOnAllAnswers = function(){ - ctrl.currentPage.elements.forEach(function(element){ - ctrl.updateNextPageBasedOnPageElementAnswers(element); - }); - - ctrl.buttons.submitForm.visible=!ctrl.nextPage; - ctrl.buttons.nextPage.visible=!!ctrl.nextPage; - }; - - ctrl.updateNextPageBasedOnPageElementAnswers = function (element) { - var question = element.question; - if (question && question.pageFlowModifier) { - question.offeredAnswers.forEach(function (answer) { - if (answer.pageFlow) { - if(ctrl.responseData[question.id].selectedAnswer == answer.id){ - if (answer.pageFlow.formSubmit) { - ctrl.nextPage = null; - } else if (answer.pageFlow.page) { - ctrl.nextPage = ctrl.pageIdToPage[answer.pageFlow.page.id]; - } - } - } - }); - } - }; - - ctrl.onResponseChanged = function(pageElement){ - ctrl.setDefaultNextPage(); - ctrl.updateNextPageBasedOnAllAnswers(); - }; - - if(ctrl.api){ - ctrl.api.reset = function(){ - for (var prop in ctrl.responseData) { - if (ctrl.responseData.hasOwnProperty(prop)) { - delete ctrl.responseData[prop]; - } - } - - ctrl.buttons.submitForm.visible=false; - ctrl.buttons.prevPage.visible=false; - ctrl.buttons.nextPage.visible=false; - ctrl.currentPage=null; - $timeout(ctrl.resetPages, 0); - - } - } - - function sortPagesByNumber() { - ctrl.formData.pages.sort(function(a,b){ - return a.number - b.number; - }); - } - - }], - link: function (scope, ele, attrs){ - var ctrl = scope.ctrl; - if(ctrl.formStatus){ - ctrl.formStatus.form = ctrl.form; - } - - - } - }; -}); - - -angular.module('mwFormViewer').factory("FormQuestionId", function(){ - var id = 0; - return { - next: function(){ - return ++id; - } - } - }) - - .directive('mwFormQuestion', function () { - - return { - replace: true, - restrict: 'AE', - require: '^mwFormViewer', - scope: { - question: '=', - questionResponse: '=', - readOnly: '=?', - options: '=?', - onResponseChanged: '&?' - }, - templateUrl: 'mw-form-question.html', - controllerAs: 'ctrl', - bindToController: true, - controller: ["$timeout", "FormQuestionId", function($timeout,FormQuestionId){ - var ctrl = this; - ctrl.id = FormQuestionId.next(); - - if(ctrl.question.type=='radio'){ - if(!ctrl.questionResponse.selectedAnswer){ - ctrl.questionResponse.selectedAnswer=null; - } - if(ctrl.questionResponse.other){ - ctrl.isOtherAnswer=true; - } - - }else if(ctrl.question.type=='checkbox'){ - if(ctrl.questionResponse.selectedAnswers && ctrl.questionResponse.selectedAnswers.length){ - ctrl.selectedAnswer=true; - }else{ - ctrl.questionResponse.selectedAnswers=[]; - } - if(ctrl.questionResponse.other){ - ctrl.isOtherAnswer=true; - } - - - }else if(ctrl.question.type=='grid'){ - //if(ctrl.questionResponse.selectedAnswers){ - // - //}else{ - // ctrl.questionResponse.selectedAnswers={}; - //} - }else if(ctrl.question.type=='division'){ - - ctrl.computeDivisionSum = function(){ - ctrl.divisionSum=0; - ctrl.question.divisionList.forEach(function(item){ - - if(ctrl.questionResponse[item.id]!=0 && !ctrl.questionResponse[item.id]){ - ctrl.questionResponse[item.id]=null; - ctrl.divisionSum+=0; - }else{ - ctrl.divisionSum+=ctrl.questionResponse[item.id]; - } - }); - }; - - ctrl.computeDivisionSum(); - - - } - - - - ctrl.isAnswerSelected=false; - - ctrl.selectedAnswerChanged=function(){ - delete ctrl.questionResponse.other; - ctrl.isOtherAnswer=false; - ctrl.answerChanged(); - - }; - ctrl.otherAnswerRadioChanged= function(){ - if(ctrl.isOtherAnswer){ - ctrl.questionResponse.selectedAnswer=null; - } - ctrl.answerChanged(); - }; - - ctrl.otherAnswerCheckboxChanged= function(){ - if(!ctrl.isOtherAnswer){ - delete ctrl.questionResponse.other; - } - ctrl.selectedAnswer = ctrl.questionResponse.selectedAnswers.length||ctrl.isOtherAnswer ? true:null ; - ctrl.answerChanged(); - }; - - - ctrl.toggleSelectedAnswer= function(answer){ - if (ctrl.questionResponse.selectedAnswers.indexOf(answer.id) === -1) { - ctrl.questionResponse.selectedAnswers.push(answer.id); - } else { - ctrl.questionResponse.selectedAnswers.splice(ctrl.questionResponse.selectedAnswers.indexOf(answer.id), 1); - } - ctrl.selectedAnswer = ctrl.questionResponse.selectedAnswers.length||ctrl.isOtherAnswer ? true:null ; - - ctrl.answerChanged(); - }; - - ctrl.answerChanged = function(){ - if(ctrl.onResponseChanged){ - ctrl.onResponseChanged(); - } - } - - }], - link: function (scope, ele, attrs, mwFormViewer){ - var ctrl = scope.ctrl; - - } - }; -}); - - -angular.module('mwFormViewer') - .directive('mwFormConfirmationPage', function () { - - return { - replace: true, - restrict: 'AE', - require: '^mwFormViewer', - scope: { - submitStatus: '=', - confirmationMessage: '=', - readOnly: '=?' - }, - templateUrl: 'mw-form-confirmation-page.html', - controllerAs: 'ctrl', - bindToController: true, - controller: function(){ - var ctrl = this; - - - }, - link: function (scope, ele, attrs, mwFormViewer){ - var ctrl = scope.ctrl; - - } - }; -}); +angular.module("mwFormViewer",["ngSanitize","ui.bootstrap","ng-sortable","pascalprecht.translate"]); +angular.module("mwFormViewer").run(["$templateCache",function(e){e.put("mw-form-confirmation-page.html","
{{ctrl.confirmationMessage}} Twoja odpowiedź została zapisana
Bład. Twoja odpowiedź nie została zapisana.
Zapisywanie odpowiedzi w trakcie.
"),e.put("mw-form-question.html",'
{{ctrl.question.text}} *
{{::row.label}}
{{::ctrl.question.unit}}
{{ctrl.question.unit}} z wymaganych {{ctrl.question.quantity}} {{ctrl.question.unit}}
{{ctrl.questionResponse.answer}}
'),e.put("mw-form-viewer-content.html",'

{{ctrl.formData.name}}

{{ctrl.formData.description}}

{{ctrl.currentPage.name}}

{{pageElement.image.caption}}

'),e.put("mw-form-viewer.html","
"),e.put("mw-priority-list.html",'
SortedAvailable
{{$index+1}}. {{::ctrl.idToItem[item.id].value}}
{{::ctrl.idToItem[item.id].value}}
')}]); +angular.module("mwFormViewer").directive("mwPriorityList",function(){return{replace:!0,restrict:"AE",require:"^mwFormQuestion",scope:{question:"=",questionResponse:"=",readOnly:"=?",options:"=?"},templateUrl:"mw-priority-list.html",controllerAs:"ctrl",bindToController:!0,controller:function(){function i(i){if(i)for(var e=0;e0&&n.setCurrentPage(n.formData.pages[0])},n.resetPages=function(){n.prevPages=[],n.currentPage=null,n.nextPage=null,n.formSubmitted=!1,n.options.autoStart&&n.beginResponse()},n.resetPages(),n.goToPrevPage=function(){var e=n.prevPages.pop();n.setCurrentPage(e),n.updateNextPageBasedOnAllAnswers()},n.goToNextPage=function(){n.prevPages.push(n.currentPage),n.updateNextPageBasedOnAllAnswers(),n.setCurrentPage(n.nextPage)},n.updateNextPageBasedOnAllAnswers=function(){n.currentPage.elements.forEach(function(e){n.updateNextPageBasedOnPageElementAnswers(e)}),n.buttons.submitForm.visible=!n.nextPage,n.buttons.nextPage.visible=!!n.nextPage},n.updateNextPageBasedOnPageElementAnswers=function(e){var t=e.question;t&&t.pageFlowModifier&&t.offeredAnswers.forEach(function(e){e.pageFlow&&n.responseData[t.id].selectedAnswer==e.id&&(e.pageFlow.formSubmit?n.nextPage=null:e.pageFlow.page&&(n.nextPage=n.pageIdToPage[e.pageFlow.page.id]))})},n.onResponseChanged=function(e){n.setDefaultNextPage(),n.updateNextPageBasedOnAllAnswers()},n.api&&(n.api.reset=function(){for(var t in n.responseData)n.responseData.hasOwnProperty(t)&&delete n.responseData[t];n.buttons.submitForm.visible=!1,n.buttons.prevPage.visible=!1,n.buttons.nextPage.visible=!1,n.currentPage=null,e(n.resetPages,0)})}],link:function(e,t,n){var a=e.ctrl;a.formStatus&&(a.formStatus.form=a.form)}}}); +angular.module("mwFormViewer").factory("FormQuestionId",function(){var e=0;return{next:function(){return++e}}}).directive("mwFormQuestion",function(){return{replace:!0,restrict:"AE",require:"^mwFormViewer",scope:{question:"=",questionResponse:"=",readOnly:"=?",options:"=?",onResponseChanged:"&?"},templateUrl:"mw-form-question.html",controllerAs:"ctrl",bindToController:!0,controller:["$timeout","FormQuestionId",function(e,s){var n=this;n.id=s.next(),"radio"==n.question.type?(n.questionResponse.selectedAnswer||(n.questionResponse.selectedAnswer=null),n.questionResponse.other&&(n.isOtherAnswer=!0)):"checkbox"==n.question.type?(n.questionResponse.selectedAnswers&&n.questionResponse.selectedAnswers.length?n.selectedAnswer=!0:n.questionResponse.selectedAnswers=[],n.questionResponse.other&&(n.isOtherAnswer=!0)):"grid"==n.question.type||"division"==n.question.type&&(n.computeDivisionSum=function(){n.divisionSum=0,n.question.divisionList.forEach(function(e){0==n.questionResponse[e.id]||n.questionResponse[e.id]?n.divisionSum+=n.questionResponse[e.id]:(n.questionResponse[e.id]=null,n.divisionSum+=0)})},n.computeDivisionSum()),n.isAnswerSelected=!1,n.selectedAnswerChanged=function(){delete n.questionResponse.other,n.isOtherAnswer=!1,n.answerChanged()},n.otherAnswerRadioChanged=function(){n.isOtherAnswer&&(n.questionResponse.selectedAnswer=null),n.answerChanged()},n.otherAnswerCheckboxChanged=function(){n.isOtherAnswer||delete n.questionResponse.other,n.selectedAnswer=n.questionResponse.selectedAnswers.length||n.isOtherAnswer?!0:null,n.answerChanged()},n.toggleSelectedAnswer=function(e){-1===n.questionResponse.selectedAnswers.indexOf(e.id)?n.questionResponse.selectedAnswers.push(e.id):n.questionResponse.selectedAnswers.splice(n.questionResponse.selectedAnswers.indexOf(e.id),1),n.selectedAnswer=n.questionResponse.selectedAnswers.length||n.isOtherAnswer?!0:null,n.answerChanged()},n.answerChanged=function(){n.onResponseChanged&&n.onResponseChanged()}}],link:function(e,s,n,o){e.ctrl}}}); +angular.module("mwFormViewer").directive("mwFormConfirmationPage",function(){return{replace:!0,restrict:"AE",require:"^mwFormViewer",scope:{submitStatus:"=",confirmationMessage:"=",readOnly:"=?"},templateUrl:"mw-form-confirmation-page.html",controllerAs:"ctrl",bindToController:!0,controller:function(){},link:function(r,e,o,t){r.ctrl}}}); \ No newline at end of file From 434eb90e9070ffb9eb5de6fa6fc8c51c2fb0a97d Mon Sep 17 00:00:00 2001 From: jeff wilde Date: Wed, 16 Mar 2016 16:50:00 -0600 Subject: [PATCH 03/14] Updates son --- bower.json | 8 ++++---- package.json | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/bower.json b/bower.json index 58b0c97..69f8f3e 100644 --- a/bower.json +++ b/bower.json @@ -1,11 +1,11 @@ { - "name": "angular-surveys", - "homepage": "https://github.com/mwasiluk/angular-surveys", + "name": "angular-surveys-gofreddo", + "homepage": "https://github.com/gofreddo/angular-surveys", "authors": [ - "Michał Wasiluk" + "Michał Wasiluk", + "Jeff Wilde" ], "description": "Angular survey/form builder and viewer inspired by Google Forms", - "main": "", "moduleType": [], "keywords": [ "angular", diff --git a/package.json b/package.json index 2e47316..17bec7d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "angular-surveys", - "version": "0.1.0", + "version": "0.1.1", "description": "Angular survey/form builder and viewer inspired by Google Forms", "main": "gulpfile.js", "devDependencies": { @@ -36,7 +36,7 @@ }, "repository": { "type": "git", - "url": "git+https://github.com/mwasiluk/angular-surveys.git" + "url": "git+https://github.com/gofreddo/angular-surveys.git" }, "keywords": [ "angular", @@ -47,7 +47,7 @@ "author": "Michal Wasiluk", "license": "Apache 2.0", "bugs": { - "url": "https://github.com/mwasiluk/angular-surveys/issues" + "url": "https://github.com/gofreddo/angular-surveys/issues" }, - "homepage": "https://github.com/mwasiluk/angular-surveys#readme" + "homepage": "https://github.com/gofreddo/angular-surveys#readme" } From 986ace27a43071b7a088f60fe458d616e2b46942 Mon Sep 17 00:00:00 2001 From: jeff wilde Date: Wed, 16 Mar 2016 16:57:57 -0600 Subject: [PATCH 04/14] v0.4.1 --- bower.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bower.json b/bower.json index 69f8f3e..11c6b54 100644 --- a/bower.json +++ b/bower.json @@ -38,5 +38,6 @@ "angular-translate-loader-partial": "2.x", "angular-translate-loader-static-files": "2.x", "angular-mocks": "~1.4.8" - } + }, + "version": "0.4.1" } From 87d4b31a3edad04cbdde14570e76276d34381003 Mon Sep 17 00:00:00 2001 From: jeff wilde Date: Tue, 22 Mar 2016 15:55:00 -0600 Subject: [PATCH 05/14] adds string interpolation to elements --- demo/demo.html | 2 +- demo/demo.js | 5 ++ demo/form-data.json | 64 +++++++++++++++++++++++++- demo/template-data.json | 9 ++++ dist/form-viewer.min.js | 4 +- src/viewer/form-viewer.directive.js | 21 ++++++++- src/viewer/mw-form-question.html | 6 +-- src/viewer/mw-form-viewer-content.html | 2 +- 8 files changed, 104 insertions(+), 9 deletions(-) create mode 100644 demo/template-data.json diff --git a/demo/demo.html b/demo/demo.html index cb1c309..7cc1439 100644 --- a/demo/demo.html +++ b/demo/demo.html @@ -80,7 +80,7 @@
- +
diff --git a/demo/demo.js b/demo/demo.js index 0deecdc..74affbb 100644 --- a/demo/demo.js +++ b/demo/demo.js @@ -34,6 +34,11 @@ angular.module('app', ['mwFormBuilder', 'mwFormViewer', 'mwFormUtils', 'pascalpr .then(function(res){ ctrl.responseData = res.data; }); + + $http.get('template-data.json') + .then(function(res){ + ctrl.templateData = res.data; + }); ctrl.showResponseRata=false; ctrl.saveResponse = function(){ diff --git a/demo/form-data.json b/demo/form-data.json index 1f35603..9cfa125 100644 --- a/demo/form-data.json +++ b/demo/form-data.json @@ -100,6 +100,68 @@ "pageFlowModifier": false, "otherAnswer": true } + }, + { + "id": "24490cf9c495cb33d4c8d2a0f813b817", + "orderNo": 5, + "type": "question", + "question": { + "id": "edb85ee7c9da14ffeb15bb9f8cfaffd3", + "text": "Is {{price}} a fair price?", + "type": "radio", + "required": true, + "offeredAnswers": [ + { + "id": "68a49a4f13203098f0fc6a744c1fe704", + "orderNo": 1, + "value": "yes", + "pageFlow": { + "nextPage": true, + "label": "mwForm.pageFlow.goToNextPage" + } + }, + { + "id": "53e006974790df5099ab26e9f2ce9c06", + "orderNo": 2, + "value": "{{noAnswer}}", + "pageFlow": { + "nextPage": true, + "label": "mwForm.pageFlow.goToNextPage" + } + } + ] + } + }, + { + "id": "ee297f58ceec1470c9db35559409755c", + "orderNo": 6, + "type": "question", + "question": { + "id": "a7106ec0fba810a84899b8579f5fd924", + "text": "Is {{person.name}} age {{person.age}}?", + "type": "radio", + "required": true, + "offeredAnswers": [ + { + "id": "ae38733fc632753099f430b1c1ffcefc", + "orderNo": 1, + "value": "yes", + "pageFlow": { + "nextPage": true, + "label": "mwForm.pageFlow.goToNextPage" + } + }, + { + "id": "61a226f242d86522a49b786c654c4165", + "orderNo": 2, + "value": "no", + "pageFlow": { + "nextPage": true, + "label": "mwForm.pageFlow.goToNextPage" + } + } + ] + } } ], "namedPage": false @@ -231,7 +293,7 @@ "type": "paragraph", "paragraph": { "id": "12448073a8702376af0b427b63022926", - "html": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam quis nunc quis nisi lacinia commodo quis in urna. Maecenas dictum urna eget fringilla vehicula. Morbi congue id dolor vel volutpat. Aenean suscipit lectus velit, eget eleifend massa pretium quis. Cras quis pharetra nulla. Proin porttitor fermentum est, eu aliquam velit porttitor quis. Sed non bibendum odio, a pellentesque neque. Donec eu lectus vitae nisl ornare aliquet. Donec ornare felis non elit malesuada tincidunt. Praesent ipsum augue, venenatis in auctor vel, aliquet et augue. Ut efficitur elit eu elit fringilla, imperdiet suscipit libero consequat. Ut in metus libero. Nullam vestibulum, augue nec varius elementum, erat orci iaculis neque, quis varius ante leo eu lectus. Vestibulum eget ante enim. Nulla lobortis, felis sed mattis posuere, urna leo pharetra mi, ut elementum augue erat sed odio. In mattis, orci nec maximus fermentum, tellus lacus porta purus, sed scelerisque massa justo id nunc." + "html": "Lorem {{templateData}} ipsum dolor sit amet, consectetur adipiscing elit. Nullam quis nunc quis nisi lacinia commodo quis in urna. Maecenas dictum urna eget fringilla vehicula. Morbi congue id dolor vel volutpat. Aenean suscipit lectus velit, eget eleifend massa pretium quis. Cras quis pharetra nulla. Proin porttitor fermentum est, eu aliquam velit porttitor quis. Sed non bibendum odio, a pellentesque neque. Donec eu lectus vitae nisl ornare aliquet. Donec ornare felis non elit malesuada tincidunt. Praesent ipsum augue, venenatis in auctor vel, aliquet et augue. Ut efficitur elit eu elit fringilla, imperdiet suscipit libero consequat. Ut in metus libero. Nullam vestibulum, augue nec varius elementum, erat orci iaculis neque, quis varius ante leo eu lectus. Vestibulum eget ante enim. Nulla lobortis, felis sed mattis posuere, urna leo pharetra mi, ut elementum augue erat sed odio. In mattis, orci nec maximus fermentum, tellus lacus porta purus, sed scelerisque massa justo id nunc." } }, { diff --git a/demo/template-data.json b/demo/template-data.json new file mode 100644 index 0000000..daa9275 --- /dev/null +++ b/demo/template-data.json @@ -0,0 +1,9 @@ +{ + "price": 1.13, + "noAnswer" : "no", + "person": { + "name": "Bob", + "age": 33 + }, + "templateData": "from template" +} \ No newline at end of file diff --git a/dist/form-viewer.min.js b/dist/form-viewer.min.js index 83f0667..ee5e3d9 100644 --- a/dist/form-viewer.min.js +++ b/dist/form-viewer.min.js @@ -1,6 +1,6 @@ angular.module("mwFormViewer",["ngSanitize","ui.bootstrap","ng-sortable","pascalprecht.translate"]); -angular.module("mwFormViewer").run(["$templateCache",function(e){e.put("mw-form-confirmation-page.html","
{{ctrl.confirmationMessage}} Twoja odpowiedź została zapisana
Bład. Twoja odpowiedź nie została zapisana.
Zapisywanie odpowiedzi w trakcie.
"),e.put("mw-form-question.html",'
{{ctrl.question.text}} *
{{::row.label}}
{{::ctrl.question.unit}}
{{ctrl.question.unit}} z wymaganych {{ctrl.question.quantity}} {{ctrl.question.unit}}
{{ctrl.questionResponse.answer}}
'),e.put("mw-form-viewer-content.html",'

{{ctrl.formData.name}}

{{ctrl.formData.description}}

{{ctrl.currentPage.name}}

{{pageElement.image.caption}}

'),e.put("mw-form-viewer.html","
"),e.put("mw-priority-list.html",'
SortedAvailable
{{$index+1}}. {{::ctrl.idToItem[item.id].value}}
{{::ctrl.idToItem[item.id].value}}
')}]); +angular.module("mwFormViewer").run(["$templateCache",function(e){e.put("mw-form-confirmation-page.html","
{{ctrl.confirmationMessage}} Twoja odpowiedź została zapisana
Bład. Twoja odpowiedź nie została zapisana.
Zapisywanie odpowiedzi w trakcie.
"),e.put("mw-form-question.html",'
{{ctrl.question.displayText}} *
{{::row.label}}
{{::ctrl.question.unit}}
{{ctrl.question.unit}} z wymaganych {{ctrl.question.quantity}} {{ctrl.question.unit}}
{{ctrl.questionResponse.answer}}
'),e.put("mw-form-viewer-content.html",'

{{ctrl.formData.name}}

{{ctrl.formData.description}}

{{ctrl.currentPage.name}}

{{pageElement.image.caption}}

'),e.put("mw-form-viewer.html","
"),e.put("mw-priority-list.html",'
SortedAvailable
{{$index+1}}. {{::ctrl.idToItem[item.id].value}}
{{::ctrl.idToItem[item.id].value}}
')}]); angular.module("mwFormViewer").directive("mwPriorityList",function(){return{replace:!0,restrict:"AE",require:"^mwFormQuestion",scope:{question:"=",questionResponse:"=",readOnly:"=?",options:"=?"},templateUrl:"mw-priority-list.html",controllerAs:"ctrl",bindToController:!0,controller:function(){function i(i){if(i)for(var e=0;e0&&n.setCurrentPage(n.formData.pages[0])},n.resetPages=function(){n.prevPages=[],n.currentPage=null,n.nextPage=null,n.formSubmitted=!1,n.options.autoStart&&n.beginResponse()},n.resetPages(),n.goToPrevPage=function(){var e=n.prevPages.pop();n.setCurrentPage(e),n.updateNextPageBasedOnAllAnswers()},n.goToNextPage=function(){n.prevPages.push(n.currentPage),n.updateNextPageBasedOnAllAnswers(),n.setCurrentPage(n.nextPage)},n.updateNextPageBasedOnAllAnswers=function(){n.currentPage.elements.forEach(function(e){n.updateNextPageBasedOnPageElementAnswers(e)}),n.buttons.submitForm.visible=!n.nextPage,n.buttons.nextPage.visible=!!n.nextPage},n.updateNextPageBasedOnPageElementAnswers=function(e){var t=e.question;t&&t.pageFlowModifier&&t.offeredAnswers.forEach(function(e){e.pageFlow&&n.responseData[t.id].selectedAnswer==e.id&&(e.pageFlow.formSubmit?n.nextPage=null:e.pageFlow.page&&(n.nextPage=n.pageIdToPage[e.pageFlow.page.id]))})},n.onResponseChanged=function(e){n.setDefaultNextPage(),n.updateNextPageBasedOnAllAnswers()},n.api&&(n.api.reset=function(){for(var t in n.responseData)n.responseData.hasOwnProperty(t)&&delete n.responseData[t];n.buttons.submitForm.visible=!1,n.buttons.prevPage.visible=!1,n.buttons.nextPage.visible=!1,n.currentPage=null,e(n.resetPages,0)})}],link:function(e,t,n){var a=e.ctrl;a.formStatus&&(a.formStatus.form=a.form)}}}); +angular.module("mwFormViewer").directive("mwFormViewer",function(){return{replace:!0,restrict:"AE",scope:{formData:"=",responseData:"=",templateData:"=?",readOnly:"=?",options:"=?",formStatus:"=?",onSubmit:"&",api:"=?"},templateUrl:"mw-form-viewer.html",controllerAs:"ctrl",bindToController:!0,controller:["$timeout","$interpolate",function(e,t){function a(){n.formData.pages.sort(function(e,t){return e.number-t.number})}var n=this;n.defaultOptions={nestedForm:!1,autoStart:!1},n.options=angular.extend({},n.defaultOptions,n.options),n.submitStatus="NOT_SUBMITTED",n.formSubmitted=!1,a(),n.pageIdToPage={},n.formData.pages.forEach(function(e){n.pageIdToPage[e.id]=e}),n.showElement=function(e){return e.question?void 0===e.question.visibleIf?!0:e.question.visibleIf===!1?!0:n.responseData[e.question.visibleIfQuestion.id].selectedAnswer===e.question.visibleIfAnswer:!0},n.buttons={prevPage:{visible:!1,disabled:!1},nextPage:{visible:!1,disabled:!1},submitForm:{visible:!1,disabled:!1}},n.submitForm=function(){n.formSubmitted=!0,n.submitStatus="IN_PROGRESS",n.setCurrentPage(null);var e=n.onSubmit();e.then(function(){n.submitStatus="SUCCESS"})["catch"](function(){n.submitStatus="ERROR"})},n.setCurrentPage=function(e){return n.currentPage=e,e?(n.setDefaultNextPage(),void n.initResponsesForCurrentPage()):(n.buttons.submitForm.visible=!1,n.buttons.prevPage.visible=!1,void(n.buttons.nextPage.visible=!1))},n.setDefaultNextPage=function(){var e=n.formData.pages.indexOf(n.currentPage);if(n.currentPage.isFirst=0==e,n.currentPage.isLast=e==n.formData.pages.length-1,n.buttons.submitForm.visible=n.currentPage.isLast,n.buttons.prevPage.visible=!n.currentPage.isFirst,n.buttons.nextPage.visible=!n.currentPage.isLast,n.currentPage.isLast?n.nextPage=null:n.nextPage=n.formData.pages[e+1],n.currentPage.pageFlow){var t=!1;n.currentPage.pageFlow.formSubmit?(n.nextPage=null,t=!0):n.currentPage.pageFlow.page?(n.nextPage=n.pageIdToPage[n.currentPage.pageFlow.page.id],n.buttons.nextPage.visible=!0):n.currentPage.isLast&&(n.nextPage=null,t=!0),n.buttons.submitForm.visible=t,n.buttons.nextPage.visible=!t}},n.applyTemplateDataToElement=function(e){n.templateData&&(e.paragraph&&(e.paragraph.displayHtml=t(e.paragraph.html)(n.templateData)),e.question&&(e.question.displayText=t(e.question.text)(n.templateData),e.question.offeredAnswers&&e.question.offeredAnswers.forEach(function(e){e.displayValue=t(e.value)(n.templateData)})))},n.initResponsesForCurrentPage=function(){n.currentPage.elements.forEach(function(e){var t=e.question;t&&!n.responseData[t.id]&&(n.responseData[t.id]={}),n.applyTemplateDataToElement(e)})},n.beginResponse=function(){n.formData.pages.length>0&&n.setCurrentPage(n.formData.pages[0])},n.resetPages=function(){n.prevPages=[],n.currentPage=null,n.nextPage=null,n.formSubmitted=!1,n.options.autoStart&&n.beginResponse()},n.resetPages(),n.goToPrevPage=function(){var e=n.prevPages.pop();n.setCurrentPage(e),n.updateNextPageBasedOnAllAnswers()},n.goToNextPage=function(){n.prevPages.push(n.currentPage),n.updateNextPageBasedOnAllAnswers(),n.setCurrentPage(n.nextPage)},n.updateNextPageBasedOnAllAnswers=function(){n.currentPage.elements.forEach(function(e){n.updateNextPageBasedOnPageElementAnswers(e)}),n.buttons.submitForm.visible=!n.nextPage,n.buttons.nextPage.visible=!!n.nextPage},n.updateNextPageBasedOnPageElementAnswers=function(e){var t=e.question;t&&t.pageFlowModifier&&t.offeredAnswers.forEach(function(e){e.pageFlow&&n.responseData[t.id].selectedAnswer==e.id&&(e.pageFlow.formSubmit?n.nextPage=null:e.pageFlow.page&&(n.nextPage=n.pageIdToPage[e.pageFlow.page.id]))})},n.onResponseChanged=function(e){n.setDefaultNextPage(),n.updateNextPageBasedOnAllAnswers()},n.api&&(n.api.reset=function(){for(var t in n.responseData)n.responseData.hasOwnProperty(t)&&delete n.responseData[t];n.buttons.submitForm.visible=!1,n.buttons.prevPage.visible=!1,n.buttons.nextPage.visible=!1,n.currentPage=null,e(n.resetPages,0)})}],link:function(e,t,a){var n=e.ctrl;n.formStatus&&(n.formStatus.form=n.form)}}}); angular.module("mwFormViewer").factory("FormQuestionId",function(){var e=0;return{next:function(){return++e}}}).directive("mwFormQuestion",function(){return{replace:!0,restrict:"AE",require:"^mwFormViewer",scope:{question:"=",questionResponse:"=",readOnly:"=?",options:"=?",onResponseChanged:"&?"},templateUrl:"mw-form-question.html",controllerAs:"ctrl",bindToController:!0,controller:["$timeout","FormQuestionId",function(e,s){var n=this;n.id=s.next(),"radio"==n.question.type?(n.questionResponse.selectedAnswer||(n.questionResponse.selectedAnswer=null),n.questionResponse.other&&(n.isOtherAnswer=!0)):"checkbox"==n.question.type?(n.questionResponse.selectedAnswers&&n.questionResponse.selectedAnswers.length?n.selectedAnswer=!0:n.questionResponse.selectedAnswers=[],n.questionResponse.other&&(n.isOtherAnswer=!0)):"grid"==n.question.type||"division"==n.question.type&&(n.computeDivisionSum=function(){n.divisionSum=0,n.question.divisionList.forEach(function(e){0==n.questionResponse[e.id]||n.questionResponse[e.id]?n.divisionSum+=n.questionResponse[e.id]:(n.questionResponse[e.id]=null,n.divisionSum+=0)})},n.computeDivisionSum()),n.isAnswerSelected=!1,n.selectedAnswerChanged=function(){delete n.questionResponse.other,n.isOtherAnswer=!1,n.answerChanged()},n.otherAnswerRadioChanged=function(){n.isOtherAnswer&&(n.questionResponse.selectedAnswer=null),n.answerChanged()},n.otherAnswerCheckboxChanged=function(){n.isOtherAnswer||delete n.questionResponse.other,n.selectedAnswer=n.questionResponse.selectedAnswers.length||n.isOtherAnswer?!0:null,n.answerChanged()},n.toggleSelectedAnswer=function(e){-1===n.questionResponse.selectedAnswers.indexOf(e.id)?n.questionResponse.selectedAnswers.push(e.id):n.questionResponse.selectedAnswers.splice(n.questionResponse.selectedAnswers.indexOf(e.id),1),n.selectedAnswer=n.questionResponse.selectedAnswers.length||n.isOtherAnswer?!0:null,n.answerChanged()},n.answerChanged=function(){n.onResponseChanged&&n.onResponseChanged()}}],link:function(e,s,n,o){e.ctrl}}}); angular.module("mwFormViewer").directive("mwFormConfirmationPage",function(){return{replace:!0,restrict:"AE",require:"^mwFormViewer",scope:{submitStatus:"=",confirmationMessage:"=",readOnly:"=?"},templateUrl:"mw-form-confirmation-page.html",controllerAs:"ctrl",bindToController:!0,controller:function(){},link:function(r,e,o,t){r.ctrl}}}); \ No newline at end of file diff --git a/src/viewer/form-viewer.directive.js b/src/viewer/form-viewer.directive.js index c703e72..22fad5e 100644 --- a/src/viewer/form-viewer.directive.js +++ b/src/viewer/form-viewer.directive.js @@ -7,6 +7,7 @@ angular.module('mwFormViewer').directive('mwFormViewer', function () { scope: { formData: '=', responseData: '=', + templateData: '=?', readOnly: '=?', options: '=?', formStatus: '=?', //wrapper for internal angular form object @@ -17,7 +18,7 @@ angular.module('mwFormViewer').directive('mwFormViewer', function () { templateUrl: 'mw-form-viewer.html', controllerAs: 'ctrl', bindToController: true, - controller: function($timeout){ + controller: function($timeout, $interpolate){ var ctrl = this; ctrl.defaultOptions = { @@ -135,6 +136,23 @@ angular.module('mwFormViewer').directive('mwFormViewer', function () { ctrl.buttons.nextPage.visible=!formSubmit; } }; + + ctrl.applyTemplateDataToElement = function(element){ + if (ctrl.templateData){ + if (element.paragraph){ + element.paragraph.displayHtml = $interpolate(element.paragraph.html)(ctrl.templateData); + } + if (element.question){ + element.question.displayText = $interpolate(element.question.text)(ctrl.templateData); + + if (element.question.offeredAnswers){ + element.question.offeredAnswers.forEach(function (offeredAnswer){ + offeredAnswer.displayValue = $interpolate(offeredAnswer.value)(ctrl.templateData); + }); + } + } + } + }; ctrl.initResponsesForCurrentPage = function(){ ctrl.currentPage.elements.forEach(function(element){ @@ -142,6 +160,7 @@ angular.module('mwFormViewer').directive('mwFormViewer', function () { if(question && !ctrl.responseData[question.id]){ ctrl.responseData[question.id]={}; } + ctrl.applyTemplateDataToElement(element); }); }; diff --git a/src/viewer/mw-form-question.html b/src/viewer/mw-form-question.html index cabc029..9be85fd 100644 --- a/src/viewer/mw-form-question.html +++ b/src/viewer/mw-form-question.html @@ -1,7 +1,7 @@
- {{ctrl.question.text}} * + {{ctrl.question.displayText}} *
@@ -15,7 +15,7 @@
@@ -33,7 +33,7 @@
diff --git a/src/viewer/mw-form-viewer-content.html b/src/viewer/mw-form-viewer-content.html index 4d9886a..c1c37ec 100644 --- a/src/viewer/mw-form-viewer-content.html +++ b/src/viewer/mw-form-viewer-content.html @@ -21,7 +21,7 @@

-

+

From 7e73da0ab36077a3737cb1a2c36bed064f172583 Mon Sep 17 00:00:00 2001 From: jeff wilde Date: Wed, 23 Mar 2016 15:31:30 -0600 Subject: [PATCH 06/14] fixes bug in element templates --- dist/form-viewer.min.js | 2 +- src/viewer/form-viewer.directive.js | 26 +++++++++++++------------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/dist/form-viewer.min.js b/dist/form-viewer.min.js index ee5e3d9..43a510e 100644 --- a/dist/form-viewer.min.js +++ b/dist/form-viewer.min.js @@ -1,6 +1,6 @@ angular.module("mwFormViewer",["ngSanitize","ui.bootstrap","ng-sortable","pascalprecht.translate"]); angular.module("mwFormViewer").run(["$templateCache",function(e){e.put("mw-form-confirmation-page.html","
{{ctrl.confirmationMessage}} Twoja odpowiedź została zapisana
Bład. Twoja odpowiedź nie została zapisana.
Zapisywanie odpowiedzi w trakcie.
"),e.put("mw-form-question.html",'
{{ctrl.question.displayText}} *
{{::row.label}}
{{::ctrl.question.unit}}
{{ctrl.question.unit}} z wymaganych {{ctrl.question.quantity}} {{ctrl.question.unit}}
{{ctrl.questionResponse.answer}}
'),e.put("mw-form-viewer-content.html",'

{{ctrl.formData.name}}

{{ctrl.formData.description}}

{{ctrl.currentPage.name}}

{{pageElement.image.caption}}

'),e.put("mw-form-viewer.html","
"),e.put("mw-priority-list.html",'
SortedAvailable
{{$index+1}}. {{::ctrl.idToItem[item.id].value}}
{{::ctrl.idToItem[item.id].value}}
')}]); angular.module("mwFormViewer").directive("mwPriorityList",function(){return{replace:!0,restrict:"AE",require:"^mwFormQuestion",scope:{question:"=",questionResponse:"=",readOnly:"=?",options:"=?"},templateUrl:"mw-priority-list.html",controllerAs:"ctrl",bindToController:!0,controller:function(){function i(i){if(i)for(var e=0;e0&&n.setCurrentPage(n.formData.pages[0])},n.resetPages=function(){n.prevPages=[],n.currentPage=null,n.nextPage=null,n.formSubmitted=!1,n.options.autoStart&&n.beginResponse()},n.resetPages(),n.goToPrevPage=function(){var e=n.prevPages.pop();n.setCurrentPage(e),n.updateNextPageBasedOnAllAnswers()},n.goToNextPage=function(){n.prevPages.push(n.currentPage),n.updateNextPageBasedOnAllAnswers(),n.setCurrentPage(n.nextPage)},n.updateNextPageBasedOnAllAnswers=function(){n.currentPage.elements.forEach(function(e){n.updateNextPageBasedOnPageElementAnswers(e)}),n.buttons.submitForm.visible=!n.nextPage,n.buttons.nextPage.visible=!!n.nextPage},n.updateNextPageBasedOnPageElementAnswers=function(e){var t=e.question;t&&t.pageFlowModifier&&t.offeredAnswers.forEach(function(e){e.pageFlow&&n.responseData[t.id].selectedAnswer==e.id&&(e.pageFlow.formSubmit?n.nextPage=null:e.pageFlow.page&&(n.nextPage=n.pageIdToPage[e.pageFlow.page.id]))})},n.onResponseChanged=function(e){n.setDefaultNextPage(),n.updateNextPageBasedOnAllAnswers()},n.api&&(n.api.reset=function(){for(var t in n.responseData)n.responseData.hasOwnProperty(t)&&delete n.responseData[t];n.buttons.submitForm.visible=!1,n.buttons.prevPage.visible=!1,n.buttons.nextPage.visible=!1,n.currentPage=null,e(n.resetPages,0)})}],link:function(e,t,a){var n=e.ctrl;n.formStatus&&(n.formStatus.form=n.form)}}}); +angular.module("mwFormViewer").directive("mwFormViewer",function(){return{replace:!0,restrict:"AE",scope:{formData:"=",responseData:"=",templateData:"=?",readOnly:"=?",options:"=?",formStatus:"=?",onSubmit:"&",api:"=?"},templateUrl:"mw-form-viewer.html",controllerAs:"ctrl",bindToController:!0,controller:["$timeout","$interpolate",function(e,t){function a(){n.formData.pages.sort(function(e,t){return e.number-t.number})}var n=this;n.defaultOptions={nestedForm:!1,autoStart:!1},n.options=angular.extend({},n.defaultOptions,n.options),n.submitStatus="NOT_SUBMITTED",n.formSubmitted=!1,a(),n.pageIdToPage={},n.formData.pages.forEach(function(e){n.pageIdToPage[e.id]=e}),n.showElement=function(e){return e.question?void 0===e.question.visibleIf?!0:e.question.visibleIf===!1?!0:n.responseData[e.question.visibleIfQuestion.id].selectedAnswer===e.question.visibleIfAnswer:!0},n.buttons={prevPage:{visible:!1,disabled:!1},nextPage:{visible:!1,disabled:!1},submitForm:{visible:!1,disabled:!1}},n.submitForm=function(){n.formSubmitted=!0,n.submitStatus="IN_PROGRESS",n.setCurrentPage(null);var e=n.onSubmit();e.then(function(){n.submitStatus="SUCCESS"})["catch"](function(){n.submitStatus="ERROR"})},n.setCurrentPage=function(e){return n.currentPage=e,e?(n.setDefaultNextPage(),void n.initResponsesForCurrentPage()):(n.buttons.submitForm.visible=!1,n.buttons.prevPage.visible=!1,void(n.buttons.nextPage.visible=!1))},n.setDefaultNextPage=function(){var e=n.formData.pages.indexOf(n.currentPage);if(n.currentPage.isFirst=0==e,n.currentPage.isLast=e==n.formData.pages.length-1,n.buttons.submitForm.visible=n.currentPage.isLast,n.buttons.prevPage.visible=!n.currentPage.isFirst,n.buttons.nextPage.visible=!n.currentPage.isLast,n.currentPage.isLast?n.nextPage=null:n.nextPage=n.formData.pages[e+1],n.currentPage.pageFlow){var t=!1;n.currentPage.pageFlow.formSubmit?(n.nextPage=null,t=!0):n.currentPage.pageFlow.page?(n.nextPage=n.pageIdToPage[n.currentPage.pageFlow.page.id],n.buttons.nextPage.visible=!0):n.currentPage.isLast&&(n.nextPage=null,t=!0),n.buttons.submitForm.visible=t,n.buttons.nextPage.visible=!t}},n.applyTemplateDataToElement=function(e){var a=Object.assign({},n.templateData);e.paragraph&&(e.paragraph.displayHtml=t(e.paragraph.html)(a)),e.question&&(e.question.displayText=t(e.question.text)(a),e.question.offeredAnswers&&e.question.offeredAnswers.forEach(function(e){e.displayValue=t(e.value)(a)}))},n.initResponsesForCurrentPage=function(){n.currentPage.elements.forEach(function(e){var t=e.question;t&&!n.responseData[t.id]&&(n.responseData[t.id]={}),n.applyTemplateDataToElement(e)})},n.beginResponse=function(){n.formData.pages.length>0&&n.setCurrentPage(n.formData.pages[0])},n.resetPages=function(){n.prevPages=[],n.currentPage=null,n.nextPage=null,n.formSubmitted=!1,n.options.autoStart&&n.beginResponse()},n.resetPages(),n.goToPrevPage=function(){var e=n.prevPages.pop();n.setCurrentPage(e),n.updateNextPageBasedOnAllAnswers()},n.goToNextPage=function(){n.prevPages.push(n.currentPage),n.updateNextPageBasedOnAllAnswers(),n.setCurrentPage(n.nextPage)},n.updateNextPageBasedOnAllAnswers=function(){n.currentPage.elements.forEach(function(e){n.updateNextPageBasedOnPageElementAnswers(e)}),n.buttons.submitForm.visible=!n.nextPage,n.buttons.nextPage.visible=!!n.nextPage},n.updateNextPageBasedOnPageElementAnswers=function(e){var t=e.question;t&&t.pageFlowModifier&&t.offeredAnswers.forEach(function(e){e.pageFlow&&n.responseData[t.id].selectedAnswer==e.id&&(e.pageFlow.formSubmit?n.nextPage=null:e.pageFlow.page&&(n.nextPage=n.pageIdToPage[e.pageFlow.page.id]))})},n.onResponseChanged=function(e){n.setDefaultNextPage(),n.updateNextPageBasedOnAllAnswers()},n.api&&(n.api.reset=function(){for(var t in n.responseData)n.responseData.hasOwnProperty(t)&&delete n.responseData[t];n.buttons.submitForm.visible=!1,n.buttons.prevPage.visible=!1,n.buttons.nextPage.visible=!1,n.currentPage=null,e(n.resetPages,0)})}],link:function(e,t,a){var n=e.ctrl;n.formStatus&&(n.formStatus.form=n.form)}}}); angular.module("mwFormViewer").factory("FormQuestionId",function(){var e=0;return{next:function(){return++e}}}).directive("mwFormQuestion",function(){return{replace:!0,restrict:"AE",require:"^mwFormViewer",scope:{question:"=",questionResponse:"=",readOnly:"=?",options:"=?",onResponseChanged:"&?"},templateUrl:"mw-form-question.html",controllerAs:"ctrl",bindToController:!0,controller:["$timeout","FormQuestionId",function(e,s){var n=this;n.id=s.next(),"radio"==n.question.type?(n.questionResponse.selectedAnswer||(n.questionResponse.selectedAnswer=null),n.questionResponse.other&&(n.isOtherAnswer=!0)):"checkbox"==n.question.type?(n.questionResponse.selectedAnswers&&n.questionResponse.selectedAnswers.length?n.selectedAnswer=!0:n.questionResponse.selectedAnswers=[],n.questionResponse.other&&(n.isOtherAnswer=!0)):"grid"==n.question.type||"division"==n.question.type&&(n.computeDivisionSum=function(){n.divisionSum=0,n.question.divisionList.forEach(function(e){0==n.questionResponse[e.id]||n.questionResponse[e.id]?n.divisionSum+=n.questionResponse[e.id]:(n.questionResponse[e.id]=null,n.divisionSum+=0)})},n.computeDivisionSum()),n.isAnswerSelected=!1,n.selectedAnswerChanged=function(){delete n.questionResponse.other,n.isOtherAnswer=!1,n.answerChanged()},n.otherAnswerRadioChanged=function(){n.isOtherAnswer&&(n.questionResponse.selectedAnswer=null),n.answerChanged()},n.otherAnswerCheckboxChanged=function(){n.isOtherAnswer||delete n.questionResponse.other,n.selectedAnswer=n.questionResponse.selectedAnswers.length||n.isOtherAnswer?!0:null,n.answerChanged()},n.toggleSelectedAnswer=function(e){-1===n.questionResponse.selectedAnswers.indexOf(e.id)?n.questionResponse.selectedAnswers.push(e.id):n.questionResponse.selectedAnswers.splice(n.questionResponse.selectedAnswers.indexOf(e.id),1),n.selectedAnswer=n.questionResponse.selectedAnswers.length||n.isOtherAnswer?!0:null,n.answerChanged()},n.answerChanged=function(){n.onResponseChanged&&n.onResponseChanged()}}],link:function(e,s,n,o){e.ctrl}}}); angular.module("mwFormViewer").directive("mwFormConfirmationPage",function(){return{replace:!0,restrict:"AE",require:"^mwFormViewer",scope:{submitStatus:"=",confirmationMessage:"=",readOnly:"=?"},templateUrl:"mw-form-confirmation-page.html",controllerAs:"ctrl",bindToController:!0,controller:function(){},link:function(r,e,o,t){r.ctrl}}}); \ No newline at end of file diff --git a/src/viewer/form-viewer.directive.js b/src/viewer/form-viewer.directive.js index 22fad5e..f62fe11 100644 --- a/src/viewer/form-viewer.directive.js +++ b/src/viewer/form-viewer.directive.js @@ -138,20 +138,20 @@ angular.module('mwFormViewer').directive('mwFormViewer', function () { }; ctrl.applyTemplateDataToElement = function(element){ - if (ctrl.templateData){ - if (element.paragraph){ - element.paragraph.displayHtml = $interpolate(element.paragraph.html)(ctrl.templateData); - } - if (element.question){ - element.question.displayText = $interpolate(element.question.text)(ctrl.templateData); - - if (element.question.offeredAnswers){ - element.question.offeredAnswers.forEach(function (offeredAnswer){ - offeredAnswer.displayValue = $interpolate(offeredAnswer.value)(ctrl.templateData); - }); - } - } + var templateData = Object.assign({}, ctrl.templateData); + + if (element.paragraph){ + element.paragraph.displayHtml = $interpolate(element.paragraph.html)(templateData); } + if (element.question){ + element.question.displayText = $interpolate(element.question.text)(templateData); + + if (element.question.offeredAnswers){ + element.question.offeredAnswers.forEach(function (offeredAnswer){ + offeredAnswer.displayValue = $interpolate(offeredAnswer.value)(templateData); + }); + } + } }; ctrl.initResponsesForCurrentPage = function(){ From e913bda2a4fd9183e5e374ad8119adf50d3915cb Mon Sep 17 00:00:00 2001 From: jeff wilde Date: Wed, 23 Mar 2016 16:10:31 -0600 Subject: [PATCH 07/14] fix dist --- dist/form-builder.min.js | 11 ++--------- dist/form-viewer.min.js | 14 +++----------- 2 files changed, 5 insertions(+), 20 deletions(-) diff --git a/dist/form-builder.min.js b/dist/form-builder.min.js index 9a2b2f5..281317b 100644 --- a/dist/form-builder.min.js +++ b/dist/form-builder.min.js @@ -1,20 +1,13 @@ angular.module("mwFormBuilder",["ngSanitize","ui.bootstrap","ng-sortable","pascalprecht.translate"]); angular.module("mwFormBuilder").service("mwFormUuid",function(){function r(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}this.get=function(){return r()+r()+r()+r()+r()+r()+r()+r()}}).factory("mwFormClone",["mwFormUuid",function(r){var e={},n=[];return e.resetIds=function(t,a){if(a&&(n=[]),!(n.indexOf(t)>=0)&&(n.push(t),!t!==Object(t))){if(Array.isArray(t))return void t.forEach(e.resetIds);for(var o in t)t.hasOwnProperty(o)&&e.resetIds(t[o]);if(t.hasOwnProperty("id")){var i=r.get();t.id;t.id=i}}},e.cloneElement=function(r){var n={};return angular.copy(r,n),e.resetIds(n,!0),n},e.clonePage=function(n){var t={};angular.copy(n,t),t.id=r.get();var a=[];if(Array.isArray(n.elements))for(var o=0;o
'),e.put("mw-form-confirmation-page-builder.html",'
Strona potwierdzenia
'),e.put("mw-form-image-builder.html",'


{{ctrl.image.caption}}
'),e.put("mw-form-page-builder.html",'
Strona 1 z 3
Brak elementów
'),e.put("mw-form-page-element-builder.html",'
'),e.put("mw-form-paragraph-builder.html",'

'),e.put("mw-form-question-builder.html",'
Min: Max:

Range from to



{{ctrl.question.text}} *
{{row.label}}
SortedAvailable
{{::item.value}}
{{ctrl.question.unit}}
{{ctrl.question.unit}} z wymaganych {{ctrl.question.quantity}} {{ctrl.question.unit}}
'),e.put("mw-label.html",""),e.put("mw-question-division-builder.html",'
'),e.put("mw-question-grid-builder.html",'
'),e.put("mw-question-offered-answer-list-builder.html",'
lub
'),e.put("mw-question-priority-list-builder.html",'
')}]); -======= -angular.module("mwFormBuilder").run(["$templateCache",function(e){e.put("mw-form-builder.html",'
'),e.put("mw-form-confirmation-page-builder.html",'
Strona potwierdzenia
'),e.put("mw-form-image-builder.html",'


{{ctrl.image.caption}}
'),e.put("mw-form-page-builder.html",'
Strona 1 z 3
Brak elementów
'),e.put("mw-form-page-element-builder.html",'
'),e.put("mw-form-paragraph-builder.html",'

'),e.put("mw-form-question-builder.html",'
Min: Max:

Range from to



{{ctrl.question.text}} *
{{row.label}}
SortedAvailable
{{::item.value}}
{{ctrl.question.unit}}
{{ctrl.question.unit}} z wymaganych {{ctrl.question.quantity}} {{ctrl.question.unit}}
'),e.put("mw-label.html",""),e.put("mw-question-division-builder.html",'
'),e.put("mw-question-grid-builder.html",'
'),e.put("mw-question-offered-answer-list-builder.html",'
lub
'),e.put("mw-question-priority-list-builder.html",'
')}]); ->>>>>>> mwasiluk/master +angular.module("mwFormBuilder").run(["$templateCache",function(e){e.put("mw-form-builder.html",'
'),e.put("mw-form-confirmation-page-builder.html",'
Strona potwierdzenia
'),e.put("mw-form-image-builder.html",'


{{ctrl.image.caption}}
'),e.put("mw-form-page-builder.html",'
Strona 1 z 3
Brak elementów
'),e.put("mw-form-page-element-builder.html",'
'),e.put("mw-form-paragraph-builder.html",'

'),e.put("mw-form-question-builder.html",'
Min: Max:

Range from to



{{ctrl.question.text}} *
{{row.label}}
SortedAvailable
{{::item.value}}
{{ctrl.question.unit}}
{{ctrl.question.unit}} z wymaganych {{ctrl.question.quantity}} {{ctrl.question.unit}}
'),e.put("mw-label.html",""),e.put("mw-question-division-builder.html",'
'),e.put("mw-question-grid-builder.html",'
'),e.put("mw-question-offered-answer-list-builder.html",'
lub
'),e.put("mw-question-priority-list-builder.html",'
'); +}]); angular.module("mwFormBuilder").directive("mwQuestionPriorityListBuilder",function(){return{replace:!0,restrict:"AE",require:"^mwFormQuestionBuilder",scope:{question:"=",readOnly:"=?",options:"=?"},templateUrl:"mw-question-priority-list-builder.html",controllerAs:"ctrl",bindToController:!0,controller:["mwFormUuid",function(i){function e(i){if(i)for(var e=0;e>>>>>> mwasiluk/master angular.module("mwFormBuilder").factory("FormParagraphBuilderId",function(){var r=0;return{next:function(){return++r}}}).directive("mwFormParagraphBuilder",function(){return{replace:!0,restrict:"AE",require:"^mwFormPageElementBuilder",scope:{paragraph:"=",formObject:"=",onReady:"&",isPreview:"=?",readOnly:"=?"},templateUrl:"mw-form-paragraph-builder.html",controllerAs:"ctrl",bindToController:!0,controller:["$timeout","FormParagraphBuilderId",function(r,e){var t=this;t.id=e.next(),t.formSubmitted=!1,t.save=function(){t.formSubmitted=!0,t.form.$valid&&t.onReady()}}],link:function(r,e,t,o){r.ctrl}}}); angular.module("mwFormBuilder").directive("mwFormPageElementBuilder",function(){return{replace:!0,restrict:"AE",require:"^mwFormPageBuilder",scope:{pageElement:"=",formObject:"=",isActive:"=",isFirst:"=",isLast:"=",onReady:"&",readOnly:"=?"},templateUrl:"mw-form-page-element-builder.html",controllerAs:"ctrl",bindToController:!0,controller:["mwFormUuid",function(e){var t=this;t.callback=function(e,n){e.preventDefault(),e.stopPropagation(),n.callback&&"function"==typeof n.callback&&n.callback(t.pageElement)},t.filter=function(e){return!e.showInOpen&&t.isActive?!1:e.showInPreview||t.isActive?e.filter&&"function"==typeof e.filter?e.filter(t.pageElement):!0:!1},"question"==t.pageElement.type?t.pageElement.question||(t.pageElement.question={id:e.get(),text:null,type:null,required:!0}):"image"==t.pageElement.type?t.pageElement.image||(t.pageElement.image={id:e.get(),align:"left"}):"paragraph"==t.pageElement.type&&(t.pageElement.paragraph||(t.pageElement.paragraph={id:e.get(),html:""}))}],link:function(e,t,n,l){var o=e.ctrl;o.possiblePageFlow=l.possiblePageFlow,o.hoverIn=function(){o.isHovered=!0},o.hoverOut=function(){o.isHovered=!1},o.editElement=function(){l.selectElement(o.pageElement)},o.cloneElement=function(e){e.preventDefault(),e.stopPropagation(),l.cloneElement(o.pageElement)},o.removeElement=function(){l.removeElement(o.pageElement)},o.moveDown=function(){l.moveDownElement(o.pageElement)},o.moveUp=function(){l.moveUpElement(o.pageElement)},o.options=l.options,o.onImageSelection=l.onImageSelection}}}); angular.module("mwFormBuilder").directive("mwFormPageBuilder",function(){return{replace:!0,restrict:"AE",require:"^mwFormBuilder",scope:{formPage:"=",formObject:"=",isFirst:"=",isLast:"=",readOnly:"=?"},templateUrl:"mw-form-page-builder.html",controllerAs:"ctrl",bindToController:!0,controller:["$timeout","mwFormUuid","mwFormClone","mwFormBuilderOptions",function(e,n,o,t){function r(){for(var e=0;e=0&&a(i.formPage.elements,n,o),r()},i.isElementTypeEnabled=function(e){return-1!==t.elementTypes.indexOf(e)},i.addQuestion=function(){i.addElement("question")},i.addImage=function(){i.addElement("image")},i.addParagraph=function(){i.addElement("paragraph")},i.isElementActive=function(e){return i.activeElement==e},i.selectElement=function(e){i.activeElement=e},i.onElementReady=function(){e(function(){i.activeElement=null})},i.hoverIn=function(){i.hoverEdit=!0},i.hoverOut=function(){i.hoverEdit=!1},i.updateElementsOrderNo=r}],link:function(e,n,o,t){var r=e.ctrl;r.possiblePageFlow=t.possiblePageFlow,r.moveDown=function(){t.moveDownPage(r.formPage)},r.moveUp=function(){t.moveUpPage(r.formPage)},r.removePage=function(){t.removePage(r.formPage)},r.addPage=function(){t.addPageAfter(r.formPage)},e.$watch("ctrl.formPage.elements.length",function(e,n){e!=n&&r.updateElementsOrderNo()}),r.options=t.options,r.onImageSelection=t.onImageSelection}}}); diff --git a/dist/form-viewer.min.js b/dist/form-viewer.min.js index 3d044cd..92dc3e7 100644 --- a/dist/form-viewer.min.js +++ b/dist/form-viewer.min.js @@ -1,14 +1,6 @@ angular.module("mwFormViewer",["ngSanitize","ui.bootstrap","ng-sortable","pascalprecht.translate"]); -<<<<<<< HEAD -angular.module("mwFormViewer").run(["$templateCache",function(e){e.put("mw-form-confirmation-page.html","
{{ctrl.confirmationMessage}} Twoja odpowiedź została zapisana
Bład. Twoja odpowiedź nie została zapisana.
Zapisywanie odpowiedzi w trakcie.
"),e.put("mw-form-question.html",'
{{ctrl.question.displayText}} *
{{::row.label}}
{{::ctrl.question.unit}}
{{ctrl.question.unit}} z wymaganych {{ctrl.question.quantity}} {{ctrl.question.unit}}
{{ctrl.questionResponse.answer}}
'),e.put("mw-form-viewer-content.html",'

{{ctrl.formData.name}}

{{ctrl.formData.description}}

{{ctrl.currentPage.name}}

{{pageElement.image.caption}}

'),e.put("mw-form-viewer.html","
"),e.put("mw-priority-list.html",'
SortedAvailable
{{$index+1}}. {{::ctrl.idToItem[item.id].value}}
{{::ctrl.idToItem[item.id].value}}
')}]); -angular.module("mwFormViewer").directive("mwPriorityList",function(){return{replace:!0,restrict:"AE",require:"^mwFormQuestion",scope:{question:"=",questionResponse:"=",readOnly:"=?",options:"=?"},templateUrl:"mw-priority-list.html",controllerAs:"ctrl",bindToController:!0,controller:function(){function i(i){if(i)for(var e=0;e0&&n.setCurrentPage(n.formData.pages[0])},n.resetPages=function(){n.prevPages=[],n.currentPage=null,n.nextPage=null,n.formSubmitted=!1,n.options.autoStart&&n.beginResponse()},n.resetPages(),n.goToPrevPage=function(){var e=n.prevPages.pop();n.setCurrentPage(e),n.updateNextPageBasedOnAllAnswers()},n.goToNextPage=function(){n.prevPages.push(n.currentPage),n.updateNextPageBasedOnAllAnswers(),n.setCurrentPage(n.nextPage)},n.updateNextPageBasedOnAllAnswers=function(){n.currentPage.elements.forEach(function(e){n.updateNextPageBasedOnPageElementAnswers(e)}),n.buttons.submitForm.visible=!n.nextPage,n.buttons.nextPage.visible=!!n.nextPage},n.updateNextPageBasedOnPageElementAnswers=function(e){var t=e.question;t&&t.pageFlowModifier&&t.offeredAnswers.forEach(function(e){e.pageFlow&&n.responseData[t.id].selectedAnswer==e.id&&(e.pageFlow.formSubmit?n.nextPage=null:e.pageFlow.page&&(n.nextPage=n.pageIdToPage[e.pageFlow.page.id]))})},n.onResponseChanged=function(e){n.setDefaultNextPage(),n.updateNextPageBasedOnAllAnswers()},n.api&&(n.api.reset=function(){for(var t in n.responseData)n.responseData.hasOwnProperty(t)&&delete n.responseData[t];n.buttons.submitForm.visible=!1,n.buttons.prevPage.visible=!1,n.buttons.nextPage.visible=!1,n.currentPage=null,e(n.resetPages,0)})}],link:function(e,t,a){var n=e.ctrl;n.formStatus&&(n.formStatus.form=n.form)}}}); -angular.module("mwFormViewer").factory("FormQuestionId",function(){var e=0;return{next:function(){return++e}}}).directive("mwFormQuestion",function(){return{replace:!0,restrict:"AE",require:"^mwFormViewer",scope:{question:"=",questionResponse:"=",readOnly:"=?",options:"=?",onResponseChanged:"&?"},templateUrl:"mw-form-question.html",controllerAs:"ctrl",bindToController:!0,controller:["$timeout","FormQuestionId",function(e,s){var n=this;n.id=s.next(),"radio"==n.question.type?(n.questionResponse.selectedAnswer||(n.questionResponse.selectedAnswer=null),n.questionResponse.other&&(n.isOtherAnswer=!0)):"checkbox"==n.question.type?(n.questionResponse.selectedAnswers&&n.questionResponse.selectedAnswers.length?n.selectedAnswer=!0:n.questionResponse.selectedAnswers=[],n.questionResponse.other&&(n.isOtherAnswer=!0)):"grid"==n.question.type||"division"==n.question.type&&(n.computeDivisionSum=function(){n.divisionSum=0,n.question.divisionList.forEach(function(e){0==n.questionResponse[e.id]||n.questionResponse[e.id]?n.divisionSum+=n.questionResponse[e.id]:(n.questionResponse[e.id]=null,n.divisionSum+=0)})},n.computeDivisionSum()),n.isAnswerSelected=!1,n.selectedAnswerChanged=function(){delete n.questionResponse.other,n.isOtherAnswer=!1,n.answerChanged()},n.otherAnswerRadioChanged=function(){n.isOtherAnswer&&(n.questionResponse.selectedAnswer=null),n.answerChanged()},n.otherAnswerCheckboxChanged=function(){n.isOtherAnswer||delete n.questionResponse.other,n.selectedAnswer=n.questionResponse.selectedAnswers.length||n.isOtherAnswer?!0:null,n.answerChanged()},n.toggleSelectedAnswer=function(e){-1===n.questionResponse.selectedAnswers.indexOf(e.id)?n.questionResponse.selectedAnswers.push(e.id):n.questionResponse.selectedAnswers.splice(n.questionResponse.selectedAnswers.indexOf(e.id),1),n.selectedAnswer=n.questionResponse.selectedAnswers.length||n.isOtherAnswer?!0:null,n.answerChanged()},n.answerChanged=function(){n.onResponseChanged&&n.onResponseChanged()}}],link:function(e,s,n,o){e.ctrl}}}); -angular.module("mwFormViewer").directive("mwFormConfirmationPage",function(){return{replace:!0,restrict:"AE",require:"^mwFormViewer",scope:{submitStatus:"=",confirmationMessage:"=",readOnly:"=?"},templateUrl:"mw-form-confirmation-page.html",controllerAs:"ctrl",bindToController:!0,controller:function(){},link:function(r,e,o,t){r.ctrl}}}); -======= -angular.module("mwFormViewer").run(["$templateCache",function(e){e.put("mw-form-confirmation-page.html","
{{::ctrl.print(ctrl.confirmationMessage)}} Twoja odpowiedź została zapisana
Bład. Twoja odpowiedź nie została zapisana.
Zapisywanie odpowiedzi w trakcie.
"),e.put("mw-form-question.html",'
{{::ctrl.print(ctrl.question.text)}} *
{{::ctrl.print(row.label)}}
{{::ctrl.print(ctrl.question.unit)}}
{{ctrl.question.unit}} z wymaganych {{ctrl.question.quantity}} {{ctrl.question.unit}}
{{ctrl.questionResponse.answer}}
'),e.put("mw-form-viewer-content.html",'

{{ctrl.formData.name}}

{{ctrl.formData.description}}

{{ctrl.currentPage.name}}

{{pageElement.image.caption}}

'),e.put("mw-form-viewer.html","
"),e.put("mw-priority-list.html",'
SortedAvailable
{{$index+1}}. {{::ctrl.print(ctrl.idToItem[item.id].value)}}
{{::ctrl.print(ctrl.idToItem[item.id].value)}}
')}]); +angular.module("mwFormViewer").run(["$templateCache",function(e){e.put("mw-form-confirmation-page.html","
{{::ctrl.print(ctrl.confirmationMessage)}} Twoja odpowiedź została zapisana
Bład. Twoja odpowiedź nie została zapisana.
Zapisywanie odpowiedzi w trakcie.
"),e.put("mw-form-question.html",'
<<<<<<< HEAD {{ctrl.question.displayText}} * ======= {{::ctrl.print(ctrl.question.text)}} * >>>>>>> mwasiluk/master
{{::ctrl.print(row.label)}}
{{::ctrl.print(ctrl.question.unit)}}
{{ctrl.question.unit}} z wymaganych {{ctrl.question.quantity}} {{ctrl.question.unit}}
{{ctrl.questionResponse.answer}}
'),e.put("mw-form-viewer-content.html",'

{{ctrl.formData.name}}

{{ctrl.formData.description}}

{{ctrl.currentPage.name}}

{{pageElement.image.caption}}
<<<<<<< HEAD

=======

>>>>>>> mwasiluk/master
'),e.put("mw-form-viewer.html","
"),e.put("mw-priority-list.html",'
SortedAvailable
{{$index+1}}. {{::ctrl.print(ctrl.idToItem[item.id].value)}}
{{::ctrl.print(ctrl.idToItem[item.id].value)}}
')}]); angular.module("mwFormViewer").directive("mwPriorityList",function(){return{replace:!0,restrict:"AE",require:"^mwFormQuestion",scope:{question:"=",questionResponse:"=",readOnly:"=?",options:"=?"},templateUrl:"mw-priority-list.html",controllerAs:"ctrl",bindToController:!0,controller:function(){function i(i){if(i)for(var t=0;t0&&n.setCurrentPage(n.formData.pages[0])},n.resetPages=function(){n.prevPages=[],n.currentPage=null,n.nextPage=null,n.formSubmitted=!1,n.options.autoStart&&n.beginResponse()},n.resetPages(),n.goToPrevPage=function(){var e=n.prevPages.pop();n.setCurrentPage(e),n.updateNextPageBasedOnAllAnswers()},n.goToNextPage=function(){n.prevPages.push(n.currentPage),n.updateNextPageBasedOnAllAnswers(),n.setCurrentPage(n.nextPage)},n.updateNextPageBasedOnAllAnswers=function(){n.currentPage.elements.forEach(function(e){n.updateNextPageBasedOnPageElementAnswers(e)}),n.buttons.submitForm.visible=!n.nextPage,n.buttons.nextPage.visible=!!n.nextPage},n.updateNextPageBasedOnPageElementAnswers=function(e){var t=e.question;t&&t.pageFlowModifier&&t.offeredAnswers.forEach(function(e){e.pageFlow&&n.responseData[t.id].selectedAnswer==e.id&&(e.pageFlow.formSubmit?n.nextPage=null:e.pageFlow.page&&(n.nextPage=n.pageIdToPage[e.pageFlow.page.id]))})},n.onResponseChanged=function(e){n.setDefaultNextPage(),n.updateNextPageBasedOnAllAnswers()},n.api&&(n.api.reset=function(){for(var t in n.responseData)n.responseData.hasOwnProperty(t)&&delete n.responseData[t];n.buttons.submitForm.visible=!1,n.buttons.prevPage.visible=!1,n.buttons.nextPage.visible=!1,n.currentPage=null,e(n.resetPages,0)}),n.print=function(e){return n.templateData?t(e)(n.templateData):e}}],link:function(e,t,a){var n=e.ctrl;n.formStatus&&(n.formStatus.form=n.form)}}}); +angular.module("mwFormViewer").directive("mwFormViewer",function(){return{replace:!0,restrict:"AE",scope:{formData:"=",responseData:"=",templateData:"=?",readOnly:"=?",options:"=?",formStatus:"=?",onSubmit:"&",api:"=?"},templateUrl:"mw-form-viewer.html",controllerAs:"ctrl",bindToController:!0,controller:["$timeout","$interpolate",function(e,t){function a(){n.formData.pages.sort(function(e,t){return e.number-t.number})}var n=this;n.defaultOptions={nestedForm:!1,autoStart:!1},n.options=angular.extend({},n.defaultOptions,n.options),n.submitStatus="NOT_SUBMITTED",n.formSubmitted=!1,a(),n.pageIdToPage={},n.formData.pages.forEach(function(e){n.pageIdToPage[e.id]=e}),n.showElement=function(e){return e.question?void 0===e.question.visibleIf?!0:e.question.visibleIf===!1?!0:n.responseData[e.question.visibleIfQuestion.id].selectedAnswer===e.question.visibleIfAnswer:!0},n.buttons={prevPage:{visible:!1,disabled:!1},nextPage:{visible:!1,disabled:!1},submitForm:{visible:!1,disabled:!1}},n.submitForm=function(){n.formSubmitted=!0,n.submitStatus="IN_PROGRESS",n.setCurrentPage(null);var e=n.onSubmit();e.then(function(){n.submitStatus="SUCCESS"})["catch"](function(){n.submitStatus="ERROR"})},n.setCurrentPage=function(e){return n.currentPage=e,e?(n.setDefaultNextPage(),void n.initResponsesForCurrentPage()):(n.buttons.submitForm.visible=!1,n.buttons.prevPage.visible=!1,void(n.buttons.nextPage.visible=!1))},n.setDefaultNextPage=function(){var e=n.formData.pages.indexOf(n.currentPage);if(n.currentPage.isFirst=0==e,n.currentPage.isLast=e==n.formData.pages.length-1,n.buttons.submitForm.visible=n.currentPage.isLast,n.buttons.prevPage.visible=!n.currentPage.isFirst,n.buttons.nextPage.visible=!n.currentPage.isLast,n.currentPage.isLast?n.nextPage=null:n.nextPage=n.formData.pages[e+1],n.currentPage.pageFlow){var t=!1;n.currentPage.pageFlow.formSubmit?(n.nextPage=null,t=!0):n.currentPage.pageFlow.page?(n.nextPage=n.pageIdToPage[n.currentPage.pageFlow.page.id],n.buttons.nextPage.visible=!0):n.currentPage.isLast&&(n.nextPage=null,t=!0),n.buttons.submitForm.visible=t,n.buttons.nextPage.visible=!t}},n.applyTemplateDataToElement=function(e){var a=Object.assign({},n.templateData);e.paragraph&&(e.paragraph.displayHtml=t(e.paragraph.html)(a)),e.question&&(e.question.displayText=t(e.question.text)(a),e.question.offeredAnswers&&e.question.offeredAnswers.forEach(function(e){e.displayValue=t(e.value)(a)}))},n.initResponsesForCurrentPage=function(){n.currentPage.elements.forEach(function(e){var t=e.question;t&&!n.responseData[t.id]&&(n.responseData[t.id]={}),n.applyTemplateDataToElement(e)})},n.beginResponse=function(){n.formData.pages.length>0&&n.setCurrentPage(n.formData.pages[0])},n.resetPages=function(){n.prevPages=[],n.currentPage=null,n.nextPage=null,n.formSubmitted=!1,n.options.autoStart&&n.beginResponse()},n.resetPages(),n.goToPrevPage=function(){var e=n.prevPages.pop();n.setCurrentPage(e),n.updateNextPageBasedOnAllAnswers()},n.goToNextPage=function(){n.prevPages.push(n.currentPage),n.updateNextPageBasedOnAllAnswers(),n.setCurrentPage(n.nextPage)},n.updateNextPageBasedOnAllAnswers=function(){n.currentPage.elements.forEach(function(e){n.updateNextPageBasedOnPageElementAnswers(e)}),n.buttons.submitForm.visible=!n.nextPage,n.buttons.nextPage.visible=!!n.nextPage},n.updateNextPageBasedOnPageElementAnswers=function(e){var t=e.question;t&&t.pageFlowModifier&&t.offeredAnswers.forEach(function(e){e.pageFlow&&n.responseData[t.id].selectedAnswer==e.id&&(e.pageFlow.formSubmit?n.nextPage=null:e.pageFlow.page&&(n.nextPage=n.pageIdToPage[e.pageFlow.page.id]))})},n.onResponseChanged=function(e){n.setDefaultNextPage(),n.updateNextPageBasedOnAllAnswers()},n.api&&(n.api.reset=function(){for(var t in n.responseData)n.responseData.hasOwnProperty(t)&&delete n.responseData[t];n.buttons.submitForm.visible=!1,n.buttons.prevPage.visible=!1,n.buttons.nextPage.visible=!1,n.currentPage=null,e(n.resetPages,0)}),n.print=function(e){return n.templateData?t(e)(n.templateData):e}}],link:function(e,t,a){var n=e.ctrl;n.formStatus&&(n.formStatus.form=n.form)}}}); angular.module("mwFormViewer").factory("FormQuestionId",function(){var e=0;return{next:function(){return++e}}}).directive("mwFormQuestion",function(){return{replace:!0,restrict:"AE",require:"^mwFormViewer",scope:{question:"=",questionResponse:"=",readOnly:"=?",options:"=?",onResponseChanged:"&?"},templateUrl:"mw-form-question.html",controllerAs:"ctrl",bindToController:!0,controller:["$timeout","FormQuestionId",function(e,s){var n=this;n.id=s.next(),"radio"==n.question.type?(n.questionResponse.selectedAnswer||(n.questionResponse.selectedAnswer=null),n.questionResponse.other&&(n.isOtherAnswer=!0)):"checkbox"==n.question.type?(n.questionResponse.selectedAnswers&&n.questionResponse.selectedAnswers.length?n.selectedAnswer=!0:n.questionResponse.selectedAnswers=[],n.questionResponse.other&&(n.isOtherAnswer=!0)):"grid"==n.question.type||"division"==n.question.type&&(n.computeDivisionSum=function(){n.divisionSum=0,n.question.divisionList.forEach(function(e){0==n.questionResponse[e.id]||n.questionResponse[e.id]?n.divisionSum+=n.questionResponse[e.id]:(n.questionResponse[e.id]=null,n.divisionSum+=0)})},n.computeDivisionSum()),n.isAnswerSelected=!1,n.selectedAnswerChanged=function(){delete n.questionResponse.other,n.isOtherAnswer=!1,n.answerChanged()},n.otherAnswerRadioChanged=function(){n.isOtherAnswer&&(n.questionResponse.selectedAnswer=null),n.answerChanged()},n.otherAnswerCheckboxChanged=function(){n.isOtherAnswer||delete n.questionResponse.other,n.selectedAnswer=n.questionResponse.selectedAnswers.length||n.isOtherAnswer?!0:null,n.answerChanged()},n.toggleSelectedAnswer=function(e){-1===n.questionResponse.selectedAnswers.indexOf(e.id)?n.questionResponse.selectedAnswers.push(e.id):n.questionResponse.selectedAnswers.splice(n.questionResponse.selectedAnswers.indexOf(e.id),1),n.selectedAnswer=n.questionResponse.selectedAnswers.length||n.isOtherAnswer?!0:null,n.answerChanged()},n.answerChanged=function(){n.onResponseChanged&&n.onResponseChanged()}}],link:function(e,s,n,o){var t=e.ctrl;t.print=o.print}}}); -angular.module("mwFormViewer").directive("mwFormConfirmationPage",function(){return{replace:!0,restrict:"AE",require:"^mwFormViewer",scope:{submitStatus:"=",confirmationMessage:"=",readOnly:"=?"},templateUrl:"mw-form-confirmation-page.html",controllerAs:"ctrl",bindToController:!0,controller:function(){},link:function(r,e,t,n){var o=r.ctrl;o.print=n.print}}}); ->>>>>>> mwasiluk/master +angular.module("mwFormViewer").directive("mwFormConfirmationPage",function(){return{replace:!0,restrict:"AE",require:"^mwFormViewer",scope:{submitStatus:"=",confirmationMessage:"=",readOnly:"=?"},templateUrl:"mw-form-confirmation-page.html",controllerAs:"ctrl",bindToController:!0,controller:function(){},link:function(r,e,t,n){var o=r.ctrl;o.print=n.print}}}); \ No newline at end of file From df7db28aa4780ea5ea6ed85312ae28b6862c8a6e Mon Sep 17 00:00:00 2001 From: Jeff Wilde Date: Wed, 23 Mar 2016 17:08:25 -0600 Subject: [PATCH 08/14] Update mw-form-viewer-content.html --- src/viewer/mw-form-viewer-content.html | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/viewer/mw-form-viewer-content.html b/src/viewer/mw-form-viewer-content.html index 1d5d84d..0a278e1 100644 --- a/src/viewer/mw-form-viewer-content.html +++ b/src/viewer/mw-form-viewer-content.html @@ -21,11 +21,7 @@

-<<<<<<< HEAD -

-=======

->>>>>>> mwasiluk/master

From b47d72e85c5feb6e06eaf7cae878c569202a3b47 Mon Sep 17 00:00:00 2001 From: jeff wilde Date: Tue, 12 Apr 2016 14:08:09 -0600 Subject: [PATCH 09/14] adds question watching to visible if --- dist/form-builder.min.js | 2 +- dist/form-viewer.min.js | 2 +- package.json | 2 +- src/builder/form-question-builder.directive.js | 15 ++++++++++++--- 4 files changed, 15 insertions(+), 6 deletions(-) diff --git a/dist/form-builder.min.js b/dist/form-builder.min.js index 281317b..565e09e 100644 --- a/dist/form-builder.min.js +++ b/dist/form-builder.min.js @@ -7,7 +7,7 @@ angular.module("mwFormBuilder").directive("mwQuestionOfferedAnswerListBuilder",f angular.module("mwFormBuilder").directive("mwQuestionGridBuilder",function(){return{replace:!0,restrict:"AE",require:"^mwFormQuestionBuilder",scope:{question:"=",formObject:"=",readOnly:"=?",options:"=?"},templateUrl:"mw-question-grid-builder.html",controllerAs:"ctrl",bindToController:!0,controller:["mwFormUuid",function(e){function o(e){if(e)for(var o=0;o=0&&a(i.formPage.elements,n,o),r()},i.isElementTypeEnabled=function(e){return-1!==t.elementTypes.indexOf(e)},i.addQuestion=function(){i.addElement("question")},i.addImage=function(){i.addElement("image")},i.addParagraph=function(){i.addElement("paragraph")},i.isElementActive=function(e){return i.activeElement==e},i.selectElement=function(e){i.activeElement=e},i.onElementReady=function(){e(function(){i.activeElement=null})},i.hoverIn=function(){i.hoverEdit=!0},i.hoverOut=function(){i.hoverEdit=!1},i.updateElementsOrderNo=r}],link:function(e,n,o,t){var r=e.ctrl;r.possiblePageFlow=t.possiblePageFlow,r.moveDown=function(){t.moveDownPage(r.formPage)},r.moveUp=function(){t.moveUpPage(r.formPage)},r.removePage=function(){t.removePage(r.formPage)},r.addPage=function(){t.addPageAfter(r.formPage)},e.$watch("ctrl.formPage.elements.length",function(e,n){e!=n&&r.updateElementsOrderNo()}),r.options=t.options,r.onImageSelection=t.onImageSelection}}}); diff --git a/dist/form-viewer.min.js b/dist/form-viewer.min.js index 92dc3e7..cabe136 100644 --- a/dist/form-viewer.min.js +++ b/dist/form-viewer.min.js @@ -1,5 +1,5 @@ angular.module("mwFormViewer",["ngSanitize","ui.bootstrap","ng-sortable","pascalprecht.translate"]); -angular.module("mwFormViewer").run(["$templateCache",function(e){e.put("mw-form-confirmation-page.html","
{{::ctrl.print(ctrl.confirmationMessage)}} Twoja odpowiedź została zapisana
Bład. Twoja odpowiedź nie została zapisana.
Zapisywanie odpowiedzi w trakcie.
"),e.put("mw-form-question.html",'
<<<<<<< HEAD {{ctrl.question.displayText}} * ======= {{::ctrl.print(ctrl.question.text)}} * >>>>>>> mwasiluk/master
{{::ctrl.print(row.label)}}
{{::ctrl.print(ctrl.question.unit)}}
{{ctrl.question.unit}} z wymaganych {{ctrl.question.quantity}} {{ctrl.question.unit}}
{{ctrl.questionResponse.answer}}
'),e.put("mw-form-viewer-content.html",'

{{ctrl.formData.name}}

{{ctrl.formData.description}}

{{ctrl.currentPage.name}}

{{pageElement.image.caption}}
<<<<<<< HEAD

=======

>>>>>>> mwasiluk/master
'),e.put("mw-form-viewer.html","
"),e.put("mw-priority-list.html",'
SortedAvailable
{{$index+1}}. {{::ctrl.print(ctrl.idToItem[item.id].value)}}
{{::ctrl.print(ctrl.idToItem[item.id].value)}}
')}]); +angular.module("mwFormViewer").run(["$templateCache",function(e){e.put("mw-form-confirmation-page.html","
{{::ctrl.print(ctrl.confirmationMessage)}} Twoja odpowiedź została zapisana
Bład. Twoja odpowiedź nie została zapisana.
Zapisywanie odpowiedzi w trakcie.
"),e.put("mw-form-question.html",'
<<<<<<< HEAD {{ctrl.question.displayText}} * ======= {{::ctrl.print(ctrl.question.text)}} * >>>>>>> mwasiluk/master
{{::ctrl.print(row.label)}}
{{::ctrl.print(ctrl.question.unit)}}
{{ctrl.question.unit}} z wymaganych {{ctrl.question.quantity}} {{ctrl.question.unit}}
{{ctrl.questionResponse.answer}}
'),e.put("mw-form-viewer-content.html",'

{{ctrl.formData.name}}

{{ctrl.formData.description}}

{{ctrl.currentPage.name}}

{{pageElement.image.caption}}

'),e.put("mw-form-viewer.html","
"),e.put("mw-priority-list.html",'
SortedAvailable
{{$index+1}}. {{::ctrl.print(ctrl.idToItem[item.id].value)}}
{{::ctrl.print(ctrl.idToItem[item.id].value)}}
')}]); angular.module("mwFormViewer").directive("mwPriorityList",function(){return{replace:!0,restrict:"AE",require:"^mwFormQuestion",scope:{question:"=",questionResponse:"=",readOnly:"=?",options:"=?"},templateUrl:"mw-priority-list.html",controllerAs:"ctrl",bindToController:!0,controller:function(){function i(i){if(i)for(var t=0;t0&&n.setCurrentPage(n.formData.pages[0])},n.resetPages=function(){n.prevPages=[],n.currentPage=null,n.nextPage=null,n.formSubmitted=!1,n.options.autoStart&&n.beginResponse()},n.resetPages(),n.goToPrevPage=function(){var e=n.prevPages.pop();n.setCurrentPage(e),n.updateNextPageBasedOnAllAnswers()},n.goToNextPage=function(){n.prevPages.push(n.currentPage),n.updateNextPageBasedOnAllAnswers(),n.setCurrentPage(n.nextPage)},n.updateNextPageBasedOnAllAnswers=function(){n.currentPage.elements.forEach(function(e){n.updateNextPageBasedOnPageElementAnswers(e)}),n.buttons.submitForm.visible=!n.nextPage,n.buttons.nextPage.visible=!!n.nextPage},n.updateNextPageBasedOnPageElementAnswers=function(e){var t=e.question;t&&t.pageFlowModifier&&t.offeredAnswers.forEach(function(e){e.pageFlow&&n.responseData[t.id].selectedAnswer==e.id&&(e.pageFlow.formSubmit?n.nextPage=null:e.pageFlow.page&&(n.nextPage=n.pageIdToPage[e.pageFlow.page.id]))})},n.onResponseChanged=function(e){n.setDefaultNextPage(),n.updateNextPageBasedOnAllAnswers()},n.api&&(n.api.reset=function(){for(var t in n.responseData)n.responseData.hasOwnProperty(t)&&delete n.responseData[t];n.buttons.submitForm.visible=!1,n.buttons.prevPage.visible=!1,n.buttons.nextPage.visible=!1,n.currentPage=null,e(n.resetPages,0)}),n.print=function(e){return n.templateData?t(e)(n.templateData):e}}],link:function(e,t,a){var n=e.ctrl;n.formStatus&&(n.formStatus.form=n.form)}}}); angular.module("mwFormViewer").factory("FormQuestionId",function(){var e=0;return{next:function(){return++e}}}).directive("mwFormQuestion",function(){return{replace:!0,restrict:"AE",require:"^mwFormViewer",scope:{question:"=",questionResponse:"=",readOnly:"=?",options:"=?",onResponseChanged:"&?"},templateUrl:"mw-form-question.html",controllerAs:"ctrl",bindToController:!0,controller:["$timeout","FormQuestionId",function(e,s){var n=this;n.id=s.next(),"radio"==n.question.type?(n.questionResponse.selectedAnswer||(n.questionResponse.selectedAnswer=null),n.questionResponse.other&&(n.isOtherAnswer=!0)):"checkbox"==n.question.type?(n.questionResponse.selectedAnswers&&n.questionResponse.selectedAnswers.length?n.selectedAnswer=!0:n.questionResponse.selectedAnswers=[],n.questionResponse.other&&(n.isOtherAnswer=!0)):"grid"==n.question.type||"division"==n.question.type&&(n.computeDivisionSum=function(){n.divisionSum=0,n.question.divisionList.forEach(function(e){0==n.questionResponse[e.id]||n.questionResponse[e.id]?n.divisionSum+=n.questionResponse[e.id]:(n.questionResponse[e.id]=null,n.divisionSum+=0)})},n.computeDivisionSum()),n.isAnswerSelected=!1,n.selectedAnswerChanged=function(){delete n.questionResponse.other,n.isOtherAnswer=!1,n.answerChanged()},n.otherAnswerRadioChanged=function(){n.isOtherAnswer&&(n.questionResponse.selectedAnswer=null),n.answerChanged()},n.otherAnswerCheckboxChanged=function(){n.isOtherAnswer||delete n.questionResponse.other,n.selectedAnswer=n.questionResponse.selectedAnswers.length||n.isOtherAnswer?!0:null,n.answerChanged()},n.toggleSelectedAnswer=function(e){-1===n.questionResponse.selectedAnswers.indexOf(e.id)?n.questionResponse.selectedAnswers.push(e.id):n.questionResponse.selectedAnswers.splice(n.questionResponse.selectedAnswers.indexOf(e.id),1),n.selectedAnswer=n.questionResponse.selectedAnswers.length||n.isOtherAnswer?!0:null,n.answerChanged()},n.answerChanged=function(){n.onResponseChanged&&n.onResponseChanged()}}],link:function(e,s,n,o){var t=e.ctrl;t.print=o.print}}}); diff --git a/package.json b/package.json index 17bec7d..e219fe9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "angular-surveys", - "version": "0.1.1", + "version": "0.6.3", "description": "Angular survey/form builder and viewer inspired by Google Forms", "main": "gulpfile.js", "devDependencies": { diff --git a/src/builder/form-question-builder.directive.js b/src/builder/form-question-builder.directive.js index fbcbf04..e8a9241 100644 --- a/src/builder/form-question-builder.directive.js +++ b/src/builder/form-question-builder.directive.js @@ -43,9 +43,18 @@ angular.module('mwFormBuilder').factory("FormQuestionBuilderId", function(){ return result; } - ctrl.toggleVisibleIf = function(){ - ctrl.radioQuestions = getRadioQuestions(); - }; + $scope.$watchCollection('ctrl.formObject.pages', function(pages) { + pages.forEach(function(page) { + $scope.$watchCollection(function(){return page.elements;}, function(elements) { + if (!elements) return; + elements.forEach(function(element) { + $scope.$watch(function(){return element;}, function(element) { + ctrl.radioQuestions = getRadioQuestions(); + }, true); + }); + }, true); + }); + }, true); sortAnswersByOrderNo(); function updateAnswersOrderNo() { From 813cd314da7ae63ac95f26d2749356a19aa3785a Mon Sep 17 00:00:00 2001 From: jeff wilde Date: Tue, 12 Apr 2016 15:24:54 -0600 Subject: [PATCH 10/14] fixes missing --- dist/form-builder.min.js | 2 +- src/builder/form-question-builder.directive.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dist/form-builder.min.js b/dist/form-builder.min.js index 565e09e..c0fd19d 100644 --- a/dist/form-builder.min.js +++ b/dist/form-builder.min.js @@ -7,7 +7,7 @@ angular.module("mwFormBuilder").directive("mwQuestionOfferedAnswerListBuilder",f angular.module("mwFormBuilder").directive("mwQuestionGridBuilder",function(){return{replace:!0,restrict:"AE",require:"^mwFormQuestionBuilder",scope:{question:"=",formObject:"=",readOnly:"=?",options:"=?"},templateUrl:"mw-question-grid-builder.html",controllerAs:"ctrl",bindToController:!0,controller:["mwFormUuid",function(e){function o(e){if(e)for(var o=0;o=0&&a(i.formPage.elements,n,o),r()},i.isElementTypeEnabled=function(e){return-1!==t.elementTypes.indexOf(e)},i.addQuestion=function(){i.addElement("question")},i.addImage=function(){i.addElement("image")},i.addParagraph=function(){i.addElement("paragraph")},i.isElementActive=function(e){return i.activeElement==e},i.selectElement=function(e){i.activeElement=e},i.onElementReady=function(){e(function(){i.activeElement=null})},i.hoverIn=function(){i.hoverEdit=!0},i.hoverOut=function(){i.hoverEdit=!1},i.updateElementsOrderNo=r}],link:function(e,n,o,t){var r=e.ctrl;r.possiblePageFlow=t.possiblePageFlow,r.moveDown=function(){t.moveDownPage(r.formPage)},r.moveUp=function(){t.moveUpPage(r.formPage)},r.removePage=function(){t.removePage(r.formPage)},r.addPage=function(){t.addPageAfter(r.formPage)},e.$watch("ctrl.formPage.elements.length",function(e,n){e!=n&&r.updateElementsOrderNo()}),r.options=t.options,r.onImageSelection=t.onImageSelection}}}); diff --git a/src/builder/form-question-builder.directive.js b/src/builder/form-question-builder.directive.js index e8a9241..b175519 100644 --- a/src/builder/form-question-builder.directive.js +++ b/src/builder/form-question-builder.directive.js @@ -24,7 +24,7 @@ angular.module('mwFormBuilder').factory("FormQuestionBuilderId", function(){ templateUrl: 'mw-form-question-builder.html', controllerAs: 'ctrl', bindToController: true, - controller: function($timeout,FormQuestionBuilderId, mwFormBuilderOptions){ + controller: function($timeout,FormQuestionBuilderId, mwFormBuilderOptions, $scope){ var ctrl = this; ctrl.id = FormQuestionBuilderId.next(); ctrl.questionTypes = mwFormBuilderOptions.questionTypes; From 959cad15f48c133f0c2a3f233afc032f45072b39 Mon Sep 17 00:00:00 2001 From: Jeff Wilde Date: Thu, 14 Apr 2016 12:50:56 -0600 Subject: [PATCH 11/14] Update mw-form-question.html --- src/viewer/mw-form-question.html | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/src/viewer/mw-form-question.html b/src/viewer/mw-form-question.html index df764d7..030c744 100644 --- a/src/viewer/mw-form-question.html +++ b/src/viewer/mw-form-question.html @@ -1,11 +1,7 @@
-<<<<<<< HEAD - {{ctrl.question.displayText}} * -======= {{::ctrl.print(ctrl.question.text)}} * ->>>>>>> mwasiluk/master
@@ -19,11 +15,7 @@
@@ -41,11 +33,7 @@
From f886cbb49e593dee0aa547619d0c0f38315b5c69 Mon Sep 17 00:00:00 2001 From: jeff wilde Date: Thu, 14 Apr 2016 13:05:18 -0600 Subject: [PATCH 12/14] rebuild --- dist/form-viewer.min.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dist/form-viewer.min.js b/dist/form-viewer.min.js index cabe136..e1ea1b8 100644 --- a/dist/form-viewer.min.js +++ b/dist/form-viewer.min.js @@ -1,5 +1,5 @@ angular.module("mwFormViewer",["ngSanitize","ui.bootstrap","ng-sortable","pascalprecht.translate"]); -angular.module("mwFormViewer").run(["$templateCache",function(e){e.put("mw-form-confirmation-page.html","
{{::ctrl.print(ctrl.confirmationMessage)}} Twoja odpowiedź została zapisana
Bład. Twoja odpowiedź nie została zapisana.
Zapisywanie odpowiedzi w trakcie.
"),e.put("mw-form-question.html",'
<<<<<<< HEAD {{ctrl.question.displayText}} * ======= {{::ctrl.print(ctrl.question.text)}} * >>>>>>> mwasiluk/master
{{::ctrl.print(row.label)}}
{{::ctrl.print(ctrl.question.unit)}}
{{ctrl.question.unit}} z wymaganych {{ctrl.question.quantity}} {{ctrl.question.unit}}
{{ctrl.questionResponse.answer}}
'),e.put("mw-form-viewer-content.html",'

{{ctrl.formData.name}}

{{ctrl.formData.description}}

{{ctrl.currentPage.name}}

{{pageElement.image.caption}}

'),e.put("mw-form-viewer.html","
"),e.put("mw-priority-list.html",'
SortedAvailable
{{$index+1}}. {{::ctrl.print(ctrl.idToItem[item.id].value)}}
{{::ctrl.print(ctrl.idToItem[item.id].value)}}
')}]); +angular.module("mwFormViewer").run(["$templateCache",function(e){e.put("mw-form-confirmation-page.html","
{{::ctrl.print(ctrl.confirmationMessage)}} Twoja odpowiedź została zapisana
Bład. Twoja odpowiedź nie została zapisana.
Zapisywanie odpowiedzi w trakcie.
"),e.put("mw-form-question.html",'
{{::ctrl.print(ctrl.question.text)}} *
{{::ctrl.print(row.label)}}
{{::ctrl.print(ctrl.question.unit)}}
{{ctrl.question.unit}} z wymaganych {{ctrl.question.quantity}} {{ctrl.question.unit}}
{{ctrl.questionResponse.answer}}
'),e.put("mw-form-viewer-content.html",'

{{ctrl.formData.name}}

{{ctrl.formData.description}}

{{ctrl.currentPage.name}}

{{pageElement.image.caption}}

'),e.put("mw-form-viewer.html","
"),e.put("mw-priority-list.html",'
SortedAvailable
{{$index+1}}. {{::ctrl.print(ctrl.idToItem[item.id].value)}}
{{::ctrl.print(ctrl.idToItem[item.id].value)}}
')}]); angular.module("mwFormViewer").directive("mwPriorityList",function(){return{replace:!0,restrict:"AE",require:"^mwFormQuestion",scope:{question:"=",questionResponse:"=",readOnly:"=?",options:"=?"},templateUrl:"mw-priority-list.html",controllerAs:"ctrl",bindToController:!0,controller:function(){function i(i){if(i)for(var t=0;t0&&n.setCurrentPage(n.formData.pages[0])},n.resetPages=function(){n.prevPages=[],n.currentPage=null,n.nextPage=null,n.formSubmitted=!1,n.options.autoStart&&n.beginResponse()},n.resetPages(),n.goToPrevPage=function(){var e=n.prevPages.pop();n.setCurrentPage(e),n.updateNextPageBasedOnAllAnswers()},n.goToNextPage=function(){n.prevPages.push(n.currentPage),n.updateNextPageBasedOnAllAnswers(),n.setCurrentPage(n.nextPage)},n.updateNextPageBasedOnAllAnswers=function(){n.currentPage.elements.forEach(function(e){n.updateNextPageBasedOnPageElementAnswers(e)}),n.buttons.submitForm.visible=!n.nextPage,n.buttons.nextPage.visible=!!n.nextPage},n.updateNextPageBasedOnPageElementAnswers=function(e){var t=e.question;t&&t.pageFlowModifier&&t.offeredAnswers.forEach(function(e){e.pageFlow&&n.responseData[t.id].selectedAnswer==e.id&&(e.pageFlow.formSubmit?n.nextPage=null:e.pageFlow.page&&(n.nextPage=n.pageIdToPage[e.pageFlow.page.id]))})},n.onResponseChanged=function(e){n.setDefaultNextPage(),n.updateNextPageBasedOnAllAnswers()},n.api&&(n.api.reset=function(){for(var t in n.responseData)n.responseData.hasOwnProperty(t)&&delete n.responseData[t];n.buttons.submitForm.visible=!1,n.buttons.prevPage.visible=!1,n.buttons.nextPage.visible=!1,n.currentPage=null,e(n.resetPages,0)}),n.print=function(e){return n.templateData?t(e)(n.templateData):e}}],link:function(e,t,a){var n=e.ctrl;n.formStatus&&(n.formStatus.form=n.form)}}}); angular.module("mwFormViewer").factory("FormQuestionId",function(){var e=0;return{next:function(){return++e}}}).directive("mwFormQuestion",function(){return{replace:!0,restrict:"AE",require:"^mwFormViewer",scope:{question:"=",questionResponse:"=",readOnly:"=?",options:"=?",onResponseChanged:"&?"},templateUrl:"mw-form-question.html",controllerAs:"ctrl",bindToController:!0,controller:["$timeout","FormQuestionId",function(e,s){var n=this;n.id=s.next(),"radio"==n.question.type?(n.questionResponse.selectedAnswer||(n.questionResponse.selectedAnswer=null),n.questionResponse.other&&(n.isOtherAnswer=!0)):"checkbox"==n.question.type?(n.questionResponse.selectedAnswers&&n.questionResponse.selectedAnswers.length?n.selectedAnswer=!0:n.questionResponse.selectedAnswers=[],n.questionResponse.other&&(n.isOtherAnswer=!0)):"grid"==n.question.type||"division"==n.question.type&&(n.computeDivisionSum=function(){n.divisionSum=0,n.question.divisionList.forEach(function(e){0==n.questionResponse[e.id]||n.questionResponse[e.id]?n.divisionSum+=n.questionResponse[e.id]:(n.questionResponse[e.id]=null,n.divisionSum+=0)})},n.computeDivisionSum()),n.isAnswerSelected=!1,n.selectedAnswerChanged=function(){delete n.questionResponse.other,n.isOtherAnswer=!1,n.answerChanged()},n.otherAnswerRadioChanged=function(){n.isOtherAnswer&&(n.questionResponse.selectedAnswer=null),n.answerChanged()},n.otherAnswerCheckboxChanged=function(){n.isOtherAnswer||delete n.questionResponse.other,n.selectedAnswer=n.questionResponse.selectedAnswers.length||n.isOtherAnswer?!0:null,n.answerChanged()},n.toggleSelectedAnswer=function(e){-1===n.questionResponse.selectedAnswers.indexOf(e.id)?n.questionResponse.selectedAnswers.push(e.id):n.questionResponse.selectedAnswers.splice(n.questionResponse.selectedAnswers.indexOf(e.id),1),n.selectedAnswer=n.questionResponse.selectedAnswers.length||n.isOtherAnswer?!0:null,n.answerChanged()},n.answerChanged=function(){n.onResponseChanged&&n.onResponseChanged()}}],link:function(e,s,n,o){var t=e.ctrl;t.print=o.print}}}); From a5ebfdf6885a8247b980f25bb08053945bc02ed5 Mon Sep 17 00:00:00 2001 From: Jeff Wilde Date: Thu, 14 Apr 2016 13:06:50 -0600 Subject: [PATCH 13/14] Update package.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e219fe9..58e365b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "angular-surveys", - "version": "0.6.3", + "version": "0.6.5", "description": "Angular survey/form builder and viewer inspired by Google Forms", "main": "gulpfile.js", "devDependencies": { From 2e417e0e4ca2ac75ffc51acc20530b1cb47a0a0a Mon Sep 17 00:00:00 2001 From: Jeff Wilde Date: Wed, 11 Dec 2024 18:51:36 -0700 Subject: [PATCH 14/14] Add files via upload --- image.gif | Bin 0 -> 115252 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 image.gif diff --git a/image.gif b/image.gif new file mode 100644 index 0000000000000000000000000000000000000000..6edbfb23ab0f8515e12a1d49f2b79fde7e9f5de8 GIT binary patch literal 115252 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