您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
trello Cart to Excel suppert custom fields
当前为
// ==UserScript== // @name trello Cart to Excel // @namespace http://www.hi-j.com/ // @version 0.1.1 // @description trello Cart to Excel suppert custom fields // @author will // @match http*://*trello.com/b/* // @grant none // ==/UserScript== (function() { function Map(){ this.container = new Object(); } Map.prototype.put = function(key, value){ this.container[key] = value; }; Map.prototype.get = function(key){ return this.container[key]; }; var tableToExcel = (function() { var uri = 'data:application/vnd.ms-excel;base64,', template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table style="font-size:15px;" border="1">{table}</table></body></html>', base64 = function(s) { return window.btoa(unescape(encodeURIComponent(s))); }, format = function(s, c) { return s.replace(/{(\w+)}/g, function(m, p) { return c[p]; }); }; return function(table, name) { if (!table.nodeType) table = document.getElementById(table); var ctx = { worksheet: name || 'Worksheet', table: table.innerHTML }; window.location.href = uri + base64(format(template, ctx)); }; })(); var getPluginDataById = function(pluginData){ var obj = null; if(pluginData.length > 0){ //onsole.log(pluginData.length); $.each(pluginData,function(){ if(this.idPlugin == '56d5e249a98895a9797bebb9'){ //判断是自定义字段的插件ID console.log(this.value); eval('obj = '+this.value+';'); return obj; } }); } return obj; }; var getPluginFields = function(data){ var pluginFields = new Array(); var tmp = getPluginDataById(data.pluginData); if(tmp){ var fields = tmp.fields; $.each(fields,function(){ pluginFields.push(this); }); } return pluginFields; }; // 获取{id,value} id == key , return value; var getPlauginVal = function(data,key){ var ret = null; $.each(data,function(){ if(this.id == key){ ret = this.value; return ret; } }); return ret; }; var getListMap = function(data){ var map = new Map(); $.each(data.lists,function(){ map.put(this.id,this.name); //onsole.log(this.id+":"+this.name); }); return map; }; var init = function(){ var test = $('<a class="board-header-btn board-header-btn-org-name board-header-btn-without-icon"><span class="board-header-btn-text" id="tableToExcel">导出Excel</span></a>'); test.click(function(){ $.getJSON(window.location.href+".json", function(data) { var pluginFields = getPluginFields(data); var table = document.createElement("table"); // 标题开始 tr = document.createElement("tr"); //tr start var tds = ['标题','状态']; $.each(pluginFields,function(){ tds.push(this.n); }); $.each(tds,function(){ td = document.createElement("td"); td.style.backgroundColor = "red"; td.innerHTML = this; tr.append(td); }); table.append(tr); // tr end // 内容开始 var listMap = getListMap(data); var tr,td,pluginData; $.each(data.cards,function(){ if(this.name.indexOf('#') == -1){ tr = document.createElement("tr"); // tr start // 标题 td = document.createElement("td"); td.innerHTML = this.name; tr.append(td); // 状态 td = document.createElement("td"); td.innerHTML = listMap.get(this.idList); tr.append(td); // 插件 if(this.pluginData.length > 0){ // 判断没有插件的 var pluginData = getPluginDataById(this.pluginData).fields; $.each(pluginFields,function(){ td = document.createElement("td"); if(this.t == '0'){ td.innerHTML = pluginData[this.id]; }else if(this.t == '4'){ td.innerHTML = getPlauginVal(this.o,pluginData[this.id]); }else{ // todo } tr.append(td); }); } table.append(tr); // tr end } }); console.log(table.innerHTML); tableToExcel(table); }); }); $('div.board-header').append(test); }; setInterval(function(){ if(!$('#tableToExcel').html()){ init(); } },1000); })();