;(function(undefined) { 'use strict'; if (typeof sigma === 'undefined') throw 'sigma is not declared'; // Initialize packages: sigma.utils.pkg('sigma.svg.labels'); /** * The default label renderer. It renders the label as a simple text. */ sigma.svg.labels.def = { /** * SVG Element creation. * * @param {object} node The node object. * @param {configurable} settings The settings function. */ create: function(node, settings) { var prefix = settings('prefix') || '', size = node[prefix + 'size'], text = document.createElementNS(settings('xmlns'), 'text'); var fontSize = (settings('labelSize') === 'fixed') ? settings('defaultLabelSize') : settings('labelSizeRatio') * size; var fontColor = (settings('labelColor') === 'node') ? (node.color || settings('defaultNodeColor')) : settings('defaultLabelColor'); text.setAttributeNS(null, 'data-label-target', node.id); text.setAttributeNS(null, 'class', settings('classPrefix') + '-label'); text.setAttributeNS(null, 'font-size', fontSize); text.setAttributeNS(null, 'font-family', settings('font')); text.setAttributeNS(null, 'fill', fontColor); text.innerHTML = node.label; text.textContent = node.label; return text; }, /** * SVG Element update. * * @param {object} node The node object. * @param {DOMElement} text The label DOM element. * @param {configurable} settings The settings function. */ update: function(node, text, settings) { var prefix = settings('prefix') || '', size = node[prefix + 'size']; var fontSize = (settings('labelSize') === 'fixed') ? settings('defaultLabelSize') : settings('labelSizeRatio') * size; // Case when we don't want to display the label if (!settings('forceLabels') && size < settings('labelThreshold')) return; if (typeof node.label !== 'string') return; // Updating text.setAttributeNS(null, 'x', Math.round(node[prefix + 'x'] + size + 3)); text.setAttributeNS(null, 'y', Math.round(node[prefix + 'y'] + fontSize / 3)); // Showing text.style.display = ''; return this; } }; }).call(this);