Можливе додавання кнопок у три місця: toolbar, toolbar меню та контекстне меню.
25.45. Додавання кнопки на toolbar.
|
module.exports = {
form_4_additionalActions(event) {
return [
{
code: ‘code1’,
label: ‘Кнопка 1’,
icon: ‘u-icon-key’,
handler() {
console.log(‘Нажатие Кнопки 1’)
},
showForSelectedRow: true
}
]
}
}
|
25.46. Додавання декількох кнопок на toolbar.
|
module.exports = {
form_4_additionalActions(event) {
return [
{
code: ‘code1’,
label: ‘Кнопка 1’,
icon: ‘u-icon-message’,
handler() {
console.log(‘Нажатие Кнопки 1’)
},
showForSelectedRow: true
},
{
code: ‘code2’,
label: ‘Кнопка 2’,
icon: ‘u-icon-grid’,
handler() {
console.log(‘Нажатие Кнопки 2’)
},
showForSelectedRow: true
},
{
code: ‘code3’,
label: ‘Кнопка 3’,
icon: ‘u-icon-book-alt’,
handler() {
console.log(‘Нажатие Кнопки 3’)
},
showForSelectedRow: true
}
]
}
}
|
25.47. Додавання декількох кнопок на toolbar та їх сортування (розміщення) в toolbar (sortOrder).
ortOrder:sortOrder:
|
module.exports = {
form_4_additionalActions(event) {
return [
{
code: ‘code1’,
label: ‘Кнопка 1’,
icon: ‘u-icon-message’,
sortOrder: 30,
handler() {
console.log(‘Нажатие Кнопки 1’)
},
showForSelectedRow: true
},
{
code: ‘code2’,
label: ‘Кнопка 2’,
icon: ‘u-icon-grid’,
sortOrder: 20,
handler() {
console.log(‘Нажатие Кнопки 2’)
},
showForSelectedRow: true
},
{
code: ‘code3’,
label: ‘Кнопка 3’,
icon: ‘u-icon-book-alt’,
sortOrder: 10,
handler() {
console.log(‘Нажатие Кнопки 3’)
},
showForSelectedRow: true
}
]
}
}
|
25.48. До кнопки toolbar можна додати обробник рядка таблиці, яка виділена. Приклад: взяти значення атрибута з рядка таблиці sortOrder.
rtOrder:sortOrder:sortOrder:
|
const {Repository} = require(‘@unitybase/ub-pub’)
module.exports = {
form_4_additionalActions(event) {
return [
{
code: ‘code1’,
label: ‘Кнопка 1’,
icon: ‘u-icon-message’,
async handler({rowID}) {
const entry = await Repository(‘dfx_DocumentItem’).attrs(‘attrValues.a003’).selectById(rowID)
console.log(‘Значение атрибута:’,entry)
},
showForSelectedRow: true
}
]
}
}
|
25.49. Приклад аналогічний до попереднього. Тільки в даному випадку виконується видалення рядка таблиці ortOrder.
sortOrder:sortOrder:sortOrder:
|
const {Repository, connection} = require(‘@unitybase/ub-pub’)
module.exports = {
form_4_additionalActions(event) {
return [
{
code: ‘code1’,
label: ‘Удалить запись’,
icon: ‘u-icon-key’,
async handler({rowID}) {
await connection.run({
entity: ‘dfx_DocumentItem’,
method: ‘delete’,
execParams: {ID: rowID}
})
event.form.getNodeControl(4).refreshData()
},
showForSelectedRow: true
}
]
}
}
|
24.50. Додавання пункту в меню інструменту. Для пунктів цього меню неможливе використання операцій над рядком таблиці Order.
:
|
module.exports = {
form_4_additionalActions(event) {
return [
{
code: ‘code1’,
label: ‘Кнопка 1’,
icon: ‘u-icon-key’,
handler() {
console.log(‘Нажатие Кнопки 1’)
},
toolbar: true
}
]
}
}
|
24.51. Додавання декількох пунктів у меню toolbar та їх сортування.
er:sortOrder:sortOrder:
|
module.exports = {
form_4_additionalActions(event) {
return [
{
code: ‘code1’,
label: ‘Кнопка 1’,
icon: ‘u-icon-key’,
sortOrder: 40,
handler() {
},
toolbar: true
},
{
code: ‘code2’,
label: ‘Кнопка 2’,
icon: ‘u-icon-key’,
sortOrder: 30,
handler() {
},
toolbar: true
},
]
}
}
|
24.52. Додавання пункту до контекстного меню. Для пунктів цього меню неможливе використання операцій над рядком таблиціOrder.
:sortOrder:sortOrder:
|
module.exports = {
form_4_additionalActions(event) {
return [
{
code: ‘code1’,
label: ‘Кнопка 1’,
icon: ‘u-icon-key’,
handler() {
console.log(‘Нажатие Кнопки 1’)
},
contextMenu: true
}
]
}
}
|
24.53. Додавання кількох пунктів у контекстне меню та їх сортування.
:sortOrder:sortOrder:
|
module.exports = {
form_4_additionalActions(event) {
return [
{
code: ‘code1’,
label: ‘Кнопка 1’,
icon: ‘u-icon-key’,
sortOrder: 40,
handler() {
},
contextMenu: true
},
{
code: ‘code2’,
label: ‘Кнопка 2’,
icon: ‘u-icon-key’,
sortOrder: 30,
handler() {
},
contextMenu: true
},
]
}
}
|
24.54. Для кнопки с табличним атрибутом також можно використовувати form_ID_beforeAction_<actionCode>, form_ID_actionExecuted_<actionCode> по аналогії з файловим атрибутом. Приклад використання form_ID_beforeAction_<actionCode>.
:sortOrder:
|
const {showErrorWindow} = require(‘@unitybase/ub-pub’)
module.exports = {
form_4_additionalActions(event) {
return [
{
code: ‘button2’,
label: ‘Выгрузить файл’,
icon: ‘fas fa-arrow-down’,
handler() {
const fileAttributeNodeID = 6
const fileAttributeControl = event.form.getNodeControl(fileAttributeNodeID)
fileAttributeControl.downloadFile() // Выгрузка файла
},
showForSelectedRow: true
}
]
},
form_4_beforeAction_button2(event) {
const fileAttr = event.document.getNativeFileAttribute()
if (!fileAttr.fileInfo) {
event.cancelAction()
showErrorWindow(‘Файл должен быть загружен’)
return
}
if (!fileAttr.isSigned) {
event.cancelAction()
showErrorWindow(‘Файл должен быть подписан’)
return
}
if (fileAttr.fileInfo.contentType !== ‘application/pdf’) {
event.cancelAction()
showErrorWindow(‘Файл должен быть формата pdf’)
}
}
}
|
24.54. Додавання кнопки в табличний атрибут, після натискання якої встановлюється значення атрибута у виділеному рядку
|
const {Repository, connection} = require(‘@unitybase/ub-pub’)
module.exports = {
form_33_additionalActions(event) { // 33 – код табличного атрибута на форме документа
return [
{
code: ‘code1’,
label: ‘Обновить ms1’,
icon: ‘u-icon-key’,
async handler({rowID}) {
await connection.update({
entity: ‘dfx_DocumentItem’,
execParams: {
ID: rowID,
‘attrValues.ms01’: ‘newValue’ //код атрибута и значение, которое будет установлено
},
__skipOptimisticLock: true
},
event.form.getNodeControl(33).refreshData())}, // обновление данных в таблице
showForSelectedRow: true
}
]
}
}
|