Monthly Archives: January 2015

Phil 1.20.15

8:00 – 4:30 SR

  • Fixed most of the issues with the dynamic chart presentation. Committed isn’t carrying over, and the generalized solution to partial FY needs to be implemented for all months.
  • Trying to wrap all the pieces of JS inheritance into one call. Looking at this for the moment…
  • Had an idea about using Turk for generalized GUI testing using an Angular directive framework (it’ll need lots of OO!) and database io like what I did for iRevTurk.
  • Need to fix promises in my server code.
  • Timesheets…

Dong Shin 01.16.2015

  • timesheet finally working
  • added ui-ace to Query Builder
  • wrapped up Logging app
  • working on monthly status script
    • created all projects for all appropriation/capability combinations for FY14 and FY15
    • reworked script to run only required appropriation/capability combo
  • changed both client and server codes to remove PASSWORD
    • painfully compiled server because I lost all maven dependencies…….

Dong Shin 01.15.2014

Dong Shin 01.14.2014

  • deployed FinancialAssistantService
    • not able to log in, missed creating new database user…. ugh!
    • need a server log processor
  • attempted to fix monthly data script
    • almost did it…. 14 OM ISR PMO didn’t make it, need to make sure all the tables are created correctly
  • expanding use of log4j2 for Financial Assistant Service
    • added rolling file appender
    • added database appender

Phil 1.14.15

10:00 – 4:30 SR

  • Morning doctor appt.
  • Mostly fixed the dynamic chart script. 2014_OM_ISRPMO isn’t getting any data though.
  • Deployed the new version of the Runding Request app but couldn’t get login to work.
  • Working on integrating ace/ui-ace into, well, everything.
  • Got the ui-ace editor roughtly integrated into scatterplot. The editor doesn’t have any programmatic configuration/data yet, but that can be added to the  mc.paneldata object.
  • And that’s it for the week. I’m off presenting at TEI 2015 for the rest of the week.

Dong Shin 01.13.2014

  • added column totals and row totals for the datagrids
  • adding busy indicator whenever Funding Request sends server requests…..
  • fixed generate_monthly_status_data
    • if (getMonthNum() > 3):
    • sql += buildMonthsSql(type, typeDict[key], [1, 1, 1, 2, 2, 2], [10, 11, 12, 1, 2, 3], [1, 2, 3, 4, 5, 6]);
    • capability = capability.replace(“-“, “”);

Phil 1.13.15

8:00 – 5:30 SR

  • ran the dynamic_charts script and then reset the last_run time to 1:00am. Now it should run when folks are not around.
  • Going to try changing the scatterplot test controller to run in a new module that references the scatterplot directive module. That worked just fine.
  • Added an appMap object to GlobalUtils. All objects are created as attributes of globalutils.appMap. to keep things clean in the function, it’s recommended to pass the values of appMap into the wrapping function:
(function(angular, scatterplot) {
    "use strict";
    angular.module('scatterApp', ['ngAnimate', 'ngSanitize', 'monospaced.mousewheel'])
        .directive('stagePlanes', [scatterplot.stagePlanesPtr])
        .directive('interactive3D', [scatterplot.interactive3dPtr])
        .directive('floatingPanelManager', [scatterplot.floatingPanelManagerPtr])
        .directive('floatingPanel', ['$sce', scatterplot.floatingPanelPtr]);
})(angular, globalUtils.appMap.scatterplotDirectives);
  • Something to look into: RequireJS. It’s got asynchronous loading of namespaced JavaScript files.
  • Continue working on the divs for scatterplot to create forms.
    • Before I try a form, I’m going to try to have the ace editor be the selected appearance. If I can get that to work, then integrating forms will be a piece of cake. Forms are always the fallback anyway…
    • Got the editor working, but it doesn’t play well with angular. There is a a directive though – UI-ace that looks promising. Got that to work, but it doesn’t seem to allow for data binding. Need to look into how to load the text in the editor.
  • Start on threejs charting?
  • Meeting with Agenia at 4:00 – 5:30

Dong Shin 01.12.2015

  • added login to Funding Request so it can serve as a standalone app
  • added angular-busy to Funding Request
  • adding summary footer to datagrids
    • Contract Labor, Government Labor, Travel, Equipments/Materials
    • ui-grid v3.0.0-RC.18 needed to get summary columns working

Phil 1.12.15

7:00 – 3:00 SR

  • Freezing rain today. The roads have the dull glaze of ice. It’s a great day for telework.
  • Spent a few hours chasing odd errors that I thought were based on JavaScript inheritance but actually turned out to be server oddness. Turns out data provided by remote servers like ‘HTTP_REFERER’ is not standardized and might not be provided. Good thing to note.
  • Working on making scatterplot OO. Then I’m going to see if I can make the panel consist of different directives. Or at least use ng-if two switch between the minimal, hovered and selected items.
  • OO for scatterplot is done. I didn’t like the way that the gl-matrix library was putting it’s elements into the global/window namespace, so I changed that so that they are now under glx. The way that they were doing it was really odd though:
(function(_global) {
  "use strict";

  var shim = {};
  if (typeof(exports) === 'undefined') {
    if(typeof define == 'function' && typeof define.amd == 'object' && define.amd) {
      shim.exports = {};
      define(function() {
        return shim.exports;
      });
    } else {
      // gl-matrix lives in a browser, define its namespaces in global
      shim.exports = typeof(window) !== 'undefined' ? window : _global;
    }
  }
  else {
    // gl-matrix lives in commonjs, define its namespaces in exports
    shim.exports = exports;
  }

  (function(exports) {
	// all the matrix code goes here

  })(shim.exports);
})(this);
  • It turns out that this is a strategy for integrating with Nodejs, which has an ‘exports’ property which is how they handle namespacing. Kind of. More learning to do here.
  • Got the switching of html working with ng-if. To keep the smooth transitions, I have an outer wrapper div that gets the overall (size, color) style. It contains three divs that are switched between using ng-if:
<div class="floatingPanelStyle" ng-class="getCssClass()"
     ng-click="selectPanel()"
     ng-mouseenter="hoverPanel(true)"
     ng-mouseleave="hoverPanel(false)"
     ng-style="{'transform':getTransformString()}">
    <!-- <div ng-bind-html="getHtml()"></div> -->
    <div ng-if="checkPanelState('default')"><em>{{panelObj.id}}</em></div>
    <div ng-if="checkPanelState('hover')"><p>Hover</p></p><p>Click <a href="http://google.com">me</a>!</p></div>
    <div ng-if="checkPanelState('selected')"><p>Selected</p></p></div>
</div>
  • Next step will be to put more sophisticated markup, like a form in there.

 

Phil 1.9.15

8:00 – 5:00 SR

  • DB backups now appear automated!
  • Failover is a problem since our servers apparently run in two different VMs
  • Discussed plans with Lenny, and the presentation with Don
  • Tried the code restructuring on my irev apps, which are a reasonably large Angular app. After a few dumb cut-and-paste errors, everything works…?
  • Next will be to inherit an app and turk controller from the postControllers.
    • Had to change any variable or function to be explicitly attached to this/self, but other than that, everything works. Broke out irevTurk to it’s own module, using an inherited postController. Deployed and running!

Phil 1.8.15

7:30 – 4:30 SR

  • DB backups
  • Some back and forth with Agenia about when to meet next. Some morning next week
  • Nearly fixed the dynamic charts.
    • ‘ISR-PMO’ chokes the query.
    • The goals seem to have problems on FY boundries.
  • Deployed Dong’s FR app on the test server and it seems to work
  • Spent some time going over the FR Angular code, and there are some very weird things. In the process of fixing(?) them, we broke the app. Dong’s looking into that now.
  • Started to pull the iRev code apart and use inheritance. The use of all the functions and pointers seems to be working fine, but there’s a lot of code to move around. I think I’ll create an iRevApps2 directory and populate with cleaned items. At this point I’m thinking that the organization should look something like this:
    • globals – contains JS objects that are used throughout the applications
    • angular – contains the actual angular code used by the application. A single file for a simple SPA should look something like this:
// The Angular code
(function(angular, ml, undefined) {
    angular.module('globalsApp', [])
            .factory('GlobalsService', [ml.factoryPtr]);

    angular.module('inheritApp', ['globalsApp'])
            .controller('MainCtrl', ['GlobalsService', ml.childPtr]);
})(angular, myLogic);
    • then I’m not sure. There needs to be a place for common/base classes. Then possibly folders for each SPA component? Here’s Google’s style guide to ponder.

Dong Shin 01.07.2015

  • adding data for dropdown list in server – done
    • Budget Centers – FRBudgetCenter
    • Sub Budget Centers – FRSubBudgetCenter
    • Requisition IDs – RequisitionId
    • Project Numbers – ProjectNumber
    • Project Labs – ProjectLab
  • generate_monthly_status_data.py not working properly
    • add data to __view_project_detailed_data
      •  `oog`.`obligation_goal_pct_year_1_month_1` * `bc`.`total_budget` / 100 AS `obligation_goal_year_1_month_1`,
      • `oog`.`outlay_goal_pct_year_1_month_1` * `bc`.`total_budget` / 100 AS `outlay_goal_year_1_month_1`,
      • up to year 4 month 12
    • add/change fields
      • typeDict = {“Obligated”:”reported_facts_obligated”,\
        “Committed”:”committed_amount”,\
        “Outlay Goal”:”outlay_goal”,\
        “Obligation Goal”:”obligation_goal”,\
        “Committed”:”committed_amount”,\
        “PM Actuals”:”pm_actuals”,\
        “Outlays”:”reported_facts_outlay”};

Phil 1.7.15

Phil 8:00 – 5:00 SR