11var data = [ 23 , 15 , 16 , 8 , 5 , 4 , 19 , 22 ] ;
22var svg , bandScale ;
3+ createChart ( ) ;
34
45function createChart ( ) {
56 svg = d3 . select ( "#chart" ) . append ( "svg" ) ;
67
78 var h = 100 ,
8- w = 500 ;
9+ w = 800 ;
910
1011 //var bandWidth = w / data.length - 1;
1112
@@ -36,23 +37,18 @@ function createChart() {
3637 } )
3738 . style ( "fill" , "steelblue" ) ;
3839}
39- createChart ( ) ;
40-
41- function change ( ) {
42- /* var sortComparer;
43- sortComparer = function (a, b) {
44- return b - a;
45- };
46-
47- data.sort(sortComparer);
40+ document . getElementById ( "random-data" ) . addEventListener ( "click" , function ( ) {
41+ data = [ ] ;
42+ for ( var i = 0 ; i < 20 ; i ++ ) {
43+ data . push ( Math . floor ( Math . random ( ) * 100 ) + 1 ) ;
44+ }
4845 console . log ( data ) ;
49- var dOrder = data.map(function (d) {
50- return d;
51- });
52- */
53-
46+ svg . remove ( ) ;
47+ createChart ( ) ;
48+ } ) ;
49+ function selectionSort ( ) {
5450 const timer = ( ms ) => new Promise ( ( res ) => setTimeout ( res , ms ) ) ;
55- async function selectionSort ( ) {
51+ async function sort ( ) {
5652 // We need to wrap the loop into an async function for this to work
5753 for ( var i = 0 ; i < data . length ; i ++ ) {
5854 smallest = data [ i ] ;
@@ -63,32 +59,34 @@ function change() {
6359 pos = j ;
6460 }
6561 }
66- temp = data [ i ] ;
67- data [ i ] = smallest ;
68- data [ pos ] = temp ;
69- var dOrder = data . map ( function ( d ) {
70- return d ;
71- } ) ;
72- bandScale . domain ( dOrder ) ;
73- svg
74- . transition ( )
75- . duration ( 750 )
76- . selectAll ( "rect" )
77- . attr ( "x" , function ( d ) {
78- return bandScale ( d ) ;
62+ if ( data [ i ] != smallest ) {
63+ temp = data [ i ] ;
64+ data [ i ] = smallest ;
65+ data [ pos ] = temp ;
66+ var dOrder = data . map ( function ( d ) {
67+ return d ;
7968 } ) ;
69+ bandScale . domain ( dOrder ) ;
70+ svg
71+ . transition ( )
72+ . duration ( 750 )
73+ . selectAll ( "rect" )
74+ . attr ( "x" , function ( d ) {
75+ return bandScale ( d ) ;
76+ } ) ;
77+ var swooshAudio = new Audio ( "/sound-effects/swoosh.mp3" ) ;
78+ swooshAudio . play ( ) ;
79+ }
80+
8081 await timer ( 1000 ) ; // then the created Promise can be awaited
8182 }
82- svg . selectAll ( "rect" ) . style ( "fill" , "blue" ) ;
83- alert ( "Sorted" ) ;
83+ svg . selectAll ( "rect" ) . style ( "fill" , "green" ) ;
84+ var completeAudio = new Audio ( "/sound-effects/complete.mp3" ) ;
85+ completeAudio . play ( ) ;
8486 }
85- selectionSort ( ) ;
87+ sort ( ) ;
8688}
8789
88- d3 . select ( "button" ) . on ( "change" , change ) ;
89-
90- document . getElementById ( "selection-sort" ) . addEventListener ( "click" , change ) ;
91-
92- var theRandomNumber = Math . floor ( Math . random ( ) * 10 ) + 1 ;
93-
94- console . log ( theRandomNumber ) ;
90+ document
91+ . getElementById ( "selection-sort" )
92+ . addEventListener ( "click" , selectionSort ) ;
0 commit comments