| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- /*jshint esversion: 6 */
- define([
- 'require',
- 'jqueryui',
- 'base/js/namespace',
- 'base/js/events',
- ], function(
- Jupyter,
- requirejs,
- $,
- IPython,
- events
- ) {
- var mod_name = "mickaSearch";
- var log_prefix = `[${mod_name}] `;
- // default configuration parameters
- var cfg = {
- 'micka_url': 'https://hub.lesprojekt.cz/micka/',
- 'proxy_url': 'https://cors-anywhere.herokuapp.com/'
- };
- // read user configuration from Jupyter
- var read_config = function () {
- var config = IPython.notebook.config;
- for (var key in cfg) {
- if (config.data.mickaSearch.hasOwnProperty(key))
- cfg[key] = config.data.mickaSearch[key];
- }
- };
- // get metadata
- var fetch_metatada = function (search_params) {
- return fetch(`${cfg.proxy_url}${cfg.micka_url}csw/${search_params}`);
- };
- // do search
- var search_micka = function () {
- var query = document.getElementById('mquery').value;
- query = query.length > 0 ? `FullText%3D'${query}'` : '';
- var mdata = fetch_metatada(`?request=GetRecords&query=${query}&format=application/json&MaxRecords=9999&StartPosition=&sortby=title%3AA&language=eng&outputSchema=http://www.w3.org/2005/Atom&typenames=gmd:MD_Metadata`);
- mdata.then(response => response.json())
- .then(arrayOfMetadata => {
- create_view(arrayOfMetadata.records);
-
- })
- .catch(error => {
- console.log(error);
- });
- };
- // prepare and render html structure
- var create_view = function(data) {
- var output = '';
- console.log(data);
- data.forEach(function(entry) {
- output += `<details><summary>${entry.title}</summary>`;
- output += '<p>Type: ';
- output += entry.type=='application' ? `${entry.type} - Service: ${entry.serviceType}` : `${entry.type}`;
- output += `<br><a href="${cfg.micka_url}record/basic/${entry.id}" target="_blank" title="Full MD Record">MD Record</a>`;
- output += entry.abstract.length > 0 ? `<br>Abstract: ${entry.abstract}` : '';
- output += entry.bbox.length > 0 ? `<br>Boundig box: ${entry.bbox}` : '';
- output += entry.imgURL ? `<details><summary>Thumbnail</summary><a href="${entry.imgURL}" target="_blank" title="Full size image"><img src="${entry.imgURL}" width="200"></a></details>` : '';
- var links = '';
- entry.links.forEach(function(link) {
- links += `<li>${link.url}</li>`;
- });
- output += links.length > 0 ? `<details><summary>Links</summary><ul>${links}</ul></details>` : '';
- output += '</p>';
- output += '</details>';
- });
- document.getElementById('msres').innerHTML = output;
- };
- var initialize = function () {
- read_config();
- // show/hide panel
- var handler = function () {
- mdata = fetch_metatada('?request=GetRecords&query=&format=application/json&MaxRecords=9999&StartPosition=&sortby=title%3AA&language=eng&outputSchema=http://www.w3.org/2005/Atom&typenames=gmd:MD_Metadata');
- mdata.then(response => response.json())
- .then(arrayOfMetadata => {
- console.log(arrayOfMetadata);
- alert(arrayOfMetadata.records[0].id);
- })
- .catch(error => {
- console.log(error);
- });
- };
- var action = {
- icon: 'fa-search',
- help : 'Show Micka Search panel',
- help_index : 'zz',
- label: 'Micka',
- handler : handler
- };
- var prefix = 'micka_search';
- var action_name = 'micka-search';
- var full_action_name = Jupyter.actions.register(action, action_name, prefix);
- Jupyter.toolbar.add_buttons_group([full_action_name]);
- console.log(log_prefix + 'button added');
- };
- var load_ipython_extension = function() {
- return IPython.notebook.config.loaded.then(initialize);
- };
- return {
- load_ipython_extension: load_ipython_extension
- };
- });
|