Skip to content

h3isenbug/Angular4-word-cloud

 
 

Repository files navigation

ag-word-cloud

NPM

Coverage Status npm version GitHub issues GitHub stars GitHub license

Angular4 Word Cloud

Links:

Installation

To install this library, run:

$ npm install angular4-word-cloud --save
$ npm install d3 --save

API

Import

// In your App's module:
imports: [
   AgWordCloudModule.forRoot()
]

Then add add the script to .angular-cli.json

"scripts": [
      ***
        "../node_modules/angular4-word-cloud/d3.min.js"
      ]

How to use

There are one directive for word cloud: ag-word-cloud, to use it just add this block on your html file:

<div AgWordCloud 
	#word_cloud_chart=ag-word-cloud 
	[wordData]="word_cloud"
	 [options]="options">
	</div>
// Create Work Cloud Data Array
wordData: Array<AgWordCloudData> = [// Words];
// Word Cloud Options
options = {
	settings: {
		minFontSize: 10,
		maxFontSize: 100,
	},
	margin: {
		top: 10,
		right: 10,
		bottom: 10,
		left: 10
	},
	labels: true // false to hide hover labels
};

Properties

  • wordData (Array<WordCloudData> | WordCloudData[]) - set of words, it should be Array<WordCloudData> and each object must have a text and size;

  • colors (?Array<string> | string[]) - data colors, will use default and|or random colors if not specified.

  • options (?WordCloudOptions) - word cloud options and there are two object you can pass it settings and margin.

    • setting containes minFontSize and maxFontSize for word sets.
    • margin of canves top, left, bottom, right, Default values is 10.
    • labels show Size label at the bottom
  • width and height of canvas, the Default value for width is the width of the container, and the height equals the width * 0.75.

To Update it dynamically

First of all you need to add a reference for your div:

<div WordCloud #word_cloud_chart=word-cloud [wordData]="word_cloud" [height]="300"></div>

Update your component to this:

export class MyComponent implements ..... {
...
	@ViewChild('word_cloud_chart') word_cloud_chart: WordCloudDirective;
	word_cloud: Array<WordCloudData> = [];
.....
	updateWordCloud(wordCloud: WordCloud) {
		this.word_cloud.length = 0;
		const temp = wordCloud.words.map(res => {
			return {text: res.word, size: res.score};
		});
    	this.word_cloud.push(...temp);
		setTimeout(() => {
			this.word_cloud_chart.update();
		});
	}

When ever you ready just call updateWordCloud .

Troubleshooting

Please follow this guidelines when reporting bugs and feature requests:

  1. Use GitHub Issues board to report bugs and feature requests (not our email address)
  2. Please always write steps to reproduce the error. That way we can focus on fixing the bug, not scratching our heads trying to reproduce it.

Thanks for understanding!

License

MIT © Abdullah Alhazmy

Packages

No packages published

Languages

  • JavaScript 65.6%
  • TypeScript 31.4%
  • HTML 3.0%