import * as cliProgress from 'cli-progress';

export default class ProgressBarUtils {

	private barProcess: any;
	private intervalProcess: any;

	constructor(private infinityBar:boolean) {

		let options = {};

		if (this.infinityBar) 
			options = {'clearOnComplete':true}

		this.barProcess = new cliProgress.Bar(options, cliProgress.Presets.shades_classic);
	}
  
	public start() {

		let self = this;
		let currentValue = 0;

		if (this.infinityBar) {
			self.barProcess.start(500, 0);

			self.intervalProcess = setInterval(function() {

				currentValue = currentValue + 50;

				if (currentValue > 500)
					currentValue = 0;
					
				self.barProcess.update(currentValue);
			},1000);
		}
		else
			self.barProcess.start(200, 0);
	}

	public stop() {
		this.barProcess.stop();

		if (this.infinityBar)
			clearInterval(this.intervalProcess)
	}
}