Full Format

Расширенный формат разметки, который позволяет управлять отображением полей, их состоянием и валидацией.

// Форма для отображения простого текстового поля.
 
{
    xtype ‘textfield’
    name ‘c_address’
    value ‘ ’
    label ‘Адрес’
    hint ‘Ввести адрес’
}

Список свойств, которые могут указываться у всех:

  • require: Boolean – обязательность.
  • value: Any – значение.
  • name: String – имя переменной, должно быть уникально в рамках формы.
  • label: String – пользовательское наименование поля.
  • align: String – top|bottom|left|right|center
  • margin: Integer – отступ. По умолчанию 0
  • hidden: Boolean – скрыть.
  • disabled: Boolean- отключить.
  • layout: String – ориентация шаблона.

Событие для всех полей:

  • oninit — инициализация

textfield

Текстовое поле для отображения текста, основными свойствами должны являться:

  • minLength: Integer – минимальная длина текста. Значениями должно быть число. Если -1, то бесконечно.
  • maxLength: Integer – максимальная длина текста. Значениями должно быть число. Если -1, то бесконечно.
  • hint: String – текст подсказки
  • inputType: String – тип вводимых данных. Возможные значения:
    • email –электронный адрес
    • phone – формат телефона
    • number – число
    • date – дата
  • events:
    • onchange – изменение объекта

textview

Текстовое поле для ввода «длинного текста»:

  • minLength: Integer – минимальная длина текста. Значениями должно быть число. Если -1, то бесконечно.
  • maxLength: Integer – максимальная длина текста. Значениями должно быть число. Если -1, то бесконечно.
  • events:
    • onchange – изменение объекта

numberfield

Поле для ввода числа, как с плавающей точкой, так и без.

  • maxValue: Number – максимально значение.
  • minValue: Number – минимальное значение.
  • hint: String – текст подсказки
  • decimalPrecision: Number – количество символов после запятой. Если значение 0, то должно быть целочисленное число.
  • events:

onchange – изменение объекта

xtype 'numberfield'
name 'bottles'
label 'Bottles of Beer'
value 99
maxValue 99
minValue 0
hint ‘Ввести номер’

combo

Отображает выпадающий список, с заранее известными данными.

  • store: Any[] – массив данных.
  • displayField: String – поле которое должно использоваться для отображения пользователю.
  • valueField: String – поле которое должно использоваться для сохранения, как значение.
  • events:
    • onchange – изменение объекта
xtype ‘combo’
label 'Choose State',
store [
    { 
        name ‘Саша’ 
        addr ‘Cheboksary
    }
]
displayField 'name'
valueField 'abbr'

switchfield

Переключатель:

  • checked: Boolean – выбрано значение или нет. Значения true|false
  • layout: ‘vbox’
  • events:
    • onchange – изменение объекта
xtype ‘switchfield’
label 'Artichoke Hearts'
name 'topping'
checked true

radiogroup

Группа элементов с возможность выбора только одного значения:

  • items: any[] – список для выбора
    • text: String
    • value: Any
    • checked: Boolean
  • events:
    • onchange – изменение объекта
xtype ‘radiogroup’
label 'Artichoke Hearts'
name 'topping'
items [
    {
        text ‘Муж’
        value 1
        checked true
    }
    {
        text ‘Котенок’
        value 2
    }
]

datefield

Поле для вывода даты:

  • maxValue: String|Date – максимальное значение
  • minValue: String| Date – минимальное значение
  • events:
    • onchange – изменение объекта
xtype 'datefield'
label 'From'
name 'from_date'
maxValue ‘2021-03-11’
minValue ‘2021-01-01’

Для указания, текущего для должно устанавливаться значение ‘NOW’

displayfield

Отображает поле, которое должно выводиться только для чтения.

  • events:
    • oninit — инициализация
xtype 'displayfield'
label 'Home'
name 'home_score’
value '10'

button

Кнопка

  • text: String – текст кнопки
  • events:
    • onclick
xtype 'button'
name ‘clickme’
text 'click me’
onclick {
 
}

Дополнительно можно указать описание кнопки при помощи label.

Контейнеры

Для группировки полей должен применяться один из двух компонентов:

  • vbox – расположение дочерних элементов по вертикали.
  • hbox – расположение дочерних элементов по горизонтали.
  • events:
    • oninit — инициализация
layout 'hbox'
items [
    {
        xtype 'displayfield'
        label 'Home'
        name 'home_score'
        value '10'
    }
    {
        xtype 'displayfield'
        label 'Premise'
        name 'premise_score'
        value '1A'
    }
]

В примере выше указано, что два элемента «Home» и «Premise» располагаются горизонтально.

Пример разметки

 xtype 'container'
 layout 'vbox'
 name 'id'
 items [
     {
         xtype 'displayfield'
         label 'Welcome text'
         value 'Hello, people!!!'
         name 'welcomeId'
         layout 'hbox'
     }
     {
         xtype 'displayfield'
         value 'Hello2'
         name 'welcomeId2'
     }
     {
         xtype 'textfield'
         value 'simple'
         name 'textfield'
         label 'Текстовое поле'
         require true
         onchange {
             
         }
     }
     {
         xtype 'numberfield'
         name 'simpleNumber'
         label 'Число'
         maxValue 5
         minValue 3
         decimalPrecision 1
         onchange {
             
         }
     }
     {
         xtype 'switchfield'
         name 'simpleSwitch'
         label 'Согласен'
         checked true
         layout 'vbox'
         onchange {
             log('switchfield change');
         }
     }
     {
         xtype 'combo'
         name 'simpleCombo'
         label 'Пол'
         displayField 'text'
         valueField 'id'
         value 2
         layout 'hbox'
         store [
             {
                 id 1
                 text 'Муж'
             }
             {
                 id 2
                 text 'Жен'
             }
         ]
         onchange {
             var d  = __current__.getValue();
             log(d);
         }
     }
     {
         xtype 'datefield'
         name 'simpleDate'
         label 'Дата'
         format 'dd.MM.yyyy'
         onchange {
             var d  = __current__.getValue();
             log(d);
         }
     }
     {
         xtype 'button'
         name 'clicker'
         text 'Согласен'
         label 'Я подписываюсь под всем что есть'
         layout 'vbox'
         value 0
         onclick {
             var val = clicker.getValue();
             var i = val + 1;
             clicker.setValue(i);
             log(i);
         }
     }
     {
         xtype 'radiogroup'
         name 'simpleRadioGroup'
         label 'Отличный выбор'
         value 1
         items [
             {
                 text 'Муж'
                 value 1
             }
             {
                 text 'Котенок'
                 value 2
             }
         ]
         onchange {
             var v = __current__.getValue();
             log(v);
         }
     }
 ]
Print Friendly, PDF & Email