/src/AnnualIncomeChart.as

https://github.com/fgontier/LBS_earnings_potential_calculator
ActionScript | 129 lines | 77 code | 23 blank | 29 comment | 18 complexity | 8c041132587056bb7bc1585c4a2d55b8 MD5 | raw file
  1. package
  2. {
  3. import flash.display.Sprite;
  4. import json.JParser;
  5. public class AnnualIncomeChart extends Sprite
  6. {
  7. private var _salaryArray:Array;
  8. private var _Ymax:int;
  9. private var _age:Number = 18;
  10. private var jsonStr:String;
  11. public function AnnualIncomeChart(Ymax:int,salaryArray:Array, age:Number)
  12. {
  13. _salaryArray = salaryArray;
  14. _age = age;
  15. _Ymax = Ymax;
  16. if (_age < 18) {_age = 18} // start the X scale at 18
  17. }
  18. public function createJson():String
  19. {
  20. var jsonObj:Object = new Object();
  21. // title
  22. var titleObj:Object = new Object();
  23. titleObj.text = "Your Annual Income";
  24. titleObj.style = "{font-size: 16px; font-weight: bold; color: #2C5291; text-align: center;}"
  25. jsonObj.title = titleObj;
  26. /////// elements
  27. jsonObj.elements = new Array();
  28. var elementsObj:Object = new Object();
  29. elementsObj.type = "bar";
  30. elementsObj.alpha = 0.8;
  31. elementsObj.colour = "#2C5291";
  32. elementsObj.values = _salaryArray;
  33. //elementsObj.tip = #val#
  34. (jsonObj.elements as Array).push(elementsObj)
  35. /////// y_axis
  36. var y_axisObj:Object = new Object();
  37. y_axisObj.min = 0;
  38. y_axisObj.max = nearestTo( _Ymax);
  39. y_axisObj.steps = 1
  40. y_axisObj.stroke = 3
  41. y_axisObj.tick_length = 15
  42. y_axisObj.offset = 0
  43. y_axisObj.colour = "#2C5291"
  44. y_axisObj.style = "{grid-colour:0xF5E1AA}"
  45. y_axisObj.labels = {"colour": "#2C5291" , "text": "$#val#"}
  46. jsonObj.y_axis = y_axisObj;
  47. /////// x_axis
  48. var x_axisObj:Object = new Object();
  49. x_axisObj.min = _age
  50. x_axisObj.max = 65
  51. x_axisObj.steps = 2
  52. x_axisObj.stroke = 3
  53. x_axisObj.colour = "0x2C5291"
  54. x_axisObj.style = "{grid-colour:#F5E1AA}";
  55. x_axisObj.labels = {"colour": "#2C5291"}
  56. //x_axisObj.rotate = "diagonal"
  57. //x_axisObj.labels = ["test", "lala"]
  58. jsonObj.x_axis = x_axisObj;
  59. /////// tooltip
  60. var tooltipObj:Object = new Object();
  61. tooltipObj.shadow = true
  62. tooltipObj.stroke = 5
  63. tooltipObj.colour = "#F2C322"
  64. tooltipObj.background = "#F2C322"
  65. tooltipObj.mouse = 2;
  66. //tooltipObj.title = "{font-size: 12px; color: #2C5291}"
  67. //tooltipObj.body = "{font-size: 20px; font-weight: bold; color: #9090ff }"
  68. //tooltipObj.text = "{font-size: 20px; font-weight: bold; color: #9090ff }"
  69. elementsObj.tip = "Annual Income: $#val#";
  70. jsonObj.tooltip = tooltipObj;
  71. /////// bg_colour
  72. // jsonObj.bg_colour = "#002200"; //<< if no bg_colour = transparent
  73. /////// y_legend
  74. //var y_legendObj:Object = new Object();
  75. //y_legendObj.text = "Dollars",
  76. //y_legendObj.style = "{color: #736AFF; font-size: 12px;}"
  77. //jsonObj.y_legend = y_legendObj;
  78. /////// x_legend
  79. //var x_legendObj:Object = new Object();
  80. //x_legendObj.text = "Age",
  81. //x_legendObj.style = "{color: #736AFF; font-size: 12px;}"
  82. //jsonObj.x_legend = x_legendObj;
  83. /*
  84. Encoder the object into JSON.
  85. */
  86. trace("jsonObj non encoded: " + jsonObj);
  87. jsonStr = JParser.encode(jsonObj);
  88. trace("jsonStr " + jsonStr);
  89. return(jsonStr)
  90. }
  91. private function nearestTo(myNunber:int):int
  92. {
  93. //trace("myNunber " + myNunber);
  94. //trace("length " + myNunber.toString().length);
  95. var Ymax:int;
  96. // Round a number to nearest multiple of 1000, 10000 or 100000
  97. if (myNunber.toString().length == 4) { Ymax = ( 1 + Number(myNunber.toString().substr(0,2))) * 100 }
  98. else if (myNunber.toString().length == 5) { Ymax = ( 1 + Number(myNunber.toString().substr(0,2))) * 1000 }
  99. else if (myNunber.toString().length == 6) { Ymax = ( 1 + Number(myNunber.toString().substr(0,2))) * 10000 }
  100. else if (myNunber.toString().length == 7) { Ymax = ( 1 + Number(myNunber.toString().substr(0,2))) * 100000 }
  101. else if (myNunber.toString().length == 8) { Ymax = ( 1 + Number(myNunber.toString().substr(0,2))) * 1000000 }
  102. else if (myNunber.toString().length == 9) { Ymax = ( 1 + Number(myNunber.toString().substr(0,2))) * 10000000 }
  103. return(Ymax)
  104. }
  105. }
  106. }