- working on FR
- removed all default 0’s
- Obligations auto fill when 100% is reached
- added warnings for Obligations/Outlays greater than Funding Amount
Category Archives: Projects
Phil 3.5.15
7:30 – 4:30 SR
- Create data to chart!
- Reply to Chris’ email for recording twitter data – done
- Create chart db – done.
- Create statement table with rank and count. Save as insert into text, fix formatting in file before loading
- make sure that textures, lines, reflections and skybox works (WebGLModuleTest)
- There were a few things missing and some issues with how lines get handled, but everything pretty much patched in correctly. Running code is here (for now…)
- Create new project with db access. Basically blinddb with WebGL div. Call it WebGlCharting1
Dong Shin 03.04.2015
- working on FR
- added Project Lab PM as SELECT list
- database table, server code… client code
- POCs need at least one per each type
- moved Project Numbers to ISR PMO panel from Project Description panel
- added Project Lab PM as SELECT list
Phil 3.4.15
8:00 – 4:00 SR
- Testing meeting – me, Ronda, Agenia, Lenny.
- Status report!
- Finish up templates and put them in SVN – Done, demo’d to Dong
- Need to add all the working templates to the templates directory and add a README – Done
- CATS is an IDE for TypeScript and Web developers. CATS is open source software released under the Apache 2.0 license and runs on Linux, Windows and OS X. CATS itself is also written in TypeScript, so you can easily customize it if required.
- Verify that lines and textures work in the new framework.
Dong Shin 03.03.2015
- new items from Chris/Lenny
move Project Number to ISR PMO panel from Project Description panelProject Lab PM in Project Description panel is drop downat least one POC required on each tab in Point of Contacts paneladd “Are the funds being placed on existing or continuing contracts?” to Contract Details panelif YES to first, show second and the details gridif NO to second, set contact number to TBD
enable buttons in order of completionremove default 0’sremove Funding Type from Funding Description panelFunding Requirement button turns yellowauto fill Obligations when 100%add error/warning for values greater than Funding Amount in Obligations/OutlaysInvoice Instruction should be visible for allFRContractDetails error when saving….
- deployed IE8 error handling, but didn’t work. moved the code from angular to html, see if that helps…
- working on FR
- added $timeout to hide Save success message
- buttons are enabled in order of completion
- fixed Funding Requirements showing incomplete when complete
- angular.isBoolean() returns undefined!!! Looks like it’s not implemented yet.
- added second Contract Details flag
- First YES – show Contract Details
- Second NO – set Contract Number to TBD
Phil 3.3.15
8:00 – 4:30SR
- Deploying new FR
- Status report
- Transfer grunt/make to work dev box. Done and working. Looking for something that will allow me to coordinate dependencies like the unix touch. Found it here: http://sourceforge.net/projects/touchforwindows/
- Working on the project makefile.
- Build works and has been cleaned up
- Added clean
- Added grunt-local, which sets up grunt with what’s needed to watch the makefile
- Added grunt-global, which installs the grunt command line globally
- Started on templates for AngularTS modules, directives and controllers.
Dong Shin 03.02.2015
- added IE 8 Error Page for FR app
- IE 11 changed the way it stores UserAgent information, unable to test it on my set up
- two options; dialog or error page?
Phil 3.2.15
8:00 – 6:30 SR
- The world is a sheet of ice. Working from home.
- Was able to update my directory, but the watcher in IntelliJ is based on save actions in the file you’re editing. This is horribly frustrating in that sometimes the whole project needs to compile based on dependencies. The answer for this appears to be Grunt, and it looks like the process is laid out here.
- Timesheets are working!
- Ok, everything below this line is a rant, basically. If you want to know what wound up working, read here.
- Installing Grunt, which has caused IntelliJ to completely freeze “Scanning files to index”. This is really pathetic. Going to go scrape ice for a while and hope that my Xenon 3.3Ghz tower with 8 GB of ram can finish scanning some JavaScript Files. It may be a memory issue. From StackOverflow:
I had the same problem with slowness in IntelliJ 13 after upgrading from 12. What worked for me was editing the idea64.vmoptions in the bin folder and setting the max heap to 8 GB (was 512 MB) and the Max PermGen to at least 1GB (was 300MB).Example below:
-Xms128m
-Xmx8192m
-XX:MaxPermSize=1024mUpon restart it was much faster.
Then again, it may not be. I started to get error messages on the install that had hugely deep paths. A *lot* (30,000 files!) of stuff was getting installed. More than needed. Deleting it all and trying again from outside the IDE. If that doesn’t work, then I’m going to change the watcher so that it compiles all items explicitly.
- Nope, disregard all of the above. The enormous install was because I had mistaken
-
npm install grunt-contrib-watch –save-dev
- from
-
npm install grunt-contrib-watch –save -dev
- when it should have been
npm install grunt-contrib-watch -–save-dev
- You know, this is because all of us developers are all looking for things that work and documenting it just when we get it running. No extensive tests that go along with books, just flaliing and commenting. Anyway, I got grunt to work, and have now run up against some weird typescript problem.
- When you take each individual typescript file and compile it, as the IntelliJ watcher does, I get no errors. Here’s my code files:
tsc --declaration --noImplicitAny --target ES5 --sourcemap classes/WebGlInterfaces.ts tsc --declaration --noImplicitAny --target ES5 --sourcemap classes/WebGlCanvasClasses.ts tsc --declaration --noImplicitAny --target ES5 --sourcemap classes/WebGlComponentClasses.ts tsc --declaration --noImplicitAny --target ES5 --sourcemap controllers/WGLA1_controller.ts tsc --declaration --noImplicitAny --target ES5 --sourcemap directives/WGLA2_directives.ts tsc --declaration --noImplicitAny --target ES5 --sourcemap modules/AppMain.ts
- However, when I compile all on a single line (as Grunt does), I get the following errors:
classes/WebGlCanvasClasses.d.ts(12,11): error TS2300: Duplicate identifier 'StyleElement'. classes/WebGlCanvasClasses.d.ts(29,11): error TS2300: Duplicate identifier 'CanvasBase'. .......... lots more errors................ directives/WGLA2_directives.ts(67,12): error TS2341: Property 'linkFn' is private and only accessible within class 'ngWebgl'. directives/WGLA2_directives.ts(70,11): error TS2341: Property 'myDirective' is private and only accessible within class 'ngWebgl'.
- Because like all modern code it seems, Grunt has a large set of plugins to do the same thing. In this case, we have grunt-typescript, and grunt-ts. Very similar. Only grunt-ts allows you to specify individual compile targets, which is what I need to avoid the compile errors listed above.
- So to get all the pieces working together, first install grunt globally as per here. Once that’s done go to the root of your project directory and type the following:
npm init npm install grunt -–save-dev npm install grunt-ts -–save-dev npm install grunt-contrib-watch -–save-dev
- Once that’s done, you need to create a GruntFile.js. Here’s what works for me:
module.exports = function (grunt) { grunt.loadNpmTasks('grunt-ts'); grunt.loadNpmTasks('grunt-contrib-watch'); grunt.initConfig({ pkg: grunt.file.readJSON('package.json'), ts: { default: { files:[ {src:['classes/WebGlInterfaces.ts'], dest: 'classes/WebGlInterfaces.js'}, {src:['classes/WebGlCanvasClasses.ts'], dest: 'classes/WebGlCanvasClasses.js'}, {src:['classes/WebGlComponentClasses.ts'], dest: 'classes/WebGlComponentClasses.js'}, {src:['controllers/WGLA1_controller.ts'], dest: 'controllers/WGLA1_controller.js'}, {src:['directives/WGLA2_directives.ts'], dest: 'directives/WGLA2_directives.js'}, {src:['modules/AppMain.ts'], dest: 'modules/AppMain.js'} ] }, options : { fast : 'watch', declaration: true, noImplicitAny:true, verbose:true, target: 'es5', sourcemap:true } }, watch: { files: ['**/*.ts', '!**/*.d.ts'], tasks: ['ts'] } }); grunt.registerTask('default', ['watch']); }
- Once that’s done, type ‘grunt’ at the command line and you should get the following:
>grunt Running "watch" task Waiting...
- At this point, a change in any of the ts files will cause all the ts files to compile to their respective .d.ts and .js files. This is better, but I still want dependency chaining. Still looking for that.
Phil 2.27.15
7:30 – 5:30 SR
- So far the only problem with the new FR app seems to be that people want to use old browser versions, so we’ll need to add a browser test and some kind of splash page.
- Tooltips? I wonder if I can use angular.element to make that work?
- Well I spent the whole morning chasing down bugs that turned out to be a bad merge. I think with TypeScript you may have to use the ‘force update’ option and prevent merging altogether. On the plus side, I managed to remove circular references for the CanvasBase and ComponentBase classes by creating a new file for WebGlInterfaces that has the interfaces for both modules. So now at the top of each of the Canvas and Component modules is
/// <reference path="WebGlInterfaces.d.ts" />
and that seems to solve that problem
- Tooltips are now working. Had to write a StyleElement class – it was easier than manipulating the style directly, and this way I was able to use the YUI calls that were in the old code:
export class StyleElement { element:HTMLElement; x:number; y:number; hidden:string; constructor(e:HTMLElement){ this.element = e; this.x = 0; this.y = 0; this.hidden = 'visible'; } get(arg:string):any{ var rval:any = this; return rval[arg]; } getX():number{ return this.x; } getY():number{ return this.y; } setXY(args:number[]){ this.x = args[0]; this.y = args[1]; this.toStyle(); } setHTML(text:string){ this.element.textContent = text; } show():void{ this.hidden = 'visible'; this.toStyle(); } hide():void{ this.hidden = 'hidden'; this.toStyle(); } isHidden():boolean{ return (this.hidden === 'hidden'); } toggleView():void{ if(this.hidden === 'hidden'){ this.hidden = 'visible'; }else{ this.hidden = 'hidden'; } this.toStyle(); } toStyle():void{ var styleStr = 'left: '+this.x+'px; top:'+this.y+'px; visibility: '+this.hidden; this.element.setAttribute("style", styleStr); //console.log(this.element.getAttribute("style")); } } - I am now kind of paranoid about subversion and am now making full backup copies, since I basically had to do that to restore the project after I realized what happened.
- And as I was testing against browsers, I found that tooltips didn’t work right on FF. That led me down a rabbit hole described in more detail in my blog.
Phil 2.26.15
7:30 – 3:30 SR, 3:30 – 4:30(?) All Hands
- Snow. Working from home.
- Getting TypeScript to work
- Installing NodeJS
- Installed node and “File Watchers” plugins
- Settings->Languages and Frameworks->Node.js and NPM->Node interpreter: C:\Program Files\nodejs\node.exe.
- Typescript now works, but I need to download definitelyTyped, for which I need Git – Installed.
- Had to fix the THREE.Mesh d.ts to have the Material be MeshBasicMaterial, which is the default.
- Compiled all the TypeScript files without errors or warnings. THe code is once more running. That only took 2 hours.
- Shoveling snow break.
- Creating a new folder ‘classes’ and moving the TypeScript modules to (CanvasClasses and ComponentClasses) that.
- Going to try two ways of dealing with the canvas and data
- Get a pointer to the WebGlCanvas passed to the controller, where WebGlComponent can be added and manipulated.
- Done (a few times actually). I wound up passing the pointer to a callback function to the WebGlCanvas class that placed itself as the argument and then called the callback. That connects the loop in a nice, optional way. I then tried to have an addCube() method in the controller called, but controllers finish up after directives, I think. So now I’d like to have a way of having the controller call something when it’s ready. That would use the $scope.$on() code, but I’m using the controllerAs pattern , so no default scope. But thanks to this post, I found out how you get at it. Makes good sense too.
- After looking and looking, I could not find a list of Angular creation events. Then I remembered from somewhere (need to find out where) that wrapping items that need to wait for completion can be done by using zero-length timeouts. Tried it out and it works:
private initCanvasCallback = (canvas:WebGlCanvasClasses.CanvasBase) => {
var c:any = canvas;
this.wglCanvas = canvas;
this.myTimeoutService(this.addCube);
};
- I’ll need the timeout function anyway for behaviors calculated in the controller, so it makes sense to have that.
- And that’s a good day done. Tooltips next.
Dong Shin 02.25.2015
- deployed new FR app – no problems, went well.
- looking E2E test for AngulaJS app
- looks like Protractor is the way
- use WebStorm to Protractor
Phil 2.25.15
8:00 – 3:00 SR
- Deployed new FR to test server
- change canvas directive so that it takes a config object that is fed to the initializer method
- Add a model and verify it works inside of linkFn
- Try and break out the model directive – this is turning out to be a problem. The parent scope should come through if I use transclusion, but that causes the linkFn in the component directive to be called before the class is instantiated (how is that possible, btw). So the answer is probably twofold: First, just treat the objects as a data source and not a component directive. Second, go back to some basic directive examples with transclusion, and then build up an example where parent scope dose track, then start adding in JS Objects until things break
- Work on tooltip and label rendering?
Dong Shin 02.25.2015
- working on FR app
- added getFundingRequestByUser method so non-admins cannot see other’s data
- disabled Obligation/Outlay when Funding Amount is null
Phil 2.24.15
8:00 – 5:30 SR
- Looks like the 4th is the good day for the meeting. Sent a note to AJ to see if that works for him and where the meeting is.
- Got most of the WebGLCanvas ported over and working. Timeouts are handled completely differently. I also had a weird experience being unable to set clientHeight and clientWidth without doing it in CSS. threejs.OrbitControls needs that otherwise things go to infinity (and beyond). Bless the FF debugger!
- Need to get tooltips working next
Dong Shin 02.23.2015
- working on FR app
- added delete Funding Request
- added foriegn keys to tables to cascade delete Funding Requests
- fr_contract_details, fr_contract_labors, fr_equipments_materials, fr_government_labors, fr_travels,
- funding_request_pocs – need special care since it’s many to many relation ( key should not be unique!)
- special cared needed for MySQL Boolean types in RowMapper since null defaults to false!
- fundingRequest.setTravelFlag(rs.getObject(“travel_flag”) == null ? null : rs.getBoolean(“travel_flag”));

You must be logged in to post a comment.