module ActionView
	module Helpers
		module DateHelper
			def custom_paginate(scope, options = {})
				paginate = RailsAdminContent::Paginate.new(scope, options.update(per_page: options[:stint]))
				paginate.to_s
			end

			def format(value, limit=10)
				value = value.is_a?(String) && value.size > limit ? value.truncate(limit) : value
				value = value.is_a?(Time) ? value.to_s(:db) : value
				value ||= "null"
			end

			def menu_value(value, icon)
				raw <<-HTML
				<i class="#{icon}"></i><span class="hidden-tablet">#{value}</span>
				HTML
			end

			def link_to_menu(*args, &block)
				name         = menu_value(args[0], args[1])
				options      = args[2] || {}
				html_options = args[3]

				html_options = convert_options_to_data_attributes(options, html_options)
				url = url_for(options)

				href = html_options['href']
				tag_options = tag_options(html_options)
				href_attr = "href=\"#{ERB::Util.html_escape(url)}\"" unless href
				"<a #{href_attr}#{tag_options}>#{ERB::Util.html_escape(name || url)}</a>".html_safe
			end

			def edited(key, value, str='')
				str << 'editable' unless key == 'id'
				str << ' edit_datepicker' if value.is_a?(Time)
				str
			end

			def options_for_select_column_data(table, selected=nil)
				options_for_select RailsAdminContent::Client.desc_table(table).map{|a| [ a["Field"],a["Field"], column_type: a["Type"].gsub(/\(.*?\)/,'') ]}, selected
			end

			def content_field(column, value=nil)
				type = column["Type"].gsub(/\(.*?\)/,'')
				column["Default"] = value if value
				column["Field"] = "field[#{column["Field"]}]"
				case type
				when 'text'
					text_area_tag column["Field"], column["Default"], :size => "25x6", 'data-field' => column["Field"], class: "#{type} span10"
				when 'varchar'
					text_field_tag column["Field"], column["Default"], 'data-field' => column["Field"],  class: "#{type} span10"
				when 'int'
					number_field_tag column["Field"], column["Default"], 'data-field' => column["Field"],  class: "#{type} span10"
				when 'tinyint'
					select_tag column["Field"], options_for_select([['Yes',1],['No',0]], column["Default"]), 'data-field' => column["Field"],  class: "#{type} span10"
				else
					text_field_tag column["Field"], column["Default"],  'data-field' => column["Field"], class: "#{type} span10"
				end
			end

		end
	end
end