BaseElement.js
Home
/
src /
webvowl /
js /
elements /
BaseElement.js
/**
* The base element for all visual elements of webvowl.
*/
module.exports = (function (){
var Base = function ( graph ){
// Basic attributes
var equivalents = [],
id,
label,
type,
iri,
baseIri,
// Additional attributes
annotations,
attributes = [],
backgroundColor,
comment,
description,
equivalentBase,
visualAttributes = [],
// Style attributes
focused = false,
indications = [],
mouseEntered = false,
styleClass,
visible = true,
backupLabel,
// Other
languageTools = require("../util/languageTools")();
this.backupLabel = function ( label ){
if ( !arguments.length ) return backupLabel;
backupLabel = label;
};
// Properties
this.attributes = function ( p ){
if ( !arguments.length ) return attributes;
attributes = p;
return this;
};
this.annotations = function ( p ){
if ( !arguments.length ) return annotations;
annotations = p;
return this;
};
this.redrawElement = function (){
// TODO: OVERLOADED BY INDIVIDUAL ELEMENTS
};
this.backgroundColor = function ( p ){
if ( !arguments.length ) return backgroundColor;
backgroundColor = p;
return this;
};
this.baseIri = function ( p ){
if ( !arguments.length ) return baseIri;
baseIri = p;
return this;
};
this.comment = function ( p ){
if ( !arguments.length ) return comment;
comment = p;
return this;
};
this.description = function ( p ){
if ( !arguments.length ) return description;
description = p;
return this;
};
this.equivalents = function ( p ){
if ( !arguments.length ) return equivalents;
equivalents = p || [];
return this;
};
this.equivalentBase = function ( p ){
if ( !arguments.length ) return equivalentBase;
equivalentBase = p;
return this;
};
this.focused = function ( p ){
if ( !arguments.length ) return focused;
focused = p;
return this;
};
this.id = function ( p ){
if ( !arguments.length ) return id;
id = p;
return this;
};
this.indications = function ( p ){
if ( !arguments.length ) return indications;
indications = p;
return this;
};
this.iri = function ( p ){
if ( !arguments.length ) return iri;
iri = p;
return this;
};
this.label = function ( p ){
if ( !arguments.length ) return label;
label = p;
return this;
};
this.mouseEntered = function ( p ){
if ( !arguments.length ) return mouseEntered;
mouseEntered = p;
return this;
};
this.styleClass = function ( p ){
if ( !arguments.length ) return styleClass;
styleClass = p;
return this;
};
this.type = function ( p ){
if ( !arguments.length ) return type;
type = p;
return this;
};
this.visible = function ( p ){
if ( !arguments.length ) return visible;
visible = p;
return this;
};
this.visualAttributes = function ( p ){
if ( !arguments.length ) return visualAttributes;
visualAttributes = p;
return this;
};
this.commentForCurrentLanguage = function (){
return languageTools.textInLanguage(this.comment(), graph.language());
};
/**
* @returns {string} the css class of this node..
*/
this.cssClassOfNode = function (){
return "node" + this.id();
};
this.descriptionForCurrentLanguage = function (){
return languageTools.textInLanguage(this.description(), graph.language());
};
this.defaultLabel = function (){
return languageTools.textInLanguage(this.label(), "default");
};
this.indicationString = function (){
return this.indications().join(", ");
};
this.labelForCurrentLanguage = function (){
var preferredLanguage = graph && graph.language ? graph.language() : null;
return languageTools.textInLanguage(this.label(), preferredLanguage);
};
};
Base.prototype.constructor = Base;
Base.prototype.equals = function ( other ){
return other instanceof Base && this.id() === other.id();
};
Base.prototype.toString = function (){
return this.labelForCurrentLanguage() + " (" + this.type() + ")";
};
return Base;
}());