流程设计器jQuery + svg/vml(Demo2 - UI界面增加属性显示)

设计器UI界面有了,接下来结点的属性怎么显示呢,采用弹窗的话觉得不方便用户;用easyui的propertygrid在最右边显示,又觉得要引入easyui,使得插件变复杂了;最后决定自己写。

1、实现效果如下:

 1.1、属性显示

1.2、属性隐藏

1.3、属性分组收起

2、jQuery - 左右拖动分隔条(Demo

3、流程板板属性定义及初始化

//定义流程模板属性
TemplateProperty = function () {
    if (typeof TemplateProperty.defaults == "undefined") {
        /*第一次定义对象时为GoFlow类定义静态属性*/
        TemplateProperty.defaults = {
            data: {
                
            }
        };
        /*第一次定义对象时定义实例共有方法*/
        var p = TemplateProperty.prototype;
        p.createTable = function () {
            

            //给控件赋值
            this.bindData();
            //绑定事件
            this.bindDelegate();
        };
        //把流程模板数据绑定到控件
        p.bindData = function () {
            var self = this;
            $.each(self.$opts.data, function (k, v) {
                self.setValue(k, v);
            });
        };
        //绑定事件
        p.bindDelegate = function () {
            //展开/收缩属性组
            this.$tbody.delegate("td[group].Fold,td[group].Expanded", "click", { self: this }, function (e) {
                var $templateProp = e.data.self;
                var fold = $(e.target).hasClass("Fold");
                $(e.target).toggleClass("Fold", !fold);
                $(e.target).toggleClass("Expanded", fold);
                var selector = GoFlow.formatString(
                    "[group='{0}'][property]",
                    $(e.target).attr("group"));
                $templateProp.$tbody.children(selector).toggle();
            });
            //input绑定onchange事件 
            this.$tbody.delegate("td > input", "change", { self: this }, function (e) {
                var $templateProp = e.data.self;
                var key = $(e.target).parent().parent().attr("property");
                var value = $(e.target).val();
                $templateProp.setData(key, value);
            });
            //input绑定onkeydown事件 
            this.$tbody.delegate("td > input.goflow-valid-int", "keydown", function (e) {
                return GoFlow.validInt(e);
            });
        };
        p.getData = function (key) { return this.$opts.data[key]; };
        p.setData = function (key, value) { this.$opts.data[key] = value; };
        p.getValue = function (key) {
            switch (key) {
                
            };
        };
        p.setValue = function (key, value) {
            switch (key) {
                
            };
        };
    }
};
//初始化TemplateProperty对象
TemplateProperty.prototype.init = function (pdiv, opts) {
    this.$propertyDiv = pdiv;
    this.$opts = opts;
    this.createTable();
};

4、加入流程模板属性后goflow插件最新结构如下

(function ($, undefined) {
    //定义流程模板属性
    TemplateProperty = function () {
        
    };
    //初始化TemplateProperty对象
    TemplateProperty.prototype.init = function (pdiv, opts) {
        
    };

    //定义GoFlow类
    GoFlow = function () {
        
    };
    //初始化GoFlow对象(gfDiv:jQuery对象;opts:参数)
    GoFlow.prototype.init = function (gfDiv, opts) {
        
    };

    //插件的定义    
    $.fn.goflow = function (opts) {
        
    };
})(jQuery); //闭包结束  

5、代码:GoFlow_02.zip

演示地址:Demo

微信演示公众号:

另:Silverlight版

      Silverlight版Demo

转载于:https://www.cnblogs.com/eleven11/p/4897936.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
 跨浏览,可兼容IE7--IE10, FireFox, Chrome, Opera等几大内核的浏览,且不需要浏览再加装任何控件。  多系统兼容性、可移植性:由于只包括前台UI,因此二次开发者可很方便将本插件用在任何一种需要流程图的B/S系统应用上,流程图的详细实现逻辑完全交于后台程序开发者自己实现;对于后台,只要能返回/接收能被本插件解析的JSON格式数据即可.所以本插件可用于不同的服务语言建立的后台上.  跨领域:流程设计不止用在电信领域,在其它需要IT进行技术支持的领域中都有重大作用.  以下从纯技术实现层面具体描述:  页面顶部栏、左边侧边栏均可自定义;  当左边的侧边栏设为不显示时,为只读状态,此时的视图区可当作是一个查看而非编辑。  侧边工具栏除了基本和一些流程节点按钮外,还自定义新的节点按钮,自定义节点都可以有自有的图标、类型名称,定义后在使用可可在工作区内增加这些自定义节点。  顶部栏可显示流程图数据组的标题,也可提供一些常用操作按钮。  顶部栏的按钮,除了撤销、重做按钮外,其余按钮均可自定义点击事件。  可画直线、折线;折线还可以左右/上下移动其中段。  具有区域划分功能,能让用户更直观地了解哪些节点及其相互间的转换,是属于何种自定义区域内的。  具有标注功能,用橙红色标注某个结点或者转换线,一般用在展示流程进度时。  能直接双击结点、连线、分组区域中的文字进行编辑  在对结点、连线、分组区域的各种编辑操作,如新增/删除/修改名称/重设样式或大小/移动/标注时,均可捕捉到事件,并触发自定义事件,如果自定义事件执行的方法返回FALSE,则会阻止操作。  具有操作事务序列控制功能,在工作区内的各种有效操作都能记录到一个栈中,然后可以进行撤销(undo())或重做(redo()),像典型的C/S软件一样。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值