cds-caching 1.2.1 → 1.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +195 -1114
- package/app/dashboard/Component-dbg.js +59 -0
- package/app/dashboard/Component-dbg.js.map +1 -0
- package/app/dashboard/Component.js +2 -0
- package/app/dashboard/Component.js.map +1 -0
- package/app/dashboard/Component.ts +59 -0
- package/app/dashboard/controller/App-dbg.controller.js +132 -0
- package/app/dashboard/controller/App-dbg.controller.js.map +1 -0
- package/app/dashboard/controller/App.controller.js +2 -0
- package/app/dashboard/controller/App.controller.js.map +1 -0
- package/app/dashboard/controller/App.controller.ts +147 -0
- package/app/dashboard/controller/BaseController-dbg.js +75 -0
- package/app/dashboard/controller/BaseController-dbg.js.map +1 -0
- package/app/dashboard/controller/BaseController.js +2 -0
- package/app/dashboard/controller/BaseController.js.map +1 -0
- package/app/dashboard/controller/BaseController.ts +88 -0
- package/app/dashboard/controller/Cache-dbg.controller.js +421 -0
- package/app/dashboard/controller/Cache-dbg.controller.js.map +1 -0
- package/app/dashboard/controller/Cache.controller.js +2 -0
- package/app/dashboard/controller/Cache.controller.js.map +1 -0
- package/app/dashboard/controller/Cache.controller.ts +490 -0
- package/app/dashboard/controller/Main-dbg.controller.js +32 -0
- package/app/dashboard/controller/Main-dbg.controller.js.map +1 -0
- package/app/dashboard/controller/Main.controller.js +2 -0
- package/app/dashboard/controller/Main.controller.js.map +1 -0
- package/app/dashboard/controller/Main.controller.ts +31 -0
- package/app/dashboard/controller/SingleMetric-dbg.controller.js +306 -0
- package/app/dashboard/controller/SingleMetric-dbg.controller.js.map +1 -0
- package/app/dashboard/controller/SingleMetric.controller.js +2 -0
- package/app/dashboard/controller/SingleMetric.controller.js.map +1 -0
- package/app/dashboard/controller/SingleMetric.controller.ts +335 -0
- package/app/dashboard/i18n/i18n.properties +61 -0
- package/app/dashboard/i18n/i18n_de.properties +3 -0
- package/app/dashboard/i18n/i18n_en.properties +3 -0
- package/app/dashboard/index-cdn.html +28 -0
- package/app/dashboard/index.html +19 -0
- package/app/dashboard/manifest.json +145 -0
- package/app/dashboard/model/formatter-dbg.js +253 -0
- package/app/dashboard/model/formatter-dbg.js.map +1 -0
- package/app/dashboard/model/formatter.js +2 -0
- package/app/dashboard/model/formatter.js.map +1 -0
- package/app/dashboard/model/formatter.ts +275 -0
- package/app/dashboard/model/models-dbg.js +13 -0
- package/app/dashboard/model/models-dbg.js.map +1 -0
- package/app/dashboard/model/models.js +2 -0
- package/app/dashboard/model/models.js.map +1 -0
- package/app/dashboard/model/models.ts +13 -0
- package/app/dashboard/resources/sap-ui-custom-dbg.js +4695 -0
- package/app/dashboard/resources/sap-ui-custom-dbg.js.map +1 -0
- package/app/dashboard/resources/sap-ui-custom.js +5794 -0
- package/app/dashboard/resources/sap-ui-custom.js.map +1 -0
- package/app/dashboard/service/CacheStatisticsService-dbg.js +267 -0
- package/app/dashboard/service/CacheStatisticsService-dbg.js.map +1 -0
- package/app/dashboard/service/CacheStatisticsService.js +2 -0
- package/app/dashboard/service/CacheStatisticsService.js.map +1 -0
- package/app/dashboard/service/CacheStatisticsService.ts +397 -0
- package/app/dashboard/view/App.view.xml +18 -0
- package/app/dashboard/view/Cache.view.xml +777 -0
- package/app/dashboard/view/Main.view.xml +57 -0
- package/app/dashboard/view/SingleMetric.view.xml +337 -0
- package/cds-plugin.js +52 -0
- package/db/cache-store.cds +12 -0
- package/db/statistics.cds +128 -0
- package/index.cds +2 -128
- package/lib/CachingService.js +24 -10
- package/lib/add.js +17 -0
- package/lib/operations/AsyncOperations.js +162 -111
- package/lib/operations/BasicOperations.js +42 -4
- package/lib/operations/CapOperations.js +92 -40
- package/lib/support/CacheStatisticsHandler.js +35 -10
- package/lib/support/CacheStoreManager.js +29 -0
- package/lib/support/KeyManager.js +40 -2
- package/lib/support/KeyvCDS.js +149 -0
- package/lib/support/MultitenancyDetector.js +25 -0
- package/lib/support/RuntimeConfigurationManager.js +69 -37
- package/lib/support/StatisticsPersistenceManager.js +18 -2
- package/lib/support/Telemetry.js +137 -0
- package/lib/util.js +29 -11
- package/package.json +43 -11
- package/srv/caching-api-service.js +47 -2
|
@@ -0,0 +1,777 @@
|
|
|
1
|
+
<mvc:View controllerName="cds.plugin.caching.dashboard.controller.Cache"
|
|
2
|
+
xmlns="sap.m"
|
|
3
|
+
xmlns:mvc="sap.ui.core.mvc"
|
|
4
|
+
xmlns:f="sap.f"
|
|
5
|
+
xmlns:card="sap.f.cards"
|
|
6
|
+
xmlns:core="sap.ui.core"
|
|
7
|
+
xmlns:l="sap.ui.layout"
|
|
8
|
+
xmlns:ui="sap.ui.table"
|
|
9
|
+
xmlns:form="sap.ui.layout.form"
|
|
10
|
+
xmlns:semantic="sap.m.semantic"
|
|
11
|
+
xmlns:unified="sap.ui.unified"
|
|
12
|
+
xmlns:app="http://schemas.sap.com/sapui5/extension/sap.ui.core.CustomData/1" app:routePattern="statistics" core:require="{
|
|
13
|
+
formatter: 'cds/plugin/caching/dashboard/model/formatter'
|
|
14
|
+
}">
|
|
15
|
+
|
|
16
|
+
<f:DynamicPage title="Cache: {app>/selectedCache}" stickySubheaderProvider="cacheStickySubheaderProvider">
|
|
17
|
+
<f:title>
|
|
18
|
+
<f:DynamicPageTitle>
|
|
19
|
+
<f:heading>
|
|
20
|
+
<Title text="Cache: {app>/selectedCache}"/>
|
|
21
|
+
</f:heading>
|
|
22
|
+
<f:actions>
|
|
23
|
+
<Label text="Enable Metrics" class=""/>
|
|
24
|
+
<Switch id="cacheEnableMetrics" state="{ path: 'metricsEnabled', mode: 'sap.ui.model.BindingMode.OneWay'}" change="onEnableMetricsChange" />
|
|
25
|
+
<Label text="Enable Key Metrics" class=""/>
|
|
26
|
+
<Switch id="cacheEnableKeyMetrics" state="{ path: 'keyMetricsEnabled', mode: 'sap.ui.model.BindingMode.OneWay' }" change="onEnableKeyMetricsChange" />
|
|
27
|
+
<ToolbarSeparator />
|
|
28
|
+
<Button text="Clear Cache" type="Transparent" press="onClearCache" />
|
|
29
|
+
</f:actions>
|
|
30
|
+
<f:navigationActions>
|
|
31
|
+
<OverflowToolbarButton type="Transparent" icon="sap-icon://full-screen" press="handleFullScreen" tooltip="Enter Full Screen Mode" visible="{= ${app>/layout} === 'TwoColumnsMidExpanded' }"/>
|
|
32
|
+
<OverflowToolbarButton type="Transparent" icon="sap-icon://exit-full-screen" press="handleExitFullScreen" tooltip="Exit Full Screen Mode" visible="{= ${app>/layout} === 'MidColumnFullScreen' }"/>
|
|
33
|
+
<OverflowToolbarButton type="Transparent" icon="sap-icon://decline" press="handleClose" tooltip="Close middle column"/>
|
|
34
|
+
</f:navigationActions>
|
|
35
|
+
</f:DynamicPageTitle>
|
|
36
|
+
</f:title>
|
|
37
|
+
|
|
38
|
+
<f:header>
|
|
39
|
+
<f:DynamicPageHeader>
|
|
40
|
+
<f:content>
|
|
41
|
+
|
|
42
|
+
</f:content>
|
|
43
|
+
</f:DynamicPageHeader>
|
|
44
|
+
</f:header>
|
|
45
|
+
|
|
46
|
+
<f:content>
|
|
47
|
+
<IconTabBar id="cacheStickySubheaderProvider" stretchContentHeight="true" expandable="false" headerMode="Inline" select=".onSelectionChange" selectedKey="{ui>/selectedTab}">
|
|
48
|
+
<items>
|
|
49
|
+
<IconTabFilter text="Overview" key="main">
|
|
50
|
+
<f:GridContainer snapToRow="true" allowDenseFill="true">
|
|
51
|
+
<f:Card>
|
|
52
|
+
<f:header>
|
|
53
|
+
<card:Header title="Configuration" subtitle="Cache Configuration" />
|
|
54
|
+
</f:header>
|
|
55
|
+
<f:content>
|
|
56
|
+
<VBox width="100%">
|
|
57
|
+
<form:SimpleForm width="100%" editable="true" labelSpanL="2" labelSpanM="2" labelSpanS="2" layout="ResponsiveGridLayout">
|
|
58
|
+
<form:content>
|
|
59
|
+
<TextArea rows="10" editable="false" width="100%" value="{ path: 'config', formatter: 'formatter.formatJSON' }" />
|
|
60
|
+
</form:content>
|
|
61
|
+
</form:SimpleForm>
|
|
62
|
+
</VBox>
|
|
63
|
+
</f:content>
|
|
64
|
+
<f:layoutData>
|
|
65
|
+
<f:GridContainerItemLayoutData columns="6" minRows="3"/>
|
|
66
|
+
</f:layoutData>
|
|
67
|
+
</f:Card>
|
|
68
|
+
<f:Card>
|
|
69
|
+
<f:header>
|
|
70
|
+
<card:Header title="Create Cache Entry" subtitle="Create a new cache entry" />
|
|
71
|
+
</f:header>
|
|
72
|
+
<f:content>
|
|
73
|
+
<VBox width="100%">
|
|
74
|
+
<form:SimpleForm width="100%" editable="true" labelSpanL="2" labelSpanM="2" labelSpanS="2" layout="ResponsiveGridLayout">
|
|
75
|
+
<form:content>
|
|
76
|
+
<Label text="Key" />
|
|
77
|
+
<Input id="createKeyInput" value="{ui>/createKey}" width="100%" />
|
|
78
|
+
<Label text="Value"/>
|
|
79
|
+
<TextArea id="createValueInput" rows="10" value="{ui>/createValue}" width="100%" />
|
|
80
|
+
<Label text="TTL (seconds)"/>
|
|
81
|
+
<Input id="createTtlInput" type="Number" value="{ui>/createTtl}" width="100%" />
|
|
82
|
+
</form:content>
|
|
83
|
+
</form:SimpleForm>
|
|
84
|
+
<Button text="Set Entry" type="Emphasized" press="onSetKey" class="sapUiSmallMarginEnd sapUiSmallMarginBottom">
|
|
85
|
+
<layoutData>
|
|
86
|
+
<FlexItemData alignSelf="End" />
|
|
87
|
+
</layoutData>
|
|
88
|
+
</Button>
|
|
89
|
+
</VBox>
|
|
90
|
+
|
|
91
|
+
</f:content>
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
<f:layoutData>
|
|
95
|
+
<f:GridContainerItemLayoutData columns="6" minRows="3"/>
|
|
96
|
+
</f:layoutData>
|
|
97
|
+
</f:Card>
|
|
98
|
+
<f:Card>
|
|
99
|
+
<f:header>
|
|
100
|
+
<card:Header title="Get Cache Entry" subtitle="Get a cache entry" />
|
|
101
|
+
</f:header>
|
|
102
|
+
<f:content>
|
|
103
|
+
<VBox width="100%">
|
|
104
|
+
<form:SimpleForm width="100%" editable="true" labelSpanL="2" labelSpanM="2" labelSpanS="2" layout="ResponsiveGridLayout">
|
|
105
|
+
<form:content>
|
|
106
|
+
<Label text="Key"/>
|
|
107
|
+
<Input id="getKeyInput" value="{ui>/getKey}" width="100%" />
|
|
108
|
+
<Label text="Value"/>
|
|
109
|
+
<TextArea id="getValueOutput" rows="10" editable="false" width="100%" value="{ui>/getValue}" />
|
|
110
|
+
</form:content>
|
|
111
|
+
</form:SimpleForm>
|
|
112
|
+
<Button text="Get Entry" type="Emphasized" press="onGetKey" class="sapUiSmallMarginEnd sapUiSmallMarginBottom">
|
|
113
|
+
<layoutData>
|
|
114
|
+
<FlexItemData alignSelf="End" />
|
|
115
|
+
</layoutData>
|
|
116
|
+
</Button>
|
|
117
|
+
</VBox>
|
|
118
|
+
|
|
119
|
+
</f:content>
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
<f:layoutData>
|
|
123
|
+
<f:GridContainerItemLayoutData columns="6" minRows="3"/>
|
|
124
|
+
</f:layoutData>
|
|
125
|
+
</f:Card>
|
|
126
|
+
<f:Card>
|
|
127
|
+
<f:header>
|
|
128
|
+
<card:Header title="Delete Cache Entry" subtitle="Delete a cache entry" />
|
|
129
|
+
</f:header>
|
|
130
|
+
<f:content>
|
|
131
|
+
<VBox width="100%">
|
|
132
|
+
<form:SimpleForm width="100%" editable="true" labelSpanL="2" labelSpanM="2" labelSpanS="2" layout="ResponsiveGridLayout">
|
|
133
|
+
<form:content>
|
|
134
|
+
<Label text="Key" class=""/>
|
|
135
|
+
<Input id="deleteKeyInput" value="{ui>/deleteKey}" width="100%" />
|
|
136
|
+
</form:content>
|
|
137
|
+
</form:SimpleForm>
|
|
138
|
+
<Button text="Delete Entry" type="Emphasized" press="onDeleteKey" class="sapUiSmallMarginEnd sapUiSmallMarginBottom">
|
|
139
|
+
<layoutData>
|
|
140
|
+
<FlexItemData alignSelf="End" />
|
|
141
|
+
</layoutData>
|
|
142
|
+
</Button>
|
|
143
|
+
</VBox>
|
|
144
|
+
|
|
145
|
+
</f:content>
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
<f:layoutData>
|
|
149
|
+
<f:GridContainerItemLayoutData columns="6" minRows="3"/>
|
|
150
|
+
</f:layoutData>
|
|
151
|
+
</f:Card>
|
|
152
|
+
|
|
153
|
+
</f:GridContainer>
|
|
154
|
+
|
|
155
|
+
</IconTabFilter>
|
|
156
|
+
<IconTabSeparator />
|
|
157
|
+
<IconTabFilter text="Metrics" key="metrics">
|
|
158
|
+
<Toolbar class="sapUiTinyMarginBottom" design="Transparent" style="Clear">
|
|
159
|
+
<Title text="Aggregated Metrics by Hour" />
|
|
160
|
+
<ToolbarSpacer />
|
|
161
|
+
<Button icon="sap-icon://refresh" text="Refresh" press="onRefreshMetricsData" type="Transparent" class="sapUiTinyMarginEnd" />
|
|
162
|
+
<Button type="Transparent" text="Clear Metrics" press="onClearMetrics" class="sapUiTinyMarginEnd" />
|
|
163
|
+
</Toolbar>
|
|
164
|
+
|
|
165
|
+
<ui:Table id="metricsTable" rows="{
|
|
166
|
+
path: '/Metrics',
|
|
167
|
+
suspended: true,
|
|
168
|
+
sorter: {
|
|
169
|
+
path: 'timestamp',
|
|
170
|
+
descending: true
|
|
171
|
+
}
|
|
172
|
+
}" rowMode="Auto" selectionMode="Single" selectionBehavior="RowOnly" rowSelectionChange=".onMetricsRowSelect" enableColumnReordering="true">
|
|
173
|
+
<ui:columns>
|
|
174
|
+
<!-- Basic Information -->
|
|
175
|
+
<ui:Column width="150px" sortProperty="timestamp" filterProperty="timestamp">
|
|
176
|
+
<ui:label>
|
|
177
|
+
<Text text="Timestamp" />
|
|
178
|
+
</ui:label>
|
|
179
|
+
<ui:template>
|
|
180
|
+
<Text text="{ path: 'timestamp'}" />
|
|
181
|
+
</ui:template>
|
|
182
|
+
</ui:Column>
|
|
183
|
+
|
|
184
|
+
<!-- Read-Through Operations -->
|
|
185
|
+
<ui:Column width="80px" sortProperty="hits" filterProperty="hits" headerSpan="15,1">
|
|
186
|
+
<ui:multiLabels>
|
|
187
|
+
<Text text="Read-Through" />
|
|
188
|
+
<Text text="Hits" />
|
|
189
|
+
</ui:multiLabels>
|
|
190
|
+
<ui:template>
|
|
191
|
+
<Text text="{path: 'hits', type: 'sap.ui.model.type.Integer'}" />
|
|
192
|
+
</ui:template>
|
|
193
|
+
</ui:Column>
|
|
194
|
+
<ui:Column width="80px" sortProperty="misses" filterProperty="misses">
|
|
195
|
+
<ui:multiLabels>
|
|
196
|
+
<Text text="Read-Through" />
|
|
197
|
+
<Text text="Misses" />
|
|
198
|
+
</ui:multiLabels>
|
|
199
|
+
<ui:template>
|
|
200
|
+
<Text text="{path: 'misses', type: 'sap.ui.model.type.Integer'}" />
|
|
201
|
+
</ui:template>
|
|
202
|
+
</ui:Column>
|
|
203
|
+
<ui:Column width="80px" sortProperty="errors" filterProperty="errors">
|
|
204
|
+
<ui:multiLabels>
|
|
205
|
+
<Text text="Read-Through" />
|
|
206
|
+
<Text text="Errors" />
|
|
207
|
+
</ui:multiLabels>
|
|
208
|
+
<ui:template>
|
|
209
|
+
<Text text="{path: 'errors', type: 'sap.ui.model.type.Integer'}" />
|
|
210
|
+
</ui:template>
|
|
211
|
+
</ui:Column>
|
|
212
|
+
<ui:Column width="80px" sortProperty="totalRequests" filterProperty="totalRequests">
|
|
213
|
+
<ui:multiLabels>
|
|
214
|
+
<Text text="Read-Through" />
|
|
215
|
+
<Text text="Total Requests" />
|
|
216
|
+
</ui:multiLabels>
|
|
217
|
+
<ui:template>
|
|
218
|
+
<Text text="{path: 'totalRequests', type: 'sap.ui.model.type.Integer'}" />
|
|
219
|
+
</ui:template>
|
|
220
|
+
</ui:Column>
|
|
221
|
+
|
|
222
|
+
<!-- Read-Through Performance -->
|
|
223
|
+
<ui:Column width="100px" sortProperty="hitRatio" filterProperty="hitRatio">
|
|
224
|
+
<ui:multiLabels>
|
|
225
|
+
<Text text="Read-Through Performance" />
|
|
226
|
+
<Text text="Hit Ratio %" />
|
|
227
|
+
</ui:multiLabels>
|
|
228
|
+
<ui:template>
|
|
229
|
+
<Text text="{path: 'hitRatio', type: 'sap.ui.model.type.Float', formatOptions: {style: 'short', decimals: 2}}" />
|
|
230
|
+
</ui:template>
|
|
231
|
+
</ui:Column>
|
|
232
|
+
<ui:Column width="100px" sortProperty="throughput" filterProperty="throughput">
|
|
233
|
+
<ui:multiLabels>
|
|
234
|
+
<Text text="Read-Through Performance" />
|
|
235
|
+
<Text text="Throughput" />
|
|
236
|
+
</ui:multiLabels>
|
|
237
|
+
<ui:template>
|
|
238
|
+
<Text text="{path: 'throughput', type: 'sap.ui.model.type.Float', formatOptions: {style: 'short', decimals: 2}}" />
|
|
239
|
+
</ui:template>
|
|
240
|
+
</ui:Column>
|
|
241
|
+
<ui:Column width="100px" sortProperty="errorRate" filterProperty="errorRate">
|
|
242
|
+
<ui:multiLabels>
|
|
243
|
+
<Text text="Read-Through Performance" />
|
|
244
|
+
<Text text="Error Rate %" />
|
|
245
|
+
</ui:multiLabels>
|
|
246
|
+
<ui:template>
|
|
247
|
+
<Text text="{path: 'errorRate', type: 'sap.ui.model.type.Float', formatOptions: {style: 'short', decimals: 2}}" />
|
|
248
|
+
</ui:template>
|
|
249
|
+
</ui:Column>
|
|
250
|
+
<ui:Column width="120px" sortProperty="cacheEfficiency" filterProperty="cacheEfficiency">
|
|
251
|
+
<ui:multiLabels>
|
|
252
|
+
<Text text="Read-Through Performance" />
|
|
253
|
+
<Text text="Cache Efficiency" />
|
|
254
|
+
</ui:multiLabels>
|
|
255
|
+
<ui:template>
|
|
256
|
+
<Text text="{path: 'cacheEfficiency', type: 'sap.ui.model.type.Float', formatOptions: {style: 'short', decimals: 2}}" />
|
|
257
|
+
</ui:template>
|
|
258
|
+
</ui:Column>
|
|
259
|
+
|
|
260
|
+
<!-- Read-Through Hit Latencies -->
|
|
261
|
+
<ui:Column width="120px" sortProperty="avgReadThroughLatency" filterProperty="avgReadThroughLatency" headerSpan="8,1">
|
|
262
|
+
<ui:multiLabels>
|
|
263
|
+
<Text text="Read-Through Latencies" />
|
|
264
|
+
<Text text="Avg Latency (ms)" />
|
|
265
|
+
</ui:multiLabels>
|
|
266
|
+
<ui:template>
|
|
267
|
+
<Text text="{path: 'avgReadThroughLatency', type: 'sap.ui.model.type.Float', formatOptions: {style: 'short', decimals: 2}}ms" />
|
|
268
|
+
</ui:template>
|
|
269
|
+
</ui:Column>
|
|
270
|
+
|
|
271
|
+
<ui:Column width="120px" sortProperty="avgHitLatency" filterProperty="avgHitLatency" headerSpan="8,1">
|
|
272
|
+
<ui:multiLabels>
|
|
273
|
+
<Text text="Read-Through Hit Latencies" />
|
|
274
|
+
<Text text="Hit Avg (ms)" />
|
|
275
|
+
</ui:multiLabels>
|
|
276
|
+
<ui:template>
|
|
277
|
+
<Text text="{path: 'avgHitLatency', type: 'sap.ui.model.type.Float', formatOptions: {style: 'short', decimals: 2}}ms" />
|
|
278
|
+
</ui:template>
|
|
279
|
+
</ui:Column>
|
|
280
|
+
|
|
281
|
+
<ui:Column width="120px" sortProperty="minHitLatency" filterProperty="minHitLatency">
|
|
282
|
+
<ui:multiLabels>
|
|
283
|
+
<Text text="Read-Through Hit Latencies" />
|
|
284
|
+
<Text text="Hit Min (ms)" />
|
|
285
|
+
</ui:multiLabels>
|
|
286
|
+
<ui:template>
|
|
287
|
+
<Text text="{path: 'minHitLatency', type: 'sap.ui.model.type.Float', formatOptions: {style: 'short', decimals: 2}}ms" />
|
|
288
|
+
</ui:template>
|
|
289
|
+
</ui:Column>
|
|
290
|
+
<ui:Column width="120px" sortProperty="maxHitLatency" filterProperty="maxHitLatency">
|
|
291
|
+
<ui:multiLabels>
|
|
292
|
+
<Text text="Read-Through Hit Latencies" />
|
|
293
|
+
<Text text="Hit Max (ms)" />
|
|
294
|
+
</ui:multiLabels>
|
|
295
|
+
<ui:template>
|
|
296
|
+
<Text text="{path: 'maxHitLatency', type: 'sap.ui.model.type.Float', formatOptions: {style: 'short', decimals: 2}}ms" />
|
|
297
|
+
</ui:template>
|
|
298
|
+
</ui:Column>
|
|
299
|
+
|
|
300
|
+
<!-- Read-Through Miss Latencies -->
|
|
301
|
+
<ui:Column width="120px" sortProperty="avgMissLatency" filterProperty="avgMissLatency" headerSpan="5,1">
|
|
302
|
+
<ui:multiLabels>
|
|
303
|
+
<Text text="Read-Through Miss Latencies" />
|
|
304
|
+
<Text text="Miss Avg (ms)" />
|
|
305
|
+
</ui:multiLabels>
|
|
306
|
+
<ui:template>
|
|
307
|
+
<Text text="{path: 'avgMissLatency', type: 'sap.ui.model.type.Float', formatOptions: {style: 'short', decimals: 2}}ms" />
|
|
308
|
+
</ui:template>
|
|
309
|
+
</ui:Column>
|
|
310
|
+
|
|
311
|
+
<ui:Column width="120px" sortProperty="minMissLatency" filterProperty="minMissLatency">
|
|
312
|
+
<ui:multiLabels>
|
|
313
|
+
<Text text="Read-Through Miss Latencies" />
|
|
314
|
+
<Text text="Miss Min (ms)" />
|
|
315
|
+
</ui:multiLabels>
|
|
316
|
+
<ui:template>
|
|
317
|
+
<Text text="{path: 'minMissLatency', type: 'sap.ui.model.type.Float', formatOptions: {style: 'short', decimals: 2}}ms" />
|
|
318
|
+
</ui:template>
|
|
319
|
+
</ui:Column>
|
|
320
|
+
<ui:Column width="120px" sortProperty="maxMissLatency" filterProperty="maxMissLatency">
|
|
321
|
+
<ui:multiLabels>
|
|
322
|
+
<Text text="Read-Through Miss Latencies" />
|
|
323
|
+
<Text text="Miss Max (ms)" />
|
|
324
|
+
</ui:multiLabels>
|
|
325
|
+
<ui:template>
|
|
326
|
+
<Text text="{path: 'maxMissLatency', type: 'sap.ui.model.type.Float', formatOptions: {style: 'short', decimals: 2}}ms" />
|
|
327
|
+
</ui:template>
|
|
328
|
+
</ui:Column>
|
|
329
|
+
|
|
330
|
+
|
|
331
|
+
<!-- Native Function Operations -->
|
|
332
|
+
<ui:Column width="80px" sortProperty="nativeSets" filterProperty="nativeSets" headerSpan="9,1">
|
|
333
|
+
<ui:multiLabels>
|
|
334
|
+
<Text text="Native Function" />
|
|
335
|
+
<Text text="Sets" />
|
|
336
|
+
</ui:multiLabels>
|
|
337
|
+
<ui:template>
|
|
338
|
+
<Text text="{path: 'nativeSets', type: 'sap.ui.model.type.Integer'}" />
|
|
339
|
+
</ui:template>
|
|
340
|
+
</ui:Column>
|
|
341
|
+
<ui:Column width="80px" sortProperty="nativeGets" filterProperty="nativeGets">
|
|
342
|
+
<ui:multiLabels>
|
|
343
|
+
<Text text="Native Function Operations" />
|
|
344
|
+
<Text text="Gets" />
|
|
345
|
+
</ui:multiLabels>
|
|
346
|
+
<ui:template>
|
|
347
|
+
<Text text="{path: 'nativeGets', type: 'sap.ui.model.type.Integer'}" />
|
|
348
|
+
</ui:template>
|
|
349
|
+
</ui:Column>
|
|
350
|
+
<ui:Column width="80px" sortProperty="nativeDeletes" filterProperty="nativeDeletes">
|
|
351
|
+
<ui:multiLabels>
|
|
352
|
+
<Text text="Native Function Operations" />
|
|
353
|
+
<Text text="Deletes" />
|
|
354
|
+
</ui:multiLabels>
|
|
355
|
+
<ui:template>
|
|
356
|
+
<Text text="{path: 'nativeDeletes', type: 'sap.ui.model.type.Integer'}" />
|
|
357
|
+
</ui:template>
|
|
358
|
+
</ui:Column>
|
|
359
|
+
<ui:Column width="80px" sortProperty="nativeClears" filterProperty="nativeClears">
|
|
360
|
+
<ui:multiLabels>
|
|
361
|
+
<Text text="Native Function Operations" />
|
|
362
|
+
<Text text="Clears" />
|
|
363
|
+
</ui:multiLabels>
|
|
364
|
+
<ui:template>
|
|
365
|
+
<Text text="{path: 'nativeClears', type: 'sap.ui.model.type.Integer'}" />
|
|
366
|
+
</ui:template>
|
|
367
|
+
</ui:Column>
|
|
368
|
+
<ui:Column width="80px" sortProperty="nativeDeleteByTags" filterProperty="nativeDeleteByTags">
|
|
369
|
+
<ui:multiLabels>
|
|
370
|
+
<Text text="Native Function Operations" />
|
|
371
|
+
<Text text="Delete By Tags" />
|
|
372
|
+
</ui:multiLabels>
|
|
373
|
+
<ui:template>
|
|
374
|
+
<Text text="{path: 'nativeDeleteByTags', type: 'sap.ui.model.type.Integer'}" />
|
|
375
|
+
</ui:template>
|
|
376
|
+
</ui:Column>
|
|
377
|
+
<ui:Column width="80px" sortProperty="nativeErrors" filterProperty="nativeErrors">
|
|
378
|
+
<ui:multiLabels>
|
|
379
|
+
<Text text="Native Function Operations" />
|
|
380
|
+
<Text text="Errors" />
|
|
381
|
+
</ui:multiLabels>
|
|
382
|
+
<ui:template>
|
|
383
|
+
<Text text="{path: 'nativeErrors', type: 'sap.ui.model.type.Integer'}" />
|
|
384
|
+
</ui:template>
|
|
385
|
+
</ui:Column>
|
|
386
|
+
<ui:Column width="80px" sortProperty="totalNativeOperations" filterProperty="totalNativeOperations">
|
|
387
|
+
<ui:multiLabels>
|
|
388
|
+
<Text text="Native Function Operations" />
|
|
389
|
+
<Text text="Total" />
|
|
390
|
+
</ui:multiLabels>
|
|
391
|
+
<ui:template>
|
|
392
|
+
<Text text="{path: 'totalNativeOperations', type: 'sap.ui.model.type.Integer'}" />
|
|
393
|
+
</ui:template>
|
|
394
|
+
</ui:Column>
|
|
395
|
+
|
|
396
|
+
<!-- Native Function Performance -->
|
|
397
|
+
<ui:Column width="100px" sortProperty="nativeThroughput" filterProperty="nativeThroughput" headerSpan="2,1">
|
|
398
|
+
<ui:multiLabels>
|
|
399
|
+
<Text text="Native Function Performance" />
|
|
400
|
+
<Text text="Throughput" />
|
|
401
|
+
</ui:multiLabels>
|
|
402
|
+
<ui:template>
|
|
403
|
+
<Text text="{path: 'nativeThroughput', type: 'sap.ui.model.type.Float', formatOptions: {style: 'short', decimals: 2}}" />
|
|
404
|
+
</ui:template>
|
|
405
|
+
</ui:Column>
|
|
406
|
+
<ui:Column width="100px" sortProperty="nativeErrorRate" filterProperty="nativeErrorRate">
|
|
407
|
+
<ui:multiLabels>
|
|
408
|
+
<Text text="Native Function Performance" />
|
|
409
|
+
<Text text="Error Rate %" />
|
|
410
|
+
</ui:multiLabels>
|
|
411
|
+
<ui:template>
|
|
412
|
+
<Text text="{path: 'nativeErrorRate', type: 'sap.ui.model.type.Float', formatOptions: {style: 'short', decimals: 2}}" />
|
|
413
|
+
</ui:template>
|
|
414
|
+
</ui:Column>
|
|
415
|
+
</ui:columns>
|
|
416
|
+
</ui:Table>
|
|
417
|
+
|
|
418
|
+
|
|
419
|
+
<!-- Chart Section -->
|
|
420
|
+
<f:Card class="sapUiTinyMarginBottom" visible="false">
|
|
421
|
+
<f:header>
|
|
422
|
+
<card:Header title="Trends" subtitle="Performance trends over time" />
|
|
423
|
+
</f:header>
|
|
424
|
+
<f:content>
|
|
425
|
+
<l:VerticalLayout class="sapUiTinyMargin">
|
|
426
|
+
<l:HorizontalLayout class="sapUiTinyMarginBottom">
|
|
427
|
+
<Select id="cacheChartMetric" selectedKey="{ui>/chartMetric}" change=".onChartMetricChange" class="sapUiTinyMarginEnd">
|
|
428
|
+
<core:Item key="hitRatio" text="Hit Ratio" />
|
|
429
|
+
<core:Item key="avgLatency" text="Average Latency" />
|
|
430
|
+
<core:Item key="avgHitLatency" text="Hit Latency" />
|
|
431
|
+
<core:Item key="avgMissLatency" text="Miss Latency" />
|
|
432
|
+
<core:Item key="cacheEfficiency" text="Cache Efficiency" />
|
|
433
|
+
<core:Item key="throughput" text="Throughput" />
|
|
434
|
+
<core:Item key="errorRate" text="Error Rate" />
|
|
435
|
+
<core:Item key="memoryUsage" text="Memory Usage" />
|
|
436
|
+
</Select>
|
|
437
|
+
</l:HorizontalLayout>
|
|
438
|
+
|
|
439
|
+
<Text text="Chart visualization will be implemented here" />
|
|
440
|
+
</l:VerticalLayout>
|
|
441
|
+
</f:content>
|
|
442
|
+
</f:Card>
|
|
443
|
+
</IconTabFilter>
|
|
444
|
+
<IconTabFilter text="Key Metrics" key="keymetrics">
|
|
445
|
+
|
|
446
|
+
<!-- Key Access Data Table -->
|
|
447
|
+
<Toolbar class="sapUiTinyMarginBottom" design="Transparent" style="Clear">
|
|
448
|
+
<Title text="Key Metrics" />
|
|
449
|
+
<ToolbarSpacer />
|
|
450
|
+
<Button icon="sap-icon://refresh" text="Refresh" press="onRefreshKeyMetricsData" type="Transparent" class="sapUiTinyMarginEnd" />
|
|
451
|
+
<Button type="Transparent" text="Clear Metrics" press="onClearKeyMetrics" class="sapUiTinyMarginEnd" />
|
|
452
|
+
</Toolbar>
|
|
453
|
+
<ui:Table id="keyMetricsTable" rows="{
|
|
454
|
+
path: '/KeyMetrics',
|
|
455
|
+
suspended: true
|
|
456
|
+
}"
|
|
457
|
+
rowMode="Auto"
|
|
458
|
+
selectionMode="None"
|
|
459
|
+
enableColumnReordering="true">
|
|
460
|
+
<ui:columns>
|
|
461
|
+
<!-- Basic Information -->
|
|
462
|
+
<ui:Column minWidth="200px" sortProperty="keyName" filterProperty="keyName">
|
|
463
|
+
<ui:multiLabels>
|
|
464
|
+
<Text text="Key Name" />
|
|
465
|
+
</ui:multiLabels>
|
|
466
|
+
<ui:template>
|
|
467
|
+
<VBox width="100%">
|
|
468
|
+
<Text text="{ path: 'keyName'}" tooltip="{keyName}" wrapping="false" wrappingType="Normal" />
|
|
469
|
+
<Text visible="false" text="{query}" />
|
|
470
|
+
<Text visible="false" text="{metadata}" />
|
|
471
|
+
<Text visible="false" text="{subject}" />
|
|
472
|
+
<Text visible="false" text="{cacheOptions}" />
|
|
473
|
+
</VBox>
|
|
474
|
+
</ui:template>
|
|
475
|
+
</ui:Column>
|
|
476
|
+
<ui:Column width="100px" sortProperty="operation" filterProperty="operation" headerSpan="5,1">
|
|
477
|
+
<ui:multiLabels>
|
|
478
|
+
<Text text="Context" />
|
|
479
|
+
<Text text="Operation" />
|
|
480
|
+
</ui:multiLabels>
|
|
481
|
+
<ui:template>
|
|
482
|
+
<Text text="{operation}" />
|
|
483
|
+
</ui:template>
|
|
484
|
+
</ui:Column>
|
|
485
|
+
<ui:Column width="150px" sortProperty="dataType" filterProperty="dataType" >
|
|
486
|
+
<ui:multiLabels>
|
|
487
|
+
<Text text="Context" />
|
|
488
|
+
<Text text="Type" />
|
|
489
|
+
</ui:multiLabels>
|
|
490
|
+
<ui:template>
|
|
491
|
+
<Text text="{dataType}" />
|
|
492
|
+
</ui:template>
|
|
493
|
+
</ui:Column>
|
|
494
|
+
<ui:Column width="150px" sortProperty="operationType" filterProperty="operationType">
|
|
495
|
+
<ui:multiLabels>
|
|
496
|
+
<Text text="Context" />
|
|
497
|
+
<Text text="Operation Type" />
|
|
498
|
+
</ui:multiLabels>
|
|
499
|
+
<ui:template>
|
|
500
|
+
<Text text="{operationType}" />
|
|
501
|
+
</ui:template>
|
|
502
|
+
</ui:Column>
|
|
503
|
+
|
|
504
|
+
<!-- Metadata -->
|
|
505
|
+
<ui:Column width="200px" sortProperty="target" filterProperty="target">
|
|
506
|
+
<ui:multiLabels>
|
|
507
|
+
<Text text="Context" />
|
|
508
|
+
<Text text="Target" />
|
|
509
|
+
</ui:multiLabels>
|
|
510
|
+
<ui:template>
|
|
511
|
+
<Text text="{target}" />
|
|
512
|
+
</ui:template>
|
|
513
|
+
</ui:Column>
|
|
514
|
+
|
|
515
|
+
<ui:Column width="180px" >
|
|
516
|
+
<ui:multiLabels>
|
|
517
|
+
<Text text="Context" />
|
|
518
|
+
<Text text="Metadata" />
|
|
519
|
+
</ui:multiLabels>
|
|
520
|
+
<ui:template>
|
|
521
|
+
<Button text="Show Metadata" type="Transparent" press="onShowKeyMetricsMetadata" />
|
|
522
|
+
</ui:template>
|
|
523
|
+
</ui:Column>
|
|
524
|
+
|
|
525
|
+
|
|
526
|
+
<!-- Read-Through Operations -->
|
|
527
|
+
<ui:Column width="60px" sortProperty="hits" filterProperty="hits" headerSpan="11,1">
|
|
528
|
+
<ui:multiLabels>
|
|
529
|
+
<Text text="Read-Through" />
|
|
530
|
+
<Text text="Hits" />
|
|
531
|
+
</ui:multiLabels>
|
|
532
|
+
<ui:template>
|
|
533
|
+
<Text text="{path: 'hits', type: 'sap.ui.model.type.Integer'}" />
|
|
534
|
+
</ui:template>
|
|
535
|
+
</ui:Column>
|
|
536
|
+
<ui:Column width="60px" sortProperty="misses" filterProperty="misses">
|
|
537
|
+
<ui:multiLabels>
|
|
538
|
+
<Text text="Read-Through Operations" />
|
|
539
|
+
<Text text="Misses" />
|
|
540
|
+
</ui:multiLabels>
|
|
541
|
+
<ui:template>
|
|
542
|
+
<Text text="{path: 'misses', type: 'sap.ui.model.type.Integer'}" />
|
|
543
|
+
</ui:template>
|
|
544
|
+
</ui:Column>
|
|
545
|
+
|
|
546
|
+
<ui:Column width="60px" sortProperty="total" filterProperty="total">
|
|
547
|
+
<ui:multiLabels>
|
|
548
|
+
<Text text="Read-Through Operations" />
|
|
549
|
+
<Text text="Total" />
|
|
550
|
+
</ui:multiLabels>
|
|
551
|
+
<ui:template>
|
|
552
|
+
<Text text="{path: 'totalRequests', type: 'sap.ui.model.type.Integer'}" />
|
|
553
|
+
</ui:template>
|
|
554
|
+
</ui:Column>
|
|
555
|
+
|
|
556
|
+
<!-- Read-Through Performance -->
|
|
557
|
+
<ui:Column width="100px" sortProperty="hitRatio" filterProperty="hitRatio" headerSpan="2,1">
|
|
558
|
+
<ui:multiLabels>
|
|
559
|
+
<Text text="Read-Through Performance" />
|
|
560
|
+
<Text text="Hit Ratio %" />
|
|
561
|
+
</ui:multiLabels>
|
|
562
|
+
<ui:template>
|
|
563
|
+
<Text text="{path: 'hitRatio', type: 'sap.ui.model.type.Float', formatOptions: {style: 'short', decimals: 2}}" />
|
|
564
|
+
</ui:template>
|
|
565
|
+
</ui:Column>
|
|
566
|
+
<ui:Column width="120px" sortProperty="cacheEfficiency" filterProperty="cacheEfficiency">
|
|
567
|
+
<ui:multiLabels>
|
|
568
|
+
<Text text="Read-Through Performance" />
|
|
569
|
+
<Text text="Cache Efficiency" />
|
|
570
|
+
</ui:multiLabels>
|
|
571
|
+
<ui:template>
|
|
572
|
+
<Text text="{path: 'cacheEfficiency', type: 'sap.ui.model.type.Float', formatOptions: {style: 'short', decimals: 2}}" />
|
|
573
|
+
</ui:template>
|
|
574
|
+
</ui:Column>
|
|
575
|
+
|
|
576
|
+
<!-- Read-Through Hit Latencies -->
|
|
577
|
+
<ui:Column width="120px" sortProperty="avgHitLatency" filterProperty="avgHitLatency" headerSpan="5,1">
|
|
578
|
+
<ui:multiLabels>
|
|
579
|
+
<Text text="Read-Through Hit Latencies" />
|
|
580
|
+
<Text text="Avg Hit Latency (ms)" />
|
|
581
|
+
</ui:multiLabels>
|
|
582
|
+
<ui:template>
|
|
583
|
+
<Text text="{path: 'avgHitLatency', type: 'sap.ui.model.type.Float', formatOptions: {style: 'short', decimals: 2}}" />
|
|
584
|
+
</ui:template>
|
|
585
|
+
</ui:Column>
|
|
586
|
+
|
|
587
|
+
<ui:Column width="120px" sortProperty="minHitLatency" filterProperty="minHitLatency">
|
|
588
|
+
<ui:multiLabels>
|
|
589
|
+
<Text text="Read-Through Hit Latencies" />
|
|
590
|
+
<Text text="Min Hit Latency (ms)" />
|
|
591
|
+
</ui:multiLabels>
|
|
592
|
+
<ui:template>
|
|
593
|
+
<Text text="{path: 'minHitLatency', type: 'sap.ui.model.type.Float', formatOptions: {style: 'short', decimals: 2}}" />
|
|
594
|
+
</ui:template>
|
|
595
|
+
</ui:Column>
|
|
596
|
+
<ui:Column width="120px" sortProperty="maxHitLatency" filterProperty="maxHitLatency">
|
|
597
|
+
<ui:multiLabels>
|
|
598
|
+
<Text text="Read-Through Hit Latencies" />
|
|
599
|
+
<Text text="Max Hit Latency (ms)" />
|
|
600
|
+
</ui:multiLabels>
|
|
601
|
+
<ui:template>
|
|
602
|
+
<Text text="{path: 'maxHitLatency', type: 'sap.ui.model.type.Float', formatOptions: {style: 'short', decimals: 2}}" />
|
|
603
|
+
</ui:template>
|
|
604
|
+
</ui:Column>
|
|
605
|
+
|
|
606
|
+
<!-- Read-Through Miss Latencies -->
|
|
607
|
+
<ui:Column width="120px" sortProperty="avgMissLatency" filterProperty="avgMissLatency" headerSpan="5,1">
|
|
608
|
+
<ui:multiLabels>
|
|
609
|
+
<Text text="Read-Through Miss Latencies" />
|
|
610
|
+
<Text text="Avg Miss Latency (ms)" />
|
|
611
|
+
</ui:multiLabels>
|
|
612
|
+
<ui:template>
|
|
613
|
+
<Text text="{path: 'avgMissLatency', type: 'sap.ui.model.type.Float', formatOptions: {style: 'short', decimals: 2}}" />
|
|
614
|
+
</ui:template>
|
|
615
|
+
</ui:Column>
|
|
616
|
+
<ui:Column width="120px" sortProperty="minMissLatency" filterProperty="minMissLatency">
|
|
617
|
+
<ui:multiLabels>
|
|
618
|
+
<Text text="Read-Through Miss Latencies" />
|
|
619
|
+
<Text text="Min Miss Latency (ms)" />
|
|
620
|
+
</ui:multiLabels>
|
|
621
|
+
<ui:template>
|
|
622
|
+
<Text text="{path: 'minMissLatency', type: 'sap.ui.model.type.Float', formatOptions: {style: 'short', decimals: 2}}" />
|
|
623
|
+
</ui:template>
|
|
624
|
+
</ui:Column>
|
|
625
|
+
<ui:Column width="120px" sortProperty="maxMissLatency" filterProperty="maxMissLatency">
|
|
626
|
+
<ui:multiLabels>
|
|
627
|
+
<Text text="Read-Through Miss Latencies" />
|
|
628
|
+
<Text text="Max Miss Latency (ms)" />
|
|
629
|
+
</ui:multiLabels>
|
|
630
|
+
<ui:template>
|
|
631
|
+
<Text text="{path: 'maxMissLatency', type: 'sap.ui.model.type.Float', formatOptions: {style: 'short', decimals: 2}}" />
|
|
632
|
+
</ui:template>
|
|
633
|
+
</ui:Column>
|
|
634
|
+
|
|
635
|
+
<!-- Native Function Operations -->
|
|
636
|
+
<ui:Column width="70px" sortProperty="nativeHits" filterProperty="nativeHits" headerSpan="4,1">
|
|
637
|
+
<ui:multiLabels>
|
|
638
|
+
<Text text="Native Function Operations" />
|
|
639
|
+
<Text text="Hits" />
|
|
640
|
+
</ui:multiLabels>
|
|
641
|
+
<ui:template>
|
|
642
|
+
<Text text="{nativeHits}" />
|
|
643
|
+
</ui:template>
|
|
644
|
+
</ui:Column>
|
|
645
|
+
<ui:Column width="70px" sortProperty="nativeMisses" filterProperty="nativeMisses">
|
|
646
|
+
<ui:multiLabels>
|
|
647
|
+
<Text text="Native Function Operations" />
|
|
648
|
+
<Text text="Misses" />
|
|
649
|
+
</ui:multiLabels>
|
|
650
|
+
<ui:template>
|
|
651
|
+
<Text text="{nativeMisses}" />
|
|
652
|
+
</ui:template>
|
|
653
|
+
</ui:Column>
|
|
654
|
+
<ui:Column width="70px" sortProperty="nativeSets" filterProperty="nativeSets">
|
|
655
|
+
<ui:multiLabels>
|
|
656
|
+
<Text text="Native Function Operations" />
|
|
657
|
+
<Text text="Sets" />
|
|
658
|
+
</ui:multiLabels>
|
|
659
|
+
<ui:template>
|
|
660
|
+
<Text text="{nativeSets}" />
|
|
661
|
+
</ui:template>
|
|
662
|
+
</ui:Column>
|
|
663
|
+
<ui:Column width="70px" sortProperty="nativeDeletes" filterProperty="nativeDeletes">
|
|
664
|
+
<ui:multiLabels>
|
|
665
|
+
<Text text="Native Function Operations" />
|
|
666
|
+
<Text text="Deletes" />
|
|
667
|
+
</ui:multiLabels>
|
|
668
|
+
<ui:template>
|
|
669
|
+
<Text text="{nativeDeletes}" />
|
|
670
|
+
</ui:template>
|
|
671
|
+
</ui:Column>
|
|
672
|
+
|
|
673
|
+
<!-- Context Information -->
|
|
674
|
+
|
|
675
|
+
|
|
676
|
+
<ui:Column width="100px" sortProperty="tenant" filterProperty="tenant" headerSpan="5,1">
|
|
677
|
+
<ui:multiLabels>
|
|
678
|
+
<Text text="Additional Information" />
|
|
679
|
+
<Text text="Tenant" />
|
|
680
|
+
</ui:multiLabels>
|
|
681
|
+
<ui:template>
|
|
682
|
+
<Text text="{tenant}" />
|
|
683
|
+
</ui:template>
|
|
684
|
+
</ui:Column>
|
|
685
|
+
<ui:Column width="100px" sortProperty="user" filterProperty="user">
|
|
686
|
+
<ui:multiLabels>
|
|
687
|
+
<Text text="Additional Information" />
|
|
688
|
+
<Text text="User" />
|
|
689
|
+
</ui:multiLabels>
|
|
690
|
+
<ui:template>
|
|
691
|
+
<Text text="{user}" />
|
|
692
|
+
</ui:template>
|
|
693
|
+
</ui:Column>
|
|
694
|
+
<ui:Column width="80px" sortProperty="locale" filterProperty="locale">
|
|
695
|
+
<ui:multiLabels>
|
|
696
|
+
<Text text="Additional Information" />
|
|
697
|
+
<Text text="Locale" />
|
|
698
|
+
</ui:multiLabels>
|
|
699
|
+
<ui:template>
|
|
700
|
+
<Text text="{locale}" />
|
|
701
|
+
</ui:template>
|
|
702
|
+
</ui:Column>
|
|
703
|
+
<ui:Column width="150px" sortProperty="lastAccess" filterProperty="lastAccess" >
|
|
704
|
+
<ui:multiLabels>
|
|
705
|
+
<Text text="Additional Information" />
|
|
706
|
+
<Text text="Last Access" />
|
|
707
|
+
</ui:multiLabels>
|
|
708
|
+
<ui:template>
|
|
709
|
+
<Text text="{ path: 'lastAccess'}" />
|
|
710
|
+
</ui:template>
|
|
711
|
+
</ui:Column>
|
|
712
|
+
<ui:Column width="150px" sortProperty="timestamp" filterProperty="timestamp">
|
|
713
|
+
<ui:multiLabels>
|
|
714
|
+
<Text text="Additional Information" />
|
|
715
|
+
<Text text="First Access" />
|
|
716
|
+
</ui:multiLabels>
|
|
717
|
+
<ui:template>
|
|
718
|
+
<Text text="{ path: 'timestamp'}" />
|
|
719
|
+
</ui:template>
|
|
720
|
+
</ui:Column>
|
|
721
|
+
</ui:columns>
|
|
722
|
+
</ui:Table>
|
|
723
|
+
|
|
724
|
+
</IconTabFilter>
|
|
725
|
+
<IconTabSeparator ></IconTabSeparator>
|
|
726
|
+
<IconTabFilter text="Browse Cache Entries" key="entries" icon="sap-icon://warning" iconColor="Critical">
|
|
727
|
+
<l:VerticalLayout width="100%">
|
|
728
|
+
<f:Card class="sapUiTinyMargin">
|
|
729
|
+
<f:header>
|
|
730
|
+
<card:Header title="Cache Entries" subtitle="Browse all cache entries (use with caution)" />
|
|
731
|
+
</f:header>
|
|
732
|
+
<f:content>
|
|
733
|
+
<l:VerticalLayout class="sapUiTinyMargin">
|
|
734
|
+
<MessageStrip text="Warning: Loading all cache entries may impact performance for large caches. Use the button below to load entries on demand." type="Warning" showIcon="true" class="sapUiTinyMarginBottom" />
|
|
735
|
+
|
|
736
|
+
<Button text="Load Cache Entries" icon="sap-icon://download" press="onLoadCacheEntries" type="Emphasized" class="sapUiTinyMarginBottom" />
|
|
737
|
+
|
|
738
|
+
<Table id="cacheEntriesTable" items="{ui>/cacheEntries}" busyIndicatorDelay="0" busy="{ui>/loadingEntries}" visible="{ui>/showEntriesTable}">
|
|
739
|
+
<columns>
|
|
740
|
+
<Column width="200px">
|
|
741
|
+
<Text text="Key" />
|
|
742
|
+
</Column>
|
|
743
|
+
<Column width="300px">
|
|
744
|
+
<Text text="Value" />
|
|
745
|
+
</Column>
|
|
746
|
+
<Column width="100px">
|
|
747
|
+
<Text text="Tags" />
|
|
748
|
+
</Column>
|
|
749
|
+
<Column width="150px">
|
|
750
|
+
<Text text="Timestamp" />
|
|
751
|
+
</Column>
|
|
752
|
+
|
|
753
|
+
</columns>
|
|
754
|
+
<items>
|
|
755
|
+
<ColumnListItem>
|
|
756
|
+
<cells>
|
|
757
|
+
<Text text="{ui>entryKey}" tooltip="{ui>entryKey}" />
|
|
758
|
+
<Text text="{ui>value}" tooltip="{ui>value}" />
|
|
759
|
+
<Text text="{ui>tags}" />
|
|
760
|
+
<Text text="{ path: 'ui>timestamp'}" />
|
|
761
|
+
</cells>
|
|
762
|
+
</ColumnListItem>
|
|
763
|
+
</items>
|
|
764
|
+
</Table>
|
|
765
|
+
</l:VerticalLayout>
|
|
766
|
+
</f:content>
|
|
767
|
+
</f:Card>
|
|
768
|
+
</l:VerticalLayout>
|
|
769
|
+
</IconTabFilter>
|
|
770
|
+
</items>
|
|
771
|
+
|
|
772
|
+
</IconTabBar>
|
|
773
|
+
|
|
774
|
+
|
|
775
|
+
</f:content>
|
|
776
|
+
</f:DynamicPage>
|
|
777
|
+
</mvc:View>
|