Quantcast
Channel: Infragistics Community
Viewing all 2197 articles
Browse latest View live

1 Billion Data Values in a Data Chart

$
0
0

It's no secret that you can provide many XamDataChart series with millions of records and still have smooth interactive panning and zooming. XamDataChart is designed from the ground up to not touch data that it doesn't need for the visual, and to not generate geometry that is needlessly more complex than your eye can perceive.

Nevertheless, XamDataChart does require that you pass it an enumerable that contains all the data for display, and its data source does cache various information about the data there. So as the number of points you wish to display increases, so does the memory utilization, and eventually even linear time scans through the data can be a problem if you want to maintain interactive performance.

So, what if we want to display extreme amounts of data? 100 million values? 1 Billion values? Well, remember how I said above that most datachart series don't try to touch data values that they don't need? When you are fully zoomed out, the chart must touch every point to get a shape of the line that it can then adapt to the physical size of the plotting area, but when you are zoomed in to a particular area, the chart can efficiently determine what range of data it needs to examine to display just that region.

If we were to load 1 billion data points into the chart and start very zoomed in, then the chart would only be dealing with small amounts of that data at a time, but there are two issues:

  • Even packed tightly on disk, 1 billion date time values and 1 billion double precision floating points take up roughly 1.5 gigabytes on disk. You don't really want to load that all into memory.
  • If you were to zoom out. The chart would still need to scan all the data values to get the shape of the line.

So, what are our options here? Well, you could try not touching all the data when fully zoomed out. But that's cheating. If we were to use a regular sampling algorithm and its frequency happened to match up with some underlying frequency in the data, we'd get aliasing effects that would destroy the accuracy of the representation. Even a random sampling algorithm may miss out on outlier values that should be visible in the plot.

What if our data source knew the zoom level of the chart and could provide different data depending on the zoom level? What if we pre-calculated multiple resolutions of the data source where we gather the min/max over regions of the data and store the result as progressively smaller files? If we do this, then, the data source, cognizant of the physical dimensions of the chart and the current zoom level, can pick the appropriate resolution of the data so that it can be displayed with high fidelity, but not overload the computing power of the machine.

And as for memory? If the data source tries to keep as much on disk as possible, and skip around inside files, it might be a bit slower than our default data source, but should be able, potentially, to handle as much data as you can store on your disk platters.

Considering the above, I decided to try an experiment:

  • I generated 1 billion random data values.
  • I wrote a utility to successively reduce the number of data values by 2, storing min/max information for each range being reduced to a single point.
  • I ran that utility on the billion data values. This took some time.
  • I enabled our chart to be able to use an alternate data source adapter.
  • I implemented an adapter that does roughly the above.

Here's what the generated data file looks like on disk:

And here are what the multi resolution versions look like:

That's a lot of data!

So, the chart still thinks its talking to the usual data source adapter, but under the covers this extreme data source is sliding data in and out like a chameleon, caching some things, but trying not to put too much in memory. As a result you can interactively zoom and pan through 1 BILLION data values:

So, does this seem interesting? Are 1 billion data values more than you need in a chart? Let me know your thoughts.

This kind of approach has some other interesting aspects as well, even with less extreme amounts of data values. We could use it to make a chart consume less memory on a mobile device with more severe memory constraints, or we could adapt it to read multi-resolution data over a network, to display lots of data in a chart without having to download it over the wire up front. Let me know if any of that sounds appealing.

Also, I had some trouble locating a good, free, time series data source with this kind of extreme data amount for testing, so eventually I just decided to generate a random stream of data, if anyone knows a good data source they'd like me to try, let me know.

-Graham


Designing Useful, Usable and Innovative EHR Systems

$
0
0

Electronic Health Record (EHR) Systems

Developed and honed over generations, the medical profession has created processes, procedures and physical artifacts that serve healthcare professionals and their patients well. Yes, there are process improvements to be had. Yes, there are inefficiencies inherent in the overlap between healthcare providers and the healthcare industry. However, improving the digital systems that support the medical profession is not the primary problem. Usability, while problematic, is not the primary problem either. The problem is the imposition of poorly designed technological solutions to replace the medical profession’s processes, procedures and physical artifacts.

The cost of designing, developing, purchasing and installing Electronic Health Record (EHR) systems, plus the price of “training” health care professionals to change their behaviors in order to adapt to their new electronic systems, amounts to many millions of dollars. In response, medical task forces, healthcare professionals and reporters are sounding the alarm that these new systems are difficult to use, decrease productivity and negatively impact the quality of patient care.

example EHR screenshot     example EHR screenshot
(photo courtesy of workflow.com) (photo courtesy of emr-ehrs.com)

Usability is Not the Answer

To address these issues, the healthcare industry has focused on the need to identify, employ and measure the usability of these systems. These are laudable and necessary goals but, in the end, they are insufficient. They place the needs of users far too late in the process and do not address the primary issue—poor design. EHR systems informed by usability principles will help ensure that the user-system interaction follows accepted patterns. A rating system informed by usability principles can help healthcare institutions differentiate between systems that meet basic requirements and systems that do not. However, applying usability during the development or selection processes is insufficient to guarantee a useful system once it is deployed.

Usable and useful mean very different things. An application or feature can be considered “usable” if users can successfully and quickly complete the task for which it was created. It’s important to keep in mind that usability is, by definition, a post hoc test. Usability does not influence the gathering of requirements. It does not define the scope of the system. It does not provide a pathway to innovation.  It is absolutely possible for an application to be usable but not innovative, inspiring, beautiful, lasting or useful.

Usability is necessary for good design but it is not sufficient.

Attempting to address low adoption rates and dissatisfaction by invoking usability is akin to treating the symptoms of a disease rather than its cause. Usefulness, usability, flexibility, task support and user acceptance are the result of a formalized design process. It is the absence of this process, not the absence of an acceptable usability score that limits adoption of EHR and other healthcare systems. We must look at how healthcare systems are designed if we are to ensure that the systems we implement in our hospitals, clinics and physicians’ offices are ultimately both usable and useful.

EHRs can progress beyond ticking features off a checklist. Data can be explicitly translated into information and presented to users in ways that support their decisions and actions while freeing resources (attentional and financial) to be spent on problems previously hidden or untouched. Disparate systems can be coordinated and aligned. Processes and even entire “businesses” can be reformulated to serve user needs as well as user wants.

How? Follow a design process.


Kevin Richardson has been working in the area of user experience for over 20 years. With an advanced degree in Cognitive Psychology, he has experience across business verticals in the fields of research, evaluation, design and management of innovative, user-centered solutions.

Kevin’s experience includes web sites, portals and dashboards, enterprise software and custom business applications for medical, pharmaceutical, communications, entertainment, energy, transportation and government users.

On the weekends, you can find Kevin on his motorcycle, riding (or thinking about riding) for Infragistics Racing at a number of different racetracks on the East coast.

IG Racing

New Windows Forms Radial Menu Control

$
0
0

Introducing the Infragistics Radial Menu (available in NetAdvantage 2013 For WinForms Volume 2).

You can download a CTP of the Radial Menu component, along with a sample project here.

Inspired by the radial menu in Microsoft OneNoteMx, the Infragistics UltraRadialMenu component allows you to quickly and easily provide a visually pleasing, easy-to-use menu for both mouse and touch systems.


 

Tool Types

In addition to simple button tools (which can be checkable) UltraRadialMenu has support for a variety of tools types such as…

Color Tools– the robust Radial Menu designer allows you to instantly create a categorized color tree just like OneNote Mx with just a few clicks of the mouse.


     

Or a simple Roy G. Biv color chooser…



 
Or, you can use any combination of ColorTools and ColorWellTools to create your own.

Numeric Tools– The Numeric and NumericGauge tools allow your user to easily choose a numeric value, such as a font size.


 
List / FontNameList Tool– With the List Tool or FontNameList , you can easily provide your user with a list of options to choose from:


 
Styling

Of course, UltraRadialMenu supports all the features of the Infragistics Winforms Presentation Layer framework. Every element is full stylable either in code or using AppStylist.


   
   

Adjust the number of wedges, rotation, and Size of the menu…


You can download a CTP of the UltraRadialMenu component below.

Cross Platform Mobile App Development

$
0
0

Android and iOS have become the gold standard of mobile operating systems, offering applications tailored for personal and corporate use. Developers considering creating applications for both platforms can experience many benefits and some challenges along the way.

TechRepublic's Joseph Parker highlighted the pros and cons of mobile application development for both Android and iOS. According to Parker, cross-development solutions help developers improve speed and reduce costs because these tools can create apps faster than other methods.

Developers who create applications for Android and iOS can reuse this code for future projects, again speeding up the development process, Parker explained.

In addition to the cost and time savings of cross-platform applications, these tools are also very easy to use. Parker noted that such apps are designed on scripting languages such as JavaScript, CSS and HTML, making it easy for these apps to transition from the Internet to mobile devices.

Cloud computing is influencing many aspects of how companies operate, allowing firms to take advantage of the technology's scalability, affordability and functionality. The cloud is also having a positive effect on mobile application development. Parker noted that cross-platform tools integrated easily with cloud-based services and apps, making them that much more useful.

The Issues


There are some challenges associated with the use of cross-platform tools, according to Parker. Operating systems are often updated, and when Apple, Google or Microsoft release such patches, applications must follow suit. Another potential problem with cross-platform development involves longer rendering times because the code must be finished for each operating system.

Parker added that some solutions are restrictive because they require developers to use prescribed functions that potentially limit the software. In a "worst-case scenario," developers may have to learn certain preferences again if they are restricted.

Android and iOS are only growing in popularity, fueling the bring-your-own-device (BYOD) trend in the process. In addition to offering some of the most powerful gadgets available, these products are also accompanied by a huge library of mobile applications.

Those looking for easy ways to develop mobile applications based on Android, iOS or both do not have to have extensive training to do so. There are plenty of ways to create apps native to these platforms that are suited for even the novice tech users. Android controls and iOS controls are free options that help users produce apps for Android-powered smartphones, iPhones and iPads. 

Ignite UI Release Notes - August: 12.2, 13.1 Service Releases

$
0
0

NetAdvantage® for jQuery is now named Ignite UI™. Please see this blog post for more details. With every release comes a set of release notes that reflects the state of resolved bugs and new additions from the previous release. You’ll find the notes useful to help determine the resolution of existing issues from a past release and as a means of determining where to test your applications when upgrading from one version to the next.

Release notes are available in both PDF and Excel formats. The PDF summarizes the changes to this release along with a listing of each item. The Excel sheet includes each change item and makes it easy for you to sort, filter and otherwise manipulate the data to your liking.

Download the Release Notes

Ignite UI 2012 Volume 2

Ignite UI 2013 Volume 1

That Conference – Event Summary!

$
0
0

This past Sunday-Wednesday, I had the pleasure of attending the 2nd Annual That Conference in Wisconsin Dells, WI. That Conference is billed as “Summer Camp for Geeks” and truth be told, it’s one of the coolest conferences I’ve ever been to (in any capacity… anime cons, sorority conventions, various professional conventions…).

As with most developer conferences, That Conference’s official main draw is a plethora of workshops geared towards a variety of different areas of professional development for developers. These range from straight language-specific sessions where you can learn to achieve a particular functionality, to soft skill classes where you can hear a talk on how to grow your online presence and following.

All of the sessions picked for That Conference seemed to be modern and awesome, and I’ll admit, I had a tough time picking a few to try and attend in my breaks from manning the Infragistics Booth (more on that later!). However, the poignancy of the sessions, in my opinion, wasn’t the best thing about That Conference.

Neither was the bacon bar.

(Though, c’mon, who doesn’t LOVE the Bacon Bar!?)

In my opinion, the best thing about That Conference was the family programming. Yes. You heard me. Family Programming. That Conference had an entire track of programming geared towards whose who they refer to as “Geeklings,” or the under 19 crowd who attended the conference. From trips to the wildlife park in the Kalahari, to sessions on building and programming their own robots, to, in my opinion, the coolest family programming, a youth-lead Open Spaces talk on Scratch (y’all know I love me some Scratch!), That Conference is leading the way in bringing families together through geekified learning… and I couldn’t be more impressed.

We talk so much about how we’ve got such a need for great programmers and engineers in the US and worldwide, but what are we really doing to foster an inquisitive nature in our youth? I feel like That Conference is pioneering a space for families to get together and do just that… young boys, young girls, even spouses were immersed in their one family member’s world for a week in the summer, and everyone was treated equally and encouraged to learn and grow.

So in addition to running a top notch conference for professionals in the developer field, carving out a great engagement zone for sponsors to interact with the attendees, catering AWESOME pork-laden meals…. the organizers of That Conference are taking it a step farther in their vision. I, for one, can’t wait to see what they do next!

Oh… right! I rocked out at our Sponsor booth this week too! Check out the awesome SWAG Brent and I rocked at Infragistics' Platinum spot:

Questions/Comments?

If I met you and promised you could ask me something, please feel free to email or tweet at me anytime (@DokiDara) ! It was a pleasure to meet you all. :)

By Dara Monasch

P.S. Keep an eye out because another highlight from That Conference was the She++ screening! I’m hoping to write up something from there, so stay tuned!

Infragistics Controls for Web and Windows Store Developers

$
0
0

In part 2 of a 4 part series on control vendors, Robert Green is joined by Jason Beres of Infragistics. Jason shows us some of the many controls Infragistics provides for ASP.NET and Windows Store app development.

To learn more about Visual Studio Toolbox see http://channel9.msdn.com/Shows/Visual-Studio-Toolbox To view part one of "Infragistics Controls for XAML Developers" with Robert Geen click here.

[youtube] width="560" height="315" src="http://www.youtube.com/embed/eM_1IMs1n9E" [/youtube]

Developer Humor: Technically Correct


SalesForce Dashboards with ReportPlus!

$
0
0

More companies are embracing cloud-based solutions to improve operational efficiency and boost employee collaboration. Cloud computing tools such as SalesForce are effective options for businesses of all sizes looking to improve their marketing, sales and other operations.

With so much data being sent, received, and stored on their systems, firms likely want to create dashboards and reports based on these resources. Not every company is a tech savant, but they do not have to be, thanks to easy-to-use solutions such as ReportPlus from Infragistics.

ReportPlus includes an intuitive interface that allows users to create data visualizations based on their companies' most important metrics. Since IT departments should be called to address only the most important tasks, ReportPlus makes all of this possible without the need to include the IT department, thus making dashboards and reporting available for even the less tech-savvy crowd.

The days of productivity being relegated to the office appear to be waning. An agile workforce can now collaborate without being restricted to a meeting room, tweaking content wherever they may be.

In addition to supporting more cloud-based operations, firms are also allowing employees unprecedented access to corporate content with bring-your-own-device (BYOD) initiatives. Workers can now access documents anywhere, regardless of location, if companies have cloud-based environments in place. With ReportPlus, personnel can use their iPhones, iPads or iPod Touch devices to gain insight into data, allowing them to make sound decisions anywhere, anytime.

Any firm that relies on SalesForce as a critical component of its operations no longer has to go through an extensive process to take advantage of their data. ReportPlus is the perfect solution to promote a collaborative workspace. The tool makes it easy for anyone to share dashboards and reports through channels such as PowerPoint, email and others. 

Introduction to Systematic Programming – Locals & Abstraction (Week 7)

$
0
0

Intro to “Introduction to Systematic Programming” Course

Introduction to Systematic Programming – Week 1

Introduction to Systematic Programming - Week 2

Introduction to Systematic Programming - Week 3

Introduction to Systematic Programming - Week 4

Introduction to Systematic Programming - Week 5

Introduction to Systematic Programming - Week 6

Week 7 brought in the concepts of both local and abstract expressions. As seems to be the case with me, this week was half a review from other courses that was nice and refreshing, and then BAM, a new concept that completely threw me for a loop. Not complaining about this per-se, because I think it’s a great way to add things to my concept toolbox (reviewing old things and then throwing in something new), but it *is* a bit of a rollercoaster.

Lesson 1: Introduction to Local Expressions

The first exciting element in this week is another language upgrade! Now we’re moving into Intermediate Student Language. Score.

As far as local expressions, we learn in this introductory lesson that local expressions are expressions that have functions and constants that only work in one part of a program. That’s all we get here. More to come on this later...

Lesson 2: Local Expressions – Forming & Intuition

Upgrading our lives to Intermediate Student Language gives us the ability to utilize local expressions, as vaguely defined in lesson 1. Basically, local expressions are small, packaged expressions with their own functions and variables that cannot interact with the rest of the program, outside of their local container. Here’s the anatomy of a local:

In this example, both of the “defines” are definitions for variables that will only exist within this local container, meaning that if “a” is referenced on the top level of the program, aka, outside of this local, whatever we do to a within this local DOES NOT MATTER to the other instances of “a”. Why? Because if “a” is used in a local, it ONLY exists within that local, and has no interaction with any other “a” that might be within the program. This means you can also use “a” in all of your locals, and nothing will happen between them, as long as you structure your local correctly.

Lesson 3: Local Expressions – Lexical Scoping

Scope contours answer your questions about where you can access your local definitions. Lexical scoping states, essentially, that you use the definition of a function or variable that is within the innermost inclosing area to where your expression is being evaluated.

Lesson 4: Local Expressions – Evaluation Rules

As previously mentioned, locals are expressions, they don’t affect the things outside of their purview. Here are the steps for evaluation!

  1. Renaming

-          Take the definitions in the local, find all the references to them, come up with new, globally unique names for them and replace all instances of the old name with this new, unique one.

     2. Lifting

-          Move the renamed definitions into the top level.

     3. Replace

-          Replace the entire local with just its body, with the renamed definitions.

It’s interesting to note that by evaluating your local expression in this fashion, you’re actually eliminating its existence as a local, and thus your program could theoretically have been written in the Basic Student Language!

Lesson 5: Local Expressions – Encapsulation

Encapsulation is taking each part of a program and turning it into a little package that only interacts with a few small items on the top level. Essentially, it is making single functions with locals inside them. When you encapsulate a function, it’s important to remember that you can no longer access it globally. HOWEVER, this also means that as an encapsulated function, you don’t have to write signatures and tests, which will end up saving you lots of time. BUT, you may still want to test them, so don’t forget about doing that!

How can you tell if a function is a good candidate for encapsulation? WELL….

-          Does it exist as one function with closely linked helpers?

-          Does the outside program REALLY only need to call the one main function, not the helpers?

If you answered yes to both of these, you’re likely looking at a great candidate for encapsulation!

How do you encapsulate a function?

  1. Group all functions you want to encapsulate together.
  2. Open your definition with a new global function name and the necessary parameters.
  3. Open a local expression and then the definition part of the local with [, right before the original function definition.
  4. Close the definition part with a ] after the original function definition.
  5. Add a trampoline call of the function, defined in the local, to the end.
  6. Delete unnecessary tests, signatures and stubs.
  7. Rename the tests and necessary stubs
  8. RUN FREE! YOU GOT IT!

It’s also important to note that you can have encapsulation in your templates, but keep in mind that if you do this, it will disallow your ability to test for a base case.

Additional Notes from This Lesson:

Another topic covered in this lesson is refactoring, which is a structural change to a program that does NOT change the behavior of the program. You can, however, refactor something and ALSO change its behavior, but it’s not recommended to make both of these changes at the same time (it’s easier to make mistakes by trying to do too much at once!).

Lesson 6: Local Expressions – Avoiding Recomputation

FINALLY we’re getting to the concept of code efficiency in this class. YAY! This lesson begins with the idea that you should worry about efficiency of code AFTER your program works. In some ways I agree with this, particularly for beginners, but I also disagree a bit. I think code efficiency should be engrained from the beginning of your coding career, so it becomes a natural way of thinking, rather than an afterthought. That said, this lesson focuses on eliminating exponential growth. Essentially, the solution here is very situational, so I don’t want to go into it too much. However, the takeaway is that when you’re working with arity trees, if you can localize your searching, it will make your code more succinct and efficient. J

Lesson 7: Introduction to Abstraction

Abstraction, in programming, is the way to manage complexity in your program. #IAbstractedThatLessonForYou

Lesson 8: Abstraction from Examples, Part 1

When you’re abstracting, you need to pull out the common parts of functions into abstract functions. (Note: the differing portions are called “points of variance.”)

In a function, you rename it as more general, put a parameter to represent the point of variance, and replace the point of variance with the parameter that you renamed (remember to pass the parameter in any recursions as well!).

Why would you want to abstract functions?

WELL!

A higher order function can consume more than one function. It can also produce a function.

So, get used to it. It’s better. Promise.

Lesson 9: Abstraction from Examples, Part 2

Lesson 9 mostly works through a continued example from Lesson 8, so I’m going to operate as usual and get rid of the example run-through and give you the important takeaways:

  1. Functions can consume other functions as arguments.
  2. Abstraction exists and works in the majority of programming languages.
  3. For abstractions, statements of purpose are very difficult to write, so start practicing.

Lesson 10: Abstraction from Examples, Part 3

Writing the signature comes last when doing an abstraction, because it’s even more difficult than writing a statement of purpose. Here’s a tip on how to work through it: Use type inference! Type inference goes a little like this:

  1. Find the most basic thing that a function produces, that becomes the result in the signature.
  2. Find the arguments that are passed/required. Those are the argument types for the signature.

It sounds easy, but there’s so much going on with abstraction that it can be pretty disconcerting. Don’t get discouraged, just try and focus on simplifying what you’re working on, as you do with the entire design recipe theory, and you’ll be just fine.

Additional Notes from This Lesson:

  1. When a function is passed as an argument, write its signature in () in the larger signature.
  2. Lists can be written in an alternate way. You can now use (listof X) in place of ListOfX

Lesson 11: Using Built-In Abstract Functions

Map and Filter are two of the more commonly used built-in abstract functions, and the language page in the coursera course lists all of them. (If you’re not taking the coursera class, here’s an external link you can check out with the same info: BSL Built-In Abstract Functions.)

The built-in abstracts are pretty sweet, and the reality is, if it’s pretty generic feeling, trust your intiuition and check out the list – it probably is a built-in!

Lesson 12: Closures

Sometimes the function you’re passing as an argument to an abstract function doesn’t exist yet…. If this is the case, you can always define it with a local.

HOWEVER

In some cases, you don’t have a choice. You MUST stop and define it.

When is that?

When the body of a function you want to pass to an abstract function refers to a parameter in the outer function. The function definition of the outer function thus closes AROUND the inner one, making it a closure. (Remember that lexical scoping? YEAH!)

Lesson 13: Abstract Fold Functions

This lesson gives a quick overview on going directly from templates to abstract functions, literally cutting out all of the goo in the middle, optimizing your time writing your code. YAY. In short, a fold function is an abstract function based directly on the template.

Week 7 Summary

As I mentioned at the start, this lesson was looooooooooooooooooong in the second half, because a lot of it was new to me. If you have any tips or tricks of your own related to abstract functions, let me know! Also! Week 8 is the last week of class so the next blog will be the last in the series. Don't worry though, I have lots of plans for upcoming entries. :)

Questions/Comments?

Feel free to comment here on my blog, or find me on Twitter @DokiDara.

By Dara Monasch

Responsive Web Design and Ignite UI

$
0
0

image       image


Challenge:

We have all faced a common problem of bad User Experience while browsing the web on a mobile device. Remember the experience while browsing you had to scroll left/right to see different areas on the page from a touch based device! It is because as web developers we hardly cared of catering to different screen sizes, touch and end User Experience. Using static layout/table sizes doesn't really help.

Solution:

Responsive Web Design is a concept that can solve the above mentioned issue.

To summarize on what RWD is all about:

  • Fluid Grids – use relative units like percentages, rather than absolute units like pixels or points
  • Flexible Images – use relative units, or use media queries and render appropriate size images based on need, or use SVG’s
  • Media queries – You can set different style rules(CSS) for different device widths/size

You can achieve this completely via client side using responsive frameworks(twitter bootstrap, unsemantic, etc.) and media queries. If you are new with the media queries then you can go through my previous blog on media query here. You can use RESS (Responsive Design + Server Side Components). Here is a nice article on getting started with RESS by Anders M Anderson. RESS can be helpful if the mobile browser isn't that latest to work well with heavy client side logic! In this talk we will stick to handling RWD right on the client side!

RWD is not only about enhancing a users experience on mobile, but also for Desktop/PC based browsing.

Are your enterprise UI controls Responsive?

While developing Enterprise websites/portals, the common requirement might be the Data Grids and Charts. So the problem reappears. Will 3rd party Charts and Grids support Responsive Frameworks? How can I make the Grid responsive?

The Solution is pretty simple. Infragistics Grid control is responsive. The igGrid control supports the following design modes:

  • Standard(default) – In this mode the Grid does not adhere to RWD principles. It targets web sites/apps designed to be used on desktops.
  • Responsive Web Design(RWD) – In this mode the grid adapts to the device’s screens size. This mode is specially designed for web sites/apps specifically designed to be used on multiple devices with different form factors. In RWD mode, the Grid can be configured:
    • Auto-hiding of columns– This is configured using the RWD node feature’s column hiding functionality
    • Using grid template– the RWD mode feature supports a set of pre-defined grid templates which replace the igGrid template once RWD mode sets in. Using templates allows a wide scope of adaptations, including row hiding, using different fonts and font sizes, merging several rows/columns in one row/column, and many others.

The igGrid control comes with pre-defined RWD mode profiles based on device screen width!

  • Phone– up to 767 pixels. By default, the following CSS classes are available in this profile: ui-visible-phone and ui-hidden-phone.
  • Tablet– between 768 pixels and 979 pixels. By default, the following CSS classes are available in this profile: ui-visible-tablet and ui-hidden-tablet.
  • Desktop– larger than 980 pixels. By default, the following CSS classes are available in this profile: ui-visible-desktop and ui-hidden-desktop.

By default the igGrid uses the $.ig.InfragisticsMode class and you can use the above mentioned CSS classes to hide or show a particular column in the Grid. If you are using Twitter Bootstrap framework for building Responsive web pages then you can use the $.ig.BootstrapMode class of the igGrid. This uses classes defined in the CSS of the Twitter Bootstrap framework (You need to include Twitter bootstrap CSS file in order to use the CSS class names).

The below code will hide the Product ID column on a Phone Screen size:

  1. $(function () {
  2.     $("#gridResponsive").igGrid({
  3.         columns: [
  4.             { headerText: "Product ID", key: "ProductID", dataType: "number" },
  5.             { headerText: "Product Name", key: "Name", dataType: "string" },
  6.             { headerText: "Product Number", key: "ProductNumber", dataType: "string" }
  7.         ],
  8.         features: [
  9.             {
  10.                 name: "Responsive",
  11.                 columnSettings: [
  12.                     {
  13.                         columnKey: "ProductID",
  14.                         classes: "ui-hidden-phone"
  15.                     }
  16.                 ]
  17.             }
  18.         ],
  19.         width: "100%",
  20.         dataSource: products
  21.     });
  22. });


If you wish to setup a custom Responsive Web Design Profile for the igGrid you can refer to our documentation here.

 

If you are looking for working samples on RWD using igGrid, please check these out:

 

If you use Charts in your applications, then you can make our igDataChart responsive as well, in a little different manner as it gets rendered as Canvas. Place the chart inside a container element and set this container’s dimensions in percent (and not pixels). The Chart’s width and height options should also be set in percent. Here is a live demo of this approach by Graham Murray.

Summary

Responsive Web Design is the way to go forward looking at the diverse devices and screen sizes that we have to cater to. With BYOD concept, enterprise apps would also need to follow RWD to bring in the best UX!

 

Cheers
Abhishek
@narainabhishek 
Microsoft MVP – Internet Explorer

Achieve Cross-Application Development Without the Tech Background

$
0
0

The global mobile application phenomenon is expected to reach even greater heights in the near future, thanks to the growing popularity of devices like smartphones and tablets. Employees and consumers worldwide are using these gadgets on a daily basis, whether to access work-related content or personal data anywhere, regardless of their physical location.

Operating systems such as Android and iOS are only fueling the global mobile application landscape, which is still very much in its infancy. A recent Juniper Research report said that more than 160 billion applications will be downloaded onto smartphones and tablets by 2017, more than doubling the amount in 2013. Only 5 percent of these apps will be paid for, however, making monetization an issue for developers.

"Carrier billing has become an increasingly viable option for MNOs who want to see a share of app store revenues, and also for app stores who want to distribute their content to unbanked consumers," said Juniper report author Sian Rowlands. "However, MNOs must realize they won't see as great a revenue share as they did during the pre-app store era."

The research firm said that app stores, such as Google Play, will be a hotbed of activity, especially for games. Google Play allows real-time multiplayer games and leaderboards to be accessed not only on Android, but iOS as well.

The opportunity to create mobile applications does not require developers to be experts in the field. Those looking for ways to produce highly visual and customizable apps for Android, iOS or Windows Phone can do so by using free and easy-to-use tools. Android controls, iOS controls and Windows Phone controls allow users to create applications native to these platforms and make them accessible through smartphones, tablets and the Internet.

The Benefits of Cross-Platform Development

The ‘Bring Your Own Device’ (BYOD) philosophy has emerged as one of the most influential trends to impact the corporate landscape in quite some time. Nowadays, employees are using all types of devices powered by various operating systems. By using Android, iOS or Windows Phone controls, firms can now create applications suited for all platforms that will support all of their workers and serve to handle the unique needs of the business.

Cross-platform development delivers results in many areas, according to TechRepublic's Joseph Parker. Users taking this approach can boost development speed and reduce costs by reusing previous code for future projects.

Parker explained that cross-platform tools are also easy to use, employing common scripting languages such as JavaScript, HTML and CSS. These languages also make it easy to shift the use of apps from the Internet to mobile devices.

In addition to BYOD, cloud computing is another major trend reshaping the IT landscape. The cloud is also viewed as a viable option for cross-platform development in which Parker noted that cross-platform development solutions can be easily integrated with cloud solutions.

Whether developers want to create custom-built applications to support corporate endeavors or unique apps like HTML5-based games, they can now easily do so, thanks to affordable and easy-to-use cross-application development tools.

How to Create Mobile Apps for Free

$
0
0

The explosion in the popularity of mobile devices such as smartphones and tablets has fueled the global mobile application development industry. Operating systems such as Android and iOS are the clear leaders in both the smartphone and tablet fields, with these gadgets offering millions of apps based on productivity, gaming and social aspects.

Those interested in creating mobile applications based on Android and iOS do not have to have extensive programming experience to produce native apps. There are free solutions available, including Android controls and iOS controls, which allow users to make highly visual apps that perform effectively on their respective platforms.

These free-to-use tools are also supported by extensive developer communities from popular software companies to aid users who are creating their very own apps. There are also videos and documents that highlight sample codes for those interested in viewing such material.

The mobile application development industry is becoming almost as important as the burgeoning smartphone and tablet markets themselves. With Android and iOS controls in tow, companies and mobile users have the opportunity to create customizable apps suited to their unique company needs on the platform and device of their choice.

The Benefits of Cross-Platform Development


Android and iOS are the clear leaders when it comes to mobile application development. Users who are considering creating apps for both platforms can benefit greatly from this approach, according to TechRepublic's Joseph Parker.

Parker noted that a cross-platform tool for mobile applications can help improve development speeds because these solutions create apps quickly. These options also make it possible to reuse code from previous Android and iOS projects to further enhance speed.

There are other factors that make it easy to create mobile applications for multiple operating systems as well. According to Parker, these solutions employ common scripting languages such as HTML, CSS and JavaScript to launch apps on websites and mobile devices.

Cloud computing is also playing a key role in the mobile application development landscape. As Parker explains in his article, cross-platform solutions can be integrated easily with cloud solutions.

Mobile application development no longer demands extensive knowledge or vast resources to complete. There are plenty of trends influencing the landscape, making it easier than ever for people to create apps for platforms such as Android and iOS. 

Atlanta Code Camp 2013 Sample Code

$
0
0

If you were in the Mariette Georgia area on Saturday August 24, I hope you stopped by the Atlanta Code Camp for a day of food, fun, and technology.  There were a variety of great topics being presented by great speakers.

For speakers, most code camps start off with a speaker dinner the night before the event.  This is where all the organizers, volunteers, and speakers get together to hang out and relax before the big show.  The Atlanta Code Camp speaker dinner was held at the Rose and Crown Tavern.  The speaker dinner was awesome.  I got to meet old friends and make some new ones, and I always enjoy meeting first time speakers.

WP_20130823_001WP_20130823_004WP_20130823_005WP_20130823_008

The code camp was held at the Southern Polytechnic State University campus.  Approximately 400 people attended the event (including sponsors, speakers, and volunteers) and there were a ton of first time attendees.  I would guess 80% of the attendees were first timers.  An amazing statistic!  How did I conclude that number?  Well, a poll was taken during the keynote, and roughly 80% of the audience raised their hands.  The keynote was given by the well respected John Papa.

WP_20130824_004

In case you are wondering, yes, I did give a session at Atlanta Code Camp.  My session was titled “Building Composite XAML Applications with Prism”.  Here is the abstract:

“In this session you will learn how to design and build Windows Phone, Silverlight, and Windows Presentation Foundation (WPF) desktop applications using loosely coupled components that can evolve independently but which can be easily and seamlessly integrated into the overall application. This session concentrates on the basic concepts required to build a composite application with the Microsoft Patterns and Practices Prism framework which includes the bootstrapper, regions, modules, view composition, and different techniques for communicating between loosely couple components. Various development patterns and technologies will also be discussed including Inversion of Control (IoC), Dependency Injection (DI), Unity, MEF (Managed Extensibility Framework), commanding, event aggregation, and MVVM (Model-View-ViewModel).”

For those of you who attended my session you can download the live demo we created during the session and the sample code I demoed.

Download the Live Demo source code
Download the Prism DelegateCommand sample
Download the Prism CompositeCommand sample

This was an amazing Atlanta Code Camp.  I would like to thank all the organizers, volunteers, speakers, and attendees for taking the time to make this event happen.  I also would like to thank the sponsors for providing all the swag, licenses, giveaways, and financial donations to make this event possible. 

If you have any questions, please contact me through my blog, contact me on Twitter (@brianlagunas), or leave a comment below.

Develop HTML5 apps for any browser or mobile device

$
0
0

Employees and consumers access all types of mobile applications using various devices such as smartphones, tablets and PCs. Recently, HTML5 has received plenty of attention for those looking for ways to create apps that work on all of these gadgets and are supported on all web browsers.

The growing popularity of platforms like Android, iOS and even Windows Phone means that app developers have many choices as to what platform(s) they would like to develop on. In the past, companies that wanted to experience the benefits of cross-platform mobile development needed skilled workers or had to hire outside help. Those days are now over, as there are now a number of free and effective options at their disposal.

Tools such as IgniteUI, for example, allow users to create highly visual HTML5 applications in jQuery that deliver fast performance on every Internet browser, device and operating system. Firms can create apps that are made with touch-based gestures in mind, including pinching, zooming, panning and flicking capabilities, which have become staples of today's gadgets.

Looking ahead, the development of HTML5-based applications is only expected to grow in importance, making it even more crucial that businesses get ahead of the curve by creating their own unique apps suited for their own corporate demands.

The Majority of Mobile Apps will be Hybrid by 2016


According to a Gartner report;
more than half of all mobile applications by 2016 will be hybrid, which includes HTML5 features and native device functions.

"Mobility has always been a separate topic for IT professionals, but it is now influencing mainstream strategies and tactics in the wider areas of technology enablement and enterprise architectures," said Gartner Vice President and Analyst Ken Dulaney. "Increasingly, enterprises are finding that they need to support multiple platforms, especially as the BYOD trend gains momentum."

Companies supporting BYOD can kill two birds with one stone. On one hand, they no longer have to issue corporate-owned devices to their employees, saving on annual costs. Secondly, workers can use their own personal gadgets, which they are more familiar with and trust, to perform work-related functions.

Given that staff members are using Android, iOS and Windows devices, companies cannot simply support just one operating system. Firms that want to create HTML5 applications that function across all devices and web browsers will find their apps to be the most useful, as all of their employees, regardless of what device they use, will be able to access these apps.


An Introduction to the Microsoft 'Modern UI' Design Philosophy

$
0
0

It has been a rather significant twelve months for Microsoft. Not only have they rolled out new versions of some of its biggest software lines (Windows 8, Windows Phone 8, Office 2013, Office 365), but they has also changed the way we view and interact with these products by implementing their new ‘Modern User Interface’ design philosophy across the board.

Formally known as ‘Metro’, the ‘Modern UI’ is the design language Microsoft now uses for its entire product range. More than just a simple interface guide, Microsoft is using the Modern UI as a whole new way of approaching how it designs software. Albert Shum, general manager of Windows Phone Brand and Design goes as far as to call it an ‘Ethos’. Steve Ballmer, Microsoft CEO, said "Metro will drive the new magic across all of our user experiences," during the 2012 Consumer Electronics Show in Las Vegas.

Originally created for the Windows Phone operating system, the Modern UI actually has roots going back as far as the Zune music player. The original design team cited inspiration from the design language found on the King County Metro Transit system used within the greater Seattle area, and these influences can clearly be seen today. Modern UI encourages a strong focus on typography (even stipulating its own font - Segoe UI designed by Steve Matteson at Agfa Montype) over images; and on text navigation over buttons.

Animation and transitions also play a large part in the function of Modern UI, as it is very much designed for Microsoft's self-professed ‘touch first’ future. A huge emphasis has been placed on how user interactions are communicated, which can most clearly be seen in the latest version of the Windows operating system and its radical rethinking of the Start menu.

The Future

It seems Microsoft has only just got started with Modern UI, and we are starting to see glimpses of the future. The impending release of Windows 8.1 shows how hard Microsoft is working to ensure Modern UI caters for a wide range of use cases, and how willing it is to listen to feedback from the community. Microsoft also recently offered a brief teaser of a Modern UI version of its all-powerful Office Suite. At the BUILD 2013 developer conference, Julie Larson-Green showed a quick glimpse of a new style PowerPoint app. This software is expected to hit shelves next year, and is sure to put the Modern UI in the hands of even more users.

Find Out More

Modern Design at Microsoft

http://www.microsoft.com/en-us/news/stories/design/

UX Guidelines for Windows Store Apps

http://msdn.microsoft.com/en-us/library/windows/apps/hh465424.aspx

A Useful Blog Post on How the Design Came About

http://www.stephanemassey.com/metro-design-principles/

 

Current State of SharePoint

$
0
0

Microsoft SharePoint is one of the most popular and effective content collaboration tools available today. The latest iteration of the software has made many improvements from its predecessors and, according to CMSWire's Rich Wood, SharePoint 13 offers greater mobile and cloud-based functionality.

Cloud computing and mobile devices such as smartphones and tablets are greatly influencing the corporate landscape. Organizations supporting hosted environments and bring-your-own-device (BYOD) initiatives can empower their staff members by allowing unprecedented access to company data regardless of their physical location.

Wood explained that customers have been clamoring for mobile capabilities since SharePoint 2007. To truly reach a mobile operation within SharePoint, the cloud may be the key.

"The bottom line: If you really want to go mobile in SharePoint for something more than web publishing of intranet pages, go to the cloud," Wood asserted. "Go Office 365. The writing's already on the wall; it's in the form of the SkyDrive app released in late June for Windows Phone and iOS."

Employees Seeking Access to Cloud & Mobile


Businesses using SharePoint may want to embrace the possibilities of both cloud computing and mobility to not only boost productivity and efficiency, but keep employees happy. More staff members are asking companies to support these innovative technologies to perform mission-critical tasks.

A CDW survey of more than 1,240 IT professionals found that 73 percent believe employees' use of cloud-based applications and mobile devices has influenced their companies' decision to adopt cloud environments. Nearly 70 percent indicated that worker requests to access cloud solutions have increased during the past two years.

As a result of employees' embrace of everything centered the worlds of the cloud and mobile, nearly 40 percent of businesses are using the cloud in some capacity; up from 28 percent in 2011.

"By aligning cloud services with critical applications and preferences of employees that use mobile devices, organizations can better capture business value that includes cost savings, increased efficiency, improved employee mobility, and an increased ability to create innovative new products and services," said Stephen Braat, general manager at CDW.

The possibilities of cloud computing and mobile devices are immense, to say the least. As Microsoft continues to support current SharePoint solutions and develop new ones, the inclusion of the cloud and mobility will likely remain critical functions of collaboration software as things move forward. 

AngularJS Training (egghead.io) - HTML5 Resource of the Day

$
0
0

If you are building HTML5 applications, at some point you may need to pick a client-side framework to help you structure your code. One of the most popular frameworks for web applications is AngularJS, an MVW framework created by Google. The framework is easy to get started with but can be notoriously difficult to learn as more concepts are introduced. Today’s HTML5 resource, egghead.io makes it easy to learn by breaking it up into short videos that progressively introduce AngularJS concepts

logo

egghead.io - Bite-sized web development training with AngularJS

John Lindquist, an Evangelist at JetBrains is the creator of egghead.io and is the man behind the now 50 instructional videos available on the site. The average length of a video on the site is roughly 5 minutes. Each video explains a single concept of AngularJS using nothing but a code window (unsurprisingly, John favors WebStorm) and a browser. The length of the videos provide for near perfect pacing for learning AngularJS over the course of a few days. It’s even possible to get through all of the videos in a single day if you’re feeling ambitious. The quality of the videos is very good and has gotten even better in later videos.

Here is an example video showing how binding works in AngularJS:

[youtube] width="650" height="366" src="http://www.youtube.com/embed/Lx7ycjC8qjE" [/youtube]

Summary

Taking a difficult topic and breaking it down into bite-sized chunks that can then be taught to other people is not an easy task. John has done a wonderful job of this for AngularJS through egghead.io. If you are looking to learn how to use this web framework, you’d be hard pressed to find a better place to start. Once you get up and running with AngularJS, check out Angel’s post that will show you how to use the Ignite UI grid with AngularJS as an AngularJS directive.

Contact

If you want to comment or reach out to me, the best place to do that is on Twitter @brentschooley. I can also be reached via email at bschooley@infragistics.com.

UX, Design and Rich Application Frameworks

$
0
0

With the advent of rich application frameworks (and the increased exposure to interaction models they make possible) it isn’t difficult to imagine that usability and design professionals may be feeling a little vulnerable.

old_phone

After all, until recently, UX and design professionals were the last, best hope in the face of early web design, business systems left over from the 80s and clunky mobile phone menus. We helped create an environment in which users expected more (at least on the web). Today, however, developers have at their disposal an arsenal of tools designed to provide users with experiences that take advantage of asynchronous server calls, high-definition multimedia and slick, natural-feeling interactions. Have we been relegated to the role of usability testing? Surely, our profession has more to offer.

 

Where do we fit in?

The good news is that our role is the same as it has ever been. Like any platform or technology, rich application frameworks are the medium through which design is expressed. As such, they are no different from any previous platform that was ready to revolutionize the manner in which people interact with information, the world or each other. They are the tools through which researchers, designers and technologists enable users to complete tasks and make decisions. They are the paint and canvas, the clay and plastic molds, with which we bring our designs to life.

A well-designed system is the result of a well-defined design process. That process includes the expertise of an interdisciplinary team with individual backgrounds in graphic design, fine art, architecture, cognitive psychology, anthropology, human-computer interaction, and other fields. This kind of design team has the training and experience to bridge the gap between business, technology and human requirements. They (we!) practice a design process that is mindful of the features, functions and legacy systems that must be somehow united, implemented and maintained. They are equally mindful of who will be using these systems (from motorcycle enthusiasts to financial analysts, from students to CEOs), their experiences and mental models, where the systems will be used (from hospital emergency rooms to living rooms and executive boardrooms) and what they need from technology to improve rather than impede outcomes.

The ultimate compliment for any interface is that it be transparent to the user, allowing complete focus to remain on the task. If, at any point, the user must wrestle with the interface, then research and design have failed. Our job remains one of understanding the ways in which users need to have information presented to them, the ways in which they need to interact with it and the decisions they must make. The capabilities made available via rich internet applications provide a larger toolset from which to choose in order to meet these requirements.

Introducing Indigo Lite

$
0
0

Indigo Lite

As mentioned in the latest update for Indigo Studio, we are rapidly approaching the launch of Version 2. With Version 2, we will be renaming Indigo Studio Version 1 (the free forever edition) to Indigo Lite.

V1 users who download Indigo before V2 (which is just around the corner!) will also get a limited-time, exclusive introductory upgrade offer, so don't wait to try Indigo today!

FAQ for Indigo Lite

The following are some frequently asked questions regarding Indigo Lite and its relationship with Indigo Studio V2+.

Q: What happened to the free version of Indigo Studio?

It was renamed to Indigo Lite. Indigo Lite contains everything that was contained in Indigo Studio Version 1, and it will remain free of charge even after we ship Indigo Studio V2, our new subscription-based version of Indigo that you can try for free.

Q: If I try Indigo Studio Version 2, can I still use Indigo Lite?

Everything in Indigo Lite is in Indigo Studio, so we recommend against using them side-by-side (see compatibility question below). However, if you try Version 2 and decide you want to stick with Indigo Lite for now, you can simply download Indigo Lite again from our Web site.

Technical Note: For various deeply technical reasons, we replace the installation of Indigo Studio Version 1 with Indigo Studio Version 2 when you upgrade/try V2. For that reason, to "go back" to V1, you will need to download and install Indigo Lite--but don't worry, it's the exact same capabilities as V1. Also, we do not automatically upgrade your V1/Lite projects as part of the trial unless you specifically opt into it (for each project as you open and modify it in Indigo Studio).

Q: How can I try V2?

When released, users of Indigo V1/Lite will be prompted with an update dialog that invites them to try V2. V2 trial will also be available directly from our Web site--either way works the same. The free trial is fully functional and lasts for 30 days from installation.

Q: How will Indigo Studio V2+ be licensed?

V2+ will be licensed using a yearly, perpetual subscription--that is, you get all major and minor updates as well as standard support during your subscription period. At the end of your subscription period, you may elect to renew for a deeply discounted price. If you choose not to renew, you get to keep whatever latest licensed version you owned at the end of your subscription.

Please refer to Indigo Studio License Agreement for more/official details on the licensing agreement.

Q: When will V2 be released and how much will it cost?

Sorry! Can't tell you yet. ;) It will be very soon, though! Once it is released, the pricing details will be available on the Indigo Studio product site. Don't forget to download and try V1/Lite now to be eligible for a great discount!

Q: How will Indigo Lite be supported?

Please refer to our Product Lifecycle page. As of this writing, Standard Support is available for two years from the date of V1 release, that is, until Nov 2014.

We may continue to support Indigo Lite after that, but we make no further guarantees at this time.

Q: Will you continue to update Indigo Lite?

During the support timeframe, we will continue to provide bug fixes and other minor updates that we deem appropriate; however, most new development will be for licensed Indigo Studio customers.

Q: What are the compatibility concerns between Indigo Lite and Indigo Studio?

Anything you design in Indigo Lite should work fine in Indigo Studio. However, because Indigo Studio contains features not available in Indigo Lite, not all designs will be fully editable in Indigo Lite. In short, if you need to use Indigo Lite, we recommend against editing that same project in Indigo Studio without making a copy/backup first.

---

About Indigo

If you haven’t already, why not Go Design Something!? As noted, users who download V1/Lite before V2 is released will be eligible for a great introductory upgrade price!

If you are using Indigo, we welcome your ideas on how we can better apply and refine these and other good interaction design principles to help you to design awesome UIs. If you have any questions or problems, please don’t hesitate to discuss them with us in our forums. We’re also on Twitter @indigodesigned.

About the Author

Ambrose Little is principal design technologist at Infragistics and has worked on Indigo Studio as interaction designer and product manager along with an awesome team based here in Cranbury, NJ, USA and Montevideo, Uruguay.

Viewing all 2197 articles
Browse latest View live




Latest Images