Sha256: ecd115e0085641c6c26ee10b10223e13f533965c705d1faff7db1c4522d9ffec
Contents?: true
Size: 1.67 KB
Versions: 5
Compression:
Stored size: 1.67 KB
Contents
# frozen_string_literal: true module Avo module Fields class LocationField < BaseField attr_reader :stored_as def initialize(id, **args, &block) hide_on :index super(id, **args, &block) @stored_as = args[:stored_as].present? ? args[:stored_as] : nil # You can pass it an array of db columns [:latitude, :longitude] end def value_as_array? stored_as.is_a?(Array) && stored_as.count == 2 end def as_lat_long_field_id(get) if get == :lat "#{id}[#{stored_as.first}]" elsif get == :long "#{id}[#{stored_as.last}]" end end def as_lat_long_placeholder(get) if get == :lat "Enter #{stored_as.first}" elsif get == :long "Enter #{stored_as.last}" end end def as_lat_long_value(get) if get == :lat record.send(stored_as.first) elsif get == :long record.send(stored_as.last) end end def fill_field(record, key, value, params) if value_as_array? latitude_field, longitude_field = stored_as record.send("#{latitude_field}=", value[latitude_field]) record.send("#{longitude_field}=", value[longitude_field]) record else super(record, key, value.split(","), params) end end def to_permitted_param if value_as_array? [:"#{id}", "#{id}": {}] else super end end def value_present? return value.first.present? && value.second.present? if value.is_a?(Array) && value.count == 2 value.present? end end end end
Version data entries
5 entries across 5 versions & 1 rubygems