All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.grails.scaffolding.registry.input.TimeZoneInputRenderer.groovy Maven / Gradle / Ivy

The newest version!
package org.grails.scaffolding.registry.input

import org.grails.scaffolding.model.property.DomainProperty
import org.grails.scaffolding.registry.DomainInputRenderer
import groovy.transform.CompileStatic

/**
 * The default renderer for rendering {@link TimeZone} properties
 *
 * @author James Kleeh
 */
@CompileStatic
class TimeZoneInputRenderer implements MapToSelectInputRenderer {

    String getOptionValue(TimeZone timeZone) {
        Date date = new Date()
        String shortName = timeZone.getDisplayName(timeZone.inDaylightTime(date), TimeZone.SHORT)
        String longName = timeZone.getDisplayName(timeZone.inDaylightTime(date), TimeZone.LONG)

        int offset = timeZone.rawOffset
        BigDecimal hour = offset / (60 * 60 * 1000)
        BigDecimal minute = offset / (60 * 1000)
        double min = Math.abs(minute.toDouble()) % 60

        "${shortName}, ${longName} ${hour}:${min} [${timeZone.ID}]"
    }

    String getOptionKey(TimeZone timeZone) {
        timeZone.ID
    }

    Map getOptions() {
        TimeZone.availableIDs.collectEntries {
            TimeZone timeZone = TimeZone.getTimeZone(it)
            [(getOptionKey(timeZone)): getOptionValue(timeZone)]
        }
    }

    TimeZone getDefaultOption() {
        TimeZone.default
    }

    @Override
    boolean supports(DomainProperty property) {
        property.type in TimeZone
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy