All Downloads are FREE. Search and download functionalities are using the official Maven repository.

static.org.tinygroup.flowprocess.js.flowprocess.js Maven / Gradle / Ivy

(function ($) {
    var defaults = {
        fnClick: function () {

        },
        fnDbClick: function () {

        },
        //这是连接线路的绘画样式
        connectorPaintStyle: {
            lineWidth: 2,
            strokeStyle: "#49afcd",
            joinstyle: "round"
        },
        disableConnectorPaintStyle: {
            lineWidth: 2,
            strokeStyle: "#999",
            joinstyle: "round",
            dashstyle: "4 1"
        },
        itemSize:{
            top: 10,
            width: 150,
            height: 120
        }

    };
    /*defaults end*/

    var initEndPoints = function (_dom) {
        _dom.find(".process-flag").each(function (i, e) {
            var p = $(e).parent();
            jsPlumb.makeSource($(e), {
                parent: p,
                anchor: "Continuous",
                endpoint: ["Dot", {radius: 1}],
                connector: ["Flowchart", {stub: [5, 5]}],
                connectorStyle: p.attr("disabled") == "disabled" ? defaults.disableConnectorPaintStyle : defaults.connectorPaintStyle,
                dragOptions: {},
                maxConnections: -1
            });
        });
    };   
    var clear = function () {

        try {

            jsPlumb.detachEveryConnection();
            jsPlumb.deleteEveryEndpoint();
            jsPlumb.repaintEverything();
            return true;
        } catch (e) {
            return false;
        }

    };
    var initFlow = function (_tempId) {

        var _dom = $("
"); var processData = []; $(".popover").remove(); _tempId.children(".process-step").each(function () { var _this = $(this); processData.push({"id": _this.attr("process_id"), "pid": _this.attr("process_pid")}); }).on("mouseover", function () { $(this).popover('show'); }).on("mouseout", function () { $(this).popover('hide'); }); var level_count = 0; var data_len = processData.length; var pids_arr = []; var groupData = []; var node_arr = []; for (var i = 0; i < data_len; i++) { if (processData[i]["pid"] === "" || processData[i]["pid"] === null) { processData[i]["pid"] = 0; } if (!groupData[processData[i]["pid"]]) { groupData[processData[i]["pid"]] = []; } groupData[processData[i]["pid"]].push(processData[i]); pids_arr.push(processData[i]["pid"]); node_arr[processData[i]["id"]] = processData[i]["pid"]; } function getLevel(id) { if (node_arr[id]) { return getLevel(node_arr[id]) + 1; } else { return 1; } } var max_level = 0; for (var i = 0; i < data_len; i++) { var c = getLevel(processData[i]["id"]); max_level = Math.max(max_level, c); if ($.inArray(processData[i]["id"], pids_arr) == -1) { level_count++; } } _tempId.css({"width": defaults.itemSize.width * level_count + 180 + "px", "height": max_level * defaults.itemSize.height + 50 + "px","margin":"0 auto"}); defaults.itemSize.left = defaults.itemSize.width * (level_count - 1) / 2; var setPosition = function (pid, top_level, left_level) { if (!groupData[pid]) { return []; } var list = groupData[pid]; var len = list.length; var left = left_level - list.length / 2; var top = top_level; var ileft = ""; var itop = ""; var subIds = []; var thisw = defaults.itemSize.width * (len - 1) / 2; for (var i = 0; i < len; i++) { ileft = left_level - thisw + i * defaults.itemSize.width; itop = top_level + defaults.itemSize.height; groupData[pid][i]["left"] = ileft; groupData[pid][i]["top"] = itop - defaults.itemSize.height; subIds.push(list[i]["id"]); var sub_idarr = setPosition(list[i]["id"], itop, ileft); groupData[pid][i]["process_to"] = sub_idarr.join(","); } return subIds; }; var setChildrenNode = function () { var data = []; for (i in groupData) { for (var j = 0, jl = groupData[i].length; j < jl; j++) { data.push(groupData[i][j]); } } for (var i = 0; i < data_len; i++) { var id = data[i]["id"]; $("#process-step-" + id).attr({ "process_to": data[i]["process_to"] }).css({"left": data[i]["left"] + "px", "top": data[i]["top"] + "px","width":defaults.itemSize.width-30+"px"}); } } setPosition(0, defaults.itemSize.top, defaults.itemSize.left); setChildrenNode(); } $.fn.flowprocess = function (options) { var _canvas = $(this); //右键步骤的步骤号 options = options || {}; /*配置*/ $.each(options, function (i, val) { if (typeof val == 'object' && defaults[i]) $.extend(defaults[i], val); else defaults[i] = val; }); clear(); initFlow(_canvas.find(".tiny_flow_process_info:first")); jsPlumb.importDefaults({ DragOptions: {cursor: 'pointer'}, EndpointStyle: {fillStyle: '#225588'}, Endpoint: ["Dot", {radius: 1}], ConnectionOverlays: [ ["Arrow", {location: 1}], ["Label", { location: 0.1, id: "label", cssClass: "aLabel" }] ], Anchor: 'Continuous', ConnectorZIndex: 5, HoverPaintStyle: defaults.connectorHoverStyle }); if ($.browser.msie && $.browser.version < '9.0') { //ie9以下,用VML画图 jsPlumb.setRenderMode(jsPlumb.VML); } else { //其他浏览器用SVG jsPlumb.setRenderMode(jsPlumb.SVG); } console.log("ssss"); /*var timeout = null; //点击或双击事件,这里进行了一个单击事件延迟,因为同时绑定了双击事件 _canvas.find(".process-step").on('click', function () { var obj = this; _canvas.find('.tiny_flow_active_id').val($(this).attr("process_id")), clearTimeout(timeout); timeout = setTimeout(defaults.fnClick, 300); }).on('dblclick', function () { clearTimeout(timeout); defaults.fnDbClick(); }).each(function (index) { var _this = $(this); var id = _this.attr("process_id"); _this.mousedown(function (e) { if (e.which == 3) { //右键绑定 _this.contextMenu("process-menu-" + id); } }); });*/ initEndPoints(_canvas); //reset start var _canvas_design = function () { //连接关联的步骤 _canvas.find('.process-step').each(function (i) { var sourceId = $(this).attr('process_id'); var prcsto = $(this).attr('process_to'); if(!prcsto||!sourceId){ return true;} var toArr = prcsto.split(","); $.each(toArr, function (j, targetId) { if (targetId != '' && targetId != 0) { if ($("#process-step-" + prcsto).length > 0) { jsPlumb.connect({ source: "process-step-" + sourceId, target: "process-step-" + targetId }); } } }) }); }//_canvas_design end reset _canvas_design(); var flowprocess = { getActiveId: function () { return _canvas.find(".tiny_flow_active_id").val(); }, clear: function () { try { jsPlumb.detachEveryConnection(); jsPlumb.deleteEveryEndpoint(); jsPlumb.repaintEverything(); return true; } catch (e) { return false; } }, refresh: function () { try { this.clear(); _canvas_design(); return true; } catch (e) { return false; } } }; return flowprocess; }//$.fn })(jQuery);




© 2015 - 2025 Weber Informatics LLC | Privacy Policy