# HTML writer
# feature

# History:
#  Stan Smith 2017-04-08 original script

require_relative 'html_geometryObject'
require_relative 'html_boundingBox'
require_relative 'html_featureProperties'

module ADIWG
   module Mdtranslator
      module Writers
         module Html

            class Html_Feature

               def initialize(html)
                  @html = html
               end

               def writeHtml(hFeature)

                  # classes used
                  geometryClass = Html_GeometryObject.new(@html)
                  boxClass = Html_BoundingBox.new(@html)
                  propertyClass = Html_FeatureProperty.new(@html)

                  # feature - id
                  unless hFeature[:id].nil?
                     @html.em('ID: ')
                     @html.text!(hFeature[:id])
                     @html.br
                  end

                  # feature - geometry object
                  unless hFeature[:geometryObject].empty?
                     @html.details do
                        @html.summary(hFeature[:geometryObject][:type], 'class' => 'h5')
                        @html.section(:class => 'block') do
                           geometryClass.writeHtml(hFeature[:geometryObject])
                        end
                     end
                  end

                  # feature - user bounding box
                  unless hFeature[:bbox].empty?
                     @html.details do
                        @html.summary('User Provided Bounding Box', 'class' => 'h5')
                        @html.section(:class => 'block') do
                           bbox = {}
                           bbox[:westLongitude] = hFeature[:bbox][0]
                           bbox[:eastLongitude] = hFeature[:bbox][2]
                           bbox[:southLatitude] = hFeature[:bbox][1]
                           bbox[:northLatitude] = hFeature[:bbox][3]
                           boxClass.writeHtml(bbox)
                        end
                     end
                  end

                  # feature - computed bounding box
                  unless hFeature[:computedBbox].empty?
                     @html.details do
                        @html.summary('Computed Bounding Box', 'class' => 'h5')
                        @html.section(:class => 'block') do
                           boxClass.writeHtml(hFeature[:computedBbox])
                        end
                     end
                  end

                  # feature - properties
                  unless hFeature[:properties].empty?
                     @html.details do
                        @html.summary('Properties', 'class' => 'h5')
                        @html.section(:class => 'block') do
                           propertyClass.writeHtml(hFeature[:properties])
                        end
                     end
                  end

                  # feature - native GeoJson
                  unless hFeature[:nativeGeoJson].empty?
                     @html.details do
                        @html.summary('GeoJson', 'class' => 'h5')
                        @html.section(:class => 'block') do
                           @html.text!(hFeature[:nativeGeoJson].to_json)
                        end
                     end
                  end

               end # writeHtml
            end # Html_Feature

         end
      end
   end
end
