你好,
我从未创建过比排列框更大的报表,也从未创造性地将内容排列在二维框中。我有一个更大的数据集,想创建一个交互式 HTML 输出。我最初的设计是一个带有子选项卡系统的 TAB 报表。假设有 3 个选项卡,3 个子选项卡,每个子选项卡有 3 个显示面板。我希望为每个需要的图表调用一个函数。整个报表将共享多个图表。
我尝试用外部结构文件创建这个TAB报表,但我缺乏这方面的技能。我最大的问题不是报表结构,而是如何在其中添加图表。下面的示例是一个使用函数调用的拙劣尝试。问题是我需要对几个表进行子集化并关闭它们,这带来了问题。我需要一种方法来构建一个包含多个选项卡和子选项卡的报表,并将图表传递给它。
txnelson:编辑了条目,将列出的 JSL 放入 JSL 显示框中,使用“JSL”图标
file_list = {"inspections.csv", "recipes.csv"};
area_list = {"IS", "MFC"};
Recipe1 = Open( directory || "MFC_Module_Raw_Data.jmp" );
REC_DUR_PLOT = Function( {},
Recipe1 << New Column( "Date_Hour",
Numeric,
"Continuous",
Format( "m/d/y h:m", 19 ),
Input Format( "m/d/y h:m" ),
Formula( :Date + Hour( :Time ) * 3600 ),
Lock( 0 )
);
dt2 = Recipe1 << Summary( Group( :Tool, :Date_Hour ), N( :Carrier ID ) );
plot1 = Graph Box(
dt2 << Graph Builder(
Size( 662, 912 ),
Show Control Panel( 0 ),
Variables(
X( :Date_Hour ),
Y( :Name( "N(Carrier ID)" ) ),
Group Y( :Tool ),
Color( :Tool )
),
Elements( Points( X, Y, Legend( 11 ) ), Smoother( X, Y, Legend( 12 ) ) ),
SendToReport(
Dispatch(
{},
"N(Carrier ID)",
ScaleBox,
{Add Ref Line( 20, "Solid", "Medium Dark Red", "Target", 2 )}
)
)
);
);
//RP1 << append (plot1);
Close( dt2, No Save );
);
REC_DUR_PLOT();
New Window( "Weekly Report",
tb1 = Tab Box(
"CC1 Collective",
Tab Box(
"CC1 Recipe Duration [sec]",
RP1 = Panel Box( "Process Run Time",
REC_DUR_PLOT();
),
"CC1 Chamber Temperature [C]",
V List Box(
Panel Box( "Avg Temperature",
Text Box( "Avg Temperature" ),
),
Panel Box( "Min Temperature",
Text Box( "Min Temperature" ),
),
Panel Box( "Max Temperature",
Text Box( "Max Temperature" ),
),
),
"CC1 Water Flow [l/min]",
V List Box(
Panel Box( "Avg Water Flow",
Text Box( "Avg Water Flow" ),
),
Panel Box( "Min Water Flow",
Text Box( "Min Water Flow" ),
),
Panel Box( "Max Water Flow",
Text Box( "Max Water Flow" ),
),
),
"CC1 Water Volume [L]",
Panel Box( "Water Volume in Liters",
Text Box( "Water Volume in Liters" ),
),
"CC1 Water Temperature [C]",
V List Box(
Panel Box( "Avg Temperature",
Text Box( "Avg Temperature" ),
),
Panel Box( "Min Temperature",
Text Box( "Min Temperature" ),
),
Panel Box( "Max Temperature",
Text Box( "Max Temperature" ),
),
),
"CC1 Exhaust Air Flow [m3/h]",
V List Box(
Panel Box( "Avg Exhaust Air Flow",
Text Box( "Avg Exhaust Air Flow" ),
),
Panel Box( "Min Exhaust Air Flow",
Text Box( "Min Exhaust Air Flow" ),
),
Panel Box( "Max Exhaust Air Flow",
Text Box( "Max Exhaust Air Flow" ),
),
),
"CC1 Exhaust Air Volume [m3]",
Panel Box( "Exhaust Flow in m3",
Text Box( "Exhaust Flow in m3" ),
),
),
"CC2 Collective",
Tab Box(
"CC2 Recipe Duration [sec]",
Panel Box( "Process Run TIme",
Text Box( "Process Run Time" ),
),
"CC2 Chamber Temperature [C]",
V List Box(
Panel Box( "Avg Temperature",
Text Box( "Avg Temperature" ),
),
Panel Box( "Min Temperature",
Text Box( "Min Temperature" ),
),
Panel Box( "Max Temperature",
Text Box( "Max Temperature" ),
),
),
"CC2 Water Flow [l/min]",
V List Box(
Panel Box( "Avg Water Flow",
Text Box( "Avg Water Flow" ),
),
Panel Box( "Min Water Flow",
Text Box( "Min Water Flow" ),
),
Panel Box( "Max Water Flow",
Text Box( "Max Water Flow" ),
),
),
"CC2 Water Volume [L]",
Panel Box( "Water Volume in Liters",
Text Box( "Water Volume in Liters" ),
),
"CC2 Water Temperature [C]",
V List Box(
Panel Box( "Avg Temperature",
Text Box( "Avg Temperature" ),
),
Panel Box( "Min Temperature",
Text Box( "Min Temperature" ),
),
Panel Box( "Max Temperature",
Text Box( "Max Temperature" ),
),
),
"CC2 Exhaust Air Flow [m3/h]",
V List Box(
Panel Box( "Avg Exhaust Air Flow",
Text Box( "Avg Exhaust Air Flow" ),
),
Panel Box( "Min Exhaust Air Flow",
Text Box( "Min Exhaust Air Flow" ),
),
Panel Box( "Max Exhaust Air Flow",
Text Box( "Max Exhaust Air Flow" ),
),
),
"CC2 Exhaust Air Volume [m3]",
Panel Box( "Exhaust Flow in m3",
Text Box( "Exhaust Flow in m3" ),
),
),
"CC3 Collective",
Tab Box(
"CC3 Recipe Duration [sec]",
Panel Box( "Process Run TIme",
Text Box( "Process Run Time" ),
),
"CC3 Chamber Temperature [C]",
V List Box(
Panel Box( "Avg Temperature",
Text Box( "Avg Temperature" ),
),
Panel Box( "Min Temperature",
Text Box( "Min Temperature" ),
),
Panel Box( "Max Temperature",
Text Box( "Max Temperature" ),
),
),
"CC3 Water Flow [l/min]",
V List Box(
Panel Box( "Avg Water Flow",
Text Box( "Avg Water Flow" ),
),
Panel Box( "Min Water Flow",
Text Box( "Min Water Flow" ),
),
Panel Box( "Max Water Flow",
Text Box( "Max Water Flow" ),
),
),
"CC3 Water Volume [L]",
Panel Box( "Water Volume in Liters",
Text Box( "Water Volume in Liters" ),
),
"CC3 Water Temperature [C]",
V List Box(
Panel Box( "Avg Temperature",
Text Box( "Avg Temperature" ),
),
Panel Box( "Min Temperature",
Text Box( "Min Temperature" ),
),
Panel Box( "Max Temperature",
Text Box( "Max Temperature" ),
),
),
"CC3 Exhaust Air Flow [m3/h]",
V List Box(
Panel Box( "Avg Exhaust Air Flow",
Text Box( "Avg Exhaust Air Flow" ),
),
Panel Box( "Min Exhaust Air Flow",
Text Box( "Min Exhaust Air Flow" ),
),
Panel Box( "Max Exhaust Air Flow",
Text Box( "Max Exhaust Air Flow" ),
),
),
"CC3 Exhaust Air Volume [m3]",
Panel Box( "Exhaust Flow in m3",
Text Box( "Exhaust Flow in m3" ),
),
),
"AUD4 Collective",
Tab Box(
"AUD4 Recipe Duration [sec]",
Panel Box( "Process Run TIme",
Text Box( "Process Run Time" ),
),
"AUD4 EndPoint Pressure [kpa]",
V List Box(
Panel Box( "Min EndPoint Pressure",
Text Box( "Min EndPoint Pressure" ),
),
Panel Box( "Avg EndPoint Pressure",
Text Box( "Avg EndPoint Pressure" ),
),
Panel Box( "Max EndPoint Pressure",
Text Box( "Max EndPoint Pressure" ),
),
),
"AUD4 Chamber Temperature [C]",
V List Box(
Panel Box( "Avg Temperature",
Text Box( "Avg Temperature" ),
),
Panel Box( "Min Temperature",
Text Box( "Min Temperature" ),
),
Panel Box( "Max Temperature",
Text Box( "Max Temperature" ),
),
),
"AUD4 N2 Flow [m3/h]",
V List Box(
Panel Box( "Avg N2 Flow",
Text Box( "Avg N2 Flow" ),
),
Panel Box( "Min N2 Flow",
Text Box( "Min N2 Flow" ),
),
Panel Box( "Max N2 Flow",
Text Box( "Max N2 Flow" ),
),
),
"AUD4 N2 Volume [m3]",
Panel Box( "N2 Volume in m3",
Text Box( "N2 Volume in m3" ),
),
),
"AUD5 Collective",
Tab Box(
"AUD5 Recipe Duration [sec]",
Panel Box( "Process Run TIme",
Text Box( "Process Run Time" ),
),
"AUD5 EndPoint Pressure [kpa]",
V List Box(
Panel Box( "Min EndPoint Pressure",
Text Box( "Min EndPoint Pressure" ),
),
Panel Box( "Avg EndPoint Pressure",
Text Box( "Avg EndPoint Pressure" ),
),
Panel Box( "Max EndPoint Pressure",
Text Box( "Max EndPoint Pressure" ),
),
),
"AUD5 Chamber Temperature [C]",
V List Box(
Panel Box( "Avg Temperature",
Text Box( "Avg Temperature" ),
),
Panel Box( "Min Temperature",
Text Box( "Min Temperature" ),
),
Panel Box( "Max Temperature",
Text Box( "Max Temperature" ),
),
),
"AUD5 N2 Flow [m3/h]",
V List Box(
Panel Box( "Avg N2 Flow",
Text Box( "Avg N2 Flow" ),
),
Panel Box( "Min N2 Flow",
Text Box( "Min N2 Flow" ),
),
Panel Box( "Max N2 Flow",
Text Box( "Max N2 Flow" ),
),
),
"AUD5 N2 Volume [m3]",
Panel Box( "N2 Volume in m3",
Text Box( "N2 Volume in m3" ),
),
),
"Facility Collective",
Tab Box(
"CDA LP Temperature [C]",
V List Box(
Panel Box( "Avg Temperature",
Text Box( "Avg Temperature" ),
),
Panel Box( "Min Temperature",
Text Box( "Min Temperature" ),
),
Panel Box( "Max Temperature",
Text Box( "Max Temperature" ),
),
),
"CDA HP Temperature [C]",
V List Box(
Panel Box( "Avg Temperature",
Text Box( "Avg Temperature" ),
),
Panel Box( "Min Temperature",
Text Box( "Min Temperature" ),
),
Panel Box( "Max Temperature",
Text Box( "Max Temperature" ),
),
),
"CDA LP Pressure [kpa]",
V List Box(
Panel Box( "Min LP Pressure",
Text Box( "Min LP Pressure" ),
),
Panel Box( "Avg LP Pressure",
Text Box( "Avg LP Pressure" ),
),
Panel Box( "Max LP Pressure",
Text Box( "Max LP Pressure" ),
),
),
"CDA HP Pressure [kpa]",
V List Box(
Panel Box( "Min HP Pressure",
Text Box( "Min HP Pressure" ),
),
Panel Box( "Avg HP Pressure",
Text Box( "Avg HP Pressure" ),
),
Panel Box( "Max HP Pressure",
Text Box( "Max HP Pressure" ),
),
),
"Facility N2 Volume [m3]",
Panel Box( "N2 Volume in m3",
Text Box( "N2 Volume in m3" ),
),
),
),
);
文件列表 = {“inspections.csv”,“recipes.csv”};
区域列表 = {“IS”,“MFC”};
Recipe1 = 打开(目录 || “MFC_Module_Raw_Data.jmp” );
REC_DUR_PLOT = 函数({},
配方1 << 新列(“日期_小时”,
数字,
“连续的”,
格式( "m/d/yh:m", 19 ),
输入格式( "m/d/yh:m" ),
公式(:日期 + 小时(:时间)* 3600),
锁定( 0 )
(此处似有缺失,请提供更正后的文本)。
dt2 = 配方1 << 摘要(组(:工具,:日期时间),N(:承运商ID));
plot1 = 图形框(dt2 << 图形生成器(
尺寸(662,912),
显示控制面板( 0 ),
变量(
X(:日期_小时),
Y( :名称( "N(承运商 ID)" ) ),
Y 组(:工具),
颜色(:工具)
),
元素(点(X,Y,图例(11)),平滑器(X,Y,图例(12))),
发送至报告(
派遣(
{},
“N(运营商 ID)”,
比例盒,
{添加参考线(20,“实心”,“中深红色”,“目标”,2)}
)
)
(此处似有缺失,请提供更正后的文本)。
(此处似有缺失,请提供更正后的文本)。
//RP1 << 附加(plot1);
关闭(dt2,不保存);
(此处似有缺失,请提供更正后的文本)。
记录持续时间图();
新窗口(“周报”,
tb1 = 标签框(
“CC1集体”,
标签框(
“CC1 配方持续时间[秒]”,
RP1 = 面板框(“进程运行时间”,
记录持续时间图();
),
“CC1 腔体温度 [C]”,
虚拟列表框(
面板框(“平均温度”,
文本框(“平均温度”),
),
面板盒(“最低温度”,
文本框(“最低温度”),
),
面板盒(“最高温度”,
文本框(“最高温度”),
),
),
“CC1 水流量 [l/min]”,
虚拟列表框(
面板框(“平均水流量”,
文本框(“平均水流量”),
),
面板盒(“最小水流量”,
文本框(“最小水流量”),
),
配电箱(“最大水流量”,
文本框(“最大水流量”),
),
),
"CC1 水量 [L]",
面板盒(“水量(升)”,
文本框(“水量(升)”),
),
"CC1 水温 [C]",
虚拟列表框(
面板框(“平均温度”,
文本框(“平均温度”),
),
面板盒(“最低温度”,
文本框(“最低温度”),
),
面板盒(“最高温度”,
文本框(“最高温度”),
),
),
“CC1 排气流量 [m3/h]”,
虚拟列表框(
面板盒(“平均排气流量”,
文本框(“平均排气流量”),
),
配电箱(“最小排气风量”,
文本框(“最小排气风量”),
),
配电箱(“最大排气流量”,
文本框(“最大排气流量”),
),
),
“CC1排气量[m3]”,
面板盒(“排气流量,单位:m3”,
文本框(“排气流量,单位:立方米”),
),
),
“CC2集体”,
标签框(
“CC2 配方持续时间 [秒]”,
面板框(“进程运行时间”,
文本框(“流程运行时间”),
),
“CC2 腔体温度 [C]”,
虚拟列表框(
面板框(“平均温度”,
文本框(“平均温度”),
),
面板盒(“最低温度”,
文本框(“最低温度”),
),
面板盒(“最高温度”,
文本框(“最高温度”),
),
),
“CC2 水流量 [l/min]”,
虚拟列表框(
面板框(“平均水流量”,
文本框(“平均水流量”),
),
面板盒(“最小水流量”,
文本框(“最小水流量”),
),
配电箱(“最大水流量”,
文本框(“最大水流量”),
),
),
"CC2 水量 [L]",
面板盒(“水量(升)”,
文本框(“水量(升)”),
),
"CC2 水温 [℃]",
虚拟列表框(
面板框(“平均温度”,
文本框(“平均温度”),
),
面板盒(“最低温度”,
文本框(“最低温度”),
),
面板盒(“最高温度”,
文本框(“最高温度”),
),
),
“CC2 排气流量 [m3/h]”,
虚拟列表框(
面板盒(“平均排气流量”,
文本框(“平均排气流量”),
),
配电箱(“最小排气风量”,
文本框(“最小排气风量”),
),
配电箱(“最大排气流量”,
文本框(“最大排气流量”),
),
),
“CC2排气量[m3]”,
面板盒(“排气流量,单位:m3”,
文本框(“排气流量,单位:立方米”),
),
),
“CC3集体”,
标签框(
“CC3 配方持续时间[秒]”,
面板框(“进程运行时间”,
文本框(“流程运行时间”),
),
“CC3 腔室温度 [C]”,
虚拟列表框(
面板框(“平均温度”,
文本框(“平均温度”),
),
面板盒(“最低温度”,
文本框(“最低温度”),
),
面板盒(“最高温度”,
文本框(“最高温度”),
),
),
“CC3 水流量 [l/min]”,
虚拟列表框(
面板框(“平均水流量”,
文本框(“平均水流量”),
),
面板盒(“最小水流量”,
文本框(“最小水流量”),
),
配电箱(“最大水流量”,
文本框(“最大水流量”),
),
),
"CC3 水量 [L]",
面板盒(“水量(升)”,
文本框(“水量(升)”),
),
"CC3 水温 [摄氏度]",
虚拟列表框(
面板框(“平均温度”,
文本框(“平均温度”),
),
面板盒(“最低温度”,
文本框(“最低温度”),
),
面板盒(“最高温度”,
文本框(“最高温度”),
),
),
“CC3 排气流量 [m3/h]”,
虚拟列表框(
面板盒(“平均排气流量”,
文本框(“平均排气流量”),
),
配电箱(“最小排气风量”,
文本框(“最小排气风量”),
),
配电箱(“最大排气流量”,
文本框(“最大排气流量”),
),
),
“CC3 排气量 [m3]”,
面板盒(“排气流量,单位:m3”,
文本框(“排气流量,单位:立方米”),
),
),
“AUD4 集体”
标签框(
“AUD4 配方持续时间[秒]”,
面板框(“进程运行时间”,
文本框(“流程运行时间”),
),
“AUD4 终点压力 [kpa]”,
虚拟列表框(
面板框(“最小端点压力”,
文本框(“最小终点压力”),
),
面板框(“平均端点压力”,
文本框(“平均终点压力”),
),
面板框(“最大端点压力”,
文本框(“最大终点压力”),
),
),
"AUD4 腔体温度 [C]",
虚拟列表框(
面板框(“平均温度”,
文本框(“平均温度”),
),
面板盒(“最低温度”,
文本框(“最低温度”),
),
面板盒(“最高温度”,
文本框(“最高温度”),
),
),
“AUD4 N2 流量 [m3/h]”,
虚拟列表框(
面板框(“平均 N2 流量”,
文本框(“平均 N2 流量”),
),
面板盒(“最小 N2 流量”,
文本框(“最小 N2 流量”),
),
面板盒(“最大 N2 流量”,
文本框(“最大 N2 流量”),
),
),
"AUD4 N2 体积 [m3]",
面板盒(“N2 体积,单位为 m3”,
文本框(“N2 体积,单位为立方米”),
),
),
“AUD5集体”,
标签框(
“AUD5 配方持续时间[秒]”,
面板框(“进程运行时间”,
文本框(“流程运行时间”),
),
“AUD5 终点压力 [kpa]”,
虚拟列表框(
面板框(“最小端点压力”,
文本框(“最小终点压力”),
),
面板框(“平均端点压力”,
文本框(“平均终点压力”),
),
面板框(“最大端点压力”,
文本框(“最大终点压力”),
),
),
"AUD5 腔体温度 [C]",
虚拟列表框(
面板框(“平均温度”,
文本框(“平均温度”),
),
面板盒(“最低温度”,
文本框(“最低温度”),
),
面板盒(“最高温度”,
文本框(“最高温度”),
),
),
“AUD5 N2 流量 [m3/h]”,
虚拟列表框(
面板框(“平均 N2 流量”,
文本框(“平均 N2 流量”),
),
面板盒(“最小 N2 流量”,
文本框(“最小 N2 流量”),
),
面板盒(“最大 N2 流量”,
文本框(“最大 N2 流量”),
),
),
"AUD5 氮气体积 [m3]",
面板盒(“N2 体积,单位为 m3”,
文本框(“N2 体积,单位为立方米”),
),
),
“设施集体”,
标签框(
“CDA LP 温度 [C]”,
虚拟列表框(
面板框(“平均温度”,
文本框(“平均温度”),
),
面板盒(“最低温度”,
文本框(“最低温度”),
),
面板盒(“最高温度”,
文本框(“最高温度”),
),
),
“CDA HP 温度 [C]”,
虚拟列表框(
面板框(“平均温度”,
文本框(“平均温度”),
),
面板盒(“最低温度”,
文本框(“最低温度”),
),
面板盒(“最高温度”,
文本框(“最高温度”),
),
),
“CDA LP 压力 [kpa]”,
虚拟列表框(
面板盒(“最小液化石油气压力”,
文本框(“最小液化石油气压力”),
),
面板框(“平均低压压力”,
文本框(“平均LP压力”),
),
面板盒(“最大液化石油气压力”,
文本框(“最大 LP 压力”),
),
),
“CDA HP 压力 [kpa]”,
虚拟列表框(
面板盒(“最小 HP 压力”,
文本框(“最小 HP 压力”),
),
面板框(“平均 HP 压力”,
文本框(“平均 HP 压力”),
),
面板盒(“最大 HP 压力”,
文本框(“最大 HP 压力”),
),
),
“设施 N2 体积 [m3]”,
面板盒(“N2 体积,单位为 m3”,
文本框(“N2 体积,单位为立方米”),
),
),
),
(此处似有缺失,请提供更正后的文本)。
我遇到了一个新问题,我想我可能需要选择其他方法来显示数据。TAB 追加功能可以正常工作,并且我自动创建了 TAB 结构;但是,为它们分配 ID 一直存在问题。
问题出在这条语句 ( tbxx << append( subtabnametemp = Tab Page Box( Title( subtabtemp ), testlist[x] = V List Box() ), )) 中,我尝试将一个空的 V List Box 赋值给我解析的列表中的变量。这样我就有了一个可以追加的指针。由于它是一个对象,所以它无法像我希望的那样工作。我根据列表创建了第一层,而不是根据字母顺序排列的汇总列表。
最初的思路是创建一个带有空容器的选项卡式结构,这样在分析过程中就可以添加空容器,因为图表数量很多。即使使用函数,由于多个分析结果相同,但数据集不同,这些数据集都是从原始大表中抽取的子集。
也许我只需要创建每一个单独的,并使用 HTML、PBI 或 SSRS 进行简化。
dt1 = Open( path || "报表制作器结构文件.csv" );
新窗口( "每周报告", tbx = Tab Box(), );
tablist = {“CC1 集体”,“CC2 集体”,“CC3 集体”,“AUD4 集体”,“AUD5 集体”,
“设施集体”
索引 = {tb1, tb2, tb3, tb4, tb5, tb6};
新窗口( "每周报告", tbx = Tab Box(), );
tbx << append( tb1 = 标签页框( 标题( tablist[1] ), ), );
tbx << append( tb2 = 标签页框( 标题( tablist[2] ), ), );
tbx << append( tb3 = 标签页框( 标题( tablist[3] ), ), );
tbx << append( tb4 = 标签页框( 标题( tablist[4] ), ), );
tbx << append( tb5 = 标签页框( 标题( tablist[5] ), ), );
tbx << append( tb6 = 标签页框( 标题( tablist[6] ), ), );
对于(y = 1,y <= N 个项目(tablist),y ++,
dt1 << 选择其中(dt1:TAB1 == tablist[y]);
dt2 = dt1 << 子集(选定行( 1 ),仅选定列( 0 ) );
汇总(子表列表 = By(dt2:TAB2));
汇总(subtabnamelist = By(dt2:TAB2Name));
汇总(sublablist = By(dt2:VLBName));
温度=索引[y];
temp << append( tbxx = Tab Box(), );
测试列表 = {};
dt9 = dt2 << 摘要(组(:VLBName));
测试列表 = {};
对于(w = 1,w <= N 行(dt9),w ++,
插入到(测试列表,解析(dt9:VLBName [w]));
(此处似有缺失,请提供更正后的文本)。
显示(测试列表);
对于(x = 1,x <= N 个项目(子表列表),x++,
subtabtemp = subtablist[x];
sublabtemp = 解析(sublablist[x]);
subtabnametemp = 解析(subtabnamelist[x]);
tbxx << append( subtabnametemp = 标签页框( 标题( subtabtemp ), testlist[x] = V 列表框() ), )
(此处似有缺失,请提供更正后的文本)。
关闭(dt2,不保存);
(此处似有缺失,请提供更正后的文本)。
gb1 = Graph Box("图形测试",);
vlb16 << 附加(gb1);