В данной статье на примере блокирования кнопки сохранения нового элемента приложения показано, как в виджете-код получить элемент страницы, а на примере запуска процесса при удалении элемента приложения показано, как добавить обработчик события нажатия на кнопку удаления и как запустить «родное» действие (в данном случае прерывание процессов и задач, связанных с удаляемым элементом) вместе с кастомным действием.
1. Блокирование кнопки сохранения элемента, если не заполнено обязательное поле «роль сотрудника» (сценарий в виджете-код на форме создания):
Код:
<script>
$(document).ready(() => {
<!-- создаем свойство глобального объекта window "saveButton" -->
window.saveButton = document.querySelector('footer.modal-footer button.btn.btn-primary') ;
<!-- Отключаем кнопку при загрузке страницы -->
if(window.saveButton){
window.saveButton.disabled = true;
}
})
</script >
Сценарий при изменении значения переменной «роль сотрудника» во вкладке клиентских сценариев:
Код:
declare const window:any;
async function onEmployeeRoleChange(): Promise<void> {
if(window.saveButton){
if(Context.data.employeeRole!.length>0){
window.saveButton.disabled = false;
}
else{
window.saveButton.disabled = true;
}
}
}
2. Добавление обработчика события для кнопки удаления элемента и запуск процесса при нажатии на неё (виджет-код на форме просмотра):
Код:
<script>
<!-- Ожидаем загрузку страницы -->
$(document).ready(async () => {
<!-- получаем кнопку удаления на форме просмотра -->
var externalButton = document.querySelector('footer.modal-footer button.btn.btn-danger');
if(externalButton){
<!-- Добавляем обработчик события нажатия этой кнопки, при нажатии будет вызвана функция -->
externalButton.addEventListener("click",CreateListenerForPopOverButton)
}
})
function CreateListenerForPopOverButton(){
<!-- Ожидаем загрузку страницы -->
$(document).ready(async () => {
<!-- получаем кнопку удаления на всплывшем окне удаления -->
var innerButton = document.querySelector('div.popover-outer.visible button.btn.btn-danger[type=submit]');
<!-- Добавляем обработчик события нажатия этой кнопки, при нажатии будет вызвана функция-->
<!-- из вкладки клиентских сценариев-->
await innerButton.addEventListener("click",<%= Scripts%>.RunProcessOnDeleteButtonClick)
})
}
</script >
Функция RunProcessOnDeleteButtonClick на вкладке клиентских сценариев:
Код:
async function RunProcessOnDeleteButtonClick(): Promise<void> {
await Application.processes.your_process.run({});
}