7

标题说明了一切,我在纸上创建了一个图表并填充了单元格和链接,现在我需要添加一个工具提示来显示有关每个元素的信息(选择,悬停......)。

我感谢所有提示,链接,答案...

4

3 回答 3

3

如果将<title />元素添加到 SVG 标记到形状定义中(假设您使用的是自定义形状):

<..shape markup...><title /><...end of shape markup...>

例如,您的标记可能如下所示:

<g class="rotatable">
   <g class="scalable">
      <circle class="element-process"/>
      <title />
   </g><text/>
</g>

然后,您可以在元素定义链接中添加静态工具提示:

joint.shapes.custom.myCircle = joint.shapes.basic.Generic.extend({

    markup: '<g class="rotatable"><g class="scalable"><circle class="element-process"/><title /></g><text/></g>',

    defaults: joint.util.deepSupplement({
        type: 'custom.myCircle,
        attrs: {
            title: {text: 'Static Tooltip'},
            '.element-process': { 'stroke-width': 1, r: 30, stroke: 'black', transform: 'translate(30, 30)' },
            text: { ref: '.element-process'}
        },
        size: { width: 100, height: 100 }
    }, joint.shapes.basic.Generic.prototype.defaults)
});

或稍后在代码中省略/覆盖title: {text: 'Static Tooltip'}并定义工具提示文本:

var cell = new joint.shapes.custom.myCircle();
var toolTip = 'Dynamic Tooltip Text;
cell.attr('title/text', toolTip);
于 2015-04-14T22:55:41.207 回答
1

我修改了joint.js 以使用为具有“text”属性的元素建立的模式来处理“title”属性。如果您寻找:

// Make special case for `text` attribute.

将有一个块用于处理“文本”属性。我在它之后添加了这个块来处理“标题”。它将 svg:title 节点添加到当前元素:

if (!_.isUndefined(attrs.title)) {
    var title = document.createElementNS('http://www.w3.org/2000/svg', 'title'),
        node = document.createTextNode(attrs.title);
    title.appendChild(node);

    $selected.each(function () {
       V(this).prepend(title);
    });
}
于 2015-07-21T20:21:01.337 回答
-2

您应该需要的一切都可以在joint.ui.Tooltip.

您需要能够定义图形中生成的元素的路径,但这在大多数情况下应该不会太难。我用这些东西工作了不到一周,看起来相当直截了当。

于 2014-10-17T19:27:09.637 回答