×

二次开发-数据环境-给类增加仪表板

标签: 暂无标签
本帖最后由 adminlily 于 2020-12-15 16:34 编辑

在团队中添加仪表板
先决条件:您必须熟悉教程中使用的语法 并且已经创建了一个扩展.

我们还假定您熟悉iTop中的仪表板设计和Q.

学习:在类上添加仪表板属性

水平:[ ttps://www.itophub.io/wiki/page?id=level&dataflt%5B0%5D=level_%3DBeginner]初学者[/url]

域:[ ttps://www.itophub.io/wiki/page?id=domains&dataflt%5B0%5D=domains_%3DXML]XML[/url], [ ttps://www.itophub.io/wiki/page?id=domains&dataflt%5B0%5D=domains_%3DDashboard]dashboard[/url], [ ttps://www.itophub.io/wiki/page?id=domains&dataflt%5B0%5D=domains_%3DPresentation]presentation[/url]

最低版本:2.6.0

您想在每个团队上显示一个新的标签,其中显示了仪表板以及该团队的特定信息:

  • 分配给该团队的待售票清单
  • 仅限活跃成员的成员列表
  • 至少一名团队成员所在的位置列表


这些只是可以定义的Dashlet的示例,此教程的目的不是解释如何创建仪表盘。

可以用于上述示例的OQL查询
分配给该团队的待售票清单:

SELECT UserRequest WHERE STATUS IN ('assigned') AND team_id=:this->id
UNION SELECT Incident WHERE STATUS IN ('assigned') AND team_id=:this->id
UNION SELECT Problem WHERE STATUS IN ('assigned') AND team_id=:this->id

仅限活跃成员的成员列表:

SELECT Person AS p
   JOIN lnkPersonToTeam AS l ON l.person_id = p.id
  WHERE l.team_id = :this->id AND STATUS='active'

至少一名团队成员所在的位置列表:

SELECT Location AS L
   JOIN Person AS P ON P.location_id=L.id
  JOIN lnkPersonToTeam AS l1 ON l1.person_id=P.id
   JOIN Team AS T ON l1.team_id=T.id
   WHERE T.id=:this->id


创建一个仪表板属性
为此,您将需要为Team类创建一个新的AttributeDashboard字段,并将其添加到详细信息显示中。

[ ttps://www.itophub.io/wiki/page?do=export_code&id=2_7_0%3Acustomization%3Aadd-dashboard-attribute&codeblock=3]itop_design / classes[/url]


  <class id="Team" _delta="must_exist">      <fields>
        <field id="dashboard" xsi:type="AttributeDashboard" _delta="define">
          <is_user_editable>true</is_user_editable>
          <!-- Use this default definition for creating a new dashboard -->
          <definition>
            <!-- Later replace the whole definition with the XML export -->
            <layout>DashboardLayoutOneCol</layout>
            <title/>
            <auto_reload>
              <enabled>false</enabled>
              <interval>300</interval>
            </auto_reload>
            <cells>
              <cell id="0">
                <rank>0</rank>
                <dashlets>
                  <dashlet id="0" xsi:type="DashletEmptyCell">
                    <rank>0</rank>
                  </dashlet>
                </dashlets>
              </cell>
            </cells>
          </definition>
        </field>
      </fields>
      <presentation>
        <!-- Dashboard can only be displayed in the details -->
        <details>
          <items>
            <!-- Dashboard can be displayed neither in a fieldset, nor in a column


-->
            <item id="dashboard" _delta="define">
              <rank>100</rank>
            </item>
          </items>
        </details>
      </presentation>
    </class>

对仪表板使用较高的等级,将其放在末尾(“历史记录”之前),否则,当切换到仪表板之后的关系选项卡上的修改模式时,最终将修改错误的关系选项卡。由于仪表板不可编辑,因此将其从编辑视图中删除,对标签进行了重新编号,并从读取切换为编辑,并保留在相同的标签号上

添加一个[  :8082/bin/view/5/5.2/5.2.4/#creating_a_new_entry]字典条目[/url]  class:Team/Attribute:dashboard.

设计您的仪表板
部署扩展的第一个版本,它将提供一个空的仪表板。在iTop中重新设计此仪表板

在团队仪表板中编写OQL查询时,可以使用诸如:this-> att_code的占位符,其中att_code可以是团队的任何字段
使用团队ID的示例:

SELECT Person AS p JOIN lnkPersonToTeam AS lnk ON lnk.person_id = p.id WHERE lnk.team_id=:this->id

如果对设计感到满意,请将其导出为 XML,然后用导出<definition>替换初始<dashboard>内容:

<?xml version="1.0"?>
<dashboard xmlns:xsi="2001/XMLSchema-instance">
  <layout>DashboardLayoutOneCol</layout>
  <title/>
  <auto_reload>
    <enabled>false</enabled>
    <interval>300</interval>
  </auto_reload>
  <cells>
    <cell id="0">
      <rank>0</rank>
      <dashlets>
        <dashlet id="1" xsi:type="DashletObjectList">
          <rank>0</rank>
          <title>Members</title>
          <query>SELECT Person AS p
                 JOIN lnkPersonToTeam AS lnk ON lnk.person_id = p.id
                 WHERE lnk.team_id=:this->id
          </query>
          <menu>true</menu>
        </dashlet>
      </dashlets>
    </cell>
    <cell id="1">
      <rank>1</rank>
      <dashlets>
        <dashlet id="0" xsi:type="DashletEmptyCell">
          <rank>0</rank>
        </dashlet>
      </dashlets>
    </cell>
  </cells>
</dashboard>


当对您的设计满意时,导出以XML格式保存,并用导出的<仪表板>标签内容替换初始<definition>的内容:

[ ttps://www.itophub.io/wiki/page?do=export_code&id=2_7_0%3Acustomization%3Aadd-dashboard-attribute&codeblock=5]itop_design / classes / class@Team / fields[/url]


        <field id="dashboard" xsi:type="AttributeDashboard" _delta="define">
          ...
         <definition>
            <!-- Paste here the XML export of your Dashboard designed directly in iTop -->
          </definition>
          ...

并再次运行安装程序。

  • 每个人都会在所有Team对象上看到仪表板。
  • 用户还可以将其扭曲为仪表板团队自己的构建,
  • 但是它们都共享您在iTop上设计并推送的通用版本。

如果您推送该仪表板的新版本:

  • 每个人都会得到它
  • 仪表板的定制版本,也就是以前的通用仪表板的构建,将保持不变。






上一篇:二次开发-数据环境-隐藏或移除字段
下一篇:二次开发-数据环境-增加状态及状态变迁

写了  篇文章,拥有财富 ,被  人关注

您需要登录后才可以回帖 登录 | 立即注册
B Color Link Quote Code Smilies

成为第一个吐槽的人

手机版|小黑屋|最新100贴|论坛版块|ITIL先锋论坛 |粤ICP备11099876号|网站地图
Powered by Discuz! X3.4 Licensed  © 2001-2017 Comsenz Inc.
返回顶部