Changeset 2813148
- Timestamp:
- 11/07/2022 03:18:33 AM (3 years ago)
- Location:
- loymaxapp/trunk
- Files:
-
- 4 edited
-
loymax-app.php (modified) (1 diff)
-
public/app.min.js (modified) (8 diffs)
-
public/css/style.min.css (modified) (1 diff)
-
readme.txt (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
loymaxapp/trunk/loymax-app.php
r2796867 r2813148 4 4 * Plugin Name: LoymaxWebApp 5 5 * Description: Loymax loyalty program User Portal configuration. 6 * Version: 3.4. 16 * Version: 3.4.2 7 7 * Author URI: https://loymax.ru/ 8 8 * Author: Loymax solutions -
loymaxapp/trunk/public/app.min.js
r2796867 r2813148 1 1 /** 2 * Loymax v2.2.20221 007 (http://loymax.ru)2 * Loymax v2.2.20221107 (http://loymax.ru) 3 3 * Copyright 2011-2022 Loymax, Inc. 4 4 * License: MIT … … 9044 9044 9045 9045 !function(a){"use strict";a.module("vcRecaptcha",[])}(angular),function(a){"use strict";function b(){throw new Error('You need to set the "key" attribute to your public reCaptcha key. If you don\'t have a key, please get one from https://www.google.com/recaptcha/admin/create')}a.module("vcRecaptcha").provider("vcRecaptchaService",function(){var c=this,d={};c.onLoadFunctionName="vcRecaptchaApiLoaded",c.setDefaults=function(b){a.copy(b,d)},c.setSiteKey=function(a){d.key=a},c.setTheme=function(a){d.theme=a},c.setStoken=function(a){d.stoken=a},c.setSize=function(a){d.size=a},c.setType=function(a){d.type=a},c.setLang=function(a){d.lang=a},c.setBadge=function(a){d.badge=a},c.setOnLoadFunctionName=function(a){c.onLoadFunctionName=a},c.$get=["$rootScope","$window","$q","$document","$interval",function(e,f,g,h,i){function j(){return m?g.when(m):o}function k(){if(!m)throw new Error("reCaptcha has not been loaded yet.")}function l(){return a.isFunction((f.grecaptcha||{}).render)}var m,n=g.defer(),o=n.promise,p={};f.vcRecaptchaApiLoadedCallback=f.vcRecaptchaApiLoadedCallback||[];var q=function(){m=f.grecaptcha,n.resolve(m)};if(f.vcRecaptchaApiLoadedCallback.push(q),f[c.onLoadFunctionName]=function(){f.vcRecaptchaApiLoadedCallback.forEach(function(a){a()})},l())q();else if(f.document.querySelector('script[src^="https://www.google.com/recaptcha/api.js"]'))var r=i(function(){l()&&(i.cancel(r),q())},25);else{var s=f.document.createElement("script");s.async=!0,s.defer=!0,s.src="https://www.google.com/recaptcha/api.js?onload="+c.onLoadFunctionName+"&render=explicit",h.find("body")[0].appendChild(s)}return{create:function(a,c){return c.sitekey=c.key||d.key,c.theme=c.theme||d.theme,c.stoken=c.stoken||d.stoken,c.size=c.size||d.size,c.type=c.type||d.type,c.hl=c.lang||d.lang,c.badge=c.badge||d.badge,c.sitekey||b(),j().then(function(b){var d=b.render(a,c);return p[d]=a,d})},reload:function(a){k(),m.reset(a),e.$broadcast("reCaptchaReset",a)},execute:function(a){k(),m.execute(a)},useLang:function(a,b){var c=p[a];if(!c)throw new Error("reCaptcha Widget ID not exists",a);var d=c.querySelector("iframe");if(!b)return d&&d.src&&/[?&]hl=\w+/.test(d.src)?d.src.replace(/.+[?&]hl=(\w+)([^\w].+)?/,"$1"):null;if(d&&d.src){var e=d.src;/[?&]hl=/.test(e)?e=e.replace(/([?&]hl=)\w+/,"$1"+b):e+=(-1===e.indexOf("?")?"?":"&")+"hl="+b,d.src=e}},getResponse:function(a){return k(),m.getResponse(a)},getInstance:function(a){return p[a]},destroy:function(a){delete p[a]}}}]})}(angular),function(a){"use strict";a.module("vcRecaptcha").directive("vcRecaptcha",["$document","$timeout","vcRecaptchaService",function(b,c,d){return{restrict:"A",require:"?^^form",scope:{response:"=?ngModel",key:"=?",stoken:"=?",theme:"=?",size:"=?",type:"=?",lang:"=?",badge:"=?",tabindex:"=?",required:"=?",onCreate:"&",onSuccess:"&",onExpire:"&",onError:"&"},link:function(e,f,g,h){function i(){h&&h.$setValidity("recaptcha",null),m()}function j(){c(function(){e.response="",l(),e.onExpire({widgetId:e.widgetId})})}function k(){var a=arguments;c(function(){e.response="",l(),e.onError({widgetId:e.widgetId,arguments:a})})}function l(){h&&h.$setValidity("recaptcha",!1===e.required?null:Boolean(e.response))}function m(){d.destroy(e.widgetId),a.element(b[0].querySelectorAll(".pls-container")).parent().remove()}e.widgetId=null,h&&a.isDefined(g.required)&&e.$watch("required",l);var n=e.$watch("key",function(b){var h=function(a){c(function(){e.response=a,l(),e.onSuccess({response:a,widgetId:e.widgetId})})};d.create(f[0],{callback:h,key:b,stoken:e.stoken||g.stoken||null,theme:e.theme||g.theme||null,type:e.type||g.type||null,lang:e.lang||g.lang||null,tabindex:e.tabindex||g.tabindex||null,size:e.size||g.size||null,badge:e.badge||g.badge||null,"expired-callback":j,"error-callback":g.onError?k:void 0}).then(function(b){l(),e.widgetId=b,e.onCreate({widgetId:b}),e.$on("$destroy",i),e.$on("reCaptchaReset",function(c,d){(a.isUndefined(d)||b===d)&&(e.response="",l())})}),n()})}}}])}(angular); 9046 "use strict";window.lmxRegistrators&&(Array.isArray(window.lmxRegistrators)?window.lmxRegistrators.forEach(function(e){"function"==typeof e?e(angular):console.error('Элементы window.externalModuleRegistration должны быть типа "function"!')}):console.error('Свойство window.externalModuleRegistration должно быть типа "Array"!')),function(e){e.module("lmxApp",["ngMask","LocalStorageModule","ui.bootstrap","ui.bootstrap.datetimepicker","bowser","monospaced.qrcode","angular-barcode","ngSanitize","naif.base64","lmxCustomSelect","angular-toArrayFilter","focus-if","tmh.dynamicLocale","pascalprecht.translate","YAML","vcRecaptcha","markdown","templateCache"].concat(window.lmxDependencies||[])),e.module("lmxApp").config(["$locationProvider","$qProvider",function(e,o){e.hashPrefix(""),o.errorOnUnhandledRejections(!1)}]),e.module("lmxApp").run(["e2eService"," apiService",function(e,o){e.init(),o.init()}]),e.element(function(){e.bootstrap(document,["lmxApp"])})}(angular);9046 "use strict";window.lmxRegistrators&&(Array.isArray(window.lmxRegistrators)?window.lmxRegistrators.forEach(function(e){"function"==typeof e?e(angular):console.error('Элементы window.externalModuleRegistration должны быть типа "function"!')}):console.error('Свойство window.externalModuleRegistration должно быть типа "Array"!')),function(e){e.module("lmxApp",["ngMask","LocalStorageModule","ui.bootstrap","ui.bootstrap.datetimepicker","bowser","monospaced.qrcode","angular-barcode","ngSanitize","naif.base64","lmxCustomSelect","angular-toArrayFilter","focus-if","tmh.dynamicLocale","pascalprecht.translate","YAML","vcRecaptcha","markdown","templateCache"].concat(window.lmxDependencies||[])),e.module("lmxApp").config(["$locationProvider","$qProvider",function(e,o){e.hashPrefix(""),o.errorOnUnhandledRejections(!1)}]),e.module("lmxApp").run(["e2eService","phoneInputService",function(e,o){e.init(),o.getPhoneSettings()}]),e.element(function(){e.bootstrap(document,["lmxApp"])})}(angular); 9047 9047 "use strict";!function(n){n.module("lmxApp").directive("lmxAnnouncement",["$log","$rootScope","$sce","announcementService","modalService","configurationService",function(e,t,o,a,r,i){return{restrict:"E",replace:!0,template:'<div><div ng-include="getContentUrl()"></div></div>',link:function(e,c,u){function s(n){e.isProgress=!0;var t=Object.assign({isLoadMore:!1,from:e.from},n);a.getPublishedAnnouncements(l,t.from).then(function(n){e.allCount=n.data.$allCount,t.isLoadMore?e.announcements.pushArray(m(n.data)):e.announcements=m(n.data)})["finally"](function(){e.isProgress=!1})}function m(n){return n.forEach(function(n){n.attributes=n.attributes.toDictionary("attributeLogicalName")}),n}var l=u.space||i.components.announcement.space;e.isProgress=!0,e.onPage=parseInt(u.onPage)||10,e.isPaginated=n.isUndefined(u.loadMoreButton),e.from=0,e.announcementsPath=t.appLocationParts[0],e.changeLocation=t.changeLocation,s(),e.increaseFrom=function(){e.from+=e.onPage,s({isLoadMore:!e.isPaginated})},e.firstPage=function(){e.from=0,s()},e.changePage=function(n){s({from:10*(n-1)})},e.getContentUrl=function(){return"app/directives/announcement/"+l+".html"},e.getAnnouncementImagePath=function(n){return a.getAnnouncementImagePath(n)},e.getTrustedHtmlContent=function(n){return o.trustAsHtml(n)},e.openAnnouncementModal=function(n){r.open({templateUrl:"app/directives/announcement/modal/announcementModal.html",controller:"announcementModalController",windowClass:"modal-announcement",backdrop:!0,keyboard:!0,resolve:{announcement:n}})}}}}])}(angular); 9048 9048 "use strict";!function(n){n.module("lmxApp").factory("announcementService",["$rootScope","$http","configurationService","modalService","offerService",function(n,t,e,o,a){function r(n,e,o){return t.get(m+"Announcements",{params:{"filter.spaceLogicalName":n,"filter.from":e||0,"filter.count":o||10}}).then(function(n){return n})}function u(n){return m+"Files/"+n}function i(n){var e={};return t.get(m+"Announcements/"+n).then(function(n){return e=n.data.attributes.toDictionary("attributeLogicalName"),n.data.attributes=e,n.data})}function c(){r("auth",0,1).then(function(n){if(0!==n.data.length){var t=n.data[0];t.attributesDictionary=t.attributes.toDictionary("attributeLogicalName"),o.open({templateUrl:"app/directives/announcement/modal/authAnnouncementModal.html",controller:"authAnnouncementModalController",windowClass:"auth-announcement-modal",backdrop:!0,keyboard:!0,resolve:{announcement:t}})}})}function f(n){return a.getOfferById(n).then(function(n){var t=n;t=a.transformOfferImages([t]),0!==t.length&&a.openCommunicationOfferModal(t[0])})}var m=e.host+"api/";return{getAnnouncementById:i,getAnnouncementImagePath:u,getPublishedAnnouncements:r,checkAuthAnnouncement:c,getOfferAndOpenCommunicationOfferModal:f}}])}(angular); … … 9129 9129 "use strict";!function(e){e.module("lmxApp").directive("lmxPersonalOffers",["$window","$timeout","globalService","backendTypesService","brandService","configurationService","offerService",function(e,r,n,o,f,t,a){return{restrict:"E",replace:!0,scope:!0,templateUrl:"app/directives/personalOffers/personalOffers.html",link:function(o){function i(e){return n.getApplicationURLParts(e.match(/#\/?(.+)$/)[1])}var s=t.enums,c=0;o.inProgress=!0,o.openOffer=function(r){c=e.pageYOffset,o.changeLocation("personal-offers/"+r)},a.getOffers({offerState:s.offerState.active,offerType:s.communicationOfferTypeEnum.personalOffer}).then(function(e){o.personalOffers=e,o.personalOffers.forEach(function(e){f.populateImagesUrlFromDescription(e.brands)})})["finally"](function(){o.inProgress=!1}),o.$on("$locationChangeStart",function(n,o,f){var t=i(f),a=i(o);"personal-offers"===t[0]&&2===t.length&&"personal-offers"===a[0]&&r(function(){scrollTo(e.pageXOffset,c),c=0})})}}}])}(angular); 9130 9130 "use strict";!function(e){e.module("lmxApp").directive("phoneInput",["$rootScope","phoneInputService",function(n,t){return{restrict:"E",replace:!0,require:"ngModel",transclude:!0,scope:{},templateUrl:"app/directives/phoneInput/phoneInput.html",link:function(i,r,s,o){function p(){return i.phoneSettings.prefix.length-1+(i.multipleMasks?i.phoneSettings.maskLength:i.phoneSettings.length)}function a(e,n){var i=e[n+1],r=l.slice(0,i-1)+l.slice(i);return t.clearNumbersString(r,!0)}var g,l,h="",u=!1,c=!1,f=!1,S=!1,m="";i.multipleMasks=!1;var k=!1;i.keyPress=function(e){h=String.fromCharCode(e.keyCode)||""},r[0].onkeydown=function(e){var n=e.keyCode||e.charCode;u=8===n,f=46===n},i.paste=function(e){var n=e.originalEvent.clipboardData.getData("text/plain");m=t.clearNumbersString(n)},i.phoneSettings=e.copy(t.phoneSettings),0!==Object.keys(t.currentPhoneSetting.value).length?(i.phoneSettings.prefix="+"+t.currentPhoneSetting.value.prefix,i.phoneSettings.mask=t.currentPhoneSetting.value.masks[0].mask,i.phoneSettings.maskLength=t.currentPhoneSetting.value.masks[0].length,i.multipleMasks=!0):i.phoneSettings.prefix="+"+i.phoneSettings.prefix,i.phoneLength=p();var v=t.getProperPositionsMappings(),d=v.properPositionsMap,P=v.properPositionsBackwardsMap;n.$on("changedSettings",function(e,n){i.phoneSettings.prefix="+"+n.prefix,o.$modelValue=i.phoneSettings.prefix,o.$viewValue=i.phoneSettings.prefix,i.phoneSettings.mask=n.masks[0].mask,i.phoneSettings.maskLength=n.masks[0].length,i.phoneLength=p(),v=t.getProperPositionsMappings(),d=v.properPositionsMap,P=v.properPositionsBackwardsMap,k=!0}),o.$parsers.push(function(e){var n=t.clearNumbersString(e,!0),s=i.phoneSettings.prefix,k=i.phoneSettings.maskLength||i.phoneSettings.length;i.phoneLength=p();var v=r[0],x=v.selectionStart,M=g&&g.length===n.length;if(f&&e.length>0&&(M||x<s.length))if(l.length===e.length+1)n=a(d,x);else{var $=l.length-e.length;n=s+l.slice(x+$)}if(u&&x>=P[1]&&M&&(n=a(P,x)),m.length)n=s+m.slice(-k);else if(n.startsWith(s)){var L=s.length+k;n.length>L&&g.length<L&&(n=s+n.slice(-k))}else if(n.length<=s.length)n=s+h;else if(h){var b=g.replace(s,"");n=s+h+b.slice(-k+1)}else n=g;o.$viewValue=t.getMaskedPhone(n),o.$render();var y,w=u||c,C=f||S;if(x<d[1]&&(w||C))y=d[1]-1;else if(u){var I=P[x+1];y=M&&I?I-1:P[x]}else C&&d[x]||(y=d[x]);return y=y||x,r[0].setSelectionRange(y,y),c=u,S=f,g=n||"",l=e||"",h="",m="",f=!1,u=!1,n}),o.$formatters.push(function(e){return!e||k?(g=i.phoneSettings.prefix,o.$render(),k=!1,g):(g=e,l=t.getMaskedPhone(e))}),o.$validators.required=function(e){return e&&e!==t.clearNumbersString(i.phoneSettings.prefix)}}}}])}(angular); 9131 "use strict";!function(e){e.module("lmxApp").service("phoneInputService",["$http","configurationService", "localStorageService",function(n,t,r){function a(e){return n.get(t.host+"v1.1/countries/"+e+"/Images").then(function(e){return e.data[0]})}function i(n,t){var r="[^"+(t?"+":"")+"\\d]",a=new RegExp(r,"g");return e.isNullOrUndefined(n)?"":n.replace(a,"")}function s(e){c.value=e}function o(){var e=t.host+"api/PhoneSettings",i=r.get("version");return(2021===i.major&&i.minor>=2||i.major>=2022)&&(e=t.host+"v1/PhoneSettings/Active"),n.get(e).then(function(e){Object.assign(g,e.data),g[0].masks&&(g=e.data,v=!0,s(g[0]),g.forEach(function(e){a(e.country.id).then(function(n){e.country.image=n.file})}))})}function u(e){var n=v?c.value.masks[0].mask:g.mask,t=i(e),r=v?new RegExp("^"+c.value.prefix):new RegExp("^"+g.prefix),a=t.replace(r,""),s="",o=0;if(a.length)for(var u=0;u<n.length;u++)if("9"===n[u]){if(s+=a[o],o+=1,o===a.length)break}else s+=n[u];return v?"+"+c.value.prefix+" "+s:"+"+g.prefix+" "+s}function l(){var e;e=v?"+"+c.value.prefix+" "+c.value.masks[0].mask:"+"+g.prefix+" "+g.mask;var n,t={},r={},a=0,i="";if(c.value&&c.value.masks&&0===c.value.masks[0].length){for(var s=c.value.masks[0].mask.length,o=c.value.masks[0].mask,u=0;u<s;u++)"+"!==o[u]&&" "!==o[u]&&"("!==o[u]&&")"!==o[u]&&"-"!==o[u]&&(i+=o[u]);n=i.length}else c.value.masks&&(n=c.value.masks[0].length);for(var l=v?n:g.length,f=e.length-1;f>=0;f--)"9"===e[f]&&l?(a=f+1,l-=1):t[f+1]=a;var p=t[1];a=p;for(var h=0;h<e.length;h++)h+1<p?r[h+1]=p:"9"===e[h]?a=h+1:r[h+1]=a;return{properPositionsMap:t,properPositionsBackwardsMap:r}}var g={},v=!1,c={value:{}};return{getPhoneSettings:o,clearNumbersString:i,getMaskedPhone:u,getProperPositionsMappings:l,setCurrentPhoneSetting:s,phoneSettings:g,currentPhoneSetting:c}}])}(angular);9131 "use strict";!function(e){e.module("lmxApp").service("phoneInputService",["$http","configurationService",function(n,t){function a(e){return n.get(t.host+"v1.1/countries/"+e+"/Images").then(function(e){return e.data[0]})}function r(n,t){var a="[^"+(t?"+":"")+"\\d]",r=new RegExp(a,"g");return e.isNullOrUndefined(n)?"":n.replace(r,"")}function s(e){v.value=e}function i(){var e=t.host+"v1/PhoneSettings/Active";return n.get(e).then(function(e){Object.assign(l,e.data),l[0].masks&&(l=e.data,g=!0,s(l[0]),l.forEach(function(e){a(e.country.id).then(function(n){e.country.image=n.file})}))})}function u(e){var n=g?v.value.masks[0].mask:l.mask,t=r(e),a=g?new RegExp("^"+v.value.prefix):new RegExp("^"+l.prefix),s=t.replace(a,""),i="",u=0;if(s.length)for(var o=0;o<n.length;o++)if("9"===n[o]){if(i+=s[u],u+=1,u===s.length)break}else i+=n[o];return g?"+"+v.value.prefix+" "+i:"+"+l.prefix+" "+i}function o(){var e;e=g?"+"+v.value.prefix+" "+v.value.masks[0].mask:"+"+l.prefix+" "+l.mask;var n,t={},a={},r=0,s="";if(v.value&&v.value.masks&&0===v.value.masks[0].length){for(var i=v.value.masks[0].mask.length,u=v.value.masks[0].mask,o=0;o<i;o++)"+"!==u[o]&&" "!==u[o]&&"("!==u[o]&&")"!==u[o]&&"-"!==u[o]&&(s+=u[o]);n=s.length}else v.value.masks&&(n=v.value.masks[0].length);for(var f=g?n:l.length,c=e.length-1;c>=0;c--)"9"===e[c]&&f?(r=c+1,f-=1):t[c+1]=r;var p=t[1];r=p;for(var h=0;h<e.length;h++)h+1<p?a[h+1]=p:"9"===e[h]?r=h+1:a[h+1]=r;return{properPositionsMap:t,properPositionsBackwardsMap:a}}var l={},g=!1,v={value:{}};return{getPhoneSettings:i,clearNumbersString:r,getMaskedPhone:u,getProperPositionsMappings:o,setCurrentPhoneSetting:s,phoneSettings:l,currentPhoneSetting:v}}])}(angular); 9132 9132 "use strict";!function(e){e.module("lmxApp").directive("phoneMask",["$rootScope","phoneInputService",function(e,t){return{restrict:"E",replace:!0,templateUrl:"app/directives/phoneMask/phoneMask.html",link:function(n){n.selectedType={},n.expandList={state:!1},n.outsideClick=function(){n.expandList.state=!1},t.phoneSettings[0]&&t.phoneSettings[0].masks&&(n.phoneSettingsList=t.phoneSettings,n.selectedType=t.currentPhoneSetting.value),n.setPhoneSettings=function(i){n.selectedType=i,t.setCurrentPhoneSetting(i),e.$emit("changedSettings",i)}}}}])}(angular); 9133 9133 "use strict";!function(e){e.module("lmxApp").directive("questionCancel",function(){return{restrict:"E",replace:!0,templateUrl:"app/directives/questionnaire/questionCancel.html"}})}(angular); … … 9143 9143 "use strict";!function(e){e.module("lmxApp").factory("reCaptchaService",["$log","$q","$rootScope","$timeout",function(e,r,t,n){function o(){a.value=!1,c.value=null}function u(u){c.value=u;var i=r.defer();return n(function(){a.value=!0}),t.$on("reCaptchaSuccess",function(e,r){o(),i.resolve(r)}),t.$on("reCaptchaError",function(){e.error("reCaptcha error. See the badge in left-bottom corner for more information.\r\nCurrent siteKey is `"+c.value+"`"),i.reject()}),i.promise}var a={value:!1},c={value:null};return{reCaptchaCheckingInProgress:a,siteKey:c,execute:u}}])}(angular); 9144 9144 "use strict";!function(t){t.module("lmxApp").directive("cardAssignment",function(){return{restrict:"E",replace:!0,templateUrl:"app/directives/registration/cardAssignment.html"}})}(angular); 9145 "use strict";!function(e){e.module("lmxApp").directive("lmxRegistration",["$q","$rootScope","$log","$http","authService","cardsService","configurationService","globalService","emailConfirmationCheckerService","localStorageService","notification","registrationService","resetPasswordService","routingService","shareAuthLoginToRegistration","$translate","userAlertService","translateFilter","userService","resendService",function(t,r,n,i,o,s,a,c,u,f,g,d,l,m,p,h,S,R,v,C){return{restrict:"E",replace:!0,scope:!0,templateUrl:"app/directives/registration/registration.html",link:function(n){function i(){_=!0}function A(){_=!1}function T(){n.inProgressFinishRegistration=!0,d.tryFinishRegistration().then(function(e){z=e,n.authorizeOnRegistrationComplete=a.components.registration.authorizeOnRegistrationComplete,n.registrationCompleted=!0})["finally"](function(){n.inProgressFinishRegistration=!1})}function k(){return o.loadAuth(), x=H.major<2021?d.getActions():d.getRegistrationActions(),n.inProgress=!0,x.then(function(e){var t;if(B=e.actions,!B.length)return o.clearAuthData(),window.location.reload();if(H.major>=2021){var r=B.find(function(e){return"AcceptSubscriptionsConfirm"===e.userActionType});r&&(n.shouldHideSubscriptionInput=!1,n.shouldRequireSubscriptionInput="Required"===r.actionState)}j=n.emailSkippable&&!f.get("forceEmailStepSkipped")&&!f.get("forceEmailStepHasCode");for(var i=0;i<B.length;i++)if(!B[i].isDone&&"AcceptSubscriptionsConfirm"!==B[i].userActionType){t="Questions"===B[i].userActionType&&j?"ChangeEmail":B[i].userActionType;break}n.currentStep=t,n.currentStep||T()})["catch"](function(){n.currentStep=null})["finally"](function(){n.inProgress=!1})}function O(){var e={tenderOffer:d.getTenderOffer(!n.acceptTenderOfferByCheck),agreement:d.getAgreementPdf()};n.inProgress=!0,t.allSettled(e).then(function(e){e.tenderOffer.success?n.tenderOfferFile=e.tenderOffer.value:200!==e.tenderOffer.error.status?g.addCritical(R("registration.tenderOfferStep.alerts.offerFileError"),q):e.tenderOffer.error.incorrectFormat&&g.addCritical(R("registration.tenderOfferStep.alerts.offerFileFormatError"),q),e.agreement.success||200===e.agreement.error.status||g.addCritical(R("registration.tenderOfferStep.alerts.opdFileError"),q),n.isOfferAndAgreementLoaded=e.tenderOffer.success&&e.agreement.success})["finally"](function(){n.ignoreDocsFetchingErrors&&(n.isOfferAndAgreementLoaded=!0),n.inProgress=!1})}function y(){n.isRegistrationStarted=!1,n.currentStep=null,f.remove("isRegistrationToken"),f.remove("authorizationToken"),f.remove("refreshToken")}function P(){return d.getRegisterAnonym().then(function(e){f.set("anonymTokenExpireTime",e.authResult.expires_in),f.set("anonymAccessToken",e.authToken),f.set("anonymRefreshToken",e.authResult.refresh_token),n.isOfferAndAgreementLoaded||O(),o.setRegistrationToken(e.authToken,e.authResult.refresh_token),y()})}function I(){k().then(function(){"AcceptTenderOffer"===n.currentStep?O():"AssignCard"===n.currentStep&&(n.inProgress=!0,s.getVirtualCardInfo().then(function(e){n.isVirtualCardEmissionAllowed=e.isVirtualCardEmissionAllowed,n.ext_assignCardStep()})["finally"](function(){n.inProgress=!1}))})}function b(){a.common.requestUserStatus&&c.getUserStatus().then(function(e){r.userStatus=e})}function E(){n.registrationData={password:""},n.model={identifier:a.identifiers.registration[0]},(a.components.authentication.shareAuthLoginToRegistration||a.components.registration.forceRegistrationStartOnLoginAttempt&&n.acceptTenderOfferByCheck)&&p.loginAuth&&(n.model.identifier=p.identifier,n.registrationData.login=p.loginAuth,p.clearLogin())}function F(){n.isRegistrationStarted=!0,I(),n.passwordRequired=!1}function w(){var e;return n.acceptTenderOfferByCheck&&(e=n.acceptTenderOffer()),t.when(e).then(function(){F()})}function D(){var e;return n.referralRegistration&&n.referrerCardNumber.value&&(e=d.getReferrerInfo().then(function(){return h("registration.referrerCodeMessage").then(function(e){return S(e,"info")})})["catch"](function(){return d.sendReferrerCardNumber(n.referrerCardNumber.value)})),t.when(e).then(w)["catch"](function(){o.removeRegistrationToken(),o.clearAuthData()})}function $(){var e=f.get("refreshTokenForSocialRegistration");o.setRegistrationToken(n.tokenForSocialRegistration,e)}function L(t){n.authInProgress=!0;var r=a.oAuthClientId&&!f.get("authorizationToken")?o.getOAuthClientTokens():Promise.resolve();r.then(function(){return d.beginRegistration(e.copy(n.registrationData)).then(function(e){return o.clearAuthData(),o.setRegistrationToken(e.authResult.access_token,e.authResult.refresh_token),d.setIdentifier(n.model.identifier),H.major>=2021&&!n.shouldHideSubscriptionInput&&(n.isAgreeOnSubscribe.isAgree?v.confirmAllSubscription():v.rejectAllSubscriptions()),C.setTimer(C.requestEnums.sendConfirmCodePhone),D()},function(e){"PasswordRequired"===e.data.data.state&&(n.passwordRequired=!0,t.$submitted=!1)})["finally"](function(){n.authInProgress=!1})})}var q="registration";d.setArea(q),s.setArea(q),n.agreementEcheque={value:!1};var _=!0;document.addEventListener("mouseover",i),document.addEventListener("mouseleave",A),n.apiHost=a.host,n.opdAgreementFileId=a.components.registration.opdAgreementFileId,n.isRegistrationStarted=o.isRegistrationStarted(),n.acceptTenderOfferByCheck=a.components.registration.acceptTenderOfferByCheck,n.ignoreDocsFetchingErrors=a.components.registration.ignoreDocsFetchingErrors,n.offerPdfFileId=a.components.registration.offerPdfFileId,n.referralRegistration=a.components.registration.referralRegistration,n.registrationSmsCodeAsPassword=a.components.registration.setRegistrationSmsCodeAsPassword,n.isOfferAndAgreementLoaded=void 0,n.referrerCardNumber={value:""},n.registrationCompleted=!1,n.loader={cities:!1,streets:!1,houses:!1},n.emailSkippable=a.components.registration.forceEmailStep,n.tokenForSocialRegistration=f.get("tokenForSocialRegistration"),n.shouldRequireSubscriptionInput=!1,n.shouldHideSubscriptionInput=!0,n.isAgreeOnSubscribe={isAgree:!0};var x="",B={},j=!1,z={},H=f.get("version"),M=(new Date).getTime(),N=f.get("anonymTokenExpireTime");!f.get("isRegistrationToken")&&H.major>2020&&(N>=M||!N)?P().then(function(){k()}):!f.get("isRegistrationToken")&&H.major>2020&&(N<=M||!N)&&(o.setRegistrationToken(f.get("anonymAccessToken"),f.get("anonymRefreshToken")),k().then(function(){y()})),n.isRegistrationStarted?I():n.acceptTenderOfferByCheck&&O(),n["continue"]=function(){o.removeRegistrationToken(),a.components.registration.authorizeOnRegistrationComplete?o.setAuth(z.access_token,z.refresh_token):o.clearAuthData();var e=a.components.registration.redirectUrlOnRegistrationComplete;"#registration"===e&&(a.components.registration.authorizeOnRegistrationComplete?e=a.components.authentication.redirectUrlOnLogin:(n.registrationCompleted=!1,n.isRegistrationStarted=!1,n.acceptTenderOfferByCheck&&O())),o.loggedIn()&&b(),m.redirectTo(e)},n.acceptTenderOffer=function(){return n.stepInProgress=!0,d.acceptTenderOffer().then(function(){k()})["finally"](function(){n.stepInProgress=!1})},n.cancel=function(){n.currentStep=null,o.clearAuthData(),m.goToLogin()},n.cardModel={cardNumber:""},n.cvcCodeCardsRegistration=a.components.cards.cvcCodeCardsRegistration,n.cvcCodeCardsRegistration&&(n.cardModel.cvcCode=""),n.assignCard=function(){n.stepInProgress=!0,s.setCard(n.cardModel).then(function(){k()})["finally"](function(){n.stepInProgress=!1})},n.emitVirtualCard=function(){n.stepInProgress=!0,s.emitVirtualCard()["finally"](function(){k(),n.stepInProgress=!1})},n.$on("resetRegistration",function(){o.clearAuthData(),n.currentStep=null,n.isRegistrationStarted=!1}),n.$on("questionnaireIsSet",I),n.$on("emailIsSet",I),n.$on("phoneIsSet",I),n.$on("passwordIsSet",I);var U=r.$on("$locationChangeStart",function(e,t){var r=new RegExp("#/"+u.confirmationKeys.email+"?").test(t);!n.isRegistrationStarted||_||r||(window.stop(),n.registrationCompleted=!1,n.isRegistrationStarted=!1,n.currentStep=null,o.removeRegistrationToken(),o.clearAuthData(),m.goToLogin())});n.$on("$destroy",function(){document.removeEventListener("mouseover",i),document.removeEventListener("mouseleave",A),U()}),E(),n.registration=function(e){f.set("agreementEcheque",n.agreementEcheque.value),n.tokenForSocialRegistration?($(),D()):L(e)},n.resetPassword=function(){l.setResetPasswordConfirmationData({data:n.registrationData.login,identifier:n.model.identifier}),m.goTo("reset-password")},n.resetFormModels=function(e){n.registrationData.login="",e.$submitted=!1},!n.tokenForSocialRegistration||n.referralRegistration||n.acceptTenderOfferByCheck||($(),F()),n.ext_assignCardStep=function(){return null}}}}])}(angular);9145 "use strict";!function(e){e.module("lmxApp").directive("lmxRegistration",["$q","$rootScope","$log","$http","authService","cardsService","configurationService","globalService","emailConfirmationCheckerService","localStorageService","notification","registrationService","resetPasswordService","routingService","shareAuthLoginToRegistration","$translate","userAlertService","translateFilter","userService","resendService",function(t,r,n,i,o,s,a,c,u,f,g,d,l,m,p,h,S,R,v,C){return{restrict:"E",replace:!0,scope:!0,templateUrl:"app/directives/registration/registration.html",link:function(n){function i(){_=!0}function A(){_=!1}function T(){n.inProgressFinishRegistration=!0,d.tryFinishRegistration().then(function(e){z=e,n.authorizeOnRegistrationComplete=a.components.registration.authorizeOnRegistrationComplete,n.registrationCompleted=!0})["finally"](function(){n.inProgressFinishRegistration=!1})}function k(){return o.loadAuth(),n.inProgress=!0,d.getRegistrationActions().then(function(e){var t;if(x=e.actions,!x.length)return o.clearAuthData(),window.location.reload();var r=x.find(function(e){return"AcceptSubscriptionsConfirm"===e.userActionType});r&&(n.shouldHideSubscriptionInput=!1,n.shouldRequireSubscriptionInput="Required"===r.actionState),B=n.emailSkippable&&!f.get("forceEmailStepSkipped")&&!f.get("forceEmailStepHasCode");for(var i=0;i<x.length;i++)if(!x[i].isDone&&"AcceptSubscriptionsConfirm"!==x[i].userActionType){t="Questions"===x[i].userActionType&&B?"ChangeEmail":x[i].userActionType;break}n.currentStep=t,n.currentStep||T()})["catch"](function(){n.currentStep=null})["finally"](function(){n.inProgress=!1})}function O(){var e={tenderOffer:d.getTenderOffer(!n.acceptTenderOfferByCheck),agreement:d.getAgreementPdf()};n.inProgress=!0,t.allSettled(e).then(function(e){e.tenderOffer.success?n.tenderOfferFile=e.tenderOffer.value:200!==e.tenderOffer.error.status?g.addCritical(R("registration.tenderOfferStep.alerts.offerFileError"),q):e.tenderOffer.error.incorrectFormat&&g.addCritical(R("registration.tenderOfferStep.alerts.offerFileFormatError"),q),e.agreement.success||200===e.agreement.error.status||g.addCritical(R("registration.tenderOfferStep.alerts.opdFileError"),q),n.isOfferAndAgreementLoaded=e.tenderOffer.success&&e.agreement.success})["finally"](function(){n.ignoreDocsFetchingErrors&&(n.isOfferAndAgreementLoaded=!0),n.inProgress=!1})}function y(){n.isRegistrationStarted=!1,n.currentStep=null,f.remove("isRegistrationToken"),f.remove("authorizationToken"),f.remove("refreshToken")}function P(){return d.getRegisterAnonym().then(function(e){f.set("anonymTokenExpireTime",e.authResult.expires_in),f.set("anonymAccessToken",e.authToken),f.set("anonymRefreshToken",e.authResult.refresh_token),n.isOfferAndAgreementLoaded||O(),o.setRegistrationToken(e.authToken,e.authResult.refresh_token),y()})}function I(){k().then(function(){"AcceptTenderOffer"===n.currentStep?O():"AssignCard"===n.currentStep&&(n.inProgress=!0,s.getVirtualCardInfo().then(function(e){n.isVirtualCardEmissionAllowed=e.isVirtualCardEmissionAllowed,n.ext_assignCardStep()})["finally"](function(){n.inProgress=!1}))})}function b(){a.common.requestUserStatus&&c.getUserStatus().then(function(e){r.userStatus=e})}function E(){n.registrationData={password:""},n.model={identifier:a.identifiers.registration[0]},(a.components.authentication.shareAuthLoginToRegistration||a.components.registration.forceRegistrationStartOnLoginAttempt&&n.acceptTenderOfferByCheck)&&p.loginAuth&&(n.model.identifier=p.identifier,n.registrationData.login=p.loginAuth,p.clearLogin())}function F(){n.isRegistrationStarted=!0,I(),n.passwordRequired=!1}function w(){var e;return n.acceptTenderOfferByCheck&&(e=n.acceptTenderOffer()),t.when(e).then(function(){F()})}function D(){var e;return n.referralRegistration&&n.referrerCardNumber.value&&(e=d.getReferrerInfo().then(function(){return h("registration.referrerCodeMessage").then(function(e){return S(e,"info")})})["catch"](function(){return d.sendReferrerCardNumber(n.referrerCardNumber.value)})),t.when(e).then(w)["catch"](function(){o.removeRegistrationToken(),o.clearAuthData()})}function $(){var e=f.get("refreshTokenForSocialRegistration");o.setRegistrationToken(n.tokenForSocialRegistration,e)}function L(t){n.authInProgress=!0;var r=a.oAuthClientId&&!f.get("authorizationToken")?o.getOAuthClientTokens():Promise.resolve();r.then(function(){return d.beginRegistration(e.copy(n.registrationData)).then(function(e){return o.clearAuthData(),o.setRegistrationToken(e.authResult.access_token,e.authResult.refresh_token),d.setIdentifier(n.model.identifier),n.shouldHideSubscriptionInput||(n.isAgreeOnSubscribe.isAgree?v.confirmAllSubscription():v.rejectAllSubscriptions()),C.setTimer(C.requestEnums.sendConfirmCodePhone),D()},function(e){"PasswordRequired"===e.data.data.state&&(n.passwordRequired=!0,t.$submitted=!1)})["finally"](function(){n.authInProgress=!1})})}var q="registration";d.setArea(q),s.setArea(q),n.agreementEcheque={value:!1};var _=!0;document.addEventListener("mouseover",i),document.addEventListener("mouseleave",A),n.apiHost=a.host,n.opdAgreementFileId=a.components.registration.opdAgreementFileId,n.isRegistrationStarted=o.isRegistrationStarted(),n.acceptTenderOfferByCheck=a.components.registration.acceptTenderOfferByCheck,n.ignoreDocsFetchingErrors=a.components.registration.ignoreDocsFetchingErrors,n.offerPdfFileId=a.components.registration.offerPdfFileId,n.referralRegistration=a.components.registration.referralRegistration,n.registrationSmsCodeAsPassword=a.components.registration.setRegistrationSmsCodeAsPassword,n.isOfferAndAgreementLoaded=void 0,n.referrerCardNumber={value:""},n.registrationCompleted=!1,n.loader={cities:!1,streets:!1,houses:!1},n.emailSkippable=a.components.registration.forceEmailStep,n.tokenForSocialRegistration=f.get("tokenForSocialRegistration"),n.shouldRequireSubscriptionInput=!1,n.shouldHideSubscriptionInput=!0,n.isAgreeOnSubscribe={isAgree:!0};var x={},B=!1,z={},H=(new Date).getTime(),M=f.get("anonymTokenExpireTime");f.get("isRegistrationToken")?(y(),n.isRegistrationStarted?I():n.acceptTenderOfferByCheck&&O()):M>=H||!M?P().then(function(){k()}):(M<=H||!M)&&(o.setRegistrationToken(f.get("anonymAccessToken"),f.get("anonymRefreshToken")),n.isRegistrationStarted?(I(),y()):(O(),k().then(function(){y()}))),n["continue"]=function(){o.removeRegistrationToken(),a.components.registration.authorizeOnRegistrationComplete?o.setAuth(z.access_token,z.refresh_token):o.clearAuthData();var e=a.components.registration.redirectUrlOnRegistrationComplete;"#registration"===e&&(a.components.registration.authorizeOnRegistrationComplete?e=a.components.authentication.redirectUrlOnLogin:(n.registrationCompleted=!1,n.isRegistrationStarted=!1,n.acceptTenderOfferByCheck&&O())),o.loggedIn()&&b(),m.redirectTo(e)},n.acceptTenderOffer=function(){return n.stepInProgress=!0,d.acceptTenderOffer().then(function(){k()})["finally"](function(){n.stepInProgress=!1})},n.cancel=function(){n.currentStep=null,o.clearAuthData(),m.goToLogin()},n.cardModel={cardNumber:""},n.cvcCodeCardsRegistration=a.components.cards.cvcCodeCardsRegistration,n.cvcCodeCardsRegistration&&(n.cardModel.cvcCode=""),n.assignCard=function(){n.stepInProgress=!0,s.setCard(n.cardModel).then(function(){k()})["finally"](function(){n.stepInProgress=!1})},n.emitVirtualCard=function(){n.stepInProgress=!0,s.emitVirtualCard()["finally"](function(){k(),n.stepInProgress=!1})},n.$on("resetRegistration",function(){o.clearAuthData(),n.currentStep=null,n.isRegistrationStarted=!1}),n.$on("questionnaireIsSet",I),n.$on("emailIsSet",I),n.$on("phoneIsSet",I),n.$on("passwordIsSet",I);var N=r.$on("$locationChangeStart",function(e,t){var r=new RegExp("#/"+u.confirmationKeys.email+"?").test(t);!n.isRegistrationStarted||_||r||(window.stop(),n.registrationCompleted=!1,n.isRegistrationStarted=!1,n.currentStep=null,o.removeRegistrationToken(),o.clearAuthData(),m.goToLogin())});n.$on("$destroy",function(){document.removeEventListener("mouseover",i),document.removeEventListener("mouseleave",A),N()}),E(),n.registration=function(e){f.set("agreementEcheque",n.agreementEcheque.value),n.tokenForSocialRegistration?($(),D()):L(e)},n.resetPassword=function(){l.setResetPasswordConfirmationData({data:n.registrationData.login,identifier:n.model.identifier}),m.goTo("reset-password")},n.resetFormModels=function(e){n.registrationData.login="",e.$submitted=!1},!n.tokenForSocialRegistration||n.referralRegistration||n.acceptTenderOfferByCheck||($(),F()),n.ext_assignCardStep=function(){return null}}}}])}(angular); 9146 9146 "use strict";!function(i){i.module("lmxApp").directive("registrationFinish",function(){return{restrict:"E",replace:!0,templateUrl:"app/directives/registration/registrationFinish.html"}})}(angular); 9147 "use strict";!function(e){e.module("lmxApp").factory("registrationService",["$http","$q","authService","backendEnumsService","configurationService","localStorageService","guidService",function(e, t,r,n,i,a,o){function u(e){S=e}function s(){var t=o.getGuid(),r={password:t};return e.post(I+"v1.2/Registration/RegisterAnonym",r).then(function(e){return e.data})}function c(t){var r={area:S};return e.post(I+"v1.2/Registration/BeginRegistration",t,r).then(function(e){return e.data})}function f(){return e.post(I+"v1.1/Registration/TryFinishRegistration",null,{area:S}).then(function(e){return e.data})}function g(){return e.get(I+"api/user/actions",{area:S}).then(function(e){return e.data})}function d(){return e.get(I+"v1.2/User/RegistrationActions",{area:S}).then(function(e){return e.data})}function p(){return e.post(I+"api/User/AcceptTenderOffer",null,{area:S})}function m(t){var r={answers:t};return e.post(I+"api/User/Answers",r,{area:S})}function v(r){var n=r?i.components.registration.offerHtmlFileId:i.components.registration.offerPdfFileId;return e.get(I+"api/files/"+n,{area:S}).then(function(e){return r&&!e.headers("content-type").contains("html")?t.reject({incorrectFormat:!0}):e.data})}function l(){return e.get(I+"api/files/"+i.components.registration.opdAgreementFileId,{area:S}).then(function(e){return e.data})}function h(){return e.get(I+"api/User/Referrer",{area:S}).then(function(e){return e.data})}function R(t){var r={type:n.enums.referrerCodeType.cardNumber,code:t};return e.put(I+"api/User/Referrer",r,{area:S})}function A(e){e?a.set(F,e):a.remove(F)}function y(){return a.get(F)}var S,I=i.host,F=r.registrationIdentifierStorageKey;return{setArea:u,acceptTenderOffer:p,beginRegistration:c,getActions:g,getTenderOffer:v,sendQuestions:m,tryFinishRegistration:f,getAgreementPdf:l,getReferrerInfo:h,sendReferrerCardNumber:R,setIdentifier:A,getIdentifier:y,getRegisterAnonym:s,getRegistrationActions:d}}])}(angular);9147 "use strict";!function(e){e.module("lmxApp").factory("registrationService",["$http","$q","authService","backendEnumsService","configurationService","localStorageService","guidService",function(e,r,t,n,i,o,a){function s(e){y=e}function u(){var r=a.getGuid(),t={password:r};return e.post(F+"v1.2/Registration/RegisterAnonym",t).then(function(e){return e.data})}function c(r){var t={area:y};return e.post(F+"v1.2/Registration/BeginRegistration",r,t).then(function(e){return e.data})}function f(){return e.post(F+"v1.1/Registration/TryFinishRegistration",null,{area:y}).then(function(e){return e.data})}function g(){return e.get(F+"api/user/actions",{area:y}).then(function(e){return e.data})}function d(){return e.get(F+"v1.2/User/RegistrationActions",{area:y}).then(function(e){return e.data})}function p(){return e.post(F+"api/User/AcceptTenderOffer",null,{area:y})}function l(r){var t={answers:r};return e.post(F+"api/User/Answers",t,{area:y})}function m(t){if(t&&!i.components.registration.offerHtmlFileId.length||!t&&!i.components.registration.offerPdfFileId.length)return r.reject({error:"Error"});var n=t?i.components.registration.offerHtmlFileId:i.components.registration.offerPdfFileId;return e.get(F+"api/files/"+n,{area:y}).then(function(e){return t&&!e.headers("content-type").contains("html")?r.reject({incorrectFormat:!0}):e.data})}function h(){return i.components.registration.opdAgreementFileId.length?e.get(F+"api/files/"+i.components.registration.opdAgreementFileId,{area:y}).then(function(e){return e.data}):r.reject({error:"Error"})}function v(){return e.get(F+"api/User/Referrer",{area:y}).then(function(e){return e.data})}function R(r){var t={type:n.enums.referrerCodeType.cardNumber,code:r};return e.put(F+"api/User/Referrer",t,{area:y})}function A(e){e?o.set(S,e):o.remove(S)}function I(){return o.get(S)}var y,F=i.host,S=t.registrationIdentifierStorageKey;return{setArea:s,acceptTenderOffer:p,beginRegistration:c,getActions:g,getTenderOffer:m,sendQuestions:l,tryFinishRegistration:f,getAgreementPdf:h,getReferrerInfo:v,sendReferrerCardNumber:R,setIdentifier:A,getIdentifier:I,getRegisterAnonym:u,getRegistrationActions:d}}])}(angular); 9148 9148 "use strict";!function(e){e.module("lmxApp").directive("registrationStart",["IDENTIFIERS","configurationService",function(e,t){return{restrict:"E",replace:!0,templateUrl:"app/directives/registration/registrationStart.html",link:function(i){i.identifiers={arr:t.identifiers.registration},i.hasEchequeAgreementQuestion=!!t.common.echequeLogicalName,i.IDENTIFIERS=e}}}])}(angular); 9149 9149 "use strict";!function(e){e.module("lmxApp").directive("tenderOffer",function(){return{restrict:"E",replace:!0,templateUrl:"app/directives/registration/tenderOffer.html"}})}(angular); … … 9179 9179 "use strict";!function(n){n.module("lmxApp").config(["$compileProvider",function(n){n.debugInfoEnabled(!1)}])}(angular); 9180 9180 "use strict";!function(n){n.unNormalizeDirective=function(n){var r=/[A-Z]/g;return n.replace(r,function(n,r){return(r?"-":"")+n.toLowerCase()})},n.flipObject=function(n){var r={};for(var t in n)n.hasOwnProperty(t)&&(r[n[t]]=t);return r},n.isDate=function(n){return"[object Date]"===Object.prototype.toString.call(n)},n.copyObjectFields=function(n){for(var r,t={},e=1;e<arguments.length;e++)r=arguments[e],t[r]=n[r];return t},n.isNullOrUndefined=function(r){return n.isUndefined(r)||null===r}}(angular); 9181 "use strict";!function(e){e.module("lmxApp").service("apiService",["$http","localStorageService","configurationService","phoneInputService",function(e,t,n,r){function i(){var i=n.host+"v1/Version";return e.get(i).then(function(e){return t.get("version")?t.get("version").major==e.data.major&&t.get("version").minor==e.data.minor||t.set("version",e.data):t.set("version",e.data),r.getPhoneSettings()})}return{init:i}}])}(angular); 9182 "use strict";!function(e){e.module("lmxApp").factory("authService",["$http","$injector","$q","$rootScope","configurationService","localStorageService","notification","routingService","userService","shareAuthLoginToRegistration","backendEnumsService",function(e,t,n,o,r,i,a,s,u,c,f){function l(e){L=e}function d(e){x.token=e}function g(){i.remove("isRegistrationToken","forceEmailStepHasCode","forceEmailStepSkipped","refreshToken","tokenForSocialRegistration","refreshTokenForSocialRegistration",j),x.isRegistrationToken=null}function h(){i.remove("isAnonymousToken","refreshToken"),x.isAnonymousToken=null}function k(){i.remove("authorizationToken"),i.remove("refreshToken"),g(),h(),x.token=null,x.permissions=null}function p(){return u.getUserInfo().then(function(e){return o.userInfo=e,r.common.requestUserAttributes?u.getAttributes().then(function(e){o.userInfo.attributes=e,o.$broadcast("loadUserInfo")}):void o.$broadcast("loadUserInfo")})}function m(e,t,n){return i.set("authorizationToken",e),i.set("refreshToken",t),d(e),n?null:p()}function T(e,t){m(e,t,!0),h(),x.isRegistrationToken=!0,i.set("isRegistrationToken",!0),i.set("refreshToken",t)}function v(e,t){m(e,t,!0),g(),x.isAnonymousToken=!0,i.set("isAnonymousToken",!0),i.set("refreshToken",t)}function A(){return null!==x.token&&!(x.isRegistrationToken||x.isAnonymousToken)}function R(e,t,n){var o={headers:{"Content-Type":"application/x-www-form-urlencoded"},data:"grant_type=password"};return(n||!n&&t)&&(o.data+="&password="+encodeURIComponent(e.password)),t?o.headers["X-Loymax-2FA"]=$:($=null,o.data+="&username="+e.login),o}function y(){i.get("version").major>2020&&(O.path=O.path.replace("publicapi","authorizationService"))}function S(i,l,d){function g(){return p.beginRegistration(i).then(function(e){k(),T(e.authResult.access_token,e.authResult.refresh_token),s.goTo("registration")})}function h(e){k(),T(e.data.access_token,e.data.refresh_token),s.goTo("registration")}k();var p=t.get("registrationService");p.setArea("login");var v=R(i,l,d);return y(),e.post(O.path,v.data,{headers:v.headers,area:L}).then(function(e){return u.getUser(e).then(function(t){return t.state?t.state===f.enums.userStatus.registered?(a.clearNotifications(L),k(),m(e.data.access_token,e.data.refresh_token).then(function(){o.$broadcast("login")})):n.when(h(e)):g()["catch"](function(t){return"RegistrationAlreadyCompleted"===t.data.data.state?(a.clearNotifications(L),k(),m(e.data.access_token,e.data.refresh_token).then(function(){o.$broadcast("login")})):n.reject(t)})})})["catch"](function(e){if("RegistrationRequired"!==e.data.error||!r.components.registration.forceRegistrationStartOnLoginAttempt){var t=e.headers("X-Loymax-2FA");return t&&($=t),n.reject(e)}return delete i.password,r.components.registration.acceptTenderOfferByCheck||r.components.registration.referralRegistration?(c.loginAuth=i.login,void s.goTo("registration")):(c.clearLogin(),g())})}function _(e){k(),u.removeUserData(),o.wasLogout=!0,e||s.redirectTo(r.components.authentication.redirectUrlOnLogout)}function w(){return x.token&&x.isRegistrationToken}function C(){var e;if(A())e=p();else{var t=n.defer();t.reject(),e=t.promise}return e}function b(){var t=r.host;return i.get("version").major>2020&&(t=t.replace("publicapi","authorizationService")),e.post(t+"v1.2/auth/SendConfirmationCode",null,{headers:{"X-Loymax-2FA":$},area:L})}function I(){var t=i.get("refreshToken");if(!t)return Promise.reject();y();var n={method:"POST",url:O.path,data:"grant_type=refresh_token&refresh_token=".concat(t,"&area=users"),headers:{"Content-Type":"application/x-www-form-urlencoded"}};return e(n).then(function(e){var t=e.data;m(t.access_token,t.refresh_token,!0)})}function U(){y();var t={method:"POST",url:O.path,data:"grant_type=anonymous",params:{client_id:r.oAuthClientId},headers:{"Content-Type":"application/x-www-form-urlencoded"}};return e(t).then(function(e){var t=e.data;v(t.access_token,t.refresh_token)})}var L,$,j="registrationIdentifier",x={token:i.get("isAnonymousToken")?i.get("authorizationToken"):null,isRegistrationToken:i.get("isRegistrationToken")||null,isAnonymousToken:i.get("isAnonymousToken")||null,permissions:null},z=i.get("authorizationToken");z&&d(z);var O={path:r.host+"token"};return{login:S,logout:_,authentication:x,loadAuth:C,setAuth:m,setToken:d,loggedIn:A,isRegistrationStarted:w,removeRegistrationToken:g,setArea:l,setRegistrationToken:T,setAnonymousToken:v,clearAuthData:k,registrationIdentifierStorageKey:j,resendCode:b,refreshTokenRequest:I,getOAuthClientTokens:U,tokenUrl:O}}])}(angular); 9181 "use strict";!function(e){e.module("lmxApp").factory("authService",["$http","$injector","$q","$rootScope","configurationService","localStorageService","notification","routingService","userService","shareAuthLoginToRegistration","backendEnumsService",function(e,t,n,o,r,i,a,s,u,c,f){function l(e){U=e}function d(e){x.token=e}function g(){i.remove("isRegistrationToken","forceEmailStepHasCode","forceEmailStepSkipped","refreshToken","tokenForSocialRegistration","refreshTokenForSocialRegistration",$),x.isRegistrationToken=null}function h(){i.remove("isAnonymousToken","refreshToken"),x.isAnonymousToken=null}function k(){i.remove("authorizationToken"),i.remove("refreshToken"),g(),h(),x.token=null,x.permissions=null}function p(){return u.getUserInfo().then(function(e){return o.userInfo=e,r.common.requestUserAttributes?u.getAttributes().then(function(e){o.userInfo.attributes=e,o.$broadcast("loadUserInfo")}):void o.$broadcast("loadUserInfo")})}function m(e,t,n){return i.set("authorizationToken",e),i.set("refreshToken",t),d(e),n?null:p()}function T(e,t){m(e,t,!0),h(),x.isRegistrationToken=!0,i.set("isRegistrationToken",!0),i.set("refreshToken",t)}function v(e,t){m(e,t,!0),g(),x.isAnonymousToken=!0,i.set("isAnonymousToken",!0),i.set("refreshToken",t)}function A(){return null!==x.token&&!(x.isRegistrationToken||x.isAnonymousToken)}function R(e,t,n){var o={headers:{"Content-Type":"application/x-www-form-urlencoded"},data:"grant_type=password"};return(n||!n&&t)&&(o.data+="&password="+encodeURIComponent(e.password)),t?o.headers["X-Loymax-2FA"]=L:(L=null,o.data+="&username="+e.login),o}function y(i,l,d){function g(){return p.beginRegistration(i).then(function(e){k(),T(e.authResult.access_token,e.authResult.refresh_token),s.goTo("registration")})}function h(e){k(),T(e.data.access_token,e.data.refresh_token),s.goTo("registration")}k();var p=t.get("registrationService");p.setArea("login");var v=R(i,l,d);return e.post(O.path,v.data,{headers:v.headers,area:U}).then(function(e){return u.getUser(e).then(function(t){return t.state?t.state===f.enums.userStatus.registered?(a.clearNotifications(U),k(),m(e.data.access_token,e.data.refresh_token).then(function(){o.$broadcast("login")})):n.when(h(e)):g()["catch"](function(t){return"RegistrationAlreadyCompleted"===t.data.data.state?(a.clearNotifications(U),k(),m(e.data.access_token,e.data.refresh_token).then(function(){o.$broadcast("login")})):n.reject(t)})})})["catch"](function(e){if("RegistrationRequired"!==e.data.error||!r.components.registration.forceRegistrationStartOnLoginAttempt){var t=e.headers("X-Loymax-2FA");return t&&(L=t),n.reject(e)}return delete i.password,r.components.registration.acceptTenderOfferByCheck||r.components.registration.referralRegistration?(c.loginAuth=i.login,void s.goTo("registration")):(c.clearLogin(),g())})}function S(e){k(),u.removeUserData(),o.wasLogout=!0,e||s.redirectTo(r.components.authentication.redirectUrlOnLogout)}function _(){return x.token&&x.isRegistrationToken}function w(){var e;if(A())e=p();else{var t=n.defer();t.reject(),e=t.promise}return e}function C(){var t=r.host.replace("publicapi","authorizationService");return e.post(t+"v1.2/auth/SendConfirmationCode",null,{headers:{"X-Loymax-2FA":L},area:U})}function b(){var t=i.get("refreshToken");if(!t)return Promise.reject();var n={method:"POST",url:O.path,data:"grant_type=refresh_token&refresh_token=".concat(t,"&area=users"),headers:{"Content-Type":"application/x-www-form-urlencoded"}};return e(n).then(function(e){var t=e.data;m(t.access_token,t.refresh_token,!0)})}function I(){var t={method:"POST",url:O.path,data:"grant_type=anonymous",params:{client_id:r.oAuthClientId},headers:{"Content-Type":"application/x-www-form-urlencoded"}};return e(t).then(function(e){var t=e.data;v(t.access_token,t.refresh_token)})}var U,L,$="registrationIdentifier",x={token:i.get("isAnonymousToken")?i.get("authorizationToken"):null,isRegistrationToken:i.get("isRegistrationToken")||null,isAnonymousToken:i.get("isAnonymousToken")||null,permissions:null},z=i.get("authorizationToken");z&&d(z);var O={path:(r.host+"token").replace("publicapi","authorizationService")};return{login:y,logout:S,authentication:x,loadAuth:w,setAuth:m,setToken:d,loggedIn:A,isRegistrationStarted:_,removeRegistrationToken:g,setArea:l,setRegistrationToken:T,setAnonymousToken:v,clearAuthData:k,registrationIdentifierStorageKey:$,resendCode:C,refreshTokenRequest:b,getOAuthClientTokens:I,tokenUrl:O}}])}(angular); 9183 9182 "use strict";!function(e){e.module("lmxApp").service("backendEnumsService",function(){this.enums={permissionValue:{authorized:"Authorized",partner:"Partner",siteAdmin:"SiteAdmin",admin:"Admin",activateCard:"ActivateCard",cardEmission:"CardEmission",cardPacking:"CardPacking",manageUserPermissions:"ManageUserPermissions",bankPayment:"BankPayment",offerRead:"OfferRead",offerEdit:"OfferEdit",offerManage:"OfferManage",answerManage:"AnswerManage",partnerCatalogEdit:"PartnerCatalogEdit",answersLoad:"AnswersLoad",mailingEdit:"MailingEdit",depositToCard:"DepositToCard",targetGroupEdit:"TargetGroupEdit",viewDepositsToCard:"ViewDepositsToCard",sendCardPassword:"SendCardPassword",blockAccount:"BlockAccount",getHistoryAudit:"GetHistoryAudit",getPurchaseHistory:"GetPurchaseHistory",getCards:"GetCards",getSmses:"GetSmses",deleteCard:"DeleteCard",recoverCard:"RecoverCard",attachCard:"AttachCard",getQuestions:"GetQuestions",startMailingTask:"StartMailingTask",cancelMailingTask:"CancelMailingTask",changePhone:"ChangePhone",browseHistoryAuditCodes:"BrowseHistoryAuditCodes",viewReport:"ViewReport",deviceEmulation:"DeviceEmulation",cardIssuance:"CardIssuance",replaceExternalCard:"ReplaceExternalCard",blockCard:"BlockCard",defaultOfferEdit:"DefaultOfferEdit",defaultOfferManage:"DefaultOfferManage",subscriptionsManage:"SubscriptionsManage",managerPortalAuthorized:"ManagerPortalAuthorized",partnerCatalogRead:"PartnerCatalogRead",targetGroupRead:"TargetGroupRead",partnerCatalogDecline:"PartnerCatalogDecline",mailingRead:"MailingRead",targetGroupCalculation:"TargetGroupCalculation",operationConfirmCancel:"OperationConfirmCancel",editReadonlyQuestions:"EditReadonlyQuestions",editReadonlyAnswers:"EditReadonlyAnswers",viewActiveOffersForCard:"ViewActiveOffersForCard",announcementSpacesEdit:"AnnouncementSpacesEdit",viewAnnouncements:"ViewAnnouncements",editAnnouncements:"EditAnnouncements",publishAnnouncements:"PublishAnnouncements",registration:"Registration",registerUsers:"RegisterUsers",limitRulesView:"LimitRulesView",limitRulesEdit:"LimitRulesEdit",couponEmissionEdit:"CouponEmissionEdit",couponEmissionView:"CouponEmissionView",oAuthApplication:"OAuthApplication",communicationOfferView:"CommunicationOfferView",communicationOfferEdit:"CommunicationOfferEdit",manageLifeTimeDefinitions:"ManageLifeTimeDefinitions",getEMails:"GetEMails",getPushes:"GetPushes",partnerView:"PartnerView",partnerEdit:"PartnerEdit",manageGateways:"ManageGateways",userAttributeView:"UserAttributeView",userAttributeEdit:"UserAttributeEdit",manageLocations:"ManageLocations",showcaseCategoryEdit:"ShowcaseCategoryEdit",showcaseCategoryView:"ShowcaseCategoryView",socialNetworkEdit:"SocialNetworkEdit",socialNetworkView:"SocialNetworkView",showcaseCouponTypeEdit:"ShowcaseCouponTypeEdit",showcaseCouponTypeView:"ShowcaseCouponTypeView",showcasePartnerEdit:"ShowcasePartnerEdit",showcasePartnerView:"ShowcasePartnerView",couponEdit:"CouponEdit",couponView:"CouponView",announcementSpacesView:"AnnouncementSpacesView",goodsGroupsView:"GoodsGroupsView",goodsGroupsEdit:"GoodsGroupsEdit",registrationCustomer:"RegistrationCustomer",showcaseCouponView:"ShowcaseCouponView",marketingCampaignsView:"MarketingCampaignsView",marketingCampaignsEdit:"MarketingCampaignsEdit",applicationUserAuthorize:"ApplicationUserAuthorize",applicationProcessing:"ApplicationProcessing",partnerPlanView:"PartnerPlanView",partnerPlanEdit:"PartnerPlanEdit",getPushableDevices:"GetPushableDevices",getSocialAccounts:"GetSocialAccounts",purchaseView:"PurchaseView",marketingCampaignPlanView:"MarketingCampaignPlanView",marketingCampaignPlanEdit:"MarketingCampaignPlanEdit"},templateFieldType:{string:"String",dateTime:"DateTime",radioButton:"RadioButton",radioButtonString:"RadioButtonString",checkbox:"Checkbox",int32:"Int32"},questionModelType:{"int":"Int","double":"Double","boolean":"Boolean",string:"String",date:"Date",select:"Select"},autoCompleteType:{city:"City",street:"Street",house:"House"},offerState:{active:"Active",commingSoon:"CommingSoon"},communicationOfferTypeEnum:{original:"Original",personalGoods:"PersonalGoods",personalOffer:"PersonalOffer"},referrerCodeType:{cardNumber:"CardNumber"},platformType:{ios:"Ios",android:"Android",windowsPhone:"WindowsPhone",unknown:"Unknown"},questionnaireItemModelType:{question:"Question",questionGroup:"QuestionGroup",questionFixedAnswer:"QuestionFixedAnswer",questionMultipleGroup:"QuestionMultipleGroup"},userStatus:{anonymous:"Anonymous",deleted:"Deleted",normal:"Normal",registered:"Registered"}}})}(angular); 9184 9183 "use strict";!function(o){o.module("lmxApp").service("backendTypesService",function(){this.enums={rewardThumbnail:{imageWithText:"Loymax.Mobile.Contract.Models.Offer.ImageWithText, Loymax.Mobile.Contract",oldNewPrice:"Loymax.Mobile.Contract.Models.Offer.OldNewPrice, Loymax.Mobile.Contract",twoLineText:"Loymax.Mobile.Contract.Models.Offer.TwoLineText, Loymax.Mobile.Contract"},supportMessages:{attachments:"Loymax.Support.Contract.Models.SupportMessageAttachmentCreateModel, Loymax.Support.Contract",comment:"Loymax.Support.Contract.Models.SupportMessageCommentCreateModel, Loymax.Support.Contract"},support:{attachment:"Loymax.Support.Contract.Models.SupportMessageAttachmentItem, Loymax.Support.Contract"},personalOfferDiscount:{amount:"Loymax.Mobile.Contract.Models.Offer.PersonalOffer.Discount.PersonalOfferAmountDiscountViewModel, Loymax.Mobile.Contract",amountPerMeasure:"Loymax.Mobile.Contract.Models.Offer.PersonalOffer.Discount.PersonalOfferAmountPerMeasureDiscountViewModel, Loymax.Mobile.Contract",amountPerUnit:"Loymax.Mobile.Contract.Models.Offer.PersonalOffer.Discount.PersonalOfferAmountPerUnitDiscountViewModel, Loymax.Mobile.Contract",percent:"Loymax.Mobile.Contract.Models.Offer.PersonalOffer.Discount.PersonalOfferPercentDiscountViewModel, Loymax.Mobile.Contract",price:"Loymax.Mobile.Contract.Models.Offer.PersonalOffer.Discount.PersonalOfferPriceDiscountViewModel, Loymax.Mobile.Contract",pricePerUnit:"Loymax.Mobile.Contract.Models.Offer.PersonalOffer.Discount.PersonalOfferPricePerUnitDiscountViewModel, Loymax.Mobile.Contract"},goodsCatalog:{node:"Loymax.Common.WebApi.Models.GoodsCatalog.GoodsCatalogNodeViewModel, Loymax.Common.WebApi",leaf:"Loymax.Common.WebApi.Models.GoodsCatalog.GoodsCatalogLeafViewModel, Loymax.Common.WebApi"}}})}(angular); … … 9213 9212 "use strict";!function(e){e.module("lmxApp").factory("globalService",["cardsService","configurationService","routingService","userService",function(e,t,n,r){function o(){return e.getCards()}function a(){return r.getUserInfo()}function c(){var e=n.getApplicationURL().replace(/\/?\?[^?]*$/,"");return e}function u(e){return n.getApplicationURLParts(e)}function i(e){n.goTo(e)}function g(){return r.getBalance()}function f(){return r.getUserStatus()}function s(){r.removeUserData()}function l(){n.goToDefaultPage()}return{changeLocation:i,getApplicationURLParts:u,getCards:o,getCurrentLocation:c,getUserBalance:g,getUserInfo:a,getUserStatus:f,removeUserData:s,goToDefaultPage:l}}])}(angular); 9214 9213 "use strict";!function(t){t.module("lmxApp").factory("guidService",function(){function t(){function t(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}var n=(t()+t()+"-"+t()+"-"+t()+"-"+t()+"-"+t()+t()+t()).toLowerCase();return n}function n(t){return/^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$/.test(t)}return{getGuid:t,validateGuid:n}})}(angular); 9215 "use strict";!function(t){t.module("lmxApp").factory("authInterceptor",["$q","$injector","configurationService","translateFilter",function(t,e, r,n){function o(){return e.get("authService")}function u(t){return l.filter(function(e){return t.includes(e)}).length>0}function i(t){var r=o(),u=e.get("routingService");t.data.error_description=n("authentication.alerts.authenticationNeeded"),r.clearAuthData(),u.goToLogin(!0)}function a(e){return f=null,i(e),t.reject(e)}function c(t){var e=o();if(t.headers=t.headers||{},!t.fromRefresh&&t.headers.Authorization)return t;if(u(t.url))return t;var n=e.authentication.token;return n?(t.headers.Authorization="Bearer "+n,t):!r.oAuthClientId||e.loggedIn()||!t.url.startsWith(r.host)&&t.url!==e.tokenUrl.path||t.url===e.tokenUrl.path&&void 0!==t.params?t:(s||(s=e.getOAuthClientTokens()),s.then(function(){return s=null,t.headers.Authorization="Bearer "+e.authentication.token,t}))}function h(n){var u=o();return 401===n.status?n.config.fromRefresh?a(n):(f||(f=r.oAuthClientId&&!u.loggedIn()?u.getOAuthClientTokens():u.refreshTokenRequest()),f.then(function(){f=null;var t=e.get("$http");return n.config.fromRefresh=!0,t(n.config)})["catch"](function(){return a(n)})):t.reject(n)}var l=["/Version","/PhoneSettings","/Files"],s=null,f=null,g={};return g.request=c,g.responseError=h,g}])}(angular);9214 "use strict";!function(t){t.module("lmxApp").factory("authInterceptor",["$q","$injector","configurationService","translateFilter",function(t,e,n,r){function o(){return e.get("authService")}function u(t){return l.filter(function(e){return t.includes(e)}).length>0}function i(t){var n=o(),u=e.get("routingService");t.data.error_description=r("authentication.alerts.authenticationNeeded"),n.clearAuthData(),u.goToLogin(!0)}function a(e){return f=null,i(e),t.reject(e)}function c(t){var e=o();if(t.headers=t.headers||{},!t.fromRefresh&&t.headers.Authorization)return t;if(u(t.url))return t;var r=e.authentication.token;return r?(t.headers.Authorization="Bearer "+r,t):!n.oAuthClientId||e.loggedIn()||!t.url.startsWith(n.host)&&t.url!==e.tokenUrl.path?t:(s||(s=e.getOAuthClientTokens()),s.then(function(){return s=null,t.headers.Authorization="Bearer "+e.authentication.token,t}))}function h(r){var u=o();return 401===r.status?r.config.fromRefresh?a(r):(f||(f=n.oAuthClientId&&!u.loggedIn()?u.getOAuthClientTokens():u.refreshTokenRequest()),f.then(function(){f=null;var t=e.get("$http");return r.config.fromRefresh=!0,t(r.config)})["catch"](function(){return a(r)})):t.reject(r)}var l=["/Version","/PhoneSettings","/Files"],s=null,f=null,g={};return g.request=c,g.responseError=h,g}])}(angular); 9216 9215 "use strict";!function(e){e.module("lmxApp").factory("currentRequestsInterceptor",["$q","$rootScope","$timeout",function(n,r,t){function o(){return 0===c}function u(){c--,o()&&t(function(){o()&&r.$broadcast("requestsCompleted")})}var c;return{request:function(t){return e.isUndefined(c)&&(r.$broadcast("showGlobalLoader"),c=0),c++,t||n.when(t)},response:function(e){return u(),e||n.when(e)},responseError:function(e){return u(),n.reject(e)}}}])}(angular); 9217 9216 "use strict";function _typeof(e){"@babel/helpers - typeof";return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}!function(e){e.module("lmxApp").config(["$httpProvider",function(e){function t(e){if("object"!==_typeof(e))return e;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o];"string"==typeof n?n.match(r)&&(e[o]=new Date(n)):t(n)}}var r=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z$/;e.defaults.transformResponse.push(function(e){return"null"===e&&(e=null),e}),e.defaults.transformResponse.push(function(e){return t(e),e}),e.interceptors.push("reCaptchaRequestInterceptor"),e.interceptors.push("localeInterceptor"),e.interceptors.push("paginationInterceptor"),e.interceptors.push("notificationInterceptor"),e.interceptors.push("templateRequestInterceptor"),e.interceptors.push("authInterceptor"),e.interceptors.push("responseStateInterceptor"),e.interceptors.push("currentRequestsInterceptor"),e.defaults.headers.get||(e.defaults.headers.get={}),e.defaults.headers.get["If-Modified-Since"]="Mon, 26 Jul 1997 05:00:00 GMT",e.defaults.headers.get["Cache-Control"]="no-cache",e.defaults.headers.get.Pragma="no-cache"}])}(angular); … … 9228 9227 "use strict";!function(r){r.module("lmxApp").service("translatePluralService",function(){var r=function(r){r<0&&(r=-r);var n;if(parseInt(r)!==r)n="few";else{var e=String(r),t=Number(e.substr(-1)),u=e.length>1?Number(e.substr(-2,1)):null;n=1===t&&1!==u?"one":(r<=4||r>=22)&&t>=2&&t<=4&&1!==u?"few":"many"}return n};return{getTranslationPath:function(n,e){return e+"_plural."+r(n)},getTranslationKey:r}})}(angular); 9229 9228 "use strict";!function(r){r.module("lmxApp").factory("$translateStaticFilesLoader",["$http","$log","$q","YAML","FALLBACK_YAML_TRANSLATIONS",function(i,e,f,t,n){return function(s){function a(){e.info("Используется встроеная таблица переводов");var r;try{return r=t.parse(n)}catch(i){return e.error("Ошибка парсинга Fallback-локали"),null}}if(!(s&&(r.isArray(s.files)||r.isString(s.prefix)&&r.isString(s.suffix))))throw new Error("Couldn't load static files, no files and prefix or suffix specified!");s.files||(s.files=[{prefix:s.prefix,suffix:s.suffix}]);var u=function(n){if(!n||!r.isString(n.prefix)||!r.isString(n.suffix)){var u="Ошибка загрузки локали:";throw n?r.isString(n.prefix)?r.isString(n.suffix)||(u+=" суффикс не распознан"):u+=" префикс не распознан":u+=" отсутствует файл",new Error(u)}var o=[n.prefix,s.key,n.suffix].join("");return r.isObject(s.fileMap)&&s.fileMap[o]&&(o=s.fileMap[o]),i(r.extend({url:o,method:"GET"},s.$http)).then(function(r){if(o.match(/\.ya?ml$/)){var i;try{return i=t.parse(r.data)}catch(n){return e.error("Ошибка парсинга "+o+". Проверьте правильность формата."),a()||f.reject(s.key)}}return r.data},function(){return e.info("Файл локали не найден ("+o+")"),a()||f.reject(s.key)})};return u({prefix:s.files[0].prefix,key:s.key,suffix:s.files[0].suffix})}}])}(angular); 9230 "use strict";!function(t){t.module("lmxApp").factory("locationService",["$http","configurationService", "localStorageService",function(e,n,i){function r(){return i.get("version").major>=2022}function o(t){return t.then(function(t){return t.data})}function u(e,n,i){return{params:t.extend({startWith:e||null,count:n||10},i)}}function s(t){return o(e.get(p+"Regions",{params:t}))}function c(t,n){return o(e.get(p+"Region/"+n+"/Cities",{params:t}))}function a(t,n){return o(e.get(p+"CitiesStartWith",u(t,n)))}function g(t,n){return o(e.get(p+"Cities",u(t,n)))}function f(t,n,i){return o(e.get(p+"Streets",u(t,i,{city:n})))}function l(t,n,i){return o(e.get(p+"Houses",u(t,i,{street:n})))}var m=r()?"v1.2/Locations/":"api/Location/",p=n.host+m;return{getRegions:s,getCitiesByRegion:c,getCities:g,getCitiesNames:a,getStreets:f,getHouses:l}}])}(angular);9229 "use strict";!function(t){t.module("lmxApp").factory("locationService",["$http","configurationService",function(e,n){function i(t){return t.then(function(t){return t.data})}function r(e,n,i){return{params:t.extend({startWith:e||null,count:n||10},i)}}function u(t){return i(e.get(f+"Regions",{params:t}))}function o(t,n){return i(e.get(f+"Region/"+n+"/Cities",{params:t}))}function s(t,n){return i(e.get(f+"CitiesStartWith",r(t,n)))}function c(t,n){return i(e.get(f+"Cities",r(t,n)))}function a(t,n,u){return i(e.get(f+"Streets",r(t,u,{city:n})))}function g(t,n,u){return i(e.get(f+"Houses",r(t,u,{street:n})))}var f=n.host+"v1.2/Locations/";return{getRegions:u,getCitiesByRegion:o,getCities:c,getCitiesNames:s,getStreets:a,getHouses:g}}])}(angular); 9231 9230 "use strict";!function(e){e.module("lmxApp").factory("mapService",["$q","$rootScope","$window","configurationService","openHoursService","scriptLoadService","toArrayFilter","markdown",function(t,o,n,a,l,s,c,r){var i=function(){function i(e){C=e}function u(e){var o=e.properties.get("schedule");return o?e.properties.get("scheduleProcessed")?l.getCurrentStatus(o).then(function(t){var o='<p class="lmx-map-balloon-schedule '+(t.isOpen?"_open":"_close")+'">'+t.text+"</p>",n=e.properties.get("balloonContent");n=n.replace(/(<div id="lmx-merchant-status">)()(<\/div>)/,"$1"+o+"$3"),e.properties.set("balloonContent",n)}):l.getOpenHours(o).then(function(t){e.properties.set("scheduleProcessed",!0);var o="<ul>"+t.openHours.map(function(e){return"<li>"+e+"</li>"}).join("")+"</ul>",n='<p class="lmx-map-balloon-schedule '+(t.currentStatus.isOpen?"_open":"_close")+'">'+t.currentStatus.text+"</p>",a=e.properties.get("balloonContent");a=a.replace(/(<div id="lmx-merchant-schedule">)()(<\/div>)/,"$1"+o+"$3").replace(/(<div id="lmx-merchant-status">)()(<\/div>)/,"$1"+n+"$3"),e.properties.set("balloonContent",a)}):t.when()}function m(e,t){e.iconLayout="default#image",e.iconImageHref=t,e.iconImageSize=$.iconImageSize,e.iconImageOffset=$.iconImageOffset}function p(e){f.removeAll(),h.geoObjects.removeAll(),y={},e.forEach(function(e,t){if(e.location){var n="",a={hideIconOnBalloonOpen:!0};$.useCustomBalloon?a.balloonLayout=x:(n='<div class="lmx-map-balloon-wrapper">',e.imgUrl&&(n+='<div class="lmx-map-balloon-brand-logo-container"><img src="'+e.imgUrl+'" alt=""></div>'),e.markerImgUrl?m(a,e.markerImgUrl):$.useCustomIcon?m(a,$.iconImageHref):a.preset=$.preset,n+='<h2 class="lmx-map-balloon-merchant-title">'+e.title+'</h2><p class="lmx-map-balloon-merchant-location">'+e.location.description+"</p>",e.scheduleModel&&(n+='<div class="lmx-map-balloon-merchant-schedule"><p><strong>'.concat(C["merchants.schedule"],"</strong></p>")+'<div id="lmx-merchant-schedule"></div><div id="lmx-merchant-status"></div></div>'),e.contacts&&(n+="<p>".concat(C["contacts.title"],": ").concat(e.contacts,"</p>")),e.description&&(n+='<div class="lmx-map-balloon-merchant-description">',n+=r.makeHtml(e.description),n+="</div>"),n+="</div>");var l=new ymaps.Placemark([e.location.latitude,e.location.longitude],{id:e.id,name:e.title,location:e.location.description,schedule:e.scheduleModel,balloonContent:n},a);l.events.add("click",function(e){var t="isForcedLmxEvent";if(!e.get(t)){var o=e.get("target");o.properties.get("schedule")&&(e.preventDefault(),e.stopPropagation(),u(o).then(function(){var e={};e[t]=!0,o.events.fire("click",e)}))}}),l.events.add("balloonopen",function(e){o.$broadcast("yMapsBalloonOpened",e.get("target").properties.getAll())}),l.events.add("balloonclose",function(e){o.$broadcast("yMapsBalloonClosed",e.get("target").properties.getAll())}),y[t]=l}}),f.add(c(y,!1)),h.geoObjects.add(f),h.setBounds(f.getBounds(),{checkZoomRange:!0,duration:300,preciseZoom:!0,zoomMargin:1})}function d(e,t){b='<div class="lmx-balloon"><h2 class="lmx-title">{{ properties.name }}</h2><img class="lmx-close" src="'+$.balloonCloseImage+'" alt="" /></div>',ymaps.ready(function(){o.$apply(function(){o.$broadcast("ymapsReady")}),h=new ymaps.Map(e,w),$.useCustomBalloon&&(x=ymaps.templateLayoutFactory.createClass(b,{build:function(){x.superclass.build.call(this);var e=this.getParentElement().querySelector(".lmx-balloon");e.style.marginTop="-"+e.offsetHeight+"px",e.querySelector(".lmx-close").addEventListener("click",this.onCloseClick.bind(this))},clear:function(){x.superclass.clear.call(this)},onCloseClick:function(){this.events.fire("userclose")}})),L.customClusterIconContentLayout&&(L.clusterIconContentLayout=ymaps.templateLayoutFactory.createClass(L.customClusterIconContentLayout),delete L.customClusterIconContentLayout),f=new ymaps.Clusterer(L),p(t),n.lmxMap=h;var a=new CustomEvent("lmxMapReady",{detail:"Loymax map object in window.lmxMap"});document.dispatchEvent(a)})}function g(t,o){var l=a.common.map||{};e.extend(S,l.general),e.extend(w,l.state),e.extend($,l.marker),e.extend(L,l.cluster),n.ymaps?d(t,o):k.load("https://api-maps.yandex.ru/"+S.version+"/?lang=ru_RU&load="+S.load,function(){d(t,o)})}function v(e){var t=y[e];t&&u(t).then(function(){var e=f.getObjectState(t);e.isClustered?h.setCenter(t.geometry.getCoordinates(),I+1,{checkZoomRange:!0}).then(function(){t.balloon.open()}):h.panTo(t.geometry.getCoordinates(),{flying:!1}).then(function(){t.balloon.open()})})}var f,h,y,b,x,C,I=14,k=new s,S={version:"2.1.55",load:"package.map,package.clusters"},w={center:[56.49771,84.97437],zoom:13,controls:[]},$={preset:"islands#blueDotIcon",useCustomIcon:!1,iconImageHref:"",iconImageSize:[45,45],iconImageOffset:[-20,-47],useCustomBalloon:!1},L={preset:"islands#invertedBlueClusterIcons",maxZoom:I};return{setYmaps:g,showBalloon:v,updateData:p,setTranslates:i}};return i}])}(angular); 9232 9231 "use strict";!function(e){e.module("markdown").config(["markdownProvider",function(e){e.config({omitExtraWLInCodeBlocks:!0,noHeaderId:!0,parseImgDimensions:!0,simplifiedAutoLink:!1,literalMidWordUnderscores:!0,strikethrough:!0,tables:!0,ghCodeBlocks:!0,tasklists:!0,smoothLivePreview:!0,prefixHeaderId:!1,disableForced4SpacesIndentedSublists:!1,ghCompatibleHeaderId:!0,smartIndentationFix:!1,simpleLineBreaks:!0})}])}(angular); … … 9247 9246 "use strict";!function(t){t.module("lmxApp").factory("stateService",function(){function t(t,e){n[t]=e}function e(t){return n[t]}var n={};return{setState:t,getState:e}})}(angular); 9248 9247 "use strict";!function(e){e.module("templateCache",[])}(angular); 9249 "use strict";!function(t){t.module("lmxApp").service("userService",["$http","$q","$rootScope","configurationService","backendEnumsService","localStorageService",function( e,n,r,a,u,o){function i(){var t={userInfo:c(),userBalance:f()};return n.all(t).then(function(t){var e=t.userInfo;return e.balanceAccounts=t.userBalance,e.baseBalanceAccount=e.balanceAccounts[0],e})}function c(t){if(b)return n.when(b);var r={};return t&&(r.headers={Authorization:t.data.token_type+" "+t.data.access_token}),e.get(B,r).then(function(t){return t.data.state&&t.data.state===u.enums.userStatus.registered&&(b=t.data),t.data})}function s(){b=null}function f(){return e.get(A+"Balance").then(function(t){return t.data})}function l(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{state:null};return e.get(B+"DetailedBalance",{params:{state:t.state}}).then(function(t){return t.data})}function p(t,n,r,a,u,i,c){var s=[];a&&s.push("BonusActivation"),u&&s.push("BonusExpiration");var f={"filter.fromDate":n?n.toUTCDate(!0):null,"filter.toDate":r?r.toUTCDate(!0):null,"filter.changeTypes":s};return 2021!==o.get("version").major&&2022!==o.get("version").major||1!==o.get("version").minor?(f["filter.from"]=i,f["filter.count"]=c):(f.from=i,f.count=c),e.get(B+"DetailedBalance/"+"".concat(t,"/Operations"),{params:f}).then(function(t){return t.data})}function g(){return e.get(B+"Attributes").then(function(e){var n={};return t.forEach(e.data,function(t){n[t.info.logicalName]=t}),n})}function d(t){return e.get(B+"Subscriptions",{params:{subscriptionExternalIds:t}}).then(function(t){return t.data})}function h(){return e.post(a.host+"/v1.2/User/Subscriptions/Reject",{}).then(function(t){return t.data})}function v(){return e.post(a.host+"/v1.2/User/Subscriptions/Confirm",{}).then(function(t){return t.data})}function m(t){return e.post(B+"Subscriptions",t).then(function(t){return t})}function S(){return e.get(B+"Status").then(function(t){return t.data})}var b,B=a.host+"api/User/",A=a.host+"v1.1/User/";return{getUserInfo:i,getDetailedBalance:l,getCurrencyDetailedBalance:p,getBalance:f,getAttributes:g,getSubscriptions:d,setSubscriptions:m,getUserStatus:S,getUser:c,removeUserData:s,rejectAllSubscriptions:h,confirmAllSubscription:v}}])}(angular);9248 "use strict";!function(t){t.module("lmxApp").service("userService",["$http","$q","$rootScope","configurationService","backendEnumsService","localStorageService",function(n,e,r,a,u,o){function i(){var t={userInfo:c(),userBalance:l()};return e.all(t).then(function(t){var n=t.userInfo;return n.balanceAccounts=t.userBalance,n.baseBalanceAccount=n.balanceAccounts[0],n})}function c(t){if(m)return e.when(m);var r={};return t&&(r.headers={Authorization:t.data.token_type+" "+t.data.access_token}),n.get(B,r).then(function(t){return t.data.state&&t.data.state===u.enums.userStatus.registered&&(m=t.data),t.data})}function s(){m=null}function l(){return n.get(A+"Balance").then(function(t){return t.data})}function f(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{state:null};return n.get(B+"DetailedBalance",{params:{state:t.state}}).then(function(t){return t.data})}function p(t,e,r,a,u,o,i){var c=[];a&&c.push("BonusActivation"),u&&c.push("BonusExpiration");var s={"filter.fromDate":e?e.toUTCDate(!0):null,"filter.toDate":r?r.toUTCDate(!0):null,"filter.changeTypes":c,"filter.from":o,"filter.count":i};return n.get(B+"DetailedBalance/"+"".concat(t,"/Operations"),{params:s}).then(function(t){return t.data})}function d(){return n.get(B+"Attributes").then(function(n){var e={};return t.forEach(n.data,function(t){e[t.info.logicalName]=t}),e})}function h(t){return n.get(B+"Subscriptions",{params:{subscriptionExternalIds:t}}).then(function(t){return t.data})}function g(){return n.post(a.host+"/v1.2/User/Subscriptions/Reject",{}).then(function(t){return t.data})}function v(){return n.post(a.host+"/v1.2/User/Subscriptions/Confirm",{}).then(function(t){return t.data})}function S(t){return n.post(B+"Subscriptions",t).then(function(t){return t})}function b(){return n.get(B+"Status").then(function(t){return t.data})}var m,B=a.host+"api/User/",A=a.host+"v1.1/User/";return{getUserInfo:i,getDetailedBalance:f,getCurrencyDetailedBalance:p,getBalance:l,getAttributes:d,getSubscriptions:h,setSubscriptions:S,getUserStatus:b,getUser:c,removeUserData:s,rejectAllSubscriptions:g,confirmAllSubscription:v}}])}(angular); 9250 9249 angular.module("templateCache").run(["$templateCache",function(n){n.put("app/directives/announcement/modal/announcementModal.html",'<div>\r\n <div class="modal-header">\r\n <div class="lmx-modal-closer" ng-click="close()"></div>\r\n <h2>{{:: announcement.attributes.OfferTitle.value}}</h2>\r\n </div>\r\n\r\n <div class="modal-content-wrapper">\r\n <div class="modal-body">\r\n <div class="lmx-image">\r\n <img ng-src="{{:: getAnnouncementImagePath(announcement.attributes.OfferImage.value)}}" fallback-image="" fallback-title="{{\'imageNotFound\' | translate}}" alt="">\r\n </div>\r\n <div class="lmx-description">{{:: announcement.attributes.OfferDescription.value}}</div>\r\n </div>\r\n <div class="modal-footer lmx-btn-container">\r\n <button type="button" ng-click="close()">{{\'buttons.close\' | translate}}</button>\r\n </div>\r\n </div>\r\n</div>\r\n'),n.put("app/directives/announcement/modal/authAnnouncementModal.html",'<div>\r\n <div class="lmx-modal-closer" ng-click="close()"></div>\r\n <div loader="inProgress">\r\n <div ng-if="!inProgress" class="modal-content-wrapper">\r\n <div class="modal-body">\r\n <a href="#/offers">\r\n <div class="lmx-image">\r\n <img ng-src="{{:: getAnnouncementImagePath(announcement.attributesDictionary.OfferImage.value)}}" fallback-image="" fallback-title="{{\'imageNotFound\' | translate}}" alt="" ng-click="openOffer()">\r\n </div>\r\n </a>\r\n </div>\r\n <div class="modal-footer lmx-btn-container">\r\n <button type="button" ng-click="close()">{{\'buttons.close\' | translate}}</button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n'),n.put("app/directives/announcement/offerSpace.html",'<div class="lmx-container lmx-announcements">\r\n <section>\r\n <h2>{{\'announcement.title\' | translate}}</h2>\r\n <div loader="isProgress" class="lmx-announcements-list">\r\n <article ng-repeat="announcement in announcements track by announcement.id" ng-click="openAnnouncementModal(announcement)" class="lmx-announcement lmx-card">\r\n <div class="lmx-card-image">\r\n <img ng-src="{{:: getAnnouncementImagePath(announcement.attributes.OfferImage.value)}}" fallback-image="" fallback-title="{{\'imageNotFound\' | translate}}" alt="">\r\n </div>\r\n <div class="lmx-card-content">\r\n <div class="lmx-card-title" title="{{:: announcement.attributes.OfferTitle.value}}">\r\n {{:: announcement.attributes.OfferTitle.value}}\r\n </div>\r\n <div class="lmx-card-description">\r\n {{:: announcement.attributes.OfferDescription.value}}\r\n </div>\r\n </div>\r\n </article>\r\n </div>\r\n </section>\r\n</div>\r\n'),n.put("app/directives/anonymousFeedback/anonymousFeedback.html",'<div class="lmx-container lmx-anonymous-feedback">\r\n <section>\r\n <h2>{{\'anonymousFeedback.title\' | translate}}:</h2>\r\n <div class="lmx-hint">\r\n <p ng-bind-html="\'anonymousFeedback.hint\' | translate"></p>\r\n </div>\r\n <form novalidate="" name="anonFeedbackForm" ng-submit="anonFeedbackForm.$valid && sendMail(anonFeedbackForm)">\r\n <form-group label-text="{{\'anonymousFeedback.theme\' | translate}}">\r\n <input type="text" id="lmx-subject" ng-model="messageModel.subject" name="subject" required="">\r\n </form-group>\r\n <form-group label-text="{{\'anonymousFeedback.message\' | translate}}">\r\n <textarea id="lmx-msg-textarea" ng-model="messageModel.message" name="msg-textarea" ng-trim="false" required="">\r\n </textarea>\r\n </form-group>\r\n <div class="lmx-btn-container">\r\n <button type="submit" class="lmx-right">{{\'buttons.send\' | translate}}</button>\r\n </div>\r\n </form>\r\n </section>\r\n</div>\r\n'),n.put("app/directives/authentication/authentication.html",'<div class="lmx-container lmx-auth">\r\n <h2>{{\'authentication.title\' | translate}}</h2>\r\n <lmx-notifications area="login"></lmx-notifications>\r\n\r\n <identifiers ng-if=":: identifiers.arr !== undefined" ng-hide="cvcRequired" identifiers="identifiers.arr" ng-model="model.identifier" ng-change="resetFormModels()"></identifiers>\r\n\r\n <form novalidate="" method="post" name="loginForm" ng-submit="loginForm.$valid && login()" id="lmx-loginForm">\r\n <div ng-if="cvcRequired">\r\n <p>{{cvcMessage}}</p>\r\n <form-group label-text="{{\'authentication.code\' | translate}}">\r\n <input type="text" ng-model="model.cvcData.password" id="lmx-cvc" name="cvc" ng-disabled="authInProgress" required="">\r\n </form-group>\r\n <div>\r\n <a id="lmx-confirm-code-repeated" ng-click="!resendTimer.time && resendCode()" ng-hide="authInProgress" href="">\r\n {{\'resetPassword.resendCode\' | translate}}\r\n <span ng-if="resendTimer.time">({{resendTimer.time}})</span>\r\n </a>\r\n </div>\r\n </div>\r\n <div ng-if="!cvcRequired">\r\n <form-group ng-if="model.identifier === IDENTIFIERS.phone" label-text="{{\'identifiers.\' + model.identifier | translate}}">\r\n <phone-mask></phone-mask>\r\n <phone-input ng-model="model.loginData.login" id="lmx-login_{{model.identifier}}" name="login" ng-disabled="authInProgress" required="" autofocus=""></phone-input>\r\n </form-group>\r\n <form-group ng-if="model.identifier === IDENTIFIERS.email" label-text="{{\'identifiers.\' + model.identifier | translate}}">\r\n <input type="email" ng-model="model.loginData.login" id="lmx-login_{{model.identifier}}" name="login" placeholder="[email protected]" required="">\r\n </form-group>\r\n <form-group ng-if="model.identifier === IDENTIFIERS.card" label-text="{{\'identifiers.\' + model.identifier | translate}}">\r\n <input type="text" ng-model="model.loginData.login" id="lmx-login_{{model.identifier}}" name="login" ng-disabled="authInProgress" placeholder="0000 0000 0000 0000" mask="9999 9999 9999 9999" clean="true" validate="false" restrict="reject" required="">\r\n </form-group>\r\n <form-group label-text="{{\'authentication.password\' | translate}}" ng-if="authWithPassword">\r\n <input type="password" ng-model="model.loginData.password" id="lmx-password" name="password" ng-disabled="authInProgress" required="">\r\n </form-group>\r\n <div ng-if="!cvcRequired" class="lmx-auth-links lmx-row" ng-class="{\'lmx-invisible\': authInProgress}">\r\n <div>\r\n <a ng-click="resetPassword()" href="">{{\'authentication.forgotPassword\' | translate}}</a>\r\n </div>\r\n <div>\r\n <a href="{{:: registrationUrl}}">{{\'authentication.register\' | translate}}</a>\r\n </div>\r\n </div>\r\n </div>\r\n <div class="lmx-btn-container">\r\n <button type="reset" ng-hide="authInProgress" ng-if="cvcRequired" ng-click="cancelCvcConfirmation()">\r\n {{\'buttons.cancel\' | translate}}\r\n </button>\r\n <button type="submit" ng-hide="authInProgress">\r\n {{\'authentication.login\' | translate}}\r\n </button>\r\n\r\n <inline-loader line="">authInProgress</inline-loader>\r\n </div>\r\n <lmx-social ng-if="!cvcRequired" ng-hide="authInProgress"></lmx-social>\r\n </form>\r\n</div>\r\n'),n.put("app/directives/balance/balance.html",'<div class="lmx-container lmx-balance">\r\n <section>\r\n <h2>{{\'balance.title\' | translate}}</h2>\r\n <div loader="inProgress">\r\n <div ng-if="!inProgress" ng-switch="!!balanceAccounts.length">\r\n <div ng-switch-when="true" class="lmx-balance-block">\r\n <lmx-tabs list="balanceAccounts" ng-model="selectedAccount" view-field="title">\r\n </lmx-tabs>\r\n <balance-info ng-if="selectedAccount.currency"></balance-info>\r\n <div class="lmx-balance-accordion-wrap">\r\n <uib-accordion class="lmx-balance-accordion">\r\n <uib-accordion-group ng-repeat="selectedAccount in balanceAccounts" class="lmx-balance-accordion-group" ng-click="selectAccordion(selectedAccount)">\r\n <uib-accordion-heading class="lmx-balance-header">\r\n <span>{{::selectedAccount.title}}</span>\r\n <span class="glyphicon glyphicon-chevron-down"></span>\r\n <span class="glyphicon glyphicon-chevron-up"></span>\r\n </uib-accordion-heading>\r\n <balance-info ng-if="selectedAccount.currency.id === selectedCurrency.id"></balance-info>\r\n </uib-accordion-group>\r\n </uib-accordion>\r\n </div>\r\n </div>\r\n <div ng-switch-when="false" class="lmx-no-balance-block">\r\n {{\'balance.infoNotFound\' | translate}}\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n</div>\r\n'),n.put("app/directives/balance/balanceInfo.html",'<div class="lmx-balance-tab-content">\r\n <h3>{{selectedAccount.currency.name}}</h3>\r\n <div class="lmx-account-description">{{selectedAccount.currency.description}}</div>\r\n <div class="lmx-account-details">\r\n <div>\r\n <b>{{\'balance.amount\' | translate}}</b>: {{selectedAccount.amount | number: 2}}\r\n {{selectedAccount.currency.nameCases[getCurrencyNameCase(selectedAccount.amount)]}}\r\n </div>\r\n <div>\r\n <b>{{\'balance.notActivatedAmount\' | translate}}</b>:\r\n {{selectedAccount.notActivatedAmount | number: 2}}\r\n {{selectedAccount.currency.nameCases[getCurrencyNameCase(selectedAccount.notActivatedAmount)]}}\r\n </div>\r\n\r\n <div ng-if="selectedAccount.lifeTimesByTime.length">\r\n <b>\r\n {{\'balance.lastWeekChanges\' | translate}}:\r\n </b>\r\n <div class="lmx-lifeTime-amount">\r\n {{ \'history.gift.rewardData\' | translate }} - {{ weekRewardAmount |\r\n number:2 }}\r\n {{selectedAccount.currency.nameCases[getCurrencyNameCase(weekRewardAmount)]}}\r\n <br>\r\n {{ \'history.gift.withdrawData\' | translate }} - {{ (weekWithdrawAmount *\r\n -1) | number:2 }}\r\n {{selectedAccount.currency.nameCases[getCurrencyNameCase(weekWithdrawAmount)]}}\r\n </div>\r\n </div>\r\n\r\n <div ng-if="selectedAccount.lifeTimesByPeriod.length">\r\n <div ng-repeat="lifeTime in selectedAccount.lifeTimesByPeriod track by $index">\r\n <b>\r\n {{ (\'balance.lifeTimePeriod.\' + (lifeTime.period | lowerCamelCase)) |\r\n translate}}:\r\n </b>\r\n <div class="lmx-lifeTime-amount">\r\n {{ \'history.gift.rewardData\' | translate }} - {{\r\n lifeTime.activationAmount | number: 2}}\r\n {{selectedAccount.currency.nameCases[getCurrencyNameCase(lifeTime.activationAmount)]}}\r\n <br>\r\n {{ \'history.gift.withdrawData\' | translate }} - {{\r\n (lifeTime.expirationAmount * -1) | number: 2 }} {{\r\n selectedAccount.currency.nameCases[getCurrencyNameCase(lifeTime.expirationAmount)]\r\n }}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class="lmx-currency-info" loader="inProgress">\r\n <h3>{{ \'history.balanceChanges\' | translate }}</h3>\r\n <div class="date-filters">\r\n <div class="date-filter lmx-since-date-filter">\r\n <span class="lmx-pretext">{{\'history.fromDate\' | translate}}</span>\r\n <date-picker ng-model="fromDate" ng-change="getCurrencyInfo()"> </date-picker>\r\n </div>\r\n \r\n <div class="date-filter lmx-to-date-filter">\r\n <span class="lmx-pretext">{{\'history.toDate\' | translate}}</span>\r\n <date-picker ng-model="toDate" ng-change="getCurrencyInfo()"> </date-picker>\r\n </div>\r\n </div>\r\n <input type="checkbox" id="lmx-activation" name="activation" ng-model="activation" ng-click="getCurrencyInfo()">\r\n <label for="lmx-activation">\r\n {{:: \'history.gift.rewardData\' | translate }}\r\n </label>\r\n\r\n <input type="checkbox" id="lmx-expiration" name="expiration" ng-model="expiration" ng-click="getCurrencyInfo()">\r\n <label for="lmx-expiration">\r\n {{:: \'history.gift.withdrawData\' | translate }}\r\n </label>\r\n\r\n <uib-pagination ng-show="operations[selectedAccount.currency.id].$allCount > onPage" total-items="operations[selectedAccount.currency.id].$allCount" ng-model="currentPage" max-size="4" items-per-page="{{:: onPage}}" class="lmx-pagination" boundary-links="true" boundary-link-numbers="true" direction-links="false" force-ellipses="true" first-text="<<" last-text=">>" ng-change="getCurrencyInfo()"></uib-pagination>\r\n\r\n <div class="lmx-history-not-found" ng-if="!operations[selectedAccount.currency.id].$allCount && !inProgress">\r\n {{ \'history.notFound\' | translate}}\r\n </div>\r\n\r\n <table ng-if="operations[selectedAccount.currency.id].$allCount && !inProgress">\r\n <tr>\r\n <th>{{ \'history.operations\' | translate}}</th>\r\n <th>{{ \'balanceChanges.amount\' | translate }}</th>\r\n <th>{{ \'balance.date\' | translate }}</th>\r\n </tr>\r\n <tr ng-repeat="operation in operations[selectedAccount.currency.id] track by $index">\r\n <td>\r\n {{ (operation.amount < 0 ? \'history.gift.withdrawData\' :\r\n \'history.gift.rewardData\' ) | translate }}\r\n </td>\r\n <td ng-class="{\'lmx-activation\': operation.amount > 0,\'lmx-expiration\': operation.amount < 0}">\r\n {{ operation.amount }} {{\r\n selectedAccount.currency.nameCases[getCurrencyNameCase(operation.amount)]}}\r\n </td>\r\n <td>\r\n {{ operation.date | toUTC | shortDateTime }}\r\n </td>\r\n </tr>\r\n </table>\r\n </div>\r\n</div>\r\n'),n.put("app/directives/balanceChanges/balanceChanges.html",'<div class="lmx-container lmx-balance-changes">\r\n <div class="lmx-balance-changes-table">\r\n <div class="lmx-balance-changes-operations-list lmx-margin-bottom" loader="inProgress">\r\n <div>\r\n <table>\r\n <tbody>\r\n <tr class="lmx-purchase-amount-row">\r\n <td class="lmx-identity">\r\n {{\'balanceChanges.purchaseAmount\' | translate}}:\r\n </td>\r\n <td class="lmx-amount" ng-switch="model.aggregateWithdrawRewardPurchase.purchaseAmount.length" colspan="2">\r\n <p class="lmx-amount-text" ng-switch-when="0">0</p>\r\n <p ng-repeat="item in model.aggregateWithdrawRewardPurchase.purchaseAmount" class="lmx-amount-text" ng-switch-default="">\r\n {{:: item.amount.amount}} {{:: item.amount.currency}}\r\n </p>\r\n </td>\r\n </tr>\r\n <tr class="lmx-rewards-row">\r\n <td class="lmx-identity">{{\'balanceChanges.rewards\' | translate}}:</td>\r\n <td class="lmx-amount" ng-switch="model.aggregateWithdrawRewardPurchase.rewards.length" colspan="2">\r\n <p class="lmx-amount-text" ng-switch-when="0">0</p>\r\n <p ng-switch-default="" ng-repeat="reward in model.aggregateWithdrawRewardPurchase.rewards" class="lmx-amount-text">\r\n {{:: reward.amount.amount}} {{:: reward.amount.currency}}\r\n </p>\r\n </td>\r\n </tr>\r\n <tr class="lmx-withdraws-row">\r\n <td class="lmx-identity">{{\'balanceChanges.withdraws\' | translate}}:</td>\r\n <td class="lmx-amount" colspan="2" ng-switch="model.aggregateWithdrawRewardPurchase.withdraws.length">\r\n <p class="lmx-amount-text" ng-switch-when="0">0</p>\r\n <p ng-repeat="withdraw in model.aggregateWithdrawRewardPurchase.withdraws" class="lmx-amount-text" ng-switch-default="">\r\n {{:: withdraw.amount.amount}} {{:: withdraw.amount.currency}}\r\n </p>\r\n </td>\r\n </tr>\r\n <tr ng-if="model.percentageOfBonuses.length" class="lmx-operation-info" class-toggle-click="percent-opened" ng-class="::{\'lmx-only-one-element\': model.percentageOfBonuses.length === 1}" ng-click="changeLimit()">\r\n <td class="lmx-identity">{{\'balanceChanges.percent\' | translate}}:</td>\r\n <td class="date-range">\r\n <p class="lmx-amount-text lmx-percent-info" ng-repeat="item in model.percentageOfBonuses | limitTo: limit">\r\n <span class="lmx-operation-info-date">\r\n {{item.createDateTime | toUTC | dateRange:\r\n (item.changeDateTime | toUTC):true | capitalize}}\r\n </span>\r\n <span class="lmx-operation-info-value">\r\n {{item.attributeValue}}\r\n </span>\r\n </p>\r\n </td>\r\n <td class="lmx-percent-info-expander"></td>\r\n </tr>\r\n <tr ng-if="!model.percentageOfBonuses.length" class="lmx-not-found-row">\r\n <td class="lmx-identity">{{\'balanceChanges.percent\' | translate}}:</td>\r\n <td class="lmx-amount" colspan="2">\r\n {{\'balanceChanges.notFound\' | translate}}\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n'),n.put("app/directives/birthdayPicker/birthdayPicker.html",'<div class="lmx-birthday-picker">\r\n <div class="lmx-birthday-picker-wrapper lmx-day">\r\n <div lmx-custom-select="" ng-model="date" repeat="dates" placeholder="{{\'datePicker.day\' | translate}}" options="d for d in dates track by d" is-disabled="disabled"></div>\r\n </div>\r\n <div class="lmx-birthday-picker-wrapper lmx-month">\r\n <div lmx-custom-select="" ng-model="month" repeat="months" placeholder="{{\'datePicker.month\' | translate}}" options="m.value as m.name for m in months" is-disabled="disabled"></div>\r\n </div>\r\n <div class="lmx-birthday-picker-wrapper lmx-year">\r\n <div lmx-custom-select="" ng-model="year" repeat="years" placeholder="{{\'datePicker.year\' | translate}}" options="y for y in years" is-disabled="disabled"></div>\r\n </div>\r\n</div>\r\n'),n.put("app/directives/brand/brand.html",'<div class="lmx-container lmx-brand">\r\n <section>\r\n <h2>{{::brand.name}}</h2>\r\n <p>{{::brand.description}}</p>\r\n <div class="lmx-content">\r\n <div class="lmx-image">\r\n <img ng-src="{{:: brand.imgUrl}}" fallback-image="" fallback-title="{{\'imageNotFound\' | translate}}" alt="">\r\n </div>\r\n <a ng-href="{{::brand.url}}">{{\'brands.site\' | translate}}</a>\r\n <div ng-if="merchants.length">\r\n <p>{{\'brands.locations\' | translate}}:</p>\r\n <div ng-repeat="merchant in merchants track by merchant.id">\r\n <span>{{::merchant.location.description}}</span>\r\n </div>\r\n <lmx-map class="lmx-map" data="merchants" options="{\r\n markerImg: brand.markerUrl,\r\n markerSize: [29, 32]\r\n }">\r\n </lmx-map>\r\n </div>\r\n </div>\r\n </section>\r\n</div>\r\n'),n.put("app/directives/brands/brands.html",'<div>\r\n <div class="lmx-container lmx-brands" ng-if="!appLocationParts[1]">\r\n <section>\r\n <h2>{{\'brands.title\' | translate}}</h2>\r\n <div loader="inProgress">\r\n <!-- TODO width: 400px; height: 400px; -->\r\n <div class="lmx-card" style="width: 400px; height: 400px;" ng-repeat="brand in brands track by brand.id" ng-click="changeLocation(\'brands/\' + brand.id)">\r\n <div>\r\n <img ng-src="{{:: brand.imgUrl}}" fallback-image="" fallback-title="{{\'imageNotFound\' | translate}}" alt="" style="height: 250px; padding: 10px">\r\n </div>\r\n <div class="lmx-card-content">\r\n <span class="lmx-card-title">{{:: brand.name}}</span>\r\n <div class="lmx-description">{{::brand.description}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n </div>\r\n <brand ng-if="appLocationParts[1]" brand-id="appLocationParts[1]"></brand>\r\n</div>\r\n'),n.put("app/directives/brandsNames/brandsNames.html",'<div class="lmx-brands-names" ng-class="{\'lmx-one-brand\': brands.length === 1}">\r\n <div ng-if="brands.length > 1">\r\n <span ng-repeat="brand in brands track by brand.id">\r\n {{::brand.name | nbspSpaces}}<span ng-show="!$last">, </span>\r\n </span>\r\n </div>\r\n <div ng-if="brands.length === 1" ng-switch=":: !!brands[0].imgUrl && brands[0].imgUrl !== \'undefined\'">\r\n <span ng-switch-when="false">{{:: brands[0].name | nbspSpaces}}</span>\r\n <img ng-switch-when="true" class="lmx-brand-img" ng-src="{{:: brands[0].imgUrl}}" fallback-image="" alt="" title="{{:: brands[0].name}}">\r\n </div>\r\n</div>\r\n'),n.put("app/directives/cards/card/card.html",'<div>\r\n <div class="lmx-card-item__image" ng-class="{\'lmx-blocked\': card.block}">\r\n <img ng-src="{{ card.imageUrl}}" fallback-image="" fallback-title="{{\'imageNotFound\' | translate}}" alt="">\r\n </div>\r\n <div class="lmx-card-item__info" ng-switch=":: !!cardNumberGraphicalCodes.length && !card.isInGroup">\r\n <div ng-switch-when="true">\r\n <!-- Пробел после :: в {{::cardNumberGraphicalCodes.join(\' \')}} сводит префиксер с ума -->\r\n <div class="lmx-card-number lmx-card-code lmx-{{::cardNumberGraphicalCodes.join(\' lmx-\')}}" ng-click="displayCodes(card)">\r\n <a class="lmx-pseudolink">{{:: card.number | charsDivide: 4}}</a>\r\n </div>\r\n </div>\r\n <div ng-switch-when="false" class="lmx-card-number">{{:: card.number | charsDivide: 4}}</div>\r\n\r\n <div class="lmx-card-category" ng-hide="::card.cardCategory.title.toLowerCase() === \'стандартная\'">\r\n {{:: card.cardCategory.title}}\r\n </div>\r\n <div class="lmx-card-blocked-state-info" ng-if="::card.block">\r\n {{\'cards.info.blocked\' | translate}}\r\n </div>\r\n\r\n <dl class="lmx-card-owner" ng-if="::card.cardOwnerInfo.firstName || card.cardOwnerInfo.lastName || card.patronymicName">\r\n <dt>{{\'cards.info.owner\' | translate}}:</dt>\r\n <dd>\r\n <span>{{:: card.cardOwnerInfo.lastName}}</span>\r\n <span>{{:: card.cardOwnerInfo.firstName}}</span>\r\n <span>{{:: card.cardOwnerInfo.patronymicName}}</span>\r\n </dd>\r\n </dl>\r\n <dl class="lmx-card-paid">\r\n <dt>{{\'cards.info.paid\' | translate}}:</dt>\r\n <dd>\r\n <span>{{:: card.paid.amount | number: 2}}</span>\r\n <span>{{:: card.paid.currencyInfo.nameCases.abbreviation}}</span>\r\n </dd>\r\n </dl>\r\n <div ng-if=":: !card.isInGroup" class="lmx-card-actions">\r\n <button ng-class="card.block ? \'lmx-card-action__unblock\' : \'lmx-card-action__block\'" class="lmx-block-btn" ng-if="card.cardActionAccessInfo.canBlock" ng-click="blockStateChange(card)" type="button">\r\n {{card.block ? \'cards.actions.unblock\' : \'cards.actions.block\' | translate}}\r\n </button>\r\n <button ng-if="card.cardActionAccessInfo.canReplace" ng-click="replaceCard(card)" type="button" class="lmx-replace-btn">\r\n {{\'cards.actions.replace\' | translate}}\r\n </button>\r\n <a ng-if="card.walletUrl && !card.block && platfotm.currentPlatform" ng-href="{{::card.walletUrl}}" target="_blank" class="lmx-wallet-btn lmx-{{::platfotm.currentPlatform}}-wallet-btn"></a>\r\n </div>\r\n </div>\r\n</div>\r\n'),n.put("app/directives/cards/cards.html",'<div class="lmx-container lmx-cards">\r\n <section>\r\n <h2>{{\'cards.title\' | translate}}</h2>\r\n <div loader="inProgress">\r\n <div ng-if="!inProgress">\r\n <lmx-tabs ng-if="isAttachCardAvailable" list="tabs" ng-model="selectedTab.value" view-field="name">\r\n </lmx-tabs>\r\n <div ng-show="selectedTab.value === tabs.personalCards" ng-class="::{\'lmx-no-add-card-button\': !maxCountOfMainCardsForUserNotReached}" class="lmx-personal-cards">\r\n <p ng-bind-html="\'cards.replaceHint\' | translate"></p>\r\n\r\n <div class="lmx-card-item-wrap" ng-repeat="card in cards.personal track by card.id">\r\n <card card="card" class="lmx-card-item"></card>\r\n </div>\r\n <div class="lmx-add-card-buttons" ng-if="maxCountOfMainCardsForUserNotReached">\r\n <button ng-click="setCard()" type="button" class="lmx-set-card-btn">\r\n {{\'cards.actions.set\' | translate}}\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div ng-show="selectedTab.value === tabs.accountCards" class="lmx-account-cards">\r\n <div ng-repeat="card in cards.group track by card.id">\r\n <card card="card" class="lmx-card-item" in-group=""></card>\r\n </div>\r\n <div class="lmx-add-card-buttons">\r\n <button ng-click="attachCard()" type="button" class="lmx-attach-btn">\r\n {{\'cards.actions.attach\' | translate}}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n</div>\r\n'),n.put("app/directives/cards/modal/modalAttachCard.html",'<div class="lmx-attach-card-modal">\r\n <div class="modal-header">\r\n <h2>{{\'cards.attachCardModal.title\' | translate}}</h2>\r\n </div>\r\n\r\n <lmx-notifications area="cardModal"></lmx-notifications>\r\n <div loader="confirmForm === undefined">\r\n <div ng-hide="confirmForm === undefined" class="lmx-hint lmx-modal-description lmx-row">\r\n <div>{{\'cards.attachCardModal.separationImpossible\' | translate}}</div>\r\n <div ng-if="confirmForm" ng-bind-html="\'cards.attachCardModal.confirmCode\' | translate"></div>\r\n </div>\r\n <form novalidate="" ng-if="confirmForm === false" name="attachCardForm" ng-submit="attachCardForm.$valid && startAttachCard()">\r\n <div class="modal-content-wrapper">\r\n <div class="modal-body">\r\n <form-group label-text="{{\'cards.attachCardModal.cardNumber\' | translate}}">\r\n <input type="text" ng-model="model.cardNumber" ng-disabled="inProgress" id="lmx-cardnumber" name="cardnumber" required="" autofocus="">\r\n </form-group>\r\n <form-group label-text="{{\'cards.attachCardModal.password\' | translate}}">\r\n <input type="password" ng-model="model.password" ng-disabled="inProgress" id="lmx-password" name="password" autocomplete="off" required="">\r\n </form-group>\r\n </div>\r\n <div class="modal-footer lmx-btn-container">\r\n <div ng-hide="inProgress">\r\n <button class="lmx-btn-cancel" type="button" ng-click="cancel()">\r\n {{\'buttons.cancel\' | translate}}\r\n </button>\r\n <button type="submit">{{\'buttons.next\' | translate}}</button>\r\n </div>\r\n <inline-loader>inProgress</inline-loader>\r\n </div>\r\n </div>\r\n </form>\r\n\r\n <form novalidate="" ng-if="confirmForm" name="attachCardConfirmForm" ng-submit="attachCardConfirmForm.$valid && confirm()">\r\n <div class="modal-content-wrapper">\r\n <div class="modal-body">\r\n <form-group label-text="{{\'cards.attachCardModal.code\' | translate}}">\r\n <input type="text" ng-model="model.confirmCode" ng-disabled="inProgress" id="lmx-confirmCode" name="confirmCode" required="" autofocus="">\r\n </form-group>\r\n <div ng-hide="inProgress">\r\n <a ng-click="!resendTimer.time && sendConfirmCode()" href="">\r\n {{\'cards.attachCardModal.resendConfirmCode\' | translate}}\r\n <span ng-if="resendTimer.time">({{resendTimer.time}})</span>\r\n </a>\r\n </div>\r\n </div>\r\n <div class="modal-footer lmx-btn-container">\r\n <div ng-hide="inProgress">\r\n <button class="lmx-btn-cancel" ng-click="cancelAttachCard()" type="button">\r\n {{\'buttons.cancel\' | translate}}\r\n </button>\r\n <button type="submit">{{\'cards.actions.attach\' | translate}}</button>\r\n </div>\r\n <inline-loader>inProgress</inline-loader>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n</div>\r\n'), 9251 9250 n.put("app/directives/cards/modal/modalBlockStateChange.html",'<div class="lmx-block-state-change-modal">\r\n <div class="modal-header">\r\n <h2>\r\n {{\'cards.blockCardModal.\' + (isBlocked ? \'unblockTitle\' : \'blockTitle\') | translate}}\r\n </h2>\r\n </div>\r\n <lmx-notifications area="cardModal"></lmx-notifications>\r\n <form novalidate="" name="blockCardForm" ng-submit="blockCardForm.$valid && blockStateChange()">\r\n <div class="modal-content-wrapper">\r\n <div class="modal-body">\r\n <form-group label-text="{{\'cards.blockCardModal.password\' | translate}}">\r\n <input type="password" ng-model="model.password" ng-disabled="inProgress" id="lmx-userPassword" name="userPassword" autocomplete="off" required="" autofocus="">\r\n </form-group>\r\n </div>\r\n <div class="modal-footer lmx-btn-container">\r\n <div ng-hide="inProgress">\r\n <button class="lmx-btn-cancel" ng-click="cancel()" type="button">\r\n {{\'buttons.cancel\' | translate}}\r\n </button>\r\n <button type="submit">\r\n {{isBlocked ? \'cards.actions.unblock\' : \'cards.actions.block\' | translate}}\r\n </button>\r\n </div>\r\n <inline-loader>inProgress</inline-loader>\r\n </div>\r\n </div>\r\n </form>\r\n</div>\r\n'),n.put("app/directives/cards/modal/modalGraphicalCodes.html",'<div class="lmx-card-codes-modal">\r\n <div class="modal-body">\r\n <section ng-if=":: displayBarCode" class="lmx-bar-code lmx-margin-bottom">\r\n <h2>{{\'cards.graphicalCodesModal.barCode\' | translate}}</h2>\r\n <angular-barcode ng-model="card.barCode" bc-type="svg"></angular-barcode>\r\n </section>\r\n\r\n <section ng-if=":: displayQrCode" class="lmx-qr-code">\r\n <h2>{{\'cards.graphicalCodesModal.qrCode\' | translate}}</h2>\r\n <qrcode data="{{:: card.number}}" size="222"></qrcode>\r\n </section>\r\n </div>\r\n\r\n <div class="modal-footer lmx-btn-container">\r\n <button type="button" ng-click="close()">{{\'buttons.close\' | translate}}</button>\r\n </div>\r\n</div>\r\n'),n.put("app/directives/cards/modal/modalReplaceCard.html",'<div class="lmx-replace-card-modal">\r\n <div class="modal-header">\r\n <h2>{{\'cards.replaceCardModal.title\' | translate}}</h2>\r\n </div>\r\n <lmx-notifications area="cardModal"></lmx-notifications>\r\n <form novalidate="" name="replaceCardForm" ng-submit="replaceCardForm.$valid && replaceCard()">\r\n <div class="modal-content-wrapper">\r\n <div class="modal-body">\r\n <form-group label-text="{{\'cards.replaceCardModal.cardNumber\' | translate}}">\r\n <input type="text" ng-model="model.cardNumber" ng-disabled="inProgress" id="lmx-cardNumber" name="cardNumber" required="" autofocus="">\r\n </form-group>\r\n <form-group ng-if="cvcCodeCardsRegistration" label-text="{{\'cards.replaceCardModal.cvcCode\' | translate}}">\r\n <input type="number" ng-model="model.cvcCode" ng-disabled="inProgress" id="lmx-cvcCode" name="cvcCode">\r\n </form-group>\r\n <form-group label-text="{{\'cards.replaceCardModal.password\' | translate}}">\r\n <input type="password" ng-model="model.password" ng-disabled="inProgress" id="lmx-password" name="password" autocomplete="off" required="">\r\n </form-group>\r\n </div>\r\n <div class="modal-footer lmx-btn-container">\r\n <div ng-hide="inProgress">\r\n <button class="lmx-btn-cancel" ng-click="cancel()" type="button">\r\n {{\'buttons.cancel\' | translate}}\r\n </button>\r\n <button type="submit">\r\n {{\'cards.actions.replace\' | translate}}\r\n </button>\r\n </div>\r\n <inline-loader>inProgress</inline-loader>\r\n </div>\r\n </div>\r\n </form>\r\n</div>\r\n'),n.put("app/directives/cards/modal/modalSetCard.html",'<div class="lmx-set-card-modal">\r\n <div class="modal-header">\r\n <h2>{{\'cards.setCardModal.title\' | translate}}</h2>\r\n </div>\r\n\r\n <lmx-notifications area="cardModal"></lmx-notifications>\r\n\r\n <form novalidate="" name="setCardForm" ng-submit="setCardForm.$valid && setCard()">\r\n <div class="modal-content-wrapper">\r\n <div class="modal-body">\r\n <form-group label-text="{{\'cards.setCardModal.cardNumber\' | translate}}">\r\n <input type="text" ng-model="model.cardNumber" ng-disabled="inProgress" id="lmx-cardNumber" name="cardNumber" required="" autofocus="">\r\n </form-group>\r\n <form-group ng-if="cvcCodeCardsRegistration" label-text="{{\'registration.cardStep.cvcCode\' | translate}}">\r\n <input type="number" ng-model="model.cvcCode" ng-disabled="inProgress" id="lmx-cvcCode" name="cvcCode">\r\n </form-group>\r\n </div>\r\n <div class="modal-footer lmx-btn-container">\r\n <div ng-hide="inProgress">\r\n <button class="lmx-btn-cancel" ng-click="cancel()" type="button">\r\n {{\'buttons.cancel\' | translate}}\r\n </button>\r\n <button type="submit">\r\n {{\'cards.actions.set\' | translate}}\r\n </button>\r\n </div>\r\n <inline-loader>inProgress</inline-loader>\r\n </div>\r\n </div>\r\n </form>\r\n</div>\r\n'),n.put("app/directives/coupon/coupon.html",'<div class="lmx-card" style="width: 400px; height: 400px;">\r\n <div class="lmx-card-image">\r\n <img ng-src="{{::coupon.imageUri || \'undefined\'}}" fallback-image="" fallback-title="{{\'coupons.imageNotFound\' | translate}}" alt="" style="height: 250px; padding: 10px">\r\n </div>\r\n <div class="lmx-card-content">\r\n <span class="lmx-card-title">{{coupon.name}}</span>\r\n <span><b>{{\'coupons.price\' | translate}}:</b> {{coupon.price}} RUB</span>\r\n </div>\r\n <div class="lmx-card-reveal">\r\n <span class="lmx-card-title"><span class="glyphicon glyphicon-remove"></span>{{coupon.name}}</span>\r\n <p>\r\n <span><b>{{\'coupons.description\' | translate}}:</b>{{:: couponInfo.description ||\r\n (\'coupons.noDescription\' | translate)}}</span>\r\n </p>\r\n <button ng-if=":: loggedIn" type="button" ng-click="openBuyCouponModal(coupon)">\r\n <div>\r\n {{\'coupons.buy\' | translate}}\r\n <span class="lmx-price">{{ coupon.price | zeroFill: 2 }}</span>\r\n </div>\r\n </button>\r\n <button ng-if=":: !loggedIn" type="button" ng-click="goToLogin()">\r\n <div>{{\'coupons.login\' | translate}}</div>\r\n </button>\r\n </div>\r\n</div>\r\n'),n.put("app/directives/coupons/coupons.html",'<div class="lmx-container lmx-coupons">\r\n <h2>{{\'coupons.title\' | translate}}</h2>\r\n <div loader="inProgress">\r\n <div class="lmx-coupon lmx-card" ng-repeat="coupon in coupons track by coupon.id" ng-click="openCouponInfo(coupon)">\r\n <div class="lmx-card-code">\r\n <div class="lmx-image-block">\r\n <img ng-src="data:{{::coupon.imageFile.mimeType}};charset=utf-8;base64, {{::coupon.imageFile.content}}" fallback-image="" fallback-title="{{\'imageNotFound\' | translate}}" alt="" style="height: 100px; padding: 10px">\r\n </div>\r\n </div>\r\n <div class="lmx-card-content">\r\n <div class="lmx-coupon-details">\r\n <div class="lmx-coupon-title">\r\n <h2>{{ coupon.emissionTitle }}</h2>\r\n </div>\r\n <div class="lmx-coupon-description">{{ coupon.shortDescription}}</div>\r\n <div class="lmx-coupon-content">\r\n <div class="lmx-coupon-code">\r\n <qrcode data="{{:: coupon.code }}" size="100"></qrcode>\r\n </div>\r\n <div class="lmx-coupon-period">\r\n <span>Номер купона: {{ coupon.code }}</span>\r\n\r\n <div ng-if="coupon.expiryDate && offerProceed(coupon.activationDate) && !lessThanWeek(coupon.expiryDate)" class="lmx-rating-container">\r\n <span ng-if="offerStartedToday(coupon.activationDate)">\r\n {{ \'coupons.expirationDate\' | translate}}: {{:: coupon.expiryDate | toUTC | shortDate }}\r\n </span>\r\n <span ng-if="!offerStartedToday(coupon.activationDate)">\r\n {{ \'coupons.offerStartFrom\' | translate }} {{:: coupon.activationDate | toUTC | shortDateTime }}\r\n {{ \'dateRange.to\' | translate }}\r\n {{:: coupon.expiryDate | toUTC | shortDate }}\r\n </span>\r\n </div>\r\n\r\n <div ng-if="coupon.expiryDate && lessThanWeek(coupon.expiryDate) && offerProceed(coupon.activationDate)">\r\n {{ \'coupons.offerPeriod.left\' | translate }}:\r\n {{ leftDays }} {{\'coupons.offerPeriod.leftDays\' | translate }}\r\n {{ leftHours }} {{\'coupons.offerPeriod.leftHours\' | translate }}\r\n </div>\r\n\r\n <div ng-if="coupon.expiryDate && !offerProceed(coupon.activationDate)">\r\n {{ \'coupons.offerStartFrom\' | translate }}\r\n {{ coupon.activationDate | toUTC | shortDate }}\r\n {{ \'dateRange.to\' | translate }}\r\n {{ coupon.expiryDate | toUTC | shortDate }}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n'),n.put("app/directives/coupons/modal/couponViewModal.html",'<div class="lmx-coupon-modal">\r\n <div class="modal-header">\r\n <div class="lmx-modal-closer" ng-click="cancel()"></div>\r\n <h2>{{:: coupon.emissionTitle }}</h2>\r\n </div>\r\n\r\n <div class="modal-content-wrapper">\r\n <div class="lmx-coupon-modal">\r\n <div class="modal-body">\r\n <qrcode data="{{:: coupon.code }}" href="{{ coupon.qrContent }}" size="200"></qrcode>\r\n\r\n <div ng-if="coupon.expiryDate && offerProceed(coupon.activationDate) && !lessThanWeek(coupon.expiryDate)" class="lmx-rating-container">\r\n <span ng-if="offerStartedToday(coupon.activationDate)">\r\n {{ \'coupons.expirationDate\' | translate}}: {{:: coupon.expiryDate | toUTC | shortDate }}\r\n </span>\r\n <span ng-if="!offerStartedToday(coupon.activationDate)">\r\n {{ \'coupons.offerStartFrom\' | translate }} {{:: coupon.activationDate | toUTC | shortDateTime }}\r\n {{ \'dateRange.to\' | translate }}\r\n {{:: coupon.expiryDate | toUTC | shortDate }}\r\n </span>\r\n </div>\r\n\r\n <div ng-if="coupon.expiryDate && lessThanWeek(coupon.expiryDate) && offerProceed(coupon.activationDate)">\r\n {{ \'coupons.offerPeriod.left\' | translate }}:\r\n {{ leftDays }} {{\'coupons.offerPeriod.leftDays\' | translate}}\r\n {{ leftHours }} {{\'coupons.offerPeriod.leftHours\' | translate}}\r\n <div class="lmx-bar">\r\n <span class="lmx-left-time" ng-style="{ width: expiryTimePercent + \'%\'}"></span>\r\n </div>\r\n </div>\r\n\r\n <div ng-if="coupon.expiryDate && !offerProceed(coupon.activationDate)">\r\n {{ \'coupons.offerStartFrom\' | translate }}\r\n {{ coupon.activationDate | toUTC | shortDate }}\r\n {{ \'dateRange.to\' | translate }}\r\n {{ coupon.expiryDate | toUTC | shortDate }}\r\n </div>\r\n\r\n <div class="lmx-coupon-description">\r\n {{ coupon.description }}\r\n </div>\r\n\r\n <div class="lmx-coupon-hint">\r\n {{ \'coupons.hint\' | translate }}\r\n </div>\r\n </div>\r\n <div class="modal-footer lmx-btn-container">\r\n <button type="button" ng-click="cancel()">{{\'buttons.close\' | translate}}</button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n'),n.put("app/directives/datePicker/datePickerView.html",'<span class="date-picker-wrap" outside-click="toggleCalendar($event, false)">\r\n <div class="toggler" ng-click="toggleCalendar($event)">\r\n <span class="glyphicon glyphicon-calendar"></span>\r\n </div>\r\n\r\n <input type="text" ng-class="\'lmx-\'+inputClass" datetime-picker="{{dateFormat}}" ng-model="model" ng-keyup="validateModel($event)" ng-model-options="modelOptions" datepicker-options="options" button-bar="{show:false}" is-open="isOpen" enable-time="false">\r\n</span>\r\n'),n.put("app/directives/dateTimePicker/datetimePickerView.html",'<span class="date-picker-wrap" outside-click="toggleCalendar($event, false)">\r\n <div class="toggler glyphicon glyphicon-calendar" ng-click="toggleCalendar($event)"></div>\r\n\r\n <input type="text" ng-if=":: timepickerOptions" ng-class="\'lmx-\'+inputClass" datetime-picker="{{dateFormat}}" ng-model="model" ng-keyup="checkModel($event)" ng-model-options="modelOptions" button-bar="buttonsOptions" initial-picker="date" re-open-default="date" datepicker-options="{showWeeks:false}" timepicker-options="timepickerOptions" is-open="isOpen">\r\n</span>\r\n'),n.put("app/directives/favoriteGoods/favoriteGood/favoriteGood.html",'<div class="lmx-favorite-goods-item">\r\n <div class="lmx-favorite-goods-item__image">\r\n <img ng-src="{{:: favoriteGoodsImagesUrl}}{{:: favoriteGood.good ? favoriteGood.good.codeGood : \'undefined\'}}.png" fallback-image="" fallback-title="Изображение отсутствует" alt="">\r\n </div>\r\n <p ng-if=":: !favoriteGood.good || favoriteGood.good.id === 0">\r\n {{\'favoriteGoods.noFavoriteGood\' | translate}}\r\n </p>\r\n <p ng-if=":: favoriteGood.good && favoriteGood.good.id !== 0">{{:: favoriteGood.good.name}}</p>\r\n <button class="lmx-btn lmx-change-favorite-good-btn" ng-click="changeGood(favoriteGood)" ng-if=":: favoriteGood.allowChange" type="button">\r\n {{\'favoriteGoods.actions.edit\' | translate}}\r\n </button>\r\n <small>\r\n <p class="lmx-favorite-goods-already-changed" ng-if=":: !favoriteGood.allowChange">\r\n {{\'favoriteGoods.alreadyChanged\' | translate}}\r\n </p>\r\n </small>\r\n</div>\r\n'),n.put("app/directives/favoriteGoods/favoriteGoods.html",'<div class="lmx-container lmx-favorite-goods" ng-class="{\'lmx-empty\': !inProgress && !favoriteGoods}">\r\n <section>\r\n <h2>{{\'favoriteGoods.title\' | translate}}</h2>\r\n <div loader="inProgress">\r\n <div ng-if="!inProgress">\r\n <div>\r\n <p>{{\'favoriteGoods.info.description\' | translate}}.</p>\r\n <p>\r\n {{\'favoriteGoods.info.limitation.part1\' | translate}}\r\n <a href="#offers">{{\'favoriteGoods.info.limitation.part2\' | translate}}</a>.\r\n </p>\r\n </div>\r\n <div class="lmx-favorite-goods-list">\r\n <p ng-if="!(favoriteGoods && favoriteGoods.goods && favoriteGoods.goods.length)">\r\n {{\'favoriteGoods.favoriteGoodsEmpty\' | translate}}\r\n </p>\r\n <favorite-good favorite-good="favoriteGoodsItem" change-good="changeGood" ng-repeat="favoriteGoodsItem in favoriteGoods.goods" loader="goodsInProgres_{{:: favoriteGoodsItem.position}}"></favorite-good>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n</div>\r\n'),n.put("app/directives/favoriteGoods/modal/goodsOrCategory/goodsOrCategory.html",'<ul class="lmx-goods-or-category-item">\r\n <li ng-if=":: isCategory" class="lmx-category-item-li">\r\n <div>\r\n <div class="lmx-category-item">\r\n <p class="material-icons">folder</p>\r\n <p class="lmx-category-item-name" ng-click="changeVisibilityCategoryList()">\r\n {{:: goodsOrCategory.name}}\r\n </p>\r\n </div>\r\n <div ng-if=":: !inProgress">\r\n <goods-or-category ng-show="isShow" goods-group-id="goodsGroupId" goods-or-category="item" ng-repeat="item in nodeItems track by item.id"></goods-or-category>\r\n </div>\r\n <inline-loader>inProgress</inline-loader>\r\n </div>\r\n </li>\r\n <li ng-if=":: !isCategory" class="lmx-good-item-li">\r\n <p ng-click="selectNewFavoriteGood()" class="lmx-good-item">\r\n {{:: goodsOrCategory.name}}\r\n </p>\r\n </li>\r\n</ul>\r\n'),n.put("app/directives/favoriteGoods/modal/modalSelectNewFavoriteGood.html",'<div class="modal-content-favorite-goods">\r\n <div class="lmx-modal-closer" ng-click="cancel()"></div>\r\n <div loader="inProgress" class="lmx-modal-favorite-goods-container">\r\n <div ng-if="!inProgress" class="lmx-modal-favorite-goods-content">\r\n <div class="modal-header">\r\n <h2>{{\'favoriteGoods.modal.selectGood\' | translate}}</h2>\r\n </div>\r\n <div class="lmx-content lmx-select-new-favorite-good">\r\n <div class="lmx-categories-list">\r\n <goods-or-category goods-group-id="goodsGroupId" goods-or-category="goodsOrCategory" ng-repeat="goodsOrCategory in categories track by goodsOrCategory.id"></goods-or-category>\r\n </div>\r\n <button class="lmx-btn lmx-close-modal-btn" ng-click="cancel()" type="button">\r\n {{\'favoriteGoods.modal.close\' | translate}}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n'),n.put("app/directives/feedback/feedback.html",'<div class="lmx-container lmx-feedback">\r\n <section>\r\n <h2>{{\'feedback.title\' | translate}}</h2>\r\n <lmx-notifications area="feedback"></lmx-notifications>\r\n\r\n <div loader="inProgress && messages === undefined">\r\n <div ng-show="!inProgress || messages !== undefined">\r\n <div class="lmx-hint">\r\n <p>{{\'feedback.askQuestion\' | translate}}:</p>\r\n </div>\r\n\r\n <form novalidate="" name="feedbackForm" ng-submit="feedbackForm.$valid && send(feedbackForm)">\r\n <form-group>\r\n <textarea ng-disabled="sendInProgress" id="lmx-msgTextarea" name="msgTextarea" ng-model="messageModel.text" placeholder="{{\'feedback.typeText\' | translate}}" required="">\r\n </textarea>\r\n </form-group>\r\n\r\n <inline-loader line="">sendInProgress</inline-loader>\r\n\r\n <div class="lmx-file-input-and-submitter lmx-clearfix lmx-margin-bottom" ng-if="!sendInProgress">\r\n <file-input ng-model="messageModel.attachment" class="lmx-left"></file-input>\r\n <button type="submit" class="lmx-right lmx-row">\r\n {{\'buttons.send\' | translate}}\r\n </button>\r\n </div>\r\n </form>\r\n\r\n <div class="lmx-message-history" loader="sendInProgress || inProgress">\r\n <lmx-scroller>\r\n <div class="lmx-chat-message-line lmx-clearfix" ng-repeat="item in messages track by item.message.id">\r\n <div ng-class="{\'lmx-outcoming\': item.isUserMessage}" class="lmx-chat-message">\r\n <div class="lmx-from">\r\n {{\'feedback.\' + (item.isUserMessage ? \'you\' : \'operator\') |\r\n translate}}\r\n </div>\r\n <div class="lmx-text">{{::item.message.message}}</div>\r\n <div class="lmx-file-name" ng-if="item.message.fileName">\r\n {{\'feedback.file\' | translate}}: {{::item.message.fileName}}\r\n </div>\r\n <div class="date">\r\n {{::item.message.dateTime | toUTC | shortDateTime}}\r\n </div>\r\n </div>\r\n </div>\r\n </lmx-scroller>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n</div>\r\n'),n.put("app/directives/fileInput/fileInput.html",'<div class="lmx-file-input">\r\n <form-group>\r\n <inline-loader>loader</inline-loader>\r\n <input type="file" ng-model="attachment.fileInfo" id="lmx-file-input" ng-attr-name="{{inputName}}" base-sixty-four-input="" maxsize="5120" do-not-parse-if-oversize="" onloadstart="onFileLoadStart" onerror="onFileLoadError" onload="onFileLoadSuccess">\r\n <label for="lmx-file-input" ng-switch="loadError.value" ng-hide="loader" ng-click="clearAttachment(); loadError.value = false;">\r\n <a>{{\'buttons.attachFile\' | translate}}</a>\r\n <span class="lmx-file-input-span"></span>\r\n <span ng-switch-when="false" ng-if="attachment.fileInfo" class="lmx-attachment">\r\n <span class="lmx-attachment-name" ng-attr-title="{{attachment.fileInfo.filename}}">{{attachment.fileInfo.filename}}</span>\r\n <span ng-click="clearAttachment($event)" class="lmx-attachment-remove glyphicon glyphicon-remove"></span>\r\n </span>\r\n <span ng-switch-when="true" class="lmx-attachment-error">{{loadError.text || (\'file.error\' | translate)}}</span>\r\n </label>\r\n </form-group>\r\n</div>\r\n'),n.put("app/directives/formGroup/formGroupTemplate.html",'<div class="lmx-form-group lmx-clearfix lmx-row" ng-class="{\'lmx-has-error\': form.$submitted && model.$invalid}">\r\n <div ng-if="labelText !== undefined" class="lmx-label-container">\r\n <label class="lmx-form-group-label lmx-{{:: lmx-labelAlign+\'align\'}}" for="{{itemId}}">{{labelText}}</label>\r\n </div>\r\n <div class="lmx-input-container">\r\n <div><ng-transclude></ng-transclude></div>\r\n <div class="lmx-help-block" ng-if="form.$submitted">\r\n <div class="lmx-help-block__error" ng-if="model.$error.validationErrors" ng-repeat="error in model.$error.validationErrors">\r\n <div>{{error}}</div>\r\n </div>\r\n <div class="lmx-help-block__error" ng-if="!model.$error.validationErrors" ng-repeat="(error, value) in model.$error">\r\n <div>{{errorMessage(error, model.$viewValue)}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n'),n.put("app/directives/history/history.html",'<div class="lmx-container lmx-history">\r\n <section>\r\n <h2 ng-if=":: !isPreview">{{\'history.title\' | translate}}</h2>\r\n <div loader="history === undefined">\r\n <div ng-show=":: history">\r\n <div ng-show=":: !isPreview" class="lmx-history-filters lmx-clearfix lmx-margin-bottom">\r\n <div class="date-filters">\r\n <div class="date-filter lmx-since-date-filter">\r\n <span class="lmx-pretext">{{\'history.fromDate\' | translate}}</span>\r\n <date-picker ng-model="fromDate" ng-change="reloadHistory()">\r\n </date-picker>\r\n </div>\r\n <div class="date-filter lmx-to-date-filter">\r\n <span class="lmx-pretext">{{\'history.toDate\' | translate}}</span>\r\n <date-picker ng-model="toDate" ng-change="reloadHistory()">\r\n </date-picker>\r\n </div>\r\n </div>\r\n <div class="lmx-card-filter">\r\n <inline-loader>cardsInProgress</inline-loader>\r\n <div ng-hide="cardsInProgress">\r\n <select ng-model="selectedCard" ng-change="reloadHistory()" id="lmx-cardFilter" name="cardFilter">\r\n <option ng-value="0">{{\'history.allCards\' | translate}}</option>\r\n <option ng-repeat="card in cards" ng-value="card.id">{{:: card.number | charsDivide: 4}}</option>\r\n </select>\r\n </div>\r\n </div>\r\n <div class="lmx-reset-filters">\r\n <a ng-click="resetFilters()" class="lmx-pseudolink" href="">{{\'history.resetFilters\' | translate}}</a>\r\n </div>\r\n </div>\r\n <lmx-tabs ng-if="balanceChangeHistory" list="tabs" ng-model="selectedTab.value" view-field="name">\r\n </lmx-tabs>\r\n <div ng-show="!balanceChangeHistory || selectedTab.value === tabs.operations">\r\n <div class="lmx-history-table" ng-show="history.allCount || inProgress">\r\n <div class="lmx-operations-list lmx-margin-bottom" loader="inProgress && (isPaginated || isReload)">\r\n <div ng-class="{\'lmx-loading\': inProgress}" ng-hide="inProgress && isReload">\r\n <table ng-if="history.rows.length">\r\n <thead>\r\n <tr>\r\n <th>{{\'history.date\' | translate}}</th>\r\n <th>{{\'history.cardNumber\' | translate}}</th>\r\n <th>{{\'history.description\' | translate}}</th>\r\n <th>{{\'history.operation\' | translate}}</th>\r\n <th>{{\'history.amount\' | translate}}</th>\r\n <th></th>\r\n </tr>\r\n </thead>\r\n <tbody ng-repeat="item in history.rows track by item.id" class-toggle-click="cheque-opened" ng-class="::{\'lmx-empty-cheque\': !item.data.chequeItems.length && !item.data.chequeAdditionalAttributes.length}">\r\n <tr class="lmx-operation-info">\r\n <td class="date-time" ng-attr-title="{{:: item.dateTime | toUTCTemporarySolution | shortDateTime}}">\r\n {{:: item.dateTime | toUTCTemporarySolution |\r\n shortDateTime}}\r\n </td>\r\n <td class="lmx-identity" ng-attr-title="{{:: item.identity ? (\'**** \' + (item.identity | lastCount: 4)) : undefined}}">\r\n <span ng-if="::item.identity">****\r\n <b>{{:: item.identity | lastCount: 4 }}</b></span>\r\n </td>\r\n <td class="lmx-description" ng-attr-title="{{:: item.description}}">\r\n <img ng-if=":: item.logoSquareUrl" ng-src="{{:: item.logoSquareUrl}}" class="lmx-logo-square" fallback-image="" fallback-title="{{\'imageNotFound\' | translate}}" alt="">\r\n <span class="lmx-description-text">{{:: item.description}}</span>\r\n </td>\r\n <td class="lmx-withdraws lmx-text">\r\n <div ng-if=":: item.data.withdraws.length" ng-repeat="wdrw in item.data.withdraws" ng-attr-title="{{\'history.gift\' + (item.data.isRefund ? \'Refund\' : \'\' ) + \'.withdraw\' | translate}}" class="lmx-text-overflow-ellipsis">\r\n {{\'history.gift\' + (item.data.isRefund ?\r\n \'Refund\' : \'\' ) + \'.withdraw\' | translate}}\r\n </div>\r\n <div ng-if=":: item.data.rewards.length" ng-repeat="(type, values) in item.rewardsResult">\r\n <div ng-repeat="(currency, value) in values" ng-attr-title="{{\'history.gift\' + (item.data.isRefund ? \'Refund.\' : \'.\') + (type | lowerCamelCase) | translate}}" class="lmx-text-overflow-ellipsis">\r\n {{\'history.gift\' + (item.data.isRefund ?\r\n \'Refund.\' : \'.\') + (type | lowerCamelCase) |\r\n translate}}\r\n </div>\r\n </div>\r\n <div ng-if=":: item.type == \'RewardData\'" ng-attr-title="{{\'history.rewardData.\' + (item.data.rewardType | lowerCamelCase) | translate}}" class="lmx-text-overflow-ellipsis">\r\n {{\'history.rewardData.\' + (item.data.rewardType\r\n | lowerCamelCase) | translate}}\r\n </div>\r\n <div ng-if=":: item.type == \'WithdrawData\'" ng-attr-title="{{\'history.withdrawData.\' + (item.data.withdrawType | lowerCamelCase) | translate}}" class="lmx-text-overflow-ellipsis">\r\n {{\'history.withdrawData.\' +\r\n (item.data.withdrawType | lowerCamelCase) |\r\n translate}}\r\n </div>\r\n </td>\r\n <td class="lmx-withdraws lmx-amount">\r\n <div ng-if=":: item.data.withdraws.length" ng-repeat="wdrw in item.data.withdraws" ng-attr-title="{{:: (item.data.isRefund ? wdrw.amount.amount * -1 : wdrw.amount.amount) | number: 2}} {{:: wdrw.amount.currency }}" class="lmx-text-overflow-ellipsis">\r\n {{:: (item.data.isRefund ? wdrw.amount.amount *\r\n -1 : wdrw.amount.amount) | number: 2}} {{::\r\n wdrw.amount.currency }}\r\n </div>\r\n <div ng-if=":: item.data.rewards.length" ng-repeat="(type, values) in item.rewardsResult">\r\n <div ng-repeat="(currency, value) in values" ng-attr-title="{{:: (item.data.isRefund ? value * -1 : value) | number: 2}} {{:: currency }}" class="lmx-text-overflow-ellipsis">\r\n {{:: (item.data.isRefund ? value * -1 :\r\n value) | number: 2}} {{:: currency }}\r\n </div>\r\n </div>\r\n <div ng-if=":: item.type == \'RewardData\' || item.type == \'WithdrawData\'" ng-attr-title="{{:: (item.data.isRefund ? item.data.amount.amount * -1 : item.data.amount.amount) | number: 2}} {{:: item.data.amount.currency }}" class="lmx-text-overflow-ellipsis">\r\n {{:: (item.data.isRefund ?\r\n item.data.amount.amount * -1 :\r\n item.data.amount.amount) | number: 2}} {{::\r\n item.data.amount.currency }}\r\n </div>\r\n </td>\r\n <td class="lmx-cheque-expander"></td>\r\n </tr>\r\n <tr class="lmx-cheque-info" ng-if="item.data.chequeItems.length">\r\n <td colspan="6">\r\n <div class="lmx-cheque-content">\r\n <div class="lmx-cheque-line" ng-repeat="chequeItem in item.data.chequeItems">\r\n <span class="lmx-cheque-item">{{::chequeItem.description |\r\n nbspSpaces}}</span>\r\n <span class="lmx-cheque-count">{{::chequeItem.count}}\r\n <span ng-if=":: chequeItem.unit" class="lmx-cheque-unit">{{:: chequeItem.unit}}</span></span>\r\n </div>\r\n <div class="lmx-cheque-total">\r\n {{::item.data.amount.amount | number: 2}}\r\n {{:: item.data.amount.currency }}\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr class="lmx-cheque-info" ng-if="item.data.chequeAdditionalAttributes && item.data.chequeAdditionalAttributes.length">\r\n <td colspan="6" class="lmx-cheque-content">\r\n <h4>{{ \'history.eCheque\' | translate }}:</h4>\r\n <div ng-repeat="attribute in item.data.chequeAdditionalAttributes">\r\n <a ng-href="{{ attribute.value }}" target="_blank">\r\n {{ attribute.stringValue}}\r\n </a>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div ng-show=":: !isPreview" ng-switch=":: !!isPaginated">\r\n <uib-pagination ng-switch-when="true" ng-show="!isReload && history.allCount > onPage" total-items="history.allCount" ng-model="$parent.currentPage" max-size="4" items-per-page="{{:: onPage}}" class="lmx-pagination" boundary-links="true" boundary-link-numbers="true" direction-links="false" force-ellipses="true" first-text="<<" last-text=">>" ng-change="paginationChange()"></uib-pagination>\r\n <div ng-switch-when="false">\r\n <a class="lmx-pseudolink lmx-right" ng-if="!inProgress && (from + onPage < history.allCount)" ng-click="increaseFrom()" href="">{{\'history.showMore\' | translate}}</a>\r\n <inline-loader line="">inProgress && !isReload</inline-loader>\r\n </div>\r\n </div>\r\n <a ng-if=":: isPreview" href="{{:: historyUrl}}" class="lmx-pseudolink">{{\'history.goToFullHistory\' | translate}}</a>\r\n </div>\r\n <div class="lmx-history-not-found" ng-if="!history.allCount && !inProgress">\r\n {{\'history.notFound\' | translate}}\r\n </div>\r\n <a ng-if="balanceChangeHistory && !history.allCount && !inProgress && !balanceChangesIsEmpty" href="" ng-click="changeTab(tabs.balanceChanges)">{{\'history.showBalanceChange\' | translate}}</a>\r\n </div>\r\n <div ng-if="balanceChangeHistory" ng-show="selectedTab.value === tabs.balanceChanges">\r\n <lmx-balance-changes from-date="fromDate" to-date="toDate" card-id="selectedCard"></lmx-balance-changes>\r\n <a ng-if="balanceChangeHistory && history.allCount && !inProgress && balanceChangesIsEmpty" href="" ng-click="changeTab(tabs.operations)">{{\'history.showOperations\' | translate}}</a>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n</div>\r\n'), -
loymaxapp/trunk/public/css/style.min.css
r2796867 r2813148 1 1 /** 2 * Loymax v2.2.20221 007 (http://loymax.ru)2 * Loymax v2.2.20221107 (http://loymax.ru) 3 3 * Copyright 2011-2022 Loymax, Inc. 4 4 * License: MIT -
loymaxapp/trunk/readme.txt
r2796867 r2813148 37 37 38 38 == Changelog == 39 = 3.4.2 = 40 * Переход на версию апи 22.1 39 41 = 3.4.0 - 3.4.1 = 40 42 * Изменен метод апи на locations, квадратные иконки на карте
Note: See TracChangeset
for help on using the changeset viewer.