Last active
March 26, 2019 23:47
-
-
Save GiorgioRegni/d7a2f62f9046b278e52af15d7c29720e to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <!--calculator start--> | |
| <style> | |
| .noUi-tooltip, | |
| .noUi-value { | |
| text-align: center; | |
| white-space: nowrap | |
| } | |
| .noUi-target, | |
| .noUi-target * { | |
| -webkit-touch-callout: none; | |
| -webkit-tap-highlight-color: transparent; | |
| -webkit-user-select: none; | |
| -ms-touch-action: none; | |
| touch-action: none; | |
| -ms-user-select: none; | |
| -moz-user-select: none; | |
| user-select: none; | |
| -moz-box-sizing: border-box; | |
| box-sizing: border-box | |
| } | |
| .noUi-base, | |
| .noUi-connects { | |
| width: 100%; | |
| height: 100%; | |
| position: relative; | |
| z-index: 1 | |
| } | |
| .noUi-connects { | |
| overflow: hidden; | |
| z-index: 0; | |
| border-radius: 3px | |
| } | |
| .noUi-connect, | |
| .noUi-origin { | |
| will-change: transform; | |
| position: absolute; | |
| z-index: 1; | |
| top: 0; | |
| left: 0; | |
| height: 100%; | |
| width: 100%; | |
| -ms-transform-origin: 0 0; | |
| -webkit-transform-origin: 0 0; | |
| transform-origin: 0 0 | |
| } | |
| html:not([dir=rtl]) .noUi-horizontal .noUi-origin { | |
| left: auto; | |
| right: 0 | |
| } | |
| .noUi-horizontal .noUi-origin { | |
| height: 0 | |
| } | |
| .noUi-touch-area { | |
| height: 100%; | |
| width: 100% | |
| } | |
| .noUi-state-tap .noUi-connect, | |
| .noUi-state-tap .noUi-origin { | |
| -webkit-transition: transform .3s; | |
| transition: transform .3s | |
| } | |
| .noUi-state-drag * { | |
| cursor: inherit!important | |
| } | |
| html:not([dir=rtl]) .noUi-horizontal .noUi-handle { | |
| right: -17px; | |
| left: auto | |
| } | |
| .noUi-draggable { | |
| cursor: ew-resize | |
| } | |
| .noUi-vertical .noUi-draggable { | |
| cursor: ns-resize | |
| } | |
| .noUi-active { | |
| box-shadow: inset 0 0 1px #FFF, inset 0 1px 7px #DDD, 0 3px 6px -3px #BBB | |
| } | |
| .noUi-handle:after { | |
| left: 17px | |
| } | |
| .noUi-pips, | |
| .noUi-pips * { | |
| -moz-box-sizing: border-box; | |
| box-sizing: border-box | |
| } | |
| .noUi-pips { | |
| position: absolute; | |
| color: #999 | |
| } | |
| .noUi-value { | |
| position: absolute | |
| } | |
| .noUi-value-sub { | |
| color: #ccc; | |
| font-size: 10px | |
| } | |
| .noUi-pips-horizontal { | |
| padding: 10px 0; | |
| height: 80px; | |
| top: 100%; | |
| left: 0; | |
| width: 100% | |
| } | |
| .noUi-value-horizontal { | |
| -webkit-transform: translate(-50%, 50%); | |
| transform: translate(-50%, 50%) | |
| } | |
| .noUi-rtl .noUi-value-horizontal { | |
| -webkit-transform: translate(50%, 50%); | |
| transform: translate(50%, 50%) | |
| } | |
| .noUi-marker-horizontal.noUi-marker { | |
| margin-left: -1px; | |
| width: 2px; | |
| height: 5px | |
| } | |
| .noUi-marker-horizontal.noUi-marker-sub { | |
| height: 10px | |
| } | |
| .noUi-marker-horizontal.noUi-marker-large { | |
| height: 15px | |
| } | |
| .scality_calculator * { | |
| font-family: Roboto; | |
| } | |
| .scality_calculator input::-webkit-outer-spin-button, | |
| .scality_calculator input::-webkit-inner-spin-button { | |
| -webkit-appearance: none; | |
| margin: 0; | |
| } | |
| .scality_calculator input[type=number] { | |
| -moz-appearance: textfield; | |
| } | |
| .noUi-connect { | |
| background: rgba(240, 80, 43, 1); | |
| } | |
| .noUi-horizontal { | |
| height: 10px; | |
| width: 80%; | |
| } | |
| .noUi-target { | |
| position: relative; | |
| direction: ltr; | |
| background: rgba(230, 231, 232, 1); | |
| border-radius: 4px; | |
| border: 0px solid #fff; | |
| box-shadow: none; | |
| } | |
| .noUi-horizontal .noUi-tooltip { | |
| -webkit-transform: translate(-50%, 0); | |
| transform: translate(-50%, 0); | |
| left: 50%; | |
| bottom: -160%; | |
| } | |
| .noUi-tooltip { | |
| display: block; | |
| position: absolute; | |
| border: 0px solid #fff; | |
| border-radius: 3px; | |
| background: #fff; | |
| color: #000; | |
| padding: 0px; | |
| font-size: 12px; | |
| font-weight: 400; | |
| } | |
| .noUi-handle { | |
| position: absolute; | |
| background: #ffffff; | |
| box-shadow: none; | |
| background-color: #ffffff; | |
| border-radius: 12px; | |
| border: 3px solid rgba(240, 80, 43, 1); | |
| z-index: 10; | |
| outline: none; | |
| cursor: pointer; | |
| } | |
| .noUi-horizontal .noUi-handle { | |
| top: -6px; | |
| height: 22px; | |
| width: 22px; | |
| } | |
| .noUi-horizontal .noUi-handle:after { | |
| content: ''; | |
| width: 8px; | |
| height: 8px; | |
| position: absolute; | |
| top: 4px; | |
| left: 4px; | |
| -webkit-border-radius: 4px; | |
| -moz-border-radius: 4px; | |
| border-radius: 5px; | |
| background: rgba(240, 80, 43, 1); | |
| } | |
| .scality_calculator_row { | |
| margin-bottom: 75px; | |
| } | |
| .scality_calculator_name { | |
| color: #000; | |
| font-weight: 500; | |
| line-height: 25px; | |
| font-size: 16px; | |
| padding-bottom: 10px; | |
| } | |
| .scality_calculator_name span, | |
| .scality_calculator_val span { | |
| color: rgba(147, 149, 151, 1); | |
| font-weight: 400; | |
| font-size: 12px; | |
| } | |
| .scality_calculator input[type=number] { | |
| width: 80%; | |
| margin-bottom: 0px; | |
| padding: 10px; | |
| padding-bottom: 3px; | |
| color: rgba(240, 80, 43, 1); | |
| border: 0px; | |
| border-style: solid; | |
| border-radius: 0; | |
| border-color: inherit; | |
| outline: medium none; | |
| font-weight: 500; | |
| -moz-border-top-colors: none; | |
| -moz-border-right-colors: none; | |
| -moz-border-bottom-colors: none; | |
| border-image: none; | |
| background-clip: padding-box; | |
| -moz-border-left-colors: none; | |
| border-bottom: 1px solid rgba(147, 149, 151, 1); | |
| } | |
| .scality_result_txt { | |
| font-size: 17px; | |
| text-align: center; | |
| font-weight: 400; | |
| color: rgba(147, 149, 151, 1); | |
| line-height: normal; | |
| margin-bottom: 20px; | |
| } | |
| g.highcharts-axis-labels.highcharts-xaxis-labels text:nth-child(2) { | |
| color: rgba(240, 80, 43, 1)!important; | |
| font-size: 16px; | |
| fill: rgba(240, 80, 43, 1)!important; | |
| } | |
| g.highcharts-axis-labels.highcharts-xaxis-labels text:nth-child(1) { | |
| color: rgba(147, 149, 151, 1)!important; | |
| font-size: 16px; | |
| fill: rgba(147, 149, 151, 1)!important; | |
| } | |
| .sc_chart_value { | |
| font-size: 25px; | |
| color: rgba(240, 80, 43, 1); | |
| fill: rgba(240, 80, 43, 1); | |
| font-weight: 500; | |
| } | |
| span#sc_reduction_capacity { | |
| color: rgba(243, 117, 51, 1); | |
| font-size: 30px; | |
| font-weight: bold; | |
| display: block; | |
| } | |
| #scalitychart .highcharts-label:nth-child(1) .sc_chart_value { | |
| color: rgba(147, 149, 151, 1); | |
| fill: rgba(147, 149, 151, 1); | |
| } | |
| .scality_calculator_column { | |
| float: left; | |
| width: 60%; | |
| padding: 20px; | |
| } | |
| .scality_calculator_column:nth-child(1) { | |
| padding-top: 70px; | |
| width: 40%; | |
| } | |
| @media all and (max-width:600px) { | |
| .scality_calculator_column, | |
| .scality_calculator_column:nth-child(1) { | |
| float: none; | |
| width: 100%; | |
| } | |
| .noUi-horizontal { | |
| width: 90%; | |
| } | |
| .scality_calculator input[type=number] { | |
| width: 90%; | |
| } | |
| } | |
| </style> | |
| <script src="https://cdnjs.cloudflare.com/ajax/libs/noUiSlider/13.1.1/nouislider.min.js"></script> | |
| <script src="https://code.highcharts.com/highcharts.js"></script> | |
| <div class="scality_calculator"> | |
| <div class="scality_calculator_row"> | |
| <div class="scality_calculator_column"> | |
| <div class="scality_calculator_row"> | |
| <div class="scality_calculator_name"> | |
| The amount of capacity on the NAS | |
| </div> | |
| <div class="scality_calculator_val"> | |
| <div id="sc_amount_capacity" class="scality_calculator_slider"></div> | |
| </div> | |
| </div> | |
| <div class="scality_calculator_row"> | |
| <div class="scality_calculator_name"> | |
| Percentage of inactive data <span>(%)</span> | |
| </div> | |
| <div class="scality_calculator_val"> | |
| <div id="inactive_data" class="scality_calculator_slider"></div> | |
| </div> | |
| </div> | |
| <div class="scality_calculator_row"> | |
| <div class="scality_calculator_name"> | |
| The backup retention policy <span>(Months)</span> | |
| </div> | |
| <div class="scality_calculator_val"> | |
| <div id="backup_policy" class="scality_calculator_slider"></div> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="scality_calculator_column"> | |
| <div class="scality_calculator_row"> | |
| <div class="scality_result_txt"> | |
| <span id="sc_reduction_capacity">53%</span> Reduction in required backup footprint with Scality NAS Archiver<br /> | |
| Reclaim <span id="sc_result_reclaim">1.6</span> PB of premium capacity on your Tier-1 NAS | |
| </div> | |
| <div id="scalitychart" style="min-width: 310px; height: 350px; margin: 0 auto"></div> | |
| </div> | |
| </div> | |
| <div style="clear:left;"></div> | |
| </div> | |
| </div> | |
| <script> | |
| Number.prototype.formatMoney = function (c, d, t) { | |
| var n = this, | |
| c = isNaN(c = Math.abs(c)) ? 2 : c, | |
| d = d == undefined ? "." : d, | |
| t = t == undefined ? "," : t, | |
| s = n < 0 ? "-" : "", | |
| i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "", | |
| j = (j = i.length) > 3 ? j % 3 : 0; | |
| return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + | |
| Math.abs(n - i).toFixed(c).slice(2) : ""); | |
| }; | |
| var sc_amount_capacity = document.getElementById("sc_amount_capacity"); | |
| noUiSlider.create(sc_amount_capacity, { | |
| start: [1000], | |
| step: 100, | |
| connect: [true, false], | |
| tooltips: [true], | |
| format: { | |
| from: Number, | |
| to: function (value) { | |
| return ((parseInt(value) / 1000).formatMoney(1, '.', ',') + " PB"); | |
| } | |
| }, | |
| range: { | |
| min: [200], | |
| max: [20000] | |
| } | |
| }); | |
| var inactive_data = document.getElementById("inactive_data"); | |
| noUiSlider.create(inactive_data, { | |
| start: [60], | |
| step: 1, | |
| connect: [true, false], | |
| tooltips: [true], | |
| format: { | |
| from: Number, | |
| to: function (value) { | |
| return (parseInt(value) + " %"); | |
| } | |
| }, | |
| range: { | |
| min: [0], | |
| max: [100] | |
| } | |
| }); | |
| var backup_policy = document.getElementById("backup_policy"); | |
| noUiSlider.create(backup_policy, { | |
| start: [12], | |
| step: 1, | |
| connect: [true, false], | |
| tooltips: [true], | |
| format: { | |
| from: Number, | |
| to: function (value) { | |
| return (parseInt(value) + " Months"); | |
| } | |
| }, | |
| range: { | |
| min: [1], | |
| max: [36] | |
| } | |
| }); | |
| sc_amount_capacity.noUiSlider.on('update', function (values, handle) { | |
| calculateScality(); | |
| }); | |
| inactive_data.noUiSlider.on('update', function (values, handle) { | |
| calculateScality(); | |
| }); | |
| backup_policy.noUiSlider.on('update', function (values, handle) { | |
| calculateScality(); | |
| }); | |
| function calculateScality() { | |
| var cs = { | |
| idp: parseFloat(inactive_data.noUiSlider.get()) / 100, | |
| bp: parseFloat(backup_policy.noUiSlider.get()), | |
| ratio: 50, | |
| trad: {}, | |
| nas: {} | |
| }; | |
| var in_v = parseFloat(sc_amount_capacity.noUiSlider.get()); | |
| if (in_v > 200 && in_v <= 900) { | |
| cs.ac = in_v; | |
| } else { | |
| cs.ac = in_v * 1000; | |
| } | |
| cs.trad.weekly = 4 * cs.ac; | |
| cs.trad.monthly = cs.bp * cs.ac; | |
| cs.trad.yearly = cs.ac; | |
| cs.trad.total_c = (cs.trad.weekly + cs.trad.monthly + cs.trad.yearly) * (cs.ratio / 100); | |
| cs.nas.arch = cs.ac * cs.idp; | |
| cs.nas.active = cs.ac - cs.nas.arch; | |
| cs.nas.weekly = 4 * cs.nas.active; | |
| cs.nas.monthly = cs.bp * cs.nas.active; | |
| cs.nas.yearly = cs.nas.active; | |
| cs.nas.total_c = cs.nas.arch + (cs.nas.weekly + cs.nas.monthly + cs.nas.yearly) * (cs.ratio / 100); | |
| cs.ps = ((cs.trad.total_c - cs.nas.total_c) / cs.trad.total_c) * 100; | |
| cs.sc_result_reclaim = (cs.ac / 1000) * (cs.ps / 100); | |
| drawChartSc(cs.trad.total_c, cs.nas.total_c); | |
| document.getElementById('sc_result_reclaim').innerHTML = (cs.sc_result_reclaim).formatMoney(1, '.', ','); | |
| document.getElementById('sc_reduction_capacity').innerHTML = (cs.ps).formatMoney(1, '.', '.') + '%'; | |
| } | |
| function drawChartSc(t, n) { | |
| Highcharts.chart('scalitychart', { | |
| chart: { | |
| type: 'column', | |
| backgroundColor: 'rgba(255, 255, 255, 0.0)', | |
| spacingTop: 30 | |
| }, | |
| title: { | |
| text: null | |
| }, | |
| subtitle: { | |
| text: null | |
| }, | |
| xAxis: { | |
| categories: [ | |
| 'Traditional', | |
| 'Scality RING' | |
| ], | |
| crosshair: true, | |
| title: { | |
| text: null | |
| }, | |
| minorGridLineWidth: 0, | |
| lineColor: 'rgba(230, 231, 232, 1)', | |
| minorTickLength: 0, | |
| tickLength: 0, | |
| labels: { | |
| style: { | |
| fontSize: 18, | |
| fontWeight: 'bold', | |
| formatter: function () { | |
| } | |
| } | |
| } | |
| }, | |
| yAxis: { | |
| min: 0, | |
| title: { | |
| text: null | |
| }, | |
| lineWidth: 0, | |
| minorGridLineWidth: 0, | |
| lineColor: 'transparent', | |
| minorTickLength: 0, | |
| tickLength: 0, | |
| gridLineColor: 'transparent', | |
| labels: { | |
| enabled: false | |
| } | |
| }, | |
| tooltip: { | |
| enabled: false | |
| }, | |
| plotOptions: { | |
| allowPointSelect: false, | |
| column: { | |
| borderWidth: 0, | |
| colorByPoint: true | |
| }, | |
| series: { | |
| enableMouseTracking: false, | |
| animation: false, | |
| states: { | |
| hover: { | |
| enabled: false | |
| } | |
| }, | |
| dataLabels: { | |
| enabled: true, | |
| crop: false, | |
| overflow: 'none', | |
| style: { | |
| textOutline: false, | |
| }, | |
| y: 10, | |
| formatter: function () { | |
| var v = this.y / 1000; | |
| return ' <div class="sc_chart_value">' + v.formatMoney(1, '.', ',') + ' PB</div>'; | |
| } | |
| }, | |
| borderWidth: 0 | |
| } | |
| }, | |
| colors: [ | |
| 'rgba(230, 231, 232, 1)', | |
| 'rgba(240, 80, 43, 1)' | |
| ], | |
| credits: { | |
| enabled: false | |
| }, | |
| exporting: false, | |
| legend: { | |
| enabled: false | |
| }, | |
| series: [{ | |
| data: [t, n] | |
| }] | |
| }); | |
| } | |
| </script> | |
| <!--calculator end--> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment