Category Archives: Development

Phil 3.26.15

8:00 – 4:00 SR

  • Tested threejs on target browsers. The hardware acceleration is iffy, but the software renderer and the raytracer work fine
  • Deployed Dong’s FR fixes
  • Working on splitting the chart elements into their own module.
  • Argh! Fat arrow functions can’t inherit in TypeScript! Thinking about making a mapping table? Something like
    • fooPtr = (var:number):void =>{…};
    • fooFn(var:number):void{fooPtr(var);}
    • ????
  • Set up and implemented an interface for calculating behaviors, which works nicely:
  • public behavior = (dClock:number, elapsed:number):void => {
       var rb = this.wglCanvas;
       var ci:IChartElement;
       var i:number = 0;
       if (rb) {
          rb.dprint("Hello controller - sin(elapsed) = " + Math.sin(elapsed).toFixed(2));
          for (i = 0; i < this.chartElements.length; i++) {
             ci = this.chartElements[i];
             ci.setZOffset(Math.sin(elapsed + i));
             ci.behavior(dClock, elapsed);
          }
       }
    };

Phil 3.25.15

8:00 – 5:00 SR

  • Set up Mark’s accounts
  • Set up an admin account for our tester. Not sure if that’s actually needed?
  • Brought over the latest and greatest for Bill to scan. Should be ready for testing tomorrow.
  • Finish integrating Chartinfo class into testbed. Done, but more of an adventure than I was expecting. First, my development box began acting weird (fan noises, flickering graphics, slow performance). Then it BSOD’d. When I finally got it back up, the debugger kept on getting confused about comments. Once that was sorted, I couldn’t get picking to work on area charts, even though it worked fine for everything else. That traced back to a null value for the component name, which is an explicit test I run to manage tooltips. So once the name from the ChartInfo item was loaded into the glComponent, everything began working correctly. Sheesh.
  • Tried to get my laptop again and also a replacement workstation, since this one is now suspect.
  • Running CC

Phil 3.18.15

8:00 – 4:00 SR

  • No problems with the new FR. Testing to begin Friday?
  • Need to look into JIT manufacturing process control as possible way of managing labs
  • The current goal is to see how trustworthy labs are WRT spending their funds to target. It turns out, I have an equation for that 🙂
  • Added behavior callback to CanvasClasses and ComponentClasses. It also seems to have fixed my weird ts error in Webstorm.
    • Tested and working.
  • Adding tooltip data points to track the top line of the chart, including when the chart is animating. – done

Progress for today:

nurb-ish

Phil 3.16.15

8:00 – 5:00 SR

  • deployed new FR. Still tweaking.
  • Continuing with charts. My end triangles are not drawing properly yet. D’oh! Stepping by 1 rather than 2 for a triangle strip. And the backface is backward. Both fixed.
  • Adding a cylindrical z component to the chart. Want to compare this to a bevel
    • Spent too much time on this – projection of a cylinder onto a plane is y = sqrt(r*r – x*x)
  • Will probably go for a spherical projection with bevels (z = sqrt(r*r – x*x -y*y)). Working on procedural generation of arbitrary meshes. Done!

nurb-ish

Phil 3.13.15

8:30 – 4:00 SR

  • Create Capability by appropriation chart for testing
  • Adding Apache POI to the JavaUtils project. Boy, that turned out odd. The JarFileContainer project hadn’t been checked into SVN yet, so after adding POI11 to the jar file, I did. It uploaded correctly, but when trying to sunchronize the directory, SVN decided that JarFileContainer needed THE ENTIRE Java_Folders DIRECTORY. Which is completely insane. Wound up uploading manually. Seems to be working now.
  • Built a fake data generator and populated the spending_test table for charting.
  • Starting on building the area chart component. Got a simple mesh built. Good start.

Phil 3.12.15

8:00 – 6:00

  • Deployed new FR and worked with the DB
  • Added SW rendering as a selectable option
  • Added highlighting and selecting to Canvas and Components
  • Discovered how to cast in TypeScript. Note that this is only for compile phase:
    var m:THREE.MeshPhongMaterial = <THREE.MeshPhongMaterial>obj3d.material;
  • Tested highlighting in 2d and 3D. Discovered a few use cases where the selected model can get set to null while manipulating the eyepoint and had to fix those.
  • Was going to deploy to my server for testing, but I realized this app needs a database. Started the process, but now it’s got to cook for a while.
  • Lenny wants spreadsheet export, possibly with formulas.
    • Added capability to DbTypedTable to work with multiple sheets.

Phil 3.11.15

8:00 – 4:00 SR

  • Having a bunch of issues with the on site Firefox. WebGl was working but the browser would black out other screens. Now that’s fixed, and WebGL won’t run.
  • Added xcopy . \xampp\htdocs\experiments\WglCharts1 /s /d /y /exclude:excludeFile to the Makefile as the deploy: task. Now all new files are uploaded to the apache directory for testing as part of the build.
  • Need to implement software rendering fallback – done. Had to add common methods/vars (setClearColor(), autoClear)
  • Need to get 2D running – done
  • Got Lenny’s initial chart. It’s capability by appropriation, with the PMAs and FACTS as bars with Outlay goals and Planned outlays as shaded areas. Probably a rolling six month window.

Phil 3.10.15

8:00 – 4:00 SR

  • Wound up passing a callback function from the glController into the queryController so that the data array that’s used to create shapes is called at the end of the retrieval process. Communication with the queryController should be able to go through bound variables?
  • And in case that doesn’t work. Here’s a good source for communication between Angular components.

Phil 3.9.15

8:00 – 4:00 SR

  • Deployed the new FR. Progress, but still not there yet.
  • FF still broken
  • Still no keys for Webstorm
  • Copying over work from home.
  • Started to integrate the graphics and query apps under the assumption that multiple controllers can work and play well together.
  • Wound up passing a callback function from the glController into the queryController so that the data array that’s used to create shapes is called at the end of the retrieval process. Communication with the queryController should be able to go through bound variables?
  • And in case that doesn’t work. Here’s a good source for communication between Angular components.

Phil 3.6.15

7:30 – 3:30 SR

  • Surprisingly, the 10″ of snow that fell yesterday is still there.
  • Setting up the charting project. I’m going to leave AngularThreeTS untouched and just copy it over. I’m expecting the WebGL classes to still change while I work on these components. Once done though, it will go into the libraries with the WebGL directive? Not sure about that yet…
  • A really nice explanation of SQL joins.\
  • Working on the classes to return typed data from queries to the charts. Can’t do trending without knowing what’s a date. Updated FileUtils DbTypedTable with toString() and toExcel()
  • Copied over the AngularThreeTS directory. Now I need to pull in the query parts from iRevdb.
  • Verified that CanvasBase.removeModel still works.
  • Added a minimum set of query capability. Right now, it’s in a separate htmls page, but I should be able to integrate pretty soon.

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

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.

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.

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=1024m
    Upon 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.