http://www.google.com/ig/directory?type=gadgets&url=hosting.gmodules.com/ig/gadgets/file/108298391133423084019/Worldbi_GDS_Pivot_V2.xml
<Module>
−
<ModulePrefs title="__MSG_gadgetTitle__" title_url="http://www.lamboratory.com/gadgets.php#gse" description="__MSG_description__" author="Jorge Alvaro Rey" author_email="gsEditorFeedback@lamboratory.com" author_affiliation="Lamboratory.com" author_location="Madrid, Spain" author_photo="http://www.lamboratory.com/images/jorge.PNG" author_aboutme="My brother Guillermo and me are the Lamb Brothers." author_link="http://www.lamboratory.com" author_quote="Please allow me to introduce myself" thumbnail="http://www.lamboratory.com/images/gseThumbnail.PNG" screenshot="http://www.lamboratory.com/images/gseScreenshot.PNG" category="tools">
<Locale messages="http://www.lamboratory.com/gadgets/gse_messages/ALL_ALL.xml"/>
<Locale lang="es" messages="http://www.lamboratory.com/gadgets/gse_messages/es_ALL.xml"/>
<Require feature="dynamic-height"/>
<Require feature="setprefs"/>
<Require feature="tabs"/>
<Require feature="grid"/>
<Require feature="analytics"/>
</ModulePrefs>
<UserPref name="key" display_name="__MSG_key__" datatype="string" required="true"/>
<UserPref name="sheet0" display_name="__MSG_sheetFeed1__" datatype="string" required="true"/>
<UserPref name="sheet1" display_name="__MSG_sheetFeed2__" datatype="string" required="false"/>
<UserPref name="sheet2" display_name="__MSG_sheetFeed3__" datatype="string" required="false"/>
<UserPref name="sheet3" display_name="__MSG_sheetFeed4__" datatype="string" required="false"/>
<UserPref name="col0" default_value="1" datatype="hidden"/>
<UserPref name="row0" default_value="1" datatype="hidden"/>
<UserPref name="col1" default_value="1" datatype="hidden"/>
<UserPref name="row1" default_value="1" datatype="hidden"/>
<UserPref name="col2" default_value="1" datatype="hidden"/>
<UserPref name="row2" default_value="1" datatype="hidden"/>
<UserPref name="col3" default_value="1" datatype="hidden"/>
<UserPref name="row3" default_value="1" datatype="hidden"/>
<UserPref name="nCols" display_name="__MSG_colsDisplayed__" default_value="3" datatype="string" required="true"/>
<UserPref name="nRows" display_name="__MSG_rowsDisplayed__" default_value="5" datatype="string" required="true"/>
−
<Content type="html">
<style>
a img {
border: none;
}
.g {
text-indent:3px;
padding-right:3px;
overflow:hidden;
white-space:nowrap;
letter-spacing:0;
word-spacing:0;
background-color:#FFFFFF;
z-index:1;
border-top:0px none;
border-left:0px none;
border-bottom:1px solid #CCC;
border-right:1px solid #CCC;
font-family:Arial;
font-size:100.0%;
font-weight:normal;
font-style:normal;
text-decoration:none;
vertical-align:bottom;
white-space:normal;
text-indent:0px;
padding-left:3px;
}
.s0 {
background-color:#EFEFF7;
font-size:80.0%;
text-align:center;
border-top:1px solid #CCC;
border-left:1px solid #CCC;
}
.selected {
border: 2px solid #3366CC;
}
.infoSelected {
border: 1px solid #3366CC;
}
.tblGenFixed {
table-layout: fixed;
border-collapse: collapse;
border-style: none;
border-spacing: 0px;
width: 100%;
font-size: 10pt;
}
#tblMain {
border: 0;
cellpadding: 0;
cellspacing: 0;
padding-top: 10px;
width: 100%;
}
</style>
<div id="data"></div>
<div id="container">
<div id="info" style="overflow:auto;"></div>
<div id="edit"><input type="text" id="editField" /><input type="button" value="__MSG_updateCell__" onClick="updateCell(_gel('editField').value)" /></div>
</div>
<script type="text/javascript">
var cols = ['0','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM','AN','AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ','BA','BB','BC','BD','BE','BF','BG','BH','BI','BJ','BK','BL','BM','BN','BO','BP','BQ','BR','BS','BT','BU','BV','BW','BX','BY','BZ','CA','CB','CC','CD','CE','CF','CG','CH','CI','CJ','CK','CL','CM','CN','CO','CP','CQ','CR','CS','CT','CU','CV','CW','CX','CY','CZ','DA','DB','DC','DD','DE','DF','DG','DH','DI','DJ','DK','DL','DM','DN','DO','DP','DQ','DR','DS','DT','DU','DV','DW','DX','DY','DZ','EA','EB','EC','ED','EE','EF','EG','EH','EI','EJ','EK','EL','EM','EN','EO','EP','EQ','ER','ES','ET','EU','EV','EW','EX','EY','EZ','FA','FB','FC','FD','FE','FF','FG','FH','FI','FJ','FK','FL','FM','FN','FO','FP','FQ','FR','FS','FT','FU','FV','FW','FX','FY','FZ','GA','GB','GC','GD','GE','GF','GG','GH','GI','GJ','GK','GL','GM','GN','GO','GP','GQ','GR','GS','GT','GU','GV','GW','GX','GY','GZ','HA','HB','HC','HD','HE','HF','HG','HH','HI','HJ','HK','HL','HM','HN','HO','HP','HQ','HR','HS','HT','HU','HV','HW','HX','HY','HZ','IA','IB','IC','ID','IE','IF','IG','IH','II','IJ','IK','IL','IM','IN','IO','IP','IQ','IR','IS','IT','IU','IV','IW','IX','IY','IZ'];
var prefs = new _IG_Prefs(__MODULE_ID__);
var spreadsheetFeeds = new Array();
var iFeeds = 0;
for (var i = 0; i <= 3 ; i++) {
if (prefs.getString("sheet"+i)!="") {
spreadsheetFeeds[iFeeds] = prefs.getString("sheet"+i);
iFeeds++;
}
}
var key = prefs.getString("key");
var colIni = new Array(4);
var rowIni = new Array(4);
colIni[0] = prefs.getInt("col0");
rowIni[0] = prefs.getInt("row0");
colIni[1] = prefs.getInt("col1");
rowIni[1] = prefs.getInt("row1");
colIni[2] = prefs.getInt("col2");
rowIni[2] = prefs.getInt("row2");
colIni[3] = prefs.getInt("col3");
rowIni[3] = prefs.getInt("row3");
var numCols = prefs.getInt("nCols");
var numRows = prefs.getInt("nRows");
var oldSelCol = 0;
var oldSelRow = 0;
var iSelectedTab = 0;
// Create backend object, initialize with data
var backend = new Object();
var arrayLength = (numRows+1)*(numCols+1);
backend.data = new Array(arrayLength);
for (var i = 0; i < arrayLength ; i++) {
backend.data[i]=" ";
}
backend._IGG_getNormalView = function(index) {
var value = this.data[index];
return '<span>' + value + '</span>';
}
backend._IGG_isDragSource = function(index) {
if((index%(numCols+1)!=0)&&(index>numCols)){
return true;
}
else{
return false;
}
}
backend._IGG_isDragTarget = function(index, sourceIndex) {
return false;
}
backend._IGG_handleDrag = selectCell;
var selColVal = '';
var selRowVal = '';
function selectCell(source) {
var selCol = source%(numCols+1);
var selRow = Math.floor(source/(numCols+1));
selColVal = this.data[selCol];
selRowVal = this.data[selRow*(numCols+1)];
_gel("info").innerHTML = "<span style=\"font-size:80.0%;\">"+selColVal+selRowVal+": </span>"+this.data[source];
_gel("container").className = "infoSelected";
if(aFormulas[iSelectedTab][selColVal+selRowVal])
{
_gel("editField").value = aFormulas[iSelectedTab][selColVal+selRowVal];
}
else
{
_gel("editField").value = "";
}
//highlight cell
var gridTable = document.getElementById('gridTable');
var rows = gridTable.getElementsByTagName("tr");
var cells = rows[selRow].getElementsByTagName("td");
var selSpan = cells[selCol].getElementsByTagName("span");
var selDiv = selSpan[0].getElementsByTagName("div");
selDiv[0].className = "selected";
//un-highlight cell
if ((oldSelCol>0)&&(oldSelRow>0)&&!((oldSelCol==selCol)&&(oldSelRow==selRow))){
cells = rows[oldSelRow].getElementsByTagName("td");
selSpan = cells[oldSelCol].getElementsByTagName("span");
selDiv = selSpan[0].getElementsByTagName("div");
selDiv[0].className = "";
}
oldSelCol = selCol;
oldSelRow = selRow;
//_gel("editField").focus();
// Tells gadget to resize itself
_IG_AdjustIFrameHeight();
_IG_Analytics("UA-2138291-1", "/gsEditor/selectCell");
}
backend._IGG_handleDragStart = selectCell;
backend._IGG_getSurrogateView = function(source) {
//_gel("info").innerHTML = this.data[source];
return "";
}
function drawContainer(iTable) {
var html = "<table id='tblMain'>";
html += "<tr><td></td><td><center><table><tr><td align=\"left\"><a href=\"javascript:displayChange("+iTable+",'col',-"+numCols+")\"><img src=\"http://www.lamboratory.com/gadgets/gse_images/left2.gif\"/></a></td><td align=\"middle\"><a href=\"javascript:displayChange("+iTable+",'col',-1)\"><img src=\"http://www.lamboratory.com/gadgets/gse_images/left1.gif\"/></a></td><td align=\"middle\"><a href=\"javascript:displayChange("+iTable+",'col',1)\"><img src=\"http://www.lamboratory.com/gadgets/gse_images/right1.gif\"/></a></td><td align=\"right\"><a href=\"javascript:displayChange("+iTable+",'col',"+numCols+")\"><img src=\"http://www.lamboratory.com/gadgets/gse_images/right2.gif\"/></a></td></tr></table></center></td></tr>";
html += "<tr><td><table><tr><td valign=\"top\"><a href=\"javascript:displayChange("+iTable+",'row',-"+numRows+")\"><img src=\"http://www.lamboratory.com/gadgets/gse_images/up2.gif\"/></a></td></tr><tr><td><a href=\"javascript:displayChange("+iTable+",'row',-1)\"><img src=\"http://www.lamboratory.com/gadgets/gse_images/up1.gif\"/></a></td></tr><tr><td><a href=\"javascript:displayChange("+iTable+",'row',1)\"><img src=\"http://www.lamboratory.com/gadgets/gse_images/down1.gif\"/></a></td></tr><tr><td><a href=\"javascript:displayChange("+iTable+",'row',"+numRows+")\"><img src=\"http://www.lamboratory.com/gadgets/gse_images/down2.gif\"/></a></td></tr></table></td><td id=\"spreadsheet"+iTable+"\"></td></tr>";
html += "</table>";
_gel('data').innerHTML = html;
// Tells gadget to resize itself
_IG_AdjustIFrameHeight();
}
var r = Math.random();
function getContent(iTable, forceRefresh) {
_gel("info").innerHTML = "";
_gel("container").className = "";
if(forceRefresh)
{
r = Math.random();
}
spreadsheetFeed = "http://www.lamboratory.com/gadgets/proxy.php?key="+key+"&worksheet="+spreadsheetFeeds[iTable]+"&operation=feed&r="+r;
_IG_FetchXmlContent(spreadsheetFeed, processFeed, {refreshInterval: (60*5)});
}
function processFeed(response) {
if (response == null || typeof(response) != "object" || response.firstChild == null) {
//alert("Error: "+response);
return;
}
var entriesList = response.getElementsByTagName("entry");
var iTable = iSelectedTab;
aCells = new Array(spreadsheetFeeds.length);
aFormulas = new Array(spreadsheetFeeds.length);
for (var i = 0; i < spreadsheetFeeds.length ; i++) {
aCells[i] = new Array();
aFormulas[i] = new Array();
}
for (var i = 0; i < entriesList.length ; i++) {
var entryList = entriesList.item(i).childNodes;
var title = "";
var content = "";
for (var j = 0; j < entryList.length ; j++) {
var node = entryList.item(j);
if (node.nodeName == "title") {
var title = node.firstChild.nodeValue;
}
if (node.nodeName == "content") {
var content = node.firstChild.nodeValue ;
}
if (node.nodeName == "gs:cell") {
aFormulas[iTable][title]=node.getAttribute("inputValue");
}
}
if ((title!="")&&(content!="")) {
aCells[iTable][title]=content;
}
}
displayResults(iTable,colIni[iTable],rowIni[iTable],colIni[iTable]+numCols-1,rowIni[iTable]+numRows-1);
// Tells gadget to resize itself
_IG_AdjustIFrameHeight();
_IG_Analytics("UA-2138291-1", "/gsEditor/getContent");
}
function displayResults(iTable,colIni,rowIni,colFin,rowFin) {
backend.data[0] = " ";
var contData = 1;
for (var j = colIni; j <= colFin; j++) {
backend.data[contData] = cols[j];
contData++;
}
for (var i = rowIni; i <= rowFin ; i++) {
backend.data[contData] = i;
contData++;
for (var j = colIni; j <= colFin; j++) {
var cell = cols[j]+i;
if (cell in aCells[iTable]) {
backend.data[contData] = "<div>"+aCells[iTable][cell]+"</div>";
contData++;
}
else {
backend.data[contData] = "<div> </div>";
contData++;
}
}
}
backend._IGG_refreshAll();
//highlight cell
var gridTable = document.getElementById('gridTable');
var rows = gridTable.getElementsByTagName("tr");
var cells = rows[oldSelRow].getElementsByTagName("td");
var selSpan = cells[oldSelCol].getElementsByTagName("span");
var selDiv = selSpan[0].getElementsByTagName("div");
//selDiv[0].className = "selected";
// Tells gadget to resize itself
_IG_AdjustIFrameHeight();
}
function drawGrid(iTable,numCols,numRows) {
var grid = new _IG_Grid(backend, "mygrid", numRows+1, numCols+1);
_gel("spreadsheet"+iTable).appendChild(grid.getTable());
grid.getTable().border = 0;
grid.getTable().cellspacing = 0;
grid.getTable().cellpadding = 0;
grid.getTable().id = "gridTable";
grid.getTable().className = "tblGenFixed";
rows = grid.getTable().getElementsByTagName("tr");
cells = rows[0].getElementsByTagName("td");
for (var j = 0; j < cells.length ; j++) {
cells[j].className = "g s0";
}
for (var i = 1; i < rows.length ; i++) {
cells = rows[i].getElementsByTagName("td");
cells[0].className = "g s0";
for (var j = 1; j < cells.length ; j++) {
cells[j].className = "g";
}
}
grid.initDragging();
// Tells gadget to resize itself
_IG_AdjustIFrameHeight();
}
function displayChange(iTable,dir,size) {
switch(dir){
case "col":
if(colIni[iTable]+size>1){ // pensar en el max tb
colIni[iTable]=colIni[iTable]+size;
}
else{
colIni[iTable]=1;
}
prefs.set("col"+iTable, colIni[iTable]);
break;
case "row":
if(rowIni[iTable]+size>1){
rowIni[iTable]=rowIni[iTable]+size;
}
else{
rowIni[iTable]=1;
}
prefs.set("row"+iTable, rowIni[iTable]);
break;
}
getContent(iTable, false);
displayResults(iTable,colIni[iTable],rowIni[iTable],colIni[iTable]+numCols-1,rowIni[iTable]+numRows-1);
// Tells gadget to resize itself
_IG_AdjustIFrameHeight();
_IG_Analytics("UA-2138291-1", "/gsEditor/displayChange");
}
function generatorCallback(iTable) {
return function(tabId) {
tabsCallback(tabId, iTable);
}
}
function tabsCallback(tabId, iTable) {
iSelectedTab = iTable;
drawContainer(iTable);
drawGrid(iTable,numCols,numRows);
getContent(iTable, false);
}
// Replaces all instances of the given substring.
String.prototype.replaceAll = function(
strTarget, // The substring you want to replace
strSubString // The string you want to replace in.
)
{
var strText = this;
var intIndexOfMatch = strText.indexOf( strTarget );
// Keep looping while an instance of the target string
// still exists in the string.
while (intIndexOfMatch != -1){
// Relace out the current instance.
strText = strText.replace( strTarget, strSubString )
// Get the index of any next matching substring.
intIndexOfMatch = strText.indexOf( strTarget );
}
// Return the updated string with ALL the target strings
// replaced out with the new substring.
return( strText );
}
function getSelRow()
{
return selRowVal;
}
function getSelCol()
{
var iSelCol=0;
for(iSelCol=0; iSelCol<cols.length; iSelCol++)
{
if(cols[iSelCol]==selColVal)
return iSelCol;
}
return -1;
}
function updateCell(value)
{
var encodedValue = escape(value);
encodedValue = encodedValue.replaceAll("+", "%2B");
updateFeed = "http://www.lamboratory.com/gadgets/proxy.php?key="+key+"&worksheet="+spreadsheetFeeds[iSelectedTab]+"&operation=edit&row="+getSelRow()+"&col="+getSelCol()+"&value="+encodedValue+"&r="+Math.random();
_IG_FetchXmlContent(updateFeed, function(response){
getContent(iSelectedTab, true);
});
_IG_Analytics("UA-2138291-1", "/gsEditor/updateCell");
}
</script>
<script type="text/javascript">
var aCells = new Array(spreadsheetFeeds.length);
var aFormulas = new Array(spreadsheetFeeds.length);
drawContainer(spreadsheetFeeds.length);
var tabs = new _IG_Tabs(__MODULE_ID__);
for (var i = 0; i < spreadsheetFeeds.length ; i++) {
aCells[i] = new Array();
aFormulas[i] = new Array();
tabs.addDynamicTab("Tab "+i, generatorCallback(i));
}
// Tells gadget to resize itself
_IG_AdjustIFrameHeight();
_IG_Analytics("UA-2138291-1", "/gsEditor");
</script>
</Content>
</Module>
Комментариев нет:
Отправить комментарий