JQuery-Mobile with AngularJS and Angular-Route (ngRoute)

Introduction

The following details how JQuery-Mobile and AngularJS can play together seamlessly. Angular-Route (ngRoute) is used for navigation. A simple Angular directive invokes JQuery-Mobile styling and enhancements as each page is loaded. This includes pages loaded via  ng-include

A working example is available here as a Plunker http://plnkr.co/edit/RPbJfWX84XkzWlvPFMvX?p=info

Continue reading “JQuery-Mobile with AngularJS and Angular-Route (ngRoute)”

AngularJS – Radio Buttons – Three Scenarios

Introduction

This post will detail how to AngularJS can enhance the usage and functionality of Radio Buttons.

Three scenarios are covered.

  1. Each radio button represents an object. For example, there may be a radio button for each element of an array. When one of the radio buttons is selected, a variable is assigned the corresponding array element. So, a variable called $scope.selectedPerson can be automatically assigned to the selected ‘person’ in an array of ‘person’ objects.
  2. Similar to ‘1’ except instead of selecting a complete object, it’s possible to select just a property of an object. E.g. instead of $scope.selectedPerson, the variable can be $scope.selectedPersonName. This is a simple elaboration on the first scenario purely for emphasis.
  3. This scenario is considerably different. Take elements being added to an array dynamically through a UI, the user adding the elements needs to assign one of them as the default element. This is achieved by setting a property (isDefault = true for example) in the array element object. The other array elements have their isDefault property set to false. Unlike the previous two examples, an external variable is not being set, the elements of the array themselves are being manipulated.

Continue reading “AngularJS – Radio Buttons – Three Scenarios”

AngularJS – isolate scope – ‘&’ (function reference)

Introduction

This blog demonstrates how to pass a reference to a function to an angular directive/template.

The way in which the child directive/template calls the parent is also demonstrated.

The example is available as a working JSFiddle here.

This tutorial details creating directive/templates in general (without an isolated scope).

This tutorial demonstrates passing values by value to angular directives/templates (@).

This tutorial demonstrates passing values by reference to angular directives/templates (=).

Continue reading “AngularJS – isolate scope – ‘&’ (function reference)”

AngularJS – isolate scope – ‘=’ (pass by reference)

Introduction

This blog will explore the concept of passing object to angularJS directives / templates using by reference.
When an object is passed by reference both the parent (controller or parent directive) and the child directive/template have access to the object. The relationship is bidirectional.

This tutorial details creating directive/templates in general (without an isolated scope).
This tutorial demonstrates passing values by value to angular directives/templates (@).

Continue reading “AngularJS – isolate scope – ‘=’ (pass by reference)”

AngularJS – isolate scope – ‘@’ (pass by value)

Introduction

Objects can be passed into an angularJS directive in any one of the following ways:
By value using ‘@’
By reference using ‘=’
As a reference to a function in the parent controller using ‘&’

The next few blogs will detail each of these techniques.

This blog will detail the ‘@’ (by value technique).
For detail on creating an angularJS template via a directive please see this blog http://outbottle.com/using-templates-with-angularjs/

Continue reading “AngularJS – isolate scope – ‘@’ (pass by value)”

Spring 4 Web MVC – Hello World using Annotation and Java configuration with Netbeans

This blog will go through the steps required to setup a basic Spring 4 MVC web application using Netbeans and Maven. The Spring 4 project will be configured using annotations and plain Java rather than XML.

It is a step by step guide to getting up and running quickly. There are plenty alternative methods to doing this but this one is simple, lightweight and to the point. A maven project is available for download at the end of this blog.

Continue reading “Spring 4 Web MVC – Hello World using Annotation and Java configuration with Netbeans”

Hibernate-Search Multiple-value Facet-Counts

Introduction

The hibernate-search facet search API is pretty amazing but it lacks a little on the following:

  • Facet-Count values are incorrect where a facet matches a fields that have multiple values. I.e. the facet-counts are correct where the facet has a 1-to-many relationship with result-set items but the facet-counts are entirely incorrect where the facet has a many-to-many relationship with result-set items.
  • The facet-count values are that of the number of matched result-set items within the result-set as distinct from the number of matched result-set items that will be merged into the result-set if the facet is applied. This is highly undesirable where more than one facet-group is used conjunctively. Let’s explain…
    • Facet-counts are available before any facets are applied. Adjusted facet-counts are available after facets are applied. This is great because it facilitates two different usages. With the former, the facet-counts can remain static as facets are selected and deselected. With the latter, applying one facet will reduce the facet-count for other facets. In fact, the other facet-counts can reduce to zero. This zero count does not necessarily mean no result-set items will result from applying the facet. Consequently, we don’t know if clicking on the facet will yield new results or not. If a facet yields no results, and it is used in conjunction with facets from another facet group, this can lead to a zero-results situation. Confused? no problem Ok, allot of detail, description, example and analysis is provided in this blog.
  • These issues are identified in the following discussion threads:
  • This blog delivers a comprehensive solution to all issues surrounding facet-counts in hibernate-search. The solution is derived from the information provided here: http://sujitpal.blogspot.ie/2007/04/lucene-search-within-search-with.html. A java class that delivers the solution is provided. There is also a fully working maven project demonstrating the solution in action.

Continue reading “Hibernate-Search Multiple-value Facet-Counts”

Understanding Faceted Searching

Introduction

Tony Russell-Rose describes faceted searching in great detail in these posts:

http://isquared.wordpress.com/2011/04/12/interaction-models-for-faceted-search/

http://java.dzone.com/articles/designing-faceted-search

http://isquared.wordpress.com/2011/04/28/where-am-i-techniques-for-wayfinding-and-navigation-in-faceted-search/

http://isquared.wordpress.com/2011/02/17/reflections-on-faceted-search-and-beyond/

They’re well worth a read before even contemplating developing a faceted search.

There are many types of faceting techniques available. This blog focuses on a facet-search where the facets and results remain on a single page. Facets dynamically reduce and expand the result-set on the same page. A good comparable might be the faceted people search on LinkedIn.com. This one is also a really good example: http://www.bikersbest.dk/en-gb/shop/accessories/fenders-etc

We’re going to describe faceted searching and its oddities through example. The examples proliferate in complexity towards an end result which hopefully will yield an understanding of how faceted searching can (or dare I indulge, should work). Some rules for development/behavior will emerge; these will be emphasized and summarized throughout. At the end there is some rambling and a solution for a hibernate-search implementation but for the first 99% of the blog there is no focus on implementation; the focus is exclusively on the following.

  • What exactly a faceted search really is.
  • The behavior of the result-set in response to applying or removing facet selections.
  • What the numbers beside the facets (facet-counts) really mean (cardinality).
  • The different relationships between facets and result-sets e.g. 1-to-Many V.s. Many-to-Many.

The examples used throughout are simple to understand but they will provoke allot of thought because filtering results by facets is not as straight forward a process as may seem at an initial glance. It can be extremely confusing. Each example is a fully working jsFiddle.

Continue reading “Understanding Faceted Searching”

Resolving AngularJS minimization / obfuscation issues

AngularJs uses Dependency Injection (DI) to supply objects/variables during configuration.
Variables that begin with the $ character tend to be injected, therefore if a minimizor and/or obfuscater changes the variable name, the DI will not be performed.

This Angular Crash Course provides a detailed intro on AngularJS.

This blog details a common solution to the problems arising from minimization / obfuscation.

Continue reading “Resolving AngularJS minimization / obfuscation issues”

AngularJS – A crash course – in processing AJAX JSON

I’ve recently started using AngularJS http://angularjs.org/ . It’s very impressive. It’s extremely useful for handling/processing AJAX JSON results.

This blog demonstrates the following:

  1. Setting up an AngularJS “application”.
  2. Binding (dynamic) JSON data to the view. I.e. processing an AJAX callback.
  3. Invoking an AngularJS Controller function externally from outside the AngularJS scope.

 

  1. The above is demonstrated with a simple html page that loads some JSON asynchronously (using AJAX). The code is available for download below.
  2. The result is something of a crash course on AngularJS.

Continue reading “AngularJS – A crash course – in processing AJAX JSON”

Asp.NET html <button> element onclick and onserverclick -> client-side validation

The problem solved here is that an asp.net <button> element (html = <button runat=”server” > or <asp:HtmlButton )  doesn’t support a onclientclick event. This prevents performing client side validation ahead of the onserverclick event.

Here’s more on the problem.

http://stackoverflow.com/questions/1245033/asp-net-onserverclick-event-handler-not-called-if-using-onclick

Continue reading “Asp.NET html <button> element onclick and onserverclick -> client-side validation”

input and textarea html5 ‘placeholder’ attribute support in IE (or other non compliant browsers)–jQuery plugin

Which results in

clip_image002

Where the text ‘Search Products’ disappears on focus and reappears on blur if the field is still empty. This text is not the ‘value’ of the field.

In addition:

  • If the value of the field is set to empty programmatically (using JS) the placeholder will appear (and vice versa when text is programmatically applied).
  • When the form is submitted with a placeholder visible, the value of the placeholder is not submitted.

Continue reading “input and textarea html5 ‘placeholder’ attribute support in IE (or other non compliant browsers)–jQuery plugin”

jQuery-UI – Rich Autocomplete component

A problem with the out-of-box jQuery-ui autocomplete component is that:

  • Only text is shown in the dropdown
  • That same text populates the field upon list selection.

Thankfully, this does not have to be the case. Images and other markup can easily be rendered in the suggestion list. Consequently, the text that populates the autocomplete field upon selection is fully customizable.

image

 

Continue reading “jQuery-UI – Rich Autocomplete component”

Force IE out of compatibility mode

Add this to within the <head>

<meta http-equiv=”X-UA-Compatible” content=”IE=edge” />

This forces IE out of compatibility mode. IE will ignore compatibility mode settings from the ‘(F12) Developer Tools’ facility.

Here’s some code that will allow testing.

Done using ‘IE Tester’ http://www.my-debugbar.com/wiki/IETester/HomePage

IE7 and IE8 will render this differently. IE8 in compatibility view mode will render it as IE7 does.

 

Comments welcome…..