local node = Node:extend('nodes.time', {})

local textFont = love.graphics.newFont('fonts/Lato-Thin.ttf', 400)
local smallFont = love.graphics.newFont('fonts/Lato-Light.ttf', 60)

function node:init(config)
  node.super.init(self, config)
  self.timeFormat = self.timeFormat or '%H:%M'
  self.dateFormat = self.dateFormat or '%Y/%m/%d'  
end

function node:render()
  love.graphics.setColor( 0, 0, 0 )
  love.graphics.rectangle("fill", 0, 0, love.graphics.getWidth(), love.graphics.getHeight())

  love.graphics.setColor( 1.0, 1.0, 1.0 )

  love.graphics.setFont(textFont);
  love.graphics.printf(os.date(self.timeFormat), 0, 0.14*love.graphics.getHeight(), love.graphics.getWidth(), 'center');

  love.graphics.setFont(smallFont);
  love.graphics.printf(os.date(self.dateFormat), 0, 0.8*love.graphics.getHeight(), love.graphics.getWidth(), 'center');
end

return node
