graphdb-workbench 2.2.1 → 2.2.2-TR2

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.
Files changed (118) hide show
  1. package/dist/{108.19b6e7d30df333e42876.bundle.js → 108.3c3f9c242e6a3e18fff5.bundle.js} +2 -2
  2. package/dist/108.3c3f9c242e6a3e18fff5.bundle.js.map +1 -0
  3. package/dist/11.f4c5533cd200c8568ff6.bundle.js +1 -1
  4. package/dist/11.f4c5533cd200c8568ff6.bundle.js.map +1 -1
  5. package/dist/111.a12fdfab1d11ab373ecf.bundle.js +2 -0
  6. package/dist/111.a12fdfab1d11ab373ecf.bundle.js.map +1 -0
  7. package/dist/112.8cd13d27736494201244.bundle.js +2 -0
  8. package/dist/112.8cd13d27736494201244.bundle.js.map +1 -0
  9. package/dist/{12.d9d71e44fdefd12ffbd9.bundle.js → 12.f348b65d06b0213c492e.bundle.js} +2 -2
  10. package/dist/12.f348b65d06b0213c492e.bundle.js.map +1 -0
  11. package/dist/{13.c983d32d3e92f49cd670.bundle.js → 13.fc8afecbe1a39b84c1db.bundle.js} +2 -2
  12. package/dist/13.fc8afecbe1a39b84c1db.bundle.js.map +1 -0
  13. package/dist/{14.8661d578dfadafbcdf84.bundle.js → 14.457cf038826e0d9e033e.bundle.js} +2 -2
  14. package/dist/14.457cf038826e0d9e033e.bundle.js.map +1 -0
  15. package/dist/148.dd250d3cc5aafade33c6.bundle.js +1 -1
  16. package/dist/148.dd250d3cc5aafade33c6.bundle.js.map +1 -1
  17. package/dist/{15.6eada6724367dcd05007.bundle.js → 15.874aa7b7f7972283a629.bundle.js} +2 -2
  18. package/dist/15.874aa7b7f7972283a629.bundle.js.map +1 -0
  19. package/dist/20.fbcb31706f03a07e8827.bundle.js +1 -1
  20. package/dist/20.fbcb31706f03a07e8827.bundle.js.map +1 -1
  21. package/dist/{21.7f0a59ea2ad9340dcb2f.bundle.js → 21.ea150df1291050bc1c4a.bundle.js} +2 -2
  22. package/dist/21.ea150df1291050bc1c4a.bundle.js.map +1 -0
  23. package/dist/27.83b24ef9ec0fd6964d92.bundle.js +1 -1
  24. package/dist/27.83b24ef9ec0fd6964d92.bundle.js.map +1 -1
  25. package/dist/33.4d23fa109c9184727386.bundle.js +1 -1
  26. package/dist/33.4d23fa109c9184727386.bundle.js.map +1 -1
  27. package/dist/34.f019d485e103b291488a.bundle.js +2 -0
  28. package/dist/34.f019d485e103b291488a.bundle.js.map +1 -0
  29. package/dist/40.50b40301c8cc69a70457.bundle.js +1 -1
  30. package/dist/40.50b40301c8cc69a70457.bundle.js.map +1 -1
  31. package/dist/44.568afd25b8a568b1c18d.bundle.js +2 -0
  32. package/dist/44.568afd25b8a568b1c18d.bundle.js.map +1 -0
  33. package/dist/45.ff1425adb8765ead76fa.bundle.js +2 -0
  34. package/dist/45.ff1425adb8765ead76fa.bundle.js.map +1 -0
  35. package/dist/46.e92017f79bee05197e4a.bundle.js +2 -0
  36. package/dist/46.e92017f79bee05197e4a.bundle.js.map +1 -0
  37. package/dist/47.099bba66b99e58961fd9.bundle.js +2 -0
  38. package/dist/47.099bba66b99e58961fd9.bundle.js.map +1 -0
  39. package/dist/48.5a84d14ed4cb41f91fca.bundle.js +2 -0
  40. package/dist/48.5a84d14ed4cb41f91fca.bundle.js.map +1 -0
  41. package/dist/49.ad3b75a5d0c8679165b9.bundle.js +2 -0
  42. package/dist/49.ad3b75a5d0c8679165b9.bundle.js.map +1 -0
  43. package/dist/50.5114c92299726180a264.bundle.js +2 -0
  44. package/dist/50.5114c92299726180a264.bundle.js.map +1 -0
  45. package/dist/51.f884748db1436a79a134.bundle.js +2 -0
  46. package/dist/51.f884748db1436a79a134.bundle.js.map +1 -0
  47. package/dist/52.351e9098a43e13a6f2da.bundle.js +2 -0
  48. package/dist/52.351e9098a43e13a6f2da.bundle.js.map +1 -0
  49. package/dist/94.38349f52df66313fbcc0.bundle.js +1 -1
  50. package/dist/94.38349f52df66313fbcc0.bundle.js.map +1 -1
  51. package/dist/{bundle.119af3621ec41f8cbf04.bundle.js → bundle.f540ee201846422b1cb9.bundle.js} +3 -3
  52. package/dist/bundle.f540ee201846422b1cb9.bundle.js.map +1 -0
  53. package/dist/css/jmx.css +11 -1
  54. package/dist/i18n/locale-en.json +22 -6
  55. package/dist/i18n/locale-fr.json +61 -15
  56. package/dist/index.html +3 -3
  57. package/dist/js/angular/core/directives/rdfresourcesearch/templates/rdfResourceSearchTemplate.html +1 -1
  58. package/dist/pages/autocomplete.html +1 -1
  59. package/dist/pages/choose-repository-type.html +1 -1
  60. package/dist/pages/cluster-management/clusterInfo.html +3 -3
  61. package/dist/pages/create-index.html +4 -4
  62. package/dist/pages/dependencies.html +1 -1
  63. package/dist/pages/domainRangeInfo.html +2 -2
  64. package/dist/pages/edit.html +1 -1
  65. package/dist/pages/explore.html +1 -1
  66. package/dist/pages/export.html +1 -1
  67. package/dist/pages/find.html +1 -1
  68. package/dist/pages/graph-config/saveGraphConfig.html +11 -11
  69. package/dist/pages/graphs-visualizations.html +7 -7
  70. package/dist/pages/guides.html +1 -1
  71. package/dist/pages/import.html +1 -1
  72. package/dist/pages/jdbc-create.html +5 -5
  73. package/dist/pages/monitor/queries.html +1 -1
  74. package/dist/pages/monitor/resources.html +121 -31
  75. package/dist/pages/namespaces.html +2 -2
  76. package/dist/pages/plugins.html +1 -1
  77. package/dist/pages/rdfClassHierarchyInfo.html +7 -7
  78. package/dist/pages/rdfrank.html +2 -2
  79. package/dist/pages/repositories.html +2 -2
  80. package/dist/pages/repository.html +2 -2
  81. package/dist/pages/similarity-indexes.html +1 -1
  82. package/dist/pages/sparql-template-create.html +5 -5
  83. package/dist/pages/sparql.html +3 -3
  84. package/dist/pages/webapi.html +2 -2
  85. package/dist/plugins.js +4 -3
  86. package/dist/res/swagger/index.html +27 -27
  87. package/package.json +1 -1
  88. package/dist/108.19b6e7d30df333e42876.bundle.js.map +0 -1
  89. package/dist/111.4845cf402b3a4c3c006c.bundle.js +0 -2
  90. package/dist/111.4845cf402b3a4c3c006c.bundle.js.map +0 -1
  91. package/dist/112.99c50f08e6724346dc3a.bundle.js +0 -2
  92. package/dist/112.99c50f08e6724346dc3a.bundle.js.map +0 -1
  93. package/dist/12.d9d71e44fdefd12ffbd9.bundle.js.map +0 -1
  94. package/dist/13.c983d32d3e92f49cd670.bundle.js.map +0 -1
  95. package/dist/14.8661d578dfadafbcdf84.bundle.js.map +0 -1
  96. package/dist/15.6eada6724367dcd05007.bundle.js.map +0 -1
  97. package/dist/21.7f0a59ea2ad9340dcb2f.bundle.js.map +0 -1
  98. package/dist/34.01b159cdf635ac9d0dd7.bundle.js +0 -2
  99. package/dist/34.01b159cdf635ac9d0dd7.bundle.js.map +0 -1
  100. package/dist/44.4d7cb09cdd1413d5f879.bundle.js +0 -2
  101. package/dist/44.4d7cb09cdd1413d5f879.bundle.js.map +0 -1
  102. package/dist/45.8c6f6eba4736e953c2bc.bundle.js +0 -2
  103. package/dist/45.8c6f6eba4736e953c2bc.bundle.js.map +0 -1
  104. package/dist/46.3a0da10162409588560c.bundle.js +0 -2
  105. package/dist/46.3a0da10162409588560c.bundle.js.map +0 -1
  106. package/dist/47.049aedaa6cfccef06f69.bundle.js +0 -2
  107. package/dist/47.049aedaa6cfccef06f69.bundle.js.map +0 -1
  108. package/dist/48.d7b02a85dfa52084b1c4.bundle.js +0 -2
  109. package/dist/48.d7b02a85dfa52084b1c4.bundle.js.map +0 -1
  110. package/dist/49.2e7858348448fdde1332.bundle.js +0 -2
  111. package/dist/49.2e7858348448fdde1332.bundle.js.map +0 -1
  112. package/dist/50.1650ec02515a7dce98a5.bundle.js +0 -2
  113. package/dist/50.1650ec02515a7dce98a5.bundle.js.map +0 -1
  114. package/dist/51.c597233d286f68e37481.bundle.js +0 -2
  115. package/dist/51.c597233d286f68e37481.bundle.js.map +0 -1
  116. package/dist/52.0ea1cd862aeb2461a9c4.bundle.js +0 -2
  117. package/dist/52.0ea1cd862aeb2461a9c4.bundle.js.map +0 -1
  118. package/dist/bundle.119af3621ec41f8cbf04.bundle.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["webpack:///./src/js/angular/resources/chart-models/chart-data.js","webpack:///./src/js/angular/resources/chart-models/performance/connections-chart.js"],"names":["ChartData","translateService","disableRangeUpdate","disableOldDataRemoval","filter","this","initialChartSetup","resetData","range","chartOptions","getDefaultChartOptions","chartSetup","dataHolder","createDataHolder","firstLoad","translateLabels","updateRange","forEach","series","index","originalKey","key","keyValues","title","enable","subTitleElements","map","keyValue","Array","isArray","value","length","values","join","label","undefined","html","subTitleElement","Error","timestamp","newData","removeOldData","addNewData","isFirstLoad","data","shift","multiplier","domainUpperBound","calculateMaxChartValueAndDivisions","chart","yDomain","interpolate","type","height","margin","left","right","x","d","y","clipEdge","noData","instant","showControls","duration","rightAlignYAxis","useInteractiveGuideline","xAxis","showMaxMin","tickFormat","d3","time","format","Date","yAxis","legend","maxKeyLength","color","COLORS","className","Math","max","disabled","flatMap","getMaxValueForDataSeries","dataSeries","maxDataValue","getMaxValueFromDataHolder","maxChartValue","round","DEFAULT_MULTIPLIER","ceil","MAXIMUM_DIVISIONS","divisions","i","floor","log","parseFloat","pow","toFixed","ConnectionsChart","super","tickValues","getIntegerRangeForValues","performanceData","push","activeTransactions","openConnections"],"mappings":"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","file":"45.ff1425adb8765ead76fa.bundle.js","sourcesContent":["export class ChartData {\n /**\n * Defines the default multiplier for chart overhead. The space above the maximum value.\n */\n static get DEFAULT_MULTIPLIER() {\n return 1.2;\n }\n\n /**\n * Defines the default divisions for chart. Used to calculate chart ticks.\n */\n static get MAXIMUM_DIVISIONS() {\n return 10;\n }\n\n static get COLORS() {\n return ['#003663', '#E84E0F', '#02A99A', '#999999'];\n }\n\n constructor(translateService, disableRangeUpdate, disableOldDataRemoval, filter) {\n this.filter = filter;\n this.initialChartSetup(translateService, disableRangeUpdate, disableOldDataRemoval);\n }\n\n initialChartSetup(translateService, disableRangeUpdate, disableOldDataRemoval, resetData = true) {\n this.disableRangeUpdate = disableRangeUpdate;\n this.disableOldDataRemoval = disableOldDataRemoval;\n this.translateService = translateService;\n this.range = 150;\n this.chartOptions = this.getDefaultChartOptions(translateService);\n this.chartSetup(this.chartOptions);\n if (resetData) {\n this.dataHolder = this.createDataHolder();\n this.firstLoad = true;\n }\n }\n\n refresh() {\n this.initialChartSetup(this.translateService, this.disableRangeUpdate, this.disableOldDataRemoval, false);\n this.translateLabels(this.dataHolder);\n this.updateRange(this.dataHolder);\n }\n\n\n /**\n * Hook used to translate all labels. Default implementation translates dataHolder series keys\n * @param dataHolder\n */\n translateLabels(dataHolder) {\n this.createDataHolder().forEach((series, index) => {\n if (dataHolder[index].originalKey) {\n dataHolder[index].originalKey = series.key;\n } else {\n dataHolder[index].key = series.key;\n }\n });\n }\n\n setSubTitle(keyValues) {\n this.chartOptions.title.enable = true;\n const subTitleElements = keyValues.map((keyValue) => {\n if (Array.isArray(keyValue.value) && !keyValue.value.length) {\n return;\n }\n const values = Array.isArray(keyValue.value) ? keyValue.value.join('/') : keyValue.value;\n return keyValue.label + (values !== undefined ? `<span class=\"data-value\">${values}</span>` : '');\n });\n this.chartOptions.title.html = subTitleElements.map((subTitleElement) => `<span class=\"info-element\">${subTitleElement}</span>`);\n }\n\n /**\n * Provides chart options if custom setup needs to be done\n * @param chartOptions\n */\n chartSetup(chartOptions) {\n }\n\n /**\n * Returns the data holder array for the chart data.\n * Must be implemented.\n */\n createDataHolder() {\n throw new Error('Must implement data holder creation');\n }\n\n /**\n * Adds data to the data holder\n * @param timestamp time of the data\n * @param newData the new data\n */\n addData(timestamp, newData) {\n this.removeOldData(this.dataHolder, this.range);\n this.addNewData(this.dataHolder, timestamp, newData, this.isFirstLoad());\n this.updateRange(this.dataHolder);\n if (this.firstLoad) {\n this.firstLoad = false;\n }\n }\n\n /**\n * Removes data from the data holder that is obsolete based on range property\n * @param dataHolder data holder\n * @param range the number of entries to keep\n */\n removeOldData(dataHolder, range) {\n if (this.disableOldDataRemoval) {\n return;\n }\n if (dataHolder[0].values.length > range) {\n dataHolder.forEach((data) => data.values.shift());\n }\n }\n\n /**\n * Adds data to data holder\n * Must be implemented.\n * @param dataHolder\n * @param timestamp\n * @param data\n * @param isFirstLoad\n */\n addNewData(dataHolder, timestamp, data, isFirstLoad) {\n }\n\n /**\n * Updates the chart axis range, based on maximum value in data holder\n * @param dataHolder\n * @param multiplier\n */\n updateRange(dataHolder, multiplier) {\n if (this.disableRangeUpdate) {\n return;\n }\n const [domainUpperBound] = ChartData.calculateMaxChartValueAndDivisions(dataHolder, multiplier);\n this.chartOptions.chart.yDomain = [0, domainUpperBound];\n }\n\n isFirstLoad() {\n return this.firstLoad;\n }\n\n getDefaultChartOptions(translateService) {\n return {\n chart: {\n interpolate: 'monotone',\n type: 'lineChart',\n height: 500,\n margin: {\n left: 80,\n right: 80\n },\n x: function (d) {\n return d[0];\n },\n y: function (d) {\n return d[1];\n },\n clipEdge: true,\n noData: translateService.instant('resource.no_data'),\n showControls: false,\n duration: 0,\n rightAlignYAxis: false,\n useInteractiveGuideline: true,\n xAxis: {\n showMaxMin: false,\n tickFormat: function (d) {\n return d3.time.format('%X')(new Date(d));\n }\n },\n yAxis: {\n showMaxMin: false,\n tickFormat: function (d) {\n return d;\n }\n },\n legend: {\n maxKeyLength: 100\n },\n color: ChartData.COLORS\n },\n title: {\n enable: true,\n className: 'chart-additional-info',\n html: ' '\n }\n };\n }\n\n /**\n * Returns the maximum value in data holder\n * @param dataHolder\n * @return {number}\n */\n static getMaxValueFromDataHolder(dataHolder) {\n return Math.max(...dataHolder.filter((data) => !data.disabled).flatMap((data) => ChartData.getMaxValueForDataSeries(data)));\n }\n\n /**\n * Returns the maximum value in specific data series\n * @param dataSeries\n * @return {number}\n */\n static getMaxValueForDataSeries(dataSeries) {\n return Math.max(...dataSeries.values.map((data) => data[1]));\n }\n\n /**\n * Calculated maximum value for chart axis and divisions width\n * @param dataHolder\n * @param multiplier\n * @return {(number|number)[]}\n */\n static calculateMaxChartValueAndDivisions(dataHolder, multiplier) {\n let maxDataValue;\n\n if (Array.isArray(dataHolder)) {\n maxDataValue = ChartData.getMaxValueFromDataHolder(dataHolder);\n } else {\n maxDataValue = ChartData.getMaxValueForDataSeries(dataHolder);\n }\n\n const maxChartValue = Math.round(maxDataValue * (multiplier || ChartData.DEFAULT_MULTIPLIER)) || 1;\n const div = Math.ceil(maxChartValue / ChartData.MAXIMUM_DIVISIONS);\n return [maxChartValue, div];\n }\n\n /**\n * Returnes a D3 range for chart axis based on maximum value and divisions width\n * @param dataHolder\n * @param multiplier\n * @return {*}\n */\n static getIntegerRangeForValues(dataHolder, multiplier) {\n const [maxChartValue, divisions] = ChartData.calculateMaxChartValueAndDivisions(dataHolder, multiplier);\n return d3.range(0, maxChartValue + 1, divisions);\n }\n\n static formatBytesValue(value, dataHolder) {\n let maxChartValue = value;\n if (dataHolder) {\n maxChartValue = Math.max(...dataHolder.filter((data)=> !data.disabled).flatMap((data) => data.values).flatMap((data) => data[1]));\n }\n\n const k = 1024;\n const i = Math.floor(Math.log(maxChartValue) / Math.log(k));\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n\n const relativeValue = parseFloat(value) / Math.pow(k, i);\n return `${relativeValue.toFixed(2)} ${sizes[i]}`;\n }\n\n formatNumber(value) {\n if (!value || !this.filter) {\n return;\n }\n // This may look strange, but I made it like this for consistency. When/if fixing it will be easier to find.\n return this.filter('currency')(value, '', 0);\n }\n}\n","import {ChartData} from \"../chart-data\";\n\nexport class ConnectionsChart extends ChartData {\n constructor(translateService) {\n super(translateService, false, false);\n }\n chartSetup(chartOptions) {\n chartOptions.chart.yAxis.tickValues = () => {\n return ConnectionsChart.getIntegerRangeForValues(this.dataHolder);\n };\n }\n\n createDataHolder() {\n return [{\n key: this.translateService.instant('resource.connections.active'),\n values: []\n }, {\n key: this.translateService.instant('resource.connections.open'),\n values: []\n }];\n }\n addNewData(dataHolder, timestamp, data) {\n const performanceData = data.performanceData;\n dataHolder[0].values.push([timestamp, performanceData.activeTransactions]);\n dataHolder[1].values.push([timestamp, performanceData.openConnections]);\n }\n}\n"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[46,111],{38:function(t,a,e){"use strict";e.r(a),e.d(a,"ChartData",(function(){return i}));class i{static get DEFAULT_MULTIPLIER(){return 1.2}static get MAXIMUM_DIVISIONS(){return 10}static get COLORS(){return["#003663","#E84E0F","#02A99A","#999999"]}constructor(t,a,e,i){this.filter=i,this.initialChartSetup(t,a,e)}initialChartSetup(t,a,e,i=!0){this.disableRangeUpdate=a,this.disableOldDataRemoval=e,this.translateService=t,this.range=150,this.chartOptions=this.getDefaultChartOptions(t),this.chartSetup(this.chartOptions),i&&(this.dataHolder=this.createDataHolder(),this.firstLoad=!0)}refresh(){this.initialChartSetup(this.translateService,this.disableRangeUpdate,this.disableOldDataRemoval,!1),this.translateLabels(this.dataHolder),this.updateRange(this.dataHolder)}translateLabels(t){this.createDataHolder().forEach((a,e)=>{t[e].originalKey?t[e].originalKey=a.key:t[e].key=a.key})}setSubTitle(t){this.chartOptions.title.enable=!0;const a=t.map(t=>{if(Array.isArray(t.value)&&!t.value.length)return;const a=Array.isArray(t.value)?t.value.join("/"):t.value;return t.label+(void 0!==a?`<span class="data-value">${a}</span>`:"")});this.chartOptions.title.html=a.map(t=>`<span class="info-element">${t}</span>`)}chartSetup(t){}createDataHolder(){throw new Error("Must implement data holder creation")}addData(t,a){this.removeOldData(this.dataHolder,this.range),this.addNewData(this.dataHolder,t,a,this.isFirstLoad()),this.updateRange(this.dataHolder),this.firstLoad&&(this.firstLoad=!1)}removeOldData(t,a){this.disableOldDataRemoval||t[0].values.length>a&&t.forEach(t=>t.values.shift())}addNewData(t,a,e,i){}updateRange(t,a){if(this.disableRangeUpdate)return;const[e]=i.calculateMaxChartValueAndDivisions(t,a);this.chartOptions.chart.yDomain=[0,e]}isFirstLoad(){return this.firstLoad}getDefaultChartOptions(t){return{chart:{interpolate:"monotone",type:"lineChart",height:500,margin:{left:80,right:80},x:function(t){return t[0]},y:function(t){return t[1]},clipEdge:!0,noData:t.instant("resource.no_data"),showControls:!1,duration:0,rightAlignYAxis:!1,useInteractiveGuideline:!0,xAxis:{showMaxMin:!1,tickFormat:function(t){return d3.time.format("%X")(new Date(t))}},yAxis:{showMaxMin:!1,tickFormat:function(t){return t}},legend:{maxKeyLength:100},color:i.COLORS},title:{enable:!0,className:"chart-additional-info",html:" "}}}static getMaxValueFromDataHolder(t){return Math.max(...t.filter(t=>!t.disabled).flatMap(t=>i.getMaxValueForDataSeries(t)))}static getMaxValueForDataSeries(t){return Math.max(...t.values.map(t=>t[1]))}static calculateMaxChartValueAndDivisions(t,a){let e;e=Array.isArray(t)?i.getMaxValueFromDataHolder(t):i.getMaxValueForDataSeries(t);const r=Math.round(e*(a||i.DEFAULT_MULTIPLIER))||1;return[r,Math.ceil(r/i.MAXIMUM_DIVISIONS)]}static getIntegerRangeForValues(t,a){const[e,r]=i.calculateMaxChartValueAndDivisions(t,a);return d3.range(0,e+1,r)}static formatBytesValue(t,a){let e=t;a&&(e=Math.max(...a.filter(t=>!t.disabled).flatMap(t=>t.values).flatMap(t=>t[1])));const i=Math.floor(Math.log(e)/Math.log(1024));return`${(parseFloat(t)/Math.pow(1024,i)).toFixed(2)} ${["Bytes","KB","MB","GB","TB","PB","EB","ZB","YB"][i]}`}formatNumber(t){if(t&&this.filter)return this.filter("currency")(t,"",0)}}},54:function(t,a,e){"use strict";e.r(a),e.d(a,"EpoolChart",(function(){return r}));var i=e(38);class r extends i.ChartData{constructor(t){super(t,!1,!1)}chartSetup(t){const a={type:"multiChart",yAxis1:{showMaxMin:!1,axisLabel:this.translateService.instant("resource.epool.reads"),axisLabelDistance:-10,rotateYLabel:!0,tickFormat:function(t){return t},tickValues:()=>r.getIntegerRangeForValues(this.dataHolder[0])},yAxis2:{showMaxMin:!1,axisLabel:this.translateService.instant("resource.epool.writes"),axisLabelDistance:-10,rotateYLabel:!0,tickFormat:function(t){return t},tickValues:()=>r.getIntegerRangeForValues(this.dataHolder[1])},y1Domain:[0,1],y2Domain:[0,1]};Object.assign(t.chart,a)}getTitle(){return this.translateService.instant("resource.epool.label")}createDataHolder(){return[{key:this.translateService.instant("resource.epool.reads"),type:"line",yAxis:1,values:[]},{key:this.translateService.instant("resource.epool.writes"),type:"line",yAxis:2,values:[]}]}addNewData(t,a,e,i){const r=e.performanceData,[s,n]=t;let l=0,o=0;const h=r.entityPool.epoolReads,u=r.entityPool.epoolWrites;if(!i){l=h-s.values[s.values.length-1][2],o=u-n.values[s.values.length-1][2]}s.values.push([a,l,h]),n.values.push([a,o,u])}updateRange(t){this.chartOptions.chart.yDomain1=this.getAxisDomain(t[0]),this.chartOptions.chart.yDomain2=this.getAxisDomain(t[1])}getAxisDomain(t){const[a]=r.calculateMaxChartValueAndDivisions(t);return[0,a]}}}}]);
2
+ //# sourceMappingURL=46.e92017f79bee05197e4a.bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["webpack:///./src/js/angular/resources/chart-models/chart-data.js","webpack:///./src/js/angular/resources/chart-models/performance/epool-chart.js"],"names":["ChartData","translateService","disableRangeUpdate","disableOldDataRemoval","filter","this","initialChartSetup","resetData","range","chartOptions","getDefaultChartOptions","chartSetup","dataHolder","createDataHolder","firstLoad","translateLabels","updateRange","forEach","series","index","originalKey","key","keyValues","title","enable","subTitleElements","map","keyValue","Array","isArray","value","length","values","join","label","undefined","html","subTitleElement","Error","timestamp","newData","removeOldData","addNewData","isFirstLoad","data","shift","multiplier","domainUpperBound","calculateMaxChartValueAndDivisions","chart","yDomain","interpolate","type","height","margin","left","right","x","d","y","clipEdge","noData","instant","showControls","duration","rightAlignYAxis","useInteractiveGuideline","xAxis","showMaxMin","tickFormat","d3","time","format","Date","yAxis","legend","maxKeyLength","color","COLORS","className","Math","max","disabled","flatMap","getMaxValueForDataSeries","dataSeries","maxDataValue","getMaxValueFromDataHolder","maxChartValue","round","DEFAULT_MULTIPLIER","ceil","MAXIMUM_DIVISIONS","divisions","i","floor","log","parseFloat","pow","toFixed","EpoolChart","super","customChartOptions","yAxis1","axisLabel","axisLabelDistance","rotateYLabel","tickValues","getIntegerRangeForValues","yAxis2","y1Domain","y2Domain","Object","assign","performanceData","readsData","writesData","readsDiff","writesDiff","currentReads","entityPool","epoolReads","currentWrites","epoolWrites","push","yDomain1","getAxisDomain","yDomain2"],"mappings":"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","file":"46.e92017f79bee05197e4a.bundle.js","sourcesContent":["export class ChartData {\n /**\n * Defines the default multiplier for chart overhead. The space above the maximum value.\n */\n static get DEFAULT_MULTIPLIER() {\n return 1.2;\n }\n\n /**\n * Defines the default divisions for chart. Used to calculate chart ticks.\n */\n static get MAXIMUM_DIVISIONS() {\n return 10;\n }\n\n static get COLORS() {\n return ['#003663', '#E84E0F', '#02A99A', '#999999'];\n }\n\n constructor(translateService, disableRangeUpdate, disableOldDataRemoval, filter) {\n this.filter = filter;\n this.initialChartSetup(translateService, disableRangeUpdate, disableOldDataRemoval);\n }\n\n initialChartSetup(translateService, disableRangeUpdate, disableOldDataRemoval, resetData = true) {\n this.disableRangeUpdate = disableRangeUpdate;\n this.disableOldDataRemoval = disableOldDataRemoval;\n this.translateService = translateService;\n this.range = 150;\n this.chartOptions = this.getDefaultChartOptions(translateService);\n this.chartSetup(this.chartOptions);\n if (resetData) {\n this.dataHolder = this.createDataHolder();\n this.firstLoad = true;\n }\n }\n\n refresh() {\n this.initialChartSetup(this.translateService, this.disableRangeUpdate, this.disableOldDataRemoval, false);\n this.translateLabels(this.dataHolder);\n this.updateRange(this.dataHolder);\n }\n\n\n /**\n * Hook used to translate all labels. Default implementation translates dataHolder series keys\n * @param dataHolder\n */\n translateLabels(dataHolder) {\n this.createDataHolder().forEach((series, index) => {\n if (dataHolder[index].originalKey) {\n dataHolder[index].originalKey = series.key;\n } else {\n dataHolder[index].key = series.key;\n }\n });\n }\n\n setSubTitle(keyValues) {\n this.chartOptions.title.enable = true;\n const subTitleElements = keyValues.map((keyValue) => {\n if (Array.isArray(keyValue.value) && !keyValue.value.length) {\n return;\n }\n const values = Array.isArray(keyValue.value) ? keyValue.value.join('/') : keyValue.value;\n return keyValue.label + (values !== undefined ? `<span class=\"data-value\">${values}</span>` : '');\n });\n this.chartOptions.title.html = subTitleElements.map((subTitleElement) => `<span class=\"info-element\">${subTitleElement}</span>`);\n }\n\n /**\n * Provides chart options if custom setup needs to be done\n * @param chartOptions\n */\n chartSetup(chartOptions) {\n }\n\n /**\n * Returns the data holder array for the chart data.\n * Must be implemented.\n */\n createDataHolder() {\n throw new Error('Must implement data holder creation');\n }\n\n /**\n * Adds data to the data holder\n * @param timestamp time of the data\n * @param newData the new data\n */\n addData(timestamp, newData) {\n this.removeOldData(this.dataHolder, this.range);\n this.addNewData(this.dataHolder, timestamp, newData, this.isFirstLoad());\n this.updateRange(this.dataHolder);\n if (this.firstLoad) {\n this.firstLoad = false;\n }\n }\n\n /**\n * Removes data from the data holder that is obsolete based on range property\n * @param dataHolder data holder\n * @param range the number of entries to keep\n */\n removeOldData(dataHolder, range) {\n if (this.disableOldDataRemoval) {\n return;\n }\n if (dataHolder[0].values.length > range) {\n dataHolder.forEach((data) => data.values.shift());\n }\n }\n\n /**\n * Adds data to data holder\n * Must be implemented.\n * @param dataHolder\n * @param timestamp\n * @param data\n * @param isFirstLoad\n */\n addNewData(dataHolder, timestamp, data, isFirstLoad) {\n }\n\n /**\n * Updates the chart axis range, based on maximum value in data holder\n * @param dataHolder\n * @param multiplier\n */\n updateRange(dataHolder, multiplier) {\n if (this.disableRangeUpdate) {\n return;\n }\n const [domainUpperBound] = ChartData.calculateMaxChartValueAndDivisions(dataHolder, multiplier);\n this.chartOptions.chart.yDomain = [0, domainUpperBound];\n }\n\n isFirstLoad() {\n return this.firstLoad;\n }\n\n getDefaultChartOptions(translateService) {\n return {\n chart: {\n interpolate: 'monotone',\n type: 'lineChart',\n height: 500,\n margin: {\n left: 80,\n right: 80\n },\n x: function (d) {\n return d[0];\n },\n y: function (d) {\n return d[1];\n },\n clipEdge: true,\n noData: translateService.instant('resource.no_data'),\n showControls: false,\n duration: 0,\n rightAlignYAxis: false,\n useInteractiveGuideline: true,\n xAxis: {\n showMaxMin: false,\n tickFormat: function (d) {\n return d3.time.format('%X')(new Date(d));\n }\n },\n yAxis: {\n showMaxMin: false,\n tickFormat: function (d) {\n return d;\n }\n },\n legend: {\n maxKeyLength: 100\n },\n color: ChartData.COLORS\n },\n title: {\n enable: true,\n className: 'chart-additional-info',\n html: ' '\n }\n };\n }\n\n /**\n * Returns the maximum value in data holder\n * @param dataHolder\n * @return {number}\n */\n static getMaxValueFromDataHolder(dataHolder) {\n return Math.max(...dataHolder.filter((data) => !data.disabled).flatMap((data) => ChartData.getMaxValueForDataSeries(data)));\n }\n\n /**\n * Returns the maximum value in specific data series\n * @param dataSeries\n * @return {number}\n */\n static getMaxValueForDataSeries(dataSeries) {\n return Math.max(...dataSeries.values.map((data) => data[1]));\n }\n\n /**\n * Calculated maximum value for chart axis and divisions width\n * @param dataHolder\n * @param multiplier\n * @return {(number|number)[]}\n */\n static calculateMaxChartValueAndDivisions(dataHolder, multiplier) {\n let maxDataValue;\n\n if (Array.isArray(dataHolder)) {\n maxDataValue = ChartData.getMaxValueFromDataHolder(dataHolder);\n } else {\n maxDataValue = ChartData.getMaxValueForDataSeries(dataHolder);\n }\n\n const maxChartValue = Math.round(maxDataValue * (multiplier || ChartData.DEFAULT_MULTIPLIER)) || 1;\n const div = Math.ceil(maxChartValue / ChartData.MAXIMUM_DIVISIONS);\n return [maxChartValue, div];\n }\n\n /**\n * Returnes a D3 range for chart axis based on maximum value and divisions width\n * @param dataHolder\n * @param multiplier\n * @return {*}\n */\n static getIntegerRangeForValues(dataHolder, multiplier) {\n const [maxChartValue, divisions] = ChartData.calculateMaxChartValueAndDivisions(dataHolder, multiplier);\n return d3.range(0, maxChartValue + 1, divisions);\n }\n\n static formatBytesValue(value, dataHolder) {\n let maxChartValue = value;\n if (dataHolder) {\n maxChartValue = Math.max(...dataHolder.filter((data)=> !data.disabled).flatMap((data) => data.values).flatMap((data) => data[1]));\n }\n\n const k = 1024;\n const i = Math.floor(Math.log(maxChartValue) / Math.log(k));\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n\n const relativeValue = parseFloat(value) / Math.pow(k, i);\n return `${relativeValue.toFixed(2)} ${sizes[i]}`;\n }\n\n formatNumber(value) {\n if (!value || !this.filter) {\n return;\n }\n // This may look strange, but I made it like this for consistency. When/if fixing it will be easier to find.\n return this.filter('currency')(value, '', 0);\n }\n}\n","import {ChartData} from \"../chart-data\";\n\nexport class EpoolChart extends ChartData {\n constructor(translateService) {\n super(translateService, false, false);\n }\n chartSetup(chartOptions) {\n const customChartOptions = {\n type: 'multiChart',\n yAxis1: {\n showMaxMin: false,\n axisLabel: this.translateService.instant('resource.epool.reads'),\n axisLabelDistance: -10,\n rotateYLabel: true,\n tickFormat: function(d) {\n return d;\n },\n tickValues: () => {\n return EpoolChart.getIntegerRangeForValues(this.dataHolder[0]);\n }\n },\n yAxis2: {\n showMaxMin: false,\n axisLabel: this.translateService.instant('resource.epool.writes'),\n axisLabelDistance: -10,\n rotateYLabel: true,\n tickFormat: function(d) {\n return d;\n },\n tickValues: () => {\n return EpoolChart.getIntegerRangeForValues(this.dataHolder[1]);\n }\n },\n y1Domain: [0, 1],\n y2Domain: [0, 1]\n };\n Object.assign(chartOptions.chart, customChartOptions);\n }\n\n getTitle() {\n return this.translateService.instant('resource.epool.label');\n }\n\n createDataHolder() {\n return [{\n key: this.translateService.instant('resource.epool.reads'),\n type: 'line',\n yAxis: 1,\n values: []\n }, {\n key: this.translateService.instant('resource.epool.writes'),\n type: 'line',\n yAxis: 2,\n values: []\n }];\n }\n addNewData(dataHolder, timestamp, data, isFirstLoad) {\n const performanceData = data.performanceData;\n const [readsData, writesData] = dataHolder;\n let readsDiff = 0;\n let writesDiff = 0;\n const currentReads = performanceData.entityPool.epoolReads;\n const currentWrites = performanceData.entityPool.epoolWrites;\n\n if (!isFirstLoad) {\n const lastReadsEntry = readsData.values[readsData.values.length - 1][2];\n const lastWritesEntry = writesData.values[readsData.values.length - 1][2];\n readsDiff = currentReads - lastReadsEntry;\n writesDiff = currentWrites - lastWritesEntry;\n }\n\n readsData.values.push([timestamp, readsDiff, currentReads]);\n writesData.values.push([timestamp, writesDiff, currentWrites]);\n }\n updateRange(dataHolder) {\n this.chartOptions.chart.yDomain1 = this.getAxisDomain(dataHolder[0]);\n this.chartOptions.chart.yDomain2 = this.getAxisDomain(dataHolder[1]);\n }\n getAxisDomain(dataHolder) {\n const [domainUpperBound] = EpoolChart.calculateMaxChartValueAndDivisions(dataHolder);\n return [0, domainUpperBound];\n }\n}\n"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[47,111],{38:function(t,a,e){"use strict";e.r(a),e.d(a,"ChartData",(function(){return r}));class r{static get DEFAULT_MULTIPLIER(){return 1.2}static get MAXIMUM_DIVISIONS(){return 10}static get COLORS(){return["#003663","#E84E0F","#02A99A","#999999"]}constructor(t,a,e,r){this.filter=r,this.initialChartSetup(t,a,e)}initialChartSetup(t,a,e,r=!0){this.disableRangeUpdate=a,this.disableOldDataRemoval=e,this.translateService=t,this.range=150,this.chartOptions=this.getDefaultChartOptions(t),this.chartSetup(this.chartOptions),r&&(this.dataHolder=this.createDataHolder(),this.firstLoad=!0)}refresh(){this.initialChartSetup(this.translateService,this.disableRangeUpdate,this.disableOldDataRemoval,!1),this.translateLabels(this.dataHolder),this.updateRange(this.dataHolder)}translateLabels(t){this.createDataHolder().forEach((a,e)=>{t[e].originalKey?t[e].originalKey=a.key:t[e].key=a.key})}setSubTitle(t){this.chartOptions.title.enable=!0;const a=t.map(t=>{if(Array.isArray(t.value)&&!t.value.length)return;const a=Array.isArray(t.value)?t.value.join("/"):t.value;return t.label+(void 0!==a?`<span class="data-value">${a}</span>`:"")});this.chartOptions.title.html=a.map(t=>`<span class="info-element">${t}</span>`)}chartSetup(t){}createDataHolder(){throw new Error("Must implement data holder creation")}addData(t,a){this.removeOldData(this.dataHolder,this.range),this.addNewData(this.dataHolder,t,a,this.isFirstLoad()),this.updateRange(this.dataHolder),this.firstLoad&&(this.firstLoad=!1)}removeOldData(t,a){this.disableOldDataRemoval||t[0].values.length>a&&t.forEach(t=>t.values.shift())}addNewData(t,a,e,r){}updateRange(t,a){if(this.disableRangeUpdate)return;const[e]=r.calculateMaxChartValueAndDivisions(t,a);this.chartOptions.chart.yDomain=[0,e]}isFirstLoad(){return this.firstLoad}getDefaultChartOptions(t){return{chart:{interpolate:"monotone",type:"lineChart",height:500,margin:{left:80,right:80},x:function(t){return t[0]},y:function(t){return t[1]},clipEdge:!0,noData:t.instant("resource.no_data"),showControls:!1,duration:0,rightAlignYAxis:!1,useInteractiveGuideline:!0,xAxis:{showMaxMin:!1,tickFormat:function(t){return d3.time.format("%X")(new Date(t))}},yAxis:{showMaxMin:!1,tickFormat:function(t){return t}},legend:{maxKeyLength:100},color:r.COLORS},title:{enable:!0,className:"chart-additional-info",html:" "}}}static getMaxValueFromDataHolder(t){return Math.max(...t.filter(t=>!t.disabled).flatMap(t=>r.getMaxValueForDataSeries(t)))}static getMaxValueForDataSeries(t){return Math.max(...t.values.map(t=>t[1]))}static calculateMaxChartValueAndDivisions(t,a){let e;e=Array.isArray(t)?r.getMaxValueFromDataHolder(t):r.getMaxValueForDataSeries(t);const i=Math.round(e*(a||r.DEFAULT_MULTIPLIER))||1;return[i,Math.ceil(i/r.MAXIMUM_DIVISIONS)]}static getIntegerRangeForValues(t,a){const[e,i]=r.calculateMaxChartValueAndDivisions(t,a);return d3.range(0,e+1,i)}static formatBytesValue(t,a){let e=t;a&&(e=Math.max(...a.filter(t=>!t.disabled).flatMap(t=>t.values).flatMap(t=>t[1])));const r=Math.floor(Math.log(e)/Math.log(1024));return`${(parseFloat(t)/Math.pow(1024,r)).toFixed(2)} ${["Bytes","KB","MB","GB","TB","PB","EB","ZB","YB"][r]}`}formatNumber(t){if(t&&this.filter)return this.filter("currency")(t,"",0)}}},50:function(t,a,e){"use strict";e.r(a),e.d(a,"QueriesChart",(function(){return i}));var r=e(38);class i extends r.ChartData{constructor(t){super(t,!1,!1)}chartSetup(t){t.chart.yAxis.tickValues=()=>i.getIntegerRangeForValues(this.dataHolder)}createDataHolder(){return[{key:this.translateService.instant("resource.queries.running"),values:[]}]}addNewData(t,a,e){const{activeQueryData:r,performanceData:i}=e;t[0].values.push([a,r.length]);const s=i.queries.slow,n=i.queries.suboptimal,l=[{label:this.translateService.instant("resource.queries.slow"),value:s},{label:this.translateService.instant("resource.queries.suboptimal"),value:n}];this.setSubTitle(l)}}}}]);
2
+ //# sourceMappingURL=47.099bba66b99e58961fd9.bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["webpack:///./src/js/angular/resources/chart-models/chart-data.js","webpack:///./src/js/angular/resources/chart-models/performance/queries-chart.js"],"names":["ChartData","translateService","disableRangeUpdate","disableOldDataRemoval","filter","this","initialChartSetup","resetData","range","chartOptions","getDefaultChartOptions","chartSetup","dataHolder","createDataHolder","firstLoad","translateLabels","updateRange","forEach","series","index","originalKey","key","keyValues","title","enable","subTitleElements","map","keyValue","Array","isArray","value","length","values","join","label","undefined","html","subTitleElement","Error","timestamp","newData","removeOldData","addNewData","isFirstLoad","data","shift","multiplier","domainUpperBound","calculateMaxChartValueAndDivisions","chart","yDomain","interpolate","type","height","margin","left","right","x","d","y","clipEdge","noData","instant","showControls","duration","rightAlignYAxis","useInteractiveGuideline","xAxis","showMaxMin","tickFormat","d3","time","format","Date","yAxis","legend","maxKeyLength","color","COLORS","className","Math","max","disabled","flatMap","getMaxValueForDataSeries","dataSeries","maxDataValue","getMaxValueFromDataHolder","maxChartValue","round","DEFAULT_MULTIPLIER","ceil","MAXIMUM_DIVISIONS","divisions","i","floor","log","parseFloat","pow","toFixed","QueriesChart","super","tickValues","getIntegerRangeForValues","activeQueryData","performanceData","push","slowQueries","queries","slow","suboptimal","subTitleKeyValues","setSubTitle"],"mappings":"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","file":"47.099bba66b99e58961fd9.bundle.js","sourcesContent":["export class ChartData {\n /**\n * Defines the default multiplier for chart overhead. The space above the maximum value.\n */\n static get DEFAULT_MULTIPLIER() {\n return 1.2;\n }\n\n /**\n * Defines the default divisions for chart. Used to calculate chart ticks.\n */\n static get MAXIMUM_DIVISIONS() {\n return 10;\n }\n\n static get COLORS() {\n return ['#003663', '#E84E0F', '#02A99A', '#999999'];\n }\n\n constructor(translateService, disableRangeUpdate, disableOldDataRemoval, filter) {\n this.filter = filter;\n this.initialChartSetup(translateService, disableRangeUpdate, disableOldDataRemoval);\n }\n\n initialChartSetup(translateService, disableRangeUpdate, disableOldDataRemoval, resetData = true) {\n this.disableRangeUpdate = disableRangeUpdate;\n this.disableOldDataRemoval = disableOldDataRemoval;\n this.translateService = translateService;\n this.range = 150;\n this.chartOptions = this.getDefaultChartOptions(translateService);\n this.chartSetup(this.chartOptions);\n if (resetData) {\n this.dataHolder = this.createDataHolder();\n this.firstLoad = true;\n }\n }\n\n refresh() {\n this.initialChartSetup(this.translateService, this.disableRangeUpdate, this.disableOldDataRemoval, false);\n this.translateLabels(this.dataHolder);\n this.updateRange(this.dataHolder);\n }\n\n\n /**\n * Hook used to translate all labels. Default implementation translates dataHolder series keys\n * @param dataHolder\n */\n translateLabels(dataHolder) {\n this.createDataHolder().forEach((series, index) => {\n if (dataHolder[index].originalKey) {\n dataHolder[index].originalKey = series.key;\n } else {\n dataHolder[index].key = series.key;\n }\n });\n }\n\n setSubTitle(keyValues) {\n this.chartOptions.title.enable = true;\n const subTitleElements = keyValues.map((keyValue) => {\n if (Array.isArray(keyValue.value) && !keyValue.value.length) {\n return;\n }\n const values = Array.isArray(keyValue.value) ? keyValue.value.join('/') : keyValue.value;\n return keyValue.label + (values !== undefined ? `<span class=\"data-value\">${values}</span>` : '');\n });\n this.chartOptions.title.html = subTitleElements.map((subTitleElement) => `<span class=\"info-element\">${subTitleElement}</span>`);\n }\n\n /**\n * Provides chart options if custom setup needs to be done\n * @param chartOptions\n */\n chartSetup(chartOptions) {\n }\n\n /**\n * Returns the data holder array for the chart data.\n * Must be implemented.\n */\n createDataHolder() {\n throw new Error('Must implement data holder creation');\n }\n\n /**\n * Adds data to the data holder\n * @param timestamp time of the data\n * @param newData the new data\n */\n addData(timestamp, newData) {\n this.removeOldData(this.dataHolder, this.range);\n this.addNewData(this.dataHolder, timestamp, newData, this.isFirstLoad());\n this.updateRange(this.dataHolder);\n if (this.firstLoad) {\n this.firstLoad = false;\n }\n }\n\n /**\n * Removes data from the data holder that is obsolete based on range property\n * @param dataHolder data holder\n * @param range the number of entries to keep\n */\n removeOldData(dataHolder, range) {\n if (this.disableOldDataRemoval) {\n return;\n }\n if (dataHolder[0].values.length > range) {\n dataHolder.forEach((data) => data.values.shift());\n }\n }\n\n /**\n * Adds data to data holder\n * Must be implemented.\n * @param dataHolder\n * @param timestamp\n * @param data\n * @param isFirstLoad\n */\n addNewData(dataHolder, timestamp, data, isFirstLoad) {\n }\n\n /**\n * Updates the chart axis range, based on maximum value in data holder\n * @param dataHolder\n * @param multiplier\n */\n updateRange(dataHolder, multiplier) {\n if (this.disableRangeUpdate) {\n return;\n }\n const [domainUpperBound] = ChartData.calculateMaxChartValueAndDivisions(dataHolder, multiplier);\n this.chartOptions.chart.yDomain = [0, domainUpperBound];\n }\n\n isFirstLoad() {\n return this.firstLoad;\n }\n\n getDefaultChartOptions(translateService) {\n return {\n chart: {\n interpolate: 'monotone',\n type: 'lineChart',\n height: 500,\n margin: {\n left: 80,\n right: 80\n },\n x: function (d) {\n return d[0];\n },\n y: function (d) {\n return d[1];\n },\n clipEdge: true,\n noData: translateService.instant('resource.no_data'),\n showControls: false,\n duration: 0,\n rightAlignYAxis: false,\n useInteractiveGuideline: true,\n xAxis: {\n showMaxMin: false,\n tickFormat: function (d) {\n return d3.time.format('%X')(new Date(d));\n }\n },\n yAxis: {\n showMaxMin: false,\n tickFormat: function (d) {\n return d;\n }\n },\n legend: {\n maxKeyLength: 100\n },\n color: ChartData.COLORS\n },\n title: {\n enable: true,\n className: 'chart-additional-info',\n html: ' '\n }\n };\n }\n\n /**\n * Returns the maximum value in data holder\n * @param dataHolder\n * @return {number}\n */\n static getMaxValueFromDataHolder(dataHolder) {\n return Math.max(...dataHolder.filter((data) => !data.disabled).flatMap((data) => ChartData.getMaxValueForDataSeries(data)));\n }\n\n /**\n * Returns the maximum value in specific data series\n * @param dataSeries\n * @return {number}\n */\n static getMaxValueForDataSeries(dataSeries) {\n return Math.max(...dataSeries.values.map((data) => data[1]));\n }\n\n /**\n * Calculated maximum value for chart axis and divisions width\n * @param dataHolder\n * @param multiplier\n * @return {(number|number)[]}\n */\n static calculateMaxChartValueAndDivisions(dataHolder, multiplier) {\n let maxDataValue;\n\n if (Array.isArray(dataHolder)) {\n maxDataValue = ChartData.getMaxValueFromDataHolder(dataHolder);\n } else {\n maxDataValue = ChartData.getMaxValueForDataSeries(dataHolder);\n }\n\n const maxChartValue = Math.round(maxDataValue * (multiplier || ChartData.DEFAULT_MULTIPLIER)) || 1;\n const div = Math.ceil(maxChartValue / ChartData.MAXIMUM_DIVISIONS);\n return [maxChartValue, div];\n }\n\n /**\n * Returnes a D3 range for chart axis based on maximum value and divisions width\n * @param dataHolder\n * @param multiplier\n * @return {*}\n */\n static getIntegerRangeForValues(dataHolder, multiplier) {\n const [maxChartValue, divisions] = ChartData.calculateMaxChartValueAndDivisions(dataHolder, multiplier);\n return d3.range(0, maxChartValue + 1, divisions);\n }\n\n static formatBytesValue(value, dataHolder) {\n let maxChartValue = value;\n if (dataHolder) {\n maxChartValue = Math.max(...dataHolder.filter((data)=> !data.disabled).flatMap((data) => data.values).flatMap((data) => data[1]));\n }\n\n const k = 1024;\n const i = Math.floor(Math.log(maxChartValue) / Math.log(k));\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n\n const relativeValue = parseFloat(value) / Math.pow(k, i);\n return `${relativeValue.toFixed(2)} ${sizes[i]}`;\n }\n\n formatNumber(value) {\n if (!value || !this.filter) {\n return;\n }\n // This may look strange, but I made it like this for consistency. When/if fixing it will be easier to find.\n return this.filter('currency')(value, '', 0);\n }\n}\n","import {ChartData} from \"../chart-data\";\n\nexport class QueriesChart extends ChartData {\n constructor(translateService) {\n super(translateService, false, false);\n }\n\n chartSetup(chartOptions) {\n chartOptions.chart.yAxis.tickValues = () => {\n return QueriesChart.getIntegerRangeForValues(this.dataHolder);\n };\n }\n\n createDataHolder() {\n return [{\n key: this.translateService.instant('resource.queries.running'),\n values: []\n }];\n }\n addNewData(dataHolder, timestamp, data) {\n const {activeQueryData, performanceData} = data;\n dataHolder[0].values.push([timestamp, activeQueryData.length]);\n\n const slowQueries = performanceData.queries.slow;\n const suboptimal = performanceData.queries.suboptimal;\n const subTitleKeyValues = [{\n label: this.translateService.instant('resource.queries.slow'),\n value: slowQueries\n }, {\n label: this.translateService.instant('resource.queries.suboptimal'),\n value: suboptimal\n }];\n this.setSubTitle(subTitleKeyValues);\n }\n}\n"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[48,111],{38:function(t,a,e){"use strict";e.r(a),e.d(a,"ChartData",(function(){return r}));class r{static get DEFAULT_MULTIPLIER(){return 1.2}static get MAXIMUM_DIVISIONS(){return 10}static get COLORS(){return["#003663","#E84E0F","#02A99A","#999999"]}constructor(t,a,e,r){this.filter=r,this.initialChartSetup(t,a,e)}initialChartSetup(t,a,e,r=!0){this.disableRangeUpdate=a,this.disableOldDataRemoval=e,this.translateService=t,this.range=150,this.chartOptions=this.getDefaultChartOptions(t),this.chartSetup(this.chartOptions),r&&(this.dataHolder=this.createDataHolder(),this.firstLoad=!0)}refresh(){this.initialChartSetup(this.translateService,this.disableRangeUpdate,this.disableOldDataRemoval,!1),this.translateLabels(this.dataHolder),this.updateRange(this.dataHolder)}translateLabels(t){this.createDataHolder().forEach((a,e)=>{t[e].originalKey?t[e].originalKey=a.key:t[e].key=a.key})}setSubTitle(t){this.chartOptions.title.enable=!0;const a=t.map(t=>{if(Array.isArray(t.value)&&!t.value.length)return;const a=Array.isArray(t.value)?t.value.join("/"):t.value;return t.label+(void 0!==a?`<span class="data-value">${a}</span>`:"")});this.chartOptions.title.html=a.map(t=>`<span class="info-element">${t}</span>`)}chartSetup(t){}createDataHolder(){throw new Error("Must implement data holder creation")}addData(t,a){this.removeOldData(this.dataHolder,this.range),this.addNewData(this.dataHolder,t,a,this.isFirstLoad()),this.updateRange(this.dataHolder),this.firstLoad&&(this.firstLoad=!1)}removeOldData(t,a){this.disableOldDataRemoval||t[0].values.length>a&&t.forEach(t=>t.values.shift())}addNewData(t,a,e,r){}updateRange(t,a){if(this.disableRangeUpdate)return;const[e]=r.calculateMaxChartValueAndDivisions(t,a);this.chartOptions.chart.yDomain=[0,e]}isFirstLoad(){return this.firstLoad}getDefaultChartOptions(t){return{chart:{interpolate:"monotone",type:"lineChart",height:500,margin:{left:80,right:80},x:function(t){return t[0]},y:function(t){return t[1]},clipEdge:!0,noData:t.instant("resource.no_data"),showControls:!1,duration:0,rightAlignYAxis:!1,useInteractiveGuideline:!0,xAxis:{showMaxMin:!1,tickFormat:function(t){return d3.time.format("%X")(new Date(t))}},yAxis:{showMaxMin:!1,tickFormat:function(t){return t}},legend:{maxKeyLength:100},color:r.COLORS},title:{enable:!0,className:"chart-additional-info",html:" "}}}static getMaxValueFromDataHolder(t){return Math.max(...t.filter(t=>!t.disabled).flatMap(t=>r.getMaxValueForDataSeries(t)))}static getMaxValueForDataSeries(t){return Math.max(...t.values.map(t=>t[1]))}static calculateMaxChartValueAndDivisions(t,a){let e;e=Array.isArray(t)?r.getMaxValueFromDataHolder(t):r.getMaxValueForDataSeries(t);const i=Math.round(e*(a||r.DEFAULT_MULTIPLIER))||1;return[i,Math.ceil(i/r.MAXIMUM_DIVISIONS)]}static getIntegerRangeForValues(t,a){const[e,i]=r.calculateMaxChartValueAndDivisions(t,a);return d3.range(0,e+1,i)}static formatBytesValue(t,a){let e=t;a&&(e=Math.max(...a.filter(t=>!t.disabled).flatMap(t=>t.values).flatMap(t=>t[1])));const r=Math.floor(Math.log(e)/Math.log(1024));return`${(parseFloat(t)/Math.pow(1024,r)).toFixed(2)} ${["Bytes","KB","MB","GB","TB","PB","EB","ZB","YB"][r]}`}formatNumber(t){if(t&&this.filter)return this.filter("currency")(t,"",0)}}},48:function(t,a,e){"use strict";e.r(a),e.d(a,"CpuLoadChart",(function(){return i}));var r=e(38);class i extends r.ChartData{constructor(t){super(t,!1,!1)}chartSetup(t){t.chart.yAxis.tickFormat=function(t){return t+"%"}}createDataHolder(){return[{key:this.translateService.instant("resource.system.cpu_load.label"),values:[]}]}addNewData(t,a,e){t[0].values.push([a,this.formatValue(e.cpuLoad)])}formatValue(t){return parseFloat(t).toFixed(4)}updateRange(t){const a=Math.max(...t[0].values.flatMap(t=>t[1])),e=a>50?100:2*a;this.chartOptions.chart.yDomain=[0,e]}}}}]);
2
+ //# sourceMappingURL=48.5a84d14ed4cb41f91fca.bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["webpack:///./src/js/angular/resources/chart-models/chart-data.js","webpack:///./src/js/angular/resources/chart-models/resource/cpu-load-chart.js"],"names":["ChartData","translateService","disableRangeUpdate","disableOldDataRemoval","filter","this","initialChartSetup","resetData","range","chartOptions","getDefaultChartOptions","chartSetup","dataHolder","createDataHolder","firstLoad","translateLabels","updateRange","forEach","series","index","originalKey","key","keyValues","title","enable","subTitleElements","map","keyValue","Array","isArray","value","length","values","join","label","undefined","html","subTitleElement","Error","timestamp","newData","removeOldData","addNewData","isFirstLoad","data","shift","multiplier","domainUpperBound","calculateMaxChartValueAndDivisions","chart","yDomain","interpolate","type","height","margin","left","right","x","d","y","clipEdge","noData","instant","showControls","duration","rightAlignYAxis","useInteractiveGuideline","xAxis","showMaxMin","tickFormat","d3","time","format","Date","yAxis","legend","maxKeyLength","color","COLORS","className","Math","max","disabled","flatMap","getMaxValueForDataSeries","dataSeries","maxDataValue","getMaxValueFromDataHolder","maxChartValue","round","DEFAULT_MULTIPLIER","ceil","MAXIMUM_DIVISIONS","divisions","i","floor","log","parseFloat","pow","toFixed","CpuLoadChart","super","push","formatValue","cpuLoad"],"mappings":"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","file":"48.5a84d14ed4cb41f91fca.bundle.js","sourcesContent":["export class ChartData {\n /**\n * Defines the default multiplier for chart overhead. The space above the maximum value.\n */\n static get DEFAULT_MULTIPLIER() {\n return 1.2;\n }\n\n /**\n * Defines the default divisions for chart. Used to calculate chart ticks.\n */\n static get MAXIMUM_DIVISIONS() {\n return 10;\n }\n\n static get COLORS() {\n return ['#003663', '#E84E0F', '#02A99A', '#999999'];\n }\n\n constructor(translateService, disableRangeUpdate, disableOldDataRemoval, filter) {\n this.filter = filter;\n this.initialChartSetup(translateService, disableRangeUpdate, disableOldDataRemoval);\n }\n\n initialChartSetup(translateService, disableRangeUpdate, disableOldDataRemoval, resetData = true) {\n this.disableRangeUpdate = disableRangeUpdate;\n this.disableOldDataRemoval = disableOldDataRemoval;\n this.translateService = translateService;\n this.range = 150;\n this.chartOptions = this.getDefaultChartOptions(translateService);\n this.chartSetup(this.chartOptions);\n if (resetData) {\n this.dataHolder = this.createDataHolder();\n this.firstLoad = true;\n }\n }\n\n refresh() {\n this.initialChartSetup(this.translateService, this.disableRangeUpdate, this.disableOldDataRemoval, false);\n this.translateLabels(this.dataHolder);\n this.updateRange(this.dataHolder);\n }\n\n\n /**\n * Hook used to translate all labels. Default implementation translates dataHolder series keys\n * @param dataHolder\n */\n translateLabels(dataHolder) {\n this.createDataHolder().forEach((series, index) => {\n if (dataHolder[index].originalKey) {\n dataHolder[index].originalKey = series.key;\n } else {\n dataHolder[index].key = series.key;\n }\n });\n }\n\n setSubTitle(keyValues) {\n this.chartOptions.title.enable = true;\n const subTitleElements = keyValues.map((keyValue) => {\n if (Array.isArray(keyValue.value) && !keyValue.value.length) {\n return;\n }\n const values = Array.isArray(keyValue.value) ? keyValue.value.join('/') : keyValue.value;\n return keyValue.label + (values !== undefined ? `<span class=\"data-value\">${values}</span>` : '');\n });\n this.chartOptions.title.html = subTitleElements.map((subTitleElement) => `<span class=\"info-element\">${subTitleElement}</span>`);\n }\n\n /**\n * Provides chart options if custom setup needs to be done\n * @param chartOptions\n */\n chartSetup(chartOptions) {\n }\n\n /**\n * Returns the data holder array for the chart data.\n * Must be implemented.\n */\n createDataHolder() {\n throw new Error('Must implement data holder creation');\n }\n\n /**\n * Adds data to the data holder\n * @param timestamp time of the data\n * @param newData the new data\n */\n addData(timestamp, newData) {\n this.removeOldData(this.dataHolder, this.range);\n this.addNewData(this.dataHolder, timestamp, newData, this.isFirstLoad());\n this.updateRange(this.dataHolder);\n if (this.firstLoad) {\n this.firstLoad = false;\n }\n }\n\n /**\n * Removes data from the data holder that is obsolete based on range property\n * @param dataHolder data holder\n * @param range the number of entries to keep\n */\n removeOldData(dataHolder, range) {\n if (this.disableOldDataRemoval) {\n return;\n }\n if (dataHolder[0].values.length > range) {\n dataHolder.forEach((data) => data.values.shift());\n }\n }\n\n /**\n * Adds data to data holder\n * Must be implemented.\n * @param dataHolder\n * @param timestamp\n * @param data\n * @param isFirstLoad\n */\n addNewData(dataHolder, timestamp, data, isFirstLoad) {\n }\n\n /**\n * Updates the chart axis range, based on maximum value in data holder\n * @param dataHolder\n * @param multiplier\n */\n updateRange(dataHolder, multiplier) {\n if (this.disableRangeUpdate) {\n return;\n }\n const [domainUpperBound] = ChartData.calculateMaxChartValueAndDivisions(dataHolder, multiplier);\n this.chartOptions.chart.yDomain = [0, domainUpperBound];\n }\n\n isFirstLoad() {\n return this.firstLoad;\n }\n\n getDefaultChartOptions(translateService) {\n return {\n chart: {\n interpolate: 'monotone',\n type: 'lineChart',\n height: 500,\n margin: {\n left: 80,\n right: 80\n },\n x: function (d) {\n return d[0];\n },\n y: function (d) {\n return d[1];\n },\n clipEdge: true,\n noData: translateService.instant('resource.no_data'),\n showControls: false,\n duration: 0,\n rightAlignYAxis: false,\n useInteractiveGuideline: true,\n xAxis: {\n showMaxMin: false,\n tickFormat: function (d) {\n return d3.time.format('%X')(new Date(d));\n }\n },\n yAxis: {\n showMaxMin: false,\n tickFormat: function (d) {\n return d;\n }\n },\n legend: {\n maxKeyLength: 100\n },\n color: ChartData.COLORS\n },\n title: {\n enable: true,\n className: 'chart-additional-info',\n html: ' '\n }\n };\n }\n\n /**\n * Returns the maximum value in data holder\n * @param dataHolder\n * @return {number}\n */\n static getMaxValueFromDataHolder(dataHolder) {\n return Math.max(...dataHolder.filter((data) => !data.disabled).flatMap((data) => ChartData.getMaxValueForDataSeries(data)));\n }\n\n /**\n * Returns the maximum value in specific data series\n * @param dataSeries\n * @return {number}\n */\n static getMaxValueForDataSeries(dataSeries) {\n return Math.max(...dataSeries.values.map((data) => data[1]));\n }\n\n /**\n * Calculated maximum value for chart axis and divisions width\n * @param dataHolder\n * @param multiplier\n * @return {(number|number)[]}\n */\n static calculateMaxChartValueAndDivisions(dataHolder, multiplier) {\n let maxDataValue;\n\n if (Array.isArray(dataHolder)) {\n maxDataValue = ChartData.getMaxValueFromDataHolder(dataHolder);\n } else {\n maxDataValue = ChartData.getMaxValueForDataSeries(dataHolder);\n }\n\n const maxChartValue = Math.round(maxDataValue * (multiplier || ChartData.DEFAULT_MULTIPLIER)) || 1;\n const div = Math.ceil(maxChartValue / ChartData.MAXIMUM_DIVISIONS);\n return [maxChartValue, div];\n }\n\n /**\n * Returnes a D3 range for chart axis based on maximum value and divisions width\n * @param dataHolder\n * @param multiplier\n * @return {*}\n */\n static getIntegerRangeForValues(dataHolder, multiplier) {\n const [maxChartValue, divisions] = ChartData.calculateMaxChartValueAndDivisions(dataHolder, multiplier);\n return d3.range(0, maxChartValue + 1, divisions);\n }\n\n static formatBytesValue(value, dataHolder) {\n let maxChartValue = value;\n if (dataHolder) {\n maxChartValue = Math.max(...dataHolder.filter((data)=> !data.disabled).flatMap((data) => data.values).flatMap((data) => data[1]));\n }\n\n const k = 1024;\n const i = Math.floor(Math.log(maxChartValue) / Math.log(k));\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n\n const relativeValue = parseFloat(value) / Math.pow(k, i);\n return `${relativeValue.toFixed(2)} ${sizes[i]}`;\n }\n\n formatNumber(value) {\n if (!value || !this.filter) {\n return;\n }\n // This may look strange, but I made it like this for consistency. When/if fixing it will be easier to find.\n return this.filter('currency')(value, '', 0);\n }\n}\n","import {ChartData} from \"../chart-data\";\n\nexport class CpuLoadChart extends ChartData {\n constructor(translateService) {\n super(translateService, false, false);\n }\n chartSetup(chartOptions) {\n chartOptions.chart.yAxis.tickFormat = function (d) {\n return d + '%';\n };\n }\n\n createDataHolder() {\n return [{\n key: this.translateService.instant('resource.system.cpu_load.label'),\n values: []\n }];\n }\n addNewData(dataHolder, timestamp, data) {\n dataHolder[0].values.push([timestamp, this.formatValue(data.cpuLoad)]);\n }\n formatValue(cpuLoad) {\n return parseFloat(cpuLoad).toFixed(4);\n }\n updateRange(dataHolder) {\n const maxChartValue = Math.max(...dataHolder[0].values.flatMap((data) => data[1]));\n const domainUpperBound = maxChartValue > 50 ? 100 : maxChartValue * 2;\n this.chartOptions.chart.yDomain = [0, domainUpperBound];\n }\n}\n"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[49,111],{38:function(t,e,a){"use strict";a.r(e),a.d(e,"ChartData",(function(){return r}));class r{static get DEFAULT_MULTIPLIER(){return 1.2}static get MAXIMUM_DIVISIONS(){return 10}static get COLORS(){return["#003663","#E84E0F","#02A99A","#999999"]}constructor(t,e,a,r){this.filter=r,this.initialChartSetup(t,e,a)}initialChartSetup(t,e,a,r=!0){this.disableRangeUpdate=e,this.disableOldDataRemoval=a,this.translateService=t,this.range=150,this.chartOptions=this.getDefaultChartOptions(t),this.chartSetup(this.chartOptions),r&&(this.dataHolder=this.createDataHolder(),this.firstLoad=!0)}refresh(){this.initialChartSetup(this.translateService,this.disableRangeUpdate,this.disableOldDataRemoval,!1),this.translateLabels(this.dataHolder),this.updateRange(this.dataHolder)}translateLabels(t){this.createDataHolder().forEach((e,a)=>{t[a].originalKey?t[a].originalKey=e.key:t[a].key=e.key})}setSubTitle(t){this.chartOptions.title.enable=!0;const e=t.map(t=>{if(Array.isArray(t.value)&&!t.value.length)return;const e=Array.isArray(t.value)?t.value.join("/"):t.value;return t.label+(void 0!==e?`<span class="data-value">${e}</span>`:"")});this.chartOptions.title.html=e.map(t=>`<span class="info-element">${t}</span>`)}chartSetup(t){}createDataHolder(){throw new Error("Must implement data holder creation")}addData(t,e){this.removeOldData(this.dataHolder,this.range),this.addNewData(this.dataHolder,t,e,this.isFirstLoad()),this.updateRange(this.dataHolder),this.firstLoad&&(this.firstLoad=!1)}removeOldData(t,e){this.disableOldDataRemoval||t[0].values.length>e&&t.forEach(t=>t.values.shift())}addNewData(t,e,a,r){}updateRange(t,e){if(this.disableRangeUpdate)return;const[a]=r.calculateMaxChartValueAndDivisions(t,e);this.chartOptions.chart.yDomain=[0,a]}isFirstLoad(){return this.firstLoad}getDefaultChartOptions(t){return{chart:{interpolate:"monotone",type:"lineChart",height:500,margin:{left:80,right:80},x:function(t){return t[0]},y:function(t){return t[1]},clipEdge:!0,noData:t.instant("resource.no_data"),showControls:!1,duration:0,rightAlignYAxis:!1,useInteractiveGuideline:!0,xAxis:{showMaxMin:!1,tickFormat:function(t){return d3.time.format("%X")(new Date(t))}},yAxis:{showMaxMin:!1,tickFormat:function(t){return t}},legend:{maxKeyLength:100},color:r.COLORS},title:{enable:!0,className:"chart-additional-info",html:" "}}}static getMaxValueFromDataHolder(t){return Math.max(...t.filter(t=>!t.disabled).flatMap(t=>r.getMaxValueForDataSeries(t)))}static getMaxValueForDataSeries(t){return Math.max(...t.values.map(t=>t[1]))}static calculateMaxChartValueAndDivisions(t,e){let a;a=Array.isArray(t)?r.getMaxValueFromDataHolder(t):r.getMaxValueForDataSeries(t);const s=Math.round(a*(e||r.DEFAULT_MULTIPLIER))||1;return[s,Math.ceil(s/r.MAXIMUM_DIVISIONS)]}static getIntegerRangeForValues(t,e){const[a,s]=r.calculateMaxChartValueAndDivisions(t,e);return d3.range(0,a+1,s)}static formatBytesValue(t,e){let a=t;e&&(a=Math.max(...e.filter(t=>!t.disabled).flatMap(t=>t.values).flatMap(t=>t[1])));const r=Math.floor(Math.log(a)/Math.log(1024));return`${(parseFloat(t)/Math.pow(1024,r)).toFixed(2)} ${["Bytes","KB","MB","GB","TB","PB","EB","ZB","YB"][r]}`}formatNumber(t){if(t&&this.filter)return this.filter("currency")(t,"",0)}}},49:function(t,e,a){"use strict";a.r(e),a.d(e,"DiskStorageChart",(function(){return s}));var r=a(38);class s extends r.ChartData{constructor(t){super(t,!0,!0)}chartSetup(t){Object.assign(t.chart,{type:"multiBarHorizontalChart",height:250,stacked:!0,showControls:!1,xAxis:{showMaxMin:!1,tickFormat:function(t){return t}},yAxis:{showMaxMin:!1,tickFormat:function(t){return(100*t).toFixed(2)+"%"}},yDomain:[0,1]})}translateLabels(t){if(!t)return;super.translateLabels(t);const[e,a]=t;e.values.length&&a.values.length&&(e.values[0][0]=this.translateService.instant("resource.storage.data"),e.values[1][0]=this.translateService.instant("resource.storage.work"),e.values[2][0]=this.translateService.instant("resource.storage.logs"),a.values[0][0]=this.translateService.instant("resource.storage.data"),a.values[1][0]=this.translateService.instant("resource.storage.work"),a.values[2][0]=this.translateService.instant("resource.storage.logs"))}createDataHolder(){return[{key:this.translateService.instant("resource.storage.used"),color:this.chartOptions.chart.color[1],values:[]},{key:this.translateService.instant("resource.storage.free"),color:this.chartOptions.chart.color[0],values:[]}]}addNewData(t,e,a,r){const i=a.storageMemory,[n,o]=t;r&&(n.values.push([this.translateService.instant("resource.storage.data"),0]),n.values.push([this.translateService.instant("resource.storage.work"),0]),n.values.push([this.translateService.instant("resource.storage.logs"),0]),o.values.push([this.translateService.instant("resource.storage.data"),1]),o.values.push([this.translateService.instant("resource.storage.work"),1]),o.values.push([this.translateService.instant("resource.storage.logs"),1]));const l=[{label:this.translateService.instant("resource.storage.subtitle.data"),value:[s.formatBytesValue(i.dataDirUsed),s.formatBytesValue(i.dataDirFree)]},{label:this.translateService.instant("resource.storage.subtitle.work"),value:[s.formatBytesValue(i.workDirUsed),s.formatBytesValue(i.workDirFree)]},{label:this.translateService.instant("resource.storage.subtitle.logs"),value:[s.formatBytesValue(i.logsDirUsed),s.formatBytesValue(i.logsDirFree)]}];this.setSubTitle(l);const u=i.dataDirUsed+i.dataDirFree,h=i.workDirUsed+i.workDirFree,c=i.logsDirUsed+i.logsDirFree;n.values[0][1]=i.dataDirUsed/u,n.values[1][1]=i.workDirUsed/h,n.values[2][1]=i.logsDirUsed/c,o.values[0][1]=i.dataDirFree/u,o.values[1][1]=i.workDirFree/h,o.values[2][1]=i.logsDirFree/c}}}}]);
2
+ //# sourceMappingURL=49.ad3b75a5d0c8679165b9.bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["webpack:///./src/js/angular/resources/chart-models/chart-data.js","webpack:///./src/js/angular/resources/chart-models/resource/disk-storage-chart.js"],"names":["ChartData","translateService","disableRangeUpdate","disableOldDataRemoval","filter","this","initialChartSetup","resetData","range","chartOptions","getDefaultChartOptions","chartSetup","dataHolder","createDataHolder","firstLoad","translateLabels","updateRange","forEach","series","index","originalKey","key","keyValues","title","enable","subTitleElements","map","keyValue","Array","isArray","value","length","values","join","label","undefined","html","subTitleElement","Error","timestamp","newData","removeOldData","addNewData","isFirstLoad","data","shift","multiplier","domainUpperBound","calculateMaxChartValueAndDivisions","chart","yDomain","interpolate","type","height","margin","left","right","x","d","y","clipEdge","noData","instant","showControls","duration","rightAlignYAxis","useInteractiveGuideline","xAxis","showMaxMin","tickFormat","d3","time","format","Date","yAxis","legend","maxKeyLength","color","COLORS","className","Math","max","disabled","flatMap","getMaxValueForDataSeries","dataSeries","maxDataValue","getMaxValueFromDataHolder","maxChartValue","round","DEFAULT_MULTIPLIER","ceil","MAXIMUM_DIVISIONS","divisions","i","floor","log","parseFloat","pow","toFixed","DiskStorageChart","super","Object","assign","stacked","used","free","storageData","storageMemory","push","subTitleKeyValues","formatBytesValue","dataDirUsed","dataDirFree","workDirUsed","workDirFree","logsDirUsed","logsDirFree","setSubTitle","totalData","totalWork","totalLogs"],"mappings":"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","file":"49.ad3b75a5d0c8679165b9.bundle.js","sourcesContent":["export class ChartData {\n /**\n * Defines the default multiplier for chart overhead. The space above the maximum value.\n */\n static get DEFAULT_MULTIPLIER() {\n return 1.2;\n }\n\n /**\n * Defines the default divisions for chart. Used to calculate chart ticks.\n */\n static get MAXIMUM_DIVISIONS() {\n return 10;\n }\n\n static get COLORS() {\n return ['#003663', '#E84E0F', '#02A99A', '#999999'];\n }\n\n constructor(translateService, disableRangeUpdate, disableOldDataRemoval, filter) {\n this.filter = filter;\n this.initialChartSetup(translateService, disableRangeUpdate, disableOldDataRemoval);\n }\n\n initialChartSetup(translateService, disableRangeUpdate, disableOldDataRemoval, resetData = true) {\n this.disableRangeUpdate = disableRangeUpdate;\n this.disableOldDataRemoval = disableOldDataRemoval;\n this.translateService = translateService;\n this.range = 150;\n this.chartOptions = this.getDefaultChartOptions(translateService);\n this.chartSetup(this.chartOptions);\n if (resetData) {\n this.dataHolder = this.createDataHolder();\n this.firstLoad = true;\n }\n }\n\n refresh() {\n this.initialChartSetup(this.translateService, this.disableRangeUpdate, this.disableOldDataRemoval, false);\n this.translateLabels(this.dataHolder);\n this.updateRange(this.dataHolder);\n }\n\n\n /**\n * Hook used to translate all labels. Default implementation translates dataHolder series keys\n * @param dataHolder\n */\n translateLabels(dataHolder) {\n this.createDataHolder().forEach((series, index) => {\n if (dataHolder[index].originalKey) {\n dataHolder[index].originalKey = series.key;\n } else {\n dataHolder[index].key = series.key;\n }\n });\n }\n\n setSubTitle(keyValues) {\n this.chartOptions.title.enable = true;\n const subTitleElements = keyValues.map((keyValue) => {\n if (Array.isArray(keyValue.value) && !keyValue.value.length) {\n return;\n }\n const values = Array.isArray(keyValue.value) ? keyValue.value.join('/') : keyValue.value;\n return keyValue.label + (values !== undefined ? `<span class=\"data-value\">${values}</span>` : '');\n });\n this.chartOptions.title.html = subTitleElements.map((subTitleElement) => `<span class=\"info-element\">${subTitleElement}</span>`);\n }\n\n /**\n * Provides chart options if custom setup needs to be done\n * @param chartOptions\n */\n chartSetup(chartOptions) {\n }\n\n /**\n * Returns the data holder array for the chart data.\n * Must be implemented.\n */\n createDataHolder() {\n throw new Error('Must implement data holder creation');\n }\n\n /**\n * Adds data to the data holder\n * @param timestamp time of the data\n * @param newData the new data\n */\n addData(timestamp, newData) {\n this.removeOldData(this.dataHolder, this.range);\n this.addNewData(this.dataHolder, timestamp, newData, this.isFirstLoad());\n this.updateRange(this.dataHolder);\n if (this.firstLoad) {\n this.firstLoad = false;\n }\n }\n\n /**\n * Removes data from the data holder that is obsolete based on range property\n * @param dataHolder data holder\n * @param range the number of entries to keep\n */\n removeOldData(dataHolder, range) {\n if (this.disableOldDataRemoval) {\n return;\n }\n if (dataHolder[0].values.length > range) {\n dataHolder.forEach((data) => data.values.shift());\n }\n }\n\n /**\n * Adds data to data holder\n * Must be implemented.\n * @param dataHolder\n * @param timestamp\n * @param data\n * @param isFirstLoad\n */\n addNewData(dataHolder, timestamp, data, isFirstLoad) {\n }\n\n /**\n * Updates the chart axis range, based on maximum value in data holder\n * @param dataHolder\n * @param multiplier\n */\n updateRange(dataHolder, multiplier) {\n if (this.disableRangeUpdate) {\n return;\n }\n const [domainUpperBound] = ChartData.calculateMaxChartValueAndDivisions(dataHolder, multiplier);\n this.chartOptions.chart.yDomain = [0, domainUpperBound];\n }\n\n isFirstLoad() {\n return this.firstLoad;\n }\n\n getDefaultChartOptions(translateService) {\n return {\n chart: {\n interpolate: 'monotone',\n type: 'lineChart',\n height: 500,\n margin: {\n left: 80,\n right: 80\n },\n x: function (d) {\n return d[0];\n },\n y: function (d) {\n return d[1];\n },\n clipEdge: true,\n noData: translateService.instant('resource.no_data'),\n showControls: false,\n duration: 0,\n rightAlignYAxis: false,\n useInteractiveGuideline: true,\n xAxis: {\n showMaxMin: false,\n tickFormat: function (d) {\n return d3.time.format('%X')(new Date(d));\n }\n },\n yAxis: {\n showMaxMin: false,\n tickFormat: function (d) {\n return d;\n }\n },\n legend: {\n maxKeyLength: 100\n },\n color: ChartData.COLORS\n },\n title: {\n enable: true,\n className: 'chart-additional-info',\n html: ' '\n }\n };\n }\n\n /**\n * Returns the maximum value in data holder\n * @param dataHolder\n * @return {number}\n */\n static getMaxValueFromDataHolder(dataHolder) {\n return Math.max(...dataHolder.filter((data) => !data.disabled).flatMap((data) => ChartData.getMaxValueForDataSeries(data)));\n }\n\n /**\n * Returns the maximum value in specific data series\n * @param dataSeries\n * @return {number}\n */\n static getMaxValueForDataSeries(dataSeries) {\n return Math.max(...dataSeries.values.map((data) => data[1]));\n }\n\n /**\n * Calculated maximum value for chart axis and divisions width\n * @param dataHolder\n * @param multiplier\n * @return {(number|number)[]}\n */\n static calculateMaxChartValueAndDivisions(dataHolder, multiplier) {\n let maxDataValue;\n\n if (Array.isArray(dataHolder)) {\n maxDataValue = ChartData.getMaxValueFromDataHolder(dataHolder);\n } else {\n maxDataValue = ChartData.getMaxValueForDataSeries(dataHolder);\n }\n\n const maxChartValue = Math.round(maxDataValue * (multiplier || ChartData.DEFAULT_MULTIPLIER)) || 1;\n const div = Math.ceil(maxChartValue / ChartData.MAXIMUM_DIVISIONS);\n return [maxChartValue, div];\n }\n\n /**\n * Returnes a D3 range for chart axis based on maximum value and divisions width\n * @param dataHolder\n * @param multiplier\n * @return {*}\n */\n static getIntegerRangeForValues(dataHolder, multiplier) {\n const [maxChartValue, divisions] = ChartData.calculateMaxChartValueAndDivisions(dataHolder, multiplier);\n return d3.range(0, maxChartValue + 1, divisions);\n }\n\n static formatBytesValue(value, dataHolder) {\n let maxChartValue = value;\n if (dataHolder) {\n maxChartValue = Math.max(...dataHolder.filter((data)=> !data.disabled).flatMap((data) => data.values).flatMap((data) => data[1]));\n }\n\n const k = 1024;\n const i = Math.floor(Math.log(maxChartValue) / Math.log(k));\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n\n const relativeValue = parseFloat(value) / Math.pow(k, i);\n return `${relativeValue.toFixed(2)} ${sizes[i]}`;\n }\n\n formatNumber(value) {\n if (!value || !this.filter) {\n return;\n }\n // This may look strange, but I made it like this for consistency. When/if fixing it will be easier to find.\n return this.filter('currency')(value, '', 0);\n }\n}\n","import {ChartData} from \"../chart-data\";\n\nexport class DiskStorageChart extends ChartData {\n constructor(translateService) {\n super(translateService, true, true);\n }\n chartSetup(chartOptions) {\n const diskStorageChartOptions = {\n type: 'multiBarHorizontalChart',\n height: 250,\n stacked: true,\n showControls: false,\n xAxis: {\n showMaxMin: false,\n tickFormat: function (d) {\n return d;\n }\n },\n yAxis: {\n showMaxMin: false,\n tickFormat: function (d) {\n return (d * 100).toFixed(2) + '%';\n }\n },\n yDomain: [0, 1]\n };\n Object.assign(chartOptions.chart, diskStorageChartOptions);\n }\n\n translateLabels(dataHolder) {\n if (!dataHolder) {\n return;\n }\n super.translateLabels(dataHolder);\n const [used, free] = dataHolder;\n if (!used.values.length || !free.values.length) {\n return;\n }\n used.values[0][0] = this.translateService.instant('resource.storage.data');\n used.values[1][0] = this.translateService.instant('resource.storage.work');\n used.values[2][0] = this.translateService.instant('resource.storage.logs');\n free.values[0][0] = this.translateService.instant('resource.storage.data');\n free.values[1][0] = this.translateService.instant('resource.storage.work');\n free.values[2][0] = this.translateService.instant('resource.storage.logs');\n }\n\n createDataHolder() {\n return [{\n key: this.translateService.instant('resource.storage.used'),\n color: this.chartOptions.chart.color[1],\n values: []\n }, {\n key: this.translateService.instant('resource.storage.free'),\n color: this.chartOptions.chart.color[0],\n values: []\n }];\n }\n\n addNewData(dataHolder, timestamp, data, isFirstLoad) {\n const storageData = data.storageMemory;\n const [used, free] = dataHolder;\n\n if (isFirstLoad) {\n used.values.push([this.translateService.instant('resource.storage.data'), 0]);\n used.values.push([this.translateService.instant('resource.storage.work'), 0]);\n used.values.push([this.translateService.instant('resource.storage.logs'), 0]);\n free.values.push([this.translateService.instant('resource.storage.data'), 1]);\n free.values.push([this.translateService.instant('resource.storage.work'), 1]);\n free.values.push([this.translateService.instant('resource.storage.logs'), 1]);\n }\n\n const subTitleKeyValues = [{\n label: this.translateService.instant('resource.storage.subtitle.data'),\n value: [DiskStorageChart.formatBytesValue(storageData.dataDirUsed), DiskStorageChart.formatBytesValue(storageData.dataDirFree)]\n }, {\n label: this.translateService.instant('resource.storage.subtitle.work'),\n value: [DiskStorageChart.formatBytesValue(storageData.workDirUsed), DiskStorageChart.formatBytesValue(storageData.workDirFree)]\n }, {\n label: this.translateService.instant('resource.storage.subtitle.logs'),\n value: [DiskStorageChart.formatBytesValue(storageData.logsDirUsed), DiskStorageChart.formatBytesValue(storageData.logsDirFree)]\n }];\n this.setSubTitle(subTitleKeyValues);\n\n const totalData = storageData.dataDirUsed + storageData.dataDirFree;\n const totalWork = storageData.workDirUsed + storageData.workDirFree;\n const totalLogs = storageData.logsDirUsed + storageData.logsDirFree;\n\n used.values[0][1] = storageData.dataDirUsed / totalData;\n used.values[1][1] = storageData.workDirUsed / totalWork;\n used.values[2][1] = storageData.logsDirUsed / totalLogs;\n free.values[0][1] = storageData.dataDirFree / totalData;\n free.values[1][1] = storageData.workDirFree / totalWork;\n free.values[2][1] = storageData.logsDirFree / totalLogs;\n }\n}\n"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[50,111],{38:function(t,a,e){"use strict";e.r(a),e.d(a,"ChartData",(function(){return r}));class r{static get DEFAULT_MULTIPLIER(){return 1.2}static get MAXIMUM_DIVISIONS(){return 10}static get COLORS(){return["#003663","#E84E0F","#02A99A","#999999"]}constructor(t,a,e,r){this.filter=r,this.initialChartSetup(t,a,e)}initialChartSetup(t,a,e,r=!0){this.disableRangeUpdate=a,this.disableOldDataRemoval=e,this.translateService=t,this.range=150,this.chartOptions=this.getDefaultChartOptions(t),this.chartSetup(this.chartOptions),r&&(this.dataHolder=this.createDataHolder(),this.firstLoad=!0)}refresh(){this.initialChartSetup(this.translateService,this.disableRangeUpdate,this.disableOldDataRemoval,!1),this.translateLabels(this.dataHolder),this.updateRange(this.dataHolder)}translateLabels(t){this.createDataHolder().forEach((a,e)=>{t[e].originalKey?t[e].originalKey=a.key:t[e].key=a.key})}setSubTitle(t){this.chartOptions.title.enable=!0;const a=t.map(t=>{if(Array.isArray(t.value)&&!t.value.length)return;const a=Array.isArray(t.value)?t.value.join("/"):t.value;return t.label+(void 0!==a?`<span class="data-value">${a}</span>`:"")});this.chartOptions.title.html=a.map(t=>`<span class="info-element">${t}</span>`)}chartSetup(t){}createDataHolder(){throw new Error("Must implement data holder creation")}addData(t,a){this.removeOldData(this.dataHolder,this.range),this.addNewData(this.dataHolder,t,a,this.isFirstLoad()),this.updateRange(this.dataHolder),this.firstLoad&&(this.firstLoad=!1)}removeOldData(t,a){this.disableOldDataRemoval||t[0].values.length>a&&t.forEach(t=>t.values.shift())}addNewData(t,a,e,r){}updateRange(t,a){if(this.disableRangeUpdate)return;const[e]=r.calculateMaxChartValueAndDivisions(t,a);this.chartOptions.chart.yDomain=[0,e]}isFirstLoad(){return this.firstLoad}getDefaultChartOptions(t){return{chart:{interpolate:"monotone",type:"lineChart",height:500,margin:{left:80,right:80},x:function(t){return t[0]},y:function(t){return t[1]},clipEdge:!0,noData:t.instant("resource.no_data"),showControls:!1,duration:0,rightAlignYAxis:!1,useInteractiveGuideline:!0,xAxis:{showMaxMin:!1,tickFormat:function(t){return d3.time.format("%X")(new Date(t))}},yAxis:{showMaxMin:!1,tickFormat:function(t){return t}},legend:{maxKeyLength:100},color:r.COLORS},title:{enable:!0,className:"chart-additional-info",html:" "}}}static getMaxValueFromDataHolder(t){return Math.max(...t.filter(t=>!t.disabled).flatMap(t=>r.getMaxValueForDataSeries(t)))}static getMaxValueForDataSeries(t){return Math.max(...t.values.map(t=>t[1]))}static calculateMaxChartValueAndDivisions(t,a){let e;e=Array.isArray(t)?r.getMaxValueFromDataHolder(t):r.getMaxValueForDataSeries(t);const i=Math.round(e*(a||r.DEFAULT_MULTIPLIER))||1;return[i,Math.ceil(i/r.MAXIMUM_DIVISIONS)]}static getIntegerRangeForValues(t,a){const[e,i]=r.calculateMaxChartValueAndDivisions(t,a);return d3.range(0,e+1,i)}static formatBytesValue(t,a){let e=t;a&&(e=Math.max(...a.filter(t=>!t.disabled).flatMap(t=>t.values).flatMap(t=>t[1])));const r=Math.floor(Math.log(e)/Math.log(1024));return`${(parseFloat(t)/Math.pow(1024,r)).toFixed(2)} ${["Bytes","KB","MB","GB","TB","PB","EB","ZB","YB"][r]}`}formatNumber(t){if(t&&this.filter)return this.filter("currency")(t,"",0)}}},46:function(t,a,e){"use strict";e.r(a),e.d(a,"FileDescriptorsChart",(function(){return i}));var r=e(38);class i extends r.ChartData{constructor(t,a){super(t,!1,!1,a)}chartSetup(t){t.chart.yAxis.tickFormat=t=>this.formatNumber(t),t.chart.color=[t.chart.color[1]]}createDataHolder(){return[{key:this.translateService.instant("resource.system.file_descriptors.open"),area:"true",values:[]}]}addNewData(t,a,e){if(!e.openFileDescriptors){const t=[{label:this.translateService.instant("resource.system.file_descriptors.only_unix")}];return void this.setSubTitle(t)}t[0].values.push([a,e.openFileDescriptors]);const r=[{label:this.translateService.instant("resource.system.file_descriptors.max"),value:this.formatNumber(e.maxFileDescriptors)}];this.setSubTitle(r)}updateRange(t){super.updateRange(t,2)}}}}]);
2
+ //# sourceMappingURL=50.5114c92299726180a264.bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["webpack:///./src/js/angular/resources/chart-models/chart-data.js","webpack:///./src/js/angular/resources/chart-models/resource/file-descriptors-chart.js"],"names":["ChartData","translateService","disableRangeUpdate","disableOldDataRemoval","filter","this","initialChartSetup","resetData","range","chartOptions","getDefaultChartOptions","chartSetup","dataHolder","createDataHolder","firstLoad","translateLabels","updateRange","forEach","series","index","originalKey","key","keyValues","title","enable","subTitleElements","map","keyValue","Array","isArray","value","length","values","join","label","undefined","html","subTitleElement","Error","timestamp","newData","removeOldData","addNewData","isFirstLoad","data","shift","multiplier","domainUpperBound","calculateMaxChartValueAndDivisions","chart","yDomain","interpolate","type","height","margin","left","right","x","d","y","clipEdge","noData","instant","showControls","duration","rightAlignYAxis","useInteractiveGuideline","xAxis","showMaxMin","tickFormat","d3","time","format","Date","yAxis","legend","maxKeyLength","color","COLORS","className","Math","max","disabled","flatMap","getMaxValueForDataSeries","dataSeries","maxDataValue","getMaxValueFromDataHolder","maxChartValue","round","DEFAULT_MULTIPLIER","ceil","MAXIMUM_DIVISIONS","divisions","i","floor","log","parseFloat","pow","toFixed","FileDescriptorsChart","super","formatNumber","area","openFileDescriptors","subTitleKeyValues","setSubTitle","push","maxFileDescriptors"],"mappings":"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","file":"50.5114c92299726180a264.bundle.js","sourcesContent":["export class ChartData {\n /**\n * Defines the default multiplier for chart overhead. The space above the maximum value.\n */\n static get DEFAULT_MULTIPLIER() {\n return 1.2;\n }\n\n /**\n * Defines the default divisions for chart. Used to calculate chart ticks.\n */\n static get MAXIMUM_DIVISIONS() {\n return 10;\n }\n\n static get COLORS() {\n return ['#003663', '#E84E0F', '#02A99A', '#999999'];\n }\n\n constructor(translateService, disableRangeUpdate, disableOldDataRemoval, filter) {\n this.filter = filter;\n this.initialChartSetup(translateService, disableRangeUpdate, disableOldDataRemoval);\n }\n\n initialChartSetup(translateService, disableRangeUpdate, disableOldDataRemoval, resetData = true) {\n this.disableRangeUpdate = disableRangeUpdate;\n this.disableOldDataRemoval = disableOldDataRemoval;\n this.translateService = translateService;\n this.range = 150;\n this.chartOptions = this.getDefaultChartOptions(translateService);\n this.chartSetup(this.chartOptions);\n if (resetData) {\n this.dataHolder = this.createDataHolder();\n this.firstLoad = true;\n }\n }\n\n refresh() {\n this.initialChartSetup(this.translateService, this.disableRangeUpdate, this.disableOldDataRemoval, false);\n this.translateLabels(this.dataHolder);\n this.updateRange(this.dataHolder);\n }\n\n\n /**\n * Hook used to translate all labels. Default implementation translates dataHolder series keys\n * @param dataHolder\n */\n translateLabels(dataHolder) {\n this.createDataHolder().forEach((series, index) => {\n if (dataHolder[index].originalKey) {\n dataHolder[index].originalKey = series.key;\n } else {\n dataHolder[index].key = series.key;\n }\n });\n }\n\n setSubTitle(keyValues) {\n this.chartOptions.title.enable = true;\n const subTitleElements = keyValues.map((keyValue) => {\n if (Array.isArray(keyValue.value) && !keyValue.value.length) {\n return;\n }\n const values = Array.isArray(keyValue.value) ? keyValue.value.join('/') : keyValue.value;\n return keyValue.label + (values !== undefined ? `<span class=\"data-value\">${values}</span>` : '');\n });\n this.chartOptions.title.html = subTitleElements.map((subTitleElement) => `<span class=\"info-element\">${subTitleElement}</span>`);\n }\n\n /**\n * Provides chart options if custom setup needs to be done\n * @param chartOptions\n */\n chartSetup(chartOptions) {\n }\n\n /**\n * Returns the data holder array for the chart data.\n * Must be implemented.\n */\n createDataHolder() {\n throw new Error('Must implement data holder creation');\n }\n\n /**\n * Adds data to the data holder\n * @param timestamp time of the data\n * @param newData the new data\n */\n addData(timestamp, newData) {\n this.removeOldData(this.dataHolder, this.range);\n this.addNewData(this.dataHolder, timestamp, newData, this.isFirstLoad());\n this.updateRange(this.dataHolder);\n if (this.firstLoad) {\n this.firstLoad = false;\n }\n }\n\n /**\n * Removes data from the data holder that is obsolete based on range property\n * @param dataHolder data holder\n * @param range the number of entries to keep\n */\n removeOldData(dataHolder, range) {\n if (this.disableOldDataRemoval) {\n return;\n }\n if (dataHolder[0].values.length > range) {\n dataHolder.forEach((data) => data.values.shift());\n }\n }\n\n /**\n * Adds data to data holder\n * Must be implemented.\n * @param dataHolder\n * @param timestamp\n * @param data\n * @param isFirstLoad\n */\n addNewData(dataHolder, timestamp, data, isFirstLoad) {\n }\n\n /**\n * Updates the chart axis range, based on maximum value in data holder\n * @param dataHolder\n * @param multiplier\n */\n updateRange(dataHolder, multiplier) {\n if (this.disableRangeUpdate) {\n return;\n }\n const [domainUpperBound] = ChartData.calculateMaxChartValueAndDivisions(dataHolder, multiplier);\n this.chartOptions.chart.yDomain = [0, domainUpperBound];\n }\n\n isFirstLoad() {\n return this.firstLoad;\n }\n\n getDefaultChartOptions(translateService) {\n return {\n chart: {\n interpolate: 'monotone',\n type: 'lineChart',\n height: 500,\n margin: {\n left: 80,\n right: 80\n },\n x: function (d) {\n return d[0];\n },\n y: function (d) {\n return d[1];\n },\n clipEdge: true,\n noData: translateService.instant('resource.no_data'),\n showControls: false,\n duration: 0,\n rightAlignYAxis: false,\n useInteractiveGuideline: true,\n xAxis: {\n showMaxMin: false,\n tickFormat: function (d) {\n return d3.time.format('%X')(new Date(d));\n }\n },\n yAxis: {\n showMaxMin: false,\n tickFormat: function (d) {\n return d;\n }\n },\n legend: {\n maxKeyLength: 100\n },\n color: ChartData.COLORS\n },\n title: {\n enable: true,\n className: 'chart-additional-info',\n html: ' '\n }\n };\n }\n\n /**\n * Returns the maximum value in data holder\n * @param dataHolder\n * @return {number}\n */\n static getMaxValueFromDataHolder(dataHolder) {\n return Math.max(...dataHolder.filter((data) => !data.disabled).flatMap((data) => ChartData.getMaxValueForDataSeries(data)));\n }\n\n /**\n * Returns the maximum value in specific data series\n * @param dataSeries\n * @return {number}\n */\n static getMaxValueForDataSeries(dataSeries) {\n return Math.max(...dataSeries.values.map((data) => data[1]));\n }\n\n /**\n * Calculated maximum value for chart axis and divisions width\n * @param dataHolder\n * @param multiplier\n * @return {(number|number)[]}\n */\n static calculateMaxChartValueAndDivisions(dataHolder, multiplier) {\n let maxDataValue;\n\n if (Array.isArray(dataHolder)) {\n maxDataValue = ChartData.getMaxValueFromDataHolder(dataHolder);\n } else {\n maxDataValue = ChartData.getMaxValueForDataSeries(dataHolder);\n }\n\n const maxChartValue = Math.round(maxDataValue * (multiplier || ChartData.DEFAULT_MULTIPLIER)) || 1;\n const div = Math.ceil(maxChartValue / ChartData.MAXIMUM_DIVISIONS);\n return [maxChartValue, div];\n }\n\n /**\n * Returnes a D3 range for chart axis based on maximum value and divisions width\n * @param dataHolder\n * @param multiplier\n * @return {*}\n */\n static getIntegerRangeForValues(dataHolder, multiplier) {\n const [maxChartValue, divisions] = ChartData.calculateMaxChartValueAndDivisions(dataHolder, multiplier);\n return d3.range(0, maxChartValue + 1, divisions);\n }\n\n static formatBytesValue(value, dataHolder) {\n let maxChartValue = value;\n if (dataHolder) {\n maxChartValue = Math.max(...dataHolder.filter((data)=> !data.disabled).flatMap((data) => data.values).flatMap((data) => data[1]));\n }\n\n const k = 1024;\n const i = Math.floor(Math.log(maxChartValue) / Math.log(k));\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n\n const relativeValue = parseFloat(value) / Math.pow(k, i);\n return `${relativeValue.toFixed(2)} ${sizes[i]}`;\n }\n\n formatNumber(value) {\n if (!value || !this.filter) {\n return;\n }\n // This may look strange, but I made it like this for consistency. When/if fixing it will be easier to find.\n return this.filter('currency')(value, '', 0);\n }\n}\n","import {ChartData} from \"../chart-data\";\n\nexport class FileDescriptorsChart extends ChartData {\n constructor(translateService, filter) {\n super(translateService, false, false, filter);\n }\n\n chartSetup(chartOptions) {\n chartOptions.chart.yAxis.tickFormat = (d) => this.formatNumber(d);\n chartOptions.chart.color = [chartOptions.chart.color[1]];\n }\n\n createDataHolder() {\n return [{\n key: this.translateService.instant('resource.system.file_descriptors.open'),\n area: 'true',\n values: []\n }];\n }\n addNewData(dataHolder, timestamp, data) {\n if (!data.openFileDescriptors) {\n const subTitleKeyValues = [{\n label: this.translateService.instant('resource.system.file_descriptors.only_unix')\n }];\n this.setSubTitle(subTitleKeyValues);\n return;\n }\n dataHolder[0].values.push([timestamp, data.openFileDescriptors]);\n const subTitleKeyValues = [{\n label: this.translateService.instant('resource.system.file_descriptors.max'),\n value: this.formatNumber(data.maxFileDescriptors)\n }];\n this.setSubTitle(subTitleKeyValues);\n }\n updateRange(dataHolder) {\n super.updateRange(dataHolder, 2);\n }\n}\n"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[51,111],{38:function(t,a,e){"use strict";e.r(a),e.d(a,"ChartData",(function(){return r}));class r{static get DEFAULT_MULTIPLIER(){return 1.2}static get MAXIMUM_DIVISIONS(){return 10}static get COLORS(){return["#003663","#E84E0F","#02A99A","#999999"]}constructor(t,a,e,r){this.filter=r,this.initialChartSetup(t,a,e)}initialChartSetup(t,a,e,r=!0){this.disableRangeUpdate=a,this.disableOldDataRemoval=e,this.translateService=t,this.range=150,this.chartOptions=this.getDefaultChartOptions(t),this.chartSetup(this.chartOptions),r&&(this.dataHolder=this.createDataHolder(),this.firstLoad=!0)}refresh(){this.initialChartSetup(this.translateService,this.disableRangeUpdate,this.disableOldDataRemoval,!1),this.translateLabels(this.dataHolder),this.updateRange(this.dataHolder)}translateLabels(t){this.createDataHolder().forEach((a,e)=>{t[e].originalKey?t[e].originalKey=a.key:t[e].key=a.key})}setSubTitle(t){this.chartOptions.title.enable=!0;const a=t.map(t=>{if(Array.isArray(t.value)&&!t.value.length)return;const a=Array.isArray(t.value)?t.value.join("/"):t.value;return t.label+(void 0!==a?`<span class="data-value">${a}</span>`:"")});this.chartOptions.title.html=a.map(t=>`<span class="info-element">${t}</span>`)}chartSetup(t){}createDataHolder(){throw new Error("Must implement data holder creation")}addData(t,a){this.removeOldData(this.dataHolder,this.range),this.addNewData(this.dataHolder,t,a,this.isFirstLoad()),this.updateRange(this.dataHolder),this.firstLoad&&(this.firstLoad=!1)}removeOldData(t,a){this.disableOldDataRemoval||t[0].values.length>a&&t.forEach(t=>t.values.shift())}addNewData(t,a,e,r){}updateRange(t,a){if(this.disableRangeUpdate)return;const[e]=r.calculateMaxChartValueAndDivisions(t,a);this.chartOptions.chart.yDomain=[0,e]}isFirstLoad(){return this.firstLoad}getDefaultChartOptions(t){return{chart:{interpolate:"monotone",type:"lineChart",height:500,margin:{left:80,right:80},x:function(t){return t[0]},y:function(t){return t[1]},clipEdge:!0,noData:t.instant("resource.no_data"),showControls:!1,duration:0,rightAlignYAxis:!1,useInteractiveGuideline:!0,xAxis:{showMaxMin:!1,tickFormat:function(t){return d3.time.format("%X")(new Date(t))}},yAxis:{showMaxMin:!1,tickFormat:function(t){return t}},legend:{maxKeyLength:100},color:r.COLORS},title:{enable:!0,className:"chart-additional-info",html:" "}}}static getMaxValueFromDataHolder(t){return Math.max(...t.filter(t=>!t.disabled).flatMap(t=>r.getMaxValueForDataSeries(t)))}static getMaxValueForDataSeries(t){return Math.max(...t.values.map(t=>t[1]))}static calculateMaxChartValueAndDivisions(t,a){let e;e=Array.isArray(t)?r.getMaxValueFromDataHolder(t):r.getMaxValueForDataSeries(t);const i=Math.round(e*(a||r.DEFAULT_MULTIPLIER))||1;return[i,Math.ceil(i/r.MAXIMUM_DIVISIONS)]}static getIntegerRangeForValues(t,a){const[e,i]=r.calculateMaxChartValueAndDivisions(t,a);return d3.range(0,e+1,i)}static formatBytesValue(t,a){let e=t;a&&(e=Math.max(...a.filter(t=>!t.disabled).flatMap(t=>t.values).flatMap(t=>t[1])));const r=Math.floor(Math.log(e)/Math.log(1024));return`${(parseFloat(t)/Math.pow(1024,r)).toFixed(2)} ${["Bytes","KB","MB","GB","TB","PB","EB","ZB","YB"][r]}`}formatNumber(t){if(t&&this.filter)return this.filter("currency")(t,"",0)}}},51:function(t,a,e){"use strict";e.r(a),e.d(a,"GlobalCacheChart",(function(){return i}));var r=e(38);class i extends r.ChartData{constructor(t,a){super(t,!1,!1,a)}chartSetup(t){t.chart.yAxis.tickFormat=t=>this.formatNumber(t)}getTitle(){return this.translateService.instant("resources.global_cache.label")}createDataHolder(){return[{key:this.translateService.instant("resources.global_cache.hits"),values:[]},{key:this.translateService.instant("resources.global_cache.miss"),values:[]}]}addNewData(t,a,e){const[r,i]=t;r.values.push([a,e.cacheHit]),i.values.push([a,e.cacheMiss])}}}}]);
2
+ //# sourceMappingURL=51.f884748db1436a79a134.bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["webpack:///./src/js/angular/resources/chart-models/chart-data.js","webpack:///./src/js/angular/resources/chart-models/resource/global-cache-chart.js"],"names":["ChartData","translateService","disableRangeUpdate","disableOldDataRemoval","filter","this","initialChartSetup","resetData","range","chartOptions","getDefaultChartOptions","chartSetup","dataHolder","createDataHolder","firstLoad","translateLabels","updateRange","forEach","series","index","originalKey","key","keyValues","title","enable","subTitleElements","map","keyValue","Array","isArray","value","length","values","join","label","undefined","html","subTitleElement","Error","timestamp","newData","removeOldData","addNewData","isFirstLoad","data","shift","multiplier","domainUpperBound","calculateMaxChartValueAndDivisions","chart","yDomain","interpolate","type","height","margin","left","right","x","d","y","clipEdge","noData","instant","showControls","duration","rightAlignYAxis","useInteractiveGuideline","xAxis","showMaxMin","tickFormat","d3","time","format","Date","yAxis","legend","maxKeyLength","color","COLORS","className","Math","max","disabled","flatMap","getMaxValueForDataSeries","dataSeries","maxDataValue","getMaxValueFromDataHolder","maxChartValue","round","DEFAULT_MULTIPLIER","ceil","MAXIMUM_DIVISIONS","divisions","i","floor","log","parseFloat","pow","toFixed","GlobalCacheChart","super","formatNumber","hit","miss","push","cacheHit","cacheMiss"],"mappings":"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","file":"51.f884748db1436a79a134.bundle.js","sourcesContent":["export class ChartData {\n /**\n * Defines the default multiplier for chart overhead. The space above the maximum value.\n */\n static get DEFAULT_MULTIPLIER() {\n return 1.2;\n }\n\n /**\n * Defines the default divisions for chart. Used to calculate chart ticks.\n */\n static get MAXIMUM_DIVISIONS() {\n return 10;\n }\n\n static get COLORS() {\n return ['#003663', '#E84E0F', '#02A99A', '#999999'];\n }\n\n constructor(translateService, disableRangeUpdate, disableOldDataRemoval, filter) {\n this.filter = filter;\n this.initialChartSetup(translateService, disableRangeUpdate, disableOldDataRemoval);\n }\n\n initialChartSetup(translateService, disableRangeUpdate, disableOldDataRemoval, resetData = true) {\n this.disableRangeUpdate = disableRangeUpdate;\n this.disableOldDataRemoval = disableOldDataRemoval;\n this.translateService = translateService;\n this.range = 150;\n this.chartOptions = this.getDefaultChartOptions(translateService);\n this.chartSetup(this.chartOptions);\n if (resetData) {\n this.dataHolder = this.createDataHolder();\n this.firstLoad = true;\n }\n }\n\n refresh() {\n this.initialChartSetup(this.translateService, this.disableRangeUpdate, this.disableOldDataRemoval, false);\n this.translateLabels(this.dataHolder);\n this.updateRange(this.dataHolder);\n }\n\n\n /**\n * Hook used to translate all labels. Default implementation translates dataHolder series keys\n * @param dataHolder\n */\n translateLabels(dataHolder) {\n this.createDataHolder().forEach((series, index) => {\n if (dataHolder[index].originalKey) {\n dataHolder[index].originalKey = series.key;\n } else {\n dataHolder[index].key = series.key;\n }\n });\n }\n\n setSubTitle(keyValues) {\n this.chartOptions.title.enable = true;\n const subTitleElements = keyValues.map((keyValue) => {\n if (Array.isArray(keyValue.value) && !keyValue.value.length) {\n return;\n }\n const values = Array.isArray(keyValue.value) ? keyValue.value.join('/') : keyValue.value;\n return keyValue.label + (values !== undefined ? `<span class=\"data-value\">${values}</span>` : '');\n });\n this.chartOptions.title.html = subTitleElements.map((subTitleElement) => `<span class=\"info-element\">${subTitleElement}</span>`);\n }\n\n /**\n * Provides chart options if custom setup needs to be done\n * @param chartOptions\n */\n chartSetup(chartOptions) {\n }\n\n /**\n * Returns the data holder array for the chart data.\n * Must be implemented.\n */\n createDataHolder() {\n throw new Error('Must implement data holder creation');\n }\n\n /**\n * Adds data to the data holder\n * @param timestamp time of the data\n * @param newData the new data\n */\n addData(timestamp, newData) {\n this.removeOldData(this.dataHolder, this.range);\n this.addNewData(this.dataHolder, timestamp, newData, this.isFirstLoad());\n this.updateRange(this.dataHolder);\n if (this.firstLoad) {\n this.firstLoad = false;\n }\n }\n\n /**\n * Removes data from the data holder that is obsolete based on range property\n * @param dataHolder data holder\n * @param range the number of entries to keep\n */\n removeOldData(dataHolder, range) {\n if (this.disableOldDataRemoval) {\n return;\n }\n if (dataHolder[0].values.length > range) {\n dataHolder.forEach((data) => data.values.shift());\n }\n }\n\n /**\n * Adds data to data holder\n * Must be implemented.\n * @param dataHolder\n * @param timestamp\n * @param data\n * @param isFirstLoad\n */\n addNewData(dataHolder, timestamp, data, isFirstLoad) {\n }\n\n /**\n * Updates the chart axis range, based on maximum value in data holder\n * @param dataHolder\n * @param multiplier\n */\n updateRange(dataHolder, multiplier) {\n if (this.disableRangeUpdate) {\n return;\n }\n const [domainUpperBound] = ChartData.calculateMaxChartValueAndDivisions(dataHolder, multiplier);\n this.chartOptions.chart.yDomain = [0, domainUpperBound];\n }\n\n isFirstLoad() {\n return this.firstLoad;\n }\n\n getDefaultChartOptions(translateService) {\n return {\n chart: {\n interpolate: 'monotone',\n type: 'lineChart',\n height: 500,\n margin: {\n left: 80,\n right: 80\n },\n x: function (d) {\n return d[0];\n },\n y: function (d) {\n return d[1];\n },\n clipEdge: true,\n noData: translateService.instant('resource.no_data'),\n showControls: false,\n duration: 0,\n rightAlignYAxis: false,\n useInteractiveGuideline: true,\n xAxis: {\n showMaxMin: false,\n tickFormat: function (d) {\n return d3.time.format('%X')(new Date(d));\n }\n },\n yAxis: {\n showMaxMin: false,\n tickFormat: function (d) {\n return d;\n }\n },\n legend: {\n maxKeyLength: 100\n },\n color: ChartData.COLORS\n },\n title: {\n enable: true,\n className: 'chart-additional-info',\n html: ' '\n }\n };\n }\n\n /**\n * Returns the maximum value in data holder\n * @param dataHolder\n * @return {number}\n */\n static getMaxValueFromDataHolder(dataHolder) {\n return Math.max(...dataHolder.filter((data) => !data.disabled).flatMap((data) => ChartData.getMaxValueForDataSeries(data)));\n }\n\n /**\n * Returns the maximum value in specific data series\n * @param dataSeries\n * @return {number}\n */\n static getMaxValueForDataSeries(dataSeries) {\n return Math.max(...dataSeries.values.map((data) => data[1]));\n }\n\n /**\n * Calculated maximum value for chart axis and divisions width\n * @param dataHolder\n * @param multiplier\n * @return {(number|number)[]}\n */\n static calculateMaxChartValueAndDivisions(dataHolder, multiplier) {\n let maxDataValue;\n\n if (Array.isArray(dataHolder)) {\n maxDataValue = ChartData.getMaxValueFromDataHolder(dataHolder);\n } else {\n maxDataValue = ChartData.getMaxValueForDataSeries(dataHolder);\n }\n\n const maxChartValue = Math.round(maxDataValue * (multiplier || ChartData.DEFAULT_MULTIPLIER)) || 1;\n const div = Math.ceil(maxChartValue / ChartData.MAXIMUM_DIVISIONS);\n return [maxChartValue, div];\n }\n\n /**\n * Returnes a D3 range for chart axis based on maximum value and divisions width\n * @param dataHolder\n * @param multiplier\n * @return {*}\n */\n static getIntegerRangeForValues(dataHolder, multiplier) {\n const [maxChartValue, divisions] = ChartData.calculateMaxChartValueAndDivisions(dataHolder, multiplier);\n return d3.range(0, maxChartValue + 1, divisions);\n }\n\n static formatBytesValue(value, dataHolder) {\n let maxChartValue = value;\n if (dataHolder) {\n maxChartValue = Math.max(...dataHolder.filter((data)=> !data.disabled).flatMap((data) => data.values).flatMap((data) => data[1]));\n }\n\n const k = 1024;\n const i = Math.floor(Math.log(maxChartValue) / Math.log(k));\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n\n const relativeValue = parseFloat(value) / Math.pow(k, i);\n return `${relativeValue.toFixed(2)} ${sizes[i]}`;\n }\n\n formatNumber(value) {\n if (!value || !this.filter) {\n return;\n }\n // This may look strange, but I made it like this for consistency. When/if fixing it will be easier to find.\n return this.filter('currency')(value, '', 0);\n }\n}\n","import {ChartData} from '../chart-data';\n\nexport class GlobalCacheChart extends ChartData {\n constructor(translateService, filter) {\n super(translateService, false, false, filter);\n }\n\n chartSetup(chartOptions) {\n chartOptions.chart.yAxis.tickFormat = (d) => this.formatNumber(d);\n }\n\n getTitle() {\n return this.translateService.instant('resources.global_cache.label');\n }\n\n createDataHolder() {\n return [{\n key: this.translateService.instant('resources.global_cache.hits'),\n values: []\n }, {\n key: this.translateService.instant('resources.global_cache.miss'),\n values: []\n }];\n }\n addNewData(dataHolder, timestamp, data) {\n const [hit, miss] = dataHolder;\n hit.values.push([timestamp, data.cacheHit]);\n miss.values.push([timestamp, data.cacheMiss]);\n }\n}\n"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[52,111],{38:function(t,a,e){"use strict";e.r(a),e.d(a,"ChartData",(function(){return r}));class r{static get DEFAULT_MULTIPLIER(){return 1.2}static get MAXIMUM_DIVISIONS(){return 10}static get COLORS(){return["#003663","#E84E0F","#02A99A","#999999"]}constructor(t,a,e,r){this.filter=r,this.initialChartSetup(t,a,e)}initialChartSetup(t,a,e,r=!0){this.disableRangeUpdate=a,this.disableOldDataRemoval=e,this.translateService=t,this.range=150,this.chartOptions=this.getDefaultChartOptions(t),this.chartSetup(this.chartOptions),r&&(this.dataHolder=this.createDataHolder(),this.firstLoad=!0)}refresh(){this.initialChartSetup(this.translateService,this.disableRangeUpdate,this.disableOldDataRemoval,!1),this.translateLabels(this.dataHolder),this.updateRange(this.dataHolder)}translateLabels(t){this.createDataHolder().forEach((a,e)=>{t[e].originalKey?t[e].originalKey=a.key:t[e].key=a.key})}setSubTitle(t){this.chartOptions.title.enable=!0;const a=t.map(t=>{if(Array.isArray(t.value)&&!t.value.length)return;const a=Array.isArray(t.value)?t.value.join("/"):t.value;return t.label+(void 0!==a?`<span class="data-value">${a}</span>`:"")});this.chartOptions.title.html=a.map(t=>`<span class="info-element">${t}</span>`)}chartSetup(t){}createDataHolder(){throw new Error("Must implement data holder creation")}addData(t,a){this.removeOldData(this.dataHolder,this.range),this.addNewData(this.dataHolder,t,a,this.isFirstLoad()),this.updateRange(this.dataHolder),this.firstLoad&&(this.firstLoad=!1)}removeOldData(t,a){this.disableOldDataRemoval||t[0].values.length>a&&t.forEach(t=>t.values.shift())}addNewData(t,a,e,r){}updateRange(t,a){if(this.disableRangeUpdate)return;const[e]=r.calculateMaxChartValueAndDivisions(t,a);this.chartOptions.chart.yDomain=[0,e]}isFirstLoad(){return this.firstLoad}getDefaultChartOptions(t){return{chart:{interpolate:"monotone",type:"lineChart",height:500,margin:{left:80,right:80},x:function(t){return t[0]},y:function(t){return t[1]},clipEdge:!0,noData:t.instant("resource.no_data"),showControls:!1,duration:0,rightAlignYAxis:!1,useInteractiveGuideline:!0,xAxis:{showMaxMin:!1,tickFormat:function(t){return d3.time.format("%X")(new Date(t))}},yAxis:{showMaxMin:!1,tickFormat:function(t){return t}},legend:{maxKeyLength:100},color:r.COLORS},title:{enable:!0,className:"chart-additional-info",html:" "}}}static getMaxValueFromDataHolder(t){return Math.max(...t.filter(t=>!t.disabled).flatMap(t=>r.getMaxValueForDataSeries(t)))}static getMaxValueForDataSeries(t){return Math.max(...t.values.map(t=>t[1]))}static calculateMaxChartValueAndDivisions(t,a){let e;e=Array.isArray(t)?r.getMaxValueFromDataHolder(t):r.getMaxValueForDataSeries(t);const s=Math.round(e*(a||r.DEFAULT_MULTIPLIER))||1;return[s,Math.ceil(s/r.MAXIMUM_DIVISIONS)]}static getIntegerRangeForValues(t,a){const[e,s]=r.calculateMaxChartValueAndDivisions(t,a);return d3.range(0,e+1,s)}static formatBytesValue(t,a){let e=t;a&&(e=Math.max(...a.filter(t=>!t.disabled).flatMap(t=>t.values).flatMap(t=>t[1])));const r=Math.floor(Math.log(e)/Math.log(1024));return`${(parseFloat(t)/Math.pow(1024,r)).toFixed(2)} ${["Bytes","KB","MB","GB","TB","PB","EB","ZB","YB"][r]}`}formatNumber(t){if(t&&this.filter)return this.filter("currency")(t,"",0)}}},40:function(t,a,e){"use strict";e.r(a),e.d(a,"HeapMemoryChart",(function(){return s}));var r=e(38);class s extends r.ChartData{constructor(t){super(t,!1,!1)}createDataHolder(){return[{key:this.translateService.instant("resource.memory.committed"),values:[]},{key:this.translateService.instant("resource.memory.used"),area:"true",values:[]}]}addNewData(t,a,e){const[r,s]=t,i=this.parseData(e);r.values.push([a,i.committed]),s.values.push([a,i.used]),this.setMaxHeapSize(i.max)}parseData(t){return t.heapMemoryUsage}setMaxHeapSize(t){if(t>0){const a=[{label:this.translateService.instant("resource.memory.heap.max"),value:s.formatBytesValue(t)}];this.setSubTitle(a)}}updateRange(t){this.setScale(t),super.updateRange(t)}setScale(t){this.chartOptions.chart.yAxis.tickFormat=a=>s.formatBytesValue(a,t)}}}}]);
2
+ //# sourceMappingURL=52.351e9098a43e13a6f2da.bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["webpack:///./src/js/angular/resources/chart-models/chart-data.js","webpack:///./src/js/angular/resources/chart-models/resource/heap-memory-chart.js"],"names":["ChartData","translateService","disableRangeUpdate","disableOldDataRemoval","filter","this","initialChartSetup","resetData","range","chartOptions","getDefaultChartOptions","chartSetup","dataHolder","createDataHolder","firstLoad","translateLabels","updateRange","forEach","series","index","originalKey","key","keyValues","title","enable","subTitleElements","map","keyValue","Array","isArray","value","length","values","join","label","undefined","html","subTitleElement","Error","timestamp","newData","removeOldData","addNewData","isFirstLoad","data","shift","multiplier","domainUpperBound","calculateMaxChartValueAndDivisions","chart","yDomain","interpolate","type","height","margin","left","right","x","d","y","clipEdge","noData","instant","showControls","duration","rightAlignYAxis","useInteractiveGuideline","xAxis","showMaxMin","tickFormat","d3","time","format","Date","yAxis","legend","maxKeyLength","color","COLORS","className","Math","max","disabled","flatMap","getMaxValueForDataSeries","dataSeries","maxDataValue","getMaxValueFromDataHolder","maxChartValue","round","DEFAULT_MULTIPLIER","ceil","MAXIMUM_DIVISIONS","divisions","i","floor","log","parseFloat","pow","toFixed","HeapMemoryChart","super","area","committed","used","memoryData","parseData","push","setMaxHeapSize","heapMemoryUsage","subTitleKeyValues","formatBytesValue","setSubTitle","setScale"],"mappings":"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","file":"52.351e9098a43e13a6f2da.bundle.js","sourcesContent":["export class ChartData {\n /**\n * Defines the default multiplier for chart overhead. The space above the maximum value.\n */\n static get DEFAULT_MULTIPLIER() {\n return 1.2;\n }\n\n /**\n * Defines the default divisions for chart. Used to calculate chart ticks.\n */\n static get MAXIMUM_DIVISIONS() {\n return 10;\n }\n\n static get COLORS() {\n return ['#003663', '#E84E0F', '#02A99A', '#999999'];\n }\n\n constructor(translateService, disableRangeUpdate, disableOldDataRemoval, filter) {\n this.filter = filter;\n this.initialChartSetup(translateService, disableRangeUpdate, disableOldDataRemoval);\n }\n\n initialChartSetup(translateService, disableRangeUpdate, disableOldDataRemoval, resetData = true) {\n this.disableRangeUpdate = disableRangeUpdate;\n this.disableOldDataRemoval = disableOldDataRemoval;\n this.translateService = translateService;\n this.range = 150;\n this.chartOptions = this.getDefaultChartOptions(translateService);\n this.chartSetup(this.chartOptions);\n if (resetData) {\n this.dataHolder = this.createDataHolder();\n this.firstLoad = true;\n }\n }\n\n refresh() {\n this.initialChartSetup(this.translateService, this.disableRangeUpdate, this.disableOldDataRemoval, false);\n this.translateLabels(this.dataHolder);\n this.updateRange(this.dataHolder);\n }\n\n\n /**\n * Hook used to translate all labels. Default implementation translates dataHolder series keys\n * @param dataHolder\n */\n translateLabels(dataHolder) {\n this.createDataHolder().forEach((series, index) => {\n if (dataHolder[index].originalKey) {\n dataHolder[index].originalKey = series.key;\n } else {\n dataHolder[index].key = series.key;\n }\n });\n }\n\n setSubTitle(keyValues) {\n this.chartOptions.title.enable = true;\n const subTitleElements = keyValues.map((keyValue) => {\n if (Array.isArray(keyValue.value) && !keyValue.value.length) {\n return;\n }\n const values = Array.isArray(keyValue.value) ? keyValue.value.join('/') : keyValue.value;\n return keyValue.label + (values !== undefined ? `<span class=\"data-value\">${values}</span>` : '');\n });\n this.chartOptions.title.html = subTitleElements.map((subTitleElement) => `<span class=\"info-element\">${subTitleElement}</span>`);\n }\n\n /**\n * Provides chart options if custom setup needs to be done\n * @param chartOptions\n */\n chartSetup(chartOptions) {\n }\n\n /**\n * Returns the data holder array for the chart data.\n * Must be implemented.\n */\n createDataHolder() {\n throw new Error('Must implement data holder creation');\n }\n\n /**\n * Adds data to the data holder\n * @param timestamp time of the data\n * @param newData the new data\n */\n addData(timestamp, newData) {\n this.removeOldData(this.dataHolder, this.range);\n this.addNewData(this.dataHolder, timestamp, newData, this.isFirstLoad());\n this.updateRange(this.dataHolder);\n if (this.firstLoad) {\n this.firstLoad = false;\n }\n }\n\n /**\n * Removes data from the data holder that is obsolete based on range property\n * @param dataHolder data holder\n * @param range the number of entries to keep\n */\n removeOldData(dataHolder, range) {\n if (this.disableOldDataRemoval) {\n return;\n }\n if (dataHolder[0].values.length > range) {\n dataHolder.forEach((data) => data.values.shift());\n }\n }\n\n /**\n * Adds data to data holder\n * Must be implemented.\n * @param dataHolder\n * @param timestamp\n * @param data\n * @param isFirstLoad\n */\n addNewData(dataHolder, timestamp, data, isFirstLoad) {\n }\n\n /**\n * Updates the chart axis range, based on maximum value in data holder\n * @param dataHolder\n * @param multiplier\n */\n updateRange(dataHolder, multiplier) {\n if (this.disableRangeUpdate) {\n return;\n }\n const [domainUpperBound] = ChartData.calculateMaxChartValueAndDivisions(dataHolder, multiplier);\n this.chartOptions.chart.yDomain = [0, domainUpperBound];\n }\n\n isFirstLoad() {\n return this.firstLoad;\n }\n\n getDefaultChartOptions(translateService) {\n return {\n chart: {\n interpolate: 'monotone',\n type: 'lineChart',\n height: 500,\n margin: {\n left: 80,\n right: 80\n },\n x: function (d) {\n return d[0];\n },\n y: function (d) {\n return d[1];\n },\n clipEdge: true,\n noData: translateService.instant('resource.no_data'),\n showControls: false,\n duration: 0,\n rightAlignYAxis: false,\n useInteractiveGuideline: true,\n xAxis: {\n showMaxMin: false,\n tickFormat: function (d) {\n return d3.time.format('%X')(new Date(d));\n }\n },\n yAxis: {\n showMaxMin: false,\n tickFormat: function (d) {\n return d;\n }\n },\n legend: {\n maxKeyLength: 100\n },\n color: ChartData.COLORS\n },\n title: {\n enable: true,\n className: 'chart-additional-info',\n html: ' '\n }\n };\n }\n\n /**\n * Returns the maximum value in data holder\n * @param dataHolder\n * @return {number}\n */\n static getMaxValueFromDataHolder(dataHolder) {\n return Math.max(...dataHolder.filter((data) => !data.disabled).flatMap((data) => ChartData.getMaxValueForDataSeries(data)));\n }\n\n /**\n * Returns the maximum value in specific data series\n * @param dataSeries\n * @return {number}\n */\n static getMaxValueForDataSeries(dataSeries) {\n return Math.max(...dataSeries.values.map((data) => data[1]));\n }\n\n /**\n * Calculated maximum value for chart axis and divisions width\n * @param dataHolder\n * @param multiplier\n * @return {(number|number)[]}\n */\n static calculateMaxChartValueAndDivisions(dataHolder, multiplier) {\n let maxDataValue;\n\n if (Array.isArray(dataHolder)) {\n maxDataValue = ChartData.getMaxValueFromDataHolder(dataHolder);\n } else {\n maxDataValue = ChartData.getMaxValueForDataSeries(dataHolder);\n }\n\n const maxChartValue = Math.round(maxDataValue * (multiplier || ChartData.DEFAULT_MULTIPLIER)) || 1;\n const div = Math.ceil(maxChartValue / ChartData.MAXIMUM_DIVISIONS);\n return [maxChartValue, div];\n }\n\n /**\n * Returnes a D3 range for chart axis based on maximum value and divisions width\n * @param dataHolder\n * @param multiplier\n * @return {*}\n */\n static getIntegerRangeForValues(dataHolder, multiplier) {\n const [maxChartValue, divisions] = ChartData.calculateMaxChartValueAndDivisions(dataHolder, multiplier);\n return d3.range(0, maxChartValue + 1, divisions);\n }\n\n static formatBytesValue(value, dataHolder) {\n let maxChartValue = value;\n if (dataHolder) {\n maxChartValue = Math.max(...dataHolder.filter((data)=> !data.disabled).flatMap((data) => data.values).flatMap((data) => data[1]));\n }\n\n const k = 1024;\n const i = Math.floor(Math.log(maxChartValue) / Math.log(k));\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n\n const relativeValue = parseFloat(value) / Math.pow(k, i);\n return `${relativeValue.toFixed(2)} ${sizes[i]}`;\n }\n\n formatNumber(value) {\n if (!value || !this.filter) {\n return;\n }\n // This may look strange, but I made it like this for consistency. When/if fixing it will be easier to find.\n return this.filter('currency')(value, '', 0);\n }\n}\n","import {ChartData} from \"../chart-data\";\n\nexport class HeapMemoryChart extends ChartData {\n constructor(translateService) {\n super(translateService, false, false);\n }\n\n createDataHolder() {\n return [{\n key: this.translateService.instant('resource.memory.committed'),\n values: []\n }, {\n key: this.translateService.instant('resource.memory.used'),\n area: 'true',\n values: []\n }];\n }\n addNewData(dataHolder, timestamp, data) {\n const [committed, used] = dataHolder;\n const memoryData = this.parseData(data);\n committed.values.push([timestamp, memoryData.committed]);\n used.values.push([timestamp, memoryData.used]);\n this.setMaxHeapSize(memoryData.max);\n }\n\n parseData(data) {\n return data.heapMemoryUsage;\n }\n\n setMaxHeapSize(max) {\n if (max > 0) {\n const subTitleKeyValues = [{\n label: this.translateService.instant('resource.memory.heap.max'),\n value: HeapMemoryChart.formatBytesValue(max)\n }];\n this.setSubTitle(subTitleKeyValues);\n }\n }\n\n updateRange(dataHolder) {\n this.setScale(dataHolder);\n super.updateRange(dataHolder);\n }\n setScale(dataHolder) {\n this.chartOptions.chart.yAxis.tickFormat = (d) => {\n return HeapMemoryChart.formatBytesValue(d, dataHolder);\n };\n }\n}\n"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- (window.webpackJsonp=window.webpackJsonp||[]).push([[94],{90:function(t,e,i){"use strict";i.r(e);i(4),i(14);const r=angular.module("graphdb.framework.impex.import.directives",["graphdb.framework.utils.uriutils"]);r.directive("validateUri",["UriUtils",function(t){return{restrict:"A",require:"ngModel",link:function(e,i,r,a){a.$parsers.unshift((function(i){let r=!0;return"named"===e.target&&(r=t.isValidIri(i)),a.$setValidity("validateUri",r),i}))}}}]),r.directive("filesTable",(function(){return{restrict:"A",templateUrl:"js/angular/import/templates/filesTable.html"}})),r.directive("filesOntoLoader",(function(){return{link:function(t,e,i){t.$watch("file.status",(function(){"IMPORTING"!==t.file.status&&"UPLOADING"!==t.file.status||!$(e).has("object").length>0&&$(e).append('<object width="'+i.size+'" height="'+i.size+'" data="js/angular/templates/loader/ot-loader.svg?v=2.2.1">{{\'common.loading\' | translate}}</object>')}))}}}))}}]);
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[94],{90:function(t,e,i){"use strict";i.r(e);i(4),i(14);const r=angular.module("graphdb.framework.impex.import.directives",["graphdb.framework.utils.uriutils"]);r.directive("validateUri",["UriUtils",function(t){return{restrict:"A",require:"ngModel",link:function(e,i,r,a){a.$parsers.unshift((function(i){let r=!0;return"named"===e.target&&(r=t.isValidIri(i)),a.$setValidity("validateUri",r),i}))}}}]),r.directive("filesTable",(function(){return{restrict:"A",templateUrl:"js/angular/import/templates/filesTable.html"}})),r.directive("filesOntoLoader",(function(){return{link:function(t,e,i){t.$watch("file.status",(function(){"IMPORTING"!==t.file.status&&"UPLOADING"!==t.file.status||!$(e).has("object").length>0&&$(e).append('<object width="'+i.size+'" height="'+i.size+'" data="js/angular/templates/loader/ot-loader.svg?v=2.2.2-TR2">{{\'common.loading\' | translate}}</object>')}))}}}))}}]);
2
2
  //# sourceMappingURL=94.38349f52df66313fbcc0.bundle.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///./src/js/angular/import/directives.js"],"names":["importDirectives","angular","module","directive","UriUtils","restrict","require","link","scope","element","attr","ctrl","$parsers","unshift","value","valid","target","isValidIri","$setValidity","templateUrl","$watch","file","status","$","has","length","append","size"],"mappings":"0FAAA,kBAGA,MAAMA,EAAmBC,QAAQC,OAAO,4CAA6C,CACjF,qCAGJF,EAAiBG,UAAU,cAAe,CAAC,WAAY,SAAUC,GAC7D,MAAO,CACHC,SAAU,IACVC,QAAS,UACTC,KAAM,SAAUC,EAAOC,EAASC,EAAMC,GAClCA,EAAKC,SAASC,SAAQ,SAAUC,GAC5B,IAAIC,GAAQ,EAQZ,MANqB,UAAjBP,EAAMQ,SACND,EAAQX,EAASa,WAAWH,IAGhCH,EAAKO,aAAa,cAAeH,GAE1BD,UAMvBd,EAAiBG,UAAU,cAAc,WACrC,MAAO,CACHE,SAAU,IACVc,YAAa,kDAIrBnB,EAAiBG,UAAU,mBAAmB,WAC1C,MAAO,CACHI,KAAM,SAAUC,EAAOC,EAASC,GAC5BF,EAAMY,OAAO,eAAe,WACE,cAAtBZ,EAAMa,KAAKC,QAAgD,cAAtBd,EAAMa,KAAKC,SAC3CC,EAAEd,GAASe,IAAI,UAAUC,OAAS,GACnCF,EAAEd,GAASiB,OAAO,kBAAoBhB,EAAKiB,KAAO,aAAejB,EAAKiB,KAAO","file":"94.38349f52df66313fbcc0.bundle.js","sourcesContent":["import 'angular/core/services';\nimport 'angular/utils/uri-utils';\n\nconst importDirectives = angular.module('graphdb.framework.impex.import.directives', [\n 'graphdb.framework.utils.uriutils'\n]);\n\nimportDirectives.directive('validateUri', ['UriUtils', function (UriUtils) {\n return {\n restrict: 'A',\n require: 'ngModel',\n link: function (scope, element, attr, ctrl) {\n ctrl.$parsers.unshift(function (value) {\n let valid = true;\n\n if (scope.target === 'named') {\n valid = UriUtils.isValidIri(value);\n }\n\n ctrl.$setValidity('validateUri', valid);\n\n return value;\n });\n }\n };\n}]);\n\nimportDirectives.directive('filesTable', function () {\n return {\n restrict: 'A',\n templateUrl: 'js/angular/import/templates/filesTable.html'\n };\n});\n\nimportDirectives.directive('filesOntoLoader', function () {\n return {\n link: function (scope, element, attr) {\n scope.$watch('file.status', function () {\n if (scope.file.status === 'IMPORTING' || scope.file.status === 'UPLOADING') {\n if (!$(element).has('object').length > 0) {\n $(element).append('<object width=\"' + attr.size + '\" height=\"' + attr.size + '\" data=\"js/angular/templates/loader/ot-loader.svg?v=2.2.1\">{{\\'common.loading\\' | translate}}</object>');\n }\n }\n });\n }\n };\n});\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///./src/js/angular/import/directives.js"],"names":["importDirectives","angular","module","directive","UriUtils","restrict","require","link","scope","element","attr","ctrl","$parsers","unshift","value","valid","target","isValidIri","$setValidity","templateUrl","$watch","file","status","$","has","length","append","size"],"mappings":"0FAAA,kBAGA,MAAMA,EAAmBC,QAAQC,OAAO,4CAA6C,CACjF,qCAGJF,EAAiBG,UAAU,cAAe,CAAC,WAAY,SAAUC,GAC7D,MAAO,CACHC,SAAU,IACVC,QAAS,UACTC,KAAM,SAAUC,EAAOC,EAASC,EAAMC,GAClCA,EAAKC,SAASC,SAAQ,SAAUC,GAC5B,IAAIC,GAAQ,EAQZ,MANqB,UAAjBP,EAAMQ,SACND,EAAQX,EAASa,WAAWH,IAGhCH,EAAKO,aAAa,cAAeH,GAE1BD,UAMvBd,EAAiBG,UAAU,cAAc,WACrC,MAAO,CACHE,SAAU,IACVc,YAAa,kDAIrBnB,EAAiBG,UAAU,mBAAmB,WAC1C,MAAO,CACHI,KAAM,SAAUC,EAAOC,EAASC,GAC5BF,EAAMY,OAAO,eAAe,WACE,cAAtBZ,EAAMa,KAAKC,QAAgD,cAAtBd,EAAMa,KAAKC,SAC3CC,EAAEd,GAASe,IAAI,UAAUC,OAAS,GACnCF,EAAEd,GAASiB,OAAO,kBAAoBhB,EAAKiB,KAAO,aAAejB,EAAKiB,KAAO","file":"94.38349f52df66313fbcc0.bundle.js","sourcesContent":["import 'angular/core/services';\nimport 'angular/utils/uri-utils';\n\nconst importDirectives = angular.module('graphdb.framework.impex.import.directives', [\n 'graphdb.framework.utils.uriutils'\n]);\n\nimportDirectives.directive('validateUri', ['UriUtils', function (UriUtils) {\n return {\n restrict: 'A',\n require: 'ngModel',\n link: function (scope, element, attr, ctrl) {\n ctrl.$parsers.unshift(function (value) {\n let valid = true;\n\n if (scope.target === 'named') {\n valid = UriUtils.isValidIri(value);\n }\n\n ctrl.$setValidity('validateUri', valid);\n\n return value;\n });\n }\n };\n}]);\n\nimportDirectives.directive('filesTable', function () {\n return {\n restrict: 'A',\n templateUrl: 'js/angular/import/templates/filesTable.html'\n };\n});\n\nimportDirectives.directive('filesOntoLoader', function () {\n return {\n link: function (scope, element, attr) {\n scope.$watch('file.status', function () {\n if (scope.file.status === 'IMPORTING' || scope.file.status === 'UPLOADING') {\n if (!$(element).has('object').length > 0) {\n $(element).append('<object width=\"' + attr.size + '\" height=\"' + attr.size + '\" data=\"js/angular/templates/loader/ot-loader.svg?v=2.2.2-TR2\">{{\\'common.loading\\' | translate}}</object>');\n }\n }\n });\n }\n };\n});\n"],"sourceRoot":""}