///////////////////////////////////////////////////////////// // // pgAdmin 4 - PostgreSQL Tools // // Copyright (C) 2013 - 2020, 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: {}, }, set_statistics: function(toolTipContainer) { var 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 tooltip = $('
', { class: 'pgadmin-tooltip-table', }); if (Object.keys(jit_stats).length > 0){ tooltip.append('' + gettext('JIT:') + ''); _.each(jit_stats, function(value, key) { key = _.escape(key); value = _.escape(value); tooltip.append(` ${key} ${value} `); }); } 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) { key = _.escape(key); value = _.escape(value); tooltip.append(` ${key} ${value} `); }); } $('.pg-explain-stats-area').off('mouseover').on('mouseover', () => { // 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; } toolTipContainer.empty(); toolTipContainer.append(tooltip); // Show toolTip at respective x,y coordinates toolTipContainer.css({ 'opacity': '0.8', 'left': '', 'right': '65px', 'top': '15px', }); $('.pgadmin-explain-tooltip').css('padding', '5px'); $('.pgadmin-explain-tooltip').css('border', '1px solid white'); }); // Remove tooltip when mouse is out from node's area $('.pg-explain-stats-area').off('mouseout').on('mouseout', () => { toolTipContainer.empty(); toolTipContainer.css({ 'opacity': '0', 'left': 0, 'top': 0, 'right': '', }); }); }, }); module.exports = StatisticsModel;