viewofdataAggregationSelected=Inputs.radio(newMap([["All Passwords",allDataSorted],["Group by Password Type",rollupData],["Count by Crack Difficulty",rollupDataByDifficulty]]),{value:allDataSorted,label:"Select one:"})
pc=dvPackCircles(pcElem,dataLayout,600,600,"alphabet_size",options);// alphabet_size works fine
//pc = dvPackCircles(pcElem,dataLayout,600,600,"search_space_count",options); // for some reason doesn't like search_space_count
options=({
transitionMS:1000,
padding:1,
classField:"password_type",
textLabelField:"password"
})
import{toNum}from"@emfielduva/dvlib_layout"
rollupData2=d3.rollups(UvaPasswords,v=>d3.count(v,d=>toNum(d["search_space_count"])),d=>d["password_type"]).sort((a,b)=>d3.ascending(a[1],b[1]))//use d3.count to count how many of each type of password
//.sort(a,b) --> compares each a and b value and sorts them
Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.