HBN Collective On Corona

For donations in cash or in kind, contact us on gian@gian.org or +91 9537574742 and we will get in touch!

“The best way to find yourself is to lose yourself in the service of others.”

EVERY HELP COUNTS! JOIN US

In The Times of Corona….

To join us in alleviating the problems of workers, please mail us at gian@gian.org or call on +91 9537574742

Community Solutions

To learn about the different experiments and examples that people are trying to ensure distancing, safety etc.

Community Solutions

To learn about the different experiments and examples that people are trying to ensure distancing, safety etc.

Literature on Corona

What science is saying To learn about the latest research on Covid 19

Serving meals

We have been serving meals to 300 migrant laborers in Ahmedabad everyday for the past three weeks. We distributed 100 rations kits to people in J & K. To sponsor food for a day, contribute Rs 4000 and Rs 500 per ration kit.

Safety gears

Distributed masks, sanitizers and soaps to low income groups and security personnel. For contribution:
1) reusable cloth masks Rs 15 per mask
2) Sanitizer Rs 50 per bottle
3) Rs 15 per soap

Supporting innovations

Stories of grassroots innovators innovating in the corona times
Rs. 4000 for solar powered automatic soap dispenser
Rs. 30000 per Sanitizer tunnel
Rs 2000 for a foot operated soap dispenser

` : ''; /* * Location / map. * * We first try to find decimal * latitude + longitude in the * database location field. */ const locationValue = practice.location || ''; const coordinates = gridExtractCoordinates( locationValue ); let mapHTML = ''; if(coordinates){ const lat = coordinates.lat; const lng = coordinates.lng; /* * OpenStreetMap embed. * * The marker is directly visible. */ const delta = 0.035; const west = lng - delta; const east = lng + delta; const south = lat - delta; const north = lat + delta; const mapURL = 'https://www.openstreetmap.org/export/embed.html' + '?bbox=' + encodeURIComponent(west) + ',' + encodeURIComponent(south) + ',' + encodeURIComponent(east) + ',' + encodeURIComponent(north) + '&layer=mapnik' + '&marker=' + encodeURIComponent(lat) + ',' + encodeURIComponent(lng); mapHTML = ` `; }else{ mapHTML = `
Location coordinates are not available for this practice.
`; } /* * PAS fields. */ const pasFields = [ ['PAS 1', practice.pas_1], ['PAS 2', practice.pas_2], ['PAS 3', practice.pas_3], ['PAS 4', practice.pas_4], ['PAS 5', practice.pas_5] ]; let pasHTML = ''; pasFields.forEach(function(item){ if( item[1] !== null && item[1] !== undefined && String(item[1]).trim() !== '' ){ pasHTML += `
${gridEscapeHTML( item[0] )}
${gridFormatText( item[1] )}
`; } }); if(!pasHTML){ pasHTML = `
No PAS / resource information available.
`; } /* * Practice fields. */ const practiceFields = [ ['Crop', practice.crop], ['Crop Family', practice.crop_family], [ 'Crop Scientific Name', practice.crop_scientific_name ], [ 'Crop Vernacular Name', practice.crop_vernacular_name ], [ 'Pest Taxonomy', practice.pest_taxonomy ], [ 'Pest Group', practice.pest_group ], [ 'Pest Scientific Name', practice.pest_scientific_names ], [ 'Pest Vernacular Names', practice.pest_vernacular_names ], [ 'Pest Vector Name', practice.pest_vector_name ], [ 'Formulation', practice.formulation ], [ 'Ingredients', practice.ingredients ], [ 'Dosage', practice.dosage ], [ 'Control Mode', practice.control_mode ], [ 'Problem Statement', practice.problem_statement ], [ 'Problem Scale', practice.problem_scale ], [ 'Manufacturing Capacity', practice.manufacturing_capacity ], [ 'Scalability', practice.scalability ], [ 'Potential Users', practice.potential_users ], [ 'Technology Transfer Terms', practice.technology_transfer_terms ], [ 'Scope for Technology Transfer Support', practice.scope_for_technology_transfer_support ], [ 'Limitations', practice.limitations ], [ 'Limitations of Approach', practice.limitations_of_approach ], [ 'Precautions', practice.precautions ] ]; let practiceHTML = ''; practiceFields.forEach(function(item){ if( item[1] !== null && item[1] !== undefined && String(item[1]).trim() !== '' ){ practiceHTML += gridDetailRow( item[0], item[1] ); } }); if(!practiceHTML){ practiceHTML = `
No additional practice details available.
`; } /* * References. */ const referenceFields = [ ['References', practice.references], ['Paper Link 1', practice.paper_link_1], ['Paper Link 2', practice.paper_link_2], ['Paper Link 5', practice.paper_link_5], ['Similar Paper / Patent / Practice', practice.similar_paper_patent_practice], ['Website', practice.website], ['Website Details', practice.website_details], ['Blog Link 1', practice.blog_link_1], ['Blog Link 2', practice.blog_link_2], ['Blog Link 3', practice.blog_link_3], ['Blog Link 5', practice.blog_link_5], ['News Link 1', practice.news_link_1], ['News Link 2', practice.news_link_2], ['News Link 3', practice.news_link_3], ['News Link 4', practice.news_link_4], ['News Link 5', practice.news_link_5] ]; let referencesHTML = ''; referenceFields.forEach(function(item){ if( item[1] !== null && item[1] !== undefined && String(item[1]).trim() !== '' ){ referencesHTML += gridDetailRow( item[0], item[1] ); } }); if(!referencesHTML){ referencesHTML = `
No reference information available.
`; } /* * Final HTML. */ app.innerHTML = `
${imageHTML}
${mapHTML}
${ type ? `
${gridEscapeHTML(type)}
` : '' }

${gridEscapeHTML(title)}

${ category ? `
${gridEscapeHTML(category)}
` : '' } ${ reference ? `
GIAN Reference: ${gridEscapeHTML(reference)}
` : '' }
About the Practice
${ detail ? `
Detail
${gridFormatText(detail)}
` : `
No practice description available.
` }
About the Innovator
${ innovator ? gridDetailRow( 'Knowledge Provider / Innovator', innovator ) : '' } ${ address ? gridDetailRow( 'Address', address ) : '' } ${ city ? gridDetailRow( 'City', city ) : '' } ${ district ? gridDetailRow( 'District', district ) : '' } ${ state ? gridDetailRow( 'State', state ) : '' } ${ pincode ? gridDetailRow( 'PIN Code', pincode ) : '' } ${ practice['Email Address (if any)'] ? gridDetailRow( 'Email', practice['Email Address (if any)'] ) : '' } ${ practice['Contact no: (if any)'] ? gridDetailRow( 'Contact No.', practice['Contact no: (if any)'] ) : '' }
Practice / Technology Details
${practiceHTML}
PAS / Resources
${pasHTML}
References
${referencesHTML}
${imageFallbackScript} `; /* * Back button. */ const backButton = document.getElementById( 'grid-back-practices' ); if(backButton){ backButton.addEventListener( 'click', function(){ /* * Reloading restores the * paginated database. */ window.location.reload(); } ); } /* * Keep map/image at top of * details after AJAX. */ app.scrollIntoView({ behavior:'smooth', block:'start' }); }; /* ===================================================== COORDINATE DETECTION ===================================================== */ window.gridExtractCoordinates = function(value){ if(!value){ return null; } const text = String(value); /* * Decimal pair: * * 21.1702, 72.8311 * * 21.1702 72.8311 */ const match = text.match( /(-?\d+(?:\.\d+)?)\s*[,;]\s*(-?\d+(?:\.\d+)?)/ ); if(match){ const lat = parseFloat(match[1]); const lng = parseFloat(match[2]); if( lat >= -90 && lat <= 90 && lng >= -180 && lng <= 180 ){ return { lat:lat, lng:lng }; } } return null; }; /* ===================================================== DETAIL ROW ===================================================== */ window.gridDetailRow = function(label,value){ return `
${gridEscapeHTML(label)}: ${gridFormatText(value)}
`; }; /* ===================================================== SAFE TEXT ===================================================== */ window.gridEscapeHTML = function(value){ if( value === null || value === undefined ){ return ''; } const div = document.createElement('div'); div.textContent = String(value); return div.innerHTML; }; window.gridEscapeAttribute = function(value){ return gridEscapeHTML(value) .replace( /"/g, '"' ); }; /* ===================================================== FORMAT LONG TEXT + LINKS ===================================================== */ window.gridFormatText = function(value){ if( value === null || value === undefined || value === '' ){ return ''; } let text = gridEscapeHTML(value); /* * Convert URLs into clickable links. */ text = text.replace( /(https?:\/\/[^\s<]+)/g, function(url){ return ` ${url} `; } ); /* * Preserve line breaks. */ text = text.replace( /\r?\n/g, '
' ); return text; }; })();

Got questions? Contact us!