簡體   English   中英

使用javascript更改Spotfire文檔屬性值

[英]Change Spotfire Document Properties value using javascript

我想在現場射擊時更改分配給文檔屬性的值。 可以說我已經創建了一個新的文檔屬性“ Test1”作為字符串,並為其分配了值“ a”。 每次加載Spotfire儀表板時,是否可以使用Java腳本更改此值?

我不知道使用JavaScript的方式,但是您可以通過自定義表達式(如果是列表框)分配string文檔屬性,或者每次值更改時都運行IronPython腳本。 因此,您可以將表達式設置為當前日期datetimenow() ,然后每次加載IronPython腳本時就會觸發。 但是,我不明白為什么您需要為此進行屬性控制。

我想這真的取決於您希望將document屬性設置為什么。 是您表格中的數據嗎? 從復雜代碼輸出? 這些都是要考慮的事情。

1)使用要更改的文檔屬性創建輸入類型屬性控件。

2)編輯HTML,為父元素分配ID,例如“ testInput”。 然后在“編輯HTML”窗口中添加腳本,如下所示。

<span id="testInput"><SpotfireControl id="7db34e6c423240f59fc99e6b80fa23ec" /></span>


<script>
$("#testInput input").val("after");
$("#testInput input").focus();
$("#testInput input").blur();
</script>

3)每當您打開文件時,此腳本會將文檔屬性值更改為“ after”。

正如您的評論所暗示的,您可以做的就是用Python編寫此代碼,並將腳本附加到動作控件(即鏈接或按鈕)上。 一些簡單的東西,例如: Document.Properties["Test1"] = newValue或什至: Document.Properties[changingProperty] = newValue使代碼更可重用。

然后,將Javascript插入到文本區域中,以達到以下效果: $("#VeryLongSpotfireControlID").click();

哪個應該模擬動作控件上的點擊,然后依次觸發Python腳本來更新值。 請小心不要使用這種方法,因為它會導致重新加載文本區域HTML,因為這將重新觸發Javascript,從而造成無限循環。

我相信我已經找到了一個可能的解決方案/解決方案,完全基於純JavaScript(因為TIBCO從Spotfire X開始刪除了jQuery)。 解決方案是在聚焦輸入框時觸發模擬的Enter鍵,以觸發更新文檔屬性。 (無需數據功能和R)

HTML(SpotfireControl元素是文檔屬性的單行輸入框):

<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);

希望它可以幫助某人。

最好,亞倫

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM