UNPKG

@stratusjs/idx

Version:

AngularJS idx/property Service and Components bundle to be used as an add on to StratusJS

1 lines 5.44 kB
System.register(["./disclaimer.component.less","lodash","@stratusjs/runtime/stratus","@stratusjs/core/misc","moment"],function(exports_1,context_1){"use strict";var lodash_1,stratus_1,misc_1,moment_1,localDistStyle;context_1&&context_1.id;return{setters:[function(_1){},function(lodash_1_1){lodash_1=lodash_1_1},function(stratus_1_1){stratus_1=stratus_1_1},function(misc_1_1){misc_1=misc_1_1},function(moment_1_1){moment_1=moment_1_1}],execute:function(){"idx","disclaimer","disclaimer",localDistStyle=`${stratus_1.Stratus.BaseUrl}${stratus_1.Stratus.DeploymentPath}@stratusjs/idx/dist/idx.bundle.min.css`,stratus_1.Stratus.Components.IdxDisclaimer={bindings:{elementId:"@",initNow:"=",service:"@",type:"@",hideOnDuplicate:"@",modificationTimestamp:"="},controller($attrs,$sce,$scope,Idx){let mlsVariables;$scope.uid=misc_1.safeUniqueId("idx","disclaimer","disclaimer"),stratus_1.Stratus.Instances[$scope.uid]=$scope,$scope.elementId=$attrs.elementId||$scope.uid,$scope.initialized=!1,$scope.onWatchers=[],$scope.service=$attrs.service&&misc_1.isJSON($attrs.service)?JSON.parse($attrs.service):[],$scope.idxService=[],$scope.type=$attrs.type?JSON.parse($attrs.type):"Property",$scope.alwaysShow=void 0===$attrs.hideOnDuplicate,stratus_1.Stratus.Internals.CssLoader(localDistStyle).then();const init=async()=>{Idx.registerDisclaimerInstance($scope.elementId,$scope),Idx.on("Idx","sessionInit",()=>{$scope.initialized||($scope.processMLSDisclaimer(),$scope.initialized=!0),Idx.on("Idx","fetchTimeUpdate",(_scope,_serviceId,_modelName,_fetchTime)=>{$scope.processMLSDisclaimer(!0)})}),Idx.on("Idx","sessionRefresh",()=>{$scope.processMLSDisclaimer(!0),$scope.initialized=!0}),$scope.$watch("$ctrl.hideOnDuplicate",hideOnDuplicate=>{void 0!==$attrs.hideOnDuplicate&&($scope.alwaysShow=!1,$scope.hideOnDuplicate=!0!==hideOnDuplicate?!!$attrs.hideOnDuplicate&&(!(!lodash_1.isString($attrs.hideOnDuplicate)||!misc_1.isJSON($attrs.hideOnDuplicate))&&JSON.parse($attrs.hideOnDuplicate)):hideOnDuplicate||!1,$scope.$applyAsync(()=>{if($scope.hideMe=!1,$scope.hideOnDuplicate){const instances=Idx.getDisclaimerInstance();Object.keys(instances).forEach(elementId=>{elementId===$scope.elementId||!0!==instances[elementId].alwaysShow||null!==instances[elementId].modificationTimestamp&&!lodash_1.isUndefined(instances[elementId].modificationTimestamp)||($scope.hideMe=!0)})}}))}),Idx.emit("init",$scope)};this.$onInit=()=>{$scope.Idx=Idx;let initNow=!0;Object.prototype.hasOwnProperty.call($attrs.$attr,"initNow")&&(initNow=!!misc_1.isJSON($attrs.initNow)&&JSON.parse($attrs.initNow));const stopWatchingService=$scope.$watch("$ctrl.service",service=>{$scope.service=lodash_1.isString(service)&&misc_1.isJSON(service)?JSON.parse(service):[],$scope.processMLSDisclaimer(!0),$scope.$applyAsync(),stopWatchingService()});if(initNow)return void init().then();const stopWatchingInitNow=$scope.$watch("$ctrl.initNow",initNowCtrl=>{!0===initNowCtrl&&($scope.initialized||init().then(),stopWatchingInitNow())})},$scope.getMLSVariables=reset=>{if(!mlsVariables||0===Object.keys(mlsVariables).length||reset){mlsVariables=[];let mlsServicesRequested=null;!$scope.service||!lodash_1.isNumber($scope.service)&&lodash_1.isEmpty($scope.service)||(lodash_1.isArray($scope.service)||($scope.service=[$scope.service]),mlsServicesRequested=$scope.service),Idx.getMLSVariables(mlsServicesRequested).forEach(service=>{mlsVariables[service.id]=service})}return Object.values(mlsVariables)},$scope.processMLSDisclaimer=reset=>{const services=$scope.getMLSVariables(reset);$scope.idxService=[];let disclaimerComplete="";services.forEach(service=>{let singleDisclaimer="";service.fetchTime[$scope.type]?singleDisclaimer+=`Last checked ${moment_1.default(service.fetchTime[$scope.type]).format("M/D/YY h:mm a")}. `:Idx.getLastSessionTime()&&(singleDisclaimer+=`Last checked ${moment_1.default(Idx.getLastSessionTime()).format("M/D/YY")}. `),$scope.modificationTimestamp&&(singleDisclaimer+=`Listing last updated ${moment_1.default($scope.modificationTimestamp).format("M/D/YY h:mm a")}. `),singleDisclaimer+=service.disclaimer,disclaimerComplete&&(disclaimerComplete+="<br>"),disclaimerComplete+=singleDisclaimer;const cleanService=service;cleanService.disclaimerString=singleDisclaimer,cleanService.disclaimerHTML=$sce.trustAsHtml(singleDisclaimer),$scope.idxService.push(cleanService)})},$scope.on=(emitterName,callback)=>Idx.on($scope.elementId,emitterName,callback),$scope.remove=()=>{$scope.onWatchers.forEach(killOnWatcher=>killOnWatcher())}},template:'<div id="{{::elementId}}" class="disclaimer-outer-container" data-ng-cloak data-ng-show="idxService.length > 0 && !hideMe" role="contentinfo" aria-label="IDX Disclaimers"><div class="disclaimer-container" data-ng-repeat="service in idxService" data-ng-bind-html="service.disclaimerHTML"></div><div class="mls-logos-section" aria-label="MLS Logos"><div class="mls-logos-container" data-ng-repeat="service in idxService"><img class="mls-service-logo" alt="{{service.name}} MLS Brand Logo" data-ng-show="service.logo.default" aria-label="{{service.name}}" data-ng-src="{{service.logo.medium || service.logo.default}}"><img class="mls-service-logo" alt="{{service.name}} MLS supplementary Logo" data-ng-if="service.mandatoryLogo && service.mandatoryLogo.length > 0" data-ng-repeat="mandatoryLogo in service.mandatoryLogo" aria-label="{{service.name}} supplementary" data-ng-src="{{mandatoryLogo}}"></div></div></div>'}}}});