///////////////////////////////////////////////////////////// // // pgAdmin 4 - PostgreSQL Tools // // Copyright (C) 2013 - 2022, The pgAdmin Development Team // This software is released under the PostgreSQL Licence // ////////////////////////////////////////////////////////////// import $ from 'jquery'; import Backbone from 'backbone'; import gettext from 'sources/gettext'; // Backbone model for other statistics let StatisticsModel = Backbone.Model.extend({ defaults: { JIT: [], Triggers: [], Summary: {}, }, explainToolTip: function(key, value, tooltip) { key = _.escape(key); value = _.escape(value); tooltip.append(` ${key} ${value} `); }, set_statistics: function(toolTipContainer) { var self= this, jit_stats = this.get('JIT'), triggers_stats = this.get('Triggers'), summary = this.get('Summary'); if (Object.keys(jit_stats).length > 0 || Object.keys(triggers_stats).length > 0 || Object.keys(summary).length > 0) { $('.pg-explain-stats-area').removeClass('d-none'); } var tooltipTable = $(`
` ); var tooltip = tooltipTable.find('tbody'); if (Object.keys(jit_stats).length > 0){ tooltip.append('' + gettext('JIT:') + ''); _.each(jit_stats, function(value, key) { self.explainToolTip(key, value, tooltip); }); } if (Object.keys(triggers_stats).length > 0){ tooltip.append('' + gettext('Triggers:') + ''); _.each(triggers_stats, function(triggers, key_id) { if (triggers instanceof Object) { _.each(triggers, function(value, key) { if (key === 'Trigger Name') { key = _.escape(key); value = _.escape(value); tooltip.append(` ${key} ${value} `); } else { key = _.escape(key); value = _.escape(value); tooltip.append(` ${key} ${value} `); } }); } else { key_id = _.escape(key_id); triggers = _.escape(triggers); tooltip.append(` ${key_id} ${triggers} `); } }); } if (Object.keys(summary).length > 0){ tooltip.append('' + gettext('Summary:') + ''); _.each(summary, function(value, key) { self.explainToolTip(key, value, tooltip); }); } $('.pg-explain-stats-area').off('click').on('click', () => { // Empty the tooltip content if it has any and add new data if (Object.keys(jit_stats).length == 0 && Object.keys(triggers_stats).length == 0 && Object.keys(summary).length == 0) { return; } let toolTipBody = toolTipContainer.find('.details-body'); let toolTipTitle = toolTipContainer.find('.details-title'); toolTipTitle.text('Statistics'); toolTipBody.empty(); toolTipBody.append(tooltipTable); toolTipContainer.removeClass('d-none'); toolTipBody.scrollTop(0); }); }, }); module.exports = StatisticsModel;