diff --git a/static/index.html b/static/index.html index 13fca7fbb..88b8ac637 100644 --- a/static/index.html +++ b/static/index.html @@ -333,6 +333,8 @@

SSH Connection

diff --git a/static/js/app.js b/static/js/app.js index 1c5c5d71b..3256f8dda 100644 --- a/static/js/app.js +++ b/static/js/app.js @@ -1203,6 +1203,32 @@ function bindTableHeaderMenu() { var menuItem = $(e.target); switch(menuItem.data("action")) { + case "copy_as_insert": + var values = getValuesFromContext(context); + var columns = getColumnsFromResults(); + var tableName = $("#results").data("table"); + var str = "INSERT INTO "+tableName+"("+columns.join(',')+") VALUES("+values.map(function(o){return o.value}).join(",")+")"; + copyToClipboard(str); + break; + case "copy_as_update": + var values = getValuesFromContext(context); + var columns = getColumnsFromResults(); + var tableName = $("#results").data("table"); + var where = []; + var set = []; + columns.forEach(function(row, index){ + var val = values[index]; + set.push(row+"="+val.value); + if(val.isNull){ + where.push(row+" IS "+val.value); + return; + } + where.push(row+"="+val.value); + }) + var str = "UPDATE "+tableName+" SET "+set.join(',')+' WHERE '+ where.join(' AND '); + copyToClipboard(str); + + break; case "display_value": var value = $(context).text(); $("#content_modal .content").text(value); @@ -1225,6 +1251,38 @@ function bindTableHeaderMenu() { }); } +function getColumnsFromResults(){ + let columns = []; + $("#results_header th").each(function(){ + columns.push(this.innerText); + }) + return columns; +} + +function getValuesFromContext(context){ + let values = []; + $(context).parent().children().each(function(){ + const isNumber = !isNaN(this.innerText); + const isNull = $(this).find("span[class*='null']").length; + let obj = {isNull:false, value:''}; + if (isNull){ + obj.isNull = true; + obj.value = 'NULL'; + values.push(obj); + return; + } + if(isNumber){ + obj.value = this.innerText; + values.push(obj); + return; + } + // values.push("'"+this.innerText+"'"); + obj.value = "'"+this.innerText+"'"; + values.push(obj); + }) + return values; +} + function bindCurrentDatabaseMenu() { $("#current_database").contextmenu({ target: "#current_database_context_menu",