diff --git a/build/angular-word-cloud.js b/build/angular-word-cloud.js
index c6f615f..d63a427 100644
--- a/build/angular-word-cloud.js
+++ b/build/angular-word-cloud.js
@@ -39,7 +39,11 @@ angular.module('vr.directives.wordCloud',[])
var type = angular.isUndefined(attr.type) ? 'list' : attr.type;
switch(type) {
case 'cloud':
- elem.children().eq(0).attr('style',"font-size: "+$interpolate.startSymbol()+" fontSize(word.size) "+$interpolate.endSymbol()+";");
+ elem.children().eq(0).attr(
+ 'style',
+ "font-size: " + $interpolate.startSymbol() + " fontSize(word.size) " + $interpolate.endSymbol() + ";" +
+ "font-weight: " + $interpolate.startSymbol() + " fontWeight(word) " + $interpolate.endSymbol() + ";"
+ );
break;
case 'list':
break;
@@ -68,7 +72,36 @@ angular.module('vr.directives.wordCloud',[])
words = [];
}
- words = words.map(function(e) { return {word: e.word, size: e.size, rawSize: parseFloat(e.size) }; });
+ var min = words.reduce(function(a,b){
+ if(a.size < b.size) {
+ return a;
+ }
+ return b;
+ }).size;
+
+ var max = words.reduce(function(a,b){
+ if(a.size > b.size) {
+ return a;
+ }
+ return b;
+ }).size;
+
+ var uniqueCount = unique(
+ words.map(function(word){
+ return word.size.toString();
+ })
+ ).length;
+
+ words = words.map(function(e) {
+ return {
+ word: e.word,
+ size: e.size,
+ rawSize: parseFloat(e.size),
+ min: min,
+ max: max,
+ uniqueCount: uniqueCount
+ };
+ });
scope.mywords = words;
};
@@ -80,6 +113,20 @@ angular.module('vr.directives.wordCloud',[])
return size;
};
+ scope.fontWeight = function(word) {
+
+ var weightRange = (word.max - word.min) / ( word.uniqueCount < 9 ? word.uniqueCount : 9);
+
+ for( var i = 0; i < 10; i++) {
+
+ if ( word.size < (weightRange * i) ){
+ return i * 100;
+ }
+ }
+
+ return 900;
+ };
+
scope.$watch('words',function() {
convertWords();
},true);
@@ -90,6 +137,19 @@ angular.module('vr.directives.wordCloud',[])
scope.reverse = newVal.substr(-4).toLowerCase() == 'desc';
});
+ function unique(array){
+ var u = {},
+ a = [];
+
+ for(var i = 0; i < array.length; ++i){
+ if(u.hasOwnProperty(array[i])) {
+ continue;
+ }
+ a.push(array[i]);
+ u[array[i]] = 1;
+ }
+ return a;
+ }
}
}
};
diff --git a/build/angular-word-cloud.min.js b/build/angular-word-cloud.min.js
index 8de3a1a..a6364a6 100644
--- a/build/angular-word-cloud.min.js
+++ b/build/angular-word-cloud.min.js
@@ -1,2 +1,2 @@
-/*! angular-word-cloud 2013-11-18 */
-angular.module("vr.directives.wordCloud",[]).directive("wordCloud",["$interpolate",function(a){return{restrict:"EA",replace:!0,transclude:!0,scope:{words:"=",sort:"@"},template:"
",controller:["$scope","$transclude",function(a,b){a.initClick=function(c){b(function(b,d){a.clickFn=d[c]})}}],compile:function(b,c){var d=angular.isUndefined(c.type)?"list":c.type;switch(d){case"cloud":b.children().eq(0).attr("style","font-size: "+a.startSymbol()+" fontSize(word.size) "+a.endSymbol()+";");break;case"list":}return function(a,b,c){a.clickFn=function(){},angular.isUndefined(c.ngClick)||a.initClick(c.ngClick);var d=function(){var b=angular.copy(a.words);angular.isArray(b)&&b.length>0?angular.isObject(b[0])?(angular.isUndefined(b[0].word)||angular.isUndefined(b[0].size))&&(b=[]):b=b.map(function(a){return{word:a,size:1}}):b=[],b=b.map(function(a){return{word:a.word,size:a.size,rawSize:parseFloat(a.size)}}),a.mywords=b};a.fontSize=function(a){return-1==(""+a).search("(px|em|in|cm|mm|ex|pt|pc|%)+")?a+"em":a},a.$watch("words",function(){d()},!0),a.$watch("sort",function(b){b||(b="no"),a.param="alpha"==b.substr(0,5)?"word":"no"==b?"":"rawSize",a.reverse="desc"==b.substr(-4).toLowerCase()})}}}}]);
\ No newline at end of file
+/*! angular-word-cloud 2014-07-02 */
+angular.module("vr.directives.wordCloud",[]).directive("wordCloud",["$interpolate",function(a){return{restrict:"EA",replace:!0,transclude:!0,scope:{words:"=",sort:"@"},template:"
",controller:["$scope","$transclude",function(a,b){a.initClick=function(c){b(function(b,d){a.clickFn=d[c]})}}],compile:function(b,c){var d=angular.isUndefined(c.type)?"list":c.type;switch(d){case"cloud":b.children().eq(0).attr("style","font-size: "+a.startSymbol()+" fontSize(word.size) "+a.endSymbol()+";font-weight: "+a.startSymbol()+" fontWeight(word) "+a.endSymbol()+";");break;case"list":}return function(a,b,c){function d(a){for(var b={},c=[],d=0;d0?angular.isObject(b[0])?(angular.isUndefined(b[0].word)||angular.isUndefined(b[0].size))&&(b=[]):b=b.map(function(a){return{word:a,size:1}}):b=[];var c=b.reduce(function(a,b){return a.sizeb.size?a:b}).size,f=d(b.map(function(a){return a.size.toString()})).length;b=b.map(function(a){return{word:a.word,size:a.size,rawSize:parseFloat(a.size),min:c,max:e,uniqueCount:f}}),a.mywords=b};a.fontSize=function(a){return-1==(""+a).search("(px|em|in|cm|mm|ex|pt|pc|%)+")?a+"em":a},a.fontWeight=function(a){for(var b=(a.max-a.min)/(a.uniqueCount<9?a.uniqueCount:9),c=0;10>c;c++)if(a.size 0 ){
+ min = words.reduce(function(a,b){
+ if(a.size < b.size) {
+ return a;
+ }
+ return b;
+ }).size;
+
+ max = words.reduce(function(a,b){
+ if(a.size > b.size) {
+ return a;
+ }
+ return b;
+ }).size;
+ }
+
+ var uniqueCount = unique(
+ words.map(function(word){
+ return word.size.toString();
+ })
+ ).length;
+
+ words = words.map(function(e) {
+ return {
+ word: e.word,
+ size: e.size,
+ rawSize: parseFloat(e.size),
+ min: min,
+ max: max,
+ uniqueCount: uniqueCount
+ };
+ });
scope.mywords = words;
};
@@ -80,6 +118,20 @@ angular.module('vr.directives.wordCloud',[])
return size;
};
+ scope.fontWeight = function(word) {
+
+ var weightRange = (word.max - word.min) / ( word.uniqueCount < 9 ? word.uniqueCount : 9);
+
+ for( var i = 0; i < 10; i++) {
+
+ if ( word.size < (weightRange * i) ){
+ return i * 100;
+ }
+ }
+
+ return 900;
+ };
+
scope.$watch('words',function() {
convertWords();
},true);
@@ -90,6 +142,19 @@ angular.module('vr.directives.wordCloud',[])
scope.reverse = newVal.substr(-4).toLowerCase() == 'desc';
});
+ function unique(array){
+ var u = {},
+ a = [];
+
+ for(var i = 0; i < array.length; ++i){
+ if(u.hasOwnProperty(array[i])) {
+ continue;
+ }
+ a.push(array[i]);
+ u[array[i]] = 1;
+ }
+ return a;
+ }
}
}
};