Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

Конструктор выражений предназначен для создания, редактирования и проверки выражений, используемых в параметрах действий и в действии «Вычислить выражение» на схеме робота. Используя конструктор выражений, вы можете формировать выражения из операторов, значений, переменных, свойств элементов и результатов действий.

Конструктор выражений вызывается по кнопке «Настроить выражение»:

  • из параметров действий с типами Строка, Число, Логический, Объект;

  • из действия «Вычислить выражение выражение» на схеме робота.

Окно конструктора выражений включает следующие области:

  1. поле ввода выражения;
  2. верхнюю панель операторов;
  3. строку с типом результата выражения;
  4. левую панель доступных в проекте переменных, свойств элементов и результатов действий;
  5. область списка ошибок;
  6. кнопки «Сохранить» и  «Отменить».

Выражение формируется из отдельныхблоков ввода. Каждый блок является независимым редактируемым элементом.

В блоке ввода допускается ввод:

  • числовых значений;
  • строковых значений в двойных кавычках;
  • логических значений (true, false);
  • операторов;
  • переменных, свойств элементов и результатов действий через символ @.

У каждого блока ввода есть меню с кнопками:

  • очистить блок (Ctrl+Shift+Backspace)
  • удалить блок (Ctrl+Shift+Del)
  • открыть скобку
  • закрыть скобку
  • вставить блок слева (Alt+←)
  • вставить блок справа (Alt+→)
  • вставить значение переменной, свойства, результата (@), для обращения к переменным, свойствам, результатам (Ctrl+2)
  • вставить текст (")" для вставки строки (в блок добавляются двойные кавычки, курсор устанавливается между них) 
  • вызвать метод (.)
  • перенести строку (Shift+Enter)

Навигация между блоками осуществляется с помощью клавиатуры:

  • ← – переход к предыдущему блоку при расположении курсора в начале блока;
  • → – переход к следующему блоку при расположении курсора в конце блока;
  • Tab – переход к следующему блоку;
  • Shift + Tab – переход к предыдущему блоку.

Перенос строки выполняется автоматически при достижении ширины области или вручную с помощью Shift + Enter.

Верхняя панель содержит набор операторов. При выборе оператора он вставляется в новый блок ввода. В всплывающей подсказке отображаются название оператора, тип операнда и тип результата. 

Image Added

Левая панель содержит вкладки:

  • Переменные;
  • Свойства;
  • Результаты.

По клику на элемент выполняется вставка ссылки в новый блок ввода.

Во вкладках Переменные и Результаты доступна фильтрация по типам:

  • Логический;
  • Строка;
  • Число.

Созданное в конструкторе выражение преобразуется в действие «Выражение».

Image Removed

Если конструктор был вызван из параметра действия и выражение отсутствовало

:Действие Выражение

, действие «Выражение» размещается на схеме перед действием, в параметре которого было написано выражение

  • После добавления Выражения на схему фокус остается на действии, из которого вызывался конструктор
  • Выражение должно искаться через поиск в параметрах
  • На блоке действия Выражение отображается кнопка вызова конструктора выражений
    • При открытии конструктора выражений со схемы робота открывается окно конструктора выражений с заполненным ранее выражением
  • .

    Image Added

    По умолчанию у действия Выражение выбирается последняя версия


    Оглавление
    classtoc-float

    HTML
    <script>
      AJS.toInit(function() {
        var toc        = document.querySelector('.toc-float');
        var aside      = toc.closest('.cell.aside');
        var mainHeader = document.getElementById('main-header');
        var auiHeader  = document.querySelector('nav.aui-header');
        var marginTop  = 10; // дополнительный отступ сверху
    
        // Вставка заголовка, если ещё не вставлен
        function insertHeader() {
          if (!toc.querySelector('.toc-header')) {
            var header = document.createElement('div');
            header.textContent = 'На этой странице:';
            header.className = 'toc-header';
            header.style.fontWeight = 'bold';
            header.style.marginBottom = '10px';
            toc.insertBefore(header, toc.firstChild);
          }
        }
    
        // Применение inline-стилей
        function applyStyles() {
          insertHeader();
    
          // Получаем ширину родителя
          var asideRect = aside.getBoundingClientRect();
    
          // Вычисляем вертикальный отступ
          var offset = 0;
          if (mainHeader) {
            var mhRect = mainHeader.getBoundingClientRect();
            if (mhRect.bottom > 0 && mhRect.top < window.innerHeight) {
              offset = mhRect.bottom;
            }
          }
          if (offset === 0 && auiHeader) {
            var ahRect = auiHeader.getBoundingClientRect();
            offset = ahRect.bottom;
          }
          var topOffset = Math.max(offset + marginTop, asideRect.top);
    
          Object.assign(toc.style, {
            position:     'fixed',
            top:          topOffset + 'px',
            left:         asideRect.left + 'px',
            width:        asideRect.width + 'px',
            maxHeight:    (window.innerHeight - topOffset - 20) + 'px',
            overflowY:    'auto',
            boxSizing:    'border-box',
            border:       '1px solid #ddd',
            borderRadius: '4px',
            padding:      '15px',
            zIndex:       'auto'
          });
        }
    
        // Инициалный вызов
        applyStyles();
    
        // Обновление при скролле, ресайзе окна
        window.addEventListener('scroll', applyStyles);
        window.addEventListener('resize', applyStyles);
    
        // Наблюдатель за изменением размеров родителя
        if (window.ResizeObserver) {
          new ResizeObserver(applyStyles).observe(aside);
        }
      });
    </script>