SlideShare uma empresa Scribd logo
1 de 35
Developer Network INTRODUCTION
Developer Network Elsevier and SciVerse Elsevier publishes 25% of the world’s Scientific, Technical and Medical (STM) content:  ,[object Object]
more than 40 million abstracts and author, affiliation information in Scopus.
all content from Elsevier and scientific world wide web in Hub. SciVerse embeds applications within scientific content, giving developers and apps access via framework and content APIs.  SciVerse is an extension of Apache Shindig, an implementation of OpenSocial. Sciverse apps can access content via open APIs.
Developer Network 2011 The WAR of the INTERNETS
Developer Network Social Apps Web Both Facebook and Google are the same type of social network with applications. Facebook owns the social network, Google owns search.   Elsevier’s SciVerse is social apps for scientific search.  OpenSocial SciVerse uses OpenSocial standards. OpenSocial is a specification for creating an app-based social network. This spec is originally based on iGoogle by Google. SciVerse extends Apache Shindig, making apps contextual. The OpenSocial standard is worldwide used by sites with around 900 million users (Facebook has 500 million users): ,[object Object]
MySpace
Orkut
Friendster
ZDNet
RenRen
LinkedIn
Ning
SalesForce
Hyves
Imeem
Yahoo
Net
SciVerse,[object Object]
Developer Network 2011 – Social Apps based Business
Developer Network
Developer Network STM Publishing Elsevier publishes 25% of the world’s Science, Technology and Medical (STM) Publications ScienceDirect: 10 million full text articles in 2,500 journals  Scopus: 42 million abstracts, citations, authors and affiliations  Hub: plus web content covering 18,000 titles from over 5,000 publishers And META-DATA
Developer Network A list of search results with facets in SciVerse Hub
Developer Network Elsevier | Developer Network With SciVerse APPS (search result analysis app)
Developer Network an abstract for a scientific article with tables and references
Developer Network Elsevier | Developer Network With SciVerse APPS (genome viewer and protein network viewer)
Developer Network Full text article in ScienceDirect with popup APP (related content by nextbio)
Developer Network PART 1 – TECHNOLOGY PLATFORM
Developer Network OpenSocial Architecture IFRAME http request HTTP SERVER Shindig Server Gadget Renderer Servlet Data Service Servlet Apache Shindig is an implementation of the OpenSocial specification. Gadget  Server Data Handler Container People Activities Gadget  App Data DB1 DB2 Javascript Libraries Gadget.xml
Developer Network SciVerse Architecture SciVerse extends Apache Shindig. SciVerse gadgets can access the context of the page in which they appear via so called Framework APIs.
Developer Network SciVerse – Integration Points Apps appear as iframes in so-called views or integration points in the webpage. 17
Developer Network What is a Gadget? The IFRAME Revolution OpenSocial Gadgets A gadget is a client-side application in the form of an HTML iFrame that appears in the context of a webpage and uses client-side scripting languages like JavaScript. IFRAME <iframesrc="iframe1.html" width=“400" height=“200"> Hello World! </iframe> GADGET.XML (example 1) <?xml version="1.0" encoding="UTF-8"?> <Module>   <ModulePrefs title=“HellowWorld1" author_email=“me@mine.com">     <Require feature="opensocial-0.9" />   </ModulePrefs>   <Content type="html" view="profile"><![CDATA[      <script type=‘text/javascript’>  function fnWrite() { getElementById(‘content-div’).innerHTML = “Hello World”; }     </script>     <div id=‘content-div’></div>   ]]></Content> </Module>
Developer Network Example 1  – OpenSocial Definition File or gadget.xml <?xml version="1.0" encoding="UTF-8"?> <Module>   <ModulePrefs title="SciVerseExamples-ContentAPICall1" author_email="CaprioR@your.domain">     <Require feature="opensocial-0.9" />     <Require feature="sciverse" />     <Require feature="hub" />     <Require feature="org.jquery.core-1.4.2" />   </ModulePrefs>   <Content type="html" view="canvas"><![CDATA[ <!-- The code for Canvas view is here. --> ]]></Content>  <Content type="html" view="profile"><![CDATA[ Profile View ]]></Content>   <Content type="html" view="sciverseResultsView"><![CDATA[ <!-- The code for SciverseResultsViewview is here. --> <div>Sciverse Results View view for SciVerseExamples-ContentAPICall1.</div>   ]]></Content> </Module>
Developer Network Object Oriented JavaScript JavaScript originally mainly added dynamic features to an otherwise static HTML page, creating DHTML. But with the advent of DOM, AJAX and gadget programming, JavaScript is now more than a simple client side scripting language, and has become a sophisticated application programming language.  Therefore, follow Object Oriented design principles and create ‘un-obtrusive’ code: ,[object Object]
 Where possible create Object Oriented code that you can re-use

Mais conteúdo relacionado

Mais procurados

SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
Fred Sauer
 
Hybrid Apps (Native + Web) via QtWebKit
Hybrid Apps (Native + Web) via QtWebKitHybrid Apps (Native + Web) via QtWebKit
Hybrid Apps (Native + Web) via QtWebKit
Ariya Hidayat
 
In graph we trust: Microservices, GraphQL and security challenges
In graph we trust: Microservices, GraphQL and security challengesIn graph we trust: Microservices, GraphQL and security challenges
In graph we trust: Microservices, GraphQL and security challenges
Mohammed A. Imran
 

Mais procurados (19)

Spring Boot APIs and Angular Apps: Get Hip with JHipster! KCDC 2019
Spring Boot APIs and Angular Apps: Get Hip with JHipster! KCDC 2019Spring Boot APIs and Angular Apps: Get Hip with JHipster! KCDC 2019
Spring Boot APIs and Angular Apps: Get Hip with JHipster! KCDC 2019
 
Front End Development for Back End Java Developers - Jfokus 2020
Front End Development for Back End Java Developers - Jfokus 2020Front End Development for Back End Java Developers - Jfokus 2020
Front End Development for Back End Java Developers - Jfokus 2020
 
The Best Way to Become an Android Developer Expert with Android Jetpack
The Best Way to Become an Android Developer Expert  with Android JetpackThe Best Way to Become an Android Developer Expert  with Android Jetpack
The Best Way to Become an Android Developer Expert with Android Jetpack
 
Bootiful Development with Spring Boot and React - SpringOne 2017
Bootiful Development with Spring Boot and React - SpringOne 2017Bootiful Development with Spring Boot and React - SpringOne 2017
Bootiful Development with Spring Boot and React - SpringOne 2017
 
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
 
Case Study: Migrating Hyperic from EJB to Spring from JBoss to Apache Tomcat
Case Study: Migrating Hyperic from EJB to Spring from JBoss to Apache TomcatCase Study: Migrating Hyperic from EJB to Spring from JBoss to Apache Tomcat
Case Study: Migrating Hyperic from EJB to Spring from JBoss to Apache Tomcat
 
Front End Development for Backend Developers - GIDS 2019
Front End Development for Backend Developers - GIDS 2019Front End Development for Backend Developers - GIDS 2019
Front End Development for Backend Developers - GIDS 2019
 
Choose Your Own Adventure with JHipster & Kubernetes - Utah JUG 2020
Choose Your Own Adventure with JHipster & Kubernetes - Utah JUG 2020Choose Your Own Adventure with JHipster & Kubernetes - Utah JUG 2020
Choose Your Own Adventure with JHipster & Kubernetes - Utah JUG 2020
 
A realtime infrastructure for Android apps: Firebase may be what you need..an...
A realtime infrastructure for Android apps: Firebase may be what you need..an...A realtime infrastructure for Android apps: Firebase may be what you need..an...
A realtime infrastructure for Android apps: Firebase may be what you need..an...
 
Twitter APIs for #MediaHackday
Twitter APIs for #MediaHackdayTwitter APIs for #MediaHackday
Twitter APIs for #MediaHackday
 
Seven Simple Reasons to Use AppFuse
Seven Simple Reasons to Use AppFuseSeven Simple Reasons to Use AppFuse
Seven Simple Reasons to Use AppFuse
 
Bootiful Development with Spring Boot and React - Richmond JUG 2018
Bootiful Development with Spring Boot and React - Richmond JUG 2018Bootiful Development with Spring Boot and React - Richmond JUG 2018
Bootiful Development with Spring Boot and React - Richmond JUG 2018
 
Reactive Java Microservices with Spring Boot and JHipster - Denver JUG 2021
Reactive Java Microservices with Spring Boot and JHipster - Denver JUG 2021Reactive Java Microservices with Spring Boot and JHipster - Denver JUG 2021
Reactive Java Microservices with Spring Boot and JHipster - Denver JUG 2021
 
Android Lab
Android LabAndroid Lab
Android Lab
 
Java Web Application Security - UberConf 2011
Java Web Application Security - UberConf 2011Java Web Application Security - UberConf 2011
Java Web Application Security - UberConf 2011
 
Google AJAX APIs
Google  AJAX APIsGoogle  AJAX APIs
Google AJAX APIs
 
Hybrid Apps (Native + Web) via QtWebKit
Hybrid Apps (Native + Web) via QtWebKitHybrid Apps (Native + Web) via QtWebKit
Hybrid Apps (Native + Web) via QtWebKit
 
A Gentle Introduction to Angular Schematics - Angular SF 2019
A Gentle Introduction to Angular Schematics - Angular SF 2019A Gentle Introduction to Angular Schematics - Angular SF 2019
A Gentle Introduction to Angular Schematics - Angular SF 2019
 
In graph we trust: Microservices, GraphQL and security challenges
In graph we trust: Microservices, GraphQL and security challengesIn graph we trust: Microservices, GraphQL and security challenges
In graph we trust: Microservices, GraphQL and security challenges
 

Semelhante a SgCodeJam24 Workshop

Open social for science a sciverse primer - mysimplesearch
Open social for science   a sciverse primer - mysimplesearchOpen social for science   a sciverse primer - mysimplesearch
Open social for science a sciverse primer - mysimplesearch
remko caprio
 
SciVerse Application Integration Points
SciVerse Application Integration PointsSciVerse Application Integration Points
SciVerse Application Integration Points
Elsevier Developers
 
Jaoo - Open Social A Standard For The Social Web
Jaoo - Open Social A Standard For The Social WebJaoo - Open Social A Standard For The Social Web
Jaoo - Open Social A Standard For The Social Web
Patrick Chanezon
 
OpenSocial Intro
OpenSocial IntroOpenSocial Intro
OpenSocial Intro
Pamela Fox
 

Semelhante a SgCodeJam24 Workshop (20)

SgCodeJam24 Workshop Extract
SgCodeJam24 Workshop ExtractSgCodeJam24 Workshop Extract
SgCodeJam24 Workshop Extract
 
Apps for Science - Elsevier Developer Network Workshop 201102
Apps for Science - Elsevier Developer Network Workshop 201102Apps for Science - Elsevier Developer Network Workshop 201102
Apps for Science - Elsevier Developer Network Workshop 201102
 
Open social for science a sciverse primer - mysimplesearch
Open social for science   a sciverse primer - mysimplesearchOpen social for science   a sciverse primer - mysimplesearch
Open social for science a sciverse primer - mysimplesearch
 
Let's build Developer Portal with Backstage
Let's build Developer Portal with BackstageLet's build Developer Portal with Backstage
Let's build Developer Portal with Backstage
 
Open stack ocata summit enabling aws lambda-like functionality with openstac...
Open stack ocata summit  enabling aws lambda-like functionality with openstac...Open stack ocata summit  enabling aws lambda-like functionality with openstac...
Open stack ocata summit enabling aws lambda-like functionality with openstac...
 
SharePoint Saturday Atlanta 2015
SharePoint Saturday Atlanta 2015SharePoint Saturday Atlanta 2015
SharePoint Saturday Atlanta 2015
 
Xitrum Web Framework Live Coding Demos / Xitrum Web Framework ライブコーディング
Xitrum Web Framework Live Coding Demos / Xitrum Web Framework ライブコーディングXitrum Web Framework Live Coding Demos / Xitrum Web Framework ライブコーディング
Xitrum Web Framework Live Coding Demos / Xitrum Web Framework ライブコーディング
 
Xitrum @ Scala Matsuri Tokyo 2014
Xitrum @ Scala Matsuri Tokyo 2014Xitrum @ Scala Matsuri Tokyo 2014
Xitrum @ Scala Matsuri Tokyo 2014
 
Cross-Platform Native Mobile Development with Eclipse
Cross-Platform Native Mobile Development with EclipseCross-Platform Native Mobile Development with Eclipse
Cross-Platform Native Mobile Development with Eclipse
 
Android Workshop
Android WorkshopAndroid Workshop
Android Workshop
 
SciVerse Application Integration Points
SciVerse Application Integration PointsSciVerse Application Integration Points
SciVerse Application Integration Points
 
OGCE Project Overview
OGCE Project OverviewOGCE Project Overview
OGCE Project Overview
 
Codeigniter
CodeigniterCodeigniter
Codeigniter
 
Jaoo - Open Social A Standard For The Social Web
Jaoo - Open Social A Standard For The Social WebJaoo - Open Social A Standard For The Social Web
Jaoo - Open Social A Standard For The Social Web
 
Advanced JavaScript
Advanced JavaScriptAdvanced JavaScript
Advanced JavaScript
 
OpenSocial Intro
OpenSocial IntroOpenSocial Intro
OpenSocial Intro
 
Get Hip with JHipster - GIDS 2019
Get Hip with JHipster - GIDS 2019Get Hip with JHipster - GIDS 2019
Get Hip with JHipster - GIDS 2019
 
Android MVVM architecture using Kotlin, Dagger2, LiveData, MediatorLiveData
Android MVVM architecture using Kotlin, Dagger2, LiveData, MediatorLiveDataAndroid MVVM architecture using Kotlin, Dagger2, LiveData, MediatorLiveData
Android MVVM architecture using Kotlin, Dagger2, LiveData, MediatorLiveData
 
Prototyping applications with heroku and elasticsearch
 Prototyping applications with heroku and elasticsearch Prototyping applications with heroku and elasticsearch
Prototyping applications with heroku and elasticsearch
 
Front End Development for Back End Developers - UberConf 2017
Front End Development for Back End Developers - UberConf 2017Front End Development for Back End Developers - UberConf 2017
Front End Development for Back End Developers - UberConf 2017
 

Último

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Último (20)

Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 

SgCodeJam24 Workshop

  • 2.
  • 3. more than 40 million abstracts and author, affiliation information in Scopus.
  • 4. all content from Elsevier and scientific world wide web in Hub. SciVerse embeds applications within scientific content, giving developers and apps access via framework and content APIs. SciVerse is an extension of Apache Shindig, an implementation of OpenSocial. Sciverse apps can access content via open APIs.
  • 5. Developer Network 2011 The WAR of the INTERNETS
  • 6.
  • 10. ZDNet
  • 13. Ning
  • 15. Hyves
  • 16. Imeem
  • 17. Yahoo
  • 18. Net
  • 19.
  • 20. Developer Network 2011 – Social Apps based Business
  • 22. Developer Network STM Publishing Elsevier publishes 25% of the world’s Science, Technology and Medical (STM) Publications ScienceDirect: 10 million full text articles in 2,500 journals Scopus: 42 million abstracts, citations, authors and affiliations Hub: plus web content covering 18,000 titles from over 5,000 publishers And META-DATA
  • 23. Developer Network A list of search results with facets in SciVerse Hub
  • 24. Developer Network Elsevier | Developer Network With SciVerse APPS (search result analysis app)
  • 25. Developer Network an abstract for a scientific article with tables and references
  • 26. Developer Network Elsevier | Developer Network With SciVerse APPS (genome viewer and protein network viewer)
  • 27. Developer Network Full text article in ScienceDirect with popup APP (related content by nextbio)
  • 28. Developer Network PART 1 – TECHNOLOGY PLATFORM
  • 29. Developer Network OpenSocial Architecture IFRAME http request HTTP SERVER Shindig Server Gadget Renderer Servlet Data Service Servlet Apache Shindig is an implementation of the OpenSocial specification. Gadget Server Data Handler Container People Activities Gadget App Data DB1 DB2 Javascript Libraries Gadget.xml
  • 30. Developer Network SciVerse Architecture SciVerse extends Apache Shindig. SciVerse gadgets can access the context of the page in which they appear via so called Framework APIs.
  • 31. Developer Network SciVerse – Integration Points Apps appear as iframes in so-called views or integration points in the webpage. 17
  • 32. Developer Network What is a Gadget? The IFRAME Revolution OpenSocial Gadgets A gadget is a client-side application in the form of an HTML iFrame that appears in the context of a webpage and uses client-side scripting languages like JavaScript. IFRAME <iframesrc="iframe1.html" width=“400" height=“200"> Hello World! </iframe> GADGET.XML (example 1) <?xml version="1.0" encoding="UTF-8"?> <Module> <ModulePrefs title=“HellowWorld1" author_email=“me@mine.com"> <Require feature="opensocial-0.9" /> </ModulePrefs> <Content type="html" view="profile"><![CDATA[ <script type=‘text/javascript’> function fnWrite() { getElementById(‘content-div’).innerHTML = “Hello World”; } </script> <div id=‘content-div’></div> ]]></Content> </Module>
  • 33. Developer Network Example 1 – OpenSocial Definition File or gadget.xml <?xml version="1.0" encoding="UTF-8"?> <Module> <ModulePrefs title="SciVerseExamples-ContentAPICall1" author_email="CaprioR@your.domain"> <Require feature="opensocial-0.9" /> <Require feature="sciverse" /> <Require feature="hub" /> <Require feature="org.jquery.core-1.4.2" /> </ModulePrefs> <Content type="html" view="canvas"><![CDATA[ <!-- The code for Canvas view is here. --> ]]></Content> <Content type="html" view="profile"><![CDATA[ Profile View ]]></Content> <Content type="html" view="sciverseResultsView"><![CDATA[ <!-- The code for SciverseResultsViewview is here. --> <div>Sciverse Results View view for SciVerseExamples-ContentAPICall1.</div> ]]></Content> </Module>
  • 34.
  • 35. Where possible create Object Oriented code that you can re-use
  • 36. Create packages to separate namespaces to avoid naming conflicts
  • 37. Create re-usable libraries for common code In addition test, debug and compress your code to improve performance and increase stability.
  • 38. Developer Network Example 2 – Object Oriented JavaScript // create a class for SciVerseSearch function SciverseSearch() { … } // create a static class variable SciverseSearch.View = { STANDARD: 'STANDARD', COMPLETE: 'COMPLETE' } // create a method instance for a query method SciverseSearch.prototype.execute = function(query) { … } // create a setter for the view variable SciverseSearch.prototype.setView = function(view) { this.view = view; } // Now instantiate the class and call its method varsciverse = new SciverseSearch(); sciverse.setView(SciverseSearch.View.COMPLETE); sciverse.execute(query);
  • 39. Developer Network Debugging JavaScript Opera DragonflyOpera Browser has Dragonfly built-in.Firefox FirebugFor FireFox you can install the Firebug add-on. Safari Web Inspector On a Mac, there is Web Inspector for Safari. Chrome Developer ToolsGoogle Chrome comes with Developer Tools. The Developer Blog has an article with a Complete overview of debuggers for the main 4 browsers at http://developer.sciverse.com/blog Blog Post: Complete Overview: Debugging JavaScript and SciVerse Apps in FireFox, Opera, Safari, Chrome, IE
  • 40. Developer Network PART 2 – GADGET PROGRAMMING
  • 41. Developer Network SciVerse APIs There are two main APIs for SciVerse: Framework API – with access to context and methods on the page Content API – for search and retrieval of articles, authors and affiliations
  • 42. Developer Network SciVerse – Framework API The Framework API allows the app to access context and methods of the page. http://developer.sciverse.com/frameworkapi
  • 44. Developer Network SciVerse – Framework API - ContextInfo Most of the information visible on the page, is accessible by the gadget via the Framework API. The ContextInfo object returns among other the following information: accountId, artNum, au1, au1First, au1Init, au1Suffix, au1Sur, auCorp, authorKeywords, date, docTitle, doi, entitlement, genre, indexTerms, individualUser, isbn, issn, issue, keywords, offset, originPage, otherKeywords, pageContentDivTagName, pages, pageType, part, partTitle, partValue, pii, platform, scDocId, scopusFlag, searchQuery, searchTerms, secureAuthtoken, sortOrder, sPage, srcTitle, ssn, timestamp, volume, year // retrieving the authtokenvia the GetContextInfo method’s callback function getContextInfoCallback(result){ // get authtoken for content API call varauthtoken = result.secureAuthtoken; varsearchterm = result.searchTerms; } // retrieving the authToken via the gadget preferences <script type="text/javascript"> varprefs = new gadgets.Prefs(); varauthtoken= prefs.getString("secureAuthtoken");                                </script>
  • 45. Developer Network Example - How to retrieve the authToken for the Content API call? function init(){ gadgets.sciverse.getContextInfo(getContextInfoCallback); // this parameter is the callback method } function getContextInfoCallback(result){ // get authtoken for content API call varauthtoken = result.secureAuthtoken; varsearchterm = result.searchTerms; } // after pageload finishes, this executes the init method, which will trigger following functions gadgets.util.registerOnLoadHandler(init); OR <UserPref name="contentApiKey" datatype="hidden" default_value="your-api-key-here" /> <UserPref name="secureAuthtoken" datatype="hidden" /> … <script type="text/javascript"> varprefs = new gadgets.Prefs(); varauthToken = prefs.getString("secureAuthtoken"); </script> Also, see the example code at https://github.com/sciversedev/examples/
  • 46. Developer Network SciVerse Content API The Content API provides access to ScienceDirect and Scopus data. This is the backbone of the Elsevier content. The Content API can be accessed via building the query URL as follows:
  • 47. Developer Network Example - Content API - search Hub Search http://api.elsevier.com/content/search/index:HUB?query=heart+attack Searches for documents in Hub that mention the term ‘heart attack’ ScienceDirect Search http://api.elsevier.com/content/search/index:SCIDIR?query=TITLE(decay)&date=2007 Searches for documents in ScienceDirect that have ‘decay’ in the title and that were published in 2007 Scopus search http://api.elsevier.com/content/search/index:SCOPUS?query=AUTHLASTNAME(mckinley)%20AND%20SUBJAREA(CHEM) Searches for documents in Scopus in the area of chemistry written by people with last name “McKinley” Author search http://api.elsevier.com/content/search/index:AUTHOR?query=af-id(60032114)%20AND%20authlast(smith) Searches for authors that are affiliated with the institute that has affiliationID ‘60032114’ and whose last name is ‘smith’ Affiliation search http://api.elsevier.com/content/search/index:AFFILIATION?query=affil(rotterdam) Searches for affiliation profiles (i.e. institutes) with Rotterdam in their name or description
  • 48. Developer Network Example - Content API - retrieval Full-text retrieval (ScienceDirect) http://api.elsevier.com/content/article/DOI:10.1016/0092-8674(93)90500-P?view=FULL Retrieves the full-text version of the ScienceDirect document with DOI ‘10.1016/0092-8674(93)90500-P’ Abstract retrieval (Scopus) http://api.elsevier.com/content/abstract/SCOPUS_ID:0027359827 Retrieves the Scopus document with Scopus ID ‘0027359827’ Author retrieval http://api.elsevier.com/content/author/AUTHOR_ID:44372231200?view=STANDARD Retrieves a ‘standard’ view of the author profile with Scopus author ID ‘44372231200’ Affiliation retrieval http://api.elsevier.com/content/affiliation/AFFILIATION_ID:60016849?view=COMPLETE Retrieves a ‘complete’ view of the profile of the institute that has Scopus affiliationID ‘60016849’ Serial title information http://api.elsevier.com/content/serial/title?ISSN=07400551 Searches for/retrieves information about the journal of which the ISSN is ‘07400551’
  • 49. Developer Network VIEWS and FIELDS A request to retrieve information can specify the fields that you want to retrieve. You can use a view with predefined fields or you can specify which particular fields you seek to return. Which views and which fields are available depends on the content-category: article (full text), abstract, author, or affiliation. http://developer.sciverse.com/sciversecontentapiretrievalviews
  • 50. Developer Network VIEWS and FIELDS The {content-category} identifies the type of content. This is divided into: article–Serial and non-serial full text documents from journals and books published by Elsevier abstract– Abstracts from Scopus author– Author profiles generated from Scopus data. affiliation – Affiliation profiles generated from Scopus data. The {identifier_label} distinguishes the type of identifier : DOI - for full-text documents, SCOPUS_ID, AUTHOD_ID - Elsevier identifier tied to an individual author, AFFIL_ID -Elsevier identifier tied to an institution (for use as an affiliation) Other available unique identifiers available for use: PII - Publisher Item Identifier , PUBMED_ID
  • 52. Developer Network SciVerse – Mashup <script type=‘text/javascript’> varmyapikey = ‘aaaass223ssss’; function fnCreateMashup(){ gadgets.sciverse.getContextInfo(fnContextInfoCallback); } funtionfnContentInfoCallback(response){ var search = response.searchQuery; varurl = ‘http://api.nytimes.com/svc/search/v1/article?query=‘+search+’&api-key=‘+myapikey+ ‘format=json’; varparams = { ‘href’ : url, ‘format’ : ‘json’, ‘authz’ : ‘none’ }; osapi.http.get(params1).execute(fnNyTimesCallback); } function fnNyTimesCallback(nytimesResponse) { var output = ‘’; // using jquery $.each(nytimesResponse.content.results, function(I, result){ output = output + result.data + ‘ – ‘ + result.title; } } gadgets.util.registerOnLoadHandler(fnCreateMashup); </script>