tellform/public/dist/application.min.js

6 lines
177 KiB
JavaScript
Raw Normal View History

"use strict";var ApplicationConfiguration=function(){var a="TellForm",b=["duScroll","ui.select","ngSanitize","vButton","ngResource","TellForm.templates","ui.router","ui.bootstrap","ui.utils","pascalprecht.translate","view-form"],c=function(b,c){angular.module(b,c||[]),angular.module(a).requires.push(b)};return{applicationModuleName:a,applicationModuleVendorDependencies:b,registerModule:c}}();angular.module(ApplicationConfiguration.applicationModuleName,ApplicationConfiguration.applicationModuleVendorDependencies),angular.module(ApplicationConfiguration.applicationModuleName).config(["$locationProvider",function(a){a.hashPrefix("!")}]),angular.module(ApplicationConfiguration.applicationModuleName).constant("APP_PERMISSIONS",{viewAdminSettings:"viewAdminSettings",editAdminSettings:"editAdminSettings",editForm:"editForm",viewPrivateForm:"viewPrivateForm"}),angular.module(ApplicationConfiguration.applicationModuleName).constant("USER_ROLES",{admin:"admin",normal:"user",superuser:"superuser"}),angular.module(ApplicationConfiguration.applicationModuleName).constant("FORM_URL","/forms/:formId"),angular.element(document).ready(function(){"#_=_"===window.location.hash&&(window.location.hash="#!"),angular.bootstrap(document,[ApplicationConfiguration.applicationModuleName])}),angular.module("TellForm.templates",[]).run(["$templateCache",function(a){a.put("modules/core/views/header.client.view.html","<section class=\"navbar navbar-inverse\" data-ng-controller=HeaderController ng-hide=hideNav><div class=container><div class=navbar-header><button class=navbar-toggle type=button data-ng-click=toggleCollapsibleMenu()><span class=sr-only>{{ 'TOGGLE_NAVIGATION' | translate }}</span> <span>{{ 'MENU_BTN' | translate }}</span></button> <a href=/#!/ class=navbar-brand><img src=/static/modules/core/img/logo_white.svg height=100%></a></div><nav class=\"collapse navbar-collapse\" collapse=!isCollapsed role=navigation><ul class=\"nav navbar-nav navbar-right\" data-ng-hide=authentication.isAuthenticated()><li ng-hide=$root.signupDisabled ui-route=/signup ng-class=\"{active: $uiRoute}\"><a href=/#!/signup>{{ 'SIGNUP_TAB' | translate }}</a></li><li class=divider-vertical></li><li ui-route=/signin ng-class=\"{active: $uiRoute}\"><a href=/#!/signin>{{ 'SIGNIN_TAB' | translate }}</a></li></ul><ul class=\"nav navbar-nav navbar-right\" data-ng-show=authentication.isAuthenticated()><li class=dropdown uib-dropdown><a href=# class=dropdown-toggle data-toggle=dropdown dropdown-toggle><span>{{ 'MY_SETTINGS' | translate }}</span> <b class=caret></b></a><ul class=dropdown-menu><li><a href=/#!/settings/profile>{{ 'EDIT_PROFILE' | translate }}</a></li><li class=divider></li><li><a href=/#!/settings/password>{{ 'CHANGE_PASSWORD' | translate }}</a></li></ul></li><li><a href=/ ng-click=signout()>{{ 'SIGNOUT_TAB' | translate }}</a></li></ul></nav></div></section>"),a.put("modules/forms/admin/views/admin-form.client.view.html",'<header data-ng-include="\'/static/modules/core/views/header.client.view.html\'"></header><section class="admin-form container-fluid"><script type=text/ng-template id=formDeleteModal.html><div class="modal-header">\n <h2 class="modal-title hidden-md hidden-lg">{{ \'ARE_YOU_SURE\' | translate }}</h2>\n <h3 class="modal-title hidden-xs hidden-sm">{{ \'ARE_YOU_SURE\' | translate }}</h3>\n </div>\n <div class="modal-body">\n \t<div class="modal-body-alert">\n\t\t\t\t{{ \'READ_WARNING\' | translate }}\n\t\t\t</div>\n \t\t<p class="hidden-xs hidden-sm">\n \t\t \t{{ \'DELETE_WARNING1\' | translate }} <strong>{{myform.title}}</strong> {{ \'DELETE_WARNING2\' | translate }}\n \t\t</p>\n <p>{{ \'DELETE_CONFIRM\' | translate }}</p>\n </div>\n <div class="modal-footer">\n\t\t\t<input type="text" style="width:100%" data-ng-model="deleteConfirm" class="input-block" autofocus required aria-label="Type in the name of the form to confirm that you want to delete this form.">\n <button type="submit" ng-click="removeCurrentForm()" class="btn btn-block btn-danger" ng-di
a.put("modules/forms/admin/views/directiveViews/form/edit-submissions-form.client.view.html","<div class=\"submissions-table container\"><div class=\"row text-center analytics\"><div class=\"col-xs-12 header-title\"><div class=col-xs-3>{{ 'TOTAL_VIEWS' | translate }}</div><div class=col-xs-3>{{ 'RESPONSES' | translate }}</div><div class=col-xs-3>{{ 'COMPLETION_RATE' | translate }}</div><div class=col-xs-3>{{ 'AVERAGE_TIME_TO_COMPLETE' | translate }}</div></div><div class=\"col-xs-12 header-numbers\"><div class=col-xs-3>{{myform.analytics.visitors.length}}</div><div class=col-xs-3>{{myform.analytics.submissions}}</div><div class=col-xs-3>{{myform.analytics.conversionRate | number:0}}%</div><div class=col-xs-3>{{ AverageTimeElapsed | secondsToDateTime | date:'mm:ss'}}</div></div><div class=\"col-xs-12 detailed-title\"><div class=col-xs-3>{{ 'DESKTOP_AND_LAPTOP' | translate }}</div><div class=col-xs-3>{{ 'TABLETS' | translate }}</div><div class=col-xs-3>{{ 'PHONES' | translate }}</div><div class=col-xs-3>{{ 'OTHER' | translate }}</div></div><div class=\"col-xs-12 detailed-row\"><div class=col-xs-3><div class=\"row header\">{{ 'UNIQUE_VISITS' | translate }}</div><div class=row>{{DeviceStatistics.desktop.visits}}</div></div><div class=col-xs-3><div class=\"row header\">{{ 'UNIQUE_VISITS' | translate }}</div><div class=row>{{DeviceStatistics.tablet.visits}}</div></div><div class=col-xs-3><div class=\"row header\">{{ 'UNIQUE_VISITS' | translate }}</div><div class=row>{{DeviceStatistics.tablet.visits}}</div></div><div class=col-xs-3><div class=\"row header\">{{ 'UNIQUE_VISITS' | translate }}</div><div class=row>{{DeviceStatistics.other.visits}}</div></div></div><div class=\"col-xs-12 detailed-row\"><div class=col-xs-3><div class=\"row header\">{{ 'RESPONSES' | translate }}</div><div class=row>{{DeviceStatistics.desktop.responses}}</div></div><div class=col-xs-3><div class=\"row header\">{{ 'RESPONSES' | translate }}</div><div class=row>{{DeviceStatistics.tablet.responses}}</div></div><div class=col-xs-3><div class=\"row header\">{{ 'RESPONSES' | translate }}</div><div class=row>{{DeviceStatistics.phone.responses}}</div></div><div class=col-xs-3><div class=\"row header\">{{ 'RESPONSES' | translate }}</div><div class=row>{{DeviceStatistics.other.responses}}</div></div></div><div class=\"col-xs-12 detailed-row\"><div class=col-xs-3><div class=\"row header\">{{ 'COMPLETION_RATE' | translate }}</div><div class=row>{{DeviceStatistics.desktop.completion}}%</div></div><div class=col-xs-3><div class=\"row header\">{{ 'COMPLETION_RATE' | translate }}</div><div class=row>{{DeviceStatistics.tablet.completion}}%</div></div><div class=col-xs-3><div class=\"row header\">{{ 'COMPLETION_RATE' | translate }}</div><div class=row>{{DeviceStatistics.phone.completion}}%</div></div><div class=col-xs-3><div class=\"row header\">{{ 'COMPLETION_RATE' | translate }}</div><div class=row>{{DeviceStatistics.other.completion}}%</div></div></div><div class=\"col-xs-12 detailed-row\"><div class=col-xs-3><div class=\"row header\">{{ 'AVERAGE_TIME_TO_COMPLETE' | translate }}</div><div class=row>{{DeviceStatistics.desktop.average_time | secondsToDateTime | date:'mm:ss'}}</div></div><div class=col-xs-3><div class=\"row header\">{{ 'AVERAGE_TIME_TO_COMPLETE' | translate }}</div><div class=row>{{DeviceStatistics.tablet.average_time | secondsToDateTime | date:'mm:ss'}}</div></div><div class=col-xs-3><div class=\"row header\">{{ 'AVERAGE_TIME_TO_COMPLETE' | translate }}</div><div class=row>{{DeviceStatistics.phone.average_time | secondsToDateTime | date:'mm:ss'}}</div></div><div class=col-xs-3><div class=\"row header\">{{ 'AVERAGE_TIME_TO_COMPLETE' | translate }}</div><div class=row>{{DeviceStatistics.other.average_time | secondsToDateTime | date:'mm:ss'}}</div></div></div><div class=\"col-xs-12 field-title-row\"><div class=col-xs-3><strong>{{ 'FIELD_TITLE' | translate }}</strong></div><div class=col-xs-3><strong>{{ 'FIELD_VIEWS' | translate }}</strong></div><div class=col-xs-3><strong>{{ 'FIELD_RESPONSES' | translate }}</strong></div><div class=col-xs-3><strong>{{ 'F
a.put("form_modules/forms/base/views/directiveViews/field/textfield.html",'<div class="textfield field row" ng-click="setActiveField(field._id, index, true)"><div class="col-xs-12 field-title row-fluid" ng-style="{\'color\': design.colors.questionColor}"><h3 class=col-xs-12><small class=field-number>{{index+1}} <i class="fa fa-angle-double-right" aria-hidden=true></i> </small>{{field.title}} <span class=required-error ng-show=!field.required>({{ \'OPTIONAL\' | translate }})</span></h3><p class=col-xs-12><small>{{field.description}}</small></p></div><div class="col-xs-12 field-input"><input ng-style="{\'color\': design.colors.answerColor, \'border-color\': design.colors.answerColor}" name={{field.fieldType}}{{index}} type={{input_type}} ng-pattern=validateRegex placeholder={{placeholder}} ng-class="{ \'no-border\': !!field.fieldValue }" class="focusOn text-field-input" ng-focus="setActiveField(field._id, null, false)" ng-model=field.fieldValue ng-model-options="{ debounce: 250 }" value=field.fieldValue on-enter-or-tab-key=nextField() on-tab-and-shift-key=prevField() ng-required=field.required aria-describedby=inputError2Status></div><div class=col-xs-12><div ng-show="forms.myForm.{{field.fieldType}}{{index}}.$invalid && !!forms.myForm.{{field.fieldType}}{{index}}.$viewValue " class="alert alert-danger" role=alert><span class="glyphicon glyphicon-exclamation-sign" aria-hidden=true></span> <span class=sr-only>{{ \'ERROR\' | translate }}:</span> <span ng-if="field.fieldType == \'email\'">{{ \'ERROR_EMAIL_INVALID\' | translate }} </span><span ng-if="field.fieldType == \'number\'">{{ \'ERROR_NOT_A_NUMBER\' | translate }} </span><span ng-if="field.fieldType == \'link\'">{{ \'ERROR_URL_INVALID\' | translate }}</span></div></div></div><div><div class="btn btn-lg btn-default" ng-disabled="!field.fieldValue || field.$invalid" style="padding: 4px; margin-top:8px; background: rgba(255,255,255,0.5)"><button ng-disabled="!field.fieldValue || field.$invalid" ng-style="{\'background-color\':design.colors.buttonColor, \'color\':design.colors.buttonTextColor}" ng-click=nextField() class="btn col-sm-5 col-xs-5">{{ \'OK\' | translate }} <i class="fa fa-check"></i></button><div class="col-xs-6 col-sm-3" style=margin-top:0.2em><small style="color:#ddd; font-size:70%">{{ \'ENTER\' | translate }}</small></div></div></div>'),a.put("form_modules/forms/base/views/directiveViews/field/yes_no.html",'<div class="field row radio" ng-click="setActiveField(field._id, index, true)" key-to-truthy key-char-truthy=y key-char-falsey=n field=field on-tab-key=nextField() on-tab-and-shift-key=prevField() on-valid-key=nextField()><div class="col-xs-12 field-title" ng-style="{\'color\': design.colors.questionColor}"><h3 class=row><small class=field-number>{{index+1}} <i class="fa fa-angle-double-right" aria-hidden=true></i> </small>{{field.title}} <span class=required-error ng-show=!field.required>{{ \'OPTIONAL\' | translate }}</span></h3><p class=row>{{field.description}}</p></div><div class="col-xs-12 field-input"><div class=row><label class="btn btn-default col-md-2 col-sm-3 col-xs-7" style="background: rgba(0,0,0,0.1); text-align:left"><input type=radio value=true class=focusOn style="opacity: 0; margin-left: 0px" ng-focus="setActiveField(field._id, null, false)" ng-model=field.fieldValue ng-model-options="{ debounce: 250 }" ng-required=field.required ng-change=nextField()><div class=letter>{{ \'Y\' | translate }}</div><span>{{ \'YES\' | translate }}</span> <i ng-show="field.fieldValue === \'true\'" class="fa fa-check" aria-hidden=true></i></label></div><div class=row style="margin-top: 10px"><label class="btn btn-default col-md-2 col-sm-3 col-xs-7" style="background: rgba(0,0,0,0.1); text-align:left"><input type=radio value=false style="opacity:0; margin-left:0px" ng-focus="setActiveField(field._id, null, false)" ng-model=field.fieldValue ng-model-options="{ debounce: 250 }" ng-required=field.required ng-change=nextField()><div class=letter>{{ \'N\' | translate }}</div><span>{{ \'NO\' | translate }}</span> <i ng-show="field.fieldValue === \'false\'" class="f
h["delete"]("/forms/"+a).then(function(a){e.go("listForms",{},{reload:!0})},function(a){console.error(a)})}},c.updateDesign=function(a,b,d,e){c.update(a,b,d,e,function(){m()})},c.update=a.update=function(b,d,e,f,g){var i=!0;if(b||(i=!a.saveInProgress),i){var j=null;if(b||(a.saveInProgress=!0),e){for(var k=new RegExp("^[0-9a-fA-F]{24}$"),l=0;l<c.myform.form_fields.length;l++){var m=c.myform.form_fields[l];k.exec(m._id+"")||(delete c.myform.form_fields[l]._id,delete c.myform.form_fields[l].id)}var d=DeepDiff.diff(c.oldForm,c.myform);c.updatePromise=h.put("/forms/"+c.myform._id,{changes:d}).then(function(b){f&&(a.myform=c.myform=b.data,c.oldForm=_.cloneDeep(c.myform))})["catch"](function(a){j=a.data,console.error(j)})["finally"](function(){if(b||(a.saveInProgress=!1),"function"==typeof g)return g(j)})}else{var n=d;n.analytics&&n.analytics.visitors&&delete n.analytics.visitors,n.submissions&&delete n.submissions,n.visible_form_fields&&delete n.visible_form_fields,n.analytics&&(delete n.analytics.visitors,delete n.analytics.fields,delete n.analytics.submissions,delete n.analytics.views,delete n.analytics.conversionRate),delete n.created,delete n.lastModified,delete n.__v,c.updatePromise=h.put("/forms/"+c.myform._id,{form:n}).then(function(b){f&&(a.myform=c.myform=b.data)})["catch"](function(a){j=a.data,console.error(j)})["finally"](function(){if(b||(a.saveInProgress=!1),"function"==typeof g)return g(j)})}}}}]),angular.module("forms").controller("ListFormsController",["$rootScope","$scope","$stateParams","$state","GetForms","CurrentForm","$http","$uibModal","myForms",function(a,b,c,d,e,f,g,h,i){b=a,b.forms={},b.showCreateModal=!1,b.myforms=i,a.languageRegExp={regExp:/[@!#$%^&*()\-+={}\[\]|\\/'";:`.,~№?<>]+/i,test:function(a){return!this.regExp.test(a)}},b.openDeleteModal=function(a){b.deleteModal=h.open({animation:b.animationsEnabled,templateUrl:"deleteModalListForms.html",controller:["$uibModalInstance","items","$scope",function(a,b,c){c.content=b,c.cancel=c.cancelDeleteModal,c.deleteForm=function(){c.$parent.removeForm(b.formIndex)}}],resolve:{items:function(){return{currFormTitle:b.myforms[a].title,formIndex:a}}}})},b.cancelDeleteModal=function(){b.deleteModal&&b.deleteModal.dismiss("cancel")},b.openCreateModal=function(){b.showCreateModal||(b.showCreateModal=!0)},b.closeCreateModal=function(){b.showCreateModal&&(b.showCreateModal=!1)},b.setForm=function(a){b.myform=a},b.goToWithId=function(a,b){d.go(a,{formId:b},{reload:!0})},b.duplicateForm=function(a){var c=_.cloneDeep(b.myforms[a]);delete c._id,g.post("/forms",{form:c}).success(function(c,d,e){b.myforms.splice(a+1,0,c)}).error(function(a){console.error(a),null===a&&(b.error=a.data.message)})},b.createNewForm=function(){var a={};a.title=b.forms.createForm.title.$modelValue,a.language=b.forms.createForm.language.$modelValue,b.forms.createForm.$valid&&b.forms.createForm.$dirty&&g.post("/forms",{form:a}).success(function(a,c,d){b.goToWithId("viewForm.create",a._id+"")}).error(function(a){console.error(a),b.error=a.data.message})},b.removeForm=function(a){if(a>=b.myforms.length||a<0)throw new Error("Error: form_index in removeForm() must be between 0 and "+b.myforms.length-1);g["delete"]("/forms/"+b.myforms[a]._id).success(function(c,d,e){b.myforms.splice(a,1),b.cancelDeleteModal()}).error(function(a){console.error(a)})}}]),angular.module("forms").directive("configureFormDirective",["$rootScope","$http","Upload","CurrentForm",function(a,b,c,d){return{templateUrl:"modules/forms/admin/views/directiveViews/form/configure-form.client.view.html",restrict:"E",scope:{myform:"=",user:"=",pdfFields:"@",formFields:"@"},controller:["$scope",function(b){b.log="",b.languages=a.languages,b.resetForm=a.resetForm,b.update=a.update}]}}]),angular.module("forms").directive("editFormDirective",["$rootScope","FormFields","$uibModal",function(a,b,c){return{templateUrl:"modules/forms/admin/views/directiveViews/form/edit-form.client.view.html",restrict:"E",transclude:!0,scope:{myform:"="},controller:["$scope",function(d){var e;d.sortableOptions={appendTo:".dropzone",forceHelperSize:!0,forcePlace
IS_EQUAL_TO:"est égal à",IS_NOT_EQUAL_TO:"n'est pas égal à",IS_GREATER_THAN:"est supérieur à",IS_GREATER_OR_EQUAL_THAN:"est supérieur ou égal à",IS_SMALLER_THAN:"est plus petit que",IS_SMALLER_OR_EQUAL_THAN:"est plus petit ou égal à",CONTAINS:"contient",DOES_NOT_CONTAINS:"ne contient pas",ENDS_WITH:"se termine par",DOES_NOT_END_WITH:"ne finit pas avec",STARTS_WITH:"commence par",DOES_NOT_START_WITH:"ne commence pas par",THEN_JUMP_TO:"alors saute à",TOTAL_VIEWS:"total des visites uniques",RESPONSES:"réponses",COMPLETION_RATE:"taux d'achèvement",AVERAGE_TIME_TO_COMPLETE:"moy. le temps d'achèvement",DESKTOP_AND_LAPTOP:"Desktops",TABLETS:"Tablettes",PHONES:"Téléphones",OTHER:"Autre",UNIQUE_VISITS:"Visites uniques",FIELD_TITLE:"Titre du champ",FIELD_VIEWS:"Vues de champ",FIELD_DROPOFF:"Achèvement du champ",FIELD_RESPONSES:"Réponses sur le terrain",DELETE_SELECTED:"Supprimer la sélection",EXPORT_TO_EXCEL:"Exporter vers Excel",EXPORT_TO_CSV:"Export vers CSV",EXPORT_TO_JSON:"Exporter vers JSON",PERCENTAGE_COMPLETE:"Pourcentage terminé",TIME_ELAPSED:"Temps écoulé",DEVICE:"Dispositif",LOCATION:"Emplacement",IP_ADDRESS:"Adresse IP",DATE_SUBMITTED:"Date de soumission",BACKGROUND_COLOR:"Couleur d'arrière-plan",DESIGN_HEADER:"Changez l'apparence de votre formulaire",QUESTION_TEXT_COLOR:"Couleur du texte de la question",ANSWER_TEXT_COLOR:"Couleur du texte de la réponse",BTN_BACKGROUND_COLOR:"Couleur d'arrière-plan du bouton",BTN_TEXT_COLOR:"Couleur du texte du bouton",EMBED_YOUR_FORM:"Intégrez votre formulaire",SHARE_YOUR_FORM:"Partager votre formulaire",CREATE_TAB:"Créer",DESIGN_TAB:"Design",CONFIGURE_TAB:"Configurer",ANALYZE_TAB:"Analyser",SHARE_TAB:"Partager",SHORT_TEXT:"Texte court",EMAIL:"E-mail",MULTIPLE_CHOICE:"Choix multiple",DROPDOWN:"Menu Déroulant",DATE:"Date",PARAGRAPH_T:"Paragraphe",OUI_NON:"Oui / Non",LEGAL:"Légal",RATING:"Évaluation",NUMBERS:"Chiffres",SIGNATURE:"Signature",FILE_UPLOAD:"Téléchargement de fichier",OPTION_SCALE:"Option Scale",PAYMENT:"Paiement",STATEMENT:"Déclaration",LINK:"Lien",FORM_SUCCESS:"Entrée de formulaire soumise avec succès!",REVIEW:"Réviser",BACK_TO_FORM:"Revenir au formulaire",EDIT_FORM:"Modifier ce TellForm",ADVANCEMENT:"{{done}} sur {{total}} a répondu",CONTINUE_FORM:"Continuer à se former",REQUIRED:"requis",COMPLETING_NEEDED:"{{answers_not_completed}} réponse (s) doivent être complétées",OPTIONAL:"optionnel",ERROR_EMAIL_INVALID:"Veuillez entrer une adresse email valide",ERROR_NOT_A_NUMBER:"Veuillez entrer uniquement des numéros valides",ERROR_URL_INVALID:"S'il vous plaît une adresse valide",OK:"OK",ENTER:"appuyez sur ENTRER",NEWLINE:"appuyez sur MAJ + ENTRÉE pour créer une nouvelle ligne",CONTINUE:"Continuer",LEGAL_ACCEPT:"J'accepte",LEGAL_NO_ACCEPT:"Je n'accepte pas",SUBMIT:"Soumettre",UPLOAD_FILE:"Télécharger votre fichier"})}]),angular.module("forms").config(["$translateProvider",function(a){a.translations("de",{ADVANCED_SETTINGS:"Erweiterte Einstellungen",FORM_NAME:"Formularname",FORM_STATUS:"Formularstatus",PUBLIC:"Öffentlich",PRIVATE:"Privat",GA_TRACKING_CODE:"Google Analytics Tracking-Code",DISPLAY_FOOTER:"Formularfußzeile anzeigen?",SAVE_CHANGES:"Änderungen speichern",CANCEL:"Abbrechen",DISPLAY_START_PAGE:"Startseite anzeigen?",DISPLAY_END_PAGE:"Benutzerdefinierte Endseite anzeigen?",CREATE_A_NEW_FORM:"Erstelle ein neues Formular",CREATE_FORM:"Formular erstellen",CREATED_ON:"Erstellt am",MY_FORMS:"Meine Formulare",NAME:"Name",SPRACHE:"Sprache",FORM_PAUSED:"Formular pausiert",EDIT_FIELD:"Dieses Feld bearbeiten",SAVE_FIELD:"Speichern",ON:"ON",AUS:"AUS",REQUIRED_FIELD:"Erforderlich",LOGIC_JUMP:"Logischer Sprung",SHOW_BUTTONS:"Zusätzliche Schaltflächen",SAVE_START_PAGE:"Speichern",ARE_YOU_SURE:"Bist du ABSOLUT sicher?",READ_WARNING:"Unerwartete schlimme Dinge werden passieren, wenn Sie das nicht lesen!",DELETE_WARNING1:'Diese Aktion kann NICHT rückgängig gemacht werden. Dies wird dauerhaft die "',DELETE_WARNING2:'"Formular und entferne alle verknüpften Formulareinreichungen.',DELETE_CONFIRM:"Bitte geben Sie den Namen des zu bestä
}))})}}}]),angular.module("view-form").directive("onFinishRender",["$rootScope","$timeout",function(a,b){return{restrict:"A",link:function(b,c,d){if(c.attr("ng-repeat")||c.attr("data-ng-repeat")){var e=d.onFinishRender||"ngRepeat";b.$first&&!b.$last?b.$evalAsync(function(){a.$broadcast(e+" Started")}):b.$last&&b.$evalAsync(function(){a.$broadcast(e+" Finished")})}}}}]),jsep.addBinaryOp("contains",10),jsep.addBinaryOp("!contains",10),jsep.addBinaryOp("begins",10),jsep.addBinaryOp("!begins",10),jsep.addBinaryOp("ends",10),jsep.addBinaryOp("!ends",10),angular.module("view-form").directive("submitFormDirective",["$http","TimeCounter","$filter","$rootScope","SendVisitorData","$translate","$timeout",function(a,b,c,d,e,f,g){return{templateUrl:"form_modules/forms/base/views/directiveViews/form/submit-form.client.view.html",restrict:"E",scope:{myform:"=",ispreview:"="},controller:["$document","$window","$scope",function(f,g,h){var i=!1,j="submit_field";h.forms={},h.ispreview&&b.restartClock();var k=h.myform.visible_form_fields.filter(function(a){return"statement"!==a.fieldType}).length,l=c("formValidity")(h.myform);h.translateAdvancementData={done:l,total:k,answers_not_completed:k-l},h.reloadForm=function(){h.myform.submitted=!1,h.myform.form_fields=_.chain(h.myform.visible_form_fields).map(function(a){return a.fieldValue="",a}).value(),h.loading=!1,h.error="",h.selected={_id:"",index:0},h.setActiveField(h.myform.visible_form_fields[0]._id,0,!1),b.restartClock()};var m=function(a){var b=a.logicJump;if(b.enabled&&b.expressionString&&b.valueB&&a.fieldValue){var c,d,e=jsep(b.expressionString);if("field"===e.left.name?(c=a.fieldValue,d=b.valueB):(c=b.valueB,d=a.fieldValue),"number"===a.fieldType||"scale"===a.fieldType||"rating"===a.fieldType)switch(e.operator){case"==":return parseInt(c)===parseInt(d);case"!==":return parseInt(c)!==parseInt(d);case">":return parseInt(c)>parseInt(d);case">=":return parseInt(c)>parseInt(d);case"<":return parseInt(c)<parseInt(d);case"<=":return parseInt(c)<=parseInt(d);default:return!1}else switch(e.operator){case"==":return c===d;case"!==":return c!==d;case"contains":return c.indexOf(d)>-1;case"!contains":return!(c.indexOf(d)>-1);case"begins":return c.startsWith(d);case"!begins":return!c.startsWith(d);case"ends":return c.endsWith(d);case"!ends":return c.endsWith(d);default:return!1}}},n=function(){if(null===h.selected)throw console.error("current active field is null"),new Error("current active field is null");return h.selected._id===j?h.myform.form_fields.length-1:h.selected.index};h.isActiveField=function(a){return h.selected._id===a._id},h.setActiveField=d.setActiveField=function(a,b,d){if(null!==h.selected&&(a||null!==b)){if(a){if(null===b){b=h.myform.visible_form_fields.length;for(var e=0;e<h.myform.visible_form_fields.length;e++){var g=h.myform.visible_form_fields[e];if(g._id==a){b=e;break}}}}else a=h.myform.visible_form_fields[b]._id;if(h.selected._id!==a){h.selected._id=a,h.selected.index=b;var j=c("formValidity")(h.myform);h.translateAdvancementData={done:j,total:k,answers_not_completed:k-j},d&&(i=!0,setTimeout(function(){f.scrollToElement(angular.element(".activeField"),-10,200).then(function(){i=!1,setTimeout(function(){document.querySelectorAll(".activeField .focusOn").length?document.querySelectorAll(".activeField .focusOn")[0].focus():document.querySelectorAll(".activeField input").length?document.querySelectorAll(".activeField input")[0].focus():document.querySelectorAll(".activeField .selectize-input")[0].focus()})})}))}}},h.$watch("selected.index",function(a,c){a!==c&&c<h.myform.form_fields.length&&(h.myform.submitted||(console.log("SendVisitorData.send()"),e.send(h.myform,c,b.getTimeElapsed())))}),g.onscroll=function(){if(!i){var a,b=$(window).scrollTop(),c=document.getElementsByClassName("activeField")[0].getBoundingClientRect(),d=c.top,e=c.bottom,f=$(".activeField").height(),g=$(".form-actions").height(),k=$(document).height()-$(window).height(),l=($("form_fields").height(),"form > .field-directive:nth-of-type("+String(h.myform.visible_form_fields.length-1)+")"),m=$(l).height(),n=k