Google Gadgets 小例子

本文通过一个具体的示例介绍了如何使用Google Gadget来创建一个股票查看小工具。该小工具可以展示不同股票的实时信息,并允许用户添加新的股票进行跟踪。

在学习 Google Gadget, 敲了书上的一个小例子, 放在这里吧:

<?xml version="1.0" encoding="UTF-8"?>
<Module>
	
	<ModulePrefs title="Mini Stock" height="140" scrolling="true"
		description="Mini Storck, Gadget A, B, C"
		author="xxxx" author_email="xxxx@gmail.com"
		author_location="beijing, China">
		<Require feature="dynamic-height"/>
		<Require feature="setprefs"/>
		<Require feature="tabs"/>
	</ModulePrefs>
	
	<UserPref name="idList" display_name="Stock ID list" datatype="list" required="true" default_value="600030|600036" />
	<UserPref name="selectedTab" datatype="hidden"/>
	
	<Content type="html" view="home,canvas">
		<![CDATA[		   
		    
			<style type="text/css">
			<!--
			body, html{
			margin: 0;
			padding: 0;
			background-color: #ffffff;
			font-size: 12px;
			font-family: Verdana,Arial,sans-serif;
			}
			//-->
			</style>
		 
		    <script type="text/javascript" >
			    var prefs = new gadgets.Prefs();
			    var ids = prefs.getArray("idList");
			    var tabs = null; 
			    
			    function viewStockInTab(stockId) {
				    var tabId = tabs.addTab(""+stockId);
				    var tabStock = document.getElementById(tabId);
				    //tabStock.style.display = "block";
				    tabStock.innerHTML = "<img width=\"500\" height=\"342\" src=\"http://www.google.com/finance/getchart?q="+stockId+"\">";
				
				    var tabArray = tabs.getTabs();
				    var tab = tabArray[tabArray.length-1];
				    tabs.setSelectedTab(tab.getIndex());
				
				    gadgets.window.adjustHeight(); 
				}
				
				function jsOver(obj) {
				    obj.style.backgroundColor="yellow";
				    obj.style.cursor="pointer"; 
				}
				
				function jsOut(obj) {
				    obj.style.backgroundColor="white";
				    obj.style.cursor="default"; 
				}
				
				function updateAllStock(responseJson) {
				    //check
				    var ds = null;
				    //alert(responseJson.data);
				    try{
				        ds = eval(responseJson.data.substring(3));
				    }catch(e){
				    }
				    //alert(ds);
				    if(ds == null || ds == false){
				        return;
				    }
				
				    //set data
				    var htmlData = "<table>";
				
				    for(d in ds){
				        htmlData += "<tr onMouseOver=\"jsOver(this);\" onMouseout=\"jsOut(this);\" onclick=\"viewStockInTab("+ds[d].t+");return false;\"><td>"+ds[d].lname+"</td>";
				        htmlData += "<td>"+ds[d].l+"</td>";
				        htmlData += "<td>"+ds[d].c+"</td>";
				        htmlData += "<td>"+ds[d].cp+"%</td></tr>";      
				    }
				
				    htmlData += "</table>";
				    //alert(htmlData);
				    var element = document.getElementById('div_main');
				    element.innerHTML = htmlData;         
				
				    tabs.setSelectedTab(0);
				    gadgets.window.adjustHeight();          
				}
				
				
				function showStocks() {
				    var url = "http://www.google.cn/finance/info?q=";
				    for(k in ids){
				        if(k>0){
				            url += ",";         
				        }
				        url += ids[k];
				    }
				    url += "&infotype=infoquoteall";
				    //alert(url);
				    gadgets.io.makeRequest(url,updateAllStock); 
				}
			
			    function init(){
			        tabs = new gadgets.TabSet(__MODULE_ID__, "Main");// create tab
			        tabs.addTab("main", "div_main");
			        
			        var element = document.getElementById('div_main');
			        element.style.display = "block";
			        //element.innerHTML = "idList:" + ids;
			        showStocks(); 
			        
			        // Tells gadget to resize itself
                    //gadgets.window.adjustHeight();
			    }	
			    
			    function addAStock(){
			        var stockId = document.getElementById('stockId').value;
			        if(!stockId || stockId.length != 6){
			            alert("Please input a stock ID");
			            return;
			        }  
			        
			        ids.push(stockId);
                    prefs.setArray("idList",ids);
                    
                    showStocks();
                    
                    //var element = document.getElementById('div_main');
                    //element.innerHTML = "idList:" + ids;         
                    
                    //gadgets.window.adjustHeight();            
			    }
			    
		        gadgets.util.registerOnLoadHandler(init); 
		        
			</script>
			
			<div id="div_main"></div> 
			
			<div id="div_add">
			    <form action="javascript:void(0);" method="GET">
			        <input type="text" id="stockId" name="stockId"/>
			        <input type="submit" value="Add a stock" onclick="addAStock(); return false;" />
			    </form>
			</div>
		]]>
	</Content>
</Module>

效果如图:



内容概要:本文系统阐述了Python在数据分析与可视化领域的技术实践,涵盖数据分析基础、数据探索方法、可视化技术原理、高级可视化应用及实战案例五大方面。文章首先介绍NumPy和Pandas在数据处理与描述性统计中的核心作用,继而讲解相关性分析、分布分析和分组对比等探索性分析方法。随后深入剖析Matplotlib、Seaborn和Plotly三大可视化库的技术特点与应用场景,涵盖静态图表、统计图形到交互式可视化。最后通过交通数据的实战案例,演示从数据预处理、探索分析到多维度可视化呈现的完整流程。; 适合人群:具备Python基础、对数据处理与可视化感兴趣的初中级开发者,以及从事数据分析、运营分析、数据科学研究等相关工作的人员;尤其适合工作1-3年、希望提升数据实战能力的研发人员。; 使用场景及目标:①掌握Pandas进行数据清洗、分组聚合与描述性统计的方法;②熟练运用Matplotlib、Seaborn和Plotly实现多样化数据可视化;③通过真实案例理解探索性数据分析流程并构建交互式仪表盘;④应用于业务报表开发、数据洞察挖掘和决策支持系统建设。; 阅读建议:建议结合代码实践同步学习,重点理解不同可视化工具的适用边界,并在实战中尝试迁移应用文中案例逻辑,强化对数据分布识别、多维分析和交互设计的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值