# HTML writer # html body # History: # Stan Smith 2015-03-23 original script # Stan Smith 2014-04-10 add open and close buttons require 'html_metadataInfo' require 'html_resourceInfo' require 'html_dataDictionary' require 'html_citation' require 'html_responsibleParty' require 'html_orderProcess' require 'html_format' require 'html_transferOption' module ADIWG module Mdtranslator module Writers module Html class MdHtmlBody def initialize(html) @html = html end def writeHtml(intObj) @html.body do # classes used htmlMetaInfo = $HtmlNS::MdHtmlMetadataInfo.new(@html) htmlResInfo = $HtmlNS::MdHtmlResourceInfo.new(@html) htmlDataD = $HtmlNS::MdHtmlDataDictionary.new(@html) htmlCitation = $HtmlNS::MdHtmlCitation.new(@html) htmlResParty = $HtmlNS::MdHtmlResponsibleParty.new(@html) htmlOrderProc = $HtmlNS::MdHtmlOrderProcess.new(@html) htmlFormat = $HtmlNS::MdHtmlFormat.new(@html) htmlTranOpt = $HtmlNS::MdHtmlTransferOption.new(@html) # make sections of the internal data store more accessible hMetadata = intObj[:metadata] hMetaInfo = hMetadata[:metadataInfo] aDataDict = intObj[:dataDictionary] aDistributor = intObj[:metadata][:distributorInfo] aAssRes = intObj[:metadata][:associatedResources] aAddDocs = intObj[:metadata][:additionalDocuments] # set page title with logo # read logo from file path = File.join(File.dirname(__FILE__), 'logo150.txt') file = File.open(path, 'r') logo = file.read file.close # side navigation @html.div('id'=>'sideNav') do # add top anchor and button @html.a(' Top', {'href'=>'#', 'class'=>'btn icon-caret-up'}) # add open and close buttons @html.span(' Open',{'id'=>'openAllDetails', 'class'=>'btn icon-caret-down', 'onclick'=>'openAllDetails();'}) @html.span(' Close',{'class'=>'btn icon-caret-right', 'onclick'=>'closeAllDetails();'}) end # main header @html.h2('id'=>'mainHeader') do @html.img('width'=>'150', 'height'=>'39', 'title'=>'', 'alt'=>'', 'src'=>logo) @html.span('Metadata Report') @html.span('HTML','class'=>'version') end # report title @html.h1('mdTranslator Metadata Report', 'id'=>'mdtranslator-metadata-report') # section index @html.section(:class=>'block') do @html.h3('Page Index') @html.a('Metadata Information Section','href'=>'#metadataInfo') @html.section(:class=>'block') do @html.a('Metadata Identifier', 'href'=>'#metadata-identifier') @html.br @html.a('Metadata Record Information', 'href'=>'#metadata-recordInfo') @html.br @html.a('Parent Metadata Citation', 'href'=>'#metadata-parentInfo') end @html.br @html.a('Resource Information Section','href'=>'#resourceInfo') @html.section(:class=>'block') do @html.a('Resource Identification', 'href'=>'#resourceInfo-general') @html.br @html.a('Contacts', 'href'=>'#resourceInfo-contacts') @html.br @html.a('Keywords', 'href'=>'#resourceInfo-keywords') @html.br @html.a('Taxonomy', 'href'=>'#resourceInfo-taxonomy') @html.br @html.a('Spatial Reference', 'href'=>'#resourceInfo-spatialRef') @html.br @html.a('Extents (Geographic, Temporal, & Vertical Space)', 'href'=>'#resourceInfo-extents') @html.br @html.a('Data Quality', 'href'=>'#resourceInfo-dataQuality') @html.br @html.a('Constraints', 'href'=>'#resourceInfo-constraints') @html.br @html.a('Maintenance Information', 'href'=>'#resourceInfo-maintInfo') @html.br @html.a('Other Resource Information', 'href'=>'#resourceInfo-other') end @html.br @html.a('Data Dictionary Section','href'=>'#dataDictionary') @html.br @html.a('Resource Distribution Section','href'=>'#resourceDistribution') @html.br @html.a('Associated Resources Section','href'=>'#associatedResource') @html.br @html.a('Additional Documentation Section','href'=>'#additionalDocuments') end @html.hr # metadata source @html.h2('Metadata Source', 'id'=>'metadata-source') @html.section(:class=>'block') do @html.em('Metadata schema:') @html.text!(intObj[:schema][:name]) @html.br @html.em('Schema version:') @html.text!(intObj[:schema][:version]) end @html.hr # metadata information section @html.h2('Metadata Information', 'id'=>'metadataInfo') if !hMetaInfo.empty? @html.section(:class=>'block') do htmlMetaInfo.writeHtml(hMetaInfo) end end @html.hr # resource information section @html.h2('Resource Information', 'id'=>'resourceInfo') @html.section(:class=>'block') do htmlResInfo.writeHtml(hMetadata[:resourceInfo]) end @html.hr # data dictionary section @html.h2('Data Dictionary', 'id'=>'dataDictionary') aDataDict.each do |hDictionary| @html.section(:class=>'block') do # get dictionary title from the citation sTitle = hDictionary[:dictionaryInfo][:dictCitation][:citTitle] @html.details do @html.summary(sTitle, {'class'=>'h3'}) @html.section(:class=>'block') do htmlDataD.writeHtml(hDictionary) end end end end @html.hr # resource distribution section @html.h2('Resource Distribution', 'id'=>'resourceDistribution') aDistributor.each do |hDistributor| @html.section(:class=>'block') do @html.details do @html.summary('Distributor', {'class'=>'h4'}) @html.section(:class=>'block') do # resource distribution - distributor - required @html.em('Distributor contact: ') hResParty = hDistributor[:distContact] @html.section(:class=>'block') do htmlResParty.writeHtml(hResParty) end # resource distribution - order process hDistributor[:distOrderProc].each do |hOrder| @html.em('Order Process: ') @html.section(:class=>'block') do htmlOrderProc.writeHtml(hOrder) end end # resource distribution - resource format hDistributor[:distFormat].each do |hFormat| htmlFormat.writeHtml(hFormat) end # resource distribution - transfer options hDistributor[:distTransOption].each do |hTransOption| htmlTranOpt.writeHtml(hTransOption) end end end end end @html.hr # associated resource section @html.h2('Associated Resources', 'id'=>'associatedResource') aAssRes.each do |hAssRes| @html.section(:class=>'block') do # get document title from the citation hCitation = hAssRes[:resourceCitation] if !hCitation.empty? sTitle = hCitation[:citTitle] else sTitle = 'Resource' end @html.details do @html.summary(sTitle, {'class'=>'h4'}) @html.section(:class=>'block') do # associated resource - resource type s = hAssRes[:resourceType] if !s.nil? @html.em('Resource type: ') @html.text!(s) @html.br end # associated resource - association type s = hAssRes[:associationType] if !s.nil? @html.em('Association type: ') @html.text!(s) @html.br end # associated resource - initiative type s = hAssRes[:initiativeType] if !s.nil? @html.em('Initiative type: ') @html.text!(s) @html.br end # associated resource - citation if !hCitation.empty? @html.em('Resource citation: ') @html.section(:class=>'block') do htmlCitation.writeHtml(hCitation) end end # associated resource - metadata citation hCitation = hAssRes[:metadataCitation] if !hCitation.empty? @html.em('Metadata citation: ') @html.section(:class=>'block') do htmlCitation.writeHtml(hCitation) end end end end end end @html.hr # additional documentation section @html.h2('Additional Documentation', 'id'=>'additionalDocuments') aAddDocs.each do |hAddDoc| @html.section(:class=>'block') do # get document title from the citation sTitle = hAddDoc[:citation][:citTitle] @html.details do @html.summary(sTitle, {'class'=>'h4'}) @html.section(:class=>'block') do # additional documentation - resource type s = hAddDoc[:resourceType] if !s.nil? @html.em('Resource type: ') @html.text!(s) @html.br end # additional documentation - citation hCitation = hAddDoc[:citation] if !hCitation.empty? @html.em('Citation: ') @html.section(:class=>'block') do htmlCitation.writeHtml(hCitation) end end end end end end @html.hr #Load leaflet @html.link( :rel => 'stylesheet', :href => 'http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.css') @html.script('', :src => 'http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.js') # add inline javascript # read javascript from file path = File.join(File.dirname(__FILE__), 'html_bodyScript.js') file = File.open(path, 'r') js = file.read file.close @html.script('type'=>'text/javascript') do @html << js end end # body end # def writeHtml end # class end end end end