流程設計器jQuery + svg/vml(Demo2 - UI界面增長屬性顯示)

設計器UI界面有了,接下來結點的屬性怎麼顯示呢,採用彈窗的話以爲不方便用戶;用easyui的propertygrid在最右邊顯示,又以爲要引入easyui,使得插件變複雜了;最後決定本身寫。html

一、實現效果以下:微信

 1.一、屬性顯示閉包

1.二、屬性隱藏ui

1.三、屬性分組收起this

二、jQuery - 左右拖動分隔條(Demospa

三、流程闆闆屬性定義及初始化prototype

//定義流程模板屬性
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();
};

四、加入流程模板屬性後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); //閉包結束  

五、代碼:GoFlow_02.zip設計

演示地址:Demo3d

微信演示公衆號:

另:Silverlight版

      Silverlight版Demo

相關文章
相關標籤/搜索