Sha256: 5c71b41260e782e6d8c4eae6b1d17a79a7f130a097e283fe85fdee4314580e11

Contents?: true

Size: 1.69 KB

Versions: 7

Compression:

Stored size: 1.69 KB

Contents

module Formotion
  module RowType
    class DateRow < StringRow
      # overwrite Character on_change method
      def on_change(text_field)
      end

      def update
        self.row.text_field && self.row.text_field.text = self.formatted_value
      end

      def date_value
        value = self.row.value
        if value.is_a? Numeric
          NSDate.dateWithTimeIntervalSince1970(value.to_i)
        else
          nil
        end
      end

      def formatter
        @formatter ||= begin
          formatter = NSDateFormatter.new

          date_style = self.row.format
          if date_style && date_style.to_s[-5..-1] != "style"
            date_style = (date_style.to_s + "_style").to_sym
          end
          formatter.dateStyle = self.row.send(:const_int_get, "NSDateFormatter", date_style || NSDateFormatterShortStyle)
          formatter
        end
      end

      def formatted_value
        return formatter.stringFromDate(self.date_value) if self.date_value
        self.row.value
      end

      def after_build(cell)
        self.row.text_field.inputView = self.picker
        update
      end

      def picker
        @picker ||= begin
          picker = UIDatePicker.alloc.initWithFrame(CGRectZero)
          picker.datePickerMode = UIDatePickerModeDate
          picker.hidden = false
          picker.date = self.date_value || NSDate.date

          picker.when(UIControlEventValueChanged) do
            self.row.value = @picker.date.timeIntervalSince1970.to_i
            update
          end

          picker
        end
      end

      # Used when row.value changes
      def update_text_field(new_value)
        self.row.text_field.text = self.formatted_value
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
formotion-1.1.5 lib/formotion/row_type/date_row.rb
formotion-1.1.4 lib/formotion/row_type/date_row.rb
formotion-1.1.3 lib/formotion/row_type/date_row.rb
formotion-1.1.2 lib/formotion/row_type/date_row.rb
formotion-1.1.1 lib/formotion/row_type/date_row.rb
formotion-1.1 lib/formotion/row_type/date_row.rb
formotion-1.0 lib/formotion/row_type/date_row.rb