UNPKG

dashboard

Version:

Create dashboards with gadgets on node.js

313 lines (248 loc) 10.5 kB
<?xml version="1.0" encoding="UTF-8" ?> <Module> <ModulePrefs title="Flickr Astrometry" height="10" scrolling="true"> <Require feature="dynamic-height"/> <Require feature="opensocial-0.8"/> <Require feature="minimessage"/> </ModulePrefs> <Content type="html"><![CDATA[ <!-- jQuery library --> <script type="text/javascript" src="js/jquery-1.4.2.min.js"></script> <!-- jCarousel library --> <script type="text/javascript" src="text/javascript" src="js/jquery.jcarousel.min.js"></script> <!-- jCarousel skin stylesheet --> <link rel="stylesheet" type="text/css" href="http://sky.astro.washington.edu/gadgets/css/skins/ie7/skin.css" /> <style type="text/css"> #mycarousel .jcarousel-item-placeholder { background: transparent url(images/loading-small.gif) 50% 50% no-repeat; } </style> <script src="http://sky.astro.washington.edu/gadgets/js/gDataInterface.js" type="text/javascript"></script> <script src="http://sky.astro.washington.edu/gadgets/js/widgetlib1.js" type="text/javascript"></script> <script src="http://sky.astro.washington.edu/gadgets/js/astroObjectLib.js" type="text/javascript"></script> <link href="http://sky.astro.washington.edu/gadgets/css/style.css" rel="stylesheet" type="text/css" /> <script type="text/javascript"> var tq = null, debug = true; var GADGET_NAME = "FlickrAstrometry" + "_" + Math.floor(Math.random()*100000+1).toString(); // Writes to the console if debug (global) is true function debugLog(msg){ if ((debug === true) && (window.console && console.log)) { console.log(GADGET_NAME + ": " + msg); } return; } // create gadget object function init(){ tq = new NameResolve(); gadgets.window.adjustHeight(); } function NameResolve(){ var my = new Object(); // CONSTANTS var DEFAULT_NAMESPACE = "NS1", MM_TIMER_DURATION = 4; // PRIVATE var _namespaceList = [ DEFAULT_NAMESPACE ]; // list of our current Namespaces. Just init with the default // Private Helper Variables var di = new gDataInterface(GADGET_NAME, DEFAULT_NAMESPACE); // make dataInterface object, init with default var miniMsg = new gadgets.MiniMessage();// make MiniMessage object // INIT var msg = miniMsg.createStaticMessage("Attempting to register gadget..."); di.registerMe( { gadgetName : GADGET_NAME, namespaceList : _namespaceList, variableList : [ "VP_Coord" ], triggerList : [], successCallback : registrationSuccess, failureCallback : registrationFailure } ); // Callback after successful registration function registrationSuccess(){ debugLog('Registration successful'); if (msg) { miniMsg.dismissMessage(msg); // free up msg msg = null; miniMsg.createTimerMessage("Registration Succesful.", MM_TIMER_DURATION); } } // Callback after a failure of registration // displays message showing failure function registrationFailure(){ debugLog('Registration FAILED!'); miniMsg.dismissMessage(msg); miniMsg.createDismissibleMessage("Unable to register gadget.\nWe cannot communicate with other gadgets."); } function mycarousel_itemLoadCallback(carousel, state) { if (carousel.prevFirst != null) { // Remove the last visible items to keep the list small for (var i = carousel.prevFirst; i <= carousel.prevLast; i++) { // jCarousel takes care not to remove visible items carousel.remove(i); } } var per_page = carousel.last - carousel.first + 1; var currPage = 0; var f,l; var cr = carousel; for (var i = carousel.first; i <= carousel.last; i++) { var page = Math.ceil(i / per_page); if (currPage != page) { currPage = page; f = ((page - 1) * per_page) + 1; l = f + per_page - 1; f = f < carousel.first ? carousel.first : f; l = l > carousel.last ? carousel.last : l; if (carousel.has(f, l)) { continue; } mycarousel_makeRequest(carousel, f, l, per_page, page); } } }; function mycarousel_makeRequest(carousel, first, last, per_page, page) { // Lock carousel until request has been made carousel.lock(); $.getJSON("http://api.flickr.com/services/rest/?method=flickr.groups.pools.getPhotos&group_id=387956@N23&extras=url_m,machine_tags&tags=Astrometrydotnet:status=solved&api_key=4ca112a2ac8348fc0c3f85e3ecb6a2e9&page=" + page + "&per_page=" + per_page + "&format=json&jsoncallback=?", function(data) { mycarousel_itemAddCallback(carousel, first, last, data, page); }); } function mycarousel_itemAddCallback(carousel, first, last, data, page) { // Unlock carousel.unlock(); // alert(data.toSource()) // alert($('photos',data).toSource()) // Set size // change this to work!!!!!!!!! carousel.size($('photos', data).attr('total')); //var photos = $('photo', data); //alert($(photos.get(1)).attr('farm')) var per_page = carousel.last - carousel.first + 1; for (var i = first; i <= last; i++) { var pos = i - 1; var idx = Math.round(((pos / per_page) - Math.floor(pos / per_page)) * per_page); // alert('i=' + data.photos.photo[idx].id) carousel.add(i, mycarousel_getItemHTML(data.photos.photo[idx].url_m,data.photos.photo[idx].id)); } }; /** * Global item html creation helper. */ function mycarousel_getItemHTML(photo,id) { // var url = 'http://farm'+$(photo).attr('farm')+'.static.flickr.com/'+$(photo).attr('server')+'/'+$(photo).attr('id')+'_'+$(photo).attr('secret')+'_s.jpg'; var url = photo; var id = id; // alert(url) //return '<a href="http://www.flickr.com/photos/'+$(photo).attr('owner')+'/'+$(photo).attr('id')+'/" target="_blank" title="'+$(photo).attr('title')+'"><img src="' + url + '" border="0" width="75" height="75" alt="'+$(photo).attr('title')+'" /></a>'; return '<a onClick="tq.sendCoord(' + id.toString() + ')"><img src="' + url + '" border="0" width="75" height="75" alt="'+$(photo).attr('title')+'" /></a>'; }; jQuery(document).ready(function() { jQuery('#mycarousel').jcarousel({ itemLoadCallback: mycarousel_itemLoadCallback }); }); /*---------------------------------------------------------- function makeRequestGet(url) { params = {}; params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.GET; // params[gadgets.io.RequestParameters.REFRESH_INTERVAL] = 0; // To turn off Google anti-refresh, add a "random" number so the // url is different every time var ts = new Date().getTime(); var sep = "?"; if (url.indexOf("?") > -1) sep = "&"; url = [ url, sep, "nocache=", ts ].join(""); gadgets.io.makeRequest(url, response, params); } function response(obj) { //alert("from input"+obj.text); // This is a first attempt to parse the response. We should // work on improving this. Not sure if it works exactly, either. :-) //lines = obj.text.split("\n"); if (!(typeof obj.text === "string")){ showError('No results found'); return; } // a string was returned, but does it have relevant data in it? var dataLine = obj.text.match(/^%J.*$/gm); if (dataLine === null) { showError('No results found'); return; } //alert(dataLine); dataLine=dataLine.toString(); dataLine=dataLine.split(" "); radeg = dataLine[1]-0; newdec = dataLine[2]-0; debugLog("Writing Coods..."); var ra = (radeg/15).toString(); //decimal hours var dec = newdec.toString(); //decimal degrees var coord = new UW.astro.CelestialCoordinate(ra, dec); if (di.writeVariable(DEFAULT_NAMESPACE, "VP_Coord", coord)){ debugLog('Wrote variable "VP_Coord"'); } } // Indicate to the user that something went wrong function showError(msg){ alert(msg); } // METHODS // Coordinates are entered, tell the DataInterface my.getCoords=function(){ var text = document.getElementById("input"); text = text.value; text = text.replace(/ /g, "+"); //alert(text); makeRequestGet("http://cdsws.u-strasbg.fr/axis/services/Sesame?method=sesame&name="+text+"&resultType=p/c", 0); } */ //METHODS my.sendCoord=function(id){ $.getJSON("http://api.flickr.com/services/rest/?method=flickr.photos.comments.getList&photo_id=" + id +"&api_key=4ca112a2ac8348fc0c3f85e3ecb6a2e9&format=json&jsoncallback=?", function(data2) { list=data2.comments.comment; for (i in list){ name=list[i].authorname if ((name.toString()).search("astrometry.net")!=-1){ alert(list[i]._content.toString()) alert(list[i]._content.split(/\n/)[1]) var dataLine = list[i]._content.split(/\n/)[1].split(/,/); ra=dataLine[1].match(/[\d\.]+/) dec=dataLine[2].match(/[\d\.]+/) alert(ra) alert(dec) alert(dataLine) debugLog("Writing Coods..."); ra = (ra/15).toString(); //decimal hours dec = dec.toString(); //decimal degrees var coord = new UW.astro.CelestialCoordinate(ra, dec); if (di.writeVariable(DEFAULT_NAMESPACE, "VP_Coord", coord)){ debugLog('Wrote variable "VP_Coord"'); } } } //alert(data2.comments.comment[0].authorname) }) } return my; } gadgets.util.registerOnLoadHandler(init); </script> <div id="wrap"> <div id="mycarousel" class="jcarousel-skin-ie7"> <ul> <!-- The content will be dynamically loaded in here --> </ul> </div> ]]></Content> </Module>