MCPcopy Index your code
hub / github.com/plotly/plotly.js / drawTexts

Function drawTexts

src/components/legend/draw.js:562–616  ·  view source on GitHub ↗
(g, gd, legendObj)

Source from the content-addressed store, hash-verified

560}
561
562function drawTexts(g, gd, legendObj) {
563 var legendId = helpers.getId(legendObj);
564 var legendItem = g.data()[0][0];
565 var trace = legendItem.trace;
566 var isPieLike = Registry.traceIs(trace, 'pie-like');
567 var isEditable = !legendObj._inHover && gd._context.edits.legendText && !isPieLike;
568 var maxNameLength = legendObj._maxNameLength;
569
570 var name, font;
571 if(legendItem.groupTitle) {
572 name = legendItem.groupTitle.text;
573 font = legendItem.groupTitle.font;
574 } else {
575 font = legendObj.font;
576 if(!legendObj.entries) {
577 name = isPieLike ? legendItem.label : trace.name;
578 if(trace._meta) {
579 name = Lib.templateString(name, trace._meta);
580 }
581 } else {
582 name = legendItem.text;
583 }
584 }
585
586 var textEl = Lib.ensureSingle(g, 'text', legendId + 'text');
587
588 textEl.attr('text-anchor', 'start')
589 .call(Drawing.font, font)
590 .text(isEditable ? ensureLength(name, maxNameLength) : name);
591
592 var textGap = legendObj.indentation + legendObj.itemwidth + constants.itemGap * 2;
593 svgTextUtils.positionText(textEl, textGap, 0);
594
595 if(isEditable) {
596 textEl.call(svgTextUtils.makeEditable, {gd: gd, text: name})
597 .call(textLayout, g, gd, legendObj)
598 .on('edit', function(newName) {
599 this.text(ensureLength(newName, maxNameLength))
600 .call(textLayout, g, gd, legendObj);
601
602 var fullInput = legendItem.trace._fullInput || {};
603 var update = {};
604
605 update.name = newName;
606
607 if(fullInput._isShape) {
608 return Registry.call('_guiRelayout', gd, 'shapes[' + trace.index + '].name', update.name);
609 } else {
610 return Registry.call('_guiRestyle', gd, update, trace.index);
611 }
612 });
613 } else {
614 textLayout(textEl, g, gd, legendObj);
615 }
616}
617
618/*
619 * Make sure we have a reasonably clickable region.

Callers

nothing calls this directly

Calls 2

ensureLengthFunction · 0.85
textLayoutFunction · 0.70

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…