Я хочу изменить значение, присвоенное свойству документа, в Spot Fire. Допустим, я создал новое свойство документа под названием «Test1» в виде строки и присвоил ему значение «a». Есть ли способ изменить это значение с помощью Javascript каждый раз, когда я загружаю панель управления Spotfire?
Изменить значение свойств документа Spotfire с помощью javascript
Ответы (4)
Я не знаю, как использовать для этого JavaScript, но вы можете назначить свойство документа string
с помощью пользовательского выражения (если это поле со списком) или запускать скрипт IronPython каждый раз при изменении значения. Таким образом, вы можете установить выражение на текущую дату, datetimenow()
, а затем каждый раз, когда оно загружается, скрипт IronPython будет запускаться. Однако я не понимаю, зачем вам для этого нужен контроль свойств.
Я полагаю, это действительно зависит от того, что вы хотите установить для свойства документа. Это данные из ваших таблиц? Вывод из сложного кода? Все это нужно учитывать.
1) Создайте элемент управления свойством типа ввода, используя свойство документа, которое вы хотите изменить.
2) Отредактируйте Html, чтобы назначить родительскому элементу идентификатор, скажем, «testInput». И добавьте скрипт, как показано ниже, в окне «Редактировать HTML».
<span id="testInput"><SpotfireControl id="7db34e6c423240f59fc99e6b80fa23ec" /></span>
<script>
$("#testInput input").val("after");
$("#testInput input").focus();
$("#testInput input").blur();
</script>
3) Этот сценарий изменит значение свойства документа на «после» всякий раз, когда вы открываете файл.
Судя по вашему комментарию, вы можете написать этот код на Python и прикрепить скрипт к элементу управления действием, т.е. Ссылка или кнопка. Что-то простое, например: Document.Properties["Test1"] = newValue
или даже: Document.Properties[changingProperty] = newValue
, позволяющее сделать код более пригодным для повторного использования.
Затем вы также вставляете Javascript в текстовую область для эффекта: $("#VeryLongSpotfireControlID").click();
Это должно имитировать нажатие на элемент управления действием, что, в свою очередь, запускает скрипт Python для обновления значения. Просто будьте осторожны, чтобы не использовать этот подход, когда это приведет к перезагрузке HTML текстовой области, так как это повторно запустит Javascript, создавая бесконечный цикл.
Я считаю, что нашел возможное решение/обходной путь для этой проблемы, полностью основанный на чистом JavaScript (поскольку TIBCO удалил jQuery, начиная с Spotfire X). Решение состоит в том, чтобы принудительно имитировать нажатие клавиши Enter, фокусируя поле ввода, чтобы инициировать обновление свойства документа. (Функция данных и R не требуются)
HTML (Элемент SpotfireControl представляет собой однострочное поле ввода для Doc. Prop.):
<div id="container"><SpotfireControl id="b8534f13dc62416db6d4eaab16030f5e" /></div>
JS (фокус и размытие могут больше не понадобиться для этого решения, но я все еще сохраняю их на всякий случай):
const inputConfirmationEvent = new KeyboardEvent("keypress", {
keyCode: 13,
bubbles: true,
cancelable: false
});
var elem = document.querySelector("#container input");
elem.value = "stringValue";
elem.blur();
elem.focus();
document.querySelector("#container input").dispatchEvent(inputConfirmationEvent);
Надеюсь, это поможет кому-то.
Лучший, Аарон