290 lines
12 KiB
HTML
290 lines
12 KiB
HTML
<div class='chart__container'>
|
|
<div class="row full-width">
|
|
<label class="label_control-wrap">
|
|
<div class="chart__group-filter pull-right dropdown" ng-if="supportGroups.length">
|
|
<span class="chart__group-label">{{ 'chart.perspective.label' | i18n }}:</span>
|
|
<button type="button" class="btn btn-default dropdown-toggle">
|
|
{{ selectedGroup }} <span class="icon-angle_down"></span>
|
|
</button>
|
|
<ul class="dropdown-menu dropdown-menu-right">
|
|
<li ng-if="myCompanySelected">
|
|
<a href="#" class="dropdown-item" role="menuitem" ng-click="fetchDataByGroup('myGroups')">{{ 'chart.perspective.myGroups' | i18n }}</a>
|
|
</li>
|
|
<li>
|
|
<a href="#" class="dropdown-item" role="menuitem" ng-click="fetchDataByGroup('allGroups')">{{ 'chart.perspective.allGroups' | i18n }}</a>
|
|
</li>
|
|
<li ng-repeat="item in supportGroups">
|
|
<a href="#" class="dropdown-item" role="menuitem" ng-click="fetchDataByGroup(item)">{{item.name}}</a>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</label>
|
|
</div>
|
|
|
|
<div class='ticket-chart__container' ng-if="isITSMAgent">
|
|
<div loading-spinner if="state.incidentDataIsLoading" centered="true" overlay="true"></div>
|
|
<div class="chart__section-header chart__section-header_first">{{ 'common.labels.incident' | i18n }}</div>
|
|
<div class="chart__section-body">
|
|
<div class="row full-screen chart__resolution-group">
|
|
<div class="col-sm-4">
|
|
<div class="chart__resolution-group-container">
|
|
<div class="chart__resolution-status-{{incidentKeyPerformanceData.onTimeData.status}}">{{incidentKeyPerformanceData.onTimeData.value}}</div>
|
|
<div class="chart__resolution-label">{{ 'chart.resolution.onTime.label' | i18n }}</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-sm-4">
|
|
<div class="chart__resolution-group-container">
|
|
<div class="chart__resolution-status-{{incidentKeyPerformanceData.acceptedData.status}}">{{incidentKeyPerformanceData.acceptedData.value}}</div>
|
|
<div class="chart__resolution-label">{{ 'chart.resolution.accepted.label' | i18n }}</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-sm-4">
|
|
<div class="chart__resolution-group-container">
|
|
<div class="chart__resolution-status-{{incidentKeyPerformanceData.firstCallData.status}}">{{incidentKeyPerformanceData.firstCallData.value}}</div>
|
|
<div class="chart__resolution-label">{{ 'chart.resolution.firstCall.label' | i18n }}</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<div class="col-sm-6">
|
|
<div loading-spinner if="state.incidentBacklogIsLoading" centered="true" overlay="true"></div>
|
|
<div class="chart-section__area">
|
|
<div class="chart-section__area-label">{{ 'chart.incident.label' | i18n }}</div>
|
|
<div class="btn-group chart-section__area-btn-group">
|
|
<button type="button" class="small-btn_secondary" ng-model="incidentRadioModel" btn-radio="'30'" ng-click="refreshBacklogData('incident', '30')">{{ 'chart.area.filter1' | i18n }}</button>
|
|
<button type="button" class="small-btn_secondary" ng-model="incidentRadioModel" btn-radio="'180'" ng-click="refreshBacklogData('incident', '180')">{{ 'chart.area.filter2' | i18n }}</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6">
|
|
<div class="chart__section-label">{{ 'chart.incident.open.label' | i18n }}</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div ng-if="!state.incidentDataIsLoading" class="row full-screen chart__rtl-padding__right">
|
|
<div class="col-sm-6 chart-column no-padding-left line-chart__tooltip-rtl">
|
|
<nvd3-line-chart
|
|
data="incidentAreaLineChartData"
|
|
height="250"
|
|
showXAxis="true"
|
|
showYAxis="true"
|
|
xAxisTickFormat="xAreaLineChartFunction()"
|
|
forcey="[0,10]"
|
|
margin="{right: 20}"
|
|
tooltips="true"
|
|
noData="{{'chart.label.noData' | i18n}}"
|
|
useInteractiveGuideline="true"
|
|
showLegend="true">
|
|
</nvd3-line-chart>
|
|
</div>
|
|
<div class="col-sm-6 chart-column">
|
|
<nvd3-multi-bar-chart
|
|
data="incidentMultiBarChartData"
|
|
height="250"
|
|
yAxisTickFormat="yMultiBarChartFunction()"
|
|
showXAxis="true"
|
|
showYAxis="true"
|
|
forcey="[0,10]"
|
|
groupSpacing="0.1"
|
|
tooltips="true"
|
|
noData="{{'chart.label.noData' | i18n}}"
|
|
stacked="true"
|
|
color="colorFunction()"
|
|
legendColor="colorFunction()"
|
|
showLegend="true">
|
|
</nvd3-multi-bar-chart>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class='ticket-chart__container' ng-if="isWOInstalled">
|
|
<div loading-spinner if="state.workorderDataIsLoading" centered="true" overlay="true"></div>
|
|
<div class="chart__section-header">{{ 'common.labels.workorder' | i18n }}</div>
|
|
<div class="chart__section-body">
|
|
<div class="row full-screen chart__resolution-group">
|
|
<div class="col-sm-4">
|
|
<div class="chart__resolution-group-container">
|
|
<div class="chart__resolution-status-{{workorderKeyPerformanceData.onTimeData.status}}">{{workorderKeyPerformanceData.onTimeData.value}}</div>
|
|
<div class="chart__resolution-label">{{ 'chart.resolution.onTime.label' | i18n }}</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-sm-4">
|
|
<div class="chart__resolution-group-container">
|
|
<div class="chart__resolution-status-{{workorderKeyPerformanceData.scheduledData.status}}">
|
|
{{workorderKeyPerformanceData.scheduledData.value}}
|
|
</div>
|
|
<div class="chart__resolution-label">{{ 'chart.percent.scheduled.label' | i18n }}</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<div class="col-sm-6">
|
|
<div loading-spinner if="state.workorderBacklogIsLoading" centered="true" overlay="true"></div>
|
|
<div class="chart-section__area">
|
|
<div class="chart-section__area-label">{{ 'chart.workorder.label' | i18n }}</div>
|
|
<div class="btn-group chart-section__area-btn-group">
|
|
<button type="button" class="small-btn_secondary" ng-model="workorderRadioModel" btn-radio="'30'" ng-click="refreshBacklogData('workorder', '30')">{{ 'chart.area.filter1' | i18n }}</button>
|
|
<button type="button" class="small-btn_secondary" ng-model="workorderRadioModel" btn-radio="'180'" ng-click="refreshBacklogData('workorder', '180')">{{ 'chart.area.filter2' | i18n }}</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6">
|
|
<div class="chart__section-label">{{ 'chart.workorder.open.label' | i18n }}</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div ng-if="!state.workorderDataIsLoading" class="row full-screen chart__rtl-padding__right">
|
|
<div class="col-sm-6 chart-column no-padding-left line-chart__tooltip-rtl">
|
|
<nvd3-line-chart
|
|
data="workorderAreaLineChartData"
|
|
height="250"
|
|
showXAxis="true"
|
|
showYAxis="true"
|
|
xAxisTickFormat="xAreaLineChartFunction()"
|
|
forcey="[0,10]"
|
|
margin="{right: 20}"
|
|
tooltips="true"
|
|
noData="{{'chart.label.noData' | i18n}}"
|
|
useInteractiveGuideline="true"
|
|
showLegend="true">
|
|
</nvd3-line-chart>
|
|
</div>
|
|
<div class="col-sm-6 chart-column">
|
|
<nvd3-multi-bar-chart
|
|
data="workorderMultiBarChartData"
|
|
height="250"
|
|
xAxisStaggerLabels="true"
|
|
yAxisTickFormat="yMultiBarChartFunction()"
|
|
showXAxis="true"
|
|
showYAxis="true"
|
|
forcey="[0,10]"
|
|
groupSpacing="0.1"
|
|
tooltips="true"
|
|
noData="{{'chart.label.noData' | i18n}}"
|
|
stacked="true"
|
|
color="colorFunction()"
|
|
legendColor="colorFunction()"
|
|
showLegend="true">
|
|
</nvd3-multi-bar-chart>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class='ticket-chart__container' ng-if="isSRMInstalled">
|
|
<div loading-spinner if="state.requestDataIsLoading" centered="true" overlay="true"></div>
|
|
<div class="chart__section-header">{{ 'common.labels.request' | i18n }}</div>
|
|
<div class="chart__section-body">
|
|
<div class="row full-screen chart__resolution-group">
|
|
<div class="col-sm-4">
|
|
<div class="chart__resolution-group-container">
|
|
<div class="chart__resolution-status-{{requestKeyPerformanceData.onTimeData.status}}">{{requestKeyPerformanceData.onTimeData.value}}</div>
|
|
<div class="chart__resolution-label">{{ 'chart.resolution.onTime.label' | i18n }}</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-sm-4">
|
|
<div class="chart__resolution-group-container">
|
|
<div class="chart__resolution-status-{{requestKeyPerformanceData.acceptedData.status}}">{{requestKeyPerformanceData.acceptedData.value}}</div>
|
|
<div class="chart__resolution-label">{{ 'chart.completion.accepted.label' | i18n }}</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<div class="col-sm-6">
|
|
<div loading-spinner if="state.requestBacklogIsLoading" centered="true" overlay="true"></div>
|
|
<div class="chart-section__area">
|
|
<div class="chart-section__area-label">{{ 'chart.servicerequest.label' | i18n }}</div>
|
|
<div class="btn-group chart-section__area-btn-group">
|
|
<button type="button" class="small-btn_secondary" ng-model="requestRadioModel" btn-radio="'30'" ng-click="refreshBacklogData('request', '30')">{{ 'chart.area.filter1' | i18n }}</button>
|
|
<button type="button" class="small-btn_secondary" ng-model="requestRadioModel" btn-radio="'180'" ng-click="refreshBacklogData('request', '180')">{{ 'chart.area.filter2' | i18n }}</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6">
|
|
<div class="chart__section-label">{{ 'chart.servicerequest.open.label' | i18n }}</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div ng-if="!state.requestDataIsLoading" class="row full-screen chart__rtl-padding__right">
|
|
<div class="col-sm-6 chart-column no-padding-left line-chart__tooltip-rtl">
|
|
<nvd3-line-chart
|
|
data="requestAreaLineChartData"
|
|
height="250"
|
|
showXAxis="true"
|
|
showYAxis="true"
|
|
xAxisTickFormat="xAreaLineChartFunction()"
|
|
forcey="[0,10]"
|
|
margin="{right: 20}"
|
|
tooltips="true"
|
|
noData="{{'chart.label.noData' | i18n}}"
|
|
useInteractiveGuideline="true"
|
|
showLegend="true">
|
|
</nvd3-line-chart>
|
|
</div>
|
|
<div class="col-sm-6 chart-column">
|
|
<nvd3-multi-bar-chart
|
|
data="requestMultiBarChartData"
|
|
height="250"
|
|
xAxisStaggerLabels="true"
|
|
yAxisTickFormat="yMultiBarChartFunction()"
|
|
showXAxis="true"
|
|
showYAxis="true"
|
|
forcey="[0,10]"
|
|
groupSpacing="0.1"
|
|
tooltips="true"
|
|
noData="{{'chart.label.noData' | i18n}}"
|
|
stacked="true"
|
|
color="colorFunction()"
|
|
legendColor="colorFunction()"
|
|
showLegend="true">
|
|
</nvd3-multi-bar-chart>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class='ticket-chart__container' ng-if="isChangeInstalled">
|
|
<div loading-spinner if="state.changeDataIsLoading" centered="true" overlay="true"></div>
|
|
<div class="chart__section-header">{{ 'ticket.type.change' | i18n }}</div>
|
|
<div class="chart__section-body">
|
|
<div class="row">
|
|
<div class="col-sm-6">
|
|
<div class="chart__section-label">{{ 'chart.change.label' | i18n }}</div>
|
|
</div>
|
|
<div class="col-sm-6">
|
|
<div class="chart__section-label">{{ 'chart.change.statistics.label' | i18n }}</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div ng-if="!state.changeDataIsLoading" class="row full-screen">
|
|
<div class="col-sm-6">
|
|
<div class="chart__section-clearfix chart-column" style="height:250px" id="changeDashboardPieChart">
|
|
<svg height="250">
|
|
</svg>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6 chart-column">
|
|
<nvd3-discrete-bar-chart
|
|
data="changeBarChartData"
|
|
height="250"
|
|
yAxisTickFormat="yMultiBarChartFunction()"
|
|
valueFormat="yMultiBarChartFunction()"
|
|
showXAxis="true"
|
|
showYAxis="true"
|
|
showValues="true"
|
|
color="changeBarColorFunction()">
|
|
</nvd3-discrete-bar-chart>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div> |