N°7472 - Team Tickets tab replaced by a Dashboard (#776)

* N°640 - No 'Tickets' tab on FunctionalCIs when no Ticket sub-classes exists

* N°7472 - Team Tickets tab replaced by a Dashboard

* N°7472 - Team Tickets tab replaced by a Dashboard (2)

* N°7472 - Team Tickets tab replaced by a Dashboard (3)
This commit is contained in:
Vincent Dumas
2025-11-14 09:08:16 +01:00
committed by GitHub
parent d098a5eb87
commit 58eae4dde3
19 changed files with 237 additions and 10 deletions

View File

@@ -85,6 +85,7 @@
<is_user_editable>true</is_user_editable>
<definition>
<layout>DashboardLayoutTwoCols</layout>
<title>Organization:Overview</title>
<auto_reload>
<enabled>false</enabled>
<interval>300</interval>
@@ -1019,6 +1020,119 @@
</reconciliation>
</properties>
<fields>
<field id="overview" xsi:type="AttributeDashboard">
<is_user_editable>true</is_user_editable>
<definition>
<layout>DashboardLayoutTwoCols</layout>
<title>Team:Overview</title>
<auto_reload>
<enabled>false</enabled>
<interval>300</interval>
</auto_reload>
<cells>
<cell id="0">
<rank>0</rank>
<dashlets>
<dashlet id="ActiveTickets-OnTeam-ByFinalClass" xsi:type="DashletGroupByTable">
<rank>0</rank>
<title>Team:Overview:ActiveTickets</title>
<query>SELECT Ticket WHERE team_id=:this-&gt;id AND operational_status = 'ongoing'</query>
<group_by>finalclass</group_by>
<style>table</style>
<aggregation_function>count</aggregation_function>
<aggregation_attribute></aggregation_attribute>
<limit></limit>
<order_by>attribute</order_by>
<order_direction>asc</order_direction>
</dashlet>
</dashlets>
</cell>
<cell id="1">
<rank>1</rank>
<dashlets>
<dashlet id="UserRequest-OnTeam-ByStatus" xsi:type="DashletHeaderDynamic">
<rank>0</rank>
<title>Class:UserRequest</title>
<icon>itop-structure/../../images/icons/icons8-customer.svg</icon>
<subtitle>Team:Overview:UserRequest-ByStatus</subtitle>
<query>SELECT UserRequest
WHERE team_id=:this-&gt;id</query>
<group_by>status</group_by>
<values>new,assigned,pending,resolved,closed</values>
</dashlet>
</dashlets>
</cell>
<cell id="2">
<rank>2</rank>
<dashlets>
<dashlet id="OpenUserRequest-OnTeam-ByAgent" xsi:type="DashletGroupByTable">
<rank>0</rank>
<title>UI-RequestManagementOverview-OpenRequestByAgent</title>
<query>SELECT UserRequest WHERE team_id=:this-&gt;id AND status!='closed'</query>
<group_by>agent_id</group_by>
<style>table</style>
<aggregation_function>count</aggregation_function>
<aggregation_attribute></aggregation_attribute>
<limit></limit>
<order_by>attribute</order_by>
<order_direction>desc</order_direction>
</dashlet>
</dashlets>
</cell>
<cell id="3">
<rank>3</rank>
<dashlets>
<dashlet id="FunctionalCIs-OnTeam" xsi:type="DashletGroupByTable">
<rank>0</rank>
<title>Team:Overview:FunctionalCIs-ByType</title>
<query>SELECT FunctionalCI AS fci JOIN lnkContactToFunctionalCI AS lnk ON lnk.functionalci_id = fci.id WHERE lnk.contact_id=:this-&gt;id</query>
<group_by>finalclass</group_by>
<style>table</style>
<aggregation_function>count</aggregation_function>
<aggregation_attribute></aggregation_attribute>
<limit></limit>
<order_by>attribute</order_by>
<order_direction>asc</order_direction>
</dashlet>
</dashlets>
</cell>
<cell id="4">
<rank>4</rank>
<dashlets>
<dashlet id="ClosedUserRequest-OnTeam-ByMonth" xsi:type="DashletGroupByBars">
<rank>0</rank>
<title>Team:Overview:UserRequest-ClosedByMonth</title>
<query>SELECT UserRequest WHERE team_id=:this-&gt;id AND close_date &gt; DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 12 MONTH),'%Y-%m-01 00:00:00') AND status='closed'</query>
<group_by>close_date:month</group_by>
<style>bars</style>
<aggregation_function>count</aggregation_function>
<aggregation_attribute></aggregation_attribute>
<limit></limit>
<order_by>attribute</order_by>
<order_direction>asc</order_direction>
</dashlet>
</dashlets>
</cell>
<cell id="5">
<rank>5</rank>
<dashlets>
<dashlet id="ClosedUserRequest-OnTeam-ByAgent" xsi:type="DashletGroupByPie">
<rank>0</rank>
<title>Team:Overview:UserRequest-ClosedByAgent</title>
<query>SELECT UserRequest WHERE team_id=:this-&gt;id AND close_date &gt; DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 12 MONTH),'%Y-%m-01 00:00:00') AND status='closed'</query>
<group_by>agent_id</group_by>
<style>pie</style>
<aggregation_function>count</aggregation_function>
<aggregation_attribute></aggregation_attribute>
<limit></limit>
<order_by>attribute</order_by>
<order_direction>desc</order_direction>
</dashlet>
</dashlets>
</cell>
</cells>
</definition>
</field>
<field id="persons_list" xsi:type="AttributeLinkedSetIndirect">
<linked_class>lnkPersonToTeam</linked_class>
<ext_key_to_me>team_id</ext_key_to_me>
@@ -1069,9 +1183,12 @@
<item id="function">
<rank>70</rank>
</item>
<item id="persons_list">
<item id="overview">
<rank>80</rank>
</item>
<item id="persons_list">
<rank>90</rank>
</item>
</items>
</details>
<search>

View File

@@ -164,6 +164,13 @@ Dict::Add('CS CZ', 'Czech', 'Čeština', [
'Class:Team/ComplementaryName' => '%1$s - %2$s~~',
'Class:Team/Attribute:persons_list' => 'Členové',
'Class:Team/Attribute:persons_list+' => 'Všichni členové týmu',
'Class:Team/Attribute:overview' => 'Overview~~',
'Team:Overview' => 'Tickets and CIs managed by the team~~',
'Team:Overview:ActiveTickets' => 'Active tickets~~',
'Team:Overview:FunctionalCIs-ByType' => 'Functional CIs~~',
'Team:Overview:UserRequest-ByStatus' => 'User requests by status~~',
'Team:Overview:UserRequest-ClosedByMonth' => 'User requests closed in last 12 months~~',
'Team:Overview:UserRequest-ClosedByAgent' => 'User requests closed by agent in last 12 months~~',
'Class:Team/Attribute:tickets_list' => 'Tikety',
'Class:Team/Attribute:tickets_list+' => 'Všechny tikety přidělené tomuto týmu',
]);

View File

@@ -163,6 +163,13 @@ Dict::Add('DA DA', 'Danish', 'Dansk', [
'Class:Team/ComplementaryName' => '%1$s - %2$s~~',
'Class:Team/Attribute:persons_list' => 'List Medlemmer',
'Class:Team/Attribute:persons_list+' => 'All the people belonging to this team~~',
'Class:Team/Attribute:overview' => 'Overview~~',
'Team:Overview' => 'Tickets and CIs managed by the team~~',
'Team:Overview:ActiveTickets' => 'Active tickets~~',
'Team:Overview:FunctionalCIs-ByType' => 'Functional CIs~~',
'Team:Overview:UserRequest-ByStatus' => 'User requests by status~~',
'Team:Overview:UserRequest-ClosedByMonth' => 'User requests closed in last 12 months~~',
'Team:Overview:UserRequest-ClosedByAgent' => 'User requests closed by agent in last 12 months~~',
'Class:Team/Attribute:tickets_list' => 'List Tickets',
'Class:Team/Attribute:tickets_list+' => 'All the tickets assigned to this team~~',
]);

View File

@@ -163,6 +163,13 @@ Dict::Add('DE DE', 'German', 'Deutsch', [
'Class:Team/ComplementaryName' => '%1$s - %2$s',
'Class:Team/Attribute:persons_list' => 'Mitglieder',
'Class:Team/Attribute:persons_list+' => 'Alle Personen, die zu diesem Team gehören',
'Class:Team/Attribute:overview' => 'Overview~~',
'Team:Overview' => 'Tickets and CIs managed by the team~~',
'Team:Overview:ActiveTickets' => 'Active tickets~~',
'Team:Overview:FunctionalCIs-ByType' => 'Functional CIs~~',
'Team:Overview:UserRequest-ByStatus' => 'User requests by status~~',
'Team:Overview:UserRequest-ClosedByMonth' => 'User requests closed in last 12 months~~',
'Team:Overview:UserRequest-ClosedByAgent' => 'User requests closed by agent in last 12 months~~',
'Class:Team/Attribute:tickets_list' => 'Tickets',
'Class:Team/Attribute:tickets_list+' => 'Alle diesem Team zugewiesenen Tickets',
]);

View File

@@ -197,6 +197,13 @@ Dict::Add('EN US', 'English', 'English', [
'Class:Team/ComplementaryName' => '%1$s - %2$s',
'Class:Team/Attribute:persons_list' => 'Members',
'Class:Team/Attribute:persons_list+' => 'All the people belonging to this team',
'Class:Team/Attribute:overview' => 'Overview',
'Team:Overview' => 'Tickets and CIs managed by the team',
'Team:Overview:ActiveTickets' => 'Active tickets',
'Team:Overview:FunctionalCIs-ByType' => 'Functional CIs',
'Team:Overview:UserRequest-ByStatus' => 'User requests by status',
'Team:Overview:UserRequest-ClosedByMonth' => 'User requests closed in last 12 months',
'Team:Overview:UserRequest-ClosedByAgent' => 'User requests closed by agent in last 12 months',
'Class:Team/Attribute:tickets_list' => 'Tickets',
'Class:Team/Attribute:tickets_list+' => 'All the tickets assigned to this team',
]);

View File

@@ -197,6 +197,13 @@ Dict::Add('EN GB', 'British English', 'British English', [
'Class:Team/ComplementaryName' => '%1$s - %2$s',
'Class:Team/Attribute:persons_list' => 'Members',
'Class:Team/Attribute:persons_list+' => 'All the people belonging to this team',
'Class:Team/Attribute:overview' => 'Overview~~',
'Team:Overview' => 'Tickets and CIs managed by the team~~',
'Team:Overview:ActiveTickets' => 'Active tickets~~',
'Team:Overview:FunctionalCIs-ByType' => 'Functional CIs~~',
'Team:Overview:UserRequest-ByStatus' => 'User requests by status~~',
'Team:Overview:UserRequest-ClosedByMonth' => 'User requests closed in last 12 months~~',
'Team:Overview:UserRequest-ClosedByAgent' => 'User requests closed by agent in last 12 months~~',
'Class:Team/Attribute:tickets_list' => 'Tickets',
'Class:Team/Attribute:tickets_list+' => 'All the tickets assigned to this team',
]);

View File

@@ -159,6 +159,13 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellano', [
'Class:Team/ComplementaryName' => '%1$s - %2$s',
'Class:Team/Attribute:persons_list' => 'Miembros',
'Class:Team/Attribute:persons_list+' => 'Miembros',
'Class:Team/Attribute:overview' => 'Overview~~',
'Team:Overview' => 'Tickets and CIs managed by the team~~',
'Team:Overview:ActiveTickets' => 'Active tickets~~',
'Team:Overview:FunctionalCIs-ByType' => 'Functional CIs~~',
'Team:Overview:UserRequest-ByStatus' => 'User requests by status~~',
'Team:Overview:UserRequest-ClosedByMonth' => 'User requests closed in last 12 months~~',
'Team:Overview:UserRequest-ClosedByAgent' => 'User requests closed by agent in last 12 months~~',
'Class:Team/Attribute:tickets_list' => 'Tickets',
'Class:Team/Attribute:tickets_list+' => 'Tickets',
]);

View File

@@ -183,6 +183,13 @@ Dict::Add('FR FR', 'French', 'Français', [
'Class:Team/Attribute:persons_list/UI:Links:Add:Modal:Title' => 'Ajouter une %4$s à %2$s',
'Class:Team/Attribute:persons_list/UI:Links:Remove:Button+' => 'Retirer cette %4$s',
'Class:Team/Attribute:persons_list/UI:Links:Remove:Modal:Title' => 'Retirer une %4$s',
'Class:Team/Attribute:overview' => 'Tableau de bord',
'Team:Overview' => 'Tickets et équipements gérés par cette équipe',
'Team:Overview:ActiveTickets' => 'Tickets ouverts',
'Team:Overview:FunctionalCIs-ByType' => 'CI Fonctionnels',
'Team:Overview:UserRequest-ByStatus' => 'Demandes utilisateur par état',
'Team:Overview:UserRequest-ClosedByMonth' => 'Demandes utilisateur fermées par mois (12 derniers mois)',
'Team:Overview:UserRequest-ClosedByAgent' => 'Demandes utilisateur fermées par agent (12 derniers mois)',
'Class:Team/Attribute:tickets_list' => 'Tickets',
'Class:Team/Attribute:tickets_list+' => 'Tous les tickets assignés à cette équipe',
]);

View File

@@ -162,6 +162,13 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', [
'Class:Team/ComplementaryName' => '%1$s - %2$s~~',
'Class:Team/Attribute:persons_list' => 'Tagok',
'Class:Team/Attribute:persons_list+' => '',
'Class:Team/Attribute:overview' => 'Overview~~',
'Team:Overview' => 'Tickets and CIs managed by the team~~',
'Team:Overview:ActiveTickets' => 'Active tickets~~',
'Team:Overview:FunctionalCIs-ByType' => 'Functional CIs~~',
'Team:Overview:UserRequest-ByStatus' => 'User requests by status~~',
'Team:Overview:UserRequest-ClosedByMonth' => 'User requests closed in last 12 months~~',
'Team:Overview:UserRequest-ClosedByAgent' => 'User requests closed by agent in last 12 months~~',
'Class:Team/Attribute:tickets_list' => 'Hibajegyek',
'Class:Team/Attribute:tickets_list+' => '',
]);

View File

@@ -162,6 +162,13 @@ Dict::Add('IT IT', 'Italian', 'Italiano', [
'Class:Team/ComplementaryName' => '%1$s - %2$s~~',
'Class:Team/Attribute:persons_list' => 'Members~~',
'Class:Team/Attribute:persons_list+' => 'All the people belonging to this team~~',
'Class:Team/Attribute:overview' => 'Overview~~',
'Team:Overview' => 'Tickets and CIs managed by the team~~',
'Team:Overview:ActiveTickets' => 'Active tickets~~',
'Team:Overview:FunctionalCIs-ByType' => 'Functional CIs~~',
'Team:Overview:UserRequest-ByStatus' => 'User requests by status~~',
'Team:Overview:UserRequest-ClosedByMonth' => 'User requests closed in last 12 months~~',
'Team:Overview:UserRequest-ClosedByAgent' => 'User requests closed by agent in last 12 months~~',
'Class:Team/Attribute:tickets_list' => 'Tickets~~',
'Class:Team/Attribute:tickets_list+' => 'All the tickets assigned to this team~~',
]);

View File

@@ -162,6 +162,13 @@ Dict::Add('JA JP', 'Japanese', '日本語', [
'Class:Team/ComplementaryName' => '%1$s - %2$s~~',
'Class:Team/Attribute:persons_list' => 'メンバー',
'Class:Team/Attribute:persons_list+' => 'All the people belonging to this team~~',
'Class:Team/Attribute:overview' => 'Overview~~',
'Team:Overview' => 'Tickets and CIs managed by the team~~',
'Team:Overview:ActiveTickets' => 'Active tickets~~',
'Team:Overview:FunctionalCIs-ByType' => 'Functional CIs~~',
'Team:Overview:UserRequest-ByStatus' => 'User requests by status~~',
'Team:Overview:UserRequest-ClosedByMonth' => 'User requests closed in last 12 months~~',
'Team:Overview:UserRequest-ClosedByAgent' => 'User requests closed by agent in last 12 months~~',
'Class:Team/Attribute:tickets_list' => 'チケット',
'Class:Team/Attribute:tickets_list+' => 'All the tickets assigned to this team~~',
]);

View File

@@ -164,6 +164,13 @@ Dict::Add('NL NL', 'Dutch', 'Nederlands', [
'Class:Team/ComplementaryName' => '%1$s - %2$s',
'Class:Team/Attribute:persons_list' => 'Leden',
'Class:Team/Attribute:persons_list+' => 'Alle personen die lid zijn van dit team',
'Class:Team/Attribute:overview' => 'Overview~~',
'Team:Overview' => 'Tickets and CIs managed by the team~~',
'Team:Overview:ActiveTickets' => 'Active tickets~~',
'Team:Overview:FunctionalCIs-ByType' => 'Functional CIs~~',
'Team:Overview:UserRequest-ByStatus' => 'User requests by status~~',
'Team:Overview:UserRequest-ClosedByMonth' => 'User requests closed in last 12 months~~',
'Team:Overview:UserRequest-ClosedByAgent' => 'User requests closed by agent in last 12 months~~',
'Class:Team/Attribute:tickets_list' => 'Tickets',
'Class:Team/Attribute:tickets_list+' => 'Alle tickets die toegewezen zijn aan dit team',
]);

View File

@@ -161,6 +161,13 @@ Dict::Add('PL PL', 'Polish', 'Polski', [
'Class:Team/ComplementaryName' => '%1$s - %2$s',
'Class:Team/Attribute:persons_list' => 'Członkowie',
'Class:Team/Attribute:persons_list+' => 'Wszystkie osoby należące do tego zespołu',
'Class:Team/Attribute:overview' => 'Overview~~',
'Team:Overview' => 'Tickets and CIs managed by the team~~',
'Team:Overview:ActiveTickets' => 'Active tickets~~',
'Team:Overview:FunctionalCIs-ByType' => 'Functional CIs~~',
'Team:Overview:UserRequest-ByStatus' => 'User requests by status~~',
'Team:Overview:UserRequest-ClosedByMonth' => 'User requests closed in last 12 months~~',
'Team:Overview:UserRequest-ClosedByAgent' => 'User requests closed by agent in last 12 months~~',
'Class:Team/Attribute:tickets_list' => 'Zgłoszenia',
'Class:Team/Attribute:tickets_list+' => 'Wszystkie zgłoszenia przypisane do tego zespołu',
]);

View File

@@ -162,6 +162,13 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', [
'Class:Team/ComplementaryName' => '%1$s - %2$s~~',
'Class:Team/Attribute:persons_list' => 'Membros',
'Class:Team/Attribute:persons_list+' => 'Todas as pessoas que pertencem a essa equipe',
'Class:Team/Attribute:overview' => 'Overview~~',
'Team:Overview' => 'Tickets and CIs managed by the team~~',
'Team:Overview:ActiveTickets' => 'Active tickets~~',
'Team:Overview:FunctionalCIs-ByType' => 'Functional CIs~~',
'Team:Overview:UserRequest-ByStatus' => 'User requests by status~~',
'Team:Overview:UserRequest-ClosedByMonth' => 'User requests closed in last 12 months~~',
'Team:Overview:UserRequest-ClosedByAgent' => 'User requests closed by agent in last 12 months~~',
'Class:Team/Attribute:tickets_list' => 'Solicitações',
'Class:Team/Attribute:tickets_list+' => 'Todas as solicitações atribuídas a essa equipe',
]);

View File

@@ -163,6 +163,13 @@ Dict::Add('RU RU', 'Russian', 'Русский', [
'Class:Team/ComplementaryName' => '%1$s - %2$s~~',
'Class:Team/Attribute:persons_list' => 'Участники',
'Class:Team/Attribute:persons_list+' => 'Участники команды',
'Class:Team/Attribute:overview' => 'Overview~~',
'Team:Overview' => 'Tickets and CIs managed by the team~~',
'Team:Overview:ActiveTickets' => 'Active tickets~~',
'Team:Overview:FunctionalCIs-ByType' => 'Functional CIs~~',
'Team:Overview:UserRequest-ByStatus' => 'User requests by status~~',
'Team:Overview:UserRequest-ClosedByMonth' => 'User requests closed in last 12 months~~',
'Team:Overview:UserRequest-ClosedByAgent' => 'User requests closed by agent in last 12 months~~',
'Class:Team/Attribute:tickets_list' => 'Тикеты',
'Class:Team/Attribute:tickets_list+' => 'Все тикеты, назначенные на команду',
]);

View File

@@ -162,6 +162,13 @@ Dict::Add('SK SK', 'Slovak', 'Slovenčina', [
'Class:Team/ComplementaryName' => '%1$s - %2$s~~',
'Class:Team/Attribute:persons_list' => 'Osoby',
'Class:Team/Attribute:persons_list+' => 'All the people belonging to this team~~',
'Class:Team/Attribute:overview' => 'Overview~~',
'Team:Overview' => 'Tickets and CIs managed by the team~~',
'Team:Overview:ActiveTickets' => 'Active tickets~~',
'Team:Overview:FunctionalCIs-ByType' => 'Functional CIs~~',
'Team:Overview:UserRequest-ByStatus' => 'User requests by status~~',
'Team:Overview:UserRequest-ClosedByMonth' => 'User requests closed in last 12 months~~',
'Team:Overview:UserRequest-ClosedByAgent' => 'User requests closed by agent in last 12 months~~',
'Class:Team/Attribute:tickets_list' => 'Tickety',
'Class:Team/Attribute:tickets_list+' => 'All the tickets assigned to this team~~',
]);

View File

@@ -163,6 +163,13 @@ Dict::Add('TR TR', 'Turkish', 'Türkçe', [
'Class:Team/ComplementaryName' => '%1$s - %2$s~~',
'Class:Team/Attribute:persons_list' => 'Üyeler',
'Class:Team/Attribute:persons_list+' => 'Bu ekibe ait tüm kişiler',
'Class:Team/Attribute:overview' => 'Overview~~',
'Team:Overview' => 'Tickets and CIs managed by the team~~',
'Team:Overview:ActiveTickets' => 'Active tickets~~',
'Team:Overview:FunctionalCIs-ByType' => 'Functional CIs~~',
'Team:Overview:UserRequest-ByStatus' => 'User requests by status~~',
'Team:Overview:UserRequest-ClosedByMonth' => 'User requests closed in last 12 months~~',
'Team:Overview:UserRequest-ClosedByAgent' => 'User requests closed by agent in last 12 months~~',
'Class:Team/Attribute:tickets_list' => 'Çağrı Kayıtları',
'Class:Team/Attribute:tickets_list+' => 'Bu ekibe atanan tüm çağrı kayıtları',
]);

View File

@@ -193,6 +193,13 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
'Class:Team/ComplementaryName' => '%1$s - %2$s',
'Class:Team/Attribute:persons_list' => '成员',
'Class:Team/Attribute:persons_list+' => '此团队包含的所有成员',
'Class:Team/Attribute:overview' => 'Overview~~',
'Team:Overview' => 'Tickets and CIs managed by the team~~',
'Team:Overview:ActiveTickets' => 'Active tickets~~',
'Team:Overview:FunctionalCIs-ByType' => 'Functional CIs~~',
'Team:Overview:UserRequest-ByStatus' => 'User requests by status~~',
'Team:Overview:UserRequest-ClosedByMonth' => 'User requests closed in last 12 months~~',
'Team:Overview:UserRequest-ClosedByAgent' => 'User requests closed by agent in last 12 months~~',
'Class:Team/Attribute:tickets_list' => '工单',
'Class:Team/Attribute:tickets_list+' => '此团队的所有工单',
]);

View File

@@ -920,15 +920,6 @@
<count_max>0</count_max>
</field>
</fields>
<presentation>
<details>
<items>
<item id="tickets_list" _delta="define">
<rank>90</rank>
</item>
</items>
</details>
</presentation>
</class>
</classes>
<meta>