Практична робота в K2 ERP PHP
Класи та команди K2 Cloud ERP PHP — технічна документація з формування меню, таблиць K2Grid, YML-описів, master-detail зв’язків та налаштування форм у K2 Cloud ERP PHP.
Формування меню
Меню до класів формується за допомогою масиву, або автоматично - за допомогою yml-файлу.
Прийнято зберігати меню в в /папка компоненти/res/menu/назва меню.yml.
Приклад вивода такого меню:
<syntaxhighlight lang="yaml">
category:
parent: "root" name: "k2test_examples_old" caption: "Examples" iconclass: "fa fa-flask"
elements:
- - name: "k2test_stimulsoft"
- caption: "StimulSoft Demo"
- url: "?adm=k2test_stimulsoft"
- command:
- name: "k2test_phpgrid" caption: "PHPGrid Demo" addcaption: "+" # Exanole: addcaption_style: "{addcaption}" # caption: "PHPGrid Demo6" # badge bg-success text-bg-secondary me-3 iconclass: "bi bi-grid-3x3" url: "?adm=k2test_phpgrid" command:
- - name: "k2test_newphpgrid"
- caption: "PHPGridNew"
- url: "?adm=k2test_newphpgrid"
- command:
- name: "k2test_phpkool" caption: "PHPKool Demo" addcaption: "+" url: "?adm=k2test_phpkool" iconclass: "bi bi-backpack4" command:
- name: "k2test_jqwidgets" caption: "jQWidgets" url: "?adm=k2test_jqwidgets" iconclass: "bi bi-ui-checks-grid" command:
- name: "k2test_demopivottable" caption: "Pivot Table" url: "?adm=k2test_demopivottable" iconclass: "bi bi-card-list" command:
- name: "k2test_pdf" caption: "PDF" url: "?adm=k2test_pdf" iconclass: "bi bi-file-earmark-pdf" command:
- name: "k2test_pdf" caption: "PHPExcel" url: "?adm=k2test_phpexcel" iconclass: "bi bi-file-earmark-excel" command:
</syntaxhighlight>
name - ідентифікатор меню. По ньбому потім будуть визначатись права доступу користувачів.
caption - заголовок меню.
addcaption - текст, що виводиться права від меню (в нашому прикладі - це +).
addcaption_style - стиль, того, що виводиться справа, якщо потрібно зробити, щоб він відрізнявся від стилю по замовчуванню. Наприклад:
addcaption_style: "{addcaption}"
iconclass - клас іконки для пункту меню. Ці класи можна знайти на сайтах:
url - URL переходу по пункту меню
command - команда. Зарезервований функціонал на майбутнє.
1. Кольори бейджів
Можна використовувати будь-які з наступних класів:
- badge bg-primary
- badge bg-secondary
- badge bg-success
- badge bg-danger
- badge bg-warning
- badge bg-info
- badge bg-light text-dark
- badge bg-dark
Приклад:
html: 3
!
2. Іконки замість або разом із цифрами
Ви можете використовувати Font Awesome, Bootstrap Icons або будь-які інші SVG/шрифтові іконки всередині бейджа:
html:
Або разом із цифрою:
html:
5
3. Анімація або пульсація
Можна додати CSS-анімацію через кастомні класи:
css: .pulse-badge {
animation: pulse 1s infinite;
}
@keyframes pulse {
0% { transform: scale(1); opacity: 1; }
50% { transform: scale(1.2); opacity: 0.6; }
100% { transform: scale(1); opacity: 1; }
}
html: !
4. Розміщення бейджа на правому краю меню
Застосовуйте утиліти вирівнювання, наприклад ms-auto або float-end:
html: <a href="#" class="nav-link d-flex justify-content-between align-items-center">
PHPGrid Demo
6
</a>
5. Кастомний HTML у бейджі
Можна вставити будь-який HTML: SVG, emoji, спінер:
html:
🔔 6
6. Комбіновані бейджі (наприклад, статуси)
html: Active
Offline
Формування таблиць
Меню до класів формується за допомогою масиву, або автоматично - за допомогою yml-файлу.
Прийнято зберігати меню в в /папка компоненти/res/grid/назва меню.yml.
K2Grid YML: створення таблиць у зв’язці master–detail
Мета: пояснити, як описувати таблиці K2Grid у форматі YML, включно з полями, сортуванням, типами редакторів, діями‑кнопками, списками‑довідниками та зв’язком майстер → детайл. Приклади нижче базуються на ваших файлах dp2_zavdan_lab (майстер) та dp2_zavdan_rows (детайл).
1) Структура YML загалом
YML опис таблиці складається з двох шарів:
- Заголовок таблиці (метадані): SQL‑джерело, ім’я таблиці, заголовок, сортування, висота, режим детайлу тощо.
- Опис полів (fields:): набір елементів, де кожен ключ — це унікальне ім’я поля (внутрішній ідентифікатор у схемі YML), а значення — атрибути відображення/редагування.
1.1. Обов’язкові ключі заголовка
- select — SQL, який повертає всі стовпчики, потрібні для гріда. Дозволені JOIN, LEFT JOIN тощо.
- table — логічне ім’я сутності (використовується для CRUD, логіки backend).
- typeid — тип опису (для K2Grid; зазвичай 1).
- caption — заголовок гріда (відображається у UI).
1.2. Рекомендовані/опційні ключі заголовка
- sortname — поле сортування за замовчуванням (наприклад, order_ins).
- sortorder — напрямок сортування: asc / desc.
- height — фіксована висота гріда у пікселях або відсотках (наприклад, 300).
- detile — назва детальної таблиці (YML‑ідентифікатор). Вмикає режим master–detail у UI.
- where — додаткове фільтрування SQL (часто застосовується у детайлі з плейсхолдерами).
- getmaster: true — вказує, що грід працює у режимі детайлу й очікує ідентифікатор майстра.
- masterid — назва поля, яким детайл зв’язаний із майстром (у SQL‑select детайлу це має бути стовпчик, що містить «ключ майстра»).
Примітка: для майстра ключі where, getmaster, masterid зазвичай не задаються, а для детайлу — це основа зв’язування.
2) Зв’язок master → detail
2.1. Майстер (наприклад, dp2_zavdan_lab)
- detile: dp2_zavdan_rows — оголошує, що під грідом майстра відображатиметься вкладка/панель з детальною таблицею.
- У select майстра повинні бути всі ключові поля, які деталь зможе використати (наприклад, zavdanid).
2.2. Деталь (наприклад, dp2_zavdan_rows)
- getmaster: true — переводить грід у детальний режим.
- masterid: zavdanid — назва поля у деталі, що зберігає ID майстра.
- where: " where (zavdanid='{masterid}')and(zavdanid<>) " — фільтр, який підставляє значення поточного рядка майстра у плейсхолдер {masterid}.
Схема роботи: користувач клікає рядок у майстрі → K2Grid читає zavdanid → підставляє його у where детайлу → перезавантажує грід детайлу.
3) Поля (розділ fields:)
Кожен елемент у fields: має внутрішнє ім’я (ключ на рівні YML) та набір атрибутів. Найчастіші атрибути:
| Атрибут | Опис |
|---|---|
| field | Фактичне поле з select (ім’я стовпчика у результаті SQL). |
| alias | Опційно: явна вказівка на table_alias.column у випадку конфліктів/JOINS. |
| caption | Текст заголовка колонки у гріді / підпис у формі. |
| width | Ширина колонки у гріді (пкс). |
| width_form | Ширина елемента у формі (редакторі). |
| align | left / center / right — вирівнювання у гріді. |
| readonly | true/false — чи дозволено редагування у формі. |
| hidden | true/false — чи ховати колонку у гріді. |
| type_field | Тип редактора/віджета: date, datetime, checkbox, DropDown, condition, ін. |
| def_value | Значення за замовчуванням при створенні (add). |
| search | true/false — чи брати участь у пошуку/фільтрах. |
| editable | Службовий прапорець для UI у деяких темах; зазвичай зайве, якщо є readonly. |
| sql | (для довідників) SQL, який повертає k (ключ) і v (відображуване значення). |
| show_for | Контроль видимості за user.id: кома‑розділений список ідентифікаторів користувачів, для яких поле показується. Напр.: "-1, 1" — видно лише користувачам з id = -1 і id = 1. |
Примітка: show_for (ACL за user.id)
Поле show_for працює як простий ACL: якщо задано, елемент (колонка/кнопка) відображається лише тим користувачам, чиї user.id входять до списку. Приклад: show_for: "-1, 1" — видно користувачам з id −1 та 1. Якщо show_for не задано, елемент показується всім, хто має доступ до гріда загалом.
3.1. Спеціальні типи type_field
- date / datetime — відповідні календарні редактори.
- checkbox — логічний перемикач. Зручно у парі з def_value: 1 для активних записів.
- DropDown — довідник. Необхідно задати sql, що повертає k (ключ для збереження) та v (текст для відображення). Приклади:
<syntaxhighlight lang="yaml"> analysisid:
field: analysisid
alias: z.analysisid
caption: Назва випробування
type_field: DropDown
width: 450
width_form: 450
sql: |
select a.analysisid as k, CONCAT(tc.card_num,' ',a.analysis_name) as v
from dp2analysis a
left join templcard tc on a.templcardid=tc.templcardid
where a.active=1
order by tc.card_num, a.analysis_name
</syntaxhighlight>
<syntaxhighlight lang="yaml"> vidav_id:
field: vidav_id alias: z.vidav_id caption: Видав type_field: DropDown sql: select laborantid as k, CONCAT(pip,' ',posada) as v from dp2laborants order by pip
</syntaxhighlight>
- condition — умовне поле‑дія (кнопка/іконка). Не зберігає значення в БД, використовується для запуску дій (дизайнер, друк, створення протоколу, редагування картки детайлу тощо). Ключі:
- cond.exp — логічний вираз (можна тримати (false) аби завжди показувати варіант url2/caption2).
- cond.url2 — куди перейти при кліку (можно зі змінними {zavdanid}, {dp2_zavdan_rowsid} тощо).
- cond.caption2 — HTML іконка/підпис кнопки.
- show_for — (опціонально) обмежити відображення за user.id; напр., "-1, 1" — видно тільки користувачам з id −1 та 1.
Приклад кнопок у майстрі:
<syntaxhighlight lang="yaml"> design:
field: ' '
caption: К
width: 30
type_field: condition
show_for: "-1, 1"
cond:
exp: (false)
url2: '/?adm=dp2lab_zavdan_lab&mode=admin&id={zavdanid}&op=designer'
caption2:
print:
field: ' '
caption: Д
width: 30
type_field: condition
cond:
exp: (false)
url2: '/?adm=dp2lab_zavdan_lab&mode=admin&id={zavdanid}&op=print'
caption2:
</syntaxhighlight>
Приклад кнопки у детайлі (редагувати картку рядка):
<syntaxhighlight lang="yaml"> edit_card:
field: ' '
caption: Р
width: 30
type_field: condition
cond:
exp: (false)
url2: '/?adm=dp2lab_zavdan_lab&mode=admin&op=edit_template&rowid={dp2_zavdan_rowsid}'
caption2:
</syntaxhighlight>
4) Вимоги до select
- У майстрі select повинен повертати ключ майстра (наприклад, z.zavdanid) і всі поля, що відображаються.
- У детайлі select обов’язково повертає:
- власний ключ рядка (наприклад, z.dp2_zavdan_rowsid),
- поле зв’язку з майстром (z.zavdanid),
- усі колонки, що потрібні гріду.
Порада: для уникнення конфліктів імен використовуйте alias: з префіксом таблиці (наприклад, alias: z.zavdan_date).
5) Сортування, пошук, ширини, вирівнювання
- sortname/sortorder — глобальне сортування гріда.
- width задає ширину у гріді; width_form — у формі.
- align — left, center, right залежно від типу даних (дати/текст/числа).
- search: false — вимкніть пошук для службових стовпчиків (кнопок, ID, службових полів).
6) Режими відображення/редагування
- readonly: true/false у полі — контролює редагування у формах add/edit.
- hidden: true — ховає колонку у гріді (залишається доступною у формі, якщо не заборонено окремо).
- За потреби можна розширити контролі видимості окремими секціями show: (list/add/edit/view), якщо це підтримується вашою збіркою K2Grid.
7) Плейсхолдери у URL/WHERE
Доступні плейсхолдери підставляються зі значень поточного рядка:
- {zavdanid}, {dp2_zavdan_rowsid}, {masterid} тощо.
- У детайлі найчастіше використовується {masterid} у where:.
Приклад:
<syntaxhighlight lang="yaml"> where: " where (zavdanid='{masterid}')and(zavdanid<>) " </syntaxhighlight>
8) Мінімальні шаблони (готові каркаси)
8.1. Майстер (dp2_zavdan_lab)
<syntaxhighlight lang="yaml"> select: |
select z.zavdanid, ... , lab.login from dp2_zavdan_lab z left join dp2laborants lab on z.vidav_id=lab.laborantid
table: dp2_zavdan_lab typeid: 1 caption: Завдання на проведення випробувань sortname: order_ins sortorder: desc height: 300 detile: dp2_zavdan_rows
fields:
templcardid: field: zavdanid alias: z.zavdanid caption: ID hidden: true readonly: true
# ... інші колонки, кнопки condition, довідники DropDown, дати, чекбокси
</syntaxhighlight>
8.2. Деталь (dp2_zavdan_rows)
<syntaxhighlight lang="yaml"> select: |
select z.dp2_zavdan_rowsid, z.zavdanid, ... from dp2_zavdan_rows z
table: dp2_zavdan_rows typeid: 1 caption: Перелік випробувань sortname: order_ins sortorder: asc getmaster: true masterid: zavdanid where: " where (zavdanid='{masterid}')and(zavdanid<>) "
fields:
templcardid: field: dp2_zavdan_rowsid alias: z.dp2_zavdan_rowsid caption: ID hidden: true readonly: true
# ... інші колонки, кнопки condition, довідники DropDown, чекбокси
</syntaxhighlight>
9) Перевірочний чек‑лист перед публікацією
- SQL select повертає всі поля, зазначені у fields: (включно зі службовими ID).
- Для майстра задано detile: <ім'я_детальної_таблиці>.
- Для деталі встановлено getmaster: true, masterid: <поле_зв’язку> і правильний where з {masterid}.
- У деталі у select присутнє поле‑зв’язка з майстром (напр., zavdanid).
- У DropDown‑полях SQL повертає k та v з доречним order by.
- condition‑кнопки мають коректні url2 і плейсхолдери.
- width/align/search/readonly/hidden виставлені з урахуванням UX.
- Не забуті def_value там, де потрібні (наприклад, active: 1).
10) Типові помилки й як їх уникати
- Відсутня колонка в select, але вона згадана у fields: → отримаєте помилку мапінгу/рендеру. Додайте поле в SQL або приберіть з fields:.
- Неправильний alias при JOIN → колізії імен. Явно вказуйте alias: z.field.
- Забутий getmaster/masterid/where у деталі → деталь не фільтрується за активним майстром.
- У DropDown‑sql повертаються не k/v → селект не побудується. Забезпечте точні імена стовпців.
- Встановлено search: true для службових полів‑кнопок → зайвий шум у пошуку. Вимикайте.
11) Поради з UX та продуктивності
- Тримайте службові кнопки (типу condition) вузькими (width: 30–40).
- Числові колонки вирівнюйте праворуч (align: right), дати — ліворуч/по центру.
- Для великих довідників у DropDown додайте розумний order by, а також фільтри where a.active=1.
- Виносьте важкі обчислення у представлення/види БД (view), а в select — мінімум потрібних полів.
12) Приклад фрагментів з ваших файлів (адаптовані)
Кнопки в майстрі
<syntaxhighlight lang="yaml"> create_proto:
field: ' '
caption: С
width: 30
type_field: condition
cond:
exp: (false)
url2: '/?adm=dp2lab_zavdan_lab&mode=admin&id={zavdanid}&op=create_protokol'
caption2:
</syntaxhighlight>
Довідник «Відповідальний виконавець» у детайлі
<syntaxhighlight lang="yaml"> card_comment:
field: laborantid
alias: z.laborantid
caption: Відповідальний виконавець
type_field: DropDown
width: 400
sql: |
select l.laborantid as k, CONCAT(l.pip, " | ", labs.adress) as v
from dp2laborants l
left join dplabs labs on l.labid=labs.labid
order by labs.adress, pip
</syntaxhighlight>
13) Швидкий старт: з нуля до пари master–detail
- Створіть майстер YML: пропишіть select, table, caption, sortname, sortorder, height, додайте detile: <detail_name>.
- Додайте поля: ID (hidden/readonly), інформативні колонки, потрібні кнопки condition, довідники DropDown, дати/чекбокси.
- Створіть деталь YML: пропишіть select (включно з <master_key>), table, caption, sort*, getmaster: true, masterid: <master_key>, where з {masterid}.
- Додайте поля деталі: ID, <master_key> (можна приховати), довідники, черговість order_ins, active тощо.
- Перевірте чек‑лист (розд. 9), задеплойте обидва YML.
Додатково
- За потреби опишіть кастомні ролі та використовуйте show_for для кнопок‑дій.
- Для друку/експорту — робіть окремі condition‑поля з чіткими url2.
- Для динамічних фільтрів можна додавати власні плейсхолдери (залежно від вашої збірки K2Grid).
Приклад YML двох таблиць, пов’язаних за допомогою Master-Detile:
Master:
<syntaxhighlight lang="yaml"> select: select z.zavdanid, z.zajavkid, z.zavdan_num, z.zavdan_date, z.vidav_id, z.zajavn, z.active,
z.vaga_total, z.vaga_chist, z.vaga_volog, z.vaga_hvorob, z.date_begin, z.date_end, z.createuser,
z.updatedate, z.updateuser, z.createdate, z.order_ins, lab.login
from dp2_zavdan_lab z
left join dp2laborants lab
on z.vidav_id=lab.laborantid
table: dp2_zavdan_lab typeid: 1 sortname: order_ins sortorder: desc caption: Завдання на проведення випробувань height: 300 detile: dp2_zavdan_rows fields:
templcardid:
field: zavdanid
alias: z.zavdanid
caption: ID
width: 120
readonly: true
align: left
hidden: true
design:
field: ' '
caption: К
width: 30
readonly: true
search: false
align: center
type_field: condition
# Показывать поле для пользователей с правами:
show_for: "-1, 1"
cond:
exp: (false)
url2: '/?adm=dp2lab_zavdan_lab&mode=admin&id={zavdanid}&op=designer'
caption2:
readonly: true
print:
field: ' '
caption: Д
width: 30
search: false
readonly: true
align: center
type_field: condition
cond:
exp: (false)
url2: '/?adm=dp2lab_zavdan_lab&mode=admin&id={zavdanid}&op=print'
caption2:
create_proto:
field: ' '
caption: С
width: 30
search: false
readonly: true
align: center
type_field: condition
cond:
exp: (false)
url2: '/?adm=dp2lab_zavdan_lab&mode=admin&id={zavdanid}&op=create_protokol'
caption2:
card_num:
field: zavdan_num
alias: z.zavdan_num
caption: Проба №
width: 120
readonly: false
align: right
zajavn:
field: zajavn
alias: z.zajavn
caption: Заявка №
width: 120
readonly: false
align: right
zavdan_date:
field: zavdan_date
alias: z.zavdan_date
caption: Дата
width: 150
type_field: date
readonly: false
align: left
vaga_total:
field: vaga_total
alias: z.vaga_total
caption: Вага зразка
width: 120
readonly: false
align: right
vaga_chist:
field: vaga_chist
alias: z.vaga_chist
caption: Вага на чистоту
width: 120
readonly: false
align: right
vaga_volog:
field: vaga_volog
alias: z.vaga_volog
caption: Вага на вологість
width: 140
readonly: false
align: right
vaga_hvorob:
field: vaga_hvorob
alias: z.vaga_hvorob
caption: Вага на зараженість
width: 160
readonly: false
align: right
date_begin:
field: date_begin
alias: z.date_begin
caption: Дата початку
width: 150
type_field: date
readonly: false
align: left
date_end:
field: date_end
alias: z.date_end
caption: Дата кінця
width: 150
type_field: date
readonly: false
align: left
vidav_id:
field: vidav_id
alias: z.vidav_id
caption: Видав завдання
width: 400
type_field: DropDown
readonly: true
align: left
sql: select laborantid as k, CONCAT(pip,' ',posada) as v from dp2laborants order by pip
createuser:
field: createuser
alias: z.createuser
width: 150
caption: Створив
align: left
editable: false
hidden: false
readonly: true
createdate:
field: createdate
alias: z.createdate
width: 150
caption: Створено
align: left
editable: false
hidden: false
type_field: datetime
readonly: true
- show:
- list: false
- add: false
- edit: false
- view: true
updateuser:
field: updateuser
alias: z.updateuser
width: 150
caption: Змінив
align: left
editable: false
hidden: false
readonly: true
updatedate:
field: updatedate
alias: z.updatedate
width: 150
caption: Змінено
align: left
editable: false
hidden: false
type_field: datetime
readonly: true
order_ins:
field: order_ins
alias: z.order_ins
width: 150
caption: Порядок
align: left
editable: false
hidden: false
readonly: true
active:
field: active
alias: z.active
caption: Вкл
width: 40
type_field: checkbox
readonly: false
align: center
def_value: 1
</syntaxhighlight>
Detile:
<syntaxhighlight lang="yaml"> select: select z.dp2_zavdan_rowsid, z.zavdanid, z.dstu_name, z.analysisid, z.laborantid, z.active, z.order_ins
from dp2_zavdan_rows z
table: dp2_zavdan_rows typeid: 1 sortname: order_ins sortorder: asc caption: Перелік випробувань where: " where (zavdanid='{masterid}')and(zavdanid<>) " getmaster: true masterid: zavdanid
fields:
templcardid:
field: dp2_zavdan_rowsid
alias: z.dp2_zavdan_rowsid
caption: ID
width: 120
readonly: true
align: left
hidden: true
edit_card:
field: ' '
caption: Р
width: 30
readonly: true
search: false
align: center
type_field: condition
# Показывать поле для пользователей с правами:
#show_for: "-1, 1"
cond:
exp: (false)
url2: '/?adm=dp2lab_zavdan_lab&mode=admin&op=edit_template&rowid={dp2_zavdan_rowsid}'
caption2:
readonly: true
analysisid:
field: analysisid
alias: z.analysisid
caption: Назва випробування
type_field: DropDown
width: 450
width_form: 450
readonly: false
align: left
sql: "select a.analysisid as k, CONCAT(tc.card_num,' ',a.analysis_name) as v
from dp2analysis a
left join templcard tc
on a.templcardid=tc.templcardid
where a.active=1
order by tc.card_num, a.analysis_name"
temp_name:
field: dstu_name
alias: z.dstu_name
caption: ДСТУ
width: 150
readonly: false
align: left
card_comment:
field: laborantid
alias: z.laborantid
caption: Відповідальний виконавець
width: 400
type_field: DropDown
readonly: false
align: left
sql: |
select l.laborantid as k, CONCAT(l.pip," | ",labs.adress) as v
from dp2laborants l
left join dp2labs labs
on l.labid=labs.labid
order by labs.adress, pip
order_num:
field: order_ins
alias: z.order_ins
caption: Сорт
width: 75
readonly: true
align: right
active:
field: active
alias: z.active
caption: Вкл
width: 40
type_field: checkbox
readonly: false
align: center
def_value: 1
</syntaxhighlight>
Налаштування форми в таблиці
Приклад YML таблиці:
select: 'SELECT protokolid, prot_num, country_poh_nas, vyrobleno, obrobka, prot_data, zovn_vygl_colir, zovn_vygl_zapah, chystota, vmist_osnkult, vmist_obrush, vmist_prorosl,
vyhid, perevag_group, vmist_inshvyd, vmist_kult, insh_kult, vmist_zlisn, shogist, normalnogo, anomaln, tverdogo, gyttezdatn, zignilogo, neprorosli,
vologist, masa1000, zaragenist, poverhn_inf, fuzarioz, sim_bakterioz, sklsirbilgnyl, mishsazh, rizhky, sklkonraktyf, sazhkmish,
inshi_chystota, inshi_vmist, inshi_hvor_pov, inshi_hvor_vn, inshi_hvor_gr, goroh_zer, date_sert_sort, byte_chystota,
vnutr_inf, gryb_utv, zasel_shkidn, insh_shkid, zhuk, dstu, dstu_metod, zajavkid, aktvypr_date, aktvypr_num, umovy, zajav_navypr, date_zajav_navypr, meta, is_meta,
tryvalist, inshi_kategorii, naybshkidl, vagkovidokreml, sert_ista, insh_doc, date_sert_insh, vyrobn_part, buryaniv, insh_bur, vymog_markuv, laborant, date_oderg, date_proved, date_proved_to, reestr_num, laborant_vidp, is_vysnov, is_vidpov,
usercreate, datecreate, userupdate, dateupdate, is_close, nakaz, is_cond, add_dstu, oecd, invoice, gmo, razresh_vidat_cert, opys_zrazka, vmist_oblushch, vmist_zernov,
vmist_otruynyh, vmist_karantyn, bakterioz, plisnyavinnya, fomopsys, is_vlasn
FROM dp2_protokol_zern
'
where: WHERE (zajavkid='<%zajavkid%>')
table: dp2_protokol_zern
typeid: 1
is_edit: true
is_clone: false
- is_del: false
autowidth: false
width: 100%
- height: 800
form_width: 1400
data_width: 1390
form_height: 700
data_height: 450
form_script: offAutocomlite();showKult();$('editmoddp2_protokol_zern').attr('height','100px');$('#tr_zajavkid').hide();
readonly_form:
0: prot_num
1: zajavkid
- masterid: zajavkid
footer: true
sortname: order_ins
sortorder: desc
caption: Протокол випробувань зернові (A)
custom_form: false
fields:
protokolid:
field: protokolid
alias: protokolid
caption: ID протоколу
width: 120
readonly: true
align: center
hidden: true
D:
field: ' '
caption: Д
width: 30
readonly: true
search: false
align: center
type_field: condition
cond:
class: anone
exp: (false)
url2: '/?adm=k2dp2_protokol&mode=admin&id={protokolid}&zajavkid={zajavkid}&group=1&op=print&temp=print'
target2: _blank
caption2:
- Этот блок должен быть с супер-администратором ###########
K:
field: ' '
caption: К
width: 30
readonly: true
search: false
align: center
type_field: condition
cond:
class: anone
exp: (false)
url2: '/?adm=k2dp2_protokol&mode=admin&id={protokolid}&zajavkid={zajavkid}&group=1&op=designer&temp=print'
target2: _blank
caption2:
show_for: "-1, 1"
- Конец блока. Этот блок должен быть с супер-администратором ###########
translate:
field: translate
caption: Видати документ
width: 150
readonly: true
align: center
type_field: condition
cond:
exp: '(false)'
target2: _self
caption2: "<button class='' onclick='closeProtokol(\"{zajavkid}\", \"{is_vidpov}\", \"{shogist}\")' href='javascript:void(0)'>Видати документ</button>"
- notcond:
- field: notcond
- caption: Конд.
- width: 50
- readonly: true
- align: center
- type_field: condition
- cond:
- exp: '$row["is_cond"] == 0'
- url2:
- target2: _self
- caption2: "<button class='' onclick='notCond(\"{zajavkid}\", 0)' href='javascript:void(0)'></button>"
- url1:
- target1: _self
- caption1: "<button class='' onclick='notCond(\"{zajavkid}\", 1)' href='javascript:void(0)'></button>"
is_vlasn:
field: is_vlasn
alias: is_vlasn
caption: Протокол на вл. потр.
width: 75
readonly: false
align: center
type_field: checkbox
prot_num:
field: prot_num
alias: prot_num
caption: Номер протоколу
width: 75
readonly: false
align: center
prot_data:
field: prot_data
alias: prot_data
caption: Дата протоколу
width: 75
readonly: false
align: center
type_field: date
- zajav_navypr:
- field: zajav_navypr
- alias: zajav_navypr
- caption: Заявка на випробування
- width: 75
- readonly: false
- align: center
- date_zajav_navypr:
- field: date_zajav_navypr
- alias: date_zajav_navypr
- caption: Дата заявка на випробування
- width: 75
- readonly: false
- align: center
- type_field: date
- meta:
- field: meta
- alias: meta
- caption: Мета
- width: 75
- readonly: false
- align: center
- is_meta:
- field: is_meta
- alias: is_meta
- caption: Мета так/ні
- width: 75
- readonly: false
- align: center
- type_field: checkbox
aktvypr_num:
field: aktvypr_num
alias: aktvypr_num
caption: Акт відбір проб
width: 75
readonly: false
align: center
aktvypr_date:
field: aktvypr_date
alias: aktvypr_date
caption: Дата акту
width: 75
readonly: false
align: center
type_field: date
- country_poh_nas:
- field: country_poh_nas
- alias: country_poh_nas
- caption: Країна походження насіння
- width: 75
- readonly: false
- align: center
- vyrobleno:
- field: vyrobleno
- alias: vyrobleno
- caption: Вироблено
- width: 75
- readonly: false
- align: center
- sert_ista:
- field: sert_ista
- alias: sert_ista
- caption: сертифікат сортовий
- width: 75
- readonly: false
- align: center
- #
- date_sert_sort:
- field: date_sert_sort
- alias: date_sert_sort
- caption: дата видачі сортовий
- width: 75
- readonly: false
- align: center
- type_field: date
- insh_doc:
- field: insh_doc
- alias: insh_doc
- caption: інші документи про походження насіння посівний|ISTA
- width: 75
- readonly: false
- align: center
- # type_field: textarea
- oecd:
- field: oecd
- alias: oecd
- caption: ОЕСР
- width: 75
- readonly: false
- align: center
- invoice:
- field: invoice
- alias: invoice
- caption: Інвойс
- width: 75
- readonly: false
- align: center
- gmo:
- field: gmo
- alias: gmo
- caption: ГМО
- width: 75
- readonly: false
- align: center
- date_sert_insh:
- field: date_sert_insh
- alias: date_sert_insh
- caption: дата видачі інших документів
- width: 75
- readonly: false
- align: center
- type_field: date
- vyrobn_part:
- field: vyrobn_part
- alias: vyrobn_part
- caption: виробнича партія
- width: 75
- readonly: false
- align: center
date_oderg:
field: date_oderg
alias: date_oderg
caption: Дата одержання проби
width: 75
readonly: false
align: center
type_field: date
date_proved:
field: date_proved
alias: date_proved
caption: Дата проведення від
width: 75
readonly: false
align: center
type_field: date
date_proved_to:
field: date_proved_to
alias: date_proved_to
caption: Дата проведення по
width: 75
readonly: false
align: center
type_field: date
- obrobka:
- field: obrobka
- alias: obrobka
- caption: Обробка насіння
- width: 75
- readonly: false
- align: center
- vymog_markuv:
- field: vymog_markuv
- alias: vymog_markuv
- caption: Вимоги маркування (етикетки)
- width: 75
- readonly: false
- align: center
- type_field: textarea
opys_zrazka:
field: opys_zrazka
alias: opys_zrazka
caption: Опис та стан зразка
width: 75
readonly: false
align: center
zovn_vygl_colir:
field: zovn_vygl_colir
alias: zovn_vygl_colir
caption: 1. Зовн. огляд, колір
width: 75
readonly: false
align: center
zovn_vygl_zapah:
field: zovn_vygl_zapah
alias: zovn_vygl_zapah
caption: 1. Зовн. огляд, запах
width: 75
readonly: false
align: center
- chystota:
- field: chystota
- alias: chystota
- caption: 2. Чистота, %
- width: 75
- readonly: false
- align: center
vmist_osnkult:
field: vmist_osnkult
alias: vmist_osnkult
caption: 2. Чистота, %
Вміст насіння, осн культури
width: 75
readonly: false
align: center
vmist_obrush:
field: vmist_obrush
alias: vmist_obrush
caption: - обрушеного
width: 75
readonly: false
align: center
- formoptions:
- rowpos: 1
- colpos: 2
vmist_oblushch:
field: vmist_oblushch
alias: vmist_oblushch
caption: - облущеного
width: 75
readonly: false
align: center
vmist_prorosl:
field: vmist_prorosl
alias: vmist_prorosl
caption: - пророслого
width: 75
readonly: false
align: center
- formoptions:
- rowpos: 1
- colpos: 2
inshi_chystota:
field: inshi_chystota
alias: inshi_chystota
caption: - інші види
width: 75
readonly: false
align: center
vyhid:
field: vyhid
alias: vyhid
caption: 3. Відхід, %
width: 75
readonly: false
align: center
perevag_group:
field: perevag_group
alias: perevag_group
caption: - у тому числі
переважальні групи
width: 75
readonly: false
align: center
- byte_chystota:
- field: byte_chystota
- alias: byte_chystota
- caption: бите
- width: 75
- readonly: false
- align: center
vmist_inshvyd:
field: vmist_inshvyd
alias: vmist_inshvyd
caption: 4. Вміст насіння інших
видів, шт/кг
width: 75
readonly: false
align: center
formoptions:
rowpos: 1
colpos: 2
vmist_kult:
field: vmist_kult
alias: vmist_kult
caption: у тому числі
- вміст культурних
width: 75
readonly: false
align: center
formoptions:
rowpos: 2
colpos: 2
vmist_zernov:
field: vmist_zernov
alias: vmist_zernov
caption: з них зернові
width: 75
readonly: false
align: center
formoptions:
rowpos: 3
colpos: 2
- insh_kult:
- field: insh_kult
- alias: insh_kult
- caption: у тому числі
- width: 75
- readonly: false
- align: center
- formoptions:
- rowpos: 3
- colpos: 2
buryaniv:
field: buryaniv
alias: buryaniv
caption: - бур`янів
width: 75
readonly: false
align: center
formoptions:
rowpos: 4
colpos: 2
- insh_bur:
- field: insh_bur
- alias: insh_bur
- caption: у тому числі
- width: 75
- readonly: false
- align: center
- formoptions:
- rowpos: 5
- colpos: 2
vmist_zlisn:
field: vmist_zlisn
alias: vmist_zlisn
caption: з них
- злісних
width: 75
readonly: false
align: center
formoptions:
rowpos: 5
colpos: 2
naybshkidl:
field: naybshkidl
alias: naybshkidl
caption: - найбільш шкідливі, шт/кг
width: 75
readonly: false
align: center
formoptions:
rowpos: 6
colpos: 2
vagkovidokreml:
field: vagkovidokreml
alias: vagkovidokreml
caption: - важковідокремлювані
width: 75
readonly: false
align: center
formoptions:
rowpos: 7
colpos: 2
vmist_otruynyh:
field: vmist_otruynyh
alias: vmist_otruynyh
caption: - отруйних
width: 75
readonly: false
align: center
formoptions:
rowpos: 8
colpos: 2
vmist_karantyn:
field: vmist_karantyn
alias: vmist_karantyn
caption: - карантинних
width: 75
readonly: false
align: center
formoptions:
rowpos: 9
colpos: 2
inshi_vmist:
field: inshi_vmist
alias: inshi_vmist
caption: - інші види
width: 75
readonly: false
align: center
formoptions:
rowpos: 10
colpos: 2
shogist:
field: shogist
alias: shogist
caption: 5. Схожість, %
width: 75
readonly: false
align: center
formoptions:
rowpos: 11
colpos: 2
umovy:
field: umovy
alias: umovy
caption: Умови проведення аналізу
width: 75
readonly: false
align: center
formoptions:
rowpos: 12
colpos: 2
tryvalist:
field: tryvalist
alias: tryvalist
caption: Тривалість днів
width: 75
readonly: false
align: center
formoptions:
rowpos: 13
colpos: 2
normalnogo:
field: normalnogo
alias: normalnogo
caption: - нормально пророслого насіння
(енергія проростання)
width: 75
readonly: false
align: center
formoptions:
rowpos: 14
colpos: 2
anomaln:
field: anomaln
alias: anomaln
caption: - аномальних проростків
width: 75
readonly: false
align: center
formoptions:
rowpos: 15
colpos: 2
tverdogo:
field: tverdogo
alias: tverdogo
caption: - твердого насіння
width: 75
readonly: false
align: center
formoptions:
rowpos: 16
colpos: 2
gyttezdatn:
field: gyttezdatn
alias: gyttezdatn
caption: - у тому числі життєздатного
width: 75
readonly: false
align: center
formoptions:
rowpos: 17
colpos: 2
zignilogo:
field: zignilogo
alias: zignilogo
caption: - зігниле
width: 75
readonly: false
align: center
formoptions:
rowpos: 18
colpos: 2
neprorosli:
field: neprorosli
alias: neprorosli
caption: - непроросле здорове
width: 75
readonly: false
align: center
formoptions:
rowpos: 19
colpos: 2
inshi_kategorii:
field: inshi_kategorii
alias: inshi_kategorii
caption: Життєздатність
width: 75
readonly: false
align: center
formoptions:
rowpos: 20
colpos: 2
vologist:
field: vologist
alias: vologist
caption: 6. Вологість,%
width: 75
readonly: false
align: center
formoptions:
rowpos: 21
colpos: 2
masa1000:
field: masa1000
alias: masa1000
caption: 7. Маса 1 тис.
насінин, г
width: 75
readonly: false
align: center
formoptions:
rowpos: 22
colpos: 2
zaragenist:
field: zaragenist
alias: zaragenist
caption: 8. Зараженість хворобами,
% або шт/кг
width: 75
readonly: false
align: center
formoptions:
rowpos: 23
colpos: 2
poverhn_inf:
field: poverhn_inf
alias: poverhn_inf
caption: наявність поверхневої
інфекції, %
width: 75
readonly: false
align: center
formoptions:
rowpos: 1
colpos: 3
fuzarioz:
field: fuzarioz
alias: fuzarioz
caption: - фузаріоз
width: 75
readonly: false
align: center
formoptions:
rowpos: 2
colpos: 3
bakterioz:
field: bakterioz
alias: bakterioz
caption: - бактеріоз
width: 75
readonly: false
align: center
formoptions:
rowpos: 3
colpos: 3
sim_bakterioz:
field: sim_bakterioz
alias: sim_bakterioz
caption: - сім҆ядольний бактеріоз
width: 75
readonly: false
align: center
formoptions:
rowpos: 4
colpos: 3
plisnyavinnya:
field: plisnyavinnya
alias: plisnyavinnya
caption: - пліснявіння
width: 75
readonly: false
align: center
formoptions:
rowpos: 5
colpos: 3
inshi_hvor_pov:
field: inshi_hvor_pov
alias: inshi_hvor_pov
caption: - інші показники
width: 75
readonly: false
align: center
formoptions:
rowpos: 6
colpos: 3
vnutr_inf:
field: vnutr_inf
alias: vnutr_inf
caption: наявність внутрішньої
інфекції, %
width: 75
readonly: false
align: center
formoptions:
rowpos: 7
colpos: 3
inshi_hvor_vn:
field: inshi_hvor_vn
alias: inshi_hvor_vn
caption: - інші показники
width: 75
readonly: false
align: center
formoptions:
rowpos: 8
colpos: 3
fomopsys:
field: fomopsys
alias: fomopsys
caption: - фомопсис
width: 75
readonly: false
align: center
formoptions:
rowpos: 9
colpos: 3
gryb_utv:
field: gryb_utv
alias: gryb_utv
caption: наявність грибних утворень,
% або шт\кг.
width: 75
readonly: false
align: center
formoptions:
rowpos: 10
colpos: 3
sklsirbilgnyl:
field: sklsirbilgnyl
alias: sklsirbilgnyl
caption: - склероції сірої та
білої гнилей
width: 75
readonly: false
align: center
formoptions:
rowpos: 11
colpos: 3
mishsazh:
field: mishsazh
alias: mishsazh
caption: - сажкові утворення
width: 75
readonly: false
align: center
formoptions:
rowpos: 12
colpos: 3
sklkonraktyf:
field: sklkonraktyf
alias: sklkonraktyf
caption: - конюшинового
width: 75
readonly: false
align: center
formoptions:
rowpos: 13
colpos: 3
rizhky:
field: rizhky
alias: rizhky
caption: - ріжки, шт/кг
width: 75
readonly: false
align: center
formoptions:
rowpos: 14
colpos: 3
- sazhkmish:
- field: sazhkmish
- alias: sazhkmish
- caption: - сажкові мішечки та їхні частини
- width: 75
- readonly: false
- align: center
- formoptions:
- rowpos: 12
- colpos: 3
inshi_hvor_gr:
field: inshi_hvor_gr
alias: inshi_hvor_gr
caption: гали пшеничної нематоди
width: 75
readonly: false
align: center
formoptions:
rowpos: 15
colpos: 3
zasel_shkidn:
field: zasel_shkidn
alias: zasel_shkidn
caption: 9. Заселеність шкідниками,
шт./кг
width: 75
readonly: false
align: center
formoptions:
rowpos: 16
colpos: 3
zhuk:
field: zhuk
alias: zhuk
caption: - кліщ
width: 75
readonly: false
align: center
formoptions:
rowpos: 17
colpos: 3
goroh_zer:
field: goroh_zer
alias: goroh_zer
caption: - горохова зернівка
width: 75
readonly: false
align: center
formoptions:
rowpos: 18
colpos: 3
insh_shkid:
field: insh_shkid
alias: insh_shkid
caption: - інші види шкідників
width: 75
readonly: false
align: center
formoptions:
rowpos: 19
colpos: 3
is_vidpov:
field: is_vidpov
alias: is_vidpov
caption: Відповідає вимогам
ДСТУ так/ні
width: 75
readonly: false
align: center
type_field: checkbox
formoptions:
rowpos: 20
colpos: 3
- is_vysnov:
- field: is_vysnov
- alias: is_vysnov
- caption: Висновок так/ні
- width: 75
- readonly: false
- align: center
- type_field: checkbox
- formoptions:
- rowpos: 17
- colpos: 3
dstu:
field: dstu
alias: dstu
caption: ДСТУ на об`єкт випробувань
width: 175
readonly: false
align: center
type_field: DropDown
sql: select null as k, '_' as v union select dstuid as k, dstu_name as v from dp2_dstu where inprot = 1
formoptions:
rowpos: 21
colpos: 3
dstu_metod:
field: dstu_metod
alias: dstu_metod
caption: ДСТУ на метод випробувань
width: 175
readonly: false
align: center
type_field: DropDown
sql: select null as k, '_' as v union select dstuid as k, dstu_name as v from dp2_dstu where inprot = 1
formoptions:
rowpos: 22
colpos: 3
add_dstu:
field: add_dstu
alias: add_dstu
caption: Дод. ДСТУ
width: 75
readonly: false
align: center
formoptions:
rowpos: 23
colpos: 3
nakaz:
field: nakaz
alias: nakaz
caption: Наказ
width: 75
readonly: false
align: center
type_field: DropDown
sql: select null as k, '_' as v union select nakazid as k, nakaz_name as v from dp2_nakaz
formoptions:
rowpos: 24
colpos: 3
laborant:
field: laborant
alias: laborant
caption: Інженер-лаборант
width: 75
readonly: false
align: center
formoptions:
rowpos: 25
colpos: 3
razresh_vidat_cert:
field: razresh_vidat_cert
alias: razresh_vidat_cert
caption: Відповідальний
за складання протоколу
width: 75
readonly: false
align: center
formoptions:
rowpos: 26
colpos: 3
laborant_vidp:
field: laborant_vidp
alias: laborant_vidp
caption: Начальник
випробувальної лабораторії
width: 75
readonly: false
align: center
formoptions:
rowpos: 27
colpos: 3
- 27:
- field: usercreate
- alias: usercreate
- caption: Створив
- width: 75
- readonly: true
- align: center
- type_field: DropDown
- sql: select user_id as k, login as v from k2users
- 28:
- field: datecreate
- alias: datecreate
- caption: Коли створив
- width: 100
- readonly: true
- align: center
- type_field: datetime
- def_value: <%Now%>
- formoptions:
- rowpos: 48
- colpos: 2
- 29:
- field: userupdate
- alias: userupdate
- caption: Змінив
- width: 75
- readonly: true
- align: center
- type_field: DropDown
- sql: select user_id as k, login as v from k2users
- 30:
- field: dateupdate
- alias: dateupdate
- caption: Коли змінено
- width: 100
- readonly: true
- align: center
- type_field: datetime
- def_value: <%Now%>
- formoptions:
- rowpos: 50
- colpos: 2
zajavkid:
field: zajavkid
alias: z.zajavkid
caption: ID заявки
width: 120
readonly: false
align: center
hidden: false
def_value: "<%zajavkid%>"
is_close:
field: is_close
alias: is_close
caption: is_closei
width: 0.5
readonly: true
align: center
is_cond:
field: is_cond
alias: is_cond
caption: is_condi
width: 9.5
readonly: true
align: center
Результат виконання:
1) Керування вікном форми (глобально для Add/Edit/View)
Де задається
- На рівні грида:
add_options: {...} — для форми «Додати»
edit_options: {...} — для форми «Редагувати»
view_options: {...} — для форми «Перегляд»
Що реально працює й для чого
- width — ширина вікна (px або %), напр. 1000 або "90%".
- height — висота вікна (px або %), напр. "90%".
- modal — модальність (true|false).
- position — позиція вікна ("center" або {top:60,left:80}).
- recreateForm — створювати форму щоразу наново (часто потрібне) (true|false).
- closeAfterAdd / closeAfterEdit — закривати після збереження (true|false).
- checkOnSubmit — попередження при незаповнених/помилкових полях.
- savekey — гарячі клавіші збереження, напр. {enter:true}.
Порада: якщо ставиш height: "90%", часто корисно у своєму CSS для контейнера форми дозволити вертикальний скрол, щоб контент не “вилазив” із модалки.
2) Позиції та розміри полів (на рівні колонки)
Де задається
- У кожній колонці:
- formoptions: {...} — тільки для відображення в формі
- edittype — тип редактора
- editoptions: {...} — опції редактора
- editrules: {...} — правила валідації
Позиціювання (гратися «сіткою» форми)
- formoptions.rowpos — номер рядка (1, 2, 3, …)
- formoptions.colpos — номер колонки (1, 2, 3)
Це — єдиний офіційний спосіб розставити інпут по рядках/колонках у стандартному редакторі phpGrid/jqGrid.
- formoptions.elmprefix / formoptions.elmsuffix — невеличкий текст перед/після інпуту (зручно для одиниць: %, г, шт/кг)
Ширина/висота самого інпута (а не колонки грида)
- Для edittype: "text":
editoptions.size — видима ширина інпута (в «символах») editoptions.maxlength — максимум символів
- Для edittype: "textarea":
editoptions.rows та editoptions.cols
- Для числових/текстових полів у більшості випадків вистачає комбінації:
- formoptions.colpos/rowpos для розміщення,
- editoptions.size/rows/cols для розміру інпута,
- formoptions.elmsuffix для одиниці виміру.
Типи редакторів (типові)
- edittype: "text" | "textarea" | "select" | "checkbox" | "date"
(інші кастомні — уже твоєю ініціалізацією через dataInit)
Джерело для select
- edittype: "select"
- editoptions.value — словник або id:label;id2:label2
або
- editoptions.dataUrl + editoptions.buildSelect (для підвантаження HTML <select>)
Валідація
- editrules.required: true
- editrules.number: true / integer: true
- editrules.minValue / maxValue
- editrules.email: true / date: true / time: true
Ініціалізація віджетів (календар, маски тощо)
- editoptions.dataInit: function (elem) { ... }
(JS-функція ініціалізує, наприклад, datepicker/flatpickr/mask на конкретному інпуті)
3) Мінімальний робочий приклад (вирізка YML)
Приклад показує:
• глобальне керування вікном через edit_options, • розкладку полів формою через formoptions.rowpos/colpos, • ширину полів через editoptions.size, • одиниці виміру через formoptions.elmsuffix, • валідацію чисел через editrules.
- --- Глобальне керування формою Редагування ---
edit_options:
width: 1000 # px або "90%"
height: "90%"
modal: true
position: center # або {top:60, left:80}
recreateForm: true
closeAfterEdit: false
checkOnSubmit: true
savekey: { enter: true }
- --- Колонки (лише приклади) ---
columns:
- name: protocol_num
label: "Номер протоколу"
edittype: text
editrules: { required: true }
editoptions:
size: 28
maxlength: 50
formoptions:
rowpos: 1
colpos: 1
- name: protocol_date
label: "Дата протоколу"
edittype: text # або date, якщо ініціалізуєш календар через dataInit
editrules: { required: true, date: true }
editoptions:
size: 12
dataInit: "js:function(el){ $(el).datepicker({ dateFormat:'dd.mm.yy' }); }"
formoptions:
rowpos: 1
colpos: 2
- name: vologist
label: "Вологість"
edittype: text
editrules: { required: true, number: true, minValue: 0, maxValue: 100 }
editoptions:
size: 8
formoptions:
rowpos: 3
colpos: 1
elmsuffix: " %"
- name: masa1000
label: "Маса 1 тис. насінин"
edittype: text
editrules: { number: true, minValue: 0 }
editoptions:
size: 8
formoptions:
rowpos: 3
colpos: 2
elmsuffix: " г"
- name: insh_vidy
label: "Інші види (шт/кг)"
edittype: text
editrules: { integer: true, minValue: 0 }
editoptions:
size: 8
formoptions:
rowpos: 2
colpos: 1
elmsuffix: " шт/кг"
4) Часті питання / підводні камені
- “rowpos/colpos стоять, але ширина інпута «не така»”
У стандартному редакторі інпут розтягує CSS теми. Контролюй ширину саме інпута через editoptions.size (text) або rows/cols (textarea). Для складніших кейсів — власний CSS клас через editoptions.class і стилізуй.
- “Як перенести поле на всю ширину рядка?”
У стандартному редакторі немає офіційного colspan. Імітуй: постав colpos: 1, наступне поле — вже на наступному rowpos. Тобто дай цьому полю окремий рядок.
- “Одиниці виміру праворуч від інпута?”
Використовуй formoptions.elmsuffix: " %" / " г" / " шт/кг".
- “Як зробити календар/маску?”
Через editoptions.dataInit: "js:function(el){ /* ініціалізація */ }".