package kz.arta.synergy.workflow.mobile.android.forms.mobile.models;

import com.google.gson.annotations.SerializedName;

import java.io.Serializable;

/**
 * Created by neox on 19.03.15.
 * Описание формы
 */
public class FormDescription implements Serializable {

    /**
     * Имя формы
     */
    public String name;

    /**
     * Свойства формы
     */
    public Properties[] properties;

    /**
     * Источники данных для списков
     */
    public DataSources[] datasources;

    /**
     * Данные компонентов
     */
    public Data[] data;

    /**
     * Описание формы
     */
    public class Properties {

        /**
         * ID компонента
         */
        public String id;

        /**
         * Заголовок
         */
        public String label;

        /**
         * Тип (listbox, label и т.д)
         */
        public String type;

        /**
         * Обязательное ли поле
         */
        public boolean required;

        /**
         * Настройки компонентов
         */
        public Config config;

    }

    /**
     * Данные компонентов
     */
    public class Data {

        /**
         * Идентификатор компонента
         */
        public String id;

        /**
         * Значение по умолчанию
         */
        public
        @SerializedName("default")
        String def;

        /**
         * Значения компонентов
         */
        public Values[] values;
    }

    /**
     * Источники данных для компонентов
     */
    public class DataSources {

        /**
         * Идентификатор компонента
         */
        public String id;

        /**
         * Тип
         */
        public String type;

        /**
         * Словарь
         */
        public String dict;

        /**
         * Ключ
         */
        public String key;

        /**
         * Значение
         */
        public String value;
    }

    /**
     * Данные для выпадающих списков
     */
    public class Values {

        /**
         * Значение
         */
        public String value;

        /**
         * Лейбл
         */
        public String label;
    }

    /**
     * Настройки компонентов
     */
    public class Config {

        /**
         * Компонент только для чтения
         */
        public
        @SerializedName("read-only")
        boolean read_only;
    }

}
