Monthly Archives: May 2014

Phil 5.16.14

8:00 – 2:00 SR

  • Server is really slow this morning…
  • DB backups – failed because of slow behavior. Bouncing the server.
  • Server is still really slow and failed to start for a long time. Put in a ticket and will try again later today. Yay! It’s fixed.
  • Working on adding lines with variable endpoints. I’m basing this on this chapter from the upcoming Programming 3D Applications with HTML5 and WebGL and Mr. Doob describing how to draw lines. And it all worked. Woohoo!
  • Also, realized that many charts can be made using extrusions as shown in http://threejs.org/examples/#webgl_geometry_shapes. This uses the THREE.ExtrudeGeometry call.
  • Did some more fiddling with HTML labels. They weren’t showing up in the right places in 2D.
  • Going back to the servers to see if they’re happy now.

Phil 5.15.14

8:00 – 4:00 SR

  • DB backups
  • Saving queries in query builder should be managed in roles. Publishing should only be Admin
  • Monthly status report dropdown should be disabled
  • financial status data in role management isn’t allowing people to open projects from “Project Management” panel
  • Wrote up a SR justification for Brad.
  • JavaScript
    • Add optional font, color and size for canvas2d labels, since they seem to be *way* faster. Done.
    • Fix registration on tooltips/html labels WRT parent div – done
    • Next is to do some varying lines so that we can connect the shapes. Come to think of it, it’s kind of nice that we have world position for everything….

Dong Shin 05.14.2014

  • self-assessment for annual review
  • Add Update Button to Req Info in Query Builder – done (2 hours)
  • working lockdown rows  (5 hours)
    • added configuration table entry to configutaion table – not used yet
    • added lockdown entry in itemRenderer
    • added isLockdown method in FinancialData class

Phil 5.14.14

8:00 – 4:30 SR

  • DB Backups
  • JavaScript/WebGL
    • Starting on tooltips.
    • Extended draw2D for each WebGLComponent that calculates the screenXY for the 3D object origin. Added a behavior2D to handle things like HUDS.
    • Got HTML overlays tracking as well, though they are not taking into accordance the parent’s position.
    • Overlay labels really chew up CPU. Use the Canvas2D labels by default, I think….

Phil 5.13.14

8:00 – 5:00 SR

  • site 8:00 –
  • DB backups
  • Fixed a post-process query by changing null to zero
  • re-ran the charts. 2014 data looks much better.
  • Fix Querybuilder –
    • obligation_goal_percent
    • dropdown is not showing current month.
  • Add RQ(?) rule to ignore obligations where the only difference is the date. Add appropriations to missing columns or data or so, um. we can map it later.
  • Javascript
    • Adding matrix (or maybe a whole object3d?) for the local geometric frame. Object would be easier if you don’t have to add it to the scene to get the correct matrix information structure.

Dong Shin 05.12.2014

  • deployed new Reqonciler and db update – pre-processing works! (3 hours)
  • found some of the obligations are not set correctly (second year?), all the summary data and relations are there. (1 hour)
    • have not corrected setting to NULL when obligations/outlays are cleared! it should set to 0, not null because 0+ null = null!
  • working on VizTool Priority List #1 – adding save to budget/req info (4 hours)

Phil 5.12.14

8:00 – 5:30 SR

  • 8:00 – 11:00 on site
  • DB backups
  • Deployed new RQ
  • Went over the time estimates with Lenny. The upshot is that we will track actual hours worked on the line items.
  • Fix the requisition_id AS funded_budget in __view_monthly_obligations_by_req_id error.
  • I think I may have found the issue that’s keeping the new object from setting the values that are actually used to draw?
    • It’s possible that the matrix is being reset after the update function, with the setPosition calls overriding the matrix.
    • This thread shows how to get position and orientation from the 4×4: http://stackoverflow.com/questions/15079294/inverse-of-object3d-updatematrix-in-three-js
    • Finally figured out the problem. I have the matrix that is in GLOBAL space. I need a matrix that is in local space that I can then multiply by the parent’s matrix. That should work. And it did! Need to verify that stacked objects will behave.
    • They do – after a fashion. The scale information is embedded in the matrix and is applies to all children. Somehow, this is messing with the scale if it is mixed with a rotation. Is it possible matrix.decompose is broken?
    • Well, kind of. From Euler.js setFromRotationMatrix(): // assumes the upper 3×3 of m is a pure rotation matrix (i.e, unscaled). So don’t scale on the transform matrix. Instead, scale the position of the points that make up the object in the local space. This means I may have to look at immediate mode or at least see how the geometry is stored in the object. Or only scale the objects that are the leaf nodes in a tree. That should actually be OK for charts.
  • Starting tooltips and text overlays: http://stackoverflow.com/questions/11586527/converting-world-coordinates-to-screen-coordinates-in-three-js-using-projection. Also example 6-3 from the webgl book (pg 115).
  • Got Hello, World rendered over the two canvases, styled and everything :-).

Dong Shin 05.09.2014

  • deployed new Reqonciler and the ingest works magically!
  • fixed post processing queries by removing Appropriations
  • pre-processing ignore is broken
    • added target table name column
      • ALTER TABLE `_reqonciler_processing` ADD `target_table_name` VARCHAR(50) NULL ;
      • set appropriate table names per query

Phil 5.9.14

7:30 – 5:00 SR

  • DB backups
  • Deploying new Reqonciler
  • Created svn-based stats on development for productivity discussions with Chris. Also generated stats for 2013 for review.
  • Look into picking and reflection map issues. I think the picking problem is that the search does not recurse down the sub-model branch, though the THREE model info is there (Also need to make sure that the model reference is added to user data and that it’s accessible). The reflection is hopefully tied to the recalculation of the reflection camera position that was commented out in the draw function while I was still chasing down the “too much recursion” error.
  • Nope, neither solution worked. I’m thinking that I can have parents/child relations based on just WebGLComponenets. Update sets the positions based on the parent’s model matrix, but the actual object3D hierarchy is flat. That should fix both problems.
    • WebGLCanvas.addModel will also set a WebGLCanvas reference attribute in the WebGLComponent. The component will then look to see if it has any children and also set their canvas if it’s not null. If the canvas is null, then the child will add its object3d to the canvas’ scene
    • Calling addModel on a WebGLComponent will cause the child to add its object3d to the canvas’ scene if the scene is not null.

Dong Shin 05.08.2014

  • found that the new obligations not are saved to budget_center_contracts table
    • post processing query that saves not working correctly?
    • tried to replicate it with test data, but no luck, need to compare the queries word by word
  • added Query Editor to Reqonciler so that editing can easily be done on the app

Phil 5.8.14

8:00 – 2:00 SR

  • DB backups
  • Walked through the outlay problem with Dong and Lenny
  • Worked out estimates for new VizTool requirements. It comes up to 500-1,000 hours of work.
  • Showed dong the new YUI architecture. The switch to direct function declaration seems to have had a good effect on how I expect closure to work, so I’m happy.
  • Adding hierarchical model capability to WebGLComponent. Nope, picking isn’t working in 2D. Need to fix that first. Ok, fixed.
  • Added hierarchy. There is some funny stuff that’s going on WRT data being shared across instances. Local variables (inside the  YUI.add({}) scope are definitely shared. I was expecting that. But it also appears that variables created in the Y.Base.create() scope are also shared. I ran into this problem when I was adding the models array to WebGLComponent. The way around it was to add to the ATTRS: {} object. That’s ok, but I’m still confused…
  • Also, picking and reflection maps don’t work on sub-objects.
  • Oh yeah, and for reference, this is the kind of charts I want to start trying to draw next week:

Phil 5.7.14

8:00 – 5:00 SR

  • DB Backups
  • Fix __view_monthly_obligations_by_contract so that requisition_id’s with different po_reference show up in “unclaimed”
  • Fix funded_budget to requisition id on two views.
  • Refactoring!
  • Change the this.set() functions (or at least the strings) to variables (i.e _ATTR_FOO = ‘foo’); possibly using a factory pattern? (from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Closures). Yep, that worked just fine.
function makeAdder(x) {
  return function(y) {
    return x + y;
  };
}

var add5 = makeAdder(5);
var add10 = makeAdder(10);

console.log(add5(2));  // 7
console.log(add10(2)); // 12
  • Try moving function declarations below prototype and removing predefinitions.
  • Add skybox argument
  • Everything is pretty much completely refactored. I think this is more clear and less error-prone. It looks exactly the same, but is remarkably different under the skin.
  • Next is hierarchical models.

Phil 5.6.14

9:00 – 5:00 SR

  • Db backups
  • Updated Java on the servers
  • Installed Dong’s new views. Lenny’s testing. There are some issues that he’s noting in an email. It appears that all the old data that were deleted are back, but none of the new data is visible.
  • Edit task list to provide hours.
  • More picking
    • Unitizing the mouse position worked
    • Changing userData to a pointer to the model and using the name field.
    • Done. That was not too bad!
  • Adding reflection maps
    • Added skybox to canvas
    • Added reflections. Going to try for a shiny textured earth tomorrow, then maybe some dragging?

yuiWebGl

Today’s progress.