📄 boxtab.js
字号:
function boxTabField(dbRes, mdi, tabProc) { if (!mdi) return; var div=mdi.tab['Fields']; if (!div) return; while (div.childNodes.length > 0) div.removeChild(div.childNodes[0]); var grid=new boxGrid(); if (mdi.type == 'table') { if (dbRes.row && dbRes.row.length > 0 && dbRes.row[0].data.length == 6) { grid.header=['Name', 'Type', 'Sequence', 'Not null', 'Primery Key', 'Auto-increment']; grid.align[3]=grid.align[4]=grid.align[5]='center'; }else{ grid.header=['Name', 'Type', 'Not null', 'Default']; grid.align[2]='center'; } }else grid.header=['Name', 'Type']; div.appendChild(grid.draw()); var ddl=''; if (mdi.type == 'table') ddl=mdi.data.ddl; if (dbRes.row) { mdi.fields.splice(0, mdi.fields.length); for (var i=0; i < dbRes.row.length; i++) { if (mdi.type == 'table' && dbRes.row[i].data.length == 2) { dbRes.row[i].data[2]='X'; var reg=RegExp('"?'+dbRes.row[i].data[0]+'"?\\s*'+dbRes.row[i].data[1]+'\\s*(not\\s+null)\\s*(default\\s(\'[^\']*\'|[^,)]*))', 'i'); var match=ddl.match(reg); if (match) { if (match[1]) dbRes.row[i].data[2]='O'; if (match[3]) dbRes.row[i].data[3]=match[3].replace(/^\'/, '').replace(/\'$/, ''); } mdi.fields.push(dbRes.row[i].data[0]); } grid.appendData(dbRes.row[i].data); } }}function boxTabIndex(mdi, name) { if (!mdi) return; var div=mdi.tab['Indices']; if (!div) return; while (div.childNodes.length > 0) div.removeChild(div.childNodes[0]); var grid=new boxGrid(); grid.header=['Name', 'Unique', 'Columns', 'Action']; div.appendChild(grid.draw()); grid.align[1]='center'; grid.type[3]='html'; for (var key in _index) { if (_index[key].table == name) { var unique=_index[key].ddl.match(/^\s*CREATE\s*UNIQUE\s*/i)?'O':'X'; var columns=_index[key].ddl.match(/\s*ON\s*[^(]+\(([^)]+)\)/i); grid.appendData(_index[key].name, unique, columns?columns[1]:'', '<div class="boxTabAction"><a onclick="boxTabMenuAction(this, \'reindex\')">Reindex</a> | <a onclick="boxTabMenuAction(this, \'drop\')">Drop</a></div>'); grid.setData(_index[key]); grid.setLink('open'); } }}function boxTabTrigger(mdi, name) { if (!mdi) return; var div=mdi.tab['Triggers']; if (!div) return; while (div.childNodes.length > 0) div.removeChild(div.childNodes[0]); var grid=new boxGrid(); grid.header=['Name', 'Event', 'Fire on', 'For each', 'Action']; div.appendChild(grid.draw()); grid.align[1]=grid.align[2]=grid.align[3]=grid.align[4]='center'; grid.type[4]='html'; var event=''; var fire=''; var foreach=''; for (var key in _trigger) { if (_trigger[key].table == name) { var match=_trigger[key].ddl.match(/(BEFORE|AFTER|INSTEAD\s+OF|)\s+(DELETE|INSERT|UPDATE)\s+/i); if (match) { event=match[2]; fire=match[1] }else event=fire=''; match=_trigger[key].ddl.match(/\s+FOR\s+EACH\s+(ROW|STATEMENT)\s+/i); if (match) foreach=match[1]; else foreach=''; grid.appendData(_trigger[key].name, event, fire, foreach, '<div class="boxTabAction"><a onclick="boxTabMenuAction(this, \'drop\')">Drop</a></div>'); grid.setData(_trigger[key]); grid.setLink('open'); } }}function boxTabDepend(mdi, name) { if (!mdi) return; var div=mdi.tab['Dependencies']; if (!div) return; while (div.childNodes.length > 0) div.removeChild(div.childNodes[0]); var grid=new boxGrid(); grid.header=['Name', 'Type']; div.appendChild(grid.draw()); if (mdi.data.type == 'table') { //grid.addTitle('Objects that depend on '+name, 0); for (var key in _index) { if (_index[key].table == name) { grid.appendData(_index[key].name, 'Index'); grid.setData(_index[key]); grid.setLink('open'); } } for (var key in _trigger) { if (_trigger[key].table == name) { grid.appendData(_trigger[key].name, 'Trigger'); grid.setData(_trigger[key]); grid.setLink('open'); } } }else{ //grid.addTitle('Objects that '+name+' depend on', 0); var tablename=mdi.data.table; var table=arrayGet(_tables, 'name', tablename); if (table) { grid.appendData(tablename, 'Table'); grid.setData(table); grid.setLink('open'); } }}function boxTabDDL(mdi, DDL) { if (!mdi) return; var div=mdi.tab['DDL']; if (!div) return; while (div.childNodes.length > 0) div.removeChild(div.childNodes[0]); var area=appendNew(div, 'DIV'); area.className='ddl'; innerText(area, DDL); syntaxSQL(area);}function boxTabScript(mdi, DDL) { if (!mdi) return; var div=mdi.tab['Script']; if (!div) return; while (div.childNodes.length > 0) div.removeChild(div.childNodes[0]); var area=appendNew(div, 'DIV'); area.className='ddl'; var match=DDL.match(/\s+BEGIN\s+(.*)\s+END\s*$/i); if (match && match[1]) innerText(area, match[1]); else innerText(area, DDL); syntaxSQL(area);}function boxTabIndexDesc(mdi) { if (!mdi) return; var div=mdi.tab['Index']; if (!div) return; while (div.childNodes.length > 0) div.removeChild(div.childNodes[0]); var grid=new boxGrid(); grid.header=['Column', 'Direction']; div.appendChild(grid.draw()); var index=arrayGet(_index, 'name', mdi.data.name); if (!index) return; var ddl=index.ddl; if (ddl.match(/^\s*CREATE\s+UNIQUE\s+INDEX/i)) grid.addTitle('Unique index', 0); var match=ddl.match(/[(]([^)]+)[)]\s*$/); if (match) { var tmp=match[1].split(','); for (var i=0; i < tmp.length; i++) { match=tmp[i].match(/\s+(ASC|DESC|)\s*$/i); if (match) { if (!match[1]) match[1]='ASC'; else match[1]=match[1].toUpperCase(); }else match=[,'ASC']; var field=strip(trim(tmp[i].replace(/\s+(ASC|DESC)\s*$/i, ''))); grid.appendData(field, match[1]); } }}function boxTabSQL(mdi) { if (!mdi) return; var div=mdi.tab['SQL']; if (!div) return; if (div.childNodes.length <= 0) { var ifm=document.createElement('IFRAME'); ifm.frameBorder=0; ifm.border=0; with (ifm.style) { width='100%'; height='100%'; } div.appendChild(ifm); ifm.src='js-query.htm'; }}function boxTabResult(dbRes, mdi, tabProc) { if (!mdi) return; var div=mdi.tab['Result']; if (!div) return; while (div.childNodes.length > 0) div.removeChild(div.childNodes[0]); var grid=new boxGrid(); if (dbRes.columns && dbRes.columns[0] && dbRes.columns[0].columnname) grid.header=dbRes.columns[0].columnname; else grid.header[0]='No data'; div.appendChild(grid.draw()); if (dbRes.row) { for (var i=0; i < dbRes.row.length; i++) grid.appendData(dbRes.row[i].data); } if (mdi.selectedTab != 'Result') { for (var i=mdi.divTab.childNodes.length; i--;) { if (innerText(mdi.divTab.childNodes[i]) == 'Result') { boxTabSelect(mdi.divTab.childNodes[i], 'Result'); break; } } }}function boxTabExplain(dbRes, mdi, tabProc) { if (!mdi) return; var div=mdi.tab['Explain']; if (!div) return; while (div.childNodes.length > 0) div.removeChild(div.childNodes[0]); var grid=new boxGrid(); if (dbRes.columns && dbRes.columns[0] && dbRes.columns[0].columnname) grid.header=dbRes.columns[0].columnname; else grid.header[0]='No data'; div.appendChild(grid.draw()); if (dbRes.row) { for (var i=0; i < dbRes.row.length; i++) grid.appendData(dbRes.row[i].data); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -