123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- var angularSkycons = angular.module( 'angular-skycons', [] );
- angularSkycons.directive( 'skycon', function () {
- return {
- restrict: 'E',
- replace: true,
- scope: {
- icon: "=",
- size: "="
- },
- link: function ( scope, element, attrs ) {
- // make a canvas for our icon
- var canvas = document.createElement( 'canvas' );
- // set the CSS class from attribute
- if ( !attrs.class ) {
- canvas.className = "";
- } else {
- canvas.className = attrs.class;
- }
- // set default color if "color" attribute not present
- var config = {};
- if ( !attrs.color ) {
- config.color = "black";
- } else {
- config.color = attrs.color;
- }
- var skycons = new Skycons( config );
- // watch the size property from the controller
- scope.$watch( "size", function ( newVal, oldVal ) {
- if ( newVal ) {
- canvas.height = newVal;
- canvas.width = newVal;
- } else {
- canvas.height = scope.size || 64;
- canvas.width = scope.size || 64;
- }
- }, true );
- // watch the icon property from the controller
- scope.$watch( "icon", function () {
- skycons.set( canvas, scope.icon );
- }, true );
- skycons.play();
- if ( element[0].nodeType === 8 ) {
- element.replaceWith( canvas );
- } else {
- element[0].appendChild( canvas );
- }
-
- scope.$on('$destroy', function () {
- skycons.remove(canvas);
- if (skycons.list.length === 0) {
- skycons.pause(canvas);
- }
- });
- }
- };
- } );
|