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