{"version":3,"sources":["../js/directives/profilePic.js","../js/services/profilePicService.js"],"names":["profilePic","httpService","global","restrict","scope","controller","link","elem","attrs","secureURL","refresh","Math","random","isRetina","window","matchMedia","matches","devicePixelRatio","test","navigator","userAgent","S3ImagesURI","apiendpoint","defaultPortraitID","size","imgsize","yoffset","color","bgcolor","defaultImageURI","encodeURIComponent","defaultimageURI","$observe","v","datasetobj","$eval","dataset","type","value","memberid","post","then","result","data","returnData","getContentUrl","imageonly","template","$inject","angular","module","directive","profilePicService","SUGUtilities","svc","parseProfilePicData","key","lckey","initials","profilepicdata","dataObject","hasOwnProperty","toLowerCase","indexOf","isBoolean","length","displayfirstname","displaylastname","substr","toUpperCase","firstname","lastname","id","factory"],"mappings":"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","file":"profilepic.min.js","sourcesContent":["(function(){\r\n\r\n\t/*\r\n\t\t* Profile Pic\r\n\t\t*\r\n\t\t* Attributes:\r\n\t\t* @memberid {number} - member Id of the user to load a profile pic for\r\n\t\t* @type {string} - Type of profile pic expected; options: default, initials, portrait, gravatar, facebook, customimage\r\n\t\t* @size {string} - The size of the preview. Options are: medium, large, xlarge, custom\r\n\t\t* @imgsize {number} - specify an image size\r\n\t\t* @yoffset {number} - vertical offset for the image\r\n\t\t* @color {hex} - icon text color\r\n\t\t* @bgcolor {hex} - icon background color\r\n\t\t* @dataset {} - object with attributes bundled inside\r\n\t\t* @value {string} - Pass in static letters to use as the profile pic initials\r\n\t\t* @refresh {boolean} - Force an update when values are passed in\r\n\t\t* @imageonly {boolean} - when set to false we use the css version of the html\r\n\t\t*\r\n\t\t* Usage w/ Member Id: \r\n\t\t* Usage w/ Static Initials: \r\n\t*/\r\n\r\n\tprofilePic.$inject = ['httpService','globalJSService'];\r\n\r\n\tfunction profilePic( httpService, global ){\r\n\t return {\r\n\t restrict: 'E',\r\n\t scope : {},\r\n\t controller : function(){ return; },\r\n\t link: function(scope, elem, attrs) {\r\n\t \t// secure url\r\n\t \tscope.secureURL = global.secureURL;\r\n\t\t\t\t\t\t// serve fresh image\r\n\t \tscope.refresh = Math.random();\r\n\t \t// add camera link\r\n\t \tscope.link = typeof attrs.link == 'undefined' ? false : attrs.link;\r\n\t \t// determine Retina status\r\n\t \tscope.isRetina = isRetina();\r\n\t \t// template variables\r\n\t \tscope.S3ImagesURI = global.S3ImagesURI;\r\n\t \t// required for member lookup\r\n\t \tscope.apiendpoint = global.apiendpoint;\r\n\t \t// portrait\r\n\t \tscope.defaultPortraitID = global.defaultPortraitID;\r\n \t\tscope.size = !scope.isRetina ? 30 : 64;\r\n \t\tscope.imgsize = 30;\r\n \t\tscope.yoffset = -3;\r\n \t\tif ( attrs.size == 'medium' ){\r\n\t \t\tscope.size = !scope.isRetina ? 64 : 128;\r\n\t \t\tscope.imgsize = 64;\r\n\t \t\tscope.yoffset = -6;\r\n\t \t} else if ( attrs.size == 'large' ){\r\n\t \t\tscope.size = !scope.isRetina ? 128 : 256;\r\n\t \t\tscope.imgsize = 128;\r\n\t \t\tscope.yoffset = -11;\r\n\t \t} else if ( attrs.size == 'xlarge' ){\r\n\t \t\tscope.size = 256;\r\n\t \t\tscope.imgsize = 256;\r\n\t \t\tscope.yoffset = -22;\r\n\t \t}\r\n\t \telse if( attrs.size == 'custom' && typeof attrs.imgsize != 'undefined' && typeof attrs.yoffset != 'undefined' ){\r\n\t\t\t\t\t// In order to get custom sizes to work, you also need to add the corresponding ppic classes for the imgsize to the _profilepic.scss file. Otherwise it will default to the ppic-30 css when displaying.\r\n\r\n \t\t\tscope.size = 256; // use the largest size\r\n \t\tscope.imgsize = attrs.imgsize;\r\n \t\tscope.yoffset = attrs.yoffset;\r\n \t\t}\r\n\r\n \t\t// allow overwriting of settings if passed into directive\r\n \t\tscope.yoffset = typeof attrs.yoffset == 'undefined' ? scope.yoffset : attrs.yoffset;\r\n \t\tscope.color = typeof attrs.color == 'undefined' ? '#F68B1C' : attrs.color;\r\n \t\tscope.bgcolor = typeof attrs.bgcolor == 'undefined' ? '#FFF590' : attrs.bgcolor;\r\n\r\n\t\t\t\tscope.defaultImageURI = encodeURIComponent( 'https://' + global.defaultimageURI + '/images/portraits/portrait'+scope.defaultPortraitID+'_'+ scope.size +'.png');\r\n\r\n\t \tattrs.$observe('dataset', function(v){\r\n\t \t\tvar datasetobj = scope.$eval(attrs.dataset);\r\n\t \t\tif ( datasetobj && 'type' in datasetobj ){\r\n\t \t\t\tscope.type = datasetobj.type;\r\n\t \t\tscope.value = datasetobj.value;\r\n\t \t\t}\r\n\t });\r\n\r\n\t var mobileAndTabletcheck = function() {\r\n\t\t\t\t var check = false;\r\n\t\t\t\t (function(a){if(/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(a.substr(0,4)))check = true})(navigator.userAgent||navigator.vendor||window.opera);\r\n\t\t\t\t return check;\r\n\t\t\t\t}\r\n\r\n\t \tattrs.$observe('value', function(v){\r\n\t \t\tif ( attrs.value ){\r\n\t\t scope.type = attrs.type;\r\n\t\t scope.value = attrs.value;\r\n\t \t\t}\r\n\t });\r\n\r\n\t\t\t\tattrs.$observe('bgcolor', function(v){\r\n\t \t\tif ( typeof attrs.bgcolor !== 'undefined' ) {\r\n\t\t\t\t\t\t scope.bgcolor = attrs.bgcolor;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tscope.bgcolor = '#FFF590';\r\n\t\t\t\t\t};\r\n\r\n\t });\r\n\r\n\t\t\t\tattrs.$observe('color', function(v){\r\n\t \t\tif ( typeof attrs.color !== 'undefined' ) {\r\n\t\t\t\t\t\t scope.color = attrs.color;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tscope.color = '#F68B1C';\r\n\t\t\t\t\t};\r\n\r\n\t });\r\n\r\n\t \tattrs.$observe('memberid', function(v){\r\n\t \t\tif ( attrs.memberid ){\r\n\t\t \t\thttpService.post( scope.apiendpoint + '/profile/picByMember/', { \"memberid\" : attrs.memberid } )\r\n\t\t \t\t.then( function( result){\r\n\t\t\t\t\t\t\tscope.type = result.data.returnData.data.type;\r\n\t\t\t\t\t\t\tscope.value = result.data.returnData.data.value;\r\n\t\t \t\t});\r\n\t \t\t}\r\n\t });\r\n\r\n\t\t\t\t// Observer for refresh attribute to ensure that it updates when a value is passed in to the directive\r\n\t\t\t\tattrs.$observe('refresh', function(v){\r\n\t \t\tif ( typeof attrs.refresh !== 'undefined' ) {\r\n\t\t\t\t\t\tscope.refresh = attrs.refresh;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tscope.refresh = scope.refresh;\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t});\r\n\r\n\t \tscope.getContentUrl = function() {\r\n\t \t\tscope.type = scope.type ? scope.type : 'default';\r\n\t \t\tif ( attrs.imageonly == 'false' || typeof attrs.imageonly == 'undefined' ){\r\n\t \t\t\treturn '/view/templates/profilepic-' + scope.type + '-css.html';\r\n\t \t\t} else {\r\n\t \t\t\treturn '/view/templates/profilepic-' + scope.type + '.html';\r\n\t \t\t}\r\n\r\n\r\n\t }\r\n\r\n\t \tfunction isRetina(){\r\n\t \t return ((window.matchMedia && (window.matchMedia('only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx), only screen and (min-resolution: 75.6dpcm)').matches || window.matchMedia('only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min--moz-device-pixel-ratio: 2), only screen and (min-device-pixel-ratio: 2)').matches)) || (window.devicePixelRatio && window.devicePixelRatio >= 2)) && /(iPad|iPhone|iPod)/g.test(navigator.userAgent);\r\n\t \t}\r\n\r\n\t },\r\n\r\n\t template: '
'\r\n\t };\r\n\r\n\r\n\r\n\t}\r\n\r\n\tangular.module('SUGApp')\r\n\t.directive( 'profilePic', profilePic );\r\n\r\n}());\r\n\r\n\r\n// fb_userid = 617313591\r\n","(function(){\r\n\tprofilePicService.$inject = ['SUGUtilities'];\r\n\tfunction profilePicService(SUGUtilities){\r\n\t\tvar svc = {};\r\n\t\t\r\n\t\tsvc.parseProfilePicData = function( data ){\r\n\t\t\tif ( typeof data === 'object' ){\r\n\t\t\t\t// fix object keys to lowercase\r\n\t\t\t\tvar dataObject = {};\r\n\t\t\t\tfor ( var key in data ){\r\n if (data.hasOwnProperty(key)){\r\n var lckey = key.toLowerCase();\r\n dataObject[lckey] = data[key];\r\n\r\n // check if we have proper nouns that were converted to booleans by poor serialization\r\n // this is accounted for in a similar way in the coldfusion code profilePicService.cfc parseProfilePicData()\r\n // i.e. user's first/last name is \"No Yes\", initials should come out as \"NY\"\r\n if( ['displayfirstname','displaylastname','firstname','lastname'].indexOf(lckey) >= 0 && SUGUtilities.isBoolean(data[lckey])){\r\n if(!data[lckey]){\r\n data[lckey] = \"No\";\r\n } else {\r\n data[lckey] = \"Yes\";\r\n }\r\n }\r\n }\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( \"profilepicdata\" in dataObject && dataObject.profilepicdata.length ){\r\n\t\t\t\t\treturn dataObject.profilepicdata;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tif ( \"displayfirstname\" in dataObject && \"displaylastname\" in dataObject && dataObject.displayfirstname.length && dataObject.displaylastname.length ){\r\n\t\t\t\t\tvar initials = dataObject.displayfirstname.substr(0,1).toUpperCase() + dataObject.displaylastname.substr(0,1).toUpperCase();\r\n\t\t\t\t} else\r\n\t\t\t\tif ( \"firstname\" in dataObject && \"lastname\" in dataObject && dataObject.firstname.length && dataObject.lastname.length ){\r\n\t\t\t\t\tvar initials = dataObject.firstname.substr(0,1).toUpperCase() + dataObject.lastname.substr(0,1).toUpperCase();\r\n\t\t\t\t}\r\n\t\t\t\tif ( initials ){\r\n\t\t\t\t\tvar profilepicdata = {};\r\n\t\t\t\t\tprofilepicdata['id'] = 1;\r\n\t\t\t\t\tprofilepicdata['type'] = 'initials';\r\n\t\t\t\t\tprofilepicdata['value'] = initials;\r\n\t\t\t\t\treturn profilepicdata;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn { \"id\" : \"2\", \"type\" : \"portrait\", \"value\" : \"0\" };\r\n\t\t}\r\n\t\t\r\n\t\treturn svc;\r\n\t}\r\n\r\n angular.module('SUGApp').factory('profilePicService',profilePicService);//register factory with AngularJS\r\n\r\n}());"]}