Home Reference Source Repository

js/base/directives/ModuleName.js

'use strict';

/**
* Directive that will display the module name from the module code if available
*/
class ModuleName{

	/**
	 * Creates a new instance of the ModuleName directive
	 */
	constructor(moduleService){
		/**
		 * A reference to ModuleService.
		 */
		this.moduleService = moduleService;

		/**
		 * Directive restricted to Attribute.
		 */
		this.restrict = 'A';

		/**
		 * Isolated scope for directive.
		 */
		this.scope = {
			'moduleName' : '='
		};

		const self = this;
		/**
		 * Linking function.
		 */
		this.link = function(){
			self.linkDirective(...arguments);
		};
	}

	/**
	 * Link function for the directive
	 */
	linkDirective(scope, element){
		const self = this;
		scope.$watch('moduleName', function(moduleId){
			if(moduleId == null){
				element.text('');
			}
			else{
				self.moduleService.getModuleName(moduleId).then(function(name){
					element.text(name ? name : 'unknown');
				});
			}
		});

	}
}

/**
 * Factory to create a new instance of the directive
 */
var ModuleNameFactory = function() {
	return new ModuleName(...arguments);
};
ModuleNameFactory.$inject = ['ModuleService'];
export default ModuleNameFactory;