{"version":3,"file":"menu-generator.min.js","names":["MenuGenerator","MenuformatVal","MenuformatPerY","OutPutFormatVal","isResolutionChangeVal","MenuImageSrc","menuGenSliderOptions","index","options","infinite","slidesToShow","slidesToScroll","initialSlide","rows","responsive","breakpoint","settings","arrows","stringTranslation","stringVar","only_numbers","eval","resizeBoxEl","el","logoTextBoxEl","$","menuPriceBoxEl","wrapperWidth","width","wrapper_initial_width","newElWidth","css","transform","getSlidIndexBySlideId","slideId","slideList","i","length","id","document","ready","slick","startSliders","jQueryMarkSelectedImage","sliderId","removeClass","classList","add","ids","elId","slideStartIndex","backgoundImageId","backgoundImageList","surfaceImageId","surfaceImageList","dishId","dishList","snackId","snackList","drinkId","drinkList","logoId","logoList","secondLogoId","downloadFile","url","fileExtension","link","createElement","href","download","body","appendChild","click","removeChild","menuGeneratorVue","Vue","mixins","dragResizeElementsMixin","subCategoriesFilteringMixin","data","tab","window","selectedBackgroundImageURL","selectedSurfaceImageURL","selectedDishImageURL","selectedDishName","selectedDrinkImageURL","selectedDrinkName","selectedSnackImageURL","selectedSnackName","selectedLogoImageURL","selectedSecondLogoImageURL","format","formatMask","menuHeadline","menuText","menuPrice","menuPriceRules","numeric","v","pattern","test","includeMenuDescription","fileType","mealSnackbar","fileForDownload","isLoading","menuName","openNameDialog","menuNameRules","isFormValid","saveDraftErrorMsg","showErrorSnackbar","isDraftSaveActive","isInitialCalculateFormat","methods","selectBackground","e","markSelectedImage","currentTarget","selectSurface","selectDish","selectSnack","selectDrink","selectLogo","selectSecondLogo","typeId","dataId","requiredIdsList","dataValue","dataset","$refs","custom_logo_input","includes","getSelectedImageURL","list","elString","image","JSON","parse","stringify","find","obj","parseInt","prev_url","getSelectedElementName","element","name","markAsActiveElementById","prefix","refString","startInTabSliders","formatCalc","a","b","calculateFormat","formatVal","val","resetTextBoxPositionSize","resetPriceBoxPosition","$nextTick","callDragResizeJS","setStartPositionForAllDraggableResizableElements","dataForSending","textBoxPositionSize","textBox","priceBoxPosition","priceBox","printDownload","_this","jQuery","ajax","type","print_download_url","contentType","dataType","done","console","log","fail","err","always","setTimeout","saveDraft","save_draft_url","res","status","dataForSendingSaveDraft","MenuName","Format","BackgoundImageID","SurfaceImageID","DishImageID","SnackImageID","DrinkImageID","LogoImageID","Headline","Text","Price","IncludeMenuDescription","UserID","Json","S3ImageUrl","TextBoxPositionSize","PriceBoxPosition","printDownloadCropImage","uiResizableHandle","getElementsByClassName","dataLayer","push","getFilenameFromPath","menuCrop","getElementById","date","Date","timestamp","getFullYear","toString","getMonth","padLeft","getDate","getMinutes","getSeconds","kendo","drawing","drawDOM","scale","GetScaleFactor","offsetWidth","offsetHeight","then","group","exportImage","saveAs","dataURI","fileName","remove","exportPDF","paperSize","saveDraftNew","dataMenu","menuPriceVal","saveDraftMessage","Id","url_savedraftmenu","menugenerator","isMenuUpdate","location","replace","updateDraft","url_updatedraftmenu","mounted","watch","handler","oldVal","deep","Boolean","vuetify","Vuetify","VUETIFY_OPTIONS","maxOutputWidth","maxOutputHeight","height","Number","prototype","base","chr","len","String","Array","join","str","substring","lastIndexOf","split","calculateMenuPreview","menuPreview","menuPreviewHeight","outerHeight","menuPreviewWidth","h","w","calculateHelperSquare","helperSquare","helperSquareWidthHeight","menuPreviewMeasures"],"sources":["menu-generator.js"],"sourcesContent":["//Custom Code Injected Start---//\r\n\r\nvar MenuGenerator = \"\";\r\nvar MenuformatVal = \"menuboard_16-9\";\r\nvar MenuformatPerY = 56.25;\r\nvar OutPutFormatVal = \"JPG\";\r\nvar isResolutionChangeVal = true;\r\nvar MenuImageSrc = \"\";\r\n\r\n//Custom Code Injected End---//\r\n\r\nfunction menuGenSliderOptions(index) {\r\n var options = {\r\n infinite: false,\r\n slidesToShow: 3,\r\n slidesToScroll: 1,\r\n initialSlide: index,\r\n rows: 0,\r\n responsive: [\r\n {\r\n breakpoint: 1200,\r\n settings: {\r\n arrows: false,\r\n },\r\n },\r\n ],\r\n };\r\n // console.log(\"options :>> \", options);\r\n return options;\r\n}\r\n\r\nfunction stringTranslation(stringVar) {\r\n var only_numbers = \"Chiffre uniquement\";\r\n\r\n return eval(stringVar);\r\n}\r\n\r\nfunction resizeBoxEl(el) {\r\n var logoTextBoxEl = $(\".logo-text-box\");\r\n var menuPriceBoxEl = $(\".menu-price-box\");\r\n // var wrapperWidth = $('.format-display-val').width();\r\n var wrapperWidth = $(\".menu-preview-box\").width();\r\n var wrapper_initial_width = 710;\r\n\r\n var newElWidth = wrapperWidth / wrapper_initial_width;\r\n if (el === \"print_a4\" || el === \"just_eat_1-1\") {\r\n newElWidth = newElWidth * 1.5;\r\n }\r\n if (wrapperWidth < 600) {\r\n logoTextBoxEl.css({\r\n transform: \"scale(\" + newElWidth + \")\",\r\n });\r\n }\r\n}\r\n\r\nfunction getSlidIndexBySlideId(slideId, slideList) {\r\n var el;\r\n\r\n for (let i = 0; i < slideList.length; i++) {\r\n if (slideList[i].id === slideId) {\r\n el = slideList[i];\r\n el.index = i;\r\n break;\r\n }\r\n }\r\n\r\n return el.index;\r\n}\r\n\r\n$(document).ready(function () {\r\n resizeBoxEl();\r\n\r\n // Initialize all sliders\r\n $(\"#background-image-slider\").slick(menuGenSliderOptions(5));\r\n $(\"#surface-image-slider\").slick(menuGenSliderOptions(0));\r\n $(\"#dish-image-slider\").slick(menuGenSliderOptions(1));\r\n $(\"#snack-image-slider\").slick(menuGenSliderOptions(1));\r\n $(\"#drink-image-slider\").slick(menuGenSliderOptions(1));\r\n $(\"#logo-image-slider\").slick(menuGenSliderOptions(1));\r\n $(\"#second-logo-image-slider\").slick(menuGenSliderOptions(1));\r\n\r\n startSliders([\"background-image-slider\", \"surface-image-slider\"]);\r\n});\r\n\r\nfunction jQueryMarkSelectedImage(el, sliderId) {\r\n $(\"#\" + sliderId + \" .bis-item\").removeClass(\"active\");\r\n el.classList.add(\"active\");\r\n}\r\n\r\nfunction startSliders(ids) {\r\n for (var i = 0; i < ids.length; i++) {\r\n var elId = ids[i];\r\n var slideStartIndex;\r\n\r\n // unslick / destroy a each slick instance\r\n $(\"#\" + elId).slick(\"unslick\");\r\n\r\n\r\n switch (elId) {\r\n case \"background-image-slider\":\r\n slideStartIndex = getSlidIndexBySlideId(backgoundImageId, backgoundImageList);\r\n break;\r\n case \"surface-image-slider\":\r\n slideStartIndex = getSlidIndexBySlideId(surfaceImageId, surfaceImageList);\r\n break;\r\n case \"dish-image-slider\":\r\n // -1 because first element in array is empty/delete-image\r\n slideStartIndex = getSlidIndexBySlideId(dishId, dishList) - 1;\r\n break;\r\n case \"snack-image-slider\":\r\n // -1 because first element in array is empty/delete-image\r\n slideStartIndex = getSlidIndexBySlideId(snackId, snackList) - 1;\r\n break;\r\n case \"drink-image-slider\":\r\n // -1 because first element in array is empty/delete-image\r\n slideStartIndex = getSlidIndexBySlideId(drinkId, drinkList) - 1;\r\n break;\r\n case \"logo-image-slider\":\r\n // -2 because first element in array is empty/delete-image and second element is upload custom logo\r\n slideStartIndex = getSlidIndexBySlideId(logoId, logoList) - 2;\r\n break;\r\n case \"second-logo-image-slider\":\r\n slideStartIndex = getSlidIndexBySlideId(secondLogoId, logoList) - 2;\r\n break;\r\n default:\r\n slideStartIndex = 0;\r\n }\r\n\r\n // initiate each slick instance with updated settings - initialSlide\r\n $(\"#\" + elId).slick(menuGenSliderOptions(slideStartIndex));\r\n }\r\n}\r\n\r\nfunction downloadFile(url, fileExtension) {\r\n var link = document.createElement(\"a\");\r\n link.href = url;\r\n link.download = \"menu.\" + fileExtension;\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n}\r\n\r\nvar menuGeneratorVue = new Vue({\r\n el: \"#PFS_menuGenerator\",\r\n mixins: [dragResizeElementsMixin, subCategoriesFilteringMixin],\r\n\r\n data() {\r\n return {\r\n tab: \"subscribe\",\r\n\r\n // Background images\r\n backgoundImageList: window.backgoundImageList,\r\n backgoundImageId: window.backgoundImageId,\r\n selectedBackgroundImageURL: null,\r\n\r\n // Surface images\r\n surfaceImageList: window.surfaceImageList,\r\n surfaceImageId: window.surfaceImageId,\r\n selectedSurfaceImageURL: null,\r\n\r\n // Dish images\r\n dishList: window.dishList,\r\n dishId: window.dishId,\r\n selectedDishImageURL: null,\r\n selectedDishName: null,\r\n\r\n // Drink images\r\n drinkList: window.drinkList,\r\n drinkId: window.drinkId,\r\n selectedDrinkImageURL: null,\r\n selectedDrinkName: null,\r\n\r\n // Snack images\r\n snackList: window.snackList,\r\n snackId: window.snackId,\r\n selectedSnackImageURL: null,\r\n selectedSnackName: null,\r\n\r\n // Logo images\r\n logoList: window.logoList,\r\n logoId: window.logoId,\r\n secondLogoId: window.secondLogoId,\r\n selectedLogoImageURL: null,\r\n selectedSecondLogoImageURL: null,\r\n\r\n format: window.format,\r\n formatMask: null,\r\n\r\n menuHeadline: window.menuHeadline,\r\n menuText: window.menuText,\r\n menuPrice: window.menuPrice,\r\n menuPriceRules: {\r\n numeric: function numeric(v) {\r\n const pattern = /^[0-9.,]*$/;\r\n return pattern.test(v) || stringTranslation(\"only_numbers\");\r\n },\r\n },\r\n includeMenuDescription: window.includeMenuDescription,\r\n\r\n fileType: window.fileType,\r\n\r\n mealSnackbar: false,\r\n fileForDownload: null,\r\n isLoading: false,\r\n\r\n menuName: window.menuName,\r\n openNameDialog: false,\r\n menuNameRules: [(v) => !!v || \"Menu name is required\"],\r\n isFormValid: true,\r\n saveDraftErrorMsg: \"\",\r\n showErrorSnackbar: false,\r\n isDraftSaveActive: false,\r\n\r\n isInitialCalculateFormat: true,\r\n };\r\n },\r\n\r\n methods: {\r\n selectBackground(e) {\r\n this.markSelectedImage(e.currentTarget, \"background-image-slider\", \"backgoundImageId\", \"backgroundImageId\");\r\n },\r\n selectSurface(e) {\r\n this.markSelectedImage(e.currentTarget, \"surface-image-slider\", \"surfaceImageId\", \"surfaceImageId\");\r\n },\r\n selectDish(e) {\r\n this.markSelectedImage(e.currentTarget, \"dish-image-slider\", \"dishId\", \"dishImageId\");\r\n },\r\n selectSnack(e) {\r\n this.markSelectedImage(e.currentTarget, \"snack-image-slider\", \"snackId\", \"snackImageId\");\r\n },\r\n selectDrink(e) {\r\n this.markSelectedImage(e.currentTarget, \"drink-image-slider\", \"drinkId\", \"drinkImageId\");\r\n },\r\n selectLogo(e) {\r\n this.markSelectedImage(e.currentTarget, \"logo-image-slider\", \"logoId\", \"logoImageId\");\r\n },\r\n selectSecondLogo(e) {\r\n this.markSelectedImage(e.currentTarget, \"second-logo-image-slider\", \"secondLogoId\", \"secondLogoImageId\");\r\n },\r\n\r\n markSelectedImage(el, sliderId, typeId, dataId) {\r\n const requiredIdsList = [this.dishId, this.drinkId, this.snackId];\r\n const dataValue = el.dataset[dataId];\r\n\r\n if (dataValue === \"upload_custom_logo_2\") {\r\n // Mark clicked item\r\n jQueryMarkSelectedImage(el, sliderId);\r\n\r\n this.selectedSecondLogoImageURL = dataValue;\r\n\r\n // Click on hidden upload input form\r\n // this.$refs.custom_logo_input.click();\r\n } else if (dataValue === \"upload_custom_logo\") {\r\n // Mark clicked item\r\n jQueryMarkSelectedImage(el, sliderId);\r\n\r\n // Click on hidden upload input form\r\n this.$refs.custom_logo_input.click();\r\n } else if (dataValue === \"0\") {\r\n if (sliderId === 'second-logo-image-slider') {\r\n this.selectedSecondLogoImageURL = null;\r\n }\r\n\r\n if (!requiredIdsList.includes(\"0\")) {\r\n jQueryMarkSelectedImage(el, sliderId);\r\n this[typeId] = dataValue;\r\n } else {\r\n // Hide logo independently from rest of elements\r\n if (typeId === \"logoId\") {\r\n this[typeId] = dataValue;\r\n }\r\n this.mealSnackbar = true;\r\n }\r\n } else {\r\n jQueryMarkSelectedImage(el, sliderId);\r\n this[typeId] = dataValue;\r\n }\r\n },\r\n getSelectedImageURL(list, id, elString) {\r\n const image = JSON.parse(JSON.stringify(list)).find((obj) => {\r\n return parseInt(obj.id) === parseInt(id);\r\n });\r\n this[elString] = image.prev_url;\r\n },\r\n getSelectedElementName(list, id, elString) {\r\n const element = JSON.parse(JSON.stringify(list)).find((obj) => {\r\n return parseInt(obj.id) === parseInt(id);\r\n });\r\n\r\n this[elString] = element.name;\r\n },\r\n\r\n markAsActiveElementById(prefix, id) {\r\n const refString = prefix + id;\r\n\r\n this.$refs[refString].classList.add(\"active\");\r\n },\r\n\r\n startInTabSliders(ids) {\r\n startSliders(ids);\r\n },\r\n formatCalc(a, b) {\r\n return (b / a) * 100;\r\n },\r\n calculateFormat(formatVal) {\r\n\r\n let val = 0;\r\n MenuformatVal = formatVal; //Custom Code Injected---//\r\n switch (formatVal) {\r\n case \"print_a4\":\r\n val = this.formatCalc(1, 1.4142);\r\n break;\r\n case \"menuboard_16-9\":\r\n val = this.formatCalc(16, 9);\r\n break;\r\n case \"deliveroo_hero_image_16-9\":\r\n val = this.formatCalc(16, 9);\r\n break;\r\n case \"deliveroo_product_image_4-3\":\r\n val = this.formatCalc(4, 3);\r\n break;\r\n case \"just_eat_1-1\":\r\n val = this.formatCalc(1, 1);\r\n break;\r\n case \"uber_eats_6-4\":\r\n val = this.formatCalc(6, 4);\r\n break;\r\n case \"instagram_size_4-5\":\r\n val = this.formatCalc(4, 5);\r\n break;\r\n default:\r\n this.formatMask = 0;\r\n }\r\n MenuformatPerY = val; //Custom Code Injected---//\r\n this.formatMask = val + \"%\";\r\n\r\n // ----------------------------------------------------------------------------------------------------------------\r\n // Text box position and size\r\n // ----------------------------------------------------------------------------------------------------------------\r\n // On every format change reset text box position and size\r\n this.resetTextBoxPositionSize();\r\n this.resetPriceBoxPosition();\r\n\r\n // After format is calculated and view is changed - prepare for jQuery UI\r\n this.$nextTick(function () {\r\n // Function from mixin - menu-generator-drag-resize-element-mixin.js\r\n this.callDragResizeJS();\r\n });\r\n // ----------------------------------------------------------------------------------------------------------------\r\n\r\n this.setStartPositionForAllDraggableResizableElements();\r\n this.isInitialCalculateFormat = false;\r\n\r\n // Helper square\r\n // setTimeout(function () {\r\n // calculateHelperSquare()\r\n // }, 300)\r\n\r\n },\r\n setStartPositionForAllDraggableResizableElements() {\r\n // Set absolute position on objects on next format change\r\n if (!this.isInitialCalculateFormat) {\r\n setStartPositionForAllDraggableResizableElements();\r\n }\r\n },\r\n dataForSending() {\r\n return {\r\n fileType: this.fileType,\r\n backgoundImageId: this.backgoundImageId,\r\n surfaceImageId: this.surfaceImageId,\r\n dishId: this.dishId,\r\n snackId: this.snackId,\r\n drinkId: this.drinkId,\r\n format: this.format,\r\n logoId: this.logoId,\r\n secondLogoId: this.secondLogoId,\r\n menuHeadline: this.menuHeadline,\r\n menuText: this.menuText,\r\n menuPrice: this.menuPrice,\r\n menuName: this.menuName,\r\n includeMenuDescription: this.includeMenuDescription,\r\n textBoxPositionSize: this.textBox,\r\n priceBoxPosition: this.priceBox,\r\n };\r\n },\r\n\r\n printDownload() {\r\n const data = JSON.stringify(this.dataForSending());\r\n this.isLoading = true;\r\n const _this = this;\r\n\r\n jQuery\r\n .ajax({\r\n type: \"POST\",\r\n url: window.print_download_url,\r\n data: data,\r\n contentType: \"application/json; charset=utf-8\",\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 printDownload\");\r\n setTimeout(function () {\r\n _this.isLoading = false;\r\n _this.fileForDownload = \"assets/menu-generator/file-to-download.jpg\";\r\n downloadFile(_this.fileForDownload, this.fileType);\r\n }, 2000);\r\n });\r\n },\r\n\r\n saveDraft() {\r\n const data = JSON.stringify(this.dataForSending());\r\n const _this = this;\r\n // _this.isDraftSaved = false;\r\n _this.isDraftSaveActive = false;\r\n // :disabled=\"!menuName\"\r\n jQuery\r\n .ajax({\r\n type: \"POST\",\r\n url: window.save_draft_url,\r\n data: data,\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n })\r\n .done(function (res) {\r\n if (res.status === \"success\") {\r\n _this.openNameDialog = false;\r\n } else {\r\n _this.isDraftSaveActive = true;\r\n }\r\n })\r\n .fail(function (err) {\r\n console.log(\"error dd: \", err);\r\n })\r\n .always(function () {\r\n console.log(\"finished saveDraft\");\r\n _this.isDraftSaveActive = true;\r\n });\r\n },\r\n\r\n //--Custom code Injected Start\r\n\r\n dataForSendingSaveDraft() {\r\n return (MenuGenerator = {\r\n MenuName: this.menuName,\r\n Format: this.format,\r\n BackgoundImageID: $(\"#hdnBackgroundImageId\").val(),\r\n SurfaceImageID: $(\"#hdnSurfaceImageId\").val(),\r\n DishImageID: $(\"#hdnDishImageId\").val(),\r\n SnackImageID: $(\"#hdnSnackImageId\").val(),\r\n DrinkImageID: $(\"#hdnDrinkImageId\").val(),\r\n LogoImageID: $(\"#hdnLogoImageId\").val(),\r\n Headline: this.menuHeadline,\r\n Text: this.menuText,\r\n Price: this.menuPrice,\r\n IncludeMenuDescription: this.includeMenuDescription,\r\n UserID: $(\"#hdnUserId\").val(),\r\n Json: \"\",\r\n S3ImageUrl: MenuImageSrc,\r\n TextBoxPositionSize: JSON.stringify(this.textBox),\r\n PriceBoxPosition: JSON.stringify(this.priceBox)\r\n // Text\r\n });\r\n },\r\n\r\n //--Custom code Injected Start\r\n\r\n // dataForSendingSaveDraft() {\r\n // return (MenuGenerator = {\r\n // MenuName: this.menuName,\r\n // Format: this.format,\r\n // BackgoundImageID: $(\"#hdnBackgroundImageId\").val(),\r\n // SurfaceImageID: $(\"#hdnSurfaceImageId\").val(),\r\n // DishImageID: $(\"#hdnDishImageId\").val(),\r\n // SnackImageID: $(\"#hdnSnackImageId\").val(),\r\n // DrinkImageID: $(\"#hdnDrinkImageId\").val(),\r\n // LogoImageID: $(\"#hdnLogoImageId\").val(),\r\n // Headline: this.menuHeadline,\r\n // Text: this.menuText,\r\n // Price: this.menuPrice,\r\n // IncludeMenuDescription: this.includeMenuDescription,\r\n // UserID: $(\"#hdnUserId\").val(),\r\n // Json: \"\",\r\n // S3ImageUrl: MenuImageSrc,\r\n // TextBoxPositionSize: JSON.stringify(this.textBox),\r\n // PriceBoxPosition: JSON.stringify(this.priceBox)\r\n // });\r\n // },\r\n printDownloadCropImage() {\r\n this.isLoading = true;\r\n var _this = this;\r\n\r\n let uiResizableHandle = document.getElementsByClassName(\"ui-resizable-handle\");\r\n\r\n // Hide .ui-resizable-handle before printing image/pdf\r\n uiResizableHandle[0].classList.add(\"hidden\");\r\n\r\n window.dataLayer = window.dataLayer || [];\r\n window.dataLayer.push({\r\n 'event': 'gtm.linkClick',\r\n 'dlv.action': 'Download',\r\n 'dlv.type': 'Menu Generator',\r\n 'dlv.title': this.menuHeadline,\r\n 'dlv.snack': getFilenameFromPath(this.selectedSnackImageURL),\r\n 'dlv.drink': getFilenameFromPath(this.selectedDrinkImageURL),\r\n 'dlv.brand': getFilenameFromPath(this.selectedLogoImageURL),\r\n });\r\n\r\n let menuCrop = document.getElementById(\"menu-crop\");\r\n // let menuCrop = document.getElementById(\"menu_preview\");\r\n\r\n\r\n let date = new Date();\r\n let timestamp =\r\n date.getFullYear().toString() +\r\n (date.getMonth() + 1).padLeft() +\r\n date.getDate().toString() +\r\n \"_\" +\r\n date.getMinutes().toString() +\r\n date.getSeconds().toString();\r\n\r\n if (this.fileType == \"jpg\") {\r\n\r\n kendo.drawing\r\n .drawDOM(\"#menu-crop\", {\r\n scale: GetScaleFactor(2000, 2000, menuCrop.offsetWidth, menuCrop.offsetHeight),\r\n })\r\n .then(function (group) {\r\n return kendo.drawing.exportImage(group);\r\n })\r\n .done(function (data) {\r\n // Save the image file\r\n kendo.saveAs({\r\n contentType: \"image/png\",\r\n dataURI: data,\r\n fileName: \"Menu_\" + timestamp + \".png\",\r\n });\r\n\r\n // Show .ui-resizable-handle after printing image/pdf\r\n uiResizableHandle[0].classList.remove(\"hidden\");\r\n _this.isLoading = false;\r\n\r\n });\r\n } else {\r\n kendo.drawing\r\n .drawDOM(\"#menu-crop\", {\r\n scale: GetScaleFactor(2000, 2000, menuCrop.offsetWidth, menuCrop.offsetHeight),\r\n })\r\n .then(function (group) {\r\n // Render the result as a PDF file\r\n return kendo.drawing.exportPDF(group, {\r\n paperSize: \"auto\",\r\n });\r\n })\r\n .done(function (data) {\r\n // Save the PDF file\r\n kendo.saveAs({\r\n dataURI: data,\r\n fileName: \"Menu_\" + timestamp + \".pdf\",\r\n });\r\n // Show .ui-resizable-handle after printing image/pdf\r\n uiResizableHandle[0].classList.remove(\"hidden\");\r\n _this.isLoading = false;\r\n });\r\n }\r\n // Backup closing loader after 5 sec\r\n setTimeout(function () {\r\n _this.isLoading = false;\r\n }, 5000)\r\n\r\n },\r\n\r\n saveDraftNew: function saveDraftNew() {\r\n this.isLoading = true;\r\n var _this = this;\r\n this.openNameDialog = false;\r\n\r\n var dataMenu = this.dataForSendingSaveDraft();\r\n var menuPriceVal = this.menuPrice;\r\n var saveDraftMessage = \"Success\";\r\n let menuCrop = document.getElementById(\"menu-crop\");\r\n\r\n let uiResizableHandle = document.getElementsByClassName(\"ui-resizable-handle\");\r\n\r\n // Hide .ui-resizable-handle before printing image/pdf\r\n uiResizableHandle[0].classList.add(\"hidden\");\r\n\r\n var _this = this;\r\n\r\n kendo.drawing\r\n .drawDOM(\"#menu-crop\", {\r\n scale: GetScaleFactor(400, 400, menuCrop.offsetWidth, menuCrop.offsetHeight),\r\n })\r\n .then(function (group) {\r\n return kendo.drawing.exportImage(group);\r\n })\r\n .done(function (data) {\r\n dataMenu.S3ImageUrl = data;\r\n\r\n // Show .ui-resizable-handle after printing image/pdf\r\n uiResizableHandle[0].classList.remove(\"hidden\");\r\n\r\n if ($(\"#hdnIsMenuUpdate\").val() == \"true\") {\r\n dataMenu.Id = $(\"#hdnMenuId\").val();\r\n }\r\n\r\n jQuery\r\n .ajax({\r\n type: \"POST\",\r\n url: url_savedraftmenu,\r\n data: {\r\n menugenerator: dataMenu,\r\n menuPrice: menuPriceVal,\r\n isMenuUpdate: $(\"#hdnIsMenuUpdate\").val(),\r\n },\r\n dataType: \"json\",\r\n })\r\n .done(function (data) {\r\n if (data.data != \"Success\") {\r\n _this.saveDraftErrorMsg = data.data;\r\n _this.showErrorSnackbar = true;\r\n } else {\r\n window.location.replace($(\"#hdnsavedrafturl\").val());\r\n }\r\n })\r\n .fail(function (err) {\r\n console.log(\"error: \", err);\r\n _this.saveDraftErrorMsg = \"Une erreur technique est survenue.\";\r\n _this.showErrorSnackbar = true;\r\n })\r\n .always(function () {\r\n console.log(\"finished saveDraft\");\r\n _this.isLoading = false;\r\n this.openNameDialog = false;\r\n // if (saveDraftMessage == \"Success\") {\r\n // $(\".menu-generator-message\").html('
');\r\n // window.location.replace($(\"#hdnsavedrafturl\").val());\r\n // }\r\n // else {\r\n // $(\".menu-generator-message\").html('