| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244 | define([ "require", "backbone", "hbs!tmpl/profile/ProfileTableLayoutView_tmpl", "collection/VProfileList", "utils/Utils", "utils/Messages", "utils/Globals", "moment", "utils/UrlLinks", "collection/VCommonList", "collection/VEntityList", "d3", "sparkline" ], function(require, Backbone, ProfileTableLayoutViewTmpl, VProfileList, Utils, Messages, Globals, moment, UrlLinks, VCommonList, VEntityList, d3, sparkline) {    "use strict";    var ProfileTableLayoutView = Backbone.Marionette.LayoutView.extend({        _viewName: "ProfileTableLayoutView",        template: ProfileTableLayoutViewTmpl,        regions: {            RProfileTableLayoutView: "#r_profileTableLayoutView"        },        ui: {},        events: function() {            var events = {};            return events["click " + this.ui.addTag] = "checkedValue", events;        },        initialize: function(options) {            _.extend(this, _.pick(options, "profileData", "guid", "entityDetail"));            this.profileCollection = new VCommonList([], {                comparator: function(item) {                    return item.get("position") || 999;                }            }), this.bindEvents();        },        onRender: function() {            this.fetchEntity();        },        fetchEntity: function(argument) {            var that = this;            this.collection = new VEntityList([], {}), this.collection.url = UrlLinks.entitiesApiUrl({                guid: this.guid,                minExtInfo: !1            }), this.collection.fetch({                success: function(response) {                    that.entityObject = that.collection.first().toJSON();                    var collectionJSON = that.entityObject.entity;                    that.entityDetail = collectionJSON.attributes, Utils.findAndMergeRefEntity({                        attributeObject: collectionJSON.attributes,                        referredEntities: that.entityObject.referredEntities                    }), Utils.findAndMergeRefEntity({                        attributeObject: collectionJSON.relationshipAttributes,                        referredEntities: that.entityObject.referredEntities                    });                    var columns = collectionJSON.relationshipAttributes.columns || collectionJSON.attributes.columns, db = collectionJSON.relationshipAttributes.db || collectionJSON.attributes.db;                    if (that.renderTableLayoutView(), that.entityDetail) {                        that.guid && that.entityDetail.name && that.$(".table_name .graphval").html('<b><a href="#!/detailPage/' + that.guid + '">' + that.entityDetail.name + "</a></b>"),                         db && that.$(".db_name .graphval").html('<b><a href="#!/detailPage/' + db.guid + '?profile=true">' + Utils.getName(db) + "</a></b>");                        var profileData = that.entityDetail.profileData;                        profileData && profileData.attributes && profileData.attributes.rowCount && that.$(".rowValue .graphval").html("<b>" + d3.format("2s")(profileData.attributes.rowCount).replace("G", "B") + "</b>"),                         that.$(".table_created .graphval").html("<b>" + (that.entityDetail.createTime ? moment(that.entityDetail.createTime).format("LL") : "--") + "</b>");                    }                    _.each(columns, function(obj) {                        if (obj.attributes && obj.attributes.profileData) {                            var profileObj = Utils.getProfileTabType(obj.attributes.profileData.attributes, !0), changeValueObj = {};                            profileObj && profileObj.type && ("numeric" === profileObj.type && (changeValueObj.averageLength = 0,                             changeValueObj.maxLength = 0), "string" === profileObj.type && (changeValueObj.minValue = 0,                             changeValueObj.maxValue = 0, changeValueObj.meanValue = 0, changeValueObj.medianValue = 0),                             "date" === profileObj.type && (changeValueObj.averageLength = 0, changeValueObj.maxLength = 0,                             changeValueObj.minValue = 0, changeValueObj.maxValue = 0, changeValueObj.meanValue = 0,                             changeValueObj.medianValue = 0)), that.profileCollection.fullCollection.add(_.extend({}, obj.attributes, obj.attributes.profileData.attributes, changeValueObj, {                                guid: obj.guid,                                position: obj.attributes ? obj.attributes.position : null                            }));                        }                    });                },                reset: !1            });        },        bindEvents: function() {            this.listenTo(this.profileCollection, "backgrid:refresh", function(model, checked) {                this.renderGraphs();            }, this);        },        renderTableLayoutView: function() {            var that = this;            require([ "utils/TableLayout" ], function(TableLayout) {                var cols = new Backgrid.Columns(that.getAuditTableColumns());                that.RProfileTableLayoutView.show(new TableLayout(_.extend({}, {                    columns: cols,                    collection: that.profileCollection,                    includeFilter: !1,                    includePagination: !0,                    includePageSize: !1,                    includeFooterRecords: !0,                    gridOpts: {                        className: "table table-hover backgrid table-quickMenu",                        emptyText: "没有找到记录!"                    }                }))), that.renderGraphs();            });        },        renderGraphs: function() {            this.$(".sparklines").sparkline("html", {                enableTagOptions: !0            }), this.$(".sparklines").bind("sparklineClick", function(ev) {                var id = $(ev.target).data().guid;                Utils.setUrl({                    url: "#!/detailPage/" + id,                    mergeBrowserUrl: !1,                    trigger: !0,                    urlParams: {                        tabActive: "profile"                    }                });            });        },        getAuditTableColumns: function() {            return this.profileCollection.constructor.getTableCols({                name: {                    label: "Name",                    cell: "Html",                    editable: !1,                    sortable: !0,                    sortType: "toggle",                    direction: "ascending",                    formatter: _.extend({}, Backgrid.CellFormatter.prototype, {                        fromRaw: function(rawValue, model) {                            return '<div><a href="#!/detailPage/' + model.get("guid") + '?profile=true">' + rawValue + "</a></div>";                        }                    })                },                type: {                    label: "Type",                    cell: "String",                    editable: !1,                    sortable: !0,                    sortType: "toggle"                },                nonNullData: {                    label: "% NonNull",                    cell: "Html",                    editable: !1,                    sortable: !0,                    sortType: "toggle",                    width: "180",                    formatter: _.extend({}, Backgrid.CellFormatter.prototype, {                        fromRaw: function(rawValue, model) {                            if (rawValue < 50) var barClass = rawValue > 30 && rawValue <= 50 ? "progress-bar-warning" : "progress-bar-danger"; else var barClass = "progress-bar-success";                            return '<div class="progress cstm_progress" title="' + rawValue + '%"><div class="progress-bar ' + barClass + ' cstm_success-bar progress-bar-striped" style="width:' + rawValue + '%">' + rawValue + "%</div></div>";                        }                    })                },                distributionDecile: {                    label: "Distribution",                    cell: "Html",                    editable: !1,                    sortable: !1,                    formatter: _.extend({}, Backgrid.CellFormatter.prototype, {                        fromRaw: function(rawValue, model) {                            var sparkarray = [], distibutionObj = Utils.getProfileTabType(model.toJSON());                            return distibutionObj && _.each(distibutionObj.actualObj, function(obj) {                                sparkarray.push(obj.count);                            }), '<span data-guid="' + model.get("guid") + '" class="sparklines" sparkType="bar" sparkBarColor="#38BB9B" values="' + sparkarray.join(",") + '"></span>';                        }                    })                },                cardinality: {                    label: "Cardinality",                    cell: "Number",                    editable: !1,                    sortable: !0,                    sortType: "toggle"                },                minValue: {                    label: "Min",                    cell: "Number",                    editable: !1,                    sortable: !0,                    sortType: "toggle",                    formatter: _.extend({}, Backgrid.CellFormatter.prototype, {                        fromRaw: function(rawValue, model) {                            var profileObj = Utils.getProfileTabType(model.toJSON(), !0);                            return profileObj && "numeric" === profileObj.type ? rawValue : "-";                        }                    })                },                maxValue: {                    label: "Max",                    cell: "Number",                    editable: !1,                    sortable: !0,                    sortType: "toggle",                    formatter: _.extend({}, Backgrid.CellFormatter.prototype, {                        fromRaw: function(rawValue, model) {                            var profileObj = Utils.getProfileTabType(model.toJSON(), !0);                            return profileObj && "numeric" === profileObj.type ? rawValue : "-";                        }                    })                },                averageLength: {                    label: "Average Length",                    cell: "Number",                    editable: !1,                    sortable: !0,                    sortType: "toggle",                    formatter: _.extend({}, Backgrid.CellFormatter.prototype, {                        fromRaw: function(rawValue, model) {                            var profileObj = Utils.getProfileTabType(model.toJSON(), !0);                            return profileObj && "string" === profileObj.type ? rawValue : "-";                        }                    })                },                maxLength: {                    label: "Max Length",                    cell: "Number",                    editable: !1,                    sortable: !0,                    sortType: "toggle",                    formatter: _.extend({}, Backgrid.CellFormatter.prototype, {                        fromRaw: function(rawValue, model) {                            var profileObj = Utils.getProfileTabType(model.toJSON(), !0);                            return profileObj && "string" === profileObj.type ? rawValue : "-";                        }                    })                },                meanValue: {                    label: "Mean",                    cell: "Number",                    editable: !1,                    sortable: !0,                    sortType: "toggle",                    formatter: _.extend({}, Backgrid.CellFormatter.prototype, {                        fromRaw: function(rawValue, model) {                            var profileObj = Utils.getProfileTabType(model.toJSON(), !0);                            return profileObj && "numeric" === profileObj.type ? rawValue : "-";                        }                    })                },                medianValue: {                    label: "Median",                    cell: "Number",                    editable: !1,                    sortable: !0,                    sortType: "toggle",                    formatter: _.extend({}, Backgrid.CellFormatter.prototype, {                        fromRaw: function(rawValue, model) {                            var profileObj = Utils.getProfileTabType(model.toJSON(), !0);                            return profileObj && "numeric" === profileObj.type ? rawValue : "-";                        }                    })                }            }, this.profileCollection);        }    });    return ProfileTableLayoutView;});
 |