Блок-схема с jsPlumb

Я пытаюсь создать блок-схему с помощью jsPlumb. У меня есть два элемента, и я хочу соединить их линией. Я хочу линию, но не огромную точку, как сейчас. Я пытался установить радиус точки везде, где только мог, но он не изменился и остался на уровне 20 пикселей по умолчанию. Что я делаю неправильно?

<div id="start">Start</div>
<div id="msgtype">Lorem ipsum dolor sit amet</div>

jsPlumb.importDefaults({
    Endpoints : [ [ 'Dot', {radius:1} ], [ 'Dot', { radius:1 } ]]
});
var connectorPaintStyle = {
    lineWidth:4,
    fillStyle:'#333333',
    joinstyle:'round',
    outlineWidth:0,
    radius: 1,
}
var eleStart = jsPlumb.addEndpoint('start', {
    isSource:true,
    isTarget:false
});

var eleMsgtypeTop = jsPlumb.addEndpoint('msgtype', {
    isTarget:true,
    parameters:{
        endpoint:'dot',
        radius: 1
    },
    anchor: 'TopCenter',
    radius: 1,
    connectorStyle:connectorPaintStyle
});
jsPlumb.connect({ source:eleStart, 
        target:eleMsgtypeTop,
        connectorStyle:connectorPaintStyle,
        endpoint:[ 'Dot', { radius:1, hoverClass:'myEndpointHover' }],
        connectorStyle:connectorPaintStyle
});

Производство этого:

[]

Демонстрация JSFiddle


person Echilon    schedule 06.02.2013    source источник


Ответы (2)


Попробуйте это: http://jsfiddle.net/GT884/1/

 ;(function () {

window.jsPlumbDemo = {

    init: function () {

        jsPlumb.importDefaults({
            DragOptions: {
                cursor: "pointer",
                zIndex: 2000
            },
            HoverClass: "connector-hover"
        });

        var connectorStrokeColor = "rgba(50, 50, 200, 1)",
            connectorHighlightStrokeColor = "rgba(180, 180, 200, 1)",
            hoverPaintStyle = {
                strokeStyle: "#7ec3d9"
            };
        var connection1 = jsPlumb.connect({
            source: "start",
            target: "msgtype",
            connector: "Bezier",
            cssClass: "c1",
            endpoint: "Blank",
            endpointClass: "c1Endpoint",
            anchors: ["BottomCenter", [0.75, 0, 0, -1]],
            paintStyle: {
                lineWidth: 6,
                strokeStyle: "#a7b04b",
                outlineWidth: 1,
                outlineColor: "#666"
            },
            endpointStyle: {
                fillStyle: "#a7b04b"
            },
            hoverPaintStyle: hoverPaintStyle
        });

        // make all .window divs draggable
        jsPlumb.draggable(jsPlumb.getSelector(".window"));

    }
};
})();

jsPlumb.bind("ready", function () {

jsPlumb.init();

// chrome fix.
document.onselectstart = function () {
    return false;
};

// render mode
var resetRenderMode = function (desiredMode) {
    var newMode = jsPlumb.setRenderMode(desiredMode);
    $(".rmode").removeClass("selected");
    $(".rmode[mode='" + newMode + "']").addClass("selected");

    $(".rmode[mode='canvas']").attr("disabled", !jsPlumb.isCanvasAvailable());
    $(".rmode[mode='svg']").attr("disabled", !jsPlumb.isSVGAvailable());
    $(".rmode[mode='vml']").attr("disabled", !jsPlumb.isVMLAvailable());

    //var disableList = (newMode === jsPlumb.VML) ? ",.rmode[mode='svg']" : ".rmode[mode='vml']"; 
    //  $(disableList).attr("disabled", true);              
    jsPlumbDemo.init();
};

$(".rmode").bind("click", function () {
    var desiredMode = $(this).attr("mode");
    if (jsPlumbDemo.reset) jsPlumbDemo.reset();
    jsPlumb.reset();
    resetRenderMode(desiredMode);
});

// explanation div is draggable
$("#explanation,.renderMode").draggable();

resetRenderMode(jsPlumb.SVG);

});
person Jai    schedule 06.02.2013
comment
Спасибо, но никакого эффекта, и все еще кажется, что линия зацикливается сама на себе, а не идет прямо к конечной точке назначения. - person Echilon; 06.02.2013
comment
если вы можете сделать для этого скрипку, это очень поможет в этом: jsfiddle.net - person Jai; 06.02.2013

Полное, окончательное решение было:

;(function () {
window.plumbify = {
    init: function () {
        jsPlumb.importDefaults({
            DragOptions: {
                cursor: 'pointer',
                zIndex: 2000
            },
            HoverClass: 'connector-hover'
        });

        var connectorStrokeColor = 'rgba(50, 50, 200, 1)',
            connectorHighlightStrokeColor = 'rgba(180, 180, 200, 1)',
            paintStyle = {
                lineWidth: 3,
                strokeStyle: '#a7b04b',
                outlineWidth: 1,
                outlineColor: '#666'
            },
            hoverPaintStyle = {
                strokeStyle: '#7ec3d9'
            };
        var connection1 = jsPlumb.connect({
            source: 'start',
            target: 'msgtype',
            connector: 'Bezier',
            cssClass: 'c1',
            endpoint: 'Blank',
            anchors: [[0.25, 1, 0, 0.5], [0.75, 0, 0, -0.5]],
            paintStyle: paintStyle,
            endpointStyle: {
                fillStyle: '#a7b04b'
            },
            overlays:[ 
                [ 'Arrow', { width:20, length:30, location:0.5, paintStyle: paintStyle } ], 
            ],
            hoverPaintStyle: hoverPaintStyle
        });

        // make all .window divs draggable
        jsPlumb.draggable(jsPlumb.getSelector('.window'));

    }
};
})();

jsPlumb.bind('ready', function () {
    jsPlumb.init();
    // chrome fix.
    document.onselectstart = function () {
        return false;
    };
    // render mode
    var resetRenderMode = function (desiredMode) {
        var newMode = jsPlumb.setRenderMode(desiredMode);
       plumbify.init();
    };
    resetRenderMode(jsPlumb.SVG);
});

В результате чего:

Окончательное решение

person Echilon    schedule 06.02.2013