JSL 腳本顯示窗口中類似 HTML 的引用<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />您好,我有一個腳本,可以對給定的數據集進行分析,並在報告的前幾頁上輸出摘要(使用帶有各種顯示對象的new window() 命令),然後是N 個選定的N 頁腳本分析參數。 所有這些都在同一個報告中,我利用分頁符功能來分隔每個參數。 N 可以是任何數字...只是幾個或一千個左右的參數/頁面。是否可以有超鏈接,可以從第一頁左右的摘要鏈接並指向此報告中的目標? 它可以指向我可以嘗試跟踪的編碼目標或頁碼。首選編碼參考...具有 1000 個參數,摘要將包含幾頁,實際上我不確定我是否可以跟踪頁碼。
我見過鏈接(例如幫助菜單 -> 示例數據 -> 所有類別都有它們),但它們會指向一個文件,或者我認為其他一些協議地址也可以工作 - open() 與 web() 命令。但是是否可以對其進行編碼,以便我可以鏈接並指向同一報告窗口中的某個位置?
請注意,因為我廣泛使用動態控制/縮放軸框和動態計算,所以需要在本機“new window()”輸出中完成,而不是 HTML5 導出。
謝謝,
麥克風
回复:JSL 腳本顯示窗口中類似 HTML 的引用我今天在瀏覽 jmp 腳本索引時看到了“scroll box()”顯示框功能,這讓我想到我可以將其用作偽超鏈接。 我只需要一些“可點擊”的東西,點擊時會採取行動。我已經在報告頂部有一個匯總錶框(),所以我需要做的就是使錶框的行可選擇,以及 << set selectable rows() 和 << set row change 函數的組合() 就是這樣做的。 當選擇更改時,函數運行,代碼確定選擇哪一行,只要繪圖順序與表格順序相對應,我們只需滾動到第 i 個上下文框(或任何顯示框)的引用。 我嘗試滾動到“db[i]”,其中 db[i] = distribution(param[i],.......) 但這不起作用,但正確的顯示框起作用了。
其中一些代碼直接是我們的腳本索引,特別是 << set row change function()。 “this”變量讓我感到困惑,但它只是表格框本身,當行選擇更改時,它似乎會傳遞給函數。 例如,如果您嘗試將“this”附加到 vlb,它只會在 vlb 底部放置另一個 table box()。
處理不好的一件事是,如果使用 ctrl + 單擊(在 Mac 上單擊 cmd)選擇多行,但我認為這沒什麼大不了的。 可以使用其他方法...任何像按鈕框或change()上的<<之類的東西都可以用來滾動到目標。 例如,列錶框。
這可能已經發布了,但我認為值得分享。我只用了7年時間就弄清楚了。 希望你覺得它有用。
Names Default To Here( 1 );
//dummy data table
dt = Open( "$SAMPLE_DATA/Semiconductor Capability.jmp" );
// get col list
colList = {};
for( i = 1, i<=20, i++,
colList[i] = as column(dt, 4 + i) << get name();
);
// new window, table box with selectable rows
nw = New Window( "Example",
vlb = vlistbox(
Outline Box( "Table",
tb = Table Box(
String Col Box( "names", colList ),
<<SET selectable="" rows=""> 0,
nw << scroll window(cb[itemNum[1]]);
);
)
);
</SET>
回复:JSL 腳本顯示窗口中類似 HTML 的引用謝謝溫迪。 我將與其他一些用戶一起審查,看看這是否可以。 對於數百個參數,它仍然會有點滾動,但應該不會太糟糕。
-麥克風
回复:JSL 腳本顯示窗口中類似 HTML 的引用嗨傑夫,
我花了一些時間檢查色譜柱切換器。 探索峰會上有人提到過它(在你擔任遊戲節目主持人後不久) ),但我沒有意識到它可以添加到任何平台。我真的很喜歡播放/改變速度功能。 但是,我的腳本還有一些其他嵌入式功能,其中之一是允許用戶使用單選按鈕縮放發行版上的窗口大小(應用程序是生產中的半導體電氣測試)。 我有一個按鈕可以將所有參數的軸縮放到現有限制(以及其他窗口大小,例如所有數據、低側影響、高側影響、中值 +/- N * IQR 等)。 在用戶設置時保留這些最小/最大值很重要;看起來列切換器重置了這個。其他功能包括同時使用 Anova 和 GR&R 進行分組的能力。
但對於我使用的這個特定功能,我將所有最小/最大軸設置為相應的規格限制。 這意味著顯示的分佈的唯一部分是從最小限製到最大限制(我們測試中的最小/最大規格);這用作起點,以便所有參數都以窗口的最小/最大=最小/最大規格限制開始。每個單獨的參數也具有這些軸縮放控件,或者用戶可以使用鼠標來縮放軸。用戶進去縮放感興趣的參數後,底部有一個按鈕可以生成極限表。 這會抓取所有最小/最大軸值並輸出到一個表,然後可以將其導入到測試程序中。 事實證明,這是調整許多限制的有效方法(特別是使用 GUI 選項來僅繪製前 N 個產量違規者)。我們有其他腳本通過所需的 cpk 或任何數學設置限制,但有時有太多的分佈不理想,而這種方法效果很好。
這是輸出的示例,在本例中僅繪製了一個參數,並且我沒有將其分組。單選按鈕將縮放軸,底部的按鈕框將檢索所有最小/最大值並生成表格。
因為這個腳本用於一些不同的事情,所以我有點不願意完全重寫它。但我會看看在不久的將來我是否可以以某種方式使用該列切換器。

謝謝,
麥克風
回复:JSL 腳本顯示窗口中類似 HTML 的引用麥克風,
前面的 TabBox() 示例應該按照您的需要保存在 PDF 中,但這並沒有提供您正在尋找的長報告。所以這是您的另一個選擇。有關詳細信息,請參閱嵌入的註釋。
溫蒂
dt = Open( "$SAMPLE_DATA\Fitness.jmp" );
colList = dt << Get Column Names( Continuous, String );
/* New Window with a Summary OutlineBox and a separate Analyses OutlineBox */
nw = New Window( "Example 2", ob = Outline Box( "Summary" ), Outline Box( "Analyses", vl = V List Box() ) );
/* Initialize a list for storing references to the Distributions */
dist = {};
/* Loop through each column
- append each Distribution to the Analyses Outline Box
- append a button link to expand the specified Distribution OutlineBox */
For( i = 1, i <= N Items( colList ), i++,
vl << Append( dist = Distribution( Continuous Distribution( Column( Column( colList ) ), Horizontal Layout( 1 ), Vertical( 0 ) ) ) );
var = colList || " Distribution";
Report( dist )[Outline Box( 1 )] << Set Title( var );
Eval(
Eval Expr(
ob << Append(
bb = Button Box( var,
Current Window()[Expr( var )] << Close All Like This;
Current Window()[Expr( var )] << Set Open( 1 );
)
)
)
);
bb << UnderlineStyle( 1 );
);
/* Add a button to open all the OutlineBoxes and save the output as PDF */
ob << Append(
Button Box( "Save All to PDF",
Current Window()["Analyses"] << Open All Below;
Current Window() << Set Page Setup( Scale(.75));
path = Pick File( "Select PDF File", "E:\Trash", {"PDF|pdf"}, 1, 1, "Example 2.pdf" );
Current Window() << SavePDF( path );
Open( path );
)
);
回复:JSL 腳本顯示窗口中類似 HTML 的引用我想我會用列切換器在這樣的情況下。
它將允許您的用戶選擇他們想要的分析,而您無需編寫額外的腳本來更新另一個窗口。
如果您想要 PDF 選項,您可以在窗口上放置一個按鈕,該按鈕將在新的不可見窗口中運行所有參數並將其另存為 PDF。
-傑夫
回复:JSL 腳本顯示窗口中類似 HTML 的引用嗨溫迪,
我一直在考慮將這些作為一種解決方法,但我喜歡將全套參數保留在一份很長的報告中以進行報告存檔的想法。 我可以打印為 pdf 供某人(或者很可能沒有人)稍後查看。 此外,對於 1000 多個參數,有時能夠快速向下翻頁並僅目視掃描看起來不正常的分佈(傾斜、雙模態、異常值)是件好事。
我的想法是創建與現在相同的窗口,但在第一次單擊摘要中的鏈接(參數名稱)時也打開一個單獨的窗口。 在這個窗口中將有一組分析和輸出,這些分析和輸出基本上與我在主窗口中的相同,除了在輔助窗口中它只是一個參數,而在主窗口中,它將是完整的一組參數。許多參數。 單擊主窗口中的後續鏈接將從輔助窗口中刪除前一個參數並創建新參數。有幾個單選按鈕和其他控件以及已完成的軸縮放,因此我必須獲取此信息並將其轉發回主窗口的相應參數,但它可能會起作用。我認為唯一的例外是用鼠標手動縮放軸。我不認為有與此相關的事件函數(例如 OnAxisChange()),但我認為可以實現“完成”按鈕來獲取新的最小值/最大值並將其扔回主窗口的參數中軸。
謝謝,
麥克風
回复:JSL 腳本顯示窗口中類似 HTML 的引用嗨,邁克。
您考慮過使用 TabBox() 嗎?有一種稱為“組合”的選項卡樣式,它會生成每個選項卡名稱的下拉菜單,以便用戶可以選擇並直接轉到該選項卡。這是一個簡單的例子:
/* Open sample data and obtain a list of column names */
dt = Open( "$SAMPLE_DATA\Fitness.jmp" );
colList = dt << Get Column Names( Continuous, String );
/* Store the number of desired tabs in a variable */
nTabs = N Items( colList );
/* Create a New Window containing an empty TabBox */
New Window( "Example", tb = Tab Box() );
/* Use a For loop to add the desired number of tabs to the TabBox */
For( i = 1, i <= nTabs, i++,
tb << Add( colList || " Distribution",
V List Box(
Distribution( Continuous Distribution( Column( Column( colList ) ), Horizontal Layout( 1 ), Vertical( 0 ) ) )
)
)
);
tb << Set Selected( 1 );
tb << Set Style( "combo" );