letterAvatar.js 2.83 KB
Newer Older
Luis Gangas committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
/*
 * LetterAvatar
 * 
 * Artur Heinze
 * Create Letter avatar based on Initials
 * based on https://gist.github.com/leecrossley/6027780
 */
(function (w, d) {


  function LetterAvatar(name, size) {

    name = name || '';
    size = size || 45;
    // "#2c3e50" "#34495e"
    var colours = [
      "#1abc9c", "#2ecc71", "#3498db", "#9b59b6", "#16a085", "#27ae60", "#2980b9", "#8e44ad",
      "#f1c40f", "#e67e22", "#e74c3c", "#ecf0f1", "#95a5a6", "#f39c12", "#d35400", "#c0392b", "#bdc3c7", "#7f8c8d"
    ],
      nameSplit = String(name).toUpperCase().split(' '),
      initials, charIndex, colourIndex, canvas, context, dataURI;


    if (nameSplit.length == 1) {
      initials = nameSplit[0] ? nameSplit[0].charAt(0) : '?';
    } else {
      initials = nameSplit[0].charAt(0) + nameSplit[1].charAt(0);
    }

    if (w.devicePixelRatio) {
      size = (size * w.devicePixelRatio);
    }

    charIndex = (initials == '?' ? 72 : initials.charCodeAt(0)) - 64;
    colourIndex = charIndex % 20;
    canvas = d.createElement('canvas');
    canvas.width = size;
    canvas.height = size;
    context = canvas.getContext("2d");

//    context.fillStyle = colours[colourIndex - 1];
    context.fillStyle = "#3BA4CE";
    context.fillRect(0, 0, canvas.width, canvas.height);
    context.font = Math.round(canvas.width / 2) + "px Arial";
    context.textAlign = "center";
    context.fillStyle = "#FFF";
    context.fillText(initials, size / 2, size / 1.5);

    dataURI = canvas.toDataURL();
    canvas = null;

    return dataURI;
  }

  LetterAvatar.transform = function () {

    Array.prototype.forEach.call(d.querySelectorAll('img[avatar]'), function (img, name) {
      name = img.getAttribute('avatar');
      img.src = LetterAvatar(name, img.getAttribute('width'));
      img.removeAttribute('avatar');
      img.setAttribute('alt', name);
    });
  };


  // AMD support
  if (typeof define === 'function' && define.amd) {

    define(function () {
      return LetterAvatar;
    });

    // CommonJS and Node.js module support.
  } else if (typeof exports !== 'undefined') {

    // Support Node.js specific `module.exports` (which can be a function)
    if (typeof module != 'undefined' && module.exports) {
      exports = module.exports = LetterAvatar;
    }

    // But always support CommonJS module 1.1.1 spec (`exports` cannot be a function)
    exports.LetterAvatar = LetterAvatar;

  } else {

    window.LetterAvatar = LetterAvatar;

    d.addEventListener('DOMContentLoaded', function (event) {
      LetterAvatar.transform();
    });
  }

})(window, document);



function generarLetraCircular() {
  Array.prototype.forEach.call(document.querySelectorAll('img[avatar]'), function (img, name) {
    name = img.getAttribute('avatar');
    img.src = LetterAvatar(name, img.getAttribute('width'));
    img.removeAttribute('avatar');
    img.setAttribute('alt', name);
  });
}