diff --git a/app/db_screen.js b/app/db_screen.js index 5c38c641..61d5d152 100644 --- a/app/db_screen.js +++ b/app/db_screen.js @@ -390,12 +390,14 @@ global.DbScreen = jClass.extend({ } App.startLoading("Getting table structure..."); - this.table.isMatView((isMatView) => { - Model.Table(this.currentSchema, this.currentTable).getStructure((rows) => { - this.table.describe((indexes, error) => { - if (error) console.error(error); - this.table.getConstraints((constraints, error2) => { - if (error2) console.error(error2); + this.table.isMatView((isMatView, error) => { + if (error) errorReporter(error, false); + Model.Table(this.currentSchema, this.currentTable).getStructure((rows, error1) => { + if (error1) errorReporter(error1, false); + this.table.describe((indexes, error2) => { + if (error2) errorReporter(error2, false); + this.table.getConstraints((constraints, error3) => { + if (error3) errorReporter(error3, false); this.view.structure.renderTab(rows, indexes, constraints, isMatView); App.stopLoading(); }); @@ -489,9 +491,13 @@ global.DbScreen = jClass.extend({ App.startLoading("Getting table info..."); table.getSourceSql((code, dumpError) => { - table.diskSummary((relType, estimateCount, diskUsage) => { + table.diskSummary((relType, estimateCount, diskUsage, error) => { if (dumpError) { window.alert("Running pg_dump failed:\n" + dumpError); + global.errorReporter(dumpError, false); + } + if (error) { + global.errorReporter(error, false); } App.stopLoading(); this.view.info.renderTab(code, relType, estimateCount, diskUsage); diff --git a/app/models/table.js b/app/models/table.js index 3c28ba07..24684d3f 100644 --- a/app/models/table.js +++ b/app/models/table.js @@ -66,8 +66,8 @@ global.Model.Table = Model.base.extend({ }, isMatView: function (callback) { - this.getTableType((tableType) => { - callback(tableType == "MATERIALIZED VIEW") + this.getTableType((tableType, error) => { + callback(tableType == "MATERIALIZED VIEW", error); }); }, @@ -146,7 +146,11 @@ global.Model.Table = Model.base.extend({ a.attnum > 0 AND NOT a.attisdropped ORDER BY a.attnum; `; - this.q(sql, (data) => { + this.q(sql, (data, error) => { + if (error) { + callback(data && data.rows, error); + return; + } this.hasOID((hasOID) => { if (hasOID) { data.rows.unshift({ @@ -180,10 +184,14 @@ global.Model.Table = Model.base.extend({ where relname = '%s' and attnum >= 1;`; this.q(sql, this.table, (data, error) => { - data.rows.forEach((row) => { - row.is_nullable = row.attnotnull ? "NO" : "YES"; - }); - callback(data.rows); + if (data && data.rows) { + data.rows.forEach((row) => { + row.is_nullable = row.attnotnull ? "NO" : "YES"; + }); + callback(data.rows); + } else { + callback(null, error); + } }); }, @@ -195,7 +203,7 @@ global.Model.Table = Model.base.extend({ if (error) { callback(undefined, error); } else { - callback(data.rows[0] && data.rows[0].relhasoids); + callback(data && data.rows[0] && data.rows[0].relhasoids); } }); }, @@ -571,6 +579,10 @@ global.Model.Table = Model.base.extend({ `; this.q(sql, this.schema, this.table, (result, error) => { + if (!result) { + callback("error getting talbe info", '', '', error); + return; + } var row = result.rows[0]; var type = row.relkind; // http://www.postgresql.org/docs/9.4/static/catalog-pg-class.html diff --git a/lib/error_reporter.js b/lib/error_reporter.js index 25425d9b..2810b4c1 100644 --- a/lib/error_reporter.js +++ b/lib/error_reporter.js @@ -1,6 +1,6 @@ global.log = require('../app/logger').make('info'); -var errorReporter = module.exports = function errorReporter(exception) { +var errorReporter = module.exports = function errorReporter(exception, showError = true) { setTimeout(function () { // skip errors while developing if (process.env.NW_DEV == "true") { @@ -76,10 +76,12 @@ var errorReporter = module.exports = function errorReporter(exception) { console.log(exception.stack); } - if (exception instanceof Error) { - window.alert(exception.message + "\n" + exception.stack); - } else { - window.alert(exception); + if (showError) { + if (exception instanceof Error) { + window.alert(exception.message + "\n" + exception.stack); + } else { + window.alert(exception); + } } return false; }; diff --git a/lib/resizable_columns.js b/lib/resizable_columns.js index 19d55df5..9d655c91 100644 --- a/lib/resizable_columns.js +++ b/lib/resizable_columns.js @@ -61,7 +61,8 @@ class ResizableColumns { th = $(th); this.columnWidths[i] = th.outerWidth(); - th.css('width', th.width()); + var w = th.width(); + th.css('width', w == 0 ? 0.001 : w); }); //this.element.css('width', ''); diff --git a/run b/run index bc3b994a..335ce4cd 100755 --- a/run +++ b/run @@ -1,12 +1,13 @@ #!/bin/bash export NW_DEV=true +export PATH=$PATH:node_modules/.bin if [[ "$OSTYPE" == "darwin"* ]]; then #/Applications/node-webkit.app/Contents/MacOS/node-webkit . #/Applications/nwjs.app/Contents/MacOS/nwjs . #~/Postbird.app/Contents/MacOS/nwjs - ./node_modules/.bin/electron . + electron . elif [[ "$OSTYPE" == "linux-gnu" ]]; then paths=( "/lib/x86_64-linux-gnu/libudev.so.1" # Ubuntu, Xubuntu, Mint diff --git a/views/cache.js b/views/cache.js index cc3092ca..9a84a86f 100644 --- a/views/cache.js +++ b/views/cache.js @@ -2211,7 +2211,7 @@ pug_html = pug_html + "\n \u003Cdiv class=\"preview\"\u003E\u003C\u002Fdiv\u003 ;pug_debug_line = 6;pug_debug_filename = "views\u002Fsnippets.jade"; pug_html = pug_html + "\n \u003Cfooter\u003E\u003C\u002Ffooter\u003E\n\u003C\u002Fdiv\u003E";}.call(this,"snippets" in locals_for_with?locals_for_with.snippets:typeof snippets!=="undefined"?snippets:undefined));} catch (err) {pug.rethrow(err, pug_debug_filename, pug_debug_line, pug_debug_sources[pug_debug_filename]);};return pug_html;}; exports["snippets"].content = ".snippets-window\n ul\n each snippet, name in snippets\n li(snippet=name)= name\n .preview\n footer\n"; -exports["structure_tab"] = function template(pug, locals) {var pug_html = "", pug_mixins = {}, pug_interp;var pug_debug_filename, pug_debug_line;try {var pug_debug_sources = {"views\u002Fstructure_tab.jade":".rescol-wrapper.with-borders.columns-list-table\n .rescol-header-wrapper\n .rescol-content-wrapper\n table\n thead\n tr\n th column\n th type\n th max length\n th default\n th primary key\n th Null\n th\n tbody\n each column in columns\n tr\n td= column.column_name\n td(title = column_type_label(column))= column_type_label(column, true)\n td= column.character_maximum_length\n td= ('' + column.column_default).match(\u002F^nextval\u002F) ? 'auto increment' : column.column_default\n td= column.is_primary_key ? 'yes' : ''\n td= column.is_nullable == 'YES' || column.is_nullable == true ? 'yes' : 'no'\n td\n a(exec=\"editColumn('\" + column.column_name + \"')\") Edit\n != \" \"\n a(exec=\"deleteColumn('\" + column.column_name + \"')\") Delete\n\nfooter\n if !is_mat_view\n button.native-look(exec=\"addColumnForm\") Add column\n\nh4 Indexes\n\n.rescol-wrapper.with-borders.indexes-list-table\n .rescol-header-wrapper\n .rescol-content-wrapper\n table\n thead\n tr\n th name\n th p. key\n th uniq\n th columns\n th type\n th\n tbody\n each index in indexes\n tr\n td= index.relname\n td= index.indisprimary ? 'Yes' : 'No'\n td= index.indisunique ? 'Yes' : 'No'\n td= index.pg_get_indexdef.match(\u002FON [^\\(]+\\((.+)\\)\u002F)[1]\n td= getIndexType(index.pg_get_indexdef)\n td\n a(exec=\"deleteIndex('\" + index.relname + \"')\") Delete\n\nfooter\n button.native-look(exec=\"addIndexForm\") Add index\n\nif constraints.length \u003E 0\n h4 Constraints\n .rescol-wrapper.with-borders.indexes-list-table\n .rescol-header-wrapper\n .rescol-content-wrapper\n table\n thead\n tr\n th name\n th source\n th\n tbody\n each constraint in constraints\n tr\n td= constraint.conname\n td= constraint.pretty_source\n td\n a(exec=\"deleteConstraint('\" + constraint.conname + \"')\") Delete\n"}; +exports["structure_tab"] = function template(pug, locals) {var pug_html = "", pug_mixins = {}, pug_interp;var pug_debug_filename, pug_debug_line;try {var pug_debug_sources = {"views\u002Fstructure_tab.jade":".rescol-wrapper.with-borders.columns-list-table\n .rescol-header-wrapper\n .rescol-content-wrapper\n table\n thead\n tr\n th column\n th type\n th max length\n th default\n th primary key\n th null\n th\n tbody\n each column in columns || []\n tr\n td= column.column_name\n td(title = column_type_label(column))= column_type_label(column, true)\n td= column.character_maximum_length\n td= ('' + column.column_default).match(\u002F^nextval\u002F) ? 'auto increment' : column.column_default\n td= column.is_primary_key ? 'yes' : ''\n td= column.is_nullable == 'YES' || column.is_nullable == true ? 'yes' : 'no'\n td\n a(exec=\"editColumn('\" + column.column_name + \"')\") Edit\n != \" \"\n a(exec=\"deleteColumn('\" + column.column_name + \"')\") Delete\n else\n if !columns\n tr\n td(collspan=7) Error accured while getting table info\n\nfooter\n if !is_mat_view\n button.native-look(exec=\"addColumnForm\") Add column\n\nh4 Indexes\n\n.rescol-wrapper.with-borders.indexes-list-table\n .rescol-header-wrapper\n .rescol-content-wrapper\n table\n thead\n tr\n th name\n th p. key\n th uniq\n th columns\n th type\n th\n tbody\n each index in indexes\n tr\n td= index.relname\n td= index.indisprimary ? 'Yes' : 'No'\n td= index.indisunique ? 'Yes' : 'No'\n td= index.pg_get_indexdef.match(\u002FON [^\\(]+\\((.+)\\)\u002F)[1]\n td= getIndexType(index.pg_get_indexdef)\n td\n a(exec=\"deleteIndex('\" + index.relname + \"')\") Delete\n\nfooter\n button.native-look(exec=\"addIndexForm\") Add index\n\nif constraints.length \u003E 0\n h4 Constraints\n .rescol-wrapper.with-borders.indexes-list-table\n .rescol-header-wrapper\n .rescol-content-wrapper\n table\n thead\n tr\n th name\n th source\n th\n tbody\n each constraint in constraints\n tr\n td= constraint.conname\n td= constraint.pretty_source\n td\n a(exec=\"deleteConstraint('\" + constraint.conname + \"')\") Delete\n"}; ;var locals_for_with = (locals || {});(function (column_type_label, columns, constraints, getIndexType, indexes, is_mat_view) {var pug_indent = []; ;pug_debug_line = 1;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n\u003Cdiv class=\"rescol-wrapper with-borders columns-list-table\"\u003E"; @@ -2248,16 +2248,17 @@ pug_html = pug_html + "primary key\u003C\u002Fth\u003E"; ;pug_debug_line = 12;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n \u003Cth\u003E"; ;pug_debug_line = 12;pug_debug_filename = "views\u002Fstructure_tab.jade"; -pug_html = pug_html + "Null\u003C\u002Fth\u003E"; +pug_html = pug_html + "null\u003C\u002Fth\u003E"; ;pug_debug_line = 13;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n \u003Cth\u003E\u003C\u002Fth\u003E\n \u003C\u002Ftr\u003E\n \u003C\u002Fthead\u003E"; ;pug_debug_line = 14;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n \u003Ctbody\u003E"; ;pug_debug_line = 15;pug_debug_filename = "views\u002Fstructure_tab.jade"; -// iterate columns +// iterate columns || [] ;(function(){ - var $$obj = columns; + var $$obj = columns || []; if ('number' == typeof $$obj.length) { + if ($$obj.length) { for (var pug_index0 = 0, $$l = $$obj.length; pug_index0 < $$l; pug_index0++) { var column = $$obj[pug_index0]; ;pug_debug_line = 16;pug_debug_filename = "views\u002Fstructure_tab.jade"; @@ -2299,6 +2300,17 @@ pug_html = pug_html + "\u003Ca" + (pug.attr("exec", "deleteColumn('" + column.co ;pug_debug_line = 26;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "Delete\u003C\u002Fa\u003E\n \u003C\u002Ftd\u003E\n \u003C\u002Ftr\u003E"; } + } else { +;pug_debug_line = 28;pug_debug_filename = "views\u002Fstructure_tab.jade"; +if (!columns) { +;pug_debug_line = 29;pug_debug_filename = "views\u002Fstructure_tab.jade"; +pug_html = pug_html + "\n \u003Ctr\u003E"; +;pug_debug_line = 30;pug_debug_filename = "views\u002Fstructure_tab.jade"; +pug_html = pug_html + "\n \u003Ctd collspan=\"7\"\u003E"; +;pug_debug_line = 30;pug_debug_filename = "views\u002Fstructure_tab.jade"; +pug_html = pug_html + "Error accured while getting table info\u003C\u002Ftd\u003E\n \u003C\u002Ftr\u003E"; +} + } } else { var $$l = 0; for (var pug_index0 in $$obj) { @@ -2343,94 +2355,105 @@ pug_html = pug_html + "\u003Ca" + (pug.attr("exec", "deleteColumn('" + column.co ;pug_debug_line = 26;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "Delete\u003C\u002Fa\u003E\n \u003C\u002Ftd\u003E\n \u003C\u002Ftr\u003E"; } + if ($$l === 0) { +;pug_debug_line = 28;pug_debug_filename = "views\u002Fstructure_tab.jade"; +if (!columns) { +;pug_debug_line = 29;pug_debug_filename = "views\u002Fstructure_tab.jade"; +pug_html = pug_html + "\n \u003Ctr\u003E"; +;pug_debug_line = 30;pug_debug_filename = "views\u002Fstructure_tab.jade"; +pug_html = pug_html + "\n \u003Ctd collspan=\"7\"\u003E"; +;pug_debug_line = 30;pug_debug_filename = "views\u002Fstructure_tab.jade"; +pug_html = pug_html + "Error accured while getting table info\u003C\u002Ftd\u003E\n \u003C\u002Ftr\u003E"; +} + } } }).call(this); pug_html = pug_html + "\n \u003C\u002Ftbody\u003E\n \u003C\u002Ftable\u003E\n \u003C\u002Fdiv\u003E\n\u003C\u002Fdiv\u003E"; -;pug_debug_line = 28;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 32;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n\u003Cfooter\u003E"; -;pug_debug_line = 29;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 33;pug_debug_filename = "views\u002Fstructure_tab.jade"; if (!is_mat_view) { -;pug_debug_line = 30;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 34;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n \u003Cbutton class=\"native-look\" exec=\"addColumnForm\"\u003E"; -;pug_debug_line = 30;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 34;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "Add column\u003C\u002Fbutton\u003E"; } pug_html = pug_html + "\n\u003C\u002Ffooter\u003E"; -;pug_debug_line = 32;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 36;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n\u003Ch4\u003E"; -;pug_debug_line = 32;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 36;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "Indexes\u003C\u002Fh4\u003E"; -;pug_debug_line = 34;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 38;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n\u003Cdiv class=\"rescol-wrapper with-borders indexes-list-table\"\u003E"; -;pug_debug_line = 35;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 39;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n \u003Cdiv class=\"rescol-header-wrapper\"\u003E\u003C\u002Fdiv\u003E"; -;pug_debug_line = 36;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 40;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n \u003Cdiv class=\"rescol-content-wrapper\"\u003E"; -;pug_debug_line = 37;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 41;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n \u003Ctable\u003E"; -;pug_debug_line = 38;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 42;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n \u003Cthead\u003E"; -;pug_debug_line = 39;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 43;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n \u003Ctr\u003E"; -;pug_debug_line = 40;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 44;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n \u003Cth\u003E"; -;pug_debug_line = 40;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 44;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "name\u003C\u002Fth\u003E"; -;pug_debug_line = 41;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 45;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n \u003Cth\u003E"; -;pug_debug_line = 41;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 45;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "p. key\u003C\u002Fth\u003E"; -;pug_debug_line = 42;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 46;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n \u003Cth\u003E"; -;pug_debug_line = 42;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 46;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "uniq\u003C\u002Fth\u003E"; -;pug_debug_line = 43;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 47;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n \u003Cth\u003E"; -;pug_debug_line = 43;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 47;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "columns\u003C\u002Fth\u003E"; -;pug_debug_line = 44;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 48;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n \u003Cth\u003E"; -;pug_debug_line = 44;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 48;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "type\u003C\u002Fth\u003E"; -;pug_debug_line = 45;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 49;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n \u003Cth\u003E\u003C\u002Fth\u003E\n \u003C\u002Ftr\u003E\n \u003C\u002Fthead\u003E"; -;pug_debug_line = 46;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 50;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n \u003Ctbody\u003E"; -;pug_debug_line = 47;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 51;pug_debug_filename = "views\u002Fstructure_tab.jade"; // iterate indexes ;(function(){ var $$obj = indexes; if ('number' == typeof $$obj.length) { for (var pug_index1 = 0, $$l = $$obj.length; pug_index1 < $$l; pug_index1++) { var index = $$obj[pug_index1]; -;pug_debug_line = 48;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 52;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n \u003Ctr\u003E"; -;pug_debug_line = 49;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 53;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n \u003Ctd\u003E"; -;pug_debug_line = 49;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 53;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + (pug.escape(null == (pug_interp = index.relname) ? "" : pug_interp)) + "\u003C\u002Ftd\u003E"; -;pug_debug_line = 50;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 54;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n \u003Ctd\u003E"; -;pug_debug_line = 50;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 54;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + (pug.escape(null == (pug_interp = index.indisprimary ? 'Yes' : 'No') ? "" : pug_interp)) + "\u003C\u002Ftd\u003E"; -;pug_debug_line = 51;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 55;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n \u003Ctd\u003E"; -;pug_debug_line = 51;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 55;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + (pug.escape(null == (pug_interp = index.indisunique ? 'Yes' : 'No') ? "" : pug_interp)) + "\u003C\u002Ftd\u003E"; -;pug_debug_line = 52;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 56;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n \u003Ctd\u003E"; -;pug_debug_line = 52;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 56;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + (pug.escape(null == (pug_interp = index.pg_get_indexdef.match(/ON [^\(]+\((.+)\)/)[1]) ? "" : pug_interp)) + "\u003C\u002Ftd\u003E"; -;pug_debug_line = 53;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 57;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n \u003Ctd\u003E"; -;pug_debug_line = 53;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 57;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + (pug.escape(null == (pug_interp = getIndexType(index.pg_get_indexdef)) ? "" : pug_interp)) + "\u003C\u002Ftd\u003E"; -;pug_debug_line = 54;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 58;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n \u003Ctd\u003E"; -;pug_debug_line = 55;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 59;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\u003Ca" + (pug.attr("exec", "deleteIndex('" + index.relname + "')", true, false)) + "\u003E"; -;pug_debug_line = 55;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 59;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "Delete\u003C\u002Fa\u003E\u003C\u002Ftd\u003E\n \u003C\u002Ftr\u003E"; } } else { @@ -2438,97 +2461,97 @@ pug_html = pug_html + "Delete\u003C\u002Fa\u003E\u003C\u002Ftd\u003E\n \u for (var pug_index1 in $$obj) { $$l++; var index = $$obj[pug_index1]; -;pug_debug_line = 48;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 52;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n \u003Ctr\u003E"; -;pug_debug_line = 49;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 53;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n \u003Ctd\u003E"; -;pug_debug_line = 49;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 53;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + (pug.escape(null == (pug_interp = index.relname) ? "" : pug_interp)) + "\u003C\u002Ftd\u003E"; -;pug_debug_line = 50;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 54;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n \u003Ctd\u003E"; -;pug_debug_line = 50;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 54;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + (pug.escape(null == (pug_interp = index.indisprimary ? 'Yes' : 'No') ? "" : pug_interp)) + "\u003C\u002Ftd\u003E"; -;pug_debug_line = 51;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 55;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n \u003Ctd\u003E"; -;pug_debug_line = 51;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 55;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + (pug.escape(null == (pug_interp = index.indisunique ? 'Yes' : 'No') ? "" : pug_interp)) + "\u003C\u002Ftd\u003E"; -;pug_debug_line = 52;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 56;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n \u003Ctd\u003E"; -;pug_debug_line = 52;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 56;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + (pug.escape(null == (pug_interp = index.pg_get_indexdef.match(/ON [^\(]+\((.+)\)/)[1]) ? "" : pug_interp)) + "\u003C\u002Ftd\u003E"; -;pug_debug_line = 53;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 57;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n \u003Ctd\u003E"; -;pug_debug_line = 53;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 57;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + (pug.escape(null == (pug_interp = getIndexType(index.pg_get_indexdef)) ? "" : pug_interp)) + "\u003C\u002Ftd\u003E"; -;pug_debug_line = 54;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 58;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n \u003Ctd\u003E"; -;pug_debug_line = 55;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 59;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\u003Ca" + (pug.attr("exec", "deleteIndex('" + index.relname + "')", true, false)) + "\u003E"; -;pug_debug_line = 55;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 59;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "Delete\u003C\u002Fa\u003E\u003C\u002Ftd\u003E\n \u003C\u002Ftr\u003E"; } } }).call(this); pug_html = pug_html + "\n \u003C\u002Ftbody\u003E\n \u003C\u002Ftable\u003E\n \u003C\u002Fdiv\u003E\n\u003C\u002Fdiv\u003E"; -;pug_debug_line = 57;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 61;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n\u003Cfooter\u003E"; -;pug_debug_line = 58;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 62;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n \u003Cbutton class=\"native-look\" exec=\"addIndexForm\"\u003E"; -;pug_debug_line = 58;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 62;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "Add index\u003C\u002Fbutton\u003E\n\u003C\u002Ffooter\u003E"; -;pug_debug_line = 60;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 64;pug_debug_filename = "views\u002Fstructure_tab.jade"; if (constraints.length > 0) { -;pug_debug_line = 61;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 65;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n\u003Ch4\u003E"; -;pug_debug_line = 61;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 65;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "Constraints\u003C\u002Fh4\u003E"; -;pug_debug_line = 62;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 66;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n\u003Cdiv class=\"rescol-wrapper with-borders indexes-list-table\"\u003E"; -;pug_debug_line = 63;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 67;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n \u003Cdiv class=\"rescol-header-wrapper\"\u003E\u003C\u002Fdiv\u003E"; -;pug_debug_line = 64;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 68;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n \u003Cdiv class=\"rescol-content-wrapper\"\u003E"; -;pug_debug_line = 65;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 69;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n \u003Ctable\u003E"; -;pug_debug_line = 66;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 70;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n \u003Cthead\u003E"; -;pug_debug_line = 67;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 71;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n \u003Ctr\u003E"; -;pug_debug_line = 68;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 72;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n \u003Cth\u003E"; -;pug_debug_line = 68;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 72;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "name\u003C\u002Fth\u003E"; -;pug_debug_line = 69;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 73;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n \u003Cth\u003E"; -;pug_debug_line = 69;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 73;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "source\u003C\u002Fth\u003E"; -;pug_debug_line = 70;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 74;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n \u003Cth\u003E\u003C\u002Fth\u003E\n \u003C\u002Ftr\u003E\n \u003C\u002Fthead\u003E"; -;pug_debug_line = 71;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 75;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n \u003Ctbody\u003E"; -;pug_debug_line = 72;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 76;pug_debug_filename = "views\u002Fstructure_tab.jade"; // iterate constraints ;(function(){ var $$obj = constraints; if ('number' == typeof $$obj.length) { for (var pug_index2 = 0, $$l = $$obj.length; pug_index2 < $$l; pug_index2++) { var constraint = $$obj[pug_index2]; -;pug_debug_line = 73;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 77;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n \u003Ctr\u003E"; -;pug_debug_line = 74;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 78;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n \u003Ctd\u003E"; -;pug_debug_line = 74;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 78;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + (pug.escape(null == (pug_interp = constraint.conname) ? "" : pug_interp)) + "\u003C\u002Ftd\u003E"; -;pug_debug_line = 75;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 79;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n \u003Ctd\u003E"; -;pug_debug_line = 75;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 79;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + (pug.escape(null == (pug_interp = constraint.pretty_source) ? "" : pug_interp)) + "\u003C\u002Ftd\u003E"; -;pug_debug_line = 76;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 80;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n \u003Ctd\u003E"; -;pug_debug_line = 77;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 81;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\u003Ca" + (pug.attr("exec", "deleteConstraint('" + constraint.conname + "')", true, false)) + "\u003E"; -;pug_debug_line = 77;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 81;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "Delete\u003C\u002Fa\u003E\u003C\u002Ftd\u003E\n \u003C\u002Ftr\u003E"; } } else { @@ -2536,21 +2559,21 @@ pug_html = pug_html + "Delete\u003C\u002Fa\u003E\u003C\u002Ftd\u003E\n \u for (var pug_index2 in $$obj) { $$l++; var constraint = $$obj[pug_index2]; -;pug_debug_line = 73;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 77;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n \u003Ctr\u003E"; -;pug_debug_line = 74;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 78;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n \u003Ctd\u003E"; -;pug_debug_line = 74;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 78;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + (pug.escape(null == (pug_interp = constraint.conname) ? "" : pug_interp)) + "\u003C\u002Ftd\u003E"; -;pug_debug_line = 75;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 79;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n \u003Ctd\u003E"; -;pug_debug_line = 75;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 79;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + (pug.escape(null == (pug_interp = constraint.pretty_source) ? "" : pug_interp)) + "\u003C\u002Ftd\u003E"; -;pug_debug_line = 76;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 80;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\n \u003Ctd\u003E"; -;pug_debug_line = 77;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 81;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "\u003Ca" + (pug.attr("exec", "deleteConstraint('" + constraint.conname + "')", true, false)) + "\u003E"; -;pug_debug_line = 77;pug_debug_filename = "views\u002Fstructure_tab.jade"; +;pug_debug_line = 81;pug_debug_filename = "views\u002Fstructure_tab.jade"; pug_html = pug_html + "Delete\u003C\u002Fa\u003E\u003C\u002Ftd\u003E\n \u003C\u002Ftr\u003E"; } } @@ -2558,7 +2581,7 @@ pug_html = pug_html + "Delete\u003C\u002Fa\u003E\u003C\u002Ftd\u003E\n \u pug_html = pug_html + "\n \u003C\u002Ftbody\u003E\n \u003C\u002Ftable\u003E\n \u003C\u002Fdiv\u003E\n\u003C\u002Fdiv\u003E"; }}.call(this,"column_type_label" in locals_for_with?locals_for_with.column_type_label:typeof column_type_label!=="undefined"?column_type_label:undefined,"columns" in locals_for_with?locals_for_with.columns:typeof columns!=="undefined"?columns:undefined,"constraints" in locals_for_with?locals_for_with.constraints:typeof constraints!=="undefined"?constraints:undefined,"getIndexType" in locals_for_with?locals_for_with.getIndexType:typeof getIndexType!=="undefined"?getIndexType:undefined,"indexes" in locals_for_with?locals_for_with.indexes:typeof indexes!=="undefined"?indexes:undefined,"is_mat_view" in locals_for_with?locals_for_with.is_mat_view:typeof is_mat_view!=="undefined"?is_mat_view:undefined));} catch (err) {pug.rethrow(err, pug_debug_filename, pug_debug_line, pug_debug_sources[pug_debug_filename]);};return pug_html;}; -exports["structure_tab"].content = ".rescol-wrapper.with-borders.columns-list-table\n .rescol-header-wrapper\n .rescol-content-wrapper\n table\n thead\n tr\n th column\n th type\n th max length\n th default\n th primary key\n th Null\n th\n tbody\n each column in columns\n tr\n td= column.column_name\n td(title = column_type_label(column))= column_type_label(column, true)\n td= column.character_maximum_length\n td= ('' + column.column_default).match(/^nextval/) ? 'auto increment' : column.column_default\n td= column.is_primary_key ? 'yes' : ''\n td= column.is_nullable == 'YES' || column.is_nullable == true ? 'yes' : 'no'\n td\n a(exec=\"editColumn('\" + column.column_name + \"')\") Edit\n != \" \"\n a(exec=\"deleteColumn('\" + column.column_name + \"')\") Delete\n\nfooter\n if !is_mat_view\n button.native-look(exec=\"addColumnForm\") Add column\n\nh4 Indexes\n\n.rescol-wrapper.with-borders.indexes-list-table\n .rescol-header-wrapper\n .rescol-content-wrapper\n table\n thead\n tr\n th name\n th p. key\n th uniq\n th columns\n th type\n th\n tbody\n each index in indexes\n tr\n td= index.relname\n td= index.indisprimary ? 'Yes' : 'No'\n td= index.indisunique ? 'Yes' : 'No'\n td= index.pg_get_indexdef.match(/ON [^\\(]+\\((.+)\\)/)[1]\n td= getIndexType(index.pg_get_indexdef)\n td\n a(exec=\"deleteIndex('\" + index.relname + \"')\") Delete\n\nfooter\n button.native-look(exec=\"addIndexForm\") Add index\n\nif constraints.length > 0\n h4 Constraints\n .rescol-wrapper.with-borders.indexes-list-table\n .rescol-header-wrapper\n .rescol-content-wrapper\n table\n thead\n tr\n th name\n th source\n th\n tbody\n each constraint in constraints\n tr\n td= constraint.conname\n td= constraint.pretty_source\n td\n a(exec=\"deleteConstraint('\" + constraint.conname + \"')\") Delete\n"; +exports["structure_tab"].content = ".rescol-wrapper.with-borders.columns-list-table\n .rescol-header-wrapper\n .rescol-content-wrapper\n table\n thead\n tr\n th column\n th type\n th max length\n th default\n th primary key\n th null\n th\n tbody\n each column in columns || []\n tr\n td= column.column_name\n td(title = column_type_label(column))= column_type_label(column, true)\n td= column.character_maximum_length\n td= ('' + column.column_default).match(/^nextval/) ? 'auto increment' : column.column_default\n td= column.is_primary_key ? 'yes' : ''\n td= column.is_nullable == 'YES' || column.is_nullable == true ? 'yes' : 'no'\n td\n a(exec=\"editColumn('\" + column.column_name + \"')\") Edit\n != \" \"\n a(exec=\"deleteColumn('\" + column.column_name + \"')\") Delete\n else\n if !columns\n tr\n td(collspan=7) Error accured while getting table info\n\nfooter\n if !is_mat_view\n button.native-look(exec=\"addColumnForm\") Add column\n\nh4 Indexes\n\n.rescol-wrapper.with-borders.indexes-list-table\n .rescol-header-wrapper\n .rescol-content-wrapper\n table\n thead\n tr\n th name\n th p. key\n th uniq\n th columns\n th type\n th\n tbody\n each index in indexes\n tr\n td= index.relname\n td= index.indisprimary ? 'Yes' : 'No'\n td= index.indisunique ? 'Yes' : 'No'\n td= index.pg_get_indexdef.match(/ON [^\\(]+\\((.+)\\)/)[1]\n td= getIndexType(index.pg_get_indexdef)\n td\n a(exec=\"deleteIndex('\" + index.relname + \"')\") Delete\n\nfooter\n button.native-look(exec=\"addIndexForm\") Add index\n\nif constraints.length > 0\n h4 Constraints\n .rescol-wrapper.with-borders.indexes-list-table\n .rescol-header-wrapper\n .rescol-content-wrapper\n table\n thead\n tr\n th name\n th source\n th\n tbody\n each constraint in constraints\n tr\n td= constraint.conname\n td= constraint.pretty_source\n td\n a(exec=\"deleteConstraint('\" + constraint.conname + \"')\") Delete\n"; exports["users_tab"] = function template(pug, locals) {var pug_html = "", pug_mixins = {}, pug_interp;var pug_debug_filename, pug_debug_line;try {var pug_debug_sources = {"views\u002Fusers_tab.jade":".rescol-wrapper.with-borders\n .rescol-header-wrapper\n .rescol-content-wrapper\n table\n thead\n tr\n th Role name\n th List of roles\n th Member of\n th(style=\"max-width: 250px\") Owned Databases\n th\n tbody\n each user in rows\n tr\n td\n if currentUser == user.rolname\n strong= user.rolname\n br\n small (current user)\n else\n = user.rolname\n td(style=\"max-width: 180px\")= user.roles.join(', ')\n td= user.memberof\n td(style=\"max-width: 250px\")= user.owned_dbs\n td\n a(exec=\"editUser('\" + user.rolname + \"')\") Edit\n = \" \"\n a(exec=\"deleteUser('\" + user.rolname + \"')\") Delete\n\nfooter\n button.native-look.createUserBtn(exec=\"newUserDialog\") Create new user\n \u002F\u002Fbutton.native-look.createRoleBtn(exec=\"newRole\") Create new role"}; ;var locals_for_with = (locals || {});(function (currentUser, rows) {var pug_indent = []; ;pug_debug_line = 1;pug_debug_filename = "views\u002Fusers_tab.jade"; diff --git a/views/structure_tab.jade b/views/structure_tab.jade index ea85ce05..d03a699c 100644 --- a/views/structure_tab.jade +++ b/views/structure_tab.jade @@ -9,10 +9,10 @@ th max length th default th primary key - th Null + th null th tbody - each column in columns + each column in columns || [] tr td= column.column_name td(title = column_type_label(column))= column_type_label(column, true) @@ -24,6 +24,10 @@ a(exec="editColumn('" + column.column_name + "')") Edit != " " a(exec="deleteColumn('" + column.column_name + "')") Delete + else + if !columns + tr + td(collspan=7) Error accured while getting table info footer if !is_mat_view