Posts

Partially rendering Handlerbars from Backbone view

Image
While working on a project I had this situation where I wanted to render a view partially after some ajax is done. In this post I will explain how to render HandlerBar views partially. For the purpose of demonstrate I will simulate delay using setTimeout() function instead of an ajax request. So for an example lets consider following setup

1. Template
<script id="PersonTemplate" type="text/x-handlebars-template"> <div> {{firstName}} {{lastName}} <div> <div id="divPartial"> <a href="{{website}}">{{website}}</a> </div> </script> 2. Backbone Model
var PersonModel = Backbone.Model.extend({ defaults: { firstName: 'Bharat', lastName: 'Patil', website: '' } }); 3. Backbone view using Handlerbars view
var TestView = Backbone.View.extend({ //assign model view instance model: objPerson, //get the template template…

Step by step Cordova calabash-ios automation

Step by step guide about how to integrate calabash-ios with Cordova in an automated way without opening Apple Xcode.

Note: First try steps given on https://github.com/calabash/calabash-ios.
If those steps aren’t working for you then try following steps. For me only manual steps given on above link worked.
Also this script doesn’t create separate target same as “calabsh-ios setup” command.

I also presume that you have already setup your cordova project and nodejs.
sudo gem install calabash-cucumber If you get any error then try using following command
sudo ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future gem install calabash-cucumber
referenceGo inside your Cordova project directory npm install xcode
npm install fs-extra
npm install underscore
Download script “cordova-calabash-ios.js” from here and paste it inside your cordova project at www level (not inside www).
(Note: This is very primitive script you can modify it according to your need. Let me know also know w…

DataSync PhoneGap/Web applications using LocalStorage

Recently I have developed a PhoneGap application in which I wanted to synchronize data with server. In this post we will see a simple method to send data from PhoneGap application / Web application using LocalStorage as a queue.
Conditions were like below:
Store data in queue locally in LocalStorageSync data with server if onlinewhen application comes online it should start syncing the data again if anyupon successful sync remove from queue else try againsynching one item at a time I have developed this solution using Backbone and Backbone LocalStorage plugin.
Lets start understanding the solution. 1. Backbone Model
var QueueModel = Backbone.Model.extend({ defaults:{ 'url': null, 'method': null //http method like GET, PUT, POST etc. } }); This model is nothing but representation of ajax settings that can be found here.
2. BackboneCollection used as a Queue which is using Backbone.LocalStorage plugin. You should use singleton pattern for following back…

How to create syntax highlighter using jQuery

Image
Today I am going to show you how to create a basic code highlighter for website. This UI is actually inspired by sixrevisions.com. I have added functionality of showing line numbers.
Following things will be covered
How to add line numbersHow to highlight single line comments i.e. those lines which starts with //How to highlight comment blocks i.e. those lines which are enclosed within /* */
Live DemoDownload Code

To use this code highlighter you have to wrap your code inside <pre> tags. Really there is nothing new in it. It is the same traditional old method. <code> tag is another way of adding code into your post. However there is a difference between <pre> and <code> tag. To give analogy of their working I would give example of <div> and <span> respectively. This means <pre> is a block tag and <code> tag can be used inline.
One important thing we need to consider is, in WordPress if you want to post HTML code then you have to es…

KineticJS – draw lines using mouse tutorial

Image
In this post we will see how to draw lines using mouse with KineticJS canvas library. First we will go through a basic logic for drawing line. Also we will see how this logic can be implemented for KineticJS.

live Demo | Download Code
Logic for drawing line on canvas using mouse
Listen for mousedown, mousemove, mouseup events on canvason mousedown
store x1, y1 relative to canvas element
set started = trueon mousemove
if started = false then exit
get current x, y
element = line(x1, y1, x, y)on mouseup
if started = false then exit
get current x, y
element = line(x1, y1, x, y) Explanation is as below
Add following div into body
<div id="canvasArea"> </div> Initialize a stage and layers
var stage = new Kinetic.Stage({ container: 'canvasArea', width: 500, height: 500, draggable: false }), layer = new Kinetic.Layer({ name: 'layer' }), tmpLayer = new Kinetic.Layer({ name: 'tmpLayer' }); In above co…

How to get local time from UTC using Moment.JS

Image
Moment.JS is a beautiful javascript library for parsing, validating, manipulating, and formatting dates. This is a must have utility library when it comes to manipulating timestamps and dates in javascript.

Here I will show how to get local time if you have a utc date time string.

Lets say you have a UTC date-time string as 2014-02-19 05:24:32 AM and you want to determine time in your timezone then use following code:
moment.utc('2014-02-19 05:24:32 AM').toDate();
toDate() method gives javascript Date() object.

Below I have shared an example of how to use it. You can click on JavaScript link below to see the code.

Measure the height of keyboard on PhoneGap app using jQuery

Image
I have been working on a PhoneGap project where I wanted  to scroll the content up and down whenever keyboard  appears and disappears.
 After a bit of searching here and there, I found out that  whenever keyboard appears window's resize event if fired.
 So to determine height of keyboard do the following steps
 1. Inside device ready event store original window height  inside a window variable
window.height = $(window).height();

2. Now on window resize event execute a callback function
$(window).resize(function(){     window.currentHeight = $(this).height();     window.heightDiff = window.height - window.currentHeight;  });

So whenever there is focus on an input element, window's resize event will be triggered which will execute above function and we will have the height of keyboard inside window.heightDiff variable.
Putting it all together function onDeviceReady() { window.height = $(window).height(); $(window).resize(function(){ window.currentHeight = $(this).height();…