{"version":3,"file":"functions.min.js","names":["signupStatus","signinStatus","signinStatusMessage","PAGE_ROOT","API_BASE_URL","PHOTOLIBITEMS_DOWNLOAD_BASE_URL","emailPattern","BASE_URL","pathArray","window","location","pathname","split","includes","getAllUrlParams","url","queryString","search","slice","obj","arr","i","length","a","paramName","paramValue","toLowerCase","match","key","replace","index","exec","push","searchForm","document","getElementById","addEventListener","event","console","log","checkValidity","classList","add","preventDefault","stopPropagation","remove","VUETIFY_OPTIONS","theme","themes","dark","light","primary","pfs_primary","pfs_primary_hover","pfs_primary_light","pfs_white","pfs_grey_lighter","pfs_grey_light","pfs_grey_middle","pfs_black","pfs_cyan","pfs_cyan_light","pfs_green","pfs_green_light","pfs_red","pfs_red_dark","pfs_red_light","pfs_orange","pfs_orange_dark","pfs_orange_light","pfs_yellow","VUE_LOAD_PAGES","stringTranslation","stringVar","e_mail_is_required","e_mail_must_be_valid","password_is_required","min_8_characters_with_at_least_one_capital_letter_a_number_and_a_special_character","the_password_confirmation_does_not_match","terms_of_service__is_required","first_name_is_required","surname_is_required","position_is_required","type_of_restaurant_is_required","address__is_required","this_field_is_required","only_numbers","must_be_","_characters","restaurant_type_is_required","restaurant_name_is_required","restaurant_address_is_required","postal_code_is_required","name_is_required","your_position_is_required","phone_number_is_required","min_8_characters","there_seems_to_be_some_technical_error","message_is_required","we_apologize_something_went_wrong_please_try_again_later","file_extension_must_be_png","eval","downloadFile","title","size","link","createElement","href","body","appendChild","click","removeChild","forEach","item","fn","DeletableCardComponent","props","data","delete_dropdown_id","show","computed","apiUrl","API_DELETE_PATH","methods","handleDeleteDropdown","id","deleteItem","fetch","method","headers","then","response","ok","$emit","Error","statusText","json","status","message","catch","error","getDataMixin","isLoading","created","getData","reset","itemList","Results","totalResults","TotalResults","totalPages","TotalPages","currentlyLoaded","progress_percent","toFixed","page","hide_paginator","updateProgressbar","PFS_pagesListMenu","Vue","el","items","text","type","vuetify","Vuetify","PFS_registrationConfirmPage","PFS_loginFormV2","isInForm","step","isStepValid_1","email","emailRules","v","test","showPass1","password","passRules","required","nextStep","signUpStep","_this","jQuery","ajax","page_data__sign_up_url","dataType","done","fail","err","always","setTimeout","watch","handler","val","oldVal","PFS_loginForm","valid","show_password","server_error","server_error_msg","rules","value","min","validEmail","loginUser","$refs","loginForm","validate","url_postlogin","username","isLoggedIn","Item1","url_afterlogin","PFS_forgotPasswordForm","isSuccess","errorMessage","showPass2","passwordConfirm","characters","pattern","confirmPassword","tos","tosRules","firstName","lastName","position","restaurantType","address","restaurantName","zip","pepsicoUserObj","UserID","$","Password","url_resetpasswordconfirm","PFS_passwordResetRequest","submitForm","_self","Email","url_resetpasswordrequest","PFS_registrationForm","isLoaded","direction","siretNumberLength","cancelRegistrationDialog","isStepValid_2","isStepValid_3","isStepValid_4","firstNameRules","lastNameRules","positionRules","restaurantTypes","page_data__restaurant_types","restaurantTypeRules","addressRules","siretNumber","siretNumberRules","numeric","numLength","restaurantNameRules","restaurantZipRules","idPepsicoEmail","domain","substring","lastIndexOf","prevStep","Name","SurName","UserName","ProfileType","attr","YourEstablishment","SiretNumber","TypeOfRestaurant","FacilityName","PostalCode","url_postsignup","cancelRegistration","resetSteps","nextStepNoValidation","googleMapAutocomplete","inputElement","origin__vuetify","input","autocomplete","google","maps","places","Autocomplete","componentRestrictions","country","fields","types","addListener","place","getPlace","name","j","address_components","k","short_name","deep","mounted","$nextTick","PFS_recipe_actions_box","isSavedRecipe","saveOrDeleteRecipe","recipe_api_base_path","recipeActionPath","recipeId","Success","ErrorMessage","PFS_serves_counter","ingredients","ingredient_list_html","reference_amount","serves_amount_reference_value","ingredient_list","ingredientAmount","serves","decreaseAmount","vm","amount","Math","round","increaseAmount","beforeMount","PFS_profileForm","editAccountMode","editRestaurantMode","page_data__menu_list","account_valid","password_valid","restaurant_valid","page_data__first_name","page_data__last_name","nameRules","page_data__email","page_data__position","positions","page_data__positions","page_data__restaurant_name","restaurantAddress","page_data__restaurant_address","restaurantAddressRules","restaurantZip","page_data__restaurant_zip","restaurantPhone","page_data__restaurant_phone","restaurantPhoneRules","page_data__siret_number","_this6","page_data__restaurant_type","restaurantAdditionalType","page_data__restaurant_additional_type","showRestaurantAdditionalType","editAccount","changePassword","responseMessage","page_data__password_url","reload","html","editRestaurant","saveAccount","UserProfile","ProfileTypes","TypeOfRestaurantAdditional","PhoneNumber","ProfileActivityLink","IsMyAccount","IsMyRestaurant","page_data__account_url","userModifyResponse","roleModifyResponse","profielModifyResponse","saveRestaurant","page_data__restaurant_url","restaurantTypeEither","isEither","PFS_recipeListing","filterSettings","sort","search_string","brand","dishTypes","restaurant_type","filter_sort_values","filter_food_type","filter_brand","filter_restaurant_type","mixins","recipesList","getSort","by","order","sortArray","onFilterChange","showMore","PFS_searchResults","getSearchQueryFromUrl","query","PFS_productListing","productList","PFS_newsListing","newsType","newsList","PFS_brandListing","brandList","PFS_equipmentListing","CATEGORY_ID","PFS_savedRecipes","showErrorSnackbar","deleteErrorMsg","SAVED_CONTENT_API_PATH","components","isItemDeleted","PFS_savedMenus","PFS_popupPermissions","popupPermissionsDialog","isPopupPermissionAccepted","acceptPopupPermission","is_accepted","url_popup_permissions","errorMessages","is_popup_permissions_accepted","component","post","image_thumbnail","Thumbnail","imageId","ImageId","thumbnail","platform","filter_platform","resizeType","ResizeOptions","isResizable","checkIfResizable","handleFileDownload","downloadImageUrl","PFS_photoLibraryListing","type_of_visuals","filter_category","filter_type_of_visuals","photoLibraryListing","encodeURIComponent","PFS_ContactForm","contact_success","contact_success_msg","isContactFormValid","messageRules","contactFromData","Message","page_data__contact_path","updated","PFS_SecondaryContactForm","first_name","last_name","postal_code","restaurant_name","activity_type","selected_activity_type","newsletter","contactOptIn","postalCodeRules","activityTypeRules","FirstName","LastName","RestaurantName","ActivityType","Newsletter","ContactOptIn","PFS_Contest","model","Venue","PurchasedFrom","InvoiceImage","Subscribed","contest_success","contest_success_msg","siretNumberPattern","phoneNumberPattern","isContestFormValid","surnameRules","phoneNumberRules","regex","requiredRules","invoiceImageRules","validateFileExtension","antiforgerytoken","querySelector","FormData","append","contest_api_path","enctype","processType","processData","contentType","image","allowedExtensions","ext","calculateProgress","total","loaded","isEmailExist","url_isEmailExist","emailId","validateEmail","re"],"sources":["functions.js"],"sourcesContent":["var signupStatus = \"\";\r\nvar signinStatus = \"\";\r\nvar signinStatusMessage = \"\";\r\n\r\nlet PAGE_ROOT = \"/\";\r\n\r\nvar API_BASE_URL;\r\nvar PHOTOLIBITEMS_DOWNLOAD_BASE_URL;\r\n\r\nvar emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4}$/;\r\n\r\nif (typeof BASE_URL !== \"undefined\" && BASE_URL !== \"\") {\r\n API_BASE_URL = BASE_URL + \"/api/content\";\r\n PHOTOLIBITEMS_DOWNLOAD_BASE_URL = BASE_URL + \"/api\";\r\n} else {\r\n API_BASE_URL = \"/api/content\";\r\n PHOTOLIBITEMS_DOWNLOAD_BASE_URL = \"/api\";\r\n}\r\n\r\nvar pathArray = window.location.pathname.split(\"/\");\r\n\r\n// check if on local or on dev server\r\nif (pathArray.includes(\"pepsi_fsf\")) {\r\n PAGE_ROOT = \"/pepsi_fsf/\";\r\n} else {\r\n PAGE_ROOT = \"/\";\r\n}\r\n\r\nfunction getAllUrlParams(url) {\r\n // get query string from url (optional) or window\r\n var queryString = url ? url.split(\"?\")[1] : window.location.search.slice(1);\r\n\r\n // we'll store the parameters here\r\n var obj = {};\r\n\r\n // if query string exists\r\n if (queryString) {\r\n // stuff after # is not part of query string, so get rid of it\r\n queryString = queryString.split(\"#\")[0];\r\n\r\n // split our query string into its component parts\r\n var arr = queryString.split(\"&\");\r\n\r\n for (var i = 0; i < arr.length; i++) {\r\n // separate the keys and the values\r\n var a = arr[i].split(\"=\");\r\n\r\n // set parameter name and value (use 'true' if empty)\r\n var paramName = a[0];\r\n var paramValue = typeof a[1] === \"undefined\" ? true : a[1];\r\n\r\n // (optional) keep case consistent\r\n paramName = paramName.toLowerCase();\r\n if (typeof paramValue === \"string\") paramValue = paramValue.toLowerCase();\r\n\r\n // if the paramName ends with square brackets, e.g. colors[] or colors[2]\r\n if (paramName.match(/\\[(\\d+)?\\]$/)) {\r\n // create key if it doesn't exist\r\n var key = paramName.replace(/\\[(\\d+)?\\]/, \"\");\r\n if (!obj[key]) obj[key] = [];\r\n\r\n // if it's an indexed array e.g. colors[2]\r\n if (paramName.match(/\\[\\d+\\]$/)) {\r\n // get the index value and add the entry at the appropriate position\r\n var index = /\\[(\\d+)\\]/.exec(paramName)[1];\r\n obj[key][index] = paramValue;\r\n } else {\r\n // otherwise add the value to the end of the array\r\n obj[key].push(paramValue);\r\n }\r\n } else {\r\n // we're dealing with a string\r\n if (!obj[paramName]) {\r\n // if it doesn't exist, create property\r\n obj[paramName] = paramValue;\r\n } else if (obj[paramName] && typeof obj[paramName] === \"string\") {\r\n // if property does exist and it's a string, convert it to an array\r\n obj[paramName] = [obj[paramName]];\r\n obj[paramName].push(paramValue);\r\n } else {\r\n // otherwise add the property\r\n obj[paramName].push(paramValue);\r\n }\r\n }\r\n }\r\n }\r\n\r\n return obj;\r\n}\r\n\r\n(function () {\r\n // Validation for search form in header\r\n var searchForm = document.getElementById(\"js-search-form\");\r\n if (searchForm) {\r\n searchForm.addEventListener(\r\n \"submit\",\r\n function (event) {\r\n console.log(\"Event added\");\r\n // console.log(\"form.checkValidity() :>> \", searchForm.checkValidity());\r\n if (!searchForm.checkValidity()) {\r\n searchForm.classList.add(\"dm-not-valid-form\");\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n\r\n searchForm.classList.add(\"dm-was-validated\");\r\n searchForm.classList.remove(\"dm-not-valid-form\");\r\n\r\n // ToDo\r\n // redirect on search page\r\n // SEARCH_PAGE_SLUG is slug to search page\r\n },\r\n false\r\n );\r\n }\r\n})();\r\n\r\nconst VUETIFY_OPTIONS = {\r\n theme: {\r\n themes: {\r\n dark: false,\r\n light: {\r\n // primary: \"#004C97\",\r\n primary: \"#101010\",\r\n pfs_primary: \"#004C97\",\r\n pfs_primary_hover: \"#005DB8\",\r\n pfs_primary_light: \"#E6EEF5\",\r\n pfs_white: \"#FFFFFF\",\r\n pfs_grey_lighter: \"#F8F8F8\",\r\n pfs_grey_light: \"#EFEFEF\",\r\n pfs_grey_middle: \"#848484\",\r\n pfs_black: \"#101010\",\r\n pfs_cyan: \"#0085CA\",\r\n pfs_cyan_light: \"#00A9E0\",\r\n pfs_green: \"#009639\",\r\n pfs_green_light: \"#78BE20\",\r\n pfs_red: \"#BC272C\",\r\n pfs_red_dark: \"#A6181C\",\r\n pfs_red_light: \"#F6E8E8\",\r\n pfs_orange: \"#EE6530\",\r\n pfs_orange_dark: \"#E62D36\",\r\n pfs_orange_light: \"#F5913B\",\r\n pfs_yellow: \"#F7CD5A\",\r\n },\r\n },\r\n },\r\n};\r\n\r\n// Naming pattern - EVERY Vuetify component should be wrapped in a CLASS. The class name should have the \"PFS_\" prefix\r\nconst VUE_LOAD_PAGES = [\r\n \"PFS_loginForm\",\r\n \"PFS_featuredArticle\",\r\n \"PFS_recipeListing\",\r\n \"PFS_productListing\",\r\n \"PFS_ContactForm\",\r\n \"PFS_SecondaryContactForm\",\r\n \"PFS_profileForm\",\r\n \"PFS_photoLibraryListing\",\r\n \"PFS_newsListing\",\r\n \"PFS_brandListing\",\r\n \"PFS_savedRecipes\",\r\n \"PFS_savedMenus\",\r\n \"PFS_serves_counter\",\r\n \"PFS_recipe_actions_box\",\r\n \"PFS_registrationForm\",\r\n \"PFS_registrationConfirmPage\",\r\n \"PFS_forgotPasswordForm\",\r\n \"PFS_pagesListMenu\",\r\n \"PFS_passwordResetRequest\",\r\n \"PFS_loginFormV2\",\r\n \"PFS_searchResults\",\r\n \"PFS_popupPermissions\",\r\n \"PFS_Contest\",\r\n \"PFS_equipmentListing\",\r\n];\r\n\r\nfunction stringTranslation(stringVar) {\r\n // var e_mail_is_required = 'E-mail is required.'\r\n // var e_mail_must_be_valid = 'E-mail must be valid.'\r\n // var password_is_required = 'Password is required.'\r\n // var min_8_characters_with_at_least_one_capital_letter_a_number_and_a_special_character = 'Min. 8 characters with at least one capital letter, a number and a special character.'\r\n // var the_password_confirmation_does_not_match = 'The password confirmation does not match.'\r\n // var terms_of_service__is_required = 'Terms of Service is required.'\r\n // var first_name_is_required = 'First name is required.'\r\n // var surname_is_required = 'Surname is required.'\r\n // var position_is_required = 'Position is required.'\r\n // var type_of_restaurant_is_required = 'Type of Restaurant is required.'\r\n // var address__is_required = 'Address is required.'\r\n // var this_field_is_required = 'This field is required.'\r\n // var only_numbers = 'Only numbers.'\r\n // var must_be_ = 'Must be '\r\n // var _characters = ' characters'\r\n // var restaurant_type_is_required = 'Restaurant Type is required.'\r\n // var restaurant_name_is_required = 'Restaurant Name is required.'\r\n // var restaurant_address_is_required = 'Restaurant address is required.'\r\n // var postal_code_is_required = 'Postal code is required.'\r\n // var name_is_required = 'Name is required.'\r\n // var your_position_is_required = 'Your position is required.'\r\n // var phone_number_is_required = 'Phone Number is required.'\r\n // var min_8_characters = 'Min 8 characters.'\r\n // var message_is_required = 'Message is required.'\r\n // var we_apologize_something_went_wrong_please_try_again_later = 'We apologize, something went wrong. Please try again later'\r\n\r\n var e_mail_is_required = \"Adresse e-mail requise.\";\r\n var e_mail_must_be_valid = \"L'adresse e-mail doit-être valide.\";\r\n var password_is_required = \"Mot de passe requis.\";\r\n var min_8_characters_with_at_least_one_capital_letter_a_number_and_a_special_character =\r\n \"Min. 8 caractères avec au moins une lettre en capitale, un chiffre et un caractère spécial.\";\r\n var the_password_confirmation_does_not_match =\r\n \"La confirmation du mot de passe ne correspond pas.\";\r\n var terms_of_service__is_required =\r\n \"Acceptation des Conditions Générales d'Utilisations requise.\";\r\n var first_name_is_required = \"Nom requis.\";\r\n var surname_is_required = \"Prénom requis.\";\r\n var position_is_required = \"Profession requise.\";\r\n var type_of_restaurant_is_required = \"Type de restauration requis.\";\r\n var address__is_required = \"Adresse requise.\";\r\n var this_field_is_required = \"Ce champs est requis.\";\r\n var only_numbers = \"Chiffre uniquement\";\r\n var must_be_ = \"Doit être \";\r\n var _characters = \" caractères\";\r\n var restaurant_type_is_required = \"Type de restauration requis.\";\r\n var restaurant_name_is_required = \"Nom de l'établissement requis.\";\r\n var restaurant_address_is_required =\r\n \"L'adresse de l'établissement est requise.\";\r\n var postal_code_is_required = \"Le code postal est requis.\";\r\n var name_is_required = \"Nom requis.\";\r\n var your_position_is_required = \"Votre profession est requise.\";\r\n var phone_number_is_required = \"Numéro de téléphone requis.\";\r\n var min_8_characters = \"Min. 8 caractères.\";\r\n var there_seems_to_be_some_technical_error =\r\n \"Une erreur technique est survenue.\";\r\n var message_is_required = \"Le message est requis\";\r\n var we_apologize_something_went_wrong_please_try_again_later =\r\n \"Nous sommes désolé, une erreur est survenue. Merci de réessayer plus tard.\";\r\n var file_extension_must_be_png =\r\n \"Le fichier uploadé doit être au format .png, .jpg ou .jpeg\";\r\n\r\n return eval(stringVar);\r\n}\r\n\r\nfunction downloadFile(url, title, size) {\r\n if (title == \"\") {\r\n title = \"logo\";\r\n }\r\n var link = document.createElement(\"a\");\r\n link.href = url;\r\n // link.download = title + '-' + size;\r\n\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n}\r\n\r\ndocument.addEventListener(\"DOMContentLoaded\", function () {\r\n VUE_LOAD_PAGES.forEach((item) => {\r\n if (document.getElementById(item) !== null) {\r\n // console.log(item);\r\n // find object\r\n var fn = window[item];\r\n\r\n // is object a function?\r\n if (typeof fn === \"function\") fn();\r\n }\r\n });\r\n});\r\n\r\n// Component for displaying card with delete functionality\r\n// Used in profile-saved-menu.html & profile-saved-recipes.html\r\n// HTML variables API_DELETE_PATH are required\r\nvar DeletableCardComponent = {\r\n props: [\"id\", \"name\", \"text\", \"thumbnail\", \"url\"],\r\n data() {\r\n return {\r\n delete_dropdown_id: null,\r\n show: true,\r\n };\r\n },\r\n computed: {\r\n apiUrl: function () {\r\n return BASE_URL + API_DELETE_PATH;\r\n // return 'http://localhost/pepsico-fsf-frontend/api/delete.php'\r\n },\r\n },\r\n methods: {\r\n handleDeleteDropdown(id) {\r\n if (id === this.delete_dropdown_id) {\r\n this.delete_dropdown_id = null;\r\n } else {\r\n this.delete_dropdown_id = id;\r\n }\r\n },\r\n deleteItem(id) {\r\n if (typeof API_DELETE_PATH !== \"undefined\") {\r\n // the API_DELETE_PATH is defined\r\n fetch(this.apiUrl, {\r\n method: \"POST\",\r\n body: \"{ id: \" + id + \" }\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n })\r\n .then((response) => {\r\n if (!response.ok) {\r\n this.$emit(\"item-deleted\", false);\r\n this.delete_dropdown_id = null;\r\n throw Error(response.statusText);\r\n }\r\n\r\n return response.json();\r\n })\r\n .then((data) => {\r\n if (data.status != \"Success\") {\r\n this.$emit(\"item-deleted\", false);\r\n this.delete_dropdown_id = null;\r\n throw Error(data.message);\r\n }\r\n\r\n this.$emit(\"item-deleted\", true);\r\n // Hide deleted item\r\n this.show = false;\r\n })\r\n .catch((error) => {\r\n this.$emit(\"item-deleted\", false);\r\n this.delete_dropdown_id = null;\r\n console.log(error);\r\n });\r\n } else {\r\n console.log(\"Delete path is missing\");\r\n }\r\n },\r\n },\r\n};\r\n\r\nvar getDataMixin = {\r\n data() {\r\n return {\r\n isLoading: false,\r\n };\r\n },\r\n created: function () {\r\n this.getData(this.apiUrl, true);\r\n },\r\n methods: {\r\n getData(url, reset) {\r\n this.isLoading = true;\r\n fetch(url)\r\n .then((response) => {\r\n if (!response.ok) throw Error(response.statusText);\r\n return response.json();\r\n })\r\n .then((data) => {\r\n if (reset) {\r\n this.itemList = data.Results;\r\n } else {\r\n for (var i of data.Results) {\r\n this.itemList.push(i);\r\n }\r\n }\r\n this.totalResults = data.TotalResults;\r\n this.totalPages = data.TotalPages;\r\n this.currentlyLoaded = this.itemList.length;\r\n this.progress_percent = (\r\n (this.currentlyLoaded / this.totalResults) *\r\n 100\r\n ).toFixed();\r\n\r\n if (this.totalResults > this.size) {\r\n if (this.page == this.totalPages) {\r\n this.hide_paginator = true;\r\n } else {\r\n this.hide_paginator = false;\r\n }\r\n } else {\r\n this.progress_percent = 100;\r\n this.hide_paginator = true;\r\n }\r\n\r\n this.isLoading = false;\r\n });\r\n },\r\n updateProgressbar() {\r\n if (this.currentlyLoaded > 0) {\r\n this.currentlyLoaded--;\r\n this.totalResults--;\r\n }\r\n this.progress_percent = (\r\n (this.currentlyLoaded / this.totalResults) *\r\n 100\r\n ).toFixed();\r\n },\r\n },\r\n};\r\n\r\nfunction PFS_pagesListMenu() {\r\n new Vue({\r\n el: \"#PFS_pagesListMenu\",\r\n data: () => ({\r\n items: [\r\n { text: \"Index\", link: \"index\" },\r\n { text: \"Photo library\", link: \"photo-library\" },\r\n { text: \"Search results\", link: \"search-results\" },\r\n { text: \"Contact\", link: \"contact\" },\r\n { text: \"Coming soon\", link: \"coming-soon\" },\r\n { text: \"Menu generator intro\", link: \"menu-generator-intro\" },\r\n { text: \"Simple text\", link: \"simple-text\" },\r\n\r\n { type: \"spacer\", text: \"User links\" },\r\n { text: \"Login\", link: \"login\" },\r\n { text: \"Forgot password\", link: \"forgot-password-form\" },\r\n { text: \"Registration\", link: \"registration\" },\r\n { text: \"Menu generator\", link: \"menu-generator\" },\r\n { text: \"Profile\", link: \"profile\" },\r\n { text: \"Profile saved menu\", link: \"profile-saved-menu\" },\r\n { text: \"Profile saved recipes\", link: \"profile-saved-recipes\" },\r\n\r\n { type: \"spacer\", text: \"Recette links\" },\r\n { text: \"Recipe listing\", link: \"recipe-listing\" },\r\n { text: \"Recipe detail\", link: \"recipe-detail\" },\r\n { text: \"Recette -Doritos Nuggets\", link: \"Recette--Doritos-Nuggets\" },\r\n {\r\n text: \"Recette -Doritos Loaded Fries\",\r\n link: \"Recette--Doritos-Loaded-Fries\",\r\n },\r\n {\r\n text: \"Recette -Doritos Hot Nachos\",\r\n link: \"Recette--Doritos-Hot-Nachos\",\r\n },\r\n { text: \"Recette -Doritos Burger\", link: \"Recette--Doritos-Burger\" },\r\n {\r\n text: \"Recette -Doritos Bolognaise\",\r\n link: \"Recette--Doritos-Bolognaise\",\r\n },\r\n {\r\n text: \"Recette Alvalle -TARTINABLE METRO\",\r\n link: \"Recette--Alvalle--TARTINABLE-METRO\",\r\n },\r\n {\r\n text: \"Recette Alvalle -PANNACOTTA METRO\",\r\n link: \"Recette--Alvalle--PANNACOTTA-METRO\",\r\n },\r\n {\r\n text: \"Recette Alvalle -GARNITURES METRO\",\r\n link: \"Recette--Alvalle--GARNITURES-METRO\",\r\n },\r\n {\r\n text: \"Recette Alvalle -BURRATA METRO\",\r\n link: \"Recette--Alvalle--BURRATA-METRO\",\r\n },\r\n\r\n { type: \"spacer\", text: \"Brand links\" },\r\n { text: \"Brand listing\", link: \"brand-listing\" },\r\n { text: \"Brand detail\", link: \"brand-detail\" },\r\n { text: \"Brand detail - Alvalle\", link: \"brand-detail--alvalle\" },\r\n { text: \"Brand detail - Doritos 404\", link: \"brand-detail--doritos\" },\r\n { text: \"Brand detail - Lay’s 404\", link: \"brand-detail--lays\" },\r\n { text: \"Brand detail - Quaker 404\", link: \"brand-detail--quaker\" },\r\n {\r\n text: \"Brand detail - Tropicana 404\",\r\n link: \"brand-detail--tropicana\",\r\n },\r\n { text: \"Brand detail - Pepsi 404\", link: \"brand-detail--pepsi\" },\r\n { text: \"Brand detail - Lipton 404\", link: \"brand-detail--lipton\" },\r\n { text: \"Brand detail - 7UP 404\", link: \"brand-detail--7up\" },\r\n\r\n { type: \"spacer\", text: \"News links\" },\r\n { text: \"More content\", link: \"more-content\" },\r\n { text: \"News listing\", link: \"news-listing\" },\r\n { text: \"News detail\", link: \"news-detail\" },\r\n { text: \"News detail 1\", link: \"news-detail-1\" },\r\n\r\n { type: \"spacer\", text: \"Product links\" },\r\n { text: \"Product listing\", link: \"product-listing\" },\r\n // { text: \"Product detail\", link: \"product-detail\" },\r\n {\r\n text: \"Product detail - Doritos Nature 454G\",\r\n link: \"product-detail--Doritos-Nature-454G\",\r\n },\r\n {\r\n text: \"Product detail - Sauce Doritos Salsa 1,2KG\",\r\n link: \"product-detail--Sauce-Doritos-Salsa-1-2KG\",\r\n },\r\n {\r\n text: \"Product detail - Sauce Doritos Nacho Cheese 1,2KG\",\r\n link: \"product-detail--Sauce-Doritos-Nacho-Cheese-1-2KG\",\r\n },\r\n {\r\n text: \"Product detail - Toutes nos tortillas Doritos\",\r\n link: \"product-detail--Toutes-nos-tortillas-Doritos\",\r\n },\r\n ],\r\n }),\r\n vuetify: new Vuetify(VUETIFY_OPTIONS),\r\n });\r\n}\r\n\r\nfunction PFS_registrationConfirmPage() {\r\n new Vue({\r\n el: \"#PFS_registrationConfirmPage\",\r\n vuetify: new Vuetify(VUETIFY_OPTIONS),\r\n });\r\n}\r\n\r\nfunction PFS_loginFormV2() {\r\n new Vue({\r\n el: \"#PFS_loginFormV2\",\r\n data() {\r\n return {\r\n isInForm: false,\r\n isLoading: false,\r\n step: 0,\r\n isStepValid_1: false,\r\n\r\n email: null,\r\n emailRules: [\r\n (v) => !!v || stringTranslation(\"e_mail_is_required\"),\r\n (v) => /.+@.+/.test(v) || stringTranslation(\"e_mail_must_be_valid\"),\r\n ],\r\n\r\n showPass1: false,\r\n password: \"\",\r\n passRules: {\r\n required: (v) => !!v || stringTranslation(\"password_is_required\"),\r\n },\r\n };\r\n },\r\n methods: {\r\n nextStep() {\r\n this.step++;\r\n },\r\n\r\n signUpStep() {\r\n this.isLoading = true;\r\n const _this = this;\r\n const data = {\r\n email: this.email,\r\n password: this.password,\r\n };\r\n jQuery\r\n .ajax({\r\n type: \"POST\",\r\n url: window.page_data__sign_up_url,\r\n data: data,\r\n dataType: \"json\",\r\n })\r\n .done(function () {\r\n console.log(\" success\");\r\n })\r\n .fail(function (err) {\r\n console.log(\"error: \", err);\r\n })\r\n .always(function () {\r\n console.log(\"finished signUpStep\");\r\n setTimeout(function () {\r\n _this.nextStep();\r\n _this.isLoading = false;\r\n }, 2000);\r\n });\r\n },\r\n },\r\n watch: {\r\n step: {\r\n handler: function (val, oldVal) {\r\n this.isInForm = val > 0;\r\n },\r\n },\r\n },\r\n vuetify: new Vuetify(VUETIFY_OPTIONS),\r\n });\r\n}\r\n\r\nfunction PFS_loginForm() {\r\n new Vue({\r\n el: \"#PFS_loginForm\",\r\n data: function () {\r\n return {\r\n valid: false,\r\n show_password: false,\r\n password: \"\",\r\n email: \"\",\r\n isLoading: false,\r\n server_error: false,\r\n server_error_msg: \"\",\r\n rules: {\r\n required: (value) =>\r\n !!value || stringTranslation(\"this_field_is_required\"),\r\n min: (v) => v.length >= 8 || stringTranslation(\"min_8_characters\"),\r\n validEmail: (v) =>\r\n /.+@.+/.test(v) || stringTranslation(\"e_mail_must_be_valid\"),\r\n },\r\n };\r\n },\r\n methods: {\r\n loginUser: function loginUser() {\r\n this.$refs.loginForm.validate();\r\n\r\n var email = this.email;\r\n var password = this.password;\r\n var _this = this;\r\n\r\n if (this.valid) {\r\n this.isLoading = true;\r\n\r\n jQuery\r\n .ajax({\r\n type: \"POST\",\r\n url: url_postlogin,\r\n data: { username: email, password: password },\r\n dataType: \"json\",\r\n })\r\n .done(function (data) {\r\n if (data.isLoggedIn == false) {\r\n _this.server_error = true;\r\n _this.server_error_msg = data.Item1;\r\n } else {\r\n // Reset server error\r\n _this.server_error = false;\r\n _this.server_error_msg = \"\";\r\n\r\n window.location.replace(url_afterlogin);\r\n }\r\n _this.isLoading = false;\r\n })\r\n .fail(function (err) {\r\n _this.server_error = true;\r\n _this.server_error_msg = \"Erreur inconnue\";\r\n _this.isLoading = false;\r\n console.log(\"error: \", err);\r\n });\r\n }\r\n },\r\n },\r\n vuetify: new Vuetify(VUETIFY_OPTIONS),\r\n });\r\n}\r\n\r\nfunction PFS_forgotPasswordForm() {\r\n new Vue({\r\n el: \"#PFS_forgotPasswordForm\",\r\n data() {\r\n return {\r\n el: \"#PFS_forgotPasswordForm\",\r\n isInForm: false,\r\n isLoading: false,\r\n step: 0,\r\n isSuccess: true,\r\n errorMessage: \"\",\r\n isStepValid_1: false,\r\n\r\n // Step 4\r\n showPass1: false,\r\n showPass2: false,\r\n\r\n password: \"\",\r\n passwordConfirm: \"\",\r\n passRules: {\r\n required: (v) => !!v || stringTranslation(\"password_is_required\"),\r\n characters: (v) => {\r\n const pattern =\r\n /^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#\\$%\\^&\\*])(?=.{8,})/;\r\n return (\r\n pattern.test(v) ||\r\n stringTranslation(\r\n \"min_8_characters_with_at_least_one_capital_letter_a_number_and_a_special_character\"\r\n )\r\n );\r\n },\r\n confirmPassword: (v) =>\r\n v === this.password ||\r\n stringTranslation(\"the_password_confirmation_does_not_match\"),\r\n },\r\n\r\n tos: 1,\r\n tosRules: [\r\n (v) => !!v || stringTranslation(\"terms_of_service__is_required\"),\r\n ],\r\n };\r\n },\r\n methods: {\r\n nextStep() {\r\n this.step++;\r\n },\r\n\r\n signUpStep() {\r\n this.isLoading = true;\r\n const _this = this;\r\n const data = {\r\n firstName: this.firstName,\r\n lastName: this.lastName,\r\n email: this.email,\r\n position: this.position,\r\n restaurantType: this.restaurantType,\r\n address: this.address,\r\n restaurantName: this.restaurantName,\r\n zip: this.zip,\r\n };\r\n\r\n var pepsicoUserObj = {\r\n UserID: $(\"#hdnUserId\").val(),\r\n Password: this.password,\r\n };\r\n\r\n jQuery\r\n .ajax({\r\n type: \"POST\",\r\n //url: window.page_data__sign_up_url,\r\n //data: data,\r\n url: url_resetpasswordconfirm,\r\n data: pepsicoUserObj,\r\n dataType: \"json\",\r\n })\r\n .done(function (data) {\r\n if (data == \"Success\") {\r\n console.log(\"Success\");\r\n _this.isSuccess = true;\r\n } else {\r\n _this.isSuccess = false;\r\n _this.errorMessage = data;\r\n }\r\n })\r\n .fail(function (err) {\r\n console.log(\"error: \", err);\r\n _this.isSuccess = false;\r\n _this.errorMessage = err;\r\n })\r\n .always(function () {\r\n console.log(\"finished signUpStep\");\r\n setTimeout(function () {\r\n _this.nextStep();\r\n\r\n _this.isLoading = false;\r\n }, 2000);\r\n });\r\n },\r\n },\r\n watch: {\r\n step: {\r\n handler: function (val, oldVal) {\r\n this.isInForm = val > 0;\r\n },\r\n },\r\n },\r\n vuetify: new Vuetify(VUETIFY_OPTIONS),\r\n });\r\n}\r\n\r\nfunction PFS_passwordResetRequest() {\r\n new Vue({\r\n el: \"#PFS_passwordResetRequest\",\r\n data() {\r\n return {\r\n el: \"#PFS_passwordResetRequest\",\r\n isInForm: false,\r\n isLoading: false,\r\n email: \"\",\r\n step: 0,\r\n isSuccess: true,\r\n errorMessage: \"\",\r\n isStepValid_1: false,\r\n emailRules: {\r\n required: (v) => !!v || stringTranslation(\"e_mail_is_required\"),\r\n valid: (v) =>\r\n /.+@.+/.test(v) || stringTranslation(\"e_mail_must_be_valid\"),\r\n },\r\n };\r\n },\r\n methods: {\r\n submitForm() {\r\n var _self = this;\r\n\r\n var pepsicoUserObj = {\r\n Email: this.email,\r\n };\r\n\r\n this.isLoading = true;\r\n setTimeout(function () {\r\n _self.step = 1;\r\n\r\n jQuery\r\n .ajax({\r\n type: \"POST\",\r\n url: url_resetpasswordrequest,\r\n data: pepsicoUserObj,\r\n dataType: \"json\",\r\n })\r\n .done(function (data) {\r\n if (data == \"Success\") {\r\n console.log(\"Success\");\r\n _self.isSuccess = true;\r\n } else {\r\n _self.isSuccess = false;\r\n _self.errorMessage = data;\r\n }\r\n })\r\n .fail(function (err) {\r\n console.log(\"error: \", err);\r\n _self.isSuccess = false;\r\n _self.errorMessage = data;\r\n })\r\n .always(function () {\r\n console.log(\"finished password Reset\");\r\n _self.isLoading = false;\r\n });\r\n }, 1000);\r\n },\r\n },\r\n vuetify: new Vuetify(VUETIFY_OPTIONS),\r\n });\r\n}\r\n\r\nfunction PFS_registrationForm() {\r\n new Vue({\r\n el: \"#PFS_registrationForm\",\r\n\r\n data() {\r\n return {\r\n isLoaded: false,\r\n direction: \"slide-left\",\r\n isInForm: false,\r\n isLoading: false,\r\n step: 1,\r\n siretNumberLength: 14,\r\n cancelRegistrationDialog: false,\r\n isStepValid_1: false,\r\n isStepValid_2: false,\r\n isStepValid_3: false,\r\n isStepValid_4: false,\r\n server_error: false,\r\n server_error_msg: \"\",\r\n // Step 0\r\n firstName: null,\r\n firstNameRules: [\r\n (v) => !!v || stringTranslation(\"first_name_is_required\"),\r\n ],\r\n\r\n lastName: null,\r\n lastNameRules: [(v) => !!v || stringTranslation(\"surname_is_required\")],\r\n\r\n email: null,\r\n emailRules: [\r\n (v) => !!v || stringTranslation(\"e_mail_is_required\"),\r\n (v) => /.+@.+/.test(v) || stringTranslation(\"e_mail_must_be_valid\"),\r\n ],\r\n\r\n // Step 2\r\n position: null,\r\n positionRules: [\r\n (v) => !!v || stringTranslation(\"position_is_required\"),\r\n ],\r\n\r\n // Step 3\r\n restaurantTypes: window.page_data__restaurant_types,\r\n restaurantTypeRules: [\r\n (v) => {\r\n return !!v || stringTranslation(\"type_of_restaurant_is_required\");\r\n },\r\n ],\r\n\r\n address: null,\r\n addressRules: [(v) => !!v || stringTranslation(\"address__is_required\")],\r\n\r\n siretNumber: null,\r\n siretNumberRules: {\r\n required: (v) => !!v || stringTranslation(\"this_field_is_required\"),\r\n numeric: (v) => {\r\n const pattern = /^[0-9]{14}/;\r\n return pattern.test(v) || stringTranslation(\"only_numbers\");\r\n },\r\n numLength: (v) =>\r\n (!!v && v.length === this.siretNumberLength) ||\r\n stringTranslation(\"must_be_\") +\r\n this.siretNumberLength +\r\n stringTranslation(\"_characters\"),\r\n },\r\n restaurantType: null,\r\n restaurantTypeRules: [\r\n (v) => !!v || stringTranslation(\"restaurant_type_is_required\"),\r\n ],\r\n restaurantName: null,\r\n restaurantNameRules: [\r\n (v) => !!v || stringTranslation(\"restaurant_name_is_required\"),\r\n ],\r\n zip: null,\r\n restaurantZipRules: [\r\n (v) => !!v || stringTranslation(\"postal_code_is_required\"),\r\n ],\r\n\r\n // Step 4\r\n showPass1: false,\r\n showPass2: false,\r\n\r\n password: \"\",\r\n passwordConfirm: \"\",\r\n passRules: {\r\n required: (v) => !!v || stringTranslation(\"password_is_required\"),\r\n characters: (v) => {\r\n const pattern =\r\n /^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@\\-\\_\\(\\)\\[\\]\\+\\=\\{\\}\\'\\\"\\;\\:\\.\\<\\>\\,\\?\\/\\|\\\\#\\$%\\^&\\*])(?=.{8,})/;\r\n return (\r\n pattern.test(v) ||\r\n stringTranslation(\r\n \"min_8_characters_with_at_least_one_capital_letter_a_number_and_a_special_character\"\r\n )\r\n );\r\n },\r\n confirmPassword: (v) =>\r\n v === this.password ||\r\n stringTranslation(\"the_password_confirmation_does_not_match\"),\r\n },\r\n\r\n tos: 1,\r\n tosRules: [\r\n (v) => !!v || stringTranslation(\"terms_of_service__is_required\"),\r\n ],\r\n };\r\n },\r\n\r\n methods: {\r\n idPepsicoEmail(email) {\r\n const domain = email.substring(email.lastIndexOf(\"@\") + 1);\r\n return domain === \"pepsico.com\";\r\n },\r\n\r\n nextStep() {\r\n this.direction = \"slide-left\";\r\n\r\n // Fro pepsico users\r\n if (this.step === 1 && this.idPepsicoEmail(this.email)) {\r\n this.position = 2;\r\n this.step = 4;\r\n } else {\r\n this.step++;\r\n }\r\n },\r\n prevStep() {\r\n this.direction = \"slide-right\";\r\n this.step--;\r\n },\r\n signUpStep() {\r\n this.isLoading = true;\r\n const _this = this;\r\n $(\"#sign_status\").text(\"\");\r\n\r\n const data = {\r\n firstName: this.firstName,\r\n lastName: this.lastName,\r\n email: this.email,\r\n position: this.position,\r\n restaurantType: this.restaurantType,\r\n address: this.address,\r\n restaurantName: this.restaurantName,\r\n siretNumber: this.siretNumber,\r\n zip: this.zip,\r\n };\r\n\r\n var pepsicoUserObj = {\r\n Name: this.firstName,\r\n SurName: this.lastName,\r\n Email: this.email,\r\n UserName: this.email,\r\n Password: this.password,\r\n ProfileType: $(\r\n \".position-radio-btn [value=\" + this.position + \"]\"\r\n ).attr(\"value-text\"),\r\n YourEstablishment: $(\".your-eastablishment input\").val(),\r\n SiretNumber: this.siretNumber,\r\n TypeOfRestaurant: this.restaurantType,\r\n FacilityName: this.restaurantName,\r\n PostalCode: this.zip,\r\n };\r\n\r\n // console.log(pepsicoUserObj);\r\n\r\n jQuery\r\n .ajax({\r\n type: \"POST\",\r\n url: url_postsignup,\r\n data: pepsicoUserObj,\r\n dataType: \"json\",\r\n })\r\n .done(function (data) {\r\n if (data.Item1 == \"Success\") {\r\n _this.server_error = false;\r\n _this.server_error_msg = \"\";\r\n _this.isLoading = false;\r\n _this.nextStep();\r\n } else {\r\n _this.server_error = true;\r\n _this.server_error_msg = data.Item1;\r\n _this.isLoading = false;\r\n }\r\n })\r\n .fail(function (err) {\r\n console.log(\"error: \", err);\r\n signupStatus = err;\r\n });\r\n },\r\n cancelRegistration() {\r\n this.cancelRegistrationDialog = true;\r\n },\r\n resetSteps() {\r\n this.cancelRegistrationDialog = false;\r\n this.step = 1;\r\n window.location.replace(\"/\");\r\n },\r\n nextStepNoValidation() {\r\n this.step++;\r\n console.log(\"From nextStepNoValidation\");\r\n },\r\n\r\n googleMapAutocomplete() {\r\n let inputElement = this.$refs.origin__vuetify.$refs.input;\r\n const autocomplete = new google.maps.places.Autocomplete(inputElement, {\r\n componentRestrictions: { country: \"fr\" },\r\n fields: [\r\n \"address_components\",\r\n \"geometry\",\r\n \"icon\",\r\n \"name\",\r\n \"place_id\",\r\n \"formatted_address\",\r\n ],\r\n types: [\"establishment\"],\r\n });\r\n\r\n autocomplete.addListener(\"place_changed\", () => {\r\n const place = autocomplete.getPlace();\r\n this.restaurantName = place.name;\r\n\r\n for (var j = 0; j < place.address_components.length; j++) {\r\n for (var k = 0; k < place.address_components[j].types.length; k++) {\r\n if (place.address_components[j].types[k] == \"postal_code\") {\r\n this.zip = place.address_components[j].short_name;\r\n }\r\n }\r\n }\r\n });\r\n },\r\n },\r\n watch: {\r\n step: {\r\n handler: function (val, oldVal) {\r\n this.isInForm = val > 0;\r\n },\r\n deep: true,\r\n },\r\n },\r\n\r\n mounted() {\r\n this.isInForm = this.step > 0;\r\n\r\n this.$nextTick(function () {\r\n this.isLoaded = true;\r\n this.googleMapAutocomplete();\r\n // Code that will run only after the\r\n // entire view has been rendered\r\n });\r\n },\r\n vuetify: new Vuetify(VUETIFY_OPTIONS),\r\n });\r\n}\r\n\r\nfunction PFS_recipe_actions_box() {\r\n new Vue({\r\n el: \"#PFS_recipe_actions_box\",\r\n data() {\r\n return {\r\n isSavedRecipe: window.isSavedRecipe,\r\n };\r\n },\r\n methods: {\r\n saveOrDeleteRecipe(id) {\r\n this.isSavedRecipe = !this.isSavedRecipe;\r\n var recipe_api_base_path = \"/pepsicoapi/recipes\";\r\n var recipeActionPath = \"/pepsicoapi/recipes/delete\";\r\n if (this.isSavedRecipe) {\r\n recipeActionPath = recipe_api_base_path + \"/save\";\r\n }\r\n\r\n jQuery\r\n .ajax({\r\n type: \"POST\",\r\n url: recipeActionPath,\r\n data: { recipeId: id },\r\n dataType: \"json\",\r\n })\r\n .done(function (data) {\r\n if (data.Success) {\r\n console.log(\"Success\");\r\n } else {\r\n //error handling ?\r\n console.log(data.ErrorMessage);\r\n this.isSavedRecipe = !this.isSavedRecipe; //revert back state\r\n }\r\n })\r\n .fail(function (err) {\r\n //error handling, or if user is not authorized ?\r\n this.isSavedRecipe = !this.isSavedRecipe; //revert back state\r\n })\r\n .always(function () {\r\n //todo error handling, show user some message ?\r\n console.log(\"Save recipe..\");\r\n });\r\n },\r\n },\r\n });\r\n}\r\n\r\nfunction PFS_serves_counter() {\r\n var ingredients = window.ingredient_list_html;\r\n var reference_amount = window.serves_amount_reference_value;\r\n\r\n new Vue({\r\n el: \"#PFS_serves_counter\",\r\n data() {\r\n return {\r\n ingredient_list: [],\r\n ingredientAmount: [],\r\n serves: reference_amount,\r\n };\r\n },\r\n methods: {\r\n decreaseAmount() {\r\n const vm = this;\r\n if (this.serves > reference_amount) {\r\n this.serves -= reference_amount;\r\n const _this = this;\r\n\r\n this.ingredient_list.forEach(function (item, index) {\r\n if (item.amount) {\r\n item.amount -= _this.ingredientAmount[index];\r\n item.amount = Math.round(item.amount * 100) / 100;\r\n }\r\n });\r\n }\r\n },\r\n increaseAmount() {\r\n this.serves += reference_amount;\r\n const _this = this;\r\n\r\n this.ingredient_list.forEach(function (item, index) {\r\n if (item.amount) {\r\n // item.amount += _this.ingredientAmount[index];\r\n item.amount +=\r\n Math.round(_this.ingredientAmount[index] * 100) / 100;\r\n\r\n item.amount = Math.round(item.amount * 100) / 100;\r\n }\r\n });\r\n },\r\n },\r\n beforeMount() {\r\n var _this = this;\r\n\r\n this.ingredient_list = ingredients;\r\n\r\n this.ingredient_list.forEach((el) => {\r\n _this.ingredientAmount.push(el.amount);\r\n });\r\n },\r\n });\r\n}\r\n\r\nfunction PFS_profileForm() {\r\n new Vue({\r\n el: \"#PFS_profileForm\",\r\n data() {\r\n return {\r\n editAccountMode: false,\r\n editRestaurantMode: false,\r\n\r\n // Menu list\r\n items: window.page_data__menu_list,\r\n // Account Fields\r\n showPass1: false,\r\n showPass2: false,\r\n\r\n account_valid: false,\r\n password_valid: false,\r\n restaurant_valid: false,\r\n siretNumberLength: 14,\r\n firstName: window.page_data__first_name,\r\n lastName: window.page_data__last_name,\r\n nameRules: [(v) => !!v || stringTranslation(\"name_is_required\")],\r\n\r\n email: window.page_data__email,\r\n emailRules: [\r\n (v) => !!v || stringTranslation(\"e_mail_is_required\"),\r\n (v) => /.+@.+/.test(v) || stringTranslation(\"e_mail_must_be_valid\"),\r\n ],\r\n\r\n position: window.page_data__position,\r\n positions: window.page_data__positions,\r\n positionRules: [\r\n (v) => v.length > 0 || stringTranslation(\"your_position_is_required\"),\r\n ],\r\n\r\n password: \"\",\r\n passwordConfirm: \"\",\r\n passRules: {\r\n required: (v) => !!v || stringTranslation(\"password_is_required\"),\r\n characters: (v) => {\r\n const pattern =\r\n /^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#\\$%\\^&\\*])(?=.{8,})/;\r\n return (\r\n pattern.test(v) ||\r\n stringTranslation(\r\n \"min_8_characters_with_at_least_one_capital_letter_a_number_and_a_special_character\"\r\n )\r\n );\r\n },\r\n confirmPassword: (v) =>\r\n v === this.password ||\r\n stringTranslation(\"the_password_confirmation_does_not_match\"),\r\n },\r\n\r\n // Restaurant fields\r\n restaurantName: window.page_data__restaurant_name,\r\n restaurantNameRules: [\r\n (v) => !!v || stringTranslation(\"restaurant_name_is_required\"),\r\n ],\r\n\r\n restaurantAddress: window.page_data__restaurant_address,\r\n restaurantAddressRules: [\r\n (v) => !!v || stringTranslation(\"restaurant_address_is_required\"),\r\n ],\r\n\r\n restaurantZip: window.page_data__restaurant_zip,\r\n restaurantZipRules: [\r\n (v) => !!v || stringTranslation(\"postal_code_is_required\"),\r\n ],\r\n\r\n restaurantPhone: window.page_data__restaurant_phone,\r\n restaurantPhoneRules: [\r\n (v) => !!v || stringTranslation(\"phone_number_is_required\"),\r\n ],\r\n siretNumber: window.page_data__siret_number,\r\n siretNumberRules: {\r\n required: function required(v) {\r\n return !!v || stringTranslation(\"this_field_is_required\");\r\n },\r\n numeric: function numeric(v) {\r\n var pattern = /^[0-9]{14}/;\r\n return pattern.test(v) || stringTranslation(\"only_numbers\");\r\n },\r\n numLength: function numLength(v) {\r\n return (\r\n (!!v && v.length === _this6.siretNumberLength) ||\r\n stringTranslation(\"must_be_\") +\r\n _this6.siretNumberLength +\r\n stringTranslation(\"_characters\")\r\n );\r\n },\r\n },\r\n restaurantType: window.page_data__restaurant_type,\r\n restaurantTypes: window.page_data__restaurant_types,\r\n restaurantTypeRules: [\r\n (v) => {\r\n // console.log(\"v :>> \", v);\r\n return !!v || stringTranslation(\"type_of_restaurant_is_required\");\r\n },\r\n ],\r\n\r\n restaurantAdditionalType: window.page_data__restaurant_additional_type,\r\n showRestaurantAdditionalType: false,\r\n };\r\n },\r\n\r\n methods: {\r\n editAccount() {\r\n this.editAccountMode = !this.editAccountMode;\r\n },\r\n changePassword() {\r\n const data = { password: this.password };\r\n\r\n var pepsicoUserObj = {\r\n UserID: $(\"#hdnUserId\").val(),\r\n Password: this.password,\r\n };\r\n\r\n var responseMessage = \"\";\r\n\r\n jQuery\r\n .ajax({\r\n type: \"POST\",\r\n url: window.page_data__password_url,\r\n /*data: data,*/\r\n data: pepsicoUserObj,\r\n dataType: \"json\",\r\n })\r\n .done(function (data) {\r\n console.log(\" success\");\r\n responseMessage = data;\r\n })\r\n .fail(function (err) {\r\n console.log(\"error: \", err);\r\n responseMessage = err;\r\n })\r\n .always(function () {\r\n console.log(\"finished changePassword\");\r\n //alert(\"Password Reset : \" + responseMessage);\r\n\r\n if (responseMessage == \"Success\") {\r\n //$(\".my-account-message\").html('
');\r\n //alert(responseMessage);\r\n setTimeout(window.location.reload(), 5000);\r\n } else {\r\n $(\".change-password-message\").html(\r\n '