Obviously after people are able to view reports they are going to want to edit them so I started working on an editor strategy. Too keep in line with architecture, report sections are going to be individually editable. So when constructing a report, the user starts by creating the outline and inserting sections (as you should when creating any document), then fill it in one section at a time. Mousing over a section turns on an ‘edit’ button. Clicking the edit button will bring up the appropriate UI for the component. The first one will be a very simple HTML editor for editing text. Others will be needed for changing image source / size as well as constructing tables and inserting data.
Category Archives: Mike
Mike 4.20.2011
Resolved my desktop import / export issue. It was basically a race condition problem when reading in the configuration. The desktop would start building itself before the entire configuration file was read in causing null pointer exceptions. So if I read the configuration in backwards it works just fine.
Spoke with Brian a little about talking about thinking about speaking about setting up a meeting to talk about a possible meeting about showing a demo to someone, again. Went back to check on my stand alone demo that doesn’t require a server to run. Fixed a few broken issues:
- First I pulled all the code out to a separate project to avoid breaking the real one and having this aging issue again.
- Resolved an issue that was preventing the commenting system from coming up all without a server connection.
- Got the sample quad chart to come up again and provide link button back to the original report.
- Fixed the old navigation system so the report opens and scrolls to whatever part of the outline you click on.
Demo should be good to go.
Mike 4.18.2011
Have a desktop loading architecture working for the most part. I can add a new instance of an application to the existing desktop by requesting one through the DesktopManager. I then track changes (position, size, etc.) of that window and save the changes as they happen. I can then output that information in an xml format that is I can later read back in to desktop objects… mostly. I’m currently stuck on a kink of parsing embedded objects. They both get created but the reference from the parent to the child is set to null so instead of having embedded objects I have something more like a flat array. Once that is sorted out I should be able to load back in old desktops by copying / pasting XML. The next logical step would be saving that information to a database.
Mike 4.12.2011
- Finished the conversation / comment UI which is based primarily on the discussion UI in google docs.
- Tied it in to the reporting tool in a fairly basic way. Users can now comment / discuss on ReportNodes for now. Commenting on images, tables, sections of text and other things will come later as the basic functionality is in.
- Commented on a few sections in a report, successfully saved it off and loaded it back up.
Mike 4.7.2011
Working on the commenting system
- Have conversations (string of comments relating to a single thing) and comments storing in the database
- Opening a report pulls the corresponding comments from the database
- working on the GUI for creating, viewing and editing comments within a report
- Helped buy and install 2 TVs
Mike 4.4.2011
- Got tables within reports loading and displaying data
- Started looking in to comment systems and looked at both Microsoft Word and Google Docs
Microsoft Word’s version is pretty clunky and appears to be a single anchor at either the start or end of the comment with a character length associated with it. Adding to deleting text within the comment simply changes the character length counter. However, deleting the single anchor point remove the entire comment permanently.
Google Docs has a very nice comment system. Comments appear to be stored as references from the document instead of within the document itself. An array of begin and end anchors are stored for each comment so comments can span several words, skip some, then include more. Comments can also be replied to making them more of a dialog or blog for collaborative work. When a comment is resolved, it’s not deleted but simply removed from view. A full history of comments and dialogs are accessible from within the document’s menus.
Out of curiosity I contacted Google’s sales department to see if Google Docs could be licensed and deployed on a closed network. The definitive answer is no, but they do offer “secure government” solutions that are HIPAA and FERPA certified but still require access to the internetz.
Mike 3.31.2011
- Got the image element working within reports
- Got the navigation tree and scroll to section functionality working
- Expand all and collapse all buttons are now working
- Started looking at deep linking and url links within reports…
From within a report a user will be able to link to both external websites and link internal components such as opening a different report through a text link. Users will also be able to link to specific reports / saved desktops from external sources using deep linking.
Looked in the to the ability to use hrefs from within flex components. Link coloring is defined from within style sheets and without any definitions they will blend in with the rest of the text. It is also possible to modify the href url so a flex event is thrown instead of immediately opening a new webpage. This will allow me fine grain control over how links in text behave. More details are listed here.
Mike 3.30.2011
- Continuing to work on making the the Reporting UI work with data from the database
- Have a full text report loading from the database and displaying through a ‘File > Open…’ menu system
- Got the navigation tree working for the report (minus the scroll to selection bit)
Still need to add the following for it to be up to the prototype’s perceived capability
- Tables
- Scroll to navigation
- Document search
- Comments integration
Mike 3.24.2011
Continuing the work on storing reports information in a database
- Since reports need owners I spent a little time making a User object and a service for handling users including a log-in screen with password changing, it’s pretty much ready for use minus moving it to some shared server project and mavenizing any required imports
- Now able to create and stored reports from Flex to MySQL (or pretty much any database) from code on the Flex side, there’s currently no GUI support for creating reports
The basic format I have for storing reports is:
- A Report object has an id, an owner (User), an xml string storing layout information, and a collections of ReportSections. The xml layout simply defines how the sections are laid out and relative to each other and any text headers, more could be added later.
- A ReportSection has an id, an owner (possibly different from the Report owner), a type string, and a data string, as well as references to any report which currently contains it. The idea is a ReportSection can be almost anything (some text, a data table, a chart, an images, etc.), so we’ll store a string defining it that the UI can use to figure out what to display. It’s data string may be some html text, a url for an image, or some xml data for a table.
- Finally, Comments have also been added to the database. Currently a Comment has an id, a date created, an owner, and text. The plan is to have Comments referenced from what they are commenting on. So a user may comment on an image in a report; that ReportSection would have references to the comments made on it and could be loaded by id.
Next on the todo list:
- Get a report loaded from the display and displayed in the framework, currently I’ve only looked at report information in the Flex debugger
- Add support for tables, currently only text sections are being stored
- Add support for images
- Get the SCT report in to the database
- Test this thing out by putting the FGM website in it
That should keep me busy for awhile
Mike 3.15.2011
- Created entities and remote services for storing and retrieving Reports, TextSections of reports, and user Comments.
- Tested the services from within java and made the sure column/table mappings worked correctly.
- Currently a report consists of an owner, an xml configuration, and a collection of TextSection references
- The xml configuration defines the layout of the report and section headers and also contains references to its parts
- The TextSections define blocks of text in the report, they are stored as strings but can be HTML, TFL, or whatever format we decide to go with
- I’ve decided the most flexible way to incorporate Comments in the report is the way Microsoft Word does it: create a custom tag within the text that references the Comment object. That way users can comment on a word, a sentence, and entire paragraph, whatever. And since comments are stored a separate objects in the database, they can be also used to reference other objects such as tables or charts. Comments do not currently have references to what they are about so that may be an issue.
Mike 3.14.2011
- Spent awhile moving the data from Alan’s tables in Microsoft word to the SCT flash demo project, the first report is now complete and probably ready to demo
- Started working on a hard-typed database scheme to quickly get out something with users, documents, and comments all being persisted. it should be easy later on to move to a dynamic system.
Mike 3.11.2011
Spent the day importing Alan’s report v10.2 in to my hardcoded data model. All the text is in plus the framework of the tables. All that’s left is the information populating the tables which Kristi is moving to excel for me.
Mike 3.8.2011
Thanks for Phil’s suggestion, it should be easy to demo using a jetty instance run from a CD. For now all the data services return hard-coded values so a database connection won’t be needed yet. I should probably still test putting this on a CD and logging in to a guest account with minimal privileges and see if it works.
- Got the log-in screen and remote service working for the WebDesk application.
- Created a module project containing the SCT Report demo and loaded it in to WebDesk
- Ran in to an issue with the AdvancedDataGrids in the reports, some of their required parts were not being loaded, got around it by including an invisible AdvancedDataGrid in WebDesk to be sure all required classes are loaded
- Got the hardcoded Quad chart working in the webdesk
Next will be getting the commenting stuff to work.
Mike 3.1.2011
I figured out how to intercept the property assignments between java objects and when Hibernate places them in the database. Combining this with the ability to create run-time Hibernate table mappings, I can take pretty much any object or structure of objects and place them in to a database.
Mike 2.28.2011
More work on the data system
- issue with reserved column names, dealt with it by appending underscores to the beginning and end of each column name mapping
- issue with longs strings, first tried clobs for any string > 250 in length but that involved casting back and forth so instead put in some logic to double the available length every time it doesn’t fit starting at 255, then 511, 1023 etc.
- Successfully saving strings, integers, doubles, and booleans. Now need to save references to other objects.
I had to share this line of code from a Hibernate java class:
private static class IncrediblySillyJpaMapsIdMappedIdentifierValueMarshaller implements MappedIdentifierValueMarshaller{

You must be logged in to post a comment.