您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Highlights index fields, adds a link to the related table to foreign keys
// ==UserScript== // @name phpmyadmin index highlighter // @author ameboide // @namespace http://userscripts.org/scripts/show/117633 // @description Highlights index fields, adds a link to the related table to foreign keys // @include */phpmyadmin/tbl_properties_structure.php* // @include */phpmyadmin/tbl_structure.php* // @include */phpmyadmin/db_structure.php* // @version 0.0.1.20140705013815 // ==/UserScript== //campos['nombre_del_campo'] = td var listaCampos = document.querySelectorAll('#tablestructure tbody th'); var campos = {}; for(var i=0; i<listaCampos.length; i++){ var campo = listaCampos[i]; var txt = campo.textContent.trim(); campos[txt] = campo; //id sin indice -> rojo claro / codigo sin indice -> rojo oscuro if(txt.match(/^id_|_id$/i)) campo.style.color = '#f00'; else if(txt.match(/^codigo_|_codigo$/i)) campo.style.color = '#800'; } //idx -> azul oscuro var idxs = document.querySelectorAll('#table_indexes tbody tr:not(.tblFooters) td:last-of-type'); for(i=0; i<idxs.length; i++){ var campo = campos[idxs[i].textContent.trim()]; if(campo) campo.style.color = '#008'; } var urlBase = document.querySelector('[href^="tbl_relation.php"]').href; var matches = document.location.href.match(/\/(\w+\.php).*token=(\w+)/); var url = matches[1]; var token = matches[2]; //FK -> link azul claro function rellenar(claves){ for(var campo in claves){ if(!campos[campo]) continue; var s = claves[campo].split('.'); var db = s[0]; var tabla = s[1]; var campo_fk = s[2]; var a = document.createElement('a'); a.href = url+'?db='+db+'&token='+token+'&table='+tabla; a.title = tabla+' . '+campo_fk; a.id = 'link_fk_' + campo; a.innerHTML = ' ->'; var link_viejo = document.getElementById(a.id); if(link_viejo) campos[campo].removeChild(link_viejo); campos[campo].appendChild(a); campos[campo].style.color = '#00f'; } } //si ya habia visitado esta tabla, tengo las claves foraneas guardadas var codigo_cache = document.location.host + ' : ' + urlBase.match(/(\?|&)db=(\w+)/)[2] + ' . ' + urlBase.match(/(\?|&)table=(\w+)/)[2]; var cache = GM_getValue(codigo_cache, null); if(cache) rellenar(JSON.parse(cache)); //leer la pag de las claves foraneas (si estaba cacheado, leo igual para actualizar) var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function(){ if (xhr.readyState == 4 && xhr.status == 200){ try{ var div = document.createElement('div'); div.innerHTML = xhr.responseText; var claves = {}; var opts = div.querySelectorAll('select[name^="destination"] option[selected]'); for(var i=0; i<opts.length; i++){ var opt = opts[i]; var val = opt.value; while(opt.nodeName != 'TR') opt = opt.parentNode; var campo = opt.firstElementChild.textContent.trim(); claves[campo] = val; } var claves_str = JSON.stringify(claves); //si no es lo mismo q tenia cacheado, vuelvo a rellenar con la info nueva if(claves_str != cache){ //workaround para error raro setTimeout(function() { GM_setValue(codigo_cache, claves_str); }, 0); rellenar(claves); } } catch(e){} } } xhr.open('GET', urlBase, true); xhr.send(null);
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址