class OpenVerse { //page_count constructor () { //register your key at https://api.openverse.engineering/v1/ and replace client_id, client_secret and name bellow this.key = { "client_secret" : "YhVjvIBc7TuRJSvO2wIi344ez5SEreXLksV7GjalLiKDpxfbiM8qfUb5sNvcwFOhBUVzGNdzmmHvfyt6yU3aGrN6TAbMW8EOkRMOwhyXkN1iDetmzMMcxLVELf00BR2e", "client_id" : "pm8GMaIXIhkjQ4iDfXLOvVUUcIKGYRnMlZYApbda", "name" : "My amazing project", "grant_type" : "client_credentials" }; this.accessToken = { "access_token" : "DLBYIcfnKfolaXKcmMC8RIDCavc2hW", "scope" : "read write groups", "expires_in" : 36000, "token_type" : "Bearer" }; this.filters = { "license" :["BY-ND", "PDM", "BY-NC", "BY-NC-SA", "BY-NC-ND", "BY-SA", "BY", "CC0"], "license_type" :["all", "all-cc", "commercial", "modification"], "categories" :["illustration", "photograph", "digitized_artwork"], "aspect_ratio" :["tall", "wide", "square"], "size" :["small", "medium", "large"], "source" :["woc_tech", "wikimedia", "wellcome_collection", "thorvaldsensmuseum", "thingiverse", "svgsilh", "statensmuseum", "spacex", "smithsonian_zoo_and_conservation", "smithsonian_postal_museum", "smithsonian_portrait_gallery", "smithsonian_national_museum_of_natural_history", "smithsonian_libraries", "smithsonian_institution_archives", "smithsonian_hirshhorn_museum", "smithsonian_gardens", "smithsonian_freer_gallery_of_art", "smithsonian_cooper_hewitt_museum", "smithsonian_anacostia_museum", "smithsonian_american_indian_museum", "smithsonian_american_history_museum", "smithsonian_american_art_museum", "smithsonian_air_and_space_museum", "smithsonian_african_art_museum", "smithsonian_african_american_history_museum", "sketchfab", "sciencemuseum", "rijksmuseum", "rawpixel", "phylopic", "nypl", "nasa", "museumsvictoria", "met", "mccordmuseum", "iha", "geographorguk", "floraon", "flickr", "europeana", "eol", "digitaltmuseum", "deviantart", "clevelandmuseum", "brooklynmuseum", "bio_diversity", "behance", "animaldiversity", "WoRMS", "CAPL", "500px"] }, this.baseUrl = '/attachment/index?type=2&'; this.currentUrl = this.baseUrl; this.filtersParameters = ""; // this.authenticate(); } authenticate() { let url = "https://api.openverse.engineering/v1/auth_tokens/token/"; let self = this; $.ajax({ url: url, type: 'POST', dataType: "json", data:this.key }).done(function(data) { this.accessToken = data; console.log('OpenVerse Authentication:' , data); }); } setFiltersParams(filtersParameters) { this.filtersParameters = filtersParameters; } getResults(callback) { this.currentUrl = this.baseUrl + this.filtersParameters; $.ajax({ url: this.currentUrl, type: 'GET', dataType: "json", headers: createHeader(), }).done(function(data) { callback(data); }); /* jQuery.getJSON(this.currentUrl, function( data ) { callback(data); }); */ } } class OpenVerseDisplay extends OpenVerse { constructor () { super(); } getFiltersHtml() { let html = ""; for (name in this.filters) { let values = this.filters[name]; html += "
"; html += ""; html += ""; html += "
"; } return html; } showLoading() { $("#openverse-results").html(`
Loading...
`); } setFilters() { this.filtersParameters = $("#openverse-form").serialize(); //this.setFiltersParams(filters); } displayResults(data) { var items = []; $.each( data['data'], function( key, val ) { let item = `
  • `; items.push( item ); }); $("#openverse-results").html(items.join( "" )); data['page_count'] = Math.ceil(data['count'] / 20); //pagination const maxpages = 15; let pages = data['page_count']; let visiblePages = 5; let pagenum = openverse.pageNo ? openverse.pageNo : 1; let pageStop = pages; let currentPage = openverse.pageNo ? openverse.pageNo : 1; if (pages > maxpages) { if (pagenum > visiblePages) { if ((pagenum + visiblePages) > pages) { currentPage = pages - maxpages - 1; pageStop = pages; } else { currentPage = pagenum - visiblePages; pageStop = pagenum + visiblePages; } } else { currentPage = 1; pageStop = maxpages; } } let pagination = ''; let active = ''; //next let prev = Math.max(pagenum - 1, 1); pagination += `
  • `; for (let i = currentPage; i <= pageStop; i++) { if (i == pagenum) { active = "active"; } else { active = ""; } pagination += `
  • `; } //next let next = Math.min(pagenum + 1, pages); pagination += `
  • `; pagination += `
    total pages ${data['page_count']}
    `; $("#openverse-pagination").html(pagination); } page(pageNo) { this.pageNo = pageNo; this.filtersParameters = $("#openverse-form").serialize() + "&page=" + pageNo; this.showLoading(); this.getResults(this.displayResults); } search() { this.setFilters(); this.showLoading(); this.getResults(this.displayResults); } toggleBtn() { return ` `; } displayPanel() { return ``; } paginationContainer() { return ``; } topPanel() { return `
    `; } init() { let self = this ; $("#MediaModal .top-panel").append(self.topPanel()); $("#MediaModal .display-panel").append(self.displayPanel()); // $("#MediaModal .top-right .align-right").append(self.toggleBtn()); $("#MediaModal .modal-footer .align-left").append(self.paginationContainer()); $("#openverse-filters").prepend(self.getFiltersHtml()); $("#openverse-search-btn").click(function (e) { self.search();e.preventDefault(); } ); self.search(); //if openverse enabled hide media images $("#openverse-form").on("show.bs.collapse", function (e){ if (e.target.id == "openverse-form") { $("#MediaModal #openverse-results").show(); $("#MediaModal #openverse-pagination").show(); $("#MediaModal #media-files").hide(); } }); $("#openverse-form").on("hide.bs.collapse", function (e){ if (e.target.id == "openverse-form") { // $("#MediaModal #openverse-results").hide(); // $("#MediaModal #openverse-pagination").hide(); $("#MediaModal #media-files").show(); } }); } } let openverse = new OpenVerseDisplay(); $(window).on( "mediaModal:init", function( event, myName ) { // console.log(event, myName, ' event, myName>>>>>>>>>') openverse.init(); }); $(window).on( "mediaModal:upload", function( event, myName ) { // console.log(event, myName, ' event, myName>>>>>>>>>') openverse.search(); });