如何为所有 Cognos 10 报表创建全局样式?

Posted

技术标签:

【中文标题】如何为所有 Cognos 10 报表创建全局样式?【英文标题】:How Do I Create A Global Style for All Cognos 10 Reports? 【发布时间】:2011-03-04 13:55:14 【问题描述】:

我的团队一直致力于创建仪表板和追溯报告。我们已经过了概念验证阶段,现在正在努力构建“生产就绪”报告。在我们的会议上,有人提出报告的整体样式应该从 Cognos 的默认设置中更改。

我们开始了解 Cognos 的皮肤系统。我们看到在报表显示和门户中使用的门户和 UI 元素有皮肤。这不一定是我们想要的。理想情况下,我们希望能够将门户更改为公司品牌,并更改列表和交叉表的外观(以及实际报告的其他元素)。

我能够查看为报告生成的页面源代码,发现它包含来自以下方面的样式:

cognos\c10_64\webcontent\schemas

在浏览 webcontent 目录时,我还发现了这条路径:

cognos\c10_64\webcontent\reportstyles

这两个路径都包含名称相似的 css 文件。报表 html 包含的样式指向“schemas”目录,但是我的逻辑思维自己愿意相信“reportstyles”目录在 Cognos 报表显示中的某处使用,即使我没有看到它包含在任何页面源中我看过了。

我已经开始使用一个系统对“模式”路径中的 css 进行修改,该系统获取包含的 css 文件,从中复制 css 并将其放入“xxx_system.css”文件中,然后包含该文件原始css文件中的文件。

此过程有效,我们可以看到更改,但我们仍然想知道是否有更好或更“正确”的方法来执行此操作。谁能详细说明对实际报告进行皮肤/样式设置的最佳方式?

【问题讨论】:

【参考方案1】:

我定制 UI 的方法明显不同 - 想象一下,我进入一家公司,他们在 6 年多的时间里一直在做同样的事情,我想开始改变一切。遇到了一些阻力,所以我希望我的经验可以帮助您入门。

我拥有强大的 UI 基础,并立即想将我的知识贡献给我们正在设计的报告。这需要机智,因为我想展示精心设计的 UI 的价值,而不会让使用它的每个人感到震惊/害怕(改变逆境等)。我通过在报告中工作而不是在 Cognos 文件本身来处理这个问题。

从您开始使用核心文件的那一刻起,无论它们是 CSS、javascript 还是 CGI 本身,都存在直接且明显的风险,即在升级时它会完全中断。我通过在我的报告中创建 HTML 项目并从那里调用资源来解决这个问题。例如,这个 HTML 项目几乎出现在我的报告的每个标题中:

<link type="text/css" href="cognos8/common/css/ui-lightness/jquery-ui-1.8.5.custom.css" rel="Stylesheet" />
<link type="text/css" href="custom.css" rel="Stylesheet" />
<script type="text/javascript"
 src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript"
 src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/jquery-ui.min.js"></script>
<script type="text/javascript">
jQuery.noConflict();
jQuery(document).ready(function() 
); // End Ready
</script>

所以现在我可以访问 jQuery、UI 框架和其他一切。我在我的custom.css 中指定覆盖并从那里构建我的外观。这可能看起来很麻烦,但 IBM 有升级主要版本和完全消除命名约定和功能的诀窍,所以如果您的 CSS 选择器关闭,它会“默认”为 IBM 的原始样式。

这就是我不得不绕过它的方法,我不完全确定这是最好的方法。我一直在使用我所拥有的东西,即无法访问服务器文件或类似的东西。请认为这是一种超级安全的方法。

【讨论】:

我偶然发现了一篇提到这一事实的 Cognos 文章。我找不到链接,但基本上它说明了同一点:升级很可能会破坏样式。您的建议已被提出,但我们担心当我们将此模块与我们的开箱即用报告一起交给我们的客户时,他们会希望能够让他们的临时报告与我们提供的报告相同。让他们将其包含在所有报告中可能会有些困难。 是的,向客户移交或发行完全是另一回事。不过我有一些有专业知识的朋友,我会看看能不能让他们加入:)【参考方案2】:

我现在正在使用 Cognos 10.1 并准备发布。我处理安装、配置和任何调整的方式是从修订控制系统中提取数据的自动构建/配置过程。这样,即使在升级时,我也不会丢失任何自定义,并且可以轻松地合并升级中的更改。

【讨论】:

您能否编辑您的答案以更详细地解释您在做什么。我不明白您在源代码管理中编辑的内容。您是否正在编辑 Cognos 用于安装的软件包中的某些内容?我正在使用 NSIS 安装程序覆盖我在已安装的 Cognos 部署中修改的文件。【参考方案3】:

您完全可以使用支持 Cognos 蒙皮系统更改交叉表和列表的外观。我为以前的雇主对 Cognos 进行了全面的外观大修,其中包括更改动态元素的外观。

如果您查看 GlobalReportStyles.css 中的默认样式,所有这些样式都可以在您的皮肤中的自定义 CSS 文件中被覆盖。该方法比直接修改 GlobalReportStyles.css 更安全,因为自定义皮肤目录不会被升级修改,但全局样式表肯定会。

很遗憾,您无法确定您通过皮肤工具创建的任何修改在不同版本之间呈现完全相同的方式。 Cognos 可以重新排列 UI 或调整整体外观以破坏您的更改。然而,这是我所知道的对默认 Cognos 对象有效地创建通用、自动的外观和感觉修改的唯一方法。

【讨论】:

是否有可能以某种方式对出现在 iframe 中的 cognos 报告进行样式设置。假设 cognos 报告安装在不同的域上,而我的域使用 iframe 来显示报告。 cognos 中是否有任何设置允许跨域进行样式设置?

以上是关于如何为所有 Cognos 10 报表创建全局样式?的主要内容,如果未能解决你的问题,请参考以下文章

各位,cognos active report和固定报表有啥区别

cognos安装和配置即席报表流程

如何为 QML 创建一个动态的全局主题?

cognos中reportstudio怎么创建报表展示版本

如何为某些组件全局添加样式

如何为所有 MUI 组件全局禁用 box-shadow?