// Använd fb-action.ts för Angular fbDeprecatedFile('fbAction'); angular.module('fasit') .directive('fbAction', ['instaellningarService', '$compile', '$uibPosition','commonService','sideDrawerService', '$filter', '$timeout', function ( instaellningarService: fb.IInstaellningarService, $compile: ng.ICompileService, $uibposition: any, commonService: fb.ICommonService, sideDrawerService: fb.ISideDrawerService, $filter: ng.IFilterService, $timeout: ng.ITimeoutService ) { var template = '
' + '
' + '
' + '
    ' + '
  • Spärra nummer
  • ' + '
  • En spärr förhindrar reklamutskick. Eventurella tjänster avslutas inte.

  • ' + '
  • Kontakten har valt att inte få sms. Ta bort spärr
  • ' + '
  • Felaktig e-postadress
  • ' + '
  • Ett eller flera e-post har inte kunnat levereras till denna adress. Har tryckfelsnisse varit framme? Om adressen är korrekt, kontakta support.

  • ' + '
  • Spärra e-post
  • ' + '
  • En spärr förhindrar reklamutskick. Eventurella tjänster avslutas inte.

  • ' + '
  • Kontakten har valt att inte få e-post. Ta bort spärr
  • ' + '
  • ' + '
  • Ring
  • ' + '
  • Ring
  • ' + '
  • Skicka sms
  • ' + '
  • Skicka Epost
  • ' + '
  • Hitta.se
  • ' + '
' + '
'; var tooltipLinker: ng.ITemplateLinkingFunction; var compile = function (elem, attr) { tooltipLinker = $compile(template); return link; } var link = function (scope, element: ng.IAugmentedJQuery, attrs: any) { fbDeprecated('fbAction'); var tooltipLinkedScope = scope.$new(); scope.isEmailChangeTrack = commonService.changeTrack.isChangeTrackObject(scope.email); scope.isNumberChangeTrack = commonService.changeTrack.isChangeTrackObject(scope.number); var tooltip: ng.IAugmentedJQuery = tooltipLinker(tooltipLinkedScope, angular.noop); scope.open = function () { element.after(tooltip); tooltip.css({ top: 0, left: 0, display: 'block' }); var ttPosition = $uibposition.positionElements(element, tooltip, 'top', false); ttPosition.top += 'px'; ttPosition.left += 'px'; tooltip.css(ttPosition); } scope.close = function () { tooltip.css({ display: 'none' }); }; element.parent().mouseenter(scope.open); element.parent().mouseleave(scope.close); scope.$on('$destroy', function () { tooltipLinkedScope.$destroy(); element.parent().unbind('mouseenter'); element.parent().unbind('mouseleave'); //element.parent().remove(); //tooltipLinkedScope = null; tooltip.remove(); }); var instaellningar = instaellningarService.instaellningar.instaellningar; scope.anvaenderRingLaenkar = instaellningar[fb.InstaellningTyp.AnvaenderRingLaenkar.id].InstaellningVaerde; scope.anvaenderRingLaenkarCallTo = instaellningar[fb.InstaellningTyp.AnvaenderRingLaenkarCallTo.id].InstaellningVaerde; scope.isVisible = false; scope.sendSMS = function () { var recipient = [new fb.PersonMottagare({ TelefonnummerMobil: $filter("phoneNumber")(scope.number.value), PersonNamn: scope.personNamn ? scope.personNamn.value : 'Person', PersonId: undefined, EjReklam: scope.aerSpaerrad })]; sideDrawerService.setSideDrawer('SMSUtskick', { recipients: recipient, maeklarObjektId: scope.maeklarObjektId }); } scope.visaContactMedHittaSe = function () { var params = { searchTelefonnummer: scope.number.value, kontakt: scope.kontaktMedHittaSeGet(), callback: scope.kontaktMedHittaSeCallback }; if (sideDrawerService.currentSideDrawer()) { sideDrawerService.stack('KontaktMedHittaSe', params); } else { sideDrawerService.setSideDrawer('KontaktMedHittaSe', params); } } scope.sendEmail = function () { var recipient = [new fb.PersonMottagare({ PersonNamn: scope.personNamn ? scope.personNamn.value : '', MejlAdress: scope.email ? scope.email.value : '', PersonId: null, EjReklam: null, })]; sideDrawerService.setSideDrawer('EpostUtskick', { recipients: recipient, sender: null, body: null, maeklarObjektId: scope.maeklarObjektId, subject: null }); } var timer; var offsetHeight = 0; var updatePosition = function () { if (tooltip[0].offsetHeight !== offsetHeight) { offsetHeight = tooltip[0].offsetHeight; } if (tooltip && offsetHeight > 0) { var ttPosition = $uibposition.positionElements(element, tooltip, 'top', false); ttPosition.top += 'px'; ttPosition.left += 'px'; tooltip.css(ttPosition); } }; scope.$watch(function () { //Istället för att watcha offsetHeight och potentiellt få digestloop-problem //så kör vi istället en timeout som sätter om värdet om det har ändrats. //Vi slipper därmed i standardfallet reflow varje digest (då denna körs efter digesten) //Se https://gist.github.com/paulirish/5d52fb081b3570c81e3a timer = timer || $timeout(updatePosition, 50, false); }); var timer2; scope.$watch('email.value', function (newVal, oldVal) { if (newVal !== oldVal && !oldVal) { if (timer2) { $timeout.cancel(timer2); } timer2 = $timeout(updatePosition, 10, false); } }); var timer3; scope.$watch('number.value', function (newVal, oldVal) { if (newVal !== oldVal && !oldVal) { if (timer3) { $timeout.cancel(timer3); } timer3 = $timeout(updatePosition, 10, false); } }); } return { compile: compile, restrict: 'EA', replace: true, scope: { number: '=?', email: '=?', personNamn: '=?', aerSpaerrad: '=?', spaerraMobil: '=?', spaerraEpost: '=?', fungerarEj: '=?', maeklarObjektId: '=?', kontaktMedHittaSe: '=?', kontaktMedHittaSeGet: '&', kontaktMedHittaSeCallback: '&' }, }; }]);