| |
| /* |
| * |
| * Copyright 2016 RIFT.IO Inc |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| * |
| */ |
| |
| var React = require('react'); |
| //var Histogram = require('react-d3-histogram') |
| export default { |
| //test: require('./test/test.js'), |
| button: require('./button/rw.button.js'), |
| React: React, |
| // Histogram: Histogram, |
| Multicomponent: require('./multicomponent/multicomponent.js'), |
| Mixins: require('./mixins/ButtonEventListener.js'), |
| // Gauge: require('./gauge/gauge.js'), |
| Bullet: require('./bullet/bullet.js') |
| }; |
| |
| // require('../../assets/js/n3-line-chart.js'); |
| // var Gauge = require('../../assets/js/gauge-modified.js'); |
| // var bulletController = function($scope, $element) { |
| // this.$element = $element; |
| // this.vertical = false; |
| // this.value = 0; |
| // this.min = 0; |
| // this.max = 100; |
| // //this.range = this.max - this.min; |
| // //this.percent = (this.value - this.min) / this.range; |
| // this.displayValue = this.value; |
| // this.isPercent = (this.units == '')? true:false; |
| // this.bulletColor = "#6BB814"; |
| // this.fontsize = 28; |
| // this.radius = 4; |
| // this.containerMarginX = 0; |
| // this.containerMarginY = 0; |
| // this.textMarginX = 5; |
| // this.textMarginY = 42; |
| // this.bulletMargin = 0; |
| // this.width = 512; |
| // this.height = 64; |
| // this.markerX = -100; // puts it off screen unless set |
| // var self = this; |
| // if (this.isPercent) { |
| // this.displayValue + "%"; |
| // } |
| // $scope.$watch( |
| // function() { |
| // return self.value; |
| // }, |
| // function() { |
| // self.valueChanged(); |
| // } |
| // ); |
| |
| // } |
| |
| // bulletController.prototype = { |
| |
| // valueChanged: function() { |
| // var range = this.max - this.min; |
| // var normalizedValue = (this.value - this.min) / range; |
| // if (this.isPercent) { |
| // this.displayValue = String(Math.round(normalizedValue * 100)) + "%"; |
| // } else { |
| // this.displayValue = this.value; |
| // } |
| // // All versions of IE as of Jan 2015 does not support inline CSS transforms on SVG |
| // if (platform.name == 'IE') { |
| // this.bulletWidth = Math.round(100 * normalizedValue) + '%'; |
| // } else { |
| // this.bulletWidth = this.width - (2 * this.containerMarginX); |
| // var transform = 'scaleX(' + normalizedValue + ')'; |
| // var bullet = $(this.$element).find('.bullet2'); |
| // bullet.css('transform', transform); |
| // bullet.css('-webkit-transform', transform); |
| // } |
| // }, |
| |
| // markerChanged: function() { |
| // var range = this.max - this.min; |
| // var w = this.width - (2 * this.containerMarginX); |
| // this.markerX = this.containerMarginX + ((this.marker - this.min) / range ) * w; |
| // this.markerY1 = 7; |
| // this.markerY2 = this.width - 7; |
| // } |
| // } |
| |
| // angular.module('components', ['n3-line-chart']) |
| // .directive('rwBullet', function() { |
| // return { |
| // restrict : 'E', |
| // templateUrl: 'modules/views/rw.bullet.tmpl.html', |
| // bindToController: true, |
| // controllerAs: 'bullet', |
| // controller: bulletController, |
| // replace: true, |
| // scope: { |
| // min : '@?', |
| // max : '@?', |
| // value : '@', |
| // marker: '@?', |
| // units: '@?', |
| // bulletColor: '@?', |
| // label: '@?' |
| // } |
| // }; |
| // }) |
| // .directive('rwSlider', function() { |
| // var controller = function($scope, $element, $timeout) { |
| // // Q: is there a way to force attributes to be ints? |
| // $scope.min = $scope.min || "0"; |
| // $scope.max = $scope.max || "100"; |
| // $scope.step = $scope.step || "1"; |
| // $scope.height = $scope.height || "30"; |
| // $scope.orientation = $scope.orientation || 'horizontal'; |
| // $scope.tooltipInvert = $scope.tooltipInvert || false; |
| // $scope.percent = $scope.percent || false; |
| // $scope.kvalue = $scope.kvalue || false; |
| // $scope.direction = $scope.direction || "ltr"; |
| // $($element).noUiSlider({ |
| // start: parseInt($scope.value), |
| // step: parseInt($scope.step), |
| // orientation: $scope.orientation, |
| // range: { |
| // min: parseInt($scope.min), |
| // max: parseInt($scope.max) |
| // }, |
| // direction: $scope.direction |
| // }); |
| // //$(".no-Ui-target").Link('upper').to('-inline-<div class="tooltip"></div>') |
| // var onSlide = function(e, value) { |
| // $timeout(function(){ |
| // $scope.value = value; |
| // }) |
| |
| // }; |
| // $($element).on({ |
| // change: onSlide, |
| // slide: onSlide, |
| // set: $scope.onSet({value: $scope.value}) |
| // }); |
| // var val = String(Math.round($scope.value)); |
| // if ($scope.percent) { |
| // val += "%" |
| // } else if ($scope.kvalue) { |
| // val += "k" |
| // } |
| // $($element).height($scope.height); |
| // if ($scope.tooltipInvert) { |
| // $($element).find('.noUi-handle').append("<div class='tooltip' style='position:relative;right:20px'>" + val + "</div>"); |
| // } else { |
| // $($element).find('.noUi-handle').append("<div class='tooltip' style='position:relative;left:-20px'>" + val + "</div>"); |
| // } |
| // $scope.$watch('value', function(value) { |
| // var val = String(Math.round($scope.value)); |
| // if ($scope.percent) { |
| // val += "%" |
| // } else if($scope.kvalue) { |
| // val += "k" |
| // } |
| // $($element).val(value); |
| // $($element).find('.tooltip').html(val); |
| // if ($scope.tooltipInvert) { |
| // $($element).find('.tooltip').css('right', $($element).find('.tooltip').innerWidth() * -1); |
| // } else { |
| // $($element).find('.tooltip').css('left', $($element).find('.tooltip').innerWidth() * -1); |
| // } |
| // }); |
| // }; |
| |
| // return { |
| // restrict : 'E', |
| // template: '<div></div>', |
| // controller : controller, |
| // replace: true, |
| // scope: { |
| // min : '@', |
| // max : '@', |
| // width: '@', |
| // height: '@', |
| // step : '@', |
| // orientation : '@', |
| // tooltipInvert: '@', |
| // percent: '@', |
| // kvalue: '@?', |
| // onSet:'&?', |
| // direction: '@?', |
| // value:'=?' |
| // } |
| // }; |
| // }) |
| // .directive('rwGauge', function() { |
| // return { |
| // restrict: 'AE', |
| // template: '<canvas class="rwgauge" style="width:100%;height:100%;max-width:{{width}}px;max-height:240px;"></canvas>', |
| // replace: true, |
| // scope: { |
| // min: '@?', |
| // max: '@?', |
| // size: '@?', |
| // color: '@?', |
| // value: '@?', |
| // resize: '@?', |
| // isAggregate: '@?', |
| // units: '@?', |
| // valueFormat: '=?', |
| // width: '@?' |
| // }, |
| // bindToController: true, |
| // controllerAs: 'gauge', |
| // controller: function($scope, $element) { |
| // var self = this; |
| // this.gauge = null; |
| // this.min = this.min || 0; |
| // this.max = this.max || 100; |
| // this.nSteps = 14; |
| // this.size = this.size || 300; |
| // this.units = this.units || ''; |
| // $scope.width = this.width || 240; |
| // this.color = this.color || 'hsla(212, 57%, 50%, 1)'; |
| // if (!this.valueFormat) { |
| // if (this.max > 1000 || this.value) { |
| // self.valueFormat = { |
| // "int": 1, |
| // "dec": 0 |
| // }; |
| // } else { |
| // self.valueFormat = { |
| // "int": 1, |
| // "dec": 2 |
| // }; |
| // } |
| // } |
| // this.isAggregate = this.isAggregate || false; |
| // this.resize = this.resize || false; |
| // if (this.format == 'percent') { |
| // self.valueFormat = { |
| // "int": 3, |
| // "dec": 0 |
| // }; |
| // } |
| // $scope.$watch(function() { |
| // return self.max; |
| // }, function(n, o) { |
| // if(n !== o) { |
| // renderGauge(); |
| // } |
| // }); |
| // $scope.$watch(function() { |
| // return self.valueFormat; |
| // }, function(n, o) { |
| // if(n != 0) { |
| // renderGauge(); |
| // } |
| // }); |
| // $scope.$watch(function() { |
| // return self.value; |
| // }, function() { |
| // if (self.gauge) { |
| // // w/o rounding gauge will unexplainably thrash round. |
| // self.valueFormat = determineValueFormat(self.value); |
| // self.gauge.setValue(Math.ceil(self.value * 100) / 100); |
| // //self.gauge.setValue(Math.round(self.value)); |
| // } |
| // }); |
| // angular.element($element).ready(function() { |
| // console.log('rendering') |
| // renderGauge(); |
| // }) |
| // window.testme = renderGauge; |
| // function determineValueFormat(value) { |
| |
| // if (value > 999 || self.units == "%") { |
| // return { |
| // "int": 1, |
| // "dec": 0 |
| // } |
| // } |
| |
| // return { |
| // "int": 1, |
| // "dec": 2 |
| // } |
| // } |
| // function renderGauge(calcWidth) { |
| // if (self.max == self.min) { |
| // self.max = 14; |
| // } |
| // var range = self.max - self.min; |
| // var step = Math.round(range / self.nSteps); |
| // var majorTicks = []; |
| // for (var i = 0; i <= self.nSteps; i++) { |
| // majorTicks.push(self.min + (i * step)); |
| // }; |
| // var redLine = self.min + (range * 0.9); |
| // var config = { |
| // isAggregate: self.isAggregate, |
| // renderTo: angular.element($element)[0], |
| // width: calcWidth || self.size, |
| // height: calcWidth || self.size, |
| // glow: false, |
| // units: self.units, |
| // title: false, |
| // minValue: self.min, |
| // maxValue: self.max, |
| // majorTicks: majorTicks, |
| // valueFormat: determineValueFormat(self.value), |
| // minorTicks: 0, |
| // strokeTicks: false, |
| // highlights: [], |
| // colors: { |
| // plate: 'rgba(0,0,0,0)', |
| // majorTicks: 'rgba(15, 123, 182, .84)', |
| // minorTicks: '#ccc', |
| // title: 'rgba(50,50,50,100)', |
| // units: 'rgba(50,50,50,100)', |
| // numbers: '#fff', |
| // needle: { |
| // start: 'rgba(255, 255, 255, 1)', |
| // end: 'rgba(255, 255, 255, 1)' |
| // } |
| // } |
| // }; |
| // var min = config.minValue; |
| // var max = config.maxValue; |
| // var N = 1000; |
| // var increment = (max - min) / N; |
| // for (i = 0; i < N; i++) { |
| // var temp_color = 'rgb(0, 172, 238)'; |
| // if (i > 0.5714 * N && i <= 0.6428 * N) { |
| // temp_color = 'rgb(0,157,217)'; |
| // } else if (i >= 0.6428 * N && i < 0.7142 * N) { |
| // temp_color = 'rgb(0,142,196)'; |
| // } else if (i >= 0.7142 * N && i < 0.7857 * N) { |
| // temp_color = 'rgb(0,126,175)'; |
| // } else if (i >= 0.7857 * N && i < 0.8571 * N) { |
| // temp_color = 'rgb(0,122,154)'; |
| // } else if (i >= 0.8571 * N && i < 0.9285 * N) { |
| // temp_color = 'rgb(0,96,133)'; |
| // } else if (i >= 0.9285 * N) { |
| // temp_color = 'rgb(0,80,112)'; |
| // } |
| // config.highlights.push({ |
| // from: i * increment, |
| // to: increment * (i + 2), |
| // color: temp_color |
| // }) |
| // } |
| // var updateSize = _.debounce(function() { |
| // config.maxValue = self.max; |
| // var clientWidth = self.parentNode.parentNode.clientWidth / 2; |
| // var calcWidth = (300 > clientWidth) ? clientWidth : 300; |
| // self.gauge.config.width = self.gauge.config.height = calcWidth; |
| // self.renderGauge(calcWidth); |
| // }, 500); |
| // if (self.resize) $(window).resize(updateSize) |
| // if (self.gauge) { |
| // self.gauge.updateConfig(config); |
| // } else { |
| // self.gauge = new Gauge(config); |
| // self.gauge.draw(); |
| // } |
| // }; |
| // }, |
| // } |
| // }); |