Dan's Green Shoes

Got my green shoes on!


5 Comments

HTML JavaScript Data Grids

Line-of-Business applications tend to have data grids and ProModel products are no exception.  Our users have come to expect some rich behaviors that are not inherit in your basic HTML table element.  ProModel recently ranked the most popular HTML/JavaScript data grids out there right now.  Below you will find our summary.  Please note that many “Yes” and/or “No” values are hyperlinks into an example if we could find one.

We chose jxqGrid.  If you see a data grid we missed, please let me know which one.

Feature Rankings

Got To Have It Features

  1. Sorting
  2. Inline Editing
  3. Column Resizing
  4. Cell Selection
  5. Cell copy/paste
  6. Range copy/paste “Update”
GRID Sorting Inline Editing Column Resizing Cell Selection Cell copy/paste Range copy/paste
jqxGrid Yes Yes Yes Yes Yes Yes
jqGrid Yes Yes   (but not great) Yes No No No
SlickGrid Yes Yes   (but not great) Yes Yes Yes Yes
ParameterQuery Yes Yes (but not great) Yes Yes No No
Handontable Yes Yes Yes (but buggy) Yes Yes Yes
wijmo (ComponentOne) Yes Yes Yes Yes No No
KendoUI (Telerik) Yes Partial Yes Yes No No
koGrid Yes No Yes No No No
dhtmlxGrid Yes Yes Yes Yes No No
jTable Yes No Yes No No No
Sencha Ext JS Yes Yes Yes Partial No No
IgniteUI (Infragistics) Yes Partial Yes Yes No No
Syncfusion Yes Yes Yes No No No
WebGrid (Intersoft Solutions) Yes Yes Yes Yes No No

Love It Features

  1. Row Selection
  2. Filtering
  3. Flood Fill
  4. Virtualizing
  5. Range copy/paste “Adds”
  6. Knockout/Data Integration
GRID Row Selection Filtering Flood Fill Virtualizing Knockout/Data   Integration
jqxGrid Yes Yes No Partial Can   bind to pretty much anything..   Can   use KO as well
jqGrid Yes Yes   – Search No Yes MVC
SlickGrid No Yes – Search Yes Yes Seems to be kinda   “hard-wired”
ParameterQuery Yes Yes – Search No Yes Doesn’t   support KO
Handontable No No Yes No Not   sure about KO
wijmo   (ComponentOne) Yes Yes –   Filter Row No No Seems   you can use KO
KendoUI (Telerik) Yes Yes No Yes They   kinda have their own framework and server wrappers
koGrid Yes No No No Seems   you can use KO
dhtmlxGrid Yes Yes   – Search No Yes Doesn’t   support KO
jTable Yes Yes – Search No No Not   sure about KO
Sencha Ext JS Yes Yes No Yes Not   sure about KO
IgniteUI (Infragistics) Yes Yes No Yes KO   support
Syncfusion Yes Yes No Yes Not   sure about KO
WebGrid (Intersoft Solutions) Yes Yes No Yes Not   sure about KO

Like It Features

  1. Moving Rows
  2. Frozen Columns
  3. Col Selection
  4. Grouping
  5. Merged Column Headers
  6. Direct Breeze.js integration
  7. Column Reorder
GRID Frozen Columns Grouping Merged Column   Headers Column Reorder Excel Like Direct Breeze.js   integration
jqxGrid Yes Yes No Yes Yes No (refer to   notes for further links)
jqGrid Yes Yes   – but not user Yes Yes No No
SlickGrid No No No Yes Partial No
ParameterQuery Yes No Yes No No No
Handontable No No No Yes (but buggy) Yes No
wijmo   (ComponentOne) No Yes Yes Yes No No
KendoUI (Telerik) No No No Yes No Yes,   but a hack
koGrid No Yes No Yes No No
dhtmlxGrid Yes No No Yes No No
jTable No No No No No No
Sencha Ext JS Yes Yes   – (but buggy) Yes Yes No No
IgniteUI (Infragistics) No Yes Yes Yes No No
Syncfusion Yes Yes Yes Yes No No
WebGrid (Intersoft Solutions) Yes Yes Yes Yes No No


4 Comments

ASP.Net MVC 4 SPA navigation with Sammy.js

I am learning from John Papa’s “Single Page Apps with HTML5, Web API, Knockout and jQuery” on Pluralsight. The course outlines building an application called “Code Camper”.  The “Code Camper” sample is very effective at showing an end to end SPA design.  It leverages a bunch of open source libraries and can be a lot to take in all at once.  One of the libraries used is called Sammy.js.  I decided it would beneficial to focus on just Sammy.js library which is the focus of this blog post.

If you are like me then you are also new to Single-Page Applications.  I find it helpful to start with a simple definition.  Wikipedia defines SPA as a “web application…that fits on a single web page with the goal of providing a more fluid user experience akin to a desktop application.  In an SPA, either all necessary code – HTML, JavaScript, and CSS – is retrieved with a single page load, or partial changes are performed loading new code on demand from the web server, usually driven by user actions.” Continue reading

GamifyMockup_thumb.png


Leave a comment

Building a LOB Gamification Service Administration Website: UI Mockup

  1. Introduction
  2. Simulation
  3. Domain Model
  4. Server Data Services
  5. Web API Crud

I have had the pleasure of working with some pretty talented U.I. developers.  There are some people that can look at a screen 10 feet away and notice a couple of borders are not lined up properly. ProModel refers to these folks as having the “pixel eye”.  I do not have the pixel eye unfortunately.  I will say however with the increased emphasis on usability and design that I am starting to be more opinionated in this area.

All along I have had a mental concept of what the administrative website would look like.  I used Balsamic Mockups and produced the following image.

GamifyMockup

This is not going to win any awards but it at least gives me a target.  ProModel uses Pivotal Tracker and I have always been impressed with the usability of their website.  If you look at my design, I was definitely inspired by Pivotal Tracker Smile.

The workflow begins with the user administrator signing in.  In my next blog post in this series, i will discuss how to register and authenticate new administrators.


2 Comments

LOB Gamification Service Admin Website: Data Services

At the end of the last post, I had a solution with multiple projects. One of the projects contained the POCO domain model and another project leveraged EF Code First to read/write the domain model to a dynamically created SQL Server database. The goal of this post is to use ASP.NET MVC Web API to surface database data to the client browser.

Most of my career I have spent on the server side of things moving data between layers. I have been part of teams where we created our own application infrastructure as well as a user of IdeaBlade’s DevForce, WCF RIA Services, CSLA, etc.

In the last year, I have had the pleasure of learning from Jon Sarker who is a senior software architect at ProModel. Jon has helped ProModel streamline moving data efficiently and quickly through the use of enterprise design patterns such as Repositories, Commanding, Factories (for repos and commands in particular), DTOs, Request/Response objects, etc. Once you understand and start using these data design patterns, everything seems so modular, clean and maintainable.

As I embarked on learning the new world of HTML5, JavaScript and Web API, I figured the learning materiel on the web would be the equivalent of showing me how to drag and drop a datasource control. That is why I was so blown away at the depth of John Papa’s course “Single Page Apps with HTML5, Web API, Knockout and jQuery”. From John’s blog, the SPA has lots of patterns “including the Repository Pattern (to expose the data in a consistent way), Unit of Work Pattern (to decouple the Web API from the lower layers and to aggregate the repositories), the Factory pattern (for creating repositories), and Single Responsibility Principle (SRP). The SRP is all throughout the client and server, in fact. Simply put, the patterns help make the app easier to debug, scale and maintain.” Continue reading

ClassDiagram


1 Comment

LOB Gamification Service Admin Website: Domain Model

In the last post about the LOB Gamification Service, the explanation of the video is a great starting point for defining the domain model I will be using.

“Every time the user crossed a lightning bolt Action, the user receives some points toward a Proficiency. A single Action might give points to multiple Proficiencies.  A single Proficiency can earn points through various ActionsProficiencies have different Levels.  As users earn points within a Proficiency, the user “levels up” that Proficiency.  Leveling up typically gives badges and other rewards.”

The words in bold are candidates for objects in the domain model.  Wikipedia defines Domain Model as “The domain model is created in order to represent the vocabulary and key concepts of the problem domain. The domain model also identifies the relationships among all the entities within the scope of the problem domain, and commonly identifies their attributes.”

Continue reading


4 Comments

HTML JavaScript Gantt libraries

I am working on a project at ProModel that requires a Gantt visualization of data using open web standards.   I thought it would be valuable to share my list of HTML JavaScript controls.  If I am missing anything, please reply and let my team know!

Gantt Component Name Online Example
Teamwork Gantt http://gantt.twproject.com/distrib/gantt.html
Ext Gantt http://www.bryntum.com/examples/gantt-latest/examples/advanced/advanced.html
dhtmlxGantt http://dhtmlx.com/docs/products/dhtmlxGantt/index.shtml
dojox.gantt http://archive.dojotoolkit.org/nightly/dojotoolkit/dojox/gantt/tests/test_Gantt.html
DevExpress MVC Extensions http://mvc.devexpress.com/Chart/GanttViews
jQuery.Gantt http://taitems.github.com/jQuery.Gantt/
http://www.maro-z.com/examples/jquery.gantt/
VARCHART Xgantt http://www.netronic.com/gantt/gantt-software.html?gclid=CPX5t_jI77MCFc5cMgodHxsAdg
JS Gantt http://www.jsgantt.com/
RadiantQ http://demos.radiantq.com/jQueryGanttDemo/Demo.htm
DlhSoft Gantt Chart Web Library http://dlhsoft.com/GanttChartWebLibrary/Demo/MainWebForm.aspx
DayPilot.org www.DayPilot.org
EJS TreeGrid http://www.tgantt.com/treegrid/www/Gantt.html#’RunExample
Fusion Charts http://www.fusioncharts.com/goodies/fusioncharts-free/chart-gallery/show.asp?id=44
PlexityHide GTP.NET http://plexityhide.com/?page_id=33
Rgraph http://hacksaw.mmto.arizona.edu/src/RGraph_2010-03-27-stable/RGraph/examples/gantt.html
Sunflower http://www.51diaodu.cn/sfgantt/examples/SFProject/track.htm


2 Comments

Building a LOB Gamification Service Administration Website: Simulation

Welcome back to the LOB Gamification Series.  The previous post is Part 1.

ProModel has a portfolio of LOB enterprise software and I thought it would be interesting to explain gamification by looking at integrating gamification into the ProModel LOB application.

Below you see a Microsoft Visio diagram of using ProModel.

As you can see in the diagram, users begin by first launching the application.  The next step the user can either create a new model (document) or open an existing model.   The details of the steps are not important and one can easily substitute another process diagram from another software product.

The flow a user takes through a product is dependent on their rights and roles within the system.  Enterprise modeling using ProModel might have roles such as Model Builder, Data Analyst, Scenario Builder, Report Creator, etc.

The more users use the software, the more proficient they become at certain tasks within the software.

You will notice a lightning bolt on several tasks within the diagram.

The lightning bolts represent Gamification Actions place on a software feature. I defined these Gamification Actions to help me quantify:

  • Who my most proficient users of this feature are.
  • How often users use this feature.
  • Encouraging users to use a feature.

So let’s say we have 3 users:  Rockford, Fabio and myself.  Let’s simulate these 3 users using ProModel simulation software.  It is sort of like pointing a mirror at a mirror….its a simulation of a simulation :-)

The video shows the Visio diagram being brought to life by Process Simulator.   I coded in different behaviors for each of the 3 users.  Rockford and I were modeled as “Model Builders” and Fabio was coded as a “Report Viewer”.  I also coded in the probability of a model needing resources or external files.

Every time the user crossed a lightning bolt Action, the user received some points toward a Proficiency. A single Action might give points to multiple Proficiencies.  A single Proficiency can earn points through various ActionsProficiencies have different Levels.  As users earn points within a Proficiency, the user “levels up” that Proficiency.  Leveling up typically gives badges and other rewards.

I have added a Proficiency Leaderboard showing the points for each users. Leaderboards create a hopefully healthy competition and encourage the user to use certain features.  New users might reach out to a highly proficient user for guidance or help.

Users should be able to drill into a Proficiency and see a list of the Actions that earn points.  Each Action could have context sensitive help as well as video demonstrations.  I feel this could be a far superior way of training users.

In the next part within this series, I will finally get to some coding examples followed by some UI mockups.

Follow

Get every new post delivered to your Inbox.

Join 446 other followers