Изменить значение свойств документа Spotfire с помощью javascript

Я хочу изменить значение, присвоенное свойству документа, в Spot Fire. Допустим, я создал новое свойство документа под названием «Test1» в виде строки и присвоил ему значение «a». Есть ли способ изменить это значение с помощью Javascript каждый раз, когда я загружаю панель управления Spotfire?


person Drake    schedule 23.05.2016    source источник
comment
Если приведенный ниже ответ сработал для опубликованного вопроса, примите его или добавьте любые поясняющие комментарии, которые вам нужны :)   -  person scsimon    schedule 07.06.2016


Ответы (4)


Я не знаю, как использовать для этого JavaScript, но вы можете назначить свойство документа string с помощью пользовательского выражения (если это поле со списком) или запускать скрипт IronPython каждый раз при изменении значения. Таким образом, вы можете установить выражение на текущую дату, datetimenow(), а затем каждый раз, когда оно загружается, скрипт IronPython будет запускаться. Однако я не понимаю, зачем вам для этого нужен контроль свойств.

Я полагаю, это действительно зависит от того, что вы хотите установить для свойства документа. Это данные из ваших таблиц? Вывод из сложного кода? Все это нужно учитывать.

person scsimon    schedule 23.05.2016
comment
Спасибо за быстрый ответ. Поэтому я хочу запускать скрипт ironpython всякий раз, когда загружается визуализация. Я новичок в Spotfire. я видел несколько ссылок в Интернете, где люди обсуждают эту проблему, но я не могу воспроизвести то же решение на своем конце. Итак, моя идея заключалась в том, что каким-то образом я буду запускать javascript всякий раз, когда загружается панель инструментов, где я изменю свойство документа, которое я создал, что в конечном итоге запустит железный код Python. Пожалуйста, дайте мне знать, если вы можете помочь в этом вопросе - person Drake; 24.05.2016
comment
похоже, что вопрос, который вы задали здесь, не тот вопрос, на который вам нужен ответ. я предлагаю закрыть этот вопрос и создать новый. - person niko; 24.05.2016

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) Этот сценарий изменит значение свойства документа на «после» всякий раз, когда вы открываете файл.

person Ashish Kumar    schedule 12.10.2016
comment
Это отлично работает для меня, я использую Spotfire 7.8. - person noname; 15.11.2017

Судя по вашему комментарию, вы можете написать этот код на Python и прикрепить скрипт к элементу управления действием, т.е. Ссылка или кнопка. Что-то простое, например: Document.Properties["Test1"] = newValue или даже: Document.Properties[changingProperty] = newValue, позволяющее сделать код более пригодным для повторного использования.

Затем вы также вставляете Javascript в текстовую область для эффекта: $("#VeryLongSpotfireControlID").click();

Это должно имитировать нажатие на элемент управления действием, что, в свою очередь, запускает скрипт Python для обновления значения. Просто будьте осторожны, чтобы не использовать этот подход, когда это приведет к перезагрузке HTML текстовой области, так как это повторно запустит Javascript, создавая бесконечный цикл.

person HalcyonicDays    schedule 07.10.2016

Я считаю, что нашел возможное решение/обходной путь для этой проблемы, полностью основанный на чистом 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);

Надеюсь, это поможет кому-то.

Лучший, Аарон

person Aaron Cediel    schedule 22.10.2019