From 7a75dd1b5d069c8744621c1ed3d7528c2101882e Mon Sep 17 00:00:00 2001 From: Shreemudra Satapathy Date: Sat, 21 May 2016 01:07:01 +0530 Subject: [PATCH 01/18] Fixed issue #814 - [$100] Topcoder Member Profile: Redesign ratings graph --- .../distribution-graph.directive.js | 41 ++++++++++- .../distribution-graph.jade | 18 ++--- .../history-graph/history-graph.directive.js | 53 ++++++++++---- .../history-graph/history-graph.jade | 18 ++--- app/index.jade | 2 + app/index.js | 1 + assets/css/directives/distribution-graph.scss | 45 ++++++++++++ assets/css/directives/history-graph.scss | 30 ++++++++ assets/css/my-dashboard/subtrack-stats.scss | 73 +++++++++++++++++++ package.json | 7 +- 10 files changed, 249 insertions(+), 39 deletions(-) diff --git a/app/directives/distribution-graph/distribution-graph.directive.js b/app/directives/distribution-graph/distribution-graph.directive.js index fb5565efb..dff5e5a82 100644 --- a/app/directives/distribution-graph/distribution-graph.directive.js +++ b/app/directives/distribution-graph/distribution-graph.directive.js @@ -1,5 +1,8 @@ import angular from 'angular' import d3 from 'd3' +import React from 'react' +import ReactDOM from 'react-dom' +import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.jsx' (function() { 'use strict' @@ -59,7 +62,7 @@ import d3 from 'd3' ] var measurements = { - w: 600, + w: 900, h: 400, padding: { top: 20, @@ -176,7 +179,19 @@ import d3 from 'd3' .attr('fill', function(d) { return ratingToColor($scope.colors, d.start) }) - + ReactDOM.unmountComponentAtNode(document.getElementById('chart-tooltip')); + ReactDOM.render( +
+
+
+
+
+
+
+
+
+ , document.getElementById('chart-tooltip')); + svg.selectAll('rect.hover') .data(ranges) .enter() @@ -198,10 +213,32 @@ import d3 from 'd3' $scope.displayCoders = true $scope.numCoders = d.number $scope.$digest() + + d3.select('#chart-tooltip') + .style('left', (d3.event.pageX-2) + 'px') + .style('top', (d3.event.pageY-2) + 'px') + .style('display', 'block') + $('#chart-tooltip').addClass('distribution') + d3.select('#chart-tooltip .tooltip-container') + .style('left', '20px !important') + .style('top', '-20px !important') + .style('opacity', '1') + d3.select('#chart-tooltip .tooltip-container .tooltip-pointer') + .style('left', '-5.5px !important') + .style('bottom', '25px !important') + + d3.select('#chart-tooltip .challenge-name').text($scope.numCoders + ' Coders'); + d3.select('#chart-tooltip .challenge-date').text('Rating Range: '+ $scope.highlightedRating + '-'+($scope.highlightedRating+99)); + d3.select('#chart-tooltip .tooltip-rating').text($scope.numCoders); + d3.select('#chart-tooltip .tooltip-rating').style('background', ratingToColor($scope.colors, $scope.highlightedRating)); + $('#chart-tooltip').show(); + }) .on('mouseout', function(d) { $scope.displayCoders = false $scope.highlightedRating = false + $('#chart-tooltip').removeClass('distribution') + $('#chart-tooltip').hide(); $scope.$digest() }) diff --git a/app/directives/distribution-graph/distribution-graph.jade b/app/directives/distribution-graph/distribution-graph.jade index 6faf6b4fd..f146363af 100644 --- a/app/directives/distribution-graph/distribution-graph.jade +++ b/app/directives/distribution-graph/distribution-graph.jade @@ -1,15 +1,11 @@ .distribution-graph-directive(ng-show="graphState.show == 'distribution'") - .graph-viewer - .distribution-graph + .graph-title + .text Rating Distribution Graph + .button-group + button.tc-btn.tc-btn-s(ng-click="graphState.show = 'history'") View Rating History + button.tc-btn.tc-btn-s.active(ng-click="graphState.show = 'distribution'") View Rating Distribution - .info-port - .coders(ng-if="displayCoders", style="background: {{highlightedRating || rating | ratingColor}}") - .num {{numCoders}} - .label CODERS - .coders(ng-if="!displayCoders", style="background: {{rating | ratingColor}}") - .num {{rating}} - .label RATING - button.tc-btn.tc-btn-s.compare(ng-click="graphState.show = 'history'") - | View Rating History + .graph-viewer + .distribution-graph \ No newline at end of file diff --git a/app/directives/history-graph/history-graph.directive.js b/app/directives/history-graph/history-graph.directive.js index f42120200..09caa0410 100644 --- a/app/directives/history-graph/history-graph.directive.js +++ b/app/directives/history-graph/history-graph.directive.js @@ -1,6 +1,9 @@ import angular from 'angular' import moment from 'moment' import d3 from 'd3' +import React from 'react' +import ReactDOM from 'react-dom' +import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.jsx' (function() { 'use strict' @@ -59,7 +62,7 @@ import d3 from 'd3' } ] var measurements = { - w: 600, + w: 900, h: 400, padding: { top: 20, @@ -155,9 +158,8 @@ import d3 from 'd3' var svg = d3.select('.history-graph').append('svg') .attr('width', w + padding.left + padding.right) .attr('height', h + padding.top + padding.bottom) - - - svg.append('rect') + + svg.append('rect') .attr('x', padding.left) .attr('y', padding.top) .attr('width', w) @@ -243,6 +245,18 @@ import d3 from 'd3' return y } } + ReactDOM.unmountComponentAtNode(document.getElementById('chart-tooltip')); + ReactDOM.render( +
+
+
+
+
+
+
+
+
+ , document.getElementById('chart-tooltip')); svg.selectAll('circle') .data(history) @@ -261,20 +275,31 @@ import d3 from 'd3' $scope.historyRating = d.newRating $scope.historyDate = moment(d.ratingDate).format('YYYY-MM-DD') $scope.historyChallenge = d.challengeName + $scope.$digest() - d3.select(this) - .attr('r', 6.0) + + d3.select('#chart-tooltip') + .style('left', (d3.event.pageX-5) + 'px') + .style('top', (d3.event.pageY-5) + 'px') + .style('display', 'block') + d3.select('#chart-tooltip .tooltip-container') + .style('left', '20px !important') + .style('top', '-20px !important') + .style('opacity', '1') + d3.select('#chart-tooltip .tooltip-container .tooltip-pointer') + .style('left', '-5.5px !important') + .style('bottom', '25px !important') + + d3.select('#chart-tooltip .challenge-name').text($scope.historyChallenge); + d3.select('#chart-tooltip .challenge-date').text(moment(d.ratingDate).format('MMM DD, YYYY')); + d3.select('#chart-tooltip .tooltip-rating').text($scope.historyRating); + d3.select('#chart-tooltip .tooltip-rating').style('background', ratingToColor($scope.colors, $scope.historyRating)); + }) .on('mouseout', function(d) { $scope.historyRating = undefined - $scope.$digest() - d3.select(this) - .attr('r', 4.5) - .attr('stroke', 'none') - .attr('stroke-width', '0px') - }) - .attr('r', 4.5) - + $scope.$digest() + }) } diff --git a/app/directives/history-graph/history-graph.jade b/app/directives/history-graph/history-graph.jade index 4eef54967..6d9dd7d16 100644 --- a/app/directives/history-graph/history-graph.jade +++ b/app/directives/history-graph/history-graph.jade @@ -1,13 +1,11 @@ .history-graph-directive(ng-show="graphState.show == 'history'") - .history-graph-container - .history-graph + .graph-title + .text Rating History Graph + .button-group + button.tc-btn.tc-btn-s.active(ng-click="graphState.show = 'history'") View Rating History + button.tc-btn.tc-btn-s(ng-click="graphState.show = 'distribution'") View Rating Distribution + + .history-graph-container - .info-port - .rating(style="background: {{historyRating || rating | ratingColor}}") - .num {{historyRating || rating}} - .label RATING - .history-info - .challenge(ng-if="historyRating") {{historyChallenge}} - .date(ng-if="historyRating") {{historyDate | date}} - button.tc-btn.tc-btn-s.compare(ng-click="graphState.show = 'distribution'") View Rating Distribution + .history-graph \ No newline at end of file diff --git a/app/index.jade b/app/index.jade index 5a5a0beeb..2424fcc00 100644 --- a/app/index.jade +++ b/app/index.jade @@ -36,3 +36,5 @@ html .fold-pusher div(ui-view="footer") + + #chart-tooltip \ No newline at end of file diff --git a/app/index.js b/app/index.js index e698b267b..89760c27c 100644 --- a/app/index.js +++ b/app/index.js @@ -25,6 +25,7 @@ require('xml2js') require('appirio-tech-ng-ui-components') require('appirio-tech-ng-iso-constants') +require('appirio-tech-react-components') // Vendor styles require('../node_modules/angucomplete-alt/angucomplete-alt.css') diff --git a/assets/css/directives/distribution-graph.scss b/assets/css/directives/distribution-graph.scss index 9b0b83e31..cce226949 100644 --- a/assets/css/directives/distribution-graph.scss +++ b/assets/css/directives/distribution-graph.scss @@ -12,6 +12,51 @@ } +.graph-title { + width: 960px; + padding-left: 45px; + text-align: left; + margin: auto; + font-size: 28px; + line-height: 35px; + color: #47474F; + + .text { + float: left; + } + + .button-group { + float: right; + display: block; + button.tc-btn.tc-btn-s { + background: #fff; + color: #47474f; + border: 1px solid #c3c3c8; + height: 30px; + box-sizing: border-box; + &.active { + background: #dcdce0; + -webkit-box-shadow: inset 0px 1px 3px 0px rgba(0,0,0,1); + -moz-box-shadow: inset 0px 1px 3px 0px rgba(0,0,0,1); + box-shadow: inset 0px 1px 3px 0px rgba(0,0,0,1); + border: none; + } + &:first-child { + border-top-left-radius: 2px; + border-bottom-left-radius: 2px; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + &:last-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + } + } + } +} + .graph-viewer { margin-top: 18px; display: flex; diff --git a/assets/css/directives/history-graph.scss b/assets/css/directives/history-graph.scss index 38c4692ae..3726d3614 100644 --- a/assets/css/directives/history-graph.scss +++ b/assets/css/directives/history-graph.scss @@ -4,6 +4,7 @@ display: flex; flex-direction: column; align-items: center; + margin-top: 20px; .compare { margin-top: 5px; margin-bottom: 15px; @@ -13,6 +14,35 @@ display: flex; flex-direction: column; align-items: center; + .graph-title { + width: 960px; + padding-left: 45px; + text-align: left; + margin: auto; + font-size: 28px; + line-height: 35px; + color: #47474F; + + .text { + float: left; + } + + .button-group { + float: right; + display: block; + button.tc-btn.tc-btn-s { + background: #fff; + color: #47474f; + &.active { + background: #dcdce0; + -webkit-box-shadow: 0px 1px 3px 0px rgba(0,0,0,1); + -moz-box-shadow: 0px 1px 3px 0px rgba(0,0,0,1); + box-shadow: 0px 1px 3px 0px rgba(0,0,0,1); + } + } + } + } + .history-graph { display: flex; diff --git a/assets/css/my-dashboard/subtrack-stats.scss b/assets/css/my-dashboard/subtrack-stats.scss index c0153a0cf..087d84427 100644 --- a/assets/css/my-dashboard/subtrack-stats.scss +++ b/assets/css/my-dashboard/subtrack-stats.scss @@ -106,3 +106,76 @@ } } } + +#chart-tooltip { + width: 18px; + height: 18px; + border-radius: 50%; + display: block; + position: absolute; + z-index: 1000; + display: none; +} + +#chart-tooltip.distribution { + width: 4px; + height: 4px; +} + +.tooltip-target { + width: 18px; + height: 18px; + border-radius: 50%; + display: block; + top: -4px; + left: -4px; +} + +#chart-tooltip.distribution .tooltip-target { + top: -2px; + left: -2px; + width: 4px; + height: 4px; +} + +.Tooltip .tooltip-container { + position: relative; + opacity: 1; + top: 10px !important; + left: -150px !important; + width: 320px; + height: 115px; +} + +.Tooltip .tooltip-container .tooltip-pointer { + left: 150px !important; + top: -5.5px !important; + bottom: auto !important; +} + +.Tooltip .tooltip-container.tooltip-hide { + visibility: visible; + opacity: 1; +} + +#chart-tooltip .tooltip-rating { + width: 60px; + height: 60px; + margin-right: 15px; + border-radius: 50%; + float: left; + text-align: center; + padding-top: 23px; +} + +#chart-tooltip .tooltip-challenge { + height: 100%; + width: calc(100% - 100px); + float: left; +} + +#chart-tooltip .tooltip-challenge .challenge-date { + font-weight: normal; + margin-top: 13px; + font-size: 12px; +} \ No newline at end of file diff --git a/package.json b/package.json index 469c5a3bb..2158e59b0 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,8 @@ }, "devDependencies": { "angular-mocks": "^1.4.9", - "appirio-tech-webpack-config": "^0.3.0", + "appirio-tech-webpack-config": "^0.3.5", + "babel-plugin-add-module-exports": "^0.2.1", "babel-polyfill": "^6.7.2", "bardjs": "^0.1.8", "bower": "^1.6.8", @@ -54,7 +55,8 @@ "angularjs-toaster": "^1.0.0", "appirio-styles": "0.x.x", "appirio-tech-ng-iso-constants": "^1.0.6", - "appirio-tech-ng-ui-components": "^2.1.2", + "appirio-tech-ng-ui-components": "^2.2.4", + "appirio-tech-react-components": "^0.0.12", "auth0-angular": "^4.1.0", "auth0-js": "^6.8.0", "d3": "^3.5.14", @@ -69,6 +71,7 @@ "restangular": "^1.5.2", "tc-angular-ellipsis": "^0.1.6", "topcoder-app-r": "^1.0.0", + "webpack-hot-middleware": "^2.10.0", "xml2js": "^0.4.16", "zepto": "^1.0.1" } From 2c3adcabbab9976a1a902c94fa55ba457a5d4f7b Mon Sep 17 00:00:00 2001 From: Shreemudra Satapathy Date: Sat, 21 May 2016 08:35:32 +0530 Subject: [PATCH 02/18] Fixed lint issues --- .../distribution-graph.directive.js | 65 +++++++++---------- .../history-graph/history-graph.directive.js | 65 +++++++++---------- 2 files changed, 64 insertions(+), 66 deletions(-) diff --git a/app/directives/distribution-graph/distribution-graph.directive.js b/app/directives/distribution-graph/distribution-graph.directive.js index dff5e5a82..df5ed7e35 100644 --- a/app/directives/distribution-graph/distribution-graph.directive.js +++ b/app/directives/distribution-graph/distribution-graph.directive.js @@ -1,6 +1,5 @@ import angular from 'angular' import d3 from 'd3' -import React from 'react' import ReactDOM from 'react-dom' import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.jsx' @@ -179,19 +178,19 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js .attr('fill', function(d) { return ratingToColor($scope.colors, d.start) }) - ReactDOM.unmountComponentAtNode(document.getElementById('chart-tooltip')); - ReactDOM.render( -
-
-
-
-
-
-
-
-
- , document.getElementById('chart-tooltip')); - + ReactDOM.unmountComponentAtNode(document.getElementById('chart-tooltip')); + ReactDOM.render( +
+
+
+
+
+
+
+
+
+ , document.getElementById('chart-tooltip')); + svg.selectAll('rect.hover') .data(ranges) .enter() @@ -213,32 +212,32 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js $scope.displayCoders = true $scope.numCoders = d.number $scope.$digest() - - d3.select('#chart-tooltip') - .style('left', (d3.event.pageX-2) + 'px') + + d3.select('#chart-tooltip') + .style('left', (d3.event.pageX-2) + 'px') .style('top', (d3.event.pageY-2) + 'px') - .style('display', 'block') - $('#chart-tooltip').addClass('distribution') - d3.select('#chart-tooltip .tooltip-container') - .style('left', '20px !important') + .style('display', 'block') + $('#chart-tooltip').addClass('distribution') + d3.select('#chart-tooltip .tooltip-container') + .style('left', '20px !important') .style('top', '-20px !important') - .style('opacity', '1') - d3.select('#chart-tooltip .tooltip-container .tooltip-pointer') - .style('left', '-5.5px !important') + .style('opacity', '1') + d3.select('#chart-tooltip .tooltip-container .tooltip-pointer') + .style('left', '-5.5px !important') .style('bottom', '25px !important') - - d3.select('#chart-tooltip .challenge-name').text($scope.numCoders + ' Coders'); - d3.select('#chart-tooltip .challenge-date').text('Rating Range: '+ $scope.highlightedRating + '-'+($scope.highlightedRating+99)); - d3.select('#chart-tooltip .tooltip-rating').text($scope.numCoders); - d3.select('#chart-tooltip .tooltip-rating').style('background', ratingToColor($scope.colors, $scope.highlightedRating)); - $('#chart-tooltip').show(); - + + d3.select('#chart-tooltip .challenge-name').text($scope.numCoders + ' Coders'); + d3.select('#chart-tooltip .challenge-date').text('Rating Range: '+ $scope.highlightedRating + '-'+($scope.highlightedRating+99)); + d3.select('#chart-tooltip .tooltip-rating').text($scope.numCoders); + d3.select('#chart-tooltip .tooltip-rating').style('background', ratingToColor($scope.colors, $scope.highlightedRating)); + $('#chart-tooltip').show(); + }) .on('mouseout', function(d) { $scope.displayCoders = false $scope.highlightedRating = false - $('#chart-tooltip').removeClass('distribution') - $('#chart-tooltip').hide(); + $('#chart-tooltip').removeClass('distribution') + $('#chart-tooltip').hide(); $scope.$digest() }) diff --git a/app/directives/history-graph/history-graph.directive.js b/app/directives/history-graph/history-graph.directive.js index 09caa0410..5bb5cfe54 100644 --- a/app/directives/history-graph/history-graph.directive.js +++ b/app/directives/history-graph/history-graph.directive.js @@ -1,7 +1,6 @@ import angular from 'angular' import moment from 'moment' import d3 from 'd3' -import React from 'react' import ReactDOM from 'react-dom' import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.jsx' @@ -158,8 +157,8 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js var svg = d3.select('.history-graph').append('svg') .attr('width', w + padding.left + padding.right) .attr('height', h + padding.top + padding.bottom) - - svg.append('rect') + + svg.append('rect') .attr('x', padding.left) .attr('y', padding.top) .attr('width', w) @@ -245,18 +244,18 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js return y } } - ReactDOM.unmountComponentAtNode(document.getElementById('chart-tooltip')); - ReactDOM.render( -
-
-
-
-
-
-
-
-
- , document.getElementById('chart-tooltip')); + ReactDOM.unmountComponentAtNode(document.getElementById('chart-tooltip')); + ReactDOM.render( +
+
+
+
+
+
+
+
+
+ , document.getElementById('chart-tooltip')); svg.selectAll('circle') .data(history) @@ -275,31 +274,31 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js $scope.historyRating = d.newRating $scope.historyDate = moment(d.ratingDate).format('YYYY-MM-DD') $scope.historyChallenge = d.challengeName - + $scope.$digest() - - d3.select('#chart-tooltip') - .style('left', (d3.event.pageX-5) + 'px') + + d3.select('#chart-tooltip') + .style('left', (d3.event.pageX-5) + 'px') .style('top', (d3.event.pageY-5) + 'px') - .style('display', 'block') - d3.select('#chart-tooltip .tooltip-container') - .style('left', '20px !important') + .style('display', 'block') + d3.select('#chart-tooltip .tooltip-container') + .style('left', '20px !important') .style('top', '-20px !important') - .style('opacity', '1') - d3.select('#chart-tooltip .tooltip-container .tooltip-pointer') - .style('left', '-5.5px !important') + .style('opacity', '1') + d3.select('#chart-tooltip .tooltip-container .tooltip-pointer') + .style('left', '-5.5px !important') .style('bottom', '25px !important') - - d3.select('#chart-tooltip .challenge-name').text($scope.historyChallenge); - d3.select('#chart-tooltip .challenge-date').text(moment(d.ratingDate).format('MMM DD, YYYY')); - d3.select('#chart-tooltip .tooltip-rating').text($scope.historyRating); - d3.select('#chart-tooltip .tooltip-rating').style('background', ratingToColor($scope.colors, $scope.historyRating)); - + + d3.select('#chart-tooltip .challenge-name').text($scope.historyChallenge); + d3.select('#chart-tooltip .challenge-date').text(moment(d.ratingDate).format('MMM DD, YYYY')); + d3.select('#chart-tooltip .tooltip-rating').text($scope.historyRating); + d3.select('#chart-tooltip .tooltip-rating').style('background', ratingToColor($scope.colors, $scope.historyRating)); + }) .on('mouseout', function(d) { $scope.historyRating = undefined - $scope.$digest() - }) + $scope.$digest() + }) } From 87f06745c754d480a7be2bbe82ae6f5f12e14dd1 Mon Sep 17 00:00:00 2001 From: Shreemudra Satapathy Date: Sat, 21 May 2016 09:06:28 +0530 Subject: [PATCH 03/18] Fixed unused var lint errors --- .../distribution-graph.directive.js | 66 ++++++++++--------- .../history-graph/history-graph.directive.js | 65 +++++++++--------- 2 files changed, 67 insertions(+), 64 deletions(-) diff --git a/app/directives/distribution-graph/distribution-graph.directive.js b/app/directives/distribution-graph/distribution-graph.directive.js index df5ed7e35..6fbfc7821 100644 --- a/app/directives/distribution-graph/distribution-graph.directive.js +++ b/app/directives/distribution-graph/distribution-graph.directive.js @@ -1,5 +1,6 @@ import angular from 'angular' import d3 from 'd3' +import React from 'react' // eslint-disable-line no-unused-vars import ReactDOM from 'react-dom' import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.jsx' @@ -178,19 +179,20 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js .attr('fill', function(d) { return ratingToColor($scope.colors, d.start) }) - ReactDOM.unmountComponentAtNode(document.getElementById('chart-tooltip')); - ReactDOM.render( -
-
-
-
-
-
-
-
-
- , document.getElementById('chart-tooltip')); - + + ReactDOM.unmountComponentAtNode(document.getElementById('chart-tooltip')) + ReactDOM.render( +
+
+
+
+
+
+
+
+
+ , document.getElementById('chart-tooltip')) + svg.selectAll('rect.hover') .data(ranges) .enter() @@ -212,32 +214,32 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js $scope.displayCoders = true $scope.numCoders = d.number $scope.$digest() - - d3.select('#chart-tooltip') - .style('left', (d3.event.pageX-2) + 'px') + + d3.select('#chart-tooltip') + .style('left', (d3.event.pageX-2) + 'px') .style('top', (d3.event.pageY-2) + 'px') - .style('display', 'block') - $('#chart-tooltip').addClass('distribution') - d3.select('#chart-tooltip .tooltip-container') - .style('left', '20px !important') + .style('display', 'block') + $('#chart-tooltip').addClass('distribution') + d3.select('#chart-tooltip .tooltip-container') + .style('left', '20px !important') .style('top', '-20px !important') - .style('opacity', '1') - d3.select('#chart-tooltip .tooltip-container .tooltip-pointer') - .style('left', '-5.5px !important') + .style('opacity', '1') + d3.select('#chart-tooltip .tooltip-container .tooltip-pointer') + .style('left', '-5.5px !important') .style('bottom', '25px !important') - - d3.select('#chart-tooltip .challenge-name').text($scope.numCoders + ' Coders'); - d3.select('#chart-tooltip .challenge-date').text('Rating Range: '+ $scope.highlightedRating + '-'+($scope.highlightedRating+99)); - d3.select('#chart-tooltip .tooltip-rating').text($scope.numCoders); - d3.select('#chart-tooltip .tooltip-rating').style('background', ratingToColor($scope.colors, $scope.highlightedRating)); - $('#chart-tooltip').show(); - + + d3.select('#chart-tooltip .challenge-name').text($scope.numCoders + ' Coders') + d3.select('#chart-tooltip .challenge-date').text('Rating Range: '+ $scope.highlightedRating + '-'+($scope.highlightedRating+99)) + d3.select('#chart-tooltip .tooltip-rating').text($scope.numCoders) + d3.select('#chart-tooltip .tooltip-rating').style('background', ratingToColor($scope.colors, $scope.highlightedRating)) + $('#chart-tooltip').show() + }) .on('mouseout', function(d) { $scope.displayCoders = false $scope.highlightedRating = false - $('#chart-tooltip').removeClass('distribution') - $('#chart-tooltip').hide(); + $('#chart-tooltip').removeClass('distribution') + $('#chart-tooltip').hide() $scope.$digest() }) diff --git a/app/directives/history-graph/history-graph.directive.js b/app/directives/history-graph/history-graph.directive.js index 5bb5cfe54..f506be555 100644 --- a/app/directives/history-graph/history-graph.directive.js +++ b/app/directives/history-graph/history-graph.directive.js @@ -1,6 +1,7 @@ import angular from 'angular' import moment from 'moment' import d3 from 'd3' +import React from 'react' // eslint-disable-line no-unused-vars import ReactDOM from 'react-dom' import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.jsx' @@ -157,8 +158,8 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js var svg = d3.select('.history-graph').append('svg') .attr('width', w + padding.left + padding.right) .attr('height', h + padding.top + padding.bottom) - - svg.append('rect') + + svg.append('rect') .attr('x', padding.left) .attr('y', padding.top) .attr('width', w) @@ -244,18 +245,18 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js return y } } - ReactDOM.unmountComponentAtNode(document.getElementById('chart-tooltip')); - ReactDOM.render( -
-
-
-
-
-
-
-
-
- , document.getElementById('chart-tooltip')); + ReactDOM.unmountComponentAtNode(document.getElementById('chart-tooltip')) + ReactDOM.render( +
+
+
+
+
+
+
+
+
+ , document.getElementById('chart-tooltip')) svg.selectAll('circle') .data(history) @@ -274,31 +275,31 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js $scope.historyRating = d.newRating $scope.historyDate = moment(d.ratingDate).format('YYYY-MM-DD') $scope.historyChallenge = d.challengeName - + $scope.$digest() - - d3.select('#chart-tooltip') - .style('left', (d3.event.pageX-5) + 'px') + + d3.select('#chart-tooltip') + .style('left', (d3.event.pageX-5) + 'px') .style('top', (d3.event.pageY-5) + 'px') - .style('display', 'block') - d3.select('#chart-tooltip .tooltip-container') - .style('left', '20px !important') + .style('display', 'block') + d3.select('#chart-tooltip .tooltip-container') + .style('left', '20px !important') .style('top', '-20px !important') - .style('opacity', '1') - d3.select('#chart-tooltip .tooltip-container .tooltip-pointer') - .style('left', '-5.5px !important') + .style('opacity', '1') + d3.select('#chart-tooltip .tooltip-container .tooltip-pointer') + .style('left', '-5.5px !important') .style('bottom', '25px !important') - - d3.select('#chart-tooltip .challenge-name').text($scope.historyChallenge); - d3.select('#chart-tooltip .challenge-date').text(moment(d.ratingDate).format('MMM DD, YYYY')); - d3.select('#chart-tooltip .tooltip-rating').text($scope.historyRating); - d3.select('#chart-tooltip .tooltip-rating').style('background', ratingToColor($scope.colors, $scope.historyRating)); - + + d3.select('#chart-tooltip .challenge-name').text($scope.historyChallenge) + d3.select('#chart-tooltip .challenge-date').text(moment(d.ratingDate).format('MMM DD, YYYY')) + d3.select('#chart-tooltip .tooltip-rating').text($scope.historyRating) + d3.select('#chart-tooltip .tooltip-rating').style('background', ratingToColor($scope.colors, $scope.historyRating)) + }) .on('mouseout', function(d) { $scope.historyRating = undefined - $scope.$digest() - }) + $scope.$digest() + }) } From 8bc8b4bd564b082aafcf11f7754a06d78bc2bf9f Mon Sep 17 00:00:00 2001 From: Shreemudra Satapathy Date: Sun, 22 May 2016 13:28:15 +0530 Subject: [PATCH 04/18] Fixed review comments --- .../distribution-graph.directive.js | 4 ++-- .../history-graph/history-graph.directive.js | 11 +++++++++-- assets/css/my-dashboard/subtrack-stats.scss | 8 +++++++- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/app/directives/distribution-graph/distribution-graph.directive.js b/app/directives/distribution-graph/distribution-graph.directive.js index 6fbfc7821..62d408ed3 100644 --- a/app/directives/distribution-graph/distribution-graph.directive.js +++ b/app/directives/distribution-graph/distribution-graph.directive.js @@ -203,11 +203,11 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js return xScale(i) }) .attr('y', function(d) { - return padding.top + return yScale(d.number) }) .attr('width', xScale.rangeBand()) .attr('height', function(d) { - return totalH - padding.bottom - padding.top + return totalH - padding.bottom - yScale(d.number) }) .on('mouseover', function(d) { $scope.highlightedRating = d.start diff --git a/app/directives/history-graph/history-graph.directive.js b/app/directives/history-graph/history-graph.directive.js index f506be555..1efc4b2c8 100644 --- a/app/directives/history-graph/history-graph.directive.js +++ b/app/directives/history-graph/history-graph.directive.js @@ -257,7 +257,9 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js , document.getElementById('chart-tooltip')) - + + var toolTipHideIntervalId = null + svg.selectAll('circle') .data(history) .enter() @@ -275,7 +277,7 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js $scope.historyRating = d.newRating $scope.historyDate = moment(d.ratingDate).format('YYYY-MM-DD') $scope.historyChallenge = d.challengeName - + window.clearInterval(toolTipHideIntervalId); $scope.$digest() d3.select('#chart-tooltip') @@ -299,6 +301,11 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js .on('mouseout', function(d) { $scope.historyRating = undefined $scope.$digest() + toolTipHideIntervalId = window.setInterval(function(){ + d3.select('#chart-tooltip') + .style('left', '-500px') + .style('top', '-500px') + },1500); }) } diff --git a/assets/css/my-dashboard/subtrack-stats.scss b/assets/css/my-dashboard/subtrack-stats.scss index 087d84427..69bdac869 100644 --- a/assets/css/my-dashboard/subtrack-stats.scss +++ b/assets/css/my-dashboard/subtrack-stats.scss @@ -170,10 +170,16 @@ #chart-tooltip .tooltip-challenge { height: 100%; - width: calc(100% - 100px); + width: calc(100% - 90px); float: left; } +#chart-tooltip .tooltip-challenge .challenge-name { + white-space: normal; + line-height: 20px; + word-wrap: break-word; +} + #chart-tooltip .tooltip-challenge .challenge-date { font-weight: normal; margin-top: 13px; From 80f1c4770022878b08d183361693bf2ecf895d38 Mon Sep 17 00:00:00 2001 From: Shreemudra Satapathy Date: Sun, 22 May 2016 13:34:46 +0530 Subject: [PATCH 05/18] Fixed lint errors --- app/directives/history-graph/history-graph.directive.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/directives/history-graph/history-graph.directive.js b/app/directives/history-graph/history-graph.directive.js index 1efc4b2c8..43bc538c0 100644 --- a/app/directives/history-graph/history-graph.directive.js +++ b/app/directives/history-graph/history-graph.directive.js @@ -277,9 +277,9 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js $scope.historyRating = d.newRating $scope.historyDate = moment(d.ratingDate).format('YYYY-MM-DD') $scope.historyChallenge = d.challengeName - window.clearInterval(toolTipHideIntervalId); + window.clearInterval(toolTipHideIntervalId) $scope.$digest() - + d3.select('#chart-tooltip') .style('left', (d3.event.pageX-5) + 'px') .style('top', (d3.event.pageY-5) + 'px') @@ -305,7 +305,7 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js d3.select('#chart-tooltip') .style('left', '-500px') .style('top', '-500px') - },1500); + },1500); }) } From 8799f4d36195ce302bec77a7b6786b0e37996a4e Mon Sep 17 00:00:00 2001 From: Shreemudra Satapathy Date: Sun, 22 May 2016 13:40:37 +0530 Subject: [PATCH 06/18] Removed extra semicolon --- app/directives/history-graph/history-graph.directive.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/directives/history-graph/history-graph.directive.js b/app/directives/history-graph/history-graph.directive.js index 43bc538c0..c1e49836f 100644 --- a/app/directives/history-graph/history-graph.directive.js +++ b/app/directives/history-graph/history-graph.directive.js @@ -305,7 +305,7 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js d3.select('#chart-tooltip') .style('left', '-500px') .style('top', '-500px') - },1500); + },1500) }) } From 57f16f229d629d8ed0fe8963c706545d4c2815b8 Mon Sep 17 00:00:00 2001 From: Shreemudra Satapathy Date: Tue, 24 May 2016 03:25:39 +0530 Subject: [PATCH 07/18] Fixed issues with tooltip --- .../distribution-graph.directive.js | 60 +++-- .../history-graph/history-graph.directive.js | 46 ++-- app/topcoder.constants.js | 5 +- assets/css/my-dashboard/subtrack-stats.scss | 19 +- assets/css/topcoder.scss | 10 + .../proximanova-regular-webfont.eot | Bin 0 -> 21178 bytes .../proximanova-regular-webfont.svg | 251 ++++++++++++++++++ .../proximanova-regular-webfont.ttf | Bin 0 -> 45168 bytes .../proximanova-regular-webfont.woff | Bin 0 -> 24236 bytes 9 files changed, 346 insertions(+), 45 deletions(-) create mode 100644 assets/fonts/proximanova/proximanova-regular-webfont.eot create mode 100644 assets/fonts/proximanova/proximanova-regular-webfont.svg create mode 100644 assets/fonts/proximanova/proximanova-regular-webfont.ttf create mode 100644 assets/fonts/proximanova/proximanova-regular-webfont.woff diff --git a/app/directives/distribution-graph/distribution-graph.directive.js b/app/directives/distribution-graph/distribution-graph.directive.js index 62d408ed3..3152f898e 100644 --- a/app/directives/distribution-graph/distribution-graph.directive.js +++ b/app/directives/distribution-graph/distribution-graph.directive.js @@ -179,9 +179,11 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js .attr('fill', function(d) { return ratingToColor($scope.colors, d.start) }) + + var mousemoveInterval = null ReactDOM.unmountComponentAtNode(document.getElementById('chart-tooltip')) - ReactDOM.render( + ReactDOM.render(
@@ -192,7 +194,7 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js
, document.getElementById('chart-tooltip')) - + $scope.isFocused = false svg.selectAll('rect.hover') .data(ranges) .enter() @@ -210,39 +212,67 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js return totalH - padding.bottom - yScale(d.number) }) .on('mouseover', function(d) { + $scope.isFocused = true $scope.highlightedRating = d.start $scope.displayCoders = true $scope.numCoders = d.number $scope.$digest() - + d3.select('#chart-tooltip') - .style('left', (d3.event.pageX-2) + 'px') - .style('top', (d3.event.pageY-2) + 'px') - .style('display', 'block') + .style('left', (d3.event.pageX-4) + 'px') + .style('top', (d3.event.pageY-4) + 'px') + $('#chart-tooltip').addClass('distribution') d3.select('#chart-tooltip .tooltip-container') - .style('left', '20px !important') - .style('top', '-20px !important') - .style('opacity', '1') + .style('left', '20px !important') + .style('top', '-20px !important') + d3.select('#chart-tooltip .tooltip-container .tooltip-pointer') - .style('left', '-5.5px !important') - .style('bottom', '25px !important') + .style('left', '-5.5px !important') + .style('bottom', '25px !important') d3.select('#chart-tooltip .challenge-name').text($scope.numCoders + ' Coders') d3.select('#chart-tooltip .challenge-date').text('Rating Range: '+ $scope.highlightedRating + '-'+($scope.highlightedRating+99)) d3.select('#chart-tooltip .tooltip-rating').text($scope.numCoders) d3.select('#chart-tooltip .tooltip-rating').style('background', ratingToColor($scope.colors, $scope.highlightedRating)) - $('#chart-tooltip').show() - + }) + .on('mousemove', function(d) { + window.clearTimeout(mousemoveInterval) + var left = (d3.event.pageX-4) + var top = (d3.event.pageY-4) + mousemoveInterval = window.setTimeout(function(){ + d3.select('#chart-tooltip') + .style('left', left + 'px') + .style('top', top + 'px') + + d3.select('#chart-tooltip .tooltip-container') + .style('left', '20px !important') + .style('top', '-20px !important') + + d3.select('#chart-tooltip .tooltip-container .tooltip-pointer') + .style('left', '-5.5px !important') + .style('bottom', '25px !important') + }, 50) + }) .on('mouseout', function(d) { $scope.displayCoders = false $scope.highlightedRating = false $('#chart-tooltip').removeClass('distribution') - $('#chart-tooltip').hide() + $scope.isFocused = false $scope.$digest() }) - + + d3.select('body').on('click', function(){ + if((d3.event.target.classList[0] != 'tooltip-target') && !$('#chart-tooltip .tooltip-container').hasClass('tooltip-hide') && + (d3.event.target.classList[0] != 'tooltip-content-container') && (d3.event.target.classList[0] != 'tooltip-container') && + (d3.event.target.classList[0] != 'tooltip-body') && (d3.event.target.classList[0] != 'Tooltip') && + (d3.event.target.tagName.toLowerCase()!='circle') && !(d3.event.target.tagName.toLowerCase()=='rect' && d3.event.target.classList[0] == 'hover')) { + $('#chart-tooltip .tooltip-container').addClass('tooltip-hide') + $('#chart-tooltip .tooltip-container').css('opacity', 0) + } + }) + svg.selectAll('line.xaxis') .data(ranges) .enter() diff --git a/app/directives/history-graph/history-graph.directive.js b/app/directives/history-graph/history-graph.directive.js index c1e49836f..6df33eb68 100644 --- a/app/directives/history-graph/history-graph.directive.js +++ b/app/directives/history-graph/history-graph.directive.js @@ -19,11 +19,11 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js rating: '=', graphState: '=' }, - controller: ['$scope', HistoryGraphController] + controller: ['$scope', '$state', '$window', 'CONSTANTS', HistoryGraphController] } } - function HistoryGraphController($scope) { + function HistoryGraphController($scope, $state, $window, CONSTANTS) { $scope.colors = [ // grey { @@ -246,7 +246,7 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js } } ReactDOM.unmountComponentAtNode(document.getElementById('chart-tooltip')) - ReactDOM.render( + ReactDOM.render(
@@ -258,8 +258,6 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js , document.getElementById('chart-tooltip')) - var toolTipHideIntervalId = null - svg.selectAll('circle') .data(history) .enter() @@ -277,20 +275,24 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js $scope.historyRating = d.newRating $scope.historyDate = moment(d.ratingDate).format('YYYY-MM-DD') $scope.historyChallenge = d.challengeName - window.clearInterval(toolTipHideIntervalId) $scope.$digest() - + $('#chart-tooltip .tooltip-container').on('click', function(){ + if($state.params && $state.params.track === 'DEVELOP') + $window.open(CONSTANTS.CHALLENGE_DETAIL_URL + d.challengeId + '/?type=develop', '_blank') + else if($state.params && $state.params.subTrack === 'SRM') + $window.open(CONSTANTS.SRM_DETAIL_URL + d.challengeId, '_blank') + else if($state.params && $state.params.subTrack === 'MARATHON_MATCH') + $window.open(CONSTANTS.MARATHON_DETAIL_URL + d.challengeId, '_blank') + }) d3.select('#chart-tooltip') .style('left', (d3.event.pageX-5) + 'px') - .style('top', (d3.event.pageY-5) + 'px') - .style('display', 'block') + .style('top', (d3.event.pageY-5) + 'px') d3.select('#chart-tooltip .tooltip-container') - .style('left', '20px !important') - .style('top', '-20px !important') - .style('opacity', '1') + .style('left', '20px !important') + .style('top', '-20px !important') d3.select('#chart-tooltip .tooltip-container .tooltip-pointer') - .style('left', '-5.5px !important') - .style('bottom', '25px !important') + .style('left', '-5.5px !important') + .style('bottom', '25px !important') d3.select('#chart-tooltip .challenge-name').text($scope.historyChallenge) d3.select('#chart-tooltip .challenge-date').text(moment(d.ratingDate).format('MMM DD, YYYY')) @@ -301,11 +303,17 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js .on('mouseout', function(d) { $scope.historyRating = undefined $scope.$digest() - toolTipHideIntervalId = window.setInterval(function(){ - d3.select('#chart-tooltip') - .style('left', '-500px') - .style('top', '-500px') - },1500) + $('#chart-tooltip').off('click') + }) + + d3.select('body').on('click', function(){ + if((d3.event.target.classList[0] != 'tooltip-target') && !$('#chart-tooltip .tooltip-container').hasClass('tooltip-hide') && + (d3.event.target.classList[0] != 'tooltip-content-container') && (d3.event.target.classList[0] != 'tooltip-container') && + (d3.event.target.classList[0] != 'tooltip-body') && (d3.event.target.classList[0] != 'Tooltip') && + (d3.event.target.tagName.toLowerCase()!='circle') && !(d3.event.target.tagName.toLowerCase()=='rect' && d3.event.target.classList[0] == 'hover')) { + $('#chart-tooltip .tooltip-container').addClass('tooltip-hide') + $('#chart-tooltip .tooltip-container').css('opacity', 0) + } }) } diff --git a/app/topcoder.constants.js b/app/topcoder.constants.js index c3245842a..d8f4505bf 100644 --- a/app/topcoder.constants.js +++ b/app/topcoder.constants.js @@ -44,5 +44,8 @@ angular.module('CONSTANTS', []).constant('CONSTANTS', { 'REGISTERED' : 'REGISTERED', 'SUBMISSION_TYPE_CONTEST': 'Contest Submission', 'STATUS_ACTIVE' : 'Active', - 'STATUS_COMPLETED_WITHOUT_WIN' : 'Completed Without Win' + 'STATUS_COMPLETED_WITHOUT_WIN' : 'Completed Without Win', + 'CHALLENGE_DETAIL_URL' : 'https://www.topcoder-dev.com/challenge-details/', + 'SRM_DETAIL_URL': 'https://community.topcoder-dev.com/stat?c=round_overview&rd=', + 'MARATHON_DETAIL_URL': 'https://community.topcoder-dev.com/longcontest/stats/?module=ViewOverview&rd=' }) diff --git a/assets/css/my-dashboard/subtrack-stats.scss b/assets/css/my-dashboard/subtrack-stats.scss index 69bdac869..7ee320814 100644 --- a/assets/css/my-dashboard/subtrack-stats.scss +++ b/assets/css/my-dashboard/subtrack-stats.scss @@ -111,10 +111,10 @@ width: 18px; height: 18px; border-radius: 50%; - display: block; position: absolute; z-index: 1000; - display: none; + cursor: pointer; + font-family: 'Proxima Nova', Helvetica, Arial, sans-serif; } #chart-tooltip.distribution { @@ -128,14 +128,16 @@ border-radius: 50%; display: block; top: -4px; + cursor: pointer; left: -4px; } #chart-tooltip.distribution .tooltip-target { - top: -2px; - left: -2px; - width: 4px; - height: 4px; + top: -4px; + left: -4px; + width: 8px; + height: 8px; + border-radius: 0; } .Tooltip .tooltip-container { @@ -153,10 +155,7 @@ bottom: auto !important; } -.Tooltip .tooltip-container.tooltip-hide { - visibility: visible; - opacity: 1; -} + #chart-tooltip .tooltip-rating { width: 60px; diff --git a/assets/css/topcoder.scss b/assets/css/topcoder.scss index f41f104d4..8891d57f4 100644 --- a/assets/css/topcoder.scss +++ b/assets/css/topcoder.scss @@ -183,6 +183,16 @@ font-weight: 300; font-style: italic; } +@font-face { + font-family: 'Proxima Nova'; + src: url('../fonts/proximanova/proximanova-regular-webfont.eot'); + src: url('../fonts/proximanova/proximanova-regular-webfont.eot?#iefix') format('embedded-opentype'), + url('../fonts/proximanova/proximanova-regular-webfont') format('woff'), + url('../fonts/proximanova/proximanova-regular-webfont.ttf') format('truetype'), + url('../fonts/proximanova/proximanova-regular-webfont.svg') format('svg'); + font-weight: 400; + font-style: normal; +} body { @include font-with-weight('Merriweather Sans', 400); diff --git a/assets/fonts/proximanova/proximanova-regular-webfont.eot b/assets/fonts/proximanova/proximanova-regular-webfont.eot new file mode 100644 index 0000000000000000000000000000000000000000..e74ae9e360d78ec87b0d27c22eb3f5a61402856a GIT binary patch literal 21178 zcmZ^~bxa&i)Hb@iI4rO%u7$j*J#gtT>}J_ zf#W|*i)*B=Yd$qUJ1W|!e`N>1>%O++Rw1T)BLwRvY%%!?j0s&FSS3i~)=GKYvj}5K z*O^ij4m@q$H%SStY3u0vvg-7q3KaecGVGGZ?PDQ}!;lz0a#b6z%ThY{rnJ6inen`x zn1K)G<)UNJP-xLn7wuoQ8#^I~$5ct-H&-v!^`#b9n;z;ZMCL#2gmxH_S3ac0Pz2lY zw)58AP9N$>($lDX;!&yi$O9|-`v`F>j{r>B$Ne;2{Pp|t%UAgic+?tGkI4A;gV+pC z=>;Q`5`T#pK{tqnDdZ>;Vmc!ZiiWU`I!cY5xTU^p&f#OIy)e&anoe=sy)qNqZ;#0C zEG7eI{`rc( zg}7|oM5bsf=t7CkY)T+25RPU3lrLA|q~VOv_yVwAD?t|1xb7r216G+9;Z@{UBKUV8 zY?ncWzwsZt-59dn(8VaMkfwDsb3Q?t6Bj#M^g?O(k$Egv$m&LGd|G2lC<_(-YS9sA zRVetK)n(mUGYW4+uV2UO zXv6D^Fj#gmUA$F&g=LVpa#ne+q8{1#A1V{XD_Sx%8#GvbXthc*QybJvr-XfrK%nmU zSvMeZiJD0^MUlV1SDSPd`KBMuY__zOz-4kB$Z6T~dO5YpFbElYSKX{rqT)0S9}Rj< zp7Y2(g%S!`M-fmA1Dn05>s67RE5#F0XW^aWWQo(2)#42cdHNrCqmnOi8tZ;e`IxOe zhC=lVRU)iju#T?Z2?wr1xDXxop`)m+ZAPs%@H`?a%9QC9 zlcy;#)mrXJihy^zbPCoBhoot1QCFEU!v>xh$C@hA;r&>%Us6eQGU&$@%hYBoMBH?s@R$f8 zZYZEwOs1Kv0sT&ow-9vPENfT&8fF{^gfYQITPX!F03`)sr-b1rtnmT7w4{BKBkFzi z*n+yY1tE%0ZZxl4PZ?*`18 z{i0=hgWuyng zs3@`_H0toz+j=aF^R~Gk%X&jQzFn!;IIfr~1}`=RtoxX0}C^ zt`@@5@p#mF&L>n`{nEjk<{&x7jXeX<;8T!cz>m}dT*^cPig4HrHIqVvo}|G2aUl-0 z+aE8p=MdU{wCQ@9;)*!jT^ClwW)mh&eQrBwqA~wtYeRoz&YJvSUD=ZxOxj?`R`wO5 z#4ZE=tsq>bWS;gV?Z=DIi&jmeC_IOgDnDni2+f96z7=|XT;7G7;mEYU%Im#?_6~`1 zTKUu*L1q+3W<(ChD-OrA4_USRtT?Q0 z-@3_jvLb9dND}7nq-EMQPK&ZkYAE}sLwBe)e$tZvMAjb7dX+HD9c2EEUbQvO@(6^}8n^E^ZcVzomxV!!C)`N-+cJ8MPb4a0AsP#% ziH7L6!@g4|`!XD38LrJW@yj}_AP~pUw#qw1?F4Y*pV@cEtoxl^-C~Cs_@W2!XaJnj z?bFi@kZTfLms>EoDy|xG`87jEeTi9wSk`q#Jvn9$Nr=mJ;J#+dO;poP~})A zIPJ$55j_$sQl3~+=6q>j8$P?*+{;$^+OG2Qe$#`Er34G^JUCF8a*MSI%iRK9V6Fa6 zC9xU;kB(%aK1t2OP5QYI*<`H`Yson$=g2bUycjif zb%dlB7!?9+`Pus^?+QG|C)3(hwgRIDGl&`RaF*qc^#xqyjJ*`fzNDmDU<)BLeUuKc z1onJ@wZ5gm1?9CE)s&PacItQuEXB)J9Ga; z!Yaw!U<T$J7j!6s^<7l`RW%gtUw;NT@nix>AlwhN_mJ;M=}xNVIlVCefA-6(ji4mjMAW& zRl`&e;_*B_FiUt8ISQG00aN&j3RaA?@*HV%EGl><2=%h=@ z=plXXfZ+%Jvz-qI+db&yI{5&a~cNMPMA4Iuc2Zu zkTt8z>;$>W(cS9apq`~uUsZ=txXZ;n)PPphbSJJ#A0cC)z0^eM^rd+$>MxI+>Ea*q zJKy5hP!r0mci<|jUp_$k?=nan(X0^-$c_r@5(2m;UqSGtQ#Q1%;I540FQ0&Z<^Cde z{S)D=?S*I3SPuquDI3Z`Mrgt+=QTOnC>X!QH2g17P;3uaUjSYGg9&9H2o*<`OPg=d z(=&R+%}?KnPx{%fx4&(&dhX9?r4Qu=AkiS*%1vmx4(n3U;yA(}s_T6$R(6^e@V8;> zoO>A*UZPRTK5GXnRM`Htgm#j~7|Ak`PpO9O6u8%B2&zjM(os~F(q{R$ zi<2G*ih|dis>{dYH#9-lQbl1q8o9B#)k_&S5AQvV#J!QXN9)9|_*9|VB#JfG3KsVR zEYfHhx>mdvy-q%sl+B0pbQaL+YbjB4Nwf9s8*5l;kYap@6wJLWDqs~8#wz<+PqZ+<8e0XfTL{_d|Ie!qK3ec&8nx z`8+$8?Iy2Is91^o&|wr!8{;A!*8sJ=wKbl#0liU2ppw04dexcfwq5NgmXg=s1a zp6eM-6$zmk9^aUNBg;Z*xY98rXD6O>#-$u}-y_OJyD_x^q0*da4~n;hyqs2Vwccsd z;!Tt?C(jB|`Z!TC+8jpQ?+x?J=B<#M-G!CgkW`0h>QX9*S=9!E368uBto|0FRCgCe zuizCWj+@Se05nki6U}AbOH_`VikHy##Y#bOSF6d4>R9h9{~&}UA?K>8@d3qO{tofN zh?4rp9%J#>7uDsjLKbCjQXeL!mo)5c(y6Lh-n?6Wid*(o;Ti;d7#EUivsTg2aV~QX z4D&VFPj$i$2^O7=ge&tKlcCMs!fs4+sVINKeXAPOAVCa1dR7mQb_ZBF=F8 z-*C0%DGKF0jMp=#uIY>CXm-z5oz*Kscm~ysxD3CAH2S6y1Pxp8aCaE;1Igdi(q08W zF{)uH3=ruQLQ#D7uri=oHOEaSue=engdc!fKgMH#<)@Us!^dnYmA&*U=7Sm+N{BRf zsnjEhv2JqtRt?F`vkgnGl~*wM6_cN_d5Ym)C-=|qk#T#B8Ncm!_0ssL0AAeGAKgaZ z&IH385FR4DJ*ds&!~1Myy(CGncG>Q_VKB}*T=!Z`;d@lj;@oikr$DY3{B$@OQopXB zZkmlA50js9u4F=f6)O4n*@w#&Z(B{8ac|t1k`H;H&^nD*w;l(Ie=EO?^NtaQ>oJr#eblS%ejmjH53LA zR=DbhLkPmUwxmwe?QSt_to&W+eLz1rm3TE(?Q(ZQ&JtzE;r@qNxR0b!Cf$@QAj z)9^lL3CN2iZ1ft5JS8}FYJN#CTN>Vle!|j_^rGfxfh&Hm`!rt zfc@>Eq&r}^UI{|F-I=r494UR(^}UV`k7X#A6$KtF3_rM>;ubV0>u1j!YC9<$Jm^MR z|Li{Nd^vZ!U1ZU=`^*-MOLn1LhG-@rpwUWMx9^gj*J$@m?l&!wZg@g5dvhGw%(77T zdH!{ICKFvY>q(}#NBJ`xQ?*!j$Bjk>>2sg~1krzp51D6>EVp1nG5eze4`B8%qS96U zbn}ahHLFq6D9WIKBV2}HJ-oihzwp5RPuaTAvuMHca03iCC zE2RwswXD(drEsqrll3}#?k#HD55~CDm9;sax=JN9zSiRu$+y@@3rrq@Izbby+2mML z1v<@LhWI6NWZ0Absi?>BxjD4%-36L2|=S-Gtu@)(EqknX#E{D?4;^6PWVxHQfVi4YDy^CT#7f4Vy= zAn7Y@De@aFEDEmKBtAS2OhQU?%v{8LSf-nKEE5*OQF25H~Em7$^yhe(IRsh{n?hhZoOh+Jb*0TvBV2f7FwO9!!HIqQaDLo>oRh z7#^J^%|1Rjv4hd#ct2!eonLkTv&s*cUB!wT&?5zHfETTv{==QoG`E5t3qD*cs-w-; zz;cn{j*q`>XV@h6rA5MYj08dBJf~3=N3Y$hM8-RmlV0zt)5-@=+NAn$%v}iU5Vzr3 z#JZfx2`+HARPvcCRnHJyaM~_>P7IY!PDnnbZXmuQ=2yJCQu^6Z@GDXVB5ylDvzX zBBefFThWgxL5&)J?BGt>kQ~9uBiy{DQX>*zUgk$=g2DCMs*etHCh>|`LZWs@sXAprT*=(KG(E$k zi)K$Ekv>CBLsFKjeptz)f``lv5-|w5TdxfJw43vd9D8%&oWeL0HYUmYIhqRH6VhDk zxDtS3&5G7R6h0Ddj!#rVM>>C|_*Cb68u&ipprVr{VQ__KkRaG8zB5|E}}j z^d=gaBz>9}p%~sQXSP^MIiB^AxBIyS$KzSeSeJw1eZzg1(nwMab#LBG?-dk%)mBu< zGLd0oc-&yO0GiyXy(ML(VurccuUGx75#}$R;@}`8@Ixh#OFD+=8eQP9GIiQ166XE#gpy10GCyBoW~mReisJ3V6+-J zxB7-~Fg;{8U3bcIzIoUp)3uyuv-5VZt6!=Ta`xlPP7I(J%%pG`L5YTCWgIH-jJ+B3 zg)d}<4+V`Q)i%Ac73!B~pgmDBNRv;OfUA&_K>Nw;j4YipJlpxG(I7i3aw-_S#Ke~V zO+j@O?(>1Mg)dnFId7THKdk>2J+7O)TP1A}(~>tT2EV~8eD-tXS>`@Nq@B-d)7z~QmbxAmhq_6snm(>G$6`^DE%4bOA^h-<>txi6o_39fxne%MSWrP zjJjj?_2`R9mES2K9P$!uy+fbg0536dvU1lA37!dPT3|*BA^@4U(NVmxS;=3-Yr#(p zZu8jtP>pXZnK&4*{gh1D8-!%4k>=m(hz#}pg6^u9JIx>seZ_Qi4i;@tBaB9;4G~R6 zlovM++%ej5j0_%_(){wwJ_qS?&^B2C$tyh!19(6EYj)>Dw-XG?&gDw2wBQfFz|(<> zbdTmfNmDrYN}p>eiT_Fl9l>UByZ}x?&?i8yMZR@N)7o4= z!`8s@hHe;6mtlH3RFc&-eJh$Z@;l`>^N;(ic7UFarIfJcC9@2Yf9t#nXCm5ZQEum_5m(PKsi`bY(IJ$F|frGo) zT#oLY`cZA>m)-DUyR*u`ek=`RU^ zZNe`aQmfLSPg=l1vaNUZXtdsG4Mdvm5mKO&SWn;qD{;2DGjDP-Dm06LNbGD2yU6|Z zd{%AoP8wXwm?PLnf5mD({&6T<$SftFvrD~95YHAySwxM9JJ!ujIx zt;pWoLt--m346DK`kL_fKw)X+o6*gTI&Fn0uKKgikUyVUf7&zc;VDB%5Nm zb!tY~$e}fwT#G$IVFy@0zVvJAS``k@FM7P?IS^b0hd2U(s0L9$Kh>oi(Nz5^% = zVY7(pzAkjdiNiwGVTZm>mr<>3Vgo4}m`c{oce+80x|u$c7JVtT?z1?Ys>Myb@sx(o zct*p$W%~{#14PpQ-eYwLR>Pt~{k?SJOU71;lQ=%ZHg_UflHZDc2j{;sW&MaSTgmw$VJ5c@4JqmfDPV5?GC82y#$xk7dO2l0J zUC^mrui>Z+ZbyhO{m)DqKT(tyK}uG1J2mW|Q6zUUehf{gf}!^Dt(3=jk&!#btJxbL z+E?^}jK{`UH&PCnQMzHr`Gi>-YSUDJ@KUqanp1rUs=%WE0`Pv;$!jlgo25EN;WH9E zw8v1bb?rKn&qkiF665K&lygB_8aZ@f1htWL#A2l&l=f5FIetz;1vaR^oS_t{jWW;c z0im#wgI??_x1B4!_lWXK2Van^bG^sI2#Bc1XIJW8N`4t=ctkun`;#f!G?oDPr zzp9`}`o2=f_`p2_-h%!Ozkl$7aaXLM;z+hAy@Z5cc*2U5k^2i}2@ULD{x`&k{gE** zATLF0(ys;qr#mzV42@fHsK7Hj!inh`XUNQu1zFfT6 zmSTwVT~iXKSqID z3b*u;7%+4}$gdw~pOR;Gb<`MqE<9sP6D{52q0-qVNF%7Ja@b|< zyEO;OfGVX@DKfv29SXaDiB38Su@dq~8EGLh!TZFc97z&$KWM7xAI%oH+CtdgyaFJ> z>26hken#ORxjEE@OCG$nEs^lTF7 zB@ds2hLOk$=Rl?XDY;usBy*QR3oBxKtoWu6SZ`l~;ooIhFYJEu2(`f+SIihca#jq< z<3PHoWU;Mm%P!PA^d!;R%2*|-Re90#K1wU-F#hwn47$OaoH=@oHyQOUQ85vs_$ou3 z)N2#Ldl+Q4_+)A#*9Sf>UXwT3z@RHwerpB+Vl3UvA+fcR9UdZ3Rh~!xMw{kd9&3p- zhsjvcsR2(05SGyI>ENOw06i`~m1*IJEvprnGNRP@Vx3EHUEkk+Q_cR{g#AZj`3UCA zgj^LrVr4g*9KRo-KoCks$Lvsvua?9xxd+7~!oWcBi4m)F3Xg~oN1at!3kOYD9w-5V z!L`@#RnUqw{X|=buI#lfE64I{LN##X8ZIzm1+^TBNr176qxdK)*zKB>MjO!VZiu9;=orlXno-JOA zhnAlueTeyLA_<01NT4X{S+hkQB z=jIqzW2PN_M;(LVbn9WZIhNJLn=UvF*S-bN#w+Mg#JbL$B;dZv#p7|RtcJ`@$dH`d zT1n&GMSYyw_LCUB6wq5F!2uC#e>B?{GK_;#GGMzUY%yf|}%=xaFWN+PfFwsJ||$BrRBhuwKzvtMJ$vLLVCy%<6wN0k12 zQK==1aX0(##O3gD;ULxKRDP^9KyZ&(8%V=(egN);!!xpB`Esxk?(a2~l{-55tE4BS z9OTr)jnH!2tQ4k%+K$m6f3^6jGcBZ=tAi!Duip_@VEWs`N0zOi zMh9Is24Pvheuv+3T`}dI0zOg+9hfkKgD9u%6-C$=$Qo)>fvv+i_mjI5+^+u?lvLkh zE?xQ@j(rhug|?{9R48Z>4$pr_M`$ZADGWTz($tPX2iRmuvFj^k#KWeLF&=Bet3ur*n zu-WV5WaN+NMh`8@)AF@$C@c8@h_JU(DV_MH6(&p0A9M<|bBxN{c9vdd+nJRI#wbh{ zcuVC%G`O!bjFgP#TOaqnS#AE_Og&cQS%FE8X`T{UVFvn@lWV(yLYU+2M2+BE>K<4U za+yLKBhs)BbSPW0E1|tle_f)=X^xfBHn$NGE;va{c5y85&55wQBfe{!j?+(!qr0a` zAjC;8Ogd?&31auNs{Rz|!!hcr?1nlHMan@0zp1rA?bJKB!N_pxB?yo>E*0DdK1c?j zA7Ip8QALGP603Cj(S7gx5$I8Esl5I<{%GE9%611hrCoNHgh_x|XgIj7!B!0XB)e$G zgO|u)79+Aa1#BZKS;MKmDTK_>Cz-gRHPZfD=NF87+2@!OuKl!^)vY?11R1@PLB={g z7`hNBMqn)odEWZGp}s&HE8C8*aif#dZjz^YKKoo-GQEM;)J(J9wjSPE6%Zv7?O}vw z9n}D(0;zQ#Pocc?G(BbCW`O{5+^+&q*#HI=SO;=_vImT`c7^DG^L)f55}eB(&S6w{ zw10#|e3Vj$#)0sz!$`)=z!j??0cut?Oi$#?OOG6@WH%Y2O-iCm;kdx>fX&ID5YJcU zV8cI{YD=L35{btR2rbbFm{M*~1BPP}FNb82wK%_d`{%u^viDV$bqo^a5@;SrZ)u;X zvqn(3(URsPhYh~J2VqVD8_>~eR4LAWX7GFWiMv}$3FE#>=&L2CB|UA_=gF4WxIdKR zrZdb>{^b(0*^RtYM=#5XDw29H4$9W!BaK+^<cU%JnW3C?iTv76R-yQwR{-Wu&kwDKL8C^ z7Z7nttN+T0BhD*CtsEv=?HMZIk-)7;WhIDZRo;x49wfu2PB!kleMcgEP#+@5?h+x- zxQt89CLZ>8di5J#3puE15%e{3uBMmUxYAT~)0N~!Q4{sp1ZANT4R-n&;kychSfD=I zPw|tZXj^?w^siE+4v#K$3ZSMSu9a>6V_c5NZO-=vC6T1L1~TGU+TM7_b3RZ6JJHFdeF?cMAux{6I6X?FIJiU5`G`ehZu{|`9YSvDJS-A z5`SRW({$4WLE;t@Ds5?!WxTFF9FxgqXE@wrWkntGI$%cE%e+|Aqwz-T?9&Y%Bn$&RubKRG9xAkvpyg{{P_88q7U4hz1 zr@rw9=!p%5m<3HCJEUP-2+vu&!eP%WG8B+61yIar6?j)kjTC92w@y=gxH)1~bgD`? zqflC9U%3<3Stb#}I4cHk2Oqo3Whm^R?Y1S#yMwZ^c_fbzsT=T@+lAf~)00Rx&$x06 zO8JQ3O5`}zm9t)}h%Tsm9G;ZZf}9~7<+mr&LQ0=3-d)mJPt znuB=cz^w8m1#)F^XGW4G=4D1XBMr1WR4hBX1NpbetQ;s3jjwQ&yy+CA8JkucrkQMH z3&zcGNvVhLFz+5H(-mZ8VIsJyERi?18Le9t?A#`pBhAsmueAI6V^&5(u)x>NU@Zb2 zAM!^>?W(r!bN6l(PE1^&PMm$t+1=^PL?dG@=2o7G7$V%cnw}LdP?=e==?HV-4g717 z`cp;Ma>Ntu=;g>i)?){B&JBdqf``n8qe(S$a*nhBqla@ZRL?ULZq}B$Dx`o?m%%kUavz!;eG6{& z54(XNn_qu_GTiWyQ5LCX2omi;L3;d3n$22boY)^Y<9G@>z>tQ^bl$cZs^Bxs;7k4oZ;ed$`pIWKZSW&n#1QAG9^&0?00e_xL#X5db zbDCS35ydlR;hEPAnV8d#qEv~Yapq9xZ{RhCGJ|wUa^*iR4*f2)-rgWANls;77u|6r zZ+8&Wj04Q}O-ESf<_RwEGV<+(~E?OKSk`P_03ZK)e&YW&FxQ=s+dSFL3Cg zPZGbG05bGbkXE1KY39I$M1hb@P>^h41IAb=5KE=e&AtS9I~;X;G`= zU{eeJD1TY1TIxO+ZHn{t<#G;Qqua!`u?`jHVotd1R7+4S(kSvfbvE?Y1Ot@2+sHkk zY%H|je@YXU-$!ePb<+Yd88I_OA>-gue7BJhwWjO#cac`L-vpq>&gxI0+ztRatf}0% zCG*87SvU~$r!z(jr6zJT4Aet4yoL)ajU9e{X{? zrnAJD)NveLO?XAbFc>7YdzT}RxF1FdIGC1jI97y%5~53cfVm|+oLdu4uYaOH;N%S^ zAuTl%UF*bM3d=iGIRvN^ZD|F!SV8h~^#h3?ev(m>m4)zROIKD>sd&H3Adl#6+onA| zlU)BCDyw$iQeM`IFUz}?u;4epBm@nq#$#oO-`JbORii&C`dWplM!%TdWK>XgHX2!O z4q6vD$9k?bP79~I^5LpgC?`VH;Y5<1@wJ@Zq|^Sp#B(Iu9&fpNngu#c%gZ zZmgiPlKLI&2qwrhoiSJ-c=>`%C-vRtOW72Qf%j^15{EkeAFTtvY*r##^ghoI=!|0PINOHQVGFuuz1PI1w;`(Bjg&O=tG_$Uku-Pc@dHJ`%J`$o++bC`w&tY%vv zx>O?;GS^f6^)^(pOFY_~Wx2E2Hltp4CQT!e9w|&Y&T?grBJ8)|SQm$k41u&X+SbiL zQR&IHo^C!e2~Ou9EPuzo3wu1xsk_lw%cpzw18US~IAHRxV@8b}jUeiZmg7Y8htnYU zk-sYvLUDX{8?-^>`2;O1&kgDwwePmP)hx1)d0HgQrRb=TKKF)jXdmcb?7&VshR_h_ z;=w>d{dI9rsO-Ef_C&V~u3bZlSq8%Z&J+j=6;mjIN6Eb748tmB8T#J}92f`s<3i^k z^EN*ZMT7ewH;n;Xr7o;J6J3HKn~qi>kwlp37bUEe93Od}<+6n|>H#;u(S)L?>Jk$l z(x$6rzG*SehxIhkntERmRqhy{t)x#pY{AI0=8+*U zY-$mv_Z12$KOb|Wq47jGZ9V0F zQQ;Ww(ec~>!_&#`fKuB>E92fiJ89o@)sGIR_FBz-T;0T@DxiBb3UA7*tA+3-8SJDX zv4JY-eF(Y)BC_dlMgeoPISRbBRTKyND%Y&^T~#L2nk}G2!?heCwn4~f8D+RfPI)^` zg%&}^+c%Qj{~ZjAL%3J`O(=#eDA64(Dq=qN`4w$b{H^q3P+zgDPf#PmDE7SH5H&$o zMuJyg8{Tp38MkbT;a1sp171vp^z>NCUzp}#$?vTEv%a~`jMJ`sh<)I%Mn-> zPFFEOMNcC5!-OKjk%nbd5WW#L%cChLx!EL>D@Rk*6iLDWmYH#m%YAf-rDBJsS*aZm zmS+&A3gOYM3mH3YWga{S?b{VW8E`5QE5AwH3yM8$G0bd@w46R4UqEP zJY%u2^baaZZF71_%XiP%%9Lw`8O*u?yo{(l>hpnmEoq7|NUaT zbp2zIMb_&|l7&_BuOOw;Y(ilgnaVc=4qyE6TNR!2Je|cE6LRltM7b+fz_Y<2Kc&&; z*XT2QuaQ24zLtY!kiN~URM-#av`fAM-MsiaI7~Xw1^@}(9hONco@NZ!fFJso?_30d zvG^Ju@2L;uA*f1CDpCm=Whyc$j!sD*?-#yBdU=EdTTG$lFR6SEzj;SzA=&cjQ-Q3? z=$BjXgq%XGUbTK%&;3BaQaE*Y1g^=8c`T>d~9Vgk_*u6ELCL*z|ibpcLt%@c}p%OrEE9RUcak#K6!nJ09 zygdhA&SEF_nqdr$Kf5(Cv^tJ6s2(DSnVv|1bCxzPOU!mdmx~wbhEc6!+$r~;H39Ax z=1Z!QzsoW>TV@wAT2SBHrA1mTfFQ4?-RXvCT!#m}XJ@E5LGGLTronZ0+B; zsF;Q9tECn>ACG4T3%wCV9PD4%w^-Dl8_1fKsWtrm7^8aryu+^`WEd(rW@AY<`3}2S zK$c-F5nc*G3CK6mnH3829#wUMu7THdZDZ;T0}-Y%Wh-3+LLaY&JvZeL+_PDI_H}ZC zJq~}oFykeAwrMIKu99$-gt~NOkc=3js#>7T2*^wv{Io^uDbESm4~Jo=WvMt zrF>6Lb&R*G&Qi-k=c0_sY`96sk~HAk07wLEn8Xv5jl6?(xzJ5aN>B6pM0~S7D|UK4 z$tOIEJoVbadC6B}tYySHW zjw&^BnWCc}^Z~3aF)uW;anap%aB~jNjPtH_;OY z;yx*@gOfxUZy>y*xM1{S_Tq%SMYehOB@2Xfgg0dz)OQSw5+Vl(Hqs>

FPKek7O?X!0#*QS9o+N#&Gy8oiLB-sxrB&KqLXv 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 ZXX|x=ArJ6JbgTHmDuRl5RqYo-kKm|OZ@&Nl literal 0 HcmV?d00001 diff --git a/assets/fonts/proximanova/proximanova-regular-webfont.svg b/assets/fonts/proximanova/proximanova-regular-webfont.svg new file mode 100644 index 000000000..3e59e35bb --- /dev/null +++ b/assets/fonts/proximanova/proximanova-regular-webfont.svg @@ -0,0 +1,251 @@ + + + + +This is a custom SVG webfont generated by Font Squirrel. +Copyright : Copyright c Mark Simonson 2005 All rights reserved +Designer : Mark Simonson +Foundry URL : httpwwwmarksimonsoncom + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/fonts/proximanova/proximanova-regular-webfont.ttf b/assets/fonts/proximanova/proximanova-regular-webfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d024e3c918f90bceaaf653f5cf93fbfaf120eef5 GIT binary patch literal 45168 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 Mq9T-B5OBEv3(L_f$p8QV literal 0 HcmV?d00001 diff --git a/assets/fonts/proximanova/proximanova-regular-webfont.woff b/assets/fonts/proximanova/proximanova-regular-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..6d6468180f1d5af35f19dffedfeacb2c0563d5fb GIT binary patch literal 24236 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 literal 0 HcmV?d00001 From 8803f42a45818c7836cd820cd68a50bdfcf40b87 Mon Sep 17 00:00:00 2001 From: Shreemudra Satapathy Date: Tue, 24 May 2016 03:37:08 +0530 Subject: [PATCH 08/18] Fixed lint errors --- .../distribution-graph.directive.js | 36 +++++++++---------- .../history-graph/history-graph.directive.js | 30 ++++++++-------- 2 files changed, 33 insertions(+), 33 deletions(-) diff --git a/app/directives/distribution-graph/distribution-graph.directive.js b/app/directives/distribution-graph/distribution-graph.directive.js index 3152f898e..224ff1926 100644 --- a/app/directives/distribution-graph/distribution-graph.directive.js +++ b/app/directives/distribution-graph/distribution-graph.directive.js @@ -241,17 +241,17 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js var left = (d3.event.pageX-4) var top = (d3.event.pageY-4) mousemoveInterval = window.setTimeout(function(){ - d3.select('#chart-tooltip') - .style('left', left + 'px') - .style('top', top + 'px') + d3.select('#chart-tooltip') + .style('left', left + 'px') + .style('top', top + 'px') - d3.select('#chart-tooltip .tooltip-container') - .style('left', '20px !important') - .style('top', '-20px !important') + d3.select('#chart-tooltip .tooltip-container') + .style('left', '20px !important') + .style('top', '-20px !important') - d3.select('#chart-tooltip .tooltip-container .tooltip-pointer') - .style('left', '-5.5px !important') - .style('bottom', '25px !important') + d3.select('#chart-tooltip .tooltip-container .tooltip-pointer') + .style('left', '-5.5px !important') + .style('bottom', '25px !important') }, 50) }) @@ -263,15 +263,15 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js $scope.$digest() }) - d3.select('body').on('click', function(){ - if((d3.event.target.classList[0] != 'tooltip-target') && !$('#chart-tooltip .tooltip-container').hasClass('tooltip-hide') && - (d3.event.target.classList[0] != 'tooltip-content-container') && (d3.event.target.classList[0] != 'tooltip-container') && - (d3.event.target.classList[0] != 'tooltip-body') && (d3.event.target.classList[0] != 'Tooltip') && - (d3.event.target.tagName.toLowerCase()!='circle') && !(d3.event.target.tagName.toLowerCase()=='rect' && d3.event.target.classList[0] == 'hover')) { - $('#chart-tooltip .tooltip-container').addClass('tooltip-hide') - $('#chart-tooltip .tooltip-container').css('opacity', 0) - } - }) + d3.select('body').on('click', function(){ + if((d3.event.target.classList[0] != 'tooltip-target') && !$('#chart-tooltip .tooltip-container').hasClass('tooltip-hide') && + (d3.event.target.classList[0] != 'tooltip-content-container') && (d3.event.target.classList[0] != 'tooltip-container') && + (d3.event.target.classList[0] != 'tooltip-body') && (d3.event.target.classList[0] != 'Tooltip') && + (d3.event.target.tagName.toLowerCase()!='circle') && !(d3.event.target.tagName.toLowerCase()=='rect' && d3.event.target.classList[0] == 'hover')) { + $('#chart-tooltip .tooltip-container').addClass('tooltip-hide') + $('#chart-tooltip .tooltip-container').css('opacity', 0) + } + }) svg.selectAll('line.xaxis') .data(ranges) diff --git a/app/directives/history-graph/history-graph.directive.js b/app/directives/history-graph/history-graph.directive.js index 6df33eb68..6f2d8b011 100644 --- a/app/directives/history-graph/history-graph.directive.js +++ b/app/directives/history-graph/history-graph.directive.js @@ -277,12 +277,12 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js $scope.historyChallenge = d.challengeName $scope.$digest() $('#chart-tooltip .tooltip-container').on('click', function(){ - if($state.params && $state.params.track === 'DEVELOP') - $window.open(CONSTANTS.CHALLENGE_DETAIL_URL + d.challengeId + '/?type=develop', '_blank') - else if($state.params && $state.params.subTrack === 'SRM') - $window.open(CONSTANTS.SRM_DETAIL_URL + d.challengeId, '_blank') - else if($state.params && $state.params.subTrack === 'MARATHON_MATCH') - $window.open(CONSTANTS.MARATHON_DETAIL_URL + d.challengeId, '_blank') + if($state.params && $state.params.track === 'DEVELOP') + $window.open(CONSTANTS.CHALLENGE_DETAIL_URL + d.challengeId + '/?type=develop', '_blank') + else if($state.params && $state.params.subTrack === 'SRM') + $window.open(CONSTANTS.SRM_DETAIL_URL + d.challengeId, '_blank') + else if($state.params && $state.params.subTrack === 'MARATHON_MATCH') + $window.open(CONSTANTS.MARATHON_DETAIL_URL + d.challengeId, '_blank') }) d3.select('#chart-tooltip') .style('left', (d3.event.pageX-5) + 'px') @@ -306,15 +306,15 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js $('#chart-tooltip').off('click') }) - d3.select('body').on('click', function(){ - if((d3.event.target.classList[0] != 'tooltip-target') && !$('#chart-tooltip .tooltip-container').hasClass('tooltip-hide') && - (d3.event.target.classList[0] != 'tooltip-content-container') && (d3.event.target.classList[0] != 'tooltip-container') && - (d3.event.target.classList[0] != 'tooltip-body') && (d3.event.target.classList[0] != 'Tooltip') && - (d3.event.target.tagName.toLowerCase()!='circle') && !(d3.event.target.tagName.toLowerCase()=='rect' && d3.event.target.classList[0] == 'hover')) { - $('#chart-tooltip .tooltip-container').addClass('tooltip-hide') - $('#chart-tooltip .tooltip-container').css('opacity', 0) - } - }) + d3.select('body').on('click', function(){ + if((d3.event.target.classList[0] != 'tooltip-target') && !$('#chart-tooltip .tooltip-container').hasClass('tooltip-hide') && + (d3.event.target.classList[0] != 'tooltip-content-container') && (d3.event.target.classList[0] != 'tooltip-container') && + (d3.event.target.classList[0] != 'tooltip-body') && (d3.event.target.classList[0] != 'Tooltip') && + (d3.event.target.tagName.toLowerCase()!='circle') && !(d3.event.target.tagName.toLowerCase()=='rect' && d3.event.target.classList[0] == 'hover')) { + $('#chart-tooltip .tooltip-container').addClass('tooltip-hide') + $('#chart-tooltip .tooltip-container').css('opacity', 0) + } + }) } From 971d353504b093b4dc1ef3017830d497264a272f Mon Sep 17 00:00:00 2001 From: Shreemudra Satapathy Date: Tue, 24 May 2016 03:45:52 +0530 Subject: [PATCH 09/18] Fixed left lint errors --- .../distribution-graph/distribution-graph.directive.js | 4 ++-- app/directives/history-graph/history-graph.directive.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/directives/distribution-graph/distribution-graph.directive.js b/app/directives/distribution-graph/distribution-graph.directive.js index 224ff1926..212043ae0 100644 --- a/app/directives/distribution-graph/distribution-graph.directive.js +++ b/app/directives/distribution-graph/distribution-graph.directive.js @@ -268,8 +268,8 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js (d3.event.target.classList[0] != 'tooltip-content-container') && (d3.event.target.classList[0] != 'tooltip-container') && (d3.event.target.classList[0] != 'tooltip-body') && (d3.event.target.classList[0] != 'Tooltip') && (d3.event.target.tagName.toLowerCase()!='circle') && !(d3.event.target.tagName.toLowerCase()=='rect' && d3.event.target.classList[0] == 'hover')) { - $('#chart-tooltip .tooltip-container').addClass('tooltip-hide') - $('#chart-tooltip .tooltip-container').css('opacity', 0) + $('#chart-tooltip .tooltip-container').addClass('tooltip-hide') + $('#chart-tooltip .tooltip-container').css('opacity', 0) } }) diff --git a/app/directives/history-graph/history-graph.directive.js b/app/directives/history-graph/history-graph.directive.js index 6f2d8b011..7768afedc 100644 --- a/app/directives/history-graph/history-graph.directive.js +++ b/app/directives/history-graph/history-graph.directive.js @@ -311,8 +311,8 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js (d3.event.target.classList[0] != 'tooltip-content-container') && (d3.event.target.classList[0] != 'tooltip-container') && (d3.event.target.classList[0] != 'tooltip-body') && (d3.event.target.classList[0] != 'Tooltip') && (d3.event.target.tagName.toLowerCase()!='circle') && !(d3.event.target.tagName.toLowerCase()=='rect' && d3.event.target.classList[0] == 'hover')) { - $('#chart-tooltip .tooltip-container').addClass('tooltip-hide') - $('#chart-tooltip .tooltip-container').css('opacity', 0) + $('#chart-tooltip .tooltip-container').addClass('tooltip-hide') + $('#chart-tooltip .tooltip-container').css('opacity', 0) } }) From d5dc2d9aed82b1755539e803e54449267d54bd77 Mon Sep 17 00:00:00 2001 From: Shreemudra Satapathy Date: Tue, 24 May 2016 14:13:34 +0530 Subject: [PATCH 10/18] Fixed all review feedbacks --- .../distribution-graph.directive.js | 3 +-- .../history-graph/history-graph.directive.js | 20 +++++++++---------- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/app/directives/distribution-graph/distribution-graph.directive.js b/app/directives/distribution-graph/distribution-graph.directive.js index 212043ae0..23db9ea90 100644 --- a/app/directives/distribution-graph/distribution-graph.directive.js +++ b/app/directives/distribution-graph/distribution-graph.directive.js @@ -216,8 +216,6 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js $scope.highlightedRating = d.start $scope.displayCoders = true $scope.numCoders = d.number - $scope.$digest() - d3.select('#chart-tooltip') .style('left', (d3.event.pageX-4) + 'px') .style('top', (d3.event.pageY-4) + 'px') @@ -235,6 +233,7 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js d3.select('#chart-tooltip .challenge-date').text('Rating Range: '+ $scope.highlightedRating + '-'+($scope.highlightedRating+99)) d3.select('#chart-tooltip .tooltip-rating').text($scope.numCoders) d3.select('#chart-tooltip .tooltip-rating').style('background', ratingToColor($scope.colors, $scope.highlightedRating)) + $scope.$digest() }) .on('mousemove', function(d) { window.clearTimeout(mousemoveInterval) diff --git a/app/directives/history-graph/history-graph.directive.js b/app/directives/history-graph/history-graph.directive.js index 7768afedc..eb55ccc11 100644 --- a/app/directives/history-graph/history-graph.directive.js +++ b/app/directives/history-graph/history-graph.directive.js @@ -19,11 +19,11 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js rating: '=', graphState: '=' }, - controller: ['$scope', '$state', '$window', 'CONSTANTS', HistoryGraphController] + controller: ['$scope', '$state', 'CONSTANTS', HistoryGraphController] } } - function HistoryGraphController($scope, $state, $window, CONSTANTS) { + function HistoryGraphController($scope, $state, CONSTANTS) { $scope.colors = [ // grey { @@ -275,14 +275,13 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js $scope.historyRating = d.newRating $scope.historyDate = moment(d.ratingDate).format('YYYY-MM-DD') $scope.historyChallenge = d.challengeName - $scope.$digest() $('#chart-tooltip .tooltip-container').on('click', function(){ - if($state.params && $state.params.track === 'DEVELOP') - $window.open(CONSTANTS.CHALLENGE_DETAIL_URL + d.challengeId + '/?type=develop', '_blank') + if($state.params && $state.params.track === 'DEVELOP', '_self') + location.href = (CONSTANTS.CHALLENGE_DETAIL_URL + d.challengeId + '/?type=develop') else if($state.params && $state.params.subTrack === 'SRM') - $window.open(CONSTANTS.SRM_DETAIL_URL + d.challengeId, '_blank') + location.href = (CONSTANTS.SRM_DETAIL_URL + d.challengeId, '_self') else if($state.params && $state.params.subTrack === 'MARATHON_MATCH') - $window.open(CONSTANTS.MARATHON_DETAIL_URL + d.challengeId, '_blank') + location.href = (CONSTANTS.MARATHON_DETAIL_URL + d.challengeId, '_self') }) d3.select('#chart-tooltip') .style('left', (d3.event.pageX-5) + 'px') @@ -298,12 +297,12 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js d3.select('#chart-tooltip .challenge-date').text(moment(d.ratingDate).format('MMM DD, YYYY')) d3.select('#chart-tooltip .tooltip-rating').text($scope.historyRating) d3.select('#chart-tooltip .tooltip-rating').style('background', ratingToColor($scope.colors, $scope.historyRating)) - + $scope.$digest() }) .on('mouseout', function(d) { $scope.historyRating = undefined - $scope.$digest() $('#chart-tooltip').off('click') + $scope.$digest() }) d3.select('body').on('click', function(){ @@ -311,8 +310,7 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js (d3.event.target.classList[0] != 'tooltip-content-container') && (d3.event.target.classList[0] != 'tooltip-container') && (d3.event.target.classList[0] != 'tooltip-body') && (d3.event.target.classList[0] != 'Tooltip') && (d3.event.target.tagName.toLowerCase()!='circle') && !(d3.event.target.tagName.toLowerCase()=='rect' && d3.event.target.classList[0] == 'hover')) { - $('#chart-tooltip .tooltip-container').addClass('tooltip-hide') - $('#chart-tooltip .tooltip-container').css('opacity', 0) + $('#chart-tooltip .tooltip-target').trigger('click') } }) From d82a31a2291223d3b25df11b94fd786d51b12ad4 Mon Sep 17 00:00:00 2001 From: Shreemudra Satapathy Date: Tue, 24 May 2016 14:20:42 +0530 Subject: [PATCH 11/18] Fixed typos --- app/directives/history-graph/history-graph.directive.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/directives/history-graph/history-graph.directive.js b/app/directives/history-graph/history-graph.directive.js index eb55ccc11..6b7d57e02 100644 --- a/app/directives/history-graph/history-graph.directive.js +++ b/app/directives/history-graph/history-graph.directive.js @@ -276,12 +276,12 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js $scope.historyDate = moment(d.ratingDate).format('YYYY-MM-DD') $scope.historyChallenge = d.challengeName $('#chart-tooltip .tooltip-container').on('click', function(){ - if($state.params && $state.params.track === 'DEVELOP', '_self') + if($state.params && $state.params.track === 'DEVELOP') location.href = (CONSTANTS.CHALLENGE_DETAIL_URL + d.challengeId + '/?type=develop') else if($state.params && $state.params.subTrack === 'SRM') - location.href = (CONSTANTS.SRM_DETAIL_URL + d.challengeId, '_self') + location.href = (CONSTANTS.SRM_DETAIL_URL + d.challengeId) else if($state.params && $state.params.subTrack === 'MARATHON_MATCH') - location.href = (CONSTANTS.MARATHON_DETAIL_URL + d.challengeId, '_self') + location.href = (CONSTANTS.MARATHON_DETAIL_URL + d.challengeId) }) d3.select('#chart-tooltip') .style('left', (d3.event.pageX-5) + 'px') From 5415f679f4ec60c3d46c531285f08763bb4feb9a Mon Sep 17 00:00:00 2001 From: Shreemudra Satapathy Date: Tue, 24 May 2016 17:48:10 +0530 Subject: [PATCH 12/18] Implemented/Fixed review comments, except package.json. Will do that next. --- .../distribution-graph.directive.js | 12 +- .../history-graph/history-graph.directive.js | 27 +- app/filters/challengeLinks.filter.js | 11 +- assets/css/my-dashboard/subtrack-stats.scss | 2 +- assets/css/topcoder.scss | 10 - .../proximanova-regular-webfont.eot | Bin 21178 -> 0 bytes .../proximanova-regular-webfont.svg | 251 ------------------ .../proximanova-regular-webfont.ttf | Bin 45168 -> 0 bytes .../proximanova-regular-webfont.woff | Bin 24236 -> 0 bytes 9 files changed, 32 insertions(+), 281 deletions(-) delete mode 100644 assets/fonts/proximanova/proximanova-regular-webfont.eot delete mode 100644 assets/fonts/proximanova/proximanova-regular-webfont.svg delete mode 100644 assets/fonts/proximanova/proximanova-regular-webfont.ttf delete mode 100644 assets/fonts/proximanova/proximanova-regular-webfont.woff diff --git a/app/directives/distribution-graph/distribution-graph.directive.js b/app/directives/distribution-graph/distribution-graph.directive.js index 23db9ea90..737f3cc35 100644 --- a/app/directives/distribution-graph/distribution-graph.directive.js +++ b/app/directives/distribution-graph/distribution-graph.directive.js @@ -257,20 +257,22 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js .on('mouseout', function(d) { $scope.displayCoders = false $scope.highlightedRating = false - $('#chart-tooltip').removeClass('distribution') $scope.isFocused = false $scope.$digest() }) d3.select('body').on('click', function(){ if((d3.event.target.classList[0] != 'tooltip-target') && !$('#chart-tooltip .tooltip-container').hasClass('tooltip-hide') && - (d3.event.target.classList[0] != 'tooltip-content-container') && (d3.event.target.classList[0] != 'tooltip-container') && - (d3.event.target.classList[0] != 'tooltip-body') && (d3.event.target.classList[0] != 'Tooltip') && + !isInArray(d3.event.target.classList[0], ['tooltip-content-container', 'tooltip-container', 'tooltip-body', 'Tooltip']) && (d3.event.target.tagName.toLowerCase()!='circle') && !(d3.event.target.tagName.toLowerCase()=='rect' && d3.event.target.classList[0] == 'hover')) { - $('#chart-tooltip .tooltip-container').addClass('tooltip-hide') - $('#chart-tooltip .tooltip-container').css('opacity', 0) + $('#chart-tooltip .tooltip-target').trigger('click') + $('#chart-tooltip').removeClass('distribution') } }) + + function isInArray(value, array) { + return array.indexOf(value) > -1; + } svg.selectAll('line.xaxis') .data(ranges) diff --git a/app/directives/history-graph/history-graph.directive.js b/app/directives/history-graph/history-graph.directive.js index 6b7d57e02..f662191f3 100644 --- a/app/directives/history-graph/history-graph.directive.js +++ b/app/directives/history-graph/history-graph.directive.js @@ -19,11 +19,11 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js rating: '=', graphState: '=' }, - controller: ['$scope', '$state', 'CONSTANTS', HistoryGraphController] + controller: ['$scope', '$state', '$filter', 'CONSTANTS', HistoryGraphController] } } - function HistoryGraphController($scope, $state, CONSTANTS) { + function HistoryGraphController($scope, $state, $filter, CONSTANTS) { $scope.colors = [ // grey { @@ -275,13 +275,11 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js $scope.historyRating = d.newRating $scope.historyDate = moment(d.ratingDate).format('YYYY-MM-DD') $scope.historyChallenge = d.challengeName - $('#chart-tooltip .tooltip-container').on('click', function(){ - if($state.params && $state.params.track === 'DEVELOP') - location.href = (CONSTANTS.CHALLENGE_DETAIL_URL + d.challengeId + '/?type=develop') - else if($state.params && $state.params.subTrack === 'SRM') - location.href = (CONSTANTS.SRM_DETAIL_URL + d.challengeId) - else if($state.params && $state.params.subTrack === 'MARATHON_MATCH') - location.href = (CONSTANTS.MARATHON_DETAIL_URL + d.challengeId) + $('#chart-tooltip .tooltip-container').on('click', function(){ + if($state.params && ($state.params.subTrack === 'SRM' || $state.params.subTrack === 'MARATHON_MATCH')) + location.href = $filter('challengeLinks')({'rounds': [{id: d.challengeId, forumId: null}], 'track': $state.params.track, 'subTrack': $state.params.subTrack}, 'detail') + else + location.href = $filter('challengeLinks')({id: d.challengeId, 'track': $state.params.track, 'subTrack': $state.params.subTrack}, 'detail') }) d3.select('#chart-tooltip') .style('left', (d3.event.pageX-5) + 'px') @@ -297,21 +295,20 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js d3.select('#chart-tooltip .challenge-date').text(moment(d.ratingDate).format('MMM DD, YYYY')) d3.select('#chart-tooltip .tooltip-rating').text($scope.historyRating) d3.select('#chart-tooltip .tooltip-rating').style('background', ratingToColor($scope.colors, $scope.historyRating)) + $('#chart-tooltip').removeClass('distribution') $scope.$digest() }) .on('mouseout', function(d) { $scope.historyRating = undefined - $('#chart-tooltip').off('click') $scope.$digest() }) d3.select('body').on('click', function(){ if((d3.event.target.classList[0] != 'tooltip-target') && !$('#chart-tooltip .tooltip-container').hasClass('tooltip-hide') && - (d3.event.target.classList[0] != 'tooltip-content-container') && (d3.event.target.classList[0] != 'tooltip-container') && - (d3.event.target.classList[0] != 'tooltip-body') && (d3.event.target.classList[0] != 'Tooltip') && (d3.event.target.tagName.toLowerCase()!='circle') && !(d3.event.target.tagName.toLowerCase()=='rect' && d3.event.target.classList[0] == 'hover')) { $('#chart-tooltip .tooltip-target').trigger('click') - } + $('#chart-tooltip .tooltip-container').off('click') + } }) } @@ -322,5 +319,9 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js }) return colors[0] && colors[0].color || 'black' } + + function isInArray(value, array) { + return array.indexOf(value) > -1; + } } })() diff --git a/app/filters/challengeLinks.filter.js b/app/filters/challengeLinks.filter.js index 5f3922110..76a8286bf 100644 --- a/app/filters/challengeLinks.filter.js +++ b/app/filters/challengeLinks.filter.js @@ -9,7 +9,7 @@ import angular from 'angular' function challengeLinks(CONSTANTS) { return function(challenge, type) { var data - if (challenge.subTrack === 'MARATHON_MATCH') { + if (challenge.subTrack === 'MARATHON_MATCH') { data = { domain: CONSTANTS.domain, roundId: challenge.rounds[0].id, @@ -23,6 +23,15 @@ import angular from 'angular' case 'detail': return String.supplant('https://community.{domain}/longcontest/stats/?module=ViewOverview&rd={roundId}', data) } + } else if (challenge.subTrack === 'SRM') { + data = { + domain: CONSTANTS.domain, + roundId: challenge.rounds[0].id + } + switch (type) { + case 'detail': + return String.supplant('https://community.{domain}/stat?c=round_overview&rd={roundId}', data) + } } else { data = { domain: CONSTANTS.domain, diff --git a/assets/css/my-dashboard/subtrack-stats.scss b/assets/css/my-dashboard/subtrack-stats.scss index 7ee320814..38ba99048 100644 --- a/assets/css/my-dashboard/subtrack-stats.scss +++ b/assets/css/my-dashboard/subtrack-stats.scss @@ -114,12 +114,12 @@ position: absolute; z-index: 1000; cursor: pointer; - font-family: 'Proxima Nova', Helvetica, Arial, sans-serif; } #chart-tooltip.distribution { width: 4px; height: 4px; + cursor: auto; } .tooltip-target { diff --git a/assets/css/topcoder.scss b/assets/css/topcoder.scss index 8891d57f4..f41f104d4 100644 --- a/assets/css/topcoder.scss +++ b/assets/css/topcoder.scss @@ -183,16 +183,6 @@ font-weight: 300; font-style: italic; } -@font-face { - font-family: 'Proxima Nova'; - src: url('../fonts/proximanova/proximanova-regular-webfont.eot'); - src: url('../fonts/proximanova/proximanova-regular-webfont.eot?#iefix') format('embedded-opentype'), - url('../fonts/proximanova/proximanova-regular-webfont') format('woff'), - url('../fonts/proximanova/proximanova-regular-webfont.ttf') format('truetype'), - url('../fonts/proximanova/proximanova-regular-webfont.svg') format('svg'); - font-weight: 400; - font-style: normal; -} body { @include font-with-weight('Merriweather Sans', 400); diff --git a/assets/fonts/proximanova/proximanova-regular-webfont.eot b/assets/fonts/proximanova/proximanova-regular-webfont.eot deleted file mode 100644 index e74ae9e360d78ec87b0d27c22eb3f5a61402856a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21178 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 = 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

FPKek7O?X!0#*QS9o+N#&Gy8oiLB-sxrB&KqLXv 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 ZXX|x=ArJ6JbgTHmDuRl5RqYo-kKm|OZ@&Nl diff --git a/assets/fonts/proximanova/proximanova-regular-webfont.svg b/assets/fonts/proximanova/proximanova-regular-webfont.svg deleted file mode 100644 index 3e59e35bb..000000000 --- a/assets/fonts/proximanova/proximanova-regular-webfont.svg +++ /dev/null @@ -1,251 +0,0 @@ - - - - -This is a custom SVG webfont generated by Font Squirrel. -Copyright : Copyright c Mark Simonson 2005 All rights reserved -Designer : Mark Simonson -Foundry URL : httpwwwmarksimonsoncom - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/assets/fonts/proximanova/proximanova-regular-webfont.ttf b/assets/fonts/proximanova/proximanova-regular-webfont.ttf deleted file mode 100644 index d024e3c918f90bceaaf653f5cf93fbfaf120eef5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45168 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 Mq9T-B5OBEv3(L_f$p8QV diff --git a/assets/fonts/proximanova/proximanova-regular-webfont.woff b/assets/fonts/proximanova/proximanova-regular-webfont.woff deleted file mode 100644 index 6d6468180f1d5af35f19dffedfeacb2c0563d5fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24236 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 From 414474c6a7fd70c08f9d180079c9fa3c19893b2e Mon Sep 17 00:00:00 2001 From: Shreemudra Satapathy Date: Tue, 24 May 2016 17:50:23 +0530 Subject: [PATCH 13/18] Fix indentation issue --- .../distribution-graph.directive.js | 10 ++++----- .../history-graph/history-graph.directive.js | 22 +++++++++---------- app/filters/challengeLinks.filter.js | 2 +- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/app/directives/distribution-graph/distribution-graph.directive.js b/app/directives/distribution-graph/distribution-graph.directive.js index 737f3cc35..43d3808ef 100644 --- a/app/directives/distribution-graph/distribution-graph.directive.js +++ b/app/directives/distribution-graph/distribution-graph.directive.js @@ -266,13 +266,13 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js !isInArray(d3.event.target.classList[0], ['tooltip-content-container', 'tooltip-container', 'tooltip-body', 'Tooltip']) && (d3.event.target.tagName.toLowerCase()!='circle') && !(d3.event.target.tagName.toLowerCase()=='rect' && d3.event.target.classList[0] == 'hover')) { $('#chart-tooltip .tooltip-target').trigger('click') - $('#chart-tooltip').removeClass('distribution') + $('#chart-tooltip').removeClass('distribution') } }) - - function isInArray(value, array) { - return array.indexOf(value) > -1; - } + + function isInArray(value, array) { + return array.indexOf(value) > -1; + } svg.selectAll('line.xaxis') .data(ranges) diff --git a/app/directives/history-graph/history-graph.directive.js b/app/directives/history-graph/history-graph.directive.js index f662191f3..bd6ffc594 100644 --- a/app/directives/history-graph/history-graph.directive.js +++ b/app/directives/history-graph/history-graph.directive.js @@ -275,11 +275,11 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js $scope.historyRating = d.newRating $scope.historyDate = moment(d.ratingDate).format('YYYY-MM-DD') $scope.historyChallenge = d.challengeName - $('#chart-tooltip .tooltip-container').on('click', function(){ - if($state.params && ($state.params.subTrack === 'SRM' || $state.params.subTrack === 'MARATHON_MATCH')) + $('#chart-tooltip .tooltip-container').on('click', function(){ + if($state.params && ($state.params.subTrack === 'SRM' || $state.params.subTrack === 'MARATHON_MATCH')) location.href = $filter('challengeLinks')({'rounds': [{id: d.challengeId, forumId: null}], 'track': $state.params.track, 'subTrack': $state.params.subTrack}, 'detail') - else - location.href = $filter('challengeLinks')({id: d.challengeId, 'track': $state.params.track, 'subTrack': $state.params.subTrack}, 'detail') + else + location.href = $filter('challengeLinks')({id: d.challengeId, 'track': $state.params.track, 'subTrack': $state.params.subTrack}, 'detail') }) d3.select('#chart-tooltip') .style('left', (d3.event.pageX-5) + 'px') @@ -295,7 +295,7 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js d3.select('#chart-tooltip .challenge-date').text(moment(d.ratingDate).format('MMM DD, YYYY')) d3.select('#chart-tooltip .tooltip-rating').text($scope.historyRating) d3.select('#chart-tooltip .tooltip-rating').style('background', ratingToColor($scope.colors, $scope.historyRating)) - $('#chart-tooltip').removeClass('distribution') + $('#chart-tooltip').removeClass('distribution') $scope.$digest() }) .on('mouseout', function(d) { @@ -307,8 +307,8 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js if((d3.event.target.classList[0] != 'tooltip-target') && !$('#chart-tooltip .tooltip-container').hasClass('tooltip-hide') && (d3.event.target.tagName.toLowerCase()!='circle') && !(d3.event.target.tagName.toLowerCase()=='rect' && d3.event.target.classList[0] == 'hover')) { $('#chart-tooltip .tooltip-target').trigger('click') - $('#chart-tooltip .tooltip-container').off('click') - } + $('#chart-tooltip .tooltip-container').off('click') + } }) } @@ -319,9 +319,9 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js }) return colors[0] && colors[0].color || 'black' } - - function isInArray(value, array) { - return array.indexOf(value) > -1; - } + + function isInArray(value, array) { + return array.indexOf(value) > -1; + } } })() diff --git a/app/filters/challengeLinks.filter.js b/app/filters/challengeLinks.filter.js index 76a8286bf..e6360ce0d 100644 --- a/app/filters/challengeLinks.filter.js +++ b/app/filters/challengeLinks.filter.js @@ -9,7 +9,7 @@ import angular from 'angular' function challengeLinks(CONSTANTS) { return function(challenge, type) { var data - if (challenge.subTrack === 'MARATHON_MATCH') { + if (challenge.subTrack === 'MARATHON_MATCH') { data = { domain: CONSTANTS.domain, roundId: challenge.rounds[0].id, From c2331d4fa85229ace62f87b08a60be5297792cd1 Mon Sep 17 00:00:00 2001 From: Shreemudra Satapathy Date: Tue, 24 May 2016 17:57:38 +0530 Subject: [PATCH 14/18] Final fix - all review comments --- .../distribution-graph/distribution-graph.directive.js | 2 +- app/directives/history-graph/history-graph.directive.js | 4 ---- app/topcoder.constants.js | 5 +---- package.json | 7 ++----- 4 files changed, 4 insertions(+), 14 deletions(-) diff --git a/app/directives/distribution-graph/distribution-graph.directive.js b/app/directives/distribution-graph/distribution-graph.directive.js index 43d3808ef..e2a281a96 100644 --- a/app/directives/distribution-graph/distribution-graph.directive.js +++ b/app/directives/distribution-graph/distribution-graph.directive.js @@ -271,7 +271,7 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js }) function isInArray(value, array) { - return array.indexOf(value) > -1; + return array.indexOf(value) > -1 } svg.selectAll('line.xaxis') diff --git a/app/directives/history-graph/history-graph.directive.js b/app/directives/history-graph/history-graph.directive.js index bd6ffc594..bc8863fd8 100644 --- a/app/directives/history-graph/history-graph.directive.js +++ b/app/directives/history-graph/history-graph.directive.js @@ -319,9 +319,5 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js }) return colors[0] && colors[0].color || 'black' } - - function isInArray(value, array) { - return array.indexOf(value) > -1; - } } })() diff --git a/app/topcoder.constants.js b/app/topcoder.constants.js index d8f4505bf..c3245842a 100644 --- a/app/topcoder.constants.js +++ b/app/topcoder.constants.js @@ -44,8 +44,5 @@ angular.module('CONSTANTS', []).constant('CONSTANTS', { 'REGISTERED' : 'REGISTERED', 'SUBMISSION_TYPE_CONTEST': 'Contest Submission', 'STATUS_ACTIVE' : 'Active', - 'STATUS_COMPLETED_WITHOUT_WIN' : 'Completed Without Win', - 'CHALLENGE_DETAIL_URL' : 'https://www.topcoder-dev.com/challenge-details/', - 'SRM_DETAIL_URL': 'https://community.topcoder-dev.com/stat?c=round_overview&rd=', - 'MARATHON_DETAIL_URL': 'https://community.topcoder-dev.com/longcontest/stats/?module=ViewOverview&rd=' + 'STATUS_COMPLETED_WITHOUT_WIN' : 'Completed Without Win' }) diff --git a/package.json b/package.json index 2158e59b0..469c5a3bb 100644 --- a/package.json +++ b/package.json @@ -9,8 +9,7 @@ }, "devDependencies": { "angular-mocks": "^1.4.9", - "appirio-tech-webpack-config": "^0.3.5", - "babel-plugin-add-module-exports": "^0.2.1", + "appirio-tech-webpack-config": "^0.3.0", "babel-polyfill": "^6.7.2", "bardjs": "^0.1.8", "bower": "^1.6.8", @@ -55,8 +54,7 @@ "angularjs-toaster": "^1.0.0", "appirio-styles": "0.x.x", "appirio-tech-ng-iso-constants": "^1.0.6", - "appirio-tech-ng-ui-components": "^2.2.4", - "appirio-tech-react-components": "^0.0.12", + "appirio-tech-ng-ui-components": "^2.1.2", "auth0-angular": "^4.1.0", "auth0-js": "^6.8.0", "d3": "^3.5.14", @@ -71,7 +69,6 @@ "restangular": "^1.5.2", "tc-angular-ellipsis": "^0.1.6", "topcoder-app-r": "^1.0.0", - "webpack-hot-middleware": "^2.10.0", "xml2js": "^0.4.16", "zepto": "^1.0.1" } From 42014162e4ffc889e1afc0c8bf58c1bcf7639c01 Mon Sep 17 00:00:00 2001 From: Shreemudra Satapathy Date: Tue, 24 May 2016 18:00:12 +0530 Subject: [PATCH 15/18] updated package.json --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 469c5a3bb..0b8456bf4 100644 --- a/package.json +++ b/package.json @@ -55,6 +55,7 @@ "appirio-styles": "0.x.x", "appirio-tech-ng-iso-constants": "^1.0.6", "appirio-tech-ng-ui-components": "^2.1.2", + "appirio-tech-react-components": "^0.0.12", "auth0-angular": "^4.1.0", "auth0-js": "^6.8.0", "d3": "^3.5.14", From 6cd651acd3e6605ee45ffc3f4b9ff4c84f449b1a Mon Sep 17 00:00:00 2001 From: Shreemudra Satapathy Date: Tue, 24 May 2016 18:01:02 +0530 Subject: [PATCH 16/18] Removed tabs --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0b8456bf4..70fe41f59 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "appirio-styles": "0.x.x", "appirio-tech-ng-iso-constants": "^1.0.6", "appirio-tech-ng-ui-components": "^2.1.2", - "appirio-tech-react-components": "^0.0.12", + "appirio-tech-react-components": "^0.0.12", "auth0-angular": "^4.1.0", "auth0-js": "^6.8.0", "d3": "^3.5.14", From 19eda225744a35613edfcdefabf711da1d7551cf Mon Sep 17 00:00:00 2001 From: Shreemudra Satapathy Date: Tue, 24 May 2016 18:13:18 +0530 Subject: [PATCH 17/18] Added code comments --- .../distribution-graph.directive.js | 14 +++++++++++--- .../history-graph/history-graph.directive.js | 9 +++++++-- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/app/directives/distribution-graph/distribution-graph.directive.js b/app/directives/distribution-graph/distribution-graph.directive.js index e2a281a96..8ca884f43 100644 --- a/app/directives/distribution-graph/distribution-graph.directive.js +++ b/app/directives/distribution-graph/distribution-graph.directive.js @@ -182,6 +182,7 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js var mousemoveInterval = null + /* render react tooltip component */ ReactDOM.unmountComponentAtNode(document.getElementById('chart-tooltip')) ReactDOM.render(
@@ -193,7 +194,8 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js

- , document.getElementById('chart-tooltip')) + , document.getElementById('chart-tooltip')) + $scope.isFocused = false svg.selectAll('rect.hover') .data(ranges) @@ -216,6 +218,8 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js $scope.highlightedRating = d.start $scope.displayCoders = true $scope.numCoders = d.number + + /* update tooltip location on mouseover, feature currently not inbuilt in react tooltip component */ d3.select('#chart-tooltip') .style('left', (d3.event.pageX-4) + 'px') .style('top', (d3.event.pageY-4) + 'px') @@ -236,9 +240,12 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js $scope.$digest() }) .on('mousemove', function(d) { - window.clearTimeout(mousemoveInterval) + + /* update tooltip on mousemove, using interval of 50ms to improve performance */ + window.clearTimeout(mousemoveInterval) var left = (d3.event.pageX-4) var top = (d3.event.pageY-4) + mousemoveInterval = window.setTimeout(function(){ d3.select('#chart-tooltip') .style('left', left + 'px') @@ -260,7 +267,8 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js $scope.isFocused = false $scope.$digest() }) - + + /* hide tooltip when clicked anywhere outside */ d3.select('body').on('click', function(){ if((d3.event.target.classList[0] != 'tooltip-target') && !$('#chart-tooltip .tooltip-container').hasClass('tooltip-hide') && !isInArray(d3.event.target.classList[0], ['tooltip-content-container', 'tooltip-container', 'tooltip-body', 'Tooltip']) && diff --git a/app/directives/history-graph/history-graph.directive.js b/app/directives/history-graph/history-graph.directive.js index bc8863fd8..6739f34dc 100644 --- a/app/directives/history-graph/history-graph.directive.js +++ b/app/directives/history-graph/history-graph.directive.js @@ -245,6 +245,8 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js return y } } + + /* render react tooltip component */ ReactDOM.unmountComponentAtNode(document.getElementById('chart-tooltip')) ReactDOM.render(
@@ -280,7 +282,9 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js location.href = $filter('challengeLinks')({'rounds': [{id: d.challengeId, forumId: null}], 'track': $state.params.track, 'subTrack': $state.params.subTrack}, 'detail') else location.href = $filter('challengeLinks')({id: d.challengeId, 'track': $state.params.track, 'subTrack': $state.params.subTrack}, 'detail') - }) + }) + + /* update tooltip location on mouseover, feature currently not inbuilt in react tooltip component */ d3.select('#chart-tooltip') .style('left', (d3.event.pageX-5) + 'px') .style('top', (d3.event.pageY-5) + 'px') @@ -302,7 +306,8 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js $scope.historyRating = undefined $scope.$digest() }) - + + /* hide tooltip when clicked anywhere outside */ d3.select('body').on('click', function(){ if((d3.event.target.classList[0] != 'tooltip-target') && !$('#chart-tooltip .tooltip-container').hasClass('tooltip-hide') && (d3.event.target.tagName.toLowerCase()!='circle') && !(d3.event.target.tagName.toLowerCase()=='rect' && d3.event.target.classList[0] == 'hover')) { From 00aea179ea508801f86c38ba3cedd6f311906dbc Mon Sep 17 00:00:00 2001 From: Shreemudra Satapathy Date: Tue, 24 May 2016 18:20:14 +0530 Subject: [PATCH 18/18] Fixed lint errors --- .../distribution-graph.directive.js | 16 ++++++++-------- .../history-graph/history-graph.directive.js | 8 ++++---- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/app/directives/distribution-graph/distribution-graph.directive.js b/app/directives/distribution-graph/distribution-graph.directive.js index 8ca884f43..1d6197044 100644 --- a/app/directives/distribution-graph/distribution-graph.directive.js +++ b/app/directives/distribution-graph/distribution-graph.directive.js @@ -182,7 +182,7 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js var mousemoveInterval = null - /* render react tooltip component */ + /* render react tooltip component */ ReactDOM.unmountComponentAtNode(document.getElementById('chart-tooltip')) ReactDOM.render(
@@ -195,7 +195,7 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js
, document.getElementById('chart-tooltip')) - + $scope.isFocused = false svg.selectAll('rect.hover') .data(ranges) @@ -218,8 +218,8 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js $scope.highlightedRating = d.start $scope.displayCoders = true $scope.numCoders = d.number - - /* update tooltip location on mouseover, feature currently not inbuilt in react tooltip component */ + + /* update tooltip location on mouseover, feature currently not inbuilt in react tooltip component */ d3.select('#chart-tooltip') .style('left', (d3.event.pageX-4) + 'px') .style('top', (d3.event.pageY-4) + 'px') @@ -240,12 +240,12 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js $scope.$digest() }) .on('mousemove', function(d) { - - /* update tooltip on mousemove, using interval of 50ms to improve performance */ - window.clearTimeout(mousemoveInterval) + + /* update tooltip on mousemove, using interval of 50ms to improve performance */ + window.clearTimeout(mousemoveInterval) var left = (d3.event.pageX-4) var top = (d3.event.pageY-4) - + mousemoveInterval = window.setTimeout(function(){ d3.select('#chart-tooltip') .style('left', left + 'px') diff --git a/app/directives/history-graph/history-graph.directive.js b/app/directives/history-graph/history-graph.directive.js index 6739f34dc..d634cc885 100644 --- a/app/directives/history-graph/history-graph.directive.js +++ b/app/directives/history-graph/history-graph.directive.js @@ -245,8 +245,8 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js return y } } - - /* render react tooltip component */ + + /* render react tooltip component */ ReactDOM.unmountComponentAtNode(document.getElementById('chart-tooltip')) ReactDOM.render(
@@ -283,8 +283,8 @@ import Tooltip from 'appirio-tech-react-components/components/Tooltip/Tooltip.js else location.href = $filter('challengeLinks')({id: d.challengeId, 'track': $state.params.track, 'subTrack': $state.params.subTrack}, 'detail') }) - - /* update tooltip location on mouseover, feature currently not inbuilt in react tooltip component */ + + /* update tooltip location on mouseover, feature currently not inbuilt in react tooltip component */ d3.select('#chart-tooltip') .style('left', (d3.event.pageX-5) + 'px') .style('top', (d3.event.pageY-5) + 'px')