| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342 | define([ "require", "backbone", "hbs!tmpl/audit/AdminAuditTableLayoutView_tmpl", "collection/VEntityList", "utils/Utils", "utils/UrlLinks", "utils/CommonViewFunction", "utils/Enums", "moment" ], function(require, Backbone, AdminAuditTableLayoutView_tmpl, VEntityList, Utils, UrlLinks, CommonViewFunction, Enums, moment) {    "use strict";    var AdminAuditTableLayoutView = Backbone.Marionette.LayoutView.extend({        _viewName: "AdminAuditTableLayoutView",        template: AdminAuditTableLayoutView_tmpl,        regions: {            RAuditTableLayoutView: "#r_adminAuditTableLayoutView",            RQueryBuilderAdmin: "#r_attributeQueryBuilderAdmin"        },        ui: {            adminPurgedEntityClick: "[data-id='adminPurgedEntity']",            adminAuditEntityDetails: "[data-id='adminAuditEntityDetails']",            attrFilter: "[data-id='adminAttrFilter']",            adminRegion: "[data-id='adminRegion']",            attrApply: "[data-id='attrApply']",            showDefault: "[data-id='showDefault']",            attrClose: "[data-id='attrClose']"        },        events: function() {            var events = {}, that = this;            return events["click " + this.ui.adminPurgedEntityClick] = "onClickAdminPurgedEntity",             events["click " + this.ui.adminAuditEntityDetails] = "showAdminAuditEntity", events["click " + this.ui.attrFilter] = function(e) {                this.ui.attrFilter.find(".fa-angle-right").toggleClass("fa-angle-down"), this.$(".attributeResultContainer").addClass("overlay"),                 this.$(".attribute-filter-container, .attr-filter-overlay").toggleClass("hide"),                 this.onClickAttrFilter();            }, events["click " + this.ui.attrClose] = function(e) {                that.closeAttributeModel();            }, events["click " + this.ui.attrApply] = function(e) {                that.okAttrFilterButton(e);            }, events;        },        initialize: function(options) {            _.extend(this, _.pick(options, "searchTableFilters", "entityDefCollection", "enumDefCollection")),             this.entityCollection = new VEntityList(), this.limit = 25, this.offset = 0, this.entityCollection.url = UrlLinks.adminApiUrl(),             this.entityCollection.modelAttrName = "events", this.commonTableOptions = {                collection: this.entityCollection,                includePagination: !1,                includeAtlasPagination: !0,                includeFooterRecords: !1,                includeColumnManager: !0,                includeOrderAbleColumns: !1,                includeSizeAbleColumns: !1,                includeTableLoader: !0,                includeAtlasPageSize: !0,                includeAtlasTableSorting: !0,                columnOpts: {                    opts: {                        initialColumnsVisible: null,                        saveState: !1                    },                    visibilityControlOpts: {                        buttonTemplate: _.template("<button class='btn btn-action btn-sm pull-right'>Columns <i class='fa fa-caret-down'></i></button>")                    },                    el: this.ui.colManager                },                atlasPaginationOpts: {                    limit: this.limit,                    offset: this.offset,                    fetchCollection: this.getAdminCollection.bind(this)                },                gridOpts: {                    emptyText: "No Record found!",                    className: "table table-hover backgrid table-quickMenu colSort"                },                filterOpts: {},                paginatorOpts: {}            }, this.isFilters = null, this.adminAuditEntityData = {};        },        onRender: function() {            this.ui.adminRegion.hide(), this.getAdminCollection(), this.entityCollection.comparator = function(model) {                return -model.get("timestamp");            }, this.renderTableLayoutView();        },        onShow: function() {            this.$(".fontLoader").show(), this.$(".tableOverlay").show();        },        bindEvents: function() {},        closeAttributeModel: function() {            var that = this;            that.$(".attributeResultContainer").removeClass("overlay"), that.ui.attrFilter.find(".fa-angle-right").toggleClass("fa-angle-down"),             that.$(".attribute-filter-container, .attr-filter-overlay").toggleClass("hide");        },        onClickAttrFilter: function() {            var that = this;            this.ui.adminRegion.show(), require([ "views/search/QueryBuilderView" ], function(QueryBuilderView) {                that.RQueryBuilderAdmin.show(new QueryBuilderView({                    adminAttrFilters: !0,                    searchTableFilters: that.searchTableFilters,                    entityDefCollection: that.entityDefCollection,                    enumDefCollection: that.enumDefCollection                }));            });        },        okAttrFilterButton: function(options) {            var that = this, isFilterValidate = !0, queryBuilderRef = that.RQueryBuilderAdmin.currentView.ui.builder;            if (queryBuilderRef.data("queryBuilder")) {                var queryBuilder = queryBuilderRef.queryBuilder("getRules");                queryBuilder ? (that.ruleUrl = that.searchTableFilters.adminAttrFilters = CommonViewFunction.attributeFilter.generateUrl({                    value: queryBuilder,                    formatedDateToLong: !0                }), that.isFilters = queryBuilder.rules.length ? queryBuilder.rules : null) : isFilterValidate = !1;            }            isFilterValidate && (that.closeAttributeModel(), that.defaultPagination(), that.getAdminCollection());        },        getAdminCollection: function(option) {            var that = this, auditFilters = CommonViewFunction.attributeFilter.generateAPIObj(that.ruleUrl);            $.extend(that.entityCollection.queryParams, {                auditFilters: that.isFilters ? auditFilters : null,                limit: that.entityCollection.queryParams.limit || that.limit,                offset: that.entityCollection.queryParams.offset || that.offset,                sortBy: "startTime",                sortOrder: "DESCENDING"            });            var apiObj = {                sort: !1,                data: _.pick(that.entityCollection.queryParams, "auditFilters", "limit", "offset", "sortBy", "sortOrder"),                success: function(dataOrCollection, response) {                    that.entityCollection.state.pageSize = that.entityCollection.queryParams.limit || 25,                     that.entityCollection.fullCollection.reset(dataOrCollection, option);                },                complete: function() {                    that.$(".fontLoader").hide(), that.$(".tableOverlay").hide(), that.$(".auditTable").show();                },                reset: !0            };            this.entityCollection.getAdminData(apiObj);        },        renderTableLayoutView: function() {            var that = this;            this.ui.showDefault.hide(), require([ "utils/TableLayout" ], function(TableLayout) {                var cols = new Backgrid.Columns(that.getAuditTableColumns());                that.RAuditTableLayoutView.show(new TableLayout(_.extend({}, that.commonTableOptions, {                    columns: cols                })));            });        },        createTableWithValues: function(tableDetails, isAdminAudit) {            var attrTable = CommonViewFunction.propertyTable({                scope: this,                getValue: function(val, key) {                    return key && key.toLowerCase().indexOf("time") > 0 ? Utils.formatDate({                        date: val                    }) : val;                },                valueObject: tableDetails,                guidHyperLink: !isAdminAudit            });            return attrTable;        },        getAuditTableColumns: function() {            var that = this;            return this.entityCollection.constructor.getTableCols({                result: {                    label: "",                    cell: "html",                    editable: !1,                    sortable: !1,                    cell: Backgrid.ExpandableCell,                    fixWidth: "20",                    accordion: !1,                    alwaysVisible: !0,                    renderable: !0,                    isExpandVisible: function(el, model) {                        return !Enums.serverAudits[model.get("operation")];                    },                    expand: function(el, model) {                        var operation = model.get("operation"), results = model.get("result") || null, adminText = "No records found", adminTypDetails = null, auditData = {                            operation: operation,                            model: model,                            results: results,                            adminText: adminText,                            adminTypDetails: adminTypDetails                        };                        if (el.attr("colspan", "8"), results) {                            adminText = "PURGE" == operation ? that.displayPurgeAndImportAudits(auditData) : "EXPORT" == operation || "IMPORT" == operation ? that.displayExportAudits(auditData) : that.displayCreateUpdateAudits(auditData);                        }                        $(el).append($("<div>").html(adminText));                    }                },                userName: {                    label: "Users",                    cell: "html",                    renderable: !0,                    editable: !1                },                operation: {                    label: "Operation",                    cell: "String",                    renderable: !0,                    editable: !1                },                clientId: {                    label: "Client ID",                    cell: "String",                    renderable: !0,                    editable: !1                },                resultCount: {                    label: "Result Count",                    cell: "String",                    renderable: !0,                    editable: !1,                    formatter: _.extend({}, Backgrid.CellFormatter.prototype, {                        fromRaw: function(rawValue, model) {                            return Enums.serverAudits[model.get("operation")] ? "N/A" : rawValue;                        }                    })                },                startTime: {                    label: "Start Time",                    cell: "html",                    renderable: !0,                    editable: !1,                    formatter: _.extend({}, Backgrid.CellFormatter.prototype, {                        fromRaw: function(rawValue, model) {                            return Utils.formatDate({                                date: rawValue                            });                        }                    })                },                endTime: {                    label: "End Time",                    cell: "html",                    renderable: !0,                    editable: !1,                    formatter: _.extend({}, Backgrid.CellFormatter.prototype, {                        fromRaw: function(rawValue, model) {                            return Utils.formatDate({                                date: rawValue                            });                        }                    })                },                duration: {                    label: "Duration",                    cell: "html",                    renderable: !1,                    editable: !1,                    sortable: !1,                    formatter: _.extend({}, Backgrid.CellFormatter.prototype, {                        fromRaw: function(rawValue, model) {                            var startTime = model.get("startTime") ? parseInt(model.get("startTime")) : null, endTime = model.get("endTime") ? parseInt(model.get("endTime")) : null;                            if (_.isNumber(startTime) && _.isNumber(endTime)) {                                var duration = moment.duration(moment(endTime).diff(moment(startTime)));                                return Utils.millisecondsToTime(duration);                            }                            return "N/A";                        }                    })                }            }, this.entityCollection);        },        defaultPagination: function() {            $.extend(this.entityCollection.queryParams, {                limit: this.limit,                offset: this.offset            }), this.renderTableLayoutView();        },        showAdminAuditEntity: function(e) {            var typeDefObj = this.adminAuditEntityData[e.target.dataset.auditentityid], typeDetails = this.createTableWithValues(typeDefObj, !0), view = '<table class="table admin-audit-details bold-key" ><tbody >' + typeDetails + "</tbody></table>", modalData = {                title: Enums.category[typeDefObj.category] + " Type Details: " + typeDefObj.name,                htmlContent: view,                mainClass: "modal-full-screen",                okCloses: !0,                showFooter: !1,                width: "40%"            };            this.showModal(modalData);        },        displayPurgeAndImportAudits: function(obj) {            var adminValues = '<ul class="col-sm-6">', guids = null, adminTypDetails = Enums.category[obj.operation];            return guids = "PURGE" == obj.operation ? obj.results ? obj.results.replace("[", "").replace("]", "").split(",") : guids : obj.model.get("params") ? obj.model.get("params").split(",") : guids,             _.each(guids, function(adminGuid, index) {                index % 5 == 0 && 0 != index && (adminValues += '</ul><ul class="col-sm-6">'), adminValues += '<li class="blue-link" data-id="adminPurgedEntity" data-operation=' + obj.operation + ">" + adminGuid.trim() + "</li>";            }), adminValues += "</ul>", '<div class="row"><div class="attr-details"><h4 style="word-break: break-word;">' + adminTypDetails + "</h4>" + adminValues + "</div></div>";        },        displayExportAudits: function(obj) {            var adminValues = "", adminTypDetails = "IMPORT" === obj.operation ? Enums.category[obj.operation] : Enums.category[obj.operation] + " And Options", resultData = obj.results ? JSON.parse(obj.results) : null, paramsData = obj.model && obj.model.get("params") && obj.model.get("params").length ? {                params: [ obj.model.get("params") ]            } : null;            return resultData && (adminValues += this.showImportExportTable(resultData, obj.operation)),             paramsData && (adminValues += this.showImportExportTable(paramsData)), adminValues = adminValues ? adminValues : obj.adminText,             '<div class="row"><div class="attr-details"><h4 style="word-break: break-word;">' + adminTypDetails + "</h4>" + adminValues + "</div></div>";        },        showImportExportTable: function(obj, operations) {            var that = this, view = '<ul class="col-sm-5 import-export"><table class="table admin-audit-details bold-key" ><tbody >';            if (operations && "IMPORT" === operations) {                var importKeys = Object.keys(obj);                _.each(importKeys, function(key, index) {                    var newObj = {};                    newObj[key] = obj[key], index % 5 === 0 && 0 != index && (view += '</tbody></table></ul><ul class="col-sm-5 import-export"><table class="table admin-audit-details bold-key" ><tbody >'),                     view += that.createTableWithValues(newObj, !0);                });            } else view += this.createTableWithValues(obj, !0);            return view += "</tbody></table></ul>";        },        displayCreateUpdateAudits: function(obj) {            var that = this, resultData = JSON.parse(obj.results), typeName = obj.model ? obj.model.get("params").split(",") : null, typeContainer = "";            _.each(typeName, function(name) {                var typeData = resultData[name], adminValues = 1 == typeName.length ? '<ul class="col-sm-4">' : "<ul>", adminTypDetails = Enums.category[name] + " " + Enums.auditAction[obj.operation];                typeContainer += '<div class="attr-type-container"><h4 style="word-break: break-word;">' + adminTypDetails + "</h4>",                 _.each(typeData, function(typeDefObj, index) {                    index % 5 == 0 && 0 != index && 1 == typeName.length && (adminValues += '</ul><ul class="col-sm-4">');                    var panelId = typeDefObj.name.split(" ").join("") + obj.model.get("startTime");                    that.adminAuditEntityData[panelId] = typeDefObj, adminValues += '<li class="blue-link" data-id="adminAuditEntityDetails" data-auditEntityId=' + panelId + ">" + typeDefObj.name + "</li>";                }), adminValues += "</ul>", typeContainer += adminValues + "</div>";            });            var typeClass = 1 == typeName.length ? null : "admin-audit-details";            return '<div class="row"><div class="attr-details ' + typeClass + '">' + typeContainer + "</div></div>";        },        onClickAdminPurgedEntity: function(e) {            var that = this;            require([ "views/audit/AuditTableLayoutView" ], function(AuditTableLayoutView) {                var obj = {                    guid: $(e.target).text(),                    titleText: "PURGE" == e.target.dataset.operation ? "Purged Entity Details: " : "Import Details: "                }, modalData = {                    title: obj.titleText + obj.guid,                    content: new AuditTableLayoutView(obj),                    mainClass: "modal-full-screen",                    okCloses: !0,                    showFooter: !1                };                that.showModal(modalData);            });        },        showModal: function(modalObj, title) {            require([ "modules/Modal" ], function(Modal) {                var modal = new Modal(modalObj).open();                modal.on("closeModal", function() {                    $(".modal").css({                        "padding-right": "0px !important"                    }), modal.trigger("cancel");                }), modal.$el.on("click", "td a", function() {                    modal.trigger("cancel");                });            });        }    });    return AdminAuditTableLayoutView;});
 |