Author Archives: pgfeldman

Dong Shin 10.25.2012

  • status meeting
  • working on running stored queries in ScriptFacades class
  • continue working on FMP alerts
  • created AlertFMPs.py and AlertFMPsSaveToTable.py scripts
  • query to find offending FMP’s in Alert format
    • SELECT
      GROUP_CONCAT(distinct(ppa.login)) as porfolio_admins,
      GROUP_CONCAT(distinct(ppm.login)) as portfolio_mgrs,
      GROUP_CONCAT(distinct(psf.login)) as service_finance_pocs,
      GROUP_CONCAT(distinct(m.login)) as service_project_managers,
      p.project_number as program,
      c.center_number as MIPR
      FROM `financial_mitigation_plans` fmp1, financial_mitigation_plans fmp2,
      projects p, obligations_outlays o, budget_centers c,
      _projects_service_project_mgrs m,
      _projects_portfolio_admins ppa,
      _projects_portfolio_mgrs ppm,
      _projects_service_finance_pocs psf
      WHERE fmp1.obligation_outlay_uid = fmp2.obligation_outlay_uid
      AND fmp1.financial_mitigation_plan = fmp2.financial_mitigation_plan
      AND fmp1.explanation1 = fmp2.explanation1
      AND fmp1.explanation2 = fmp2.explanation2
      AND fmp1.explanation3 = fmp2.explanation3
      AND fmp1.explanation4 = fmp2.explanation4
      AND fmp1.explanation5 = fmp2.explanation5
      AND fmp1.month + 1 = fmp2.month
      AND p.uid = o.project_id
      AND c.uid = o.funding_id
      AND p.uid = m.project_id
      AND p.uid = ppa.project_id
      AND p.uid = ppm.project_id
      AND p.uid = psf.project_id
      AND fmp1.obligation_outlay_uid IN
      (SELECT o.uid
      FROM projects p, budget_centers c, budget_amounts a, obligations_outlays o, obligations_outlays_goals g
      WHERE
      p.uid = c.project_id
      AND a.budget_center_id = c.uid
      AND o.project_id = p.uid
      AND o.funding_id = c.uid
      AND g.appropriation = c.appropriation
      AND g.year = o.year_count
      AND o.year + o.year_count = 2014
      AND (ISNULL(o.month_1) OR (o.month_1 > TRUNCATE(a.amount *  IF(o.type LIKE ‘%Obligate%’,g.obligation_month_1, g.outlay_month_1) / 100, 2) * 1.05
      AND o.month_1 <  TRUNCATE(a.amount *  IF(o.type LIKE ‘%Obligate%’,g.obligation_month_1, g.outlay_month_1) / 100, 2) * 0.95)))
      GROUP BY o.uid

Dong Shin 10.24.2012

  • query to find offending (?) FMPs for underperforming obligations/outlays
    • SELECT *
      FROM `financial_mitigation_plans` fmp1, financial_mitigation_plans fmp2
      WHERE fmp1.obligation_outlay_uid = fmp2.obligation_outlay_uid
      AND fmp1.financial_mitigation_plan = fmp2.financial_mitigation_plan
      AND fmp1.explanation1 = fmp2.explanation1
      AND fmp1.explanation2 = fmp2.explanation2
      AND fmp1.explanation3 = fmp2.explanation3
      AND fmp1.explanation4 = fmp2.explanation4
      AND fmp1.explanation5 = fmp2.explanation5
      AND fmp1.month + 1 = fmp2.month
      AND fmp1.obligation_outlay_uid IN
      (SELECT o.uid
      FROM projects p, budget_centers c, budget_amounts a, obligations_outlays o, obligations_outlays_goals g
      WHERE
      p.uid = c.project_id
      AND a.budget_center_id = c.uid
      AND o.project_id = p.uid
      AND o.funding_id = c.uid
      AND g.appropriation = c.appropriation
      AND g.year = o.year_count
      AND o.year + o.year_count = 2014
      AND (ISNULL(o.month_1) OR (o.month_1 > TRUNCATE(a.amount *  IF(o.type LIKE ‘%Obligate%’,g.obligation_month_1, g.outlay_month_1) / 100, 2) * 1.05
      AND o.month_1 <  TRUNCATE(a.amount *  IF(o.type LIKE ‘%Obligate%’,g.obligation_month_1, g.outlay_month_1) / 100, 2) * 0.95)))

Phil 10.24.12

8:00 – 4:00 ESSO

  • Working on getting auto colors to work properly in trend widget.
  • 10:00 Meeting to talk to GAO folks. I think that went well. There will be a followup meeting.
  • Continued to beat on getting autopallete working for TrendWidget. After stepping through the ThresholdColumnRederer and figuring that out, I wound up with the same wrong coloring that I was getting when I ran the fill function from within the TrendWidget. The problem was that the ChartItem index was referring to each *cluster* of columns, not the columns within the cluster. As a hack to get around this, I put an Array in TrendWidget that counts the yFields that are passed to the field function. The *index* of the yFields is then used as the hue angle. Anyway, here’s the code:
protected function setColumnSeriesColor(element:ChartItem, index:Number):IFill {
	var yFieldName:String = "_unset_";
	var o:Object = element.element;

	// check if the yFieldName is in an array. if it is, then get the index. if not, add and get the index.
	if(o.hasOwnProperty("yField")){
		yFieldName = o.yField;
		if(_yfieldNameArray.lastIndexOf(yFieldName) == -1){
			_yfieldNameArray.push(yFieldName);
		}
		index = _yfieldNameArray.lastIndexOf(yFieldName);
	}
	return ColorUtil.setSeriesColor(element, index);
}
  • Next is getting the line charts to work with the color scheme.
  • Oh yeah, and add dataTip formatting to pie charts in QueryWidgetBase.

Phil 10.23.12

8:00 – 2:00 ESSO

  • Backups and housecleaning
  • Installed new vis2.swf. Not happy yet with the colors, but the commas work.
  • Talked to Lenny about FACTS
  • Got some heads up on tomorrow’s meeting.
  • Working with colors. I’m going to increment a fixed amount off of the border color – see how that works. Well – I think:
  • Well, that seems to work nicely:

Dong Shin 10.23.2012

  • created a script to save Planned Value alerts to Alerts table – AlertPlannedValuesSaveToTable.py
  • working on script to generate alerts for unchanged Financial Mitigation Plans
  • query to get unchanged FMPs from previous months
    • SELECT *
      FROM `financial_mitigation_plans` fmp1, financial_mitigation_plans fmp2
      WHERE fmp1.obligation_outlay_uid = fmp2.obligation_outlay_uid
      AND fmp1.financial_mitigation_plan = fmp2.financial_mitigation_plan
      AND fmp1.explanation1 = fmp2.explanation1
      AND fmp1.explanation2 = fmp2.explanation2
      AND fmp1.explanation3 = fmp2.explanation3
      AND fmp1.explanation4 = fmp2.explanation4
      AND fmp1.explanation5 = fmp2.explanation5
      AND fmp1.month + 1 = fmp2.month

Phil 10.22.12

8:00 – 9:45 ESSO

  • Backups
  • Updated the index.html page to mention that we are production!
  • Made a printout of the xml that describes the FlexiChart that we’re using, and I think I figured out what the issue with the tooltips is. The yField does not exist as a row in the table. I need to get what the label and the mapping is for each row (series?) from the flexiChart.

9:45 – 12:15 FP

  • How users make applications fit their needs. Or, how users misuse Excel, Outlook, and PowerPoint.

12:15 – 4:00 – ESSO

  • Digging into FlexiChart to see if I can get the series information and use it in the dataTip function. Done and working.

 

Dong Shin 10.22.2012

  • working on queries to calculate actual performance of Financial data
  • created a script to generate alerts for planned values that are out of acceptable range (+/- 5%) – AlertPlannedValues.py
  • query to find planned values under or over 5%
    • SELECT p.uid, c.uid, c.center_number, c.appropriation,
      a.year, a.amount,
      o.uid, o.type, o.year, o.year_count, o.month_1,
      g.uid,
      @goal_month_1 := IF(o.type LIKE ‘%Obligate%’,g.obligation_month_1, g.outlay_month_1) as goal_month_1,
      TRUNCATE(a.amount * @goal_month_1 / 100, 2) as goal_month_1_amount,
      @goal_month_1_min := TRUNCATE(a.amount * @goal_month_1 / 100, 2) * 0.95 as goal_month_1_min,
      @goal_month_1_max := TRUNCATE(a.amount * @goal_month_1 / 100, 2) * 1.05 as goal_month_1_max
      FROM projects p, budget_centers c, budget_amounts a, obligations_outlays o, obligations_outlays_goals g
      WHERE p.uid = 176
      AND p.uid = c.project_id
      AND a.budget_center_id = c.uid
      AND o.project_id = p.uid
      AND o.funding_id = c.uid
      AND g.appropriation = c.appropriation
      AND g.year = o.year_count
      AND (ISNULL(o.month_1) OR (o.month_1 > TRUNCATE(a.amount *  IF(o.type LIKE ‘%Obligate%’,g.obligation_month_1, g.outlay_month_1) / 100, 2) * 1.05
      AND o.month_1 <  TRUNCATE(a.amount *  IF(o.type LIKE ‘%Obligate%’,g.obligation_month_1, g.outlay_month_1) / 100, 2) * 0.95))
      AND o.type = ‘Planned Obligated $:’
  • query to calculate goals and actuals
    • SELECT p.uid, c.uid, c.center_number, c.appropriation,
      a.year, a.amount,
      o.uid, o.type, o.year, o.year_count, o.month_1,
      g.uid,
      @goal_month_1 := IF(o.type LIKE ‘%Obligate%’,g.obligation_month_1, g.outlay_month_1) as goal_month_1,
      TRUNCATE(a.amount * @goal_month_1 / 100, 2) as goal_month_1_amount
      FROM projects p, budget_centers c, budget_amounts a, obligations_outlays o, obligations_outlays_goals g
      WHERE p.uid = 176
      AND p.uid = c.project_id
      AND a.budget_center_id = c.uid
      AND o.project_id = p.uid
      AND o.funding_id = c.uid
      AND g.appropriation = c.appropriation
      AND g.year = o.year_count

Phil 10.19.12

8:00 – 4:00 ESSO

  • Deployed new Vis2 and PA. Vis2 still needs some work with autocalculating colors, and tooltip values are being lost in some of the FlexiCharts.
  • We do have a production machine. It’s the one labeled ‘test’. Declare victory and move on!
  • VisTool Meetings are now every other Thursday starting next week
  • Added a minimum saturation value as well as min and max hue angle steps in the auto color code
  • Extended printing of FlexiChart tooltips to show all data names and values to see why things are not showing up in the on-site tooltips
  • We really do need to incorporate this – xkcd-style plots

Phil 10.18.12

8:30 – 2:30 ESSO

  • Backups
  • Some back and forth with Denise about servers. It turns out that she moved, and is in HQ now.
  • Some talk with Jim G. about OSGI issues on some of their work
  • It looks like there may be a demo on the 24th for GAO?

2:30 – 4:30 FP

  • Qualitative Methods and HCI

Dong Shin 10.17.2012

  • fixed alerts with no users (such as Service/PMs not using tool) not showing in Alerts Panel for Administrators
  • removed other users columns (Portfolio Admin, Portfolio Mgrs, Serivce POCs) from Alerts Datagrid in PA to reflect the requirements doc
  • reworked Alerts data retrieval to include comments count and added it to Alerts Datagrid
  • added refresh Alerts data when Alert Edit is done.

Phil 10.17.12

9:30 – 4:00 ESSO

  • Dentist this morning
  • More tracing of where the tooltip functionality is handled in FlexiChart. I’m starting to think it’s the default behavior, so I’m working on getting a data tip function to extract what’s going on and insert the appropriate text and values.
  • Wound up adding a dataTipFunction at the <flexichart:FlexiChart/> level that got the displayName from the HitData.element, which in this case is always going to be a series of some kind. The display name allows me to get the correct value from the item data Object, which is then formatted.
  • Still need to bring all the colors in line with the values that are now calculated from the palette.
  • Added in change logs to VISIBILITY.

Dong Shin 10.16.2012

  • continue working on Alerts
  • query to alert users that have not been logged on for more than 30 days
    • SELECT
      NULL as porfolio_admins,
      NULL as portfolio_mgrs,
      NULL as service_finance_pocs,
      NULL as service_project_managers,
      ” as program,
      ” as MIPR,
      CONCAT(login, ‘ has not been logged in for more than 30 days ‘) as alert,
      ‘OPEN’ as status
      FROM `users`
      WHERE DATEDIFF(now(), last_login) > 30
    • script – UsersNotLoggedIn30Days.py and UsersNotLoggeIn30DaysSaveToTable.py
  • added TAB support for PrettyTextEditor in VSS4
    • protected function keyFocusChange(evt:FocusEvent) : void {
      evt.preventDefault();
      evt.currentTarget.insertText(”    “);
      }
  • created a script to return status of Alerts with days – AlertsStatus.py

Phil 10.15.12

Phil 8:30 – 4:30

  • Backups and such. All is quiet. Even fixed a typo or two.
  • Decided to put all the HSB code in  com.edgeti.EdgeUtils.color.HsbObject. Once that’s working, I’ll put it in FGMFlexUtils45, since it’s probably going to be pure Actionscript.
  • Well, I’ll be. It ran the first time!
  • Starting on adding formatted tooltips for numbers. Started to build a formattedDataTip function in AdvancedQueryWidget. Need to pull the name and value from the HitData, then check to see if the value is a number, and if so, add commas and decimal places. Still need to figure out where this is done in FlexiChart, but it will (should?) be the same code.

Phil 10.12.12

8:00 – 4:00 ESSO

  • Backups – all is well.
  • Farewell lunch for Jessica
  • Working on color recognizing code. Editor freaked out and gave warnings for items inherited from QueryWidgetBase and WidgetBase. Solved mysteriously after some flailing. Probably closing and re-opening the project fixed it.
  • Got the main piece of the color code working, but I can’t have a hybrid model that lets the default color scheme take over once I’ve run out of custom colors. So I’m converting the RGB of the two theme colors and calculating a family of colors in HSB space. This will be nicer anyway, since the theme will now be usable on the pie chart and will make the other charts look a little better.
  • Neat video on data visualization and ‘data foraging’: http://www.youtube.com/watch?v=_IbTZBMHiY4