Showing posts with label javascript. Show all posts
Showing posts with label javascript. Show all posts

Thursday, December 13, 2018

Search keywords in HTML content and highlight


Declare below variables in class
highlightClass = "highlightText";
highlightRe: any;
spaceRe = /\s+/;
spaceRe2 = /\s+$/;
before: any = "";
after: any = "";

Thursday, November 22, 2018

Call a function of Controller "One" inside Controller "Two" - IONIC1

app.controller('One', ['$scope', '$rootScope'
    function($scope) {
        $rootScope.$on("CallParentMethod", function(){
           $scope.parentmethod();
        });

        $scope.parentmethod = function() {
            // task
        }
    }
]);
app.controller('two', ['$scope', '$rootScope'
    function($scope) {
        $scope.childmethod = function() {
            $rootScope.$emit("CallParentMethod", {});
        }
    }
]);

While $rootScope.$emit is called, you can send any data as second parameter.

Solution for IONIC2+  will be up soon.

Whatsapp message from hybrid app


There are two different ways to open whatsapp form hybrid application.

<a target="_blank" href="whatsapp://send?text=hello">open whatsapp</a>



<a target="_blank" href="whatsapp://send?text=my message&phone=+XXXXXXXXXXXX&abid=+XXXXXXXXXXXX">Whatsapp me please</a>


Monday, July 24, 2017

Log execution time of function/Ajax Call



Initialization of the variable to store all logs in controller

$rootScope.timeSlots = {};



//Function to create object with eventname , start time, end time using ID
$scope.logEvent = function(Eventid, EventName, isEnd){
    if(isEnd == false){
         $rootScope.timeSlots[Eventid] = {
            "name": EventName,
            "startDate":new Date().getTime()
         };
    } else {
        $rootScope.timeSlots[Eventid]["endDate"] = new Date().getTime();
    }
};
Log starting time 
$scope.logEvent("function1","Function1 start Time", false);

Tuesday, June 20, 2017

Angular/Ionic not updating an image src when ng-src is empty

The Angular ngSrc directive serves to properly set an image src via Angular. As anything in Angular, it updates the image as soon as the contained Angular expression changes. However, when the ng-src attribute is empty, Angular will not empty the src attribute. To overcome this, use the trick below.
<img ng-src="{{ element.image || '//:0' }}" />

Background

The ngSrc directive explicitly returns when the attribute value is false. As a workaround, set a "blank" image src when the image is empty. As somebody on Stackoverflow writes, //:0 serves this purpose: It adopts the current protocol, omits the hostname and sets the port to zero, which is invalid and should be killed by the network layer.
As a result, Angular should now correctly empty the src attribute when ng-src empties.


Change timeout for connection request in iOS

Code to change ajax request timeout for ios and also for hybrid(Cordova) apps.

Find NSURLRequest in your native code. Change the timeoutInterval value.

  NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:serverURL] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:15.0];



👍

Wednesday, February 15, 2017

Multiplication of two numbers as array - In Javascript

Javascript Code 

var arry1 = [3,4,6,9,9,9];
var arry2 = [9,8,9,8,5];
$("#arry1").html(arry1.toString());
$("#arry2").html(arry2.toString());
var directResult = arry1.join('') * arry2.join(''); // to compare result 
$("#result").html(directResult);
var calResult = [];
var vadi=0;
for(var i=0;i<arry2.length;i++){
  calResult[i]=[];
  vadi = 0;
  for(var j=arry1.length-1;j>=0;j--){
    var temp= arry1[j]*arry2[i]+vadi;
    if(temp.toString().length > 1){
      vadi = parseInt(temp.toString().substr(0, 1));
      temp = parseInt(temp.toString().substr(1, 1));
    } else{
      vadi = 0;
    }
    calResult[i].unshift(temp);
  }
  for(var k=i+1;k<arry2.length;k++){
      calResult[i].push(0);
  }
  if(vadi!=0){
    calResult[i].unshift(vadi);
    vadi = 0;
  }
  if(calResult[i].length != calResult[0].length){
    var lengthDiff = calResult[0].length-calResult[i].length;
    for(var p=0;p<lengthDiff;p++){
      calResult[i].unshift(vadi);  
    }
  }
}
var finalResult = [];
var finalvadi = 0;
for(var m =calResult[0].length-1;m>=0;m--){
  var tempr = 0;
  for(var n=0; n<calResult.length;n++){
    tempr+=calResult[n][m];
  }
  tempr+=finalvadi;
  finalvadi=0;
  if(tempr.toString().length > 1){
    finalvadi = parseInt(tempr.toString().substr(0, 1));
    tempr = parseInt(tempr.toString().substr(1, 1));
  } else{
    finalvadi = 0;
  }
 finalResult.unshift(tempr);
}
if(finalvadi!=0){
    finalResult.unshift(finalvadi);
}
$("#finalResult").html(finalResult.toString());

HTML Code

 <div id="arry1"></div>
<div id="arry2"></div>
<div>-----------</div>
<div id="result"></div>
<br/><br/>
<div>------------------</div>
<div id="finalResult" style=""></div>


Output: 


3,4,6,9,9,9
9,8,9,8,5
-----------
34347696015


------------------
3,4,3,4,7,6,9,6,0,1,5

Thursday, June 9, 2016

Error: Database location or iosDatabaseLocation value is now mandatory in openDatabase call

if you are using Cordova sqlite plugin you may have this issue while open local DB file.

 _sqlLiteDB = $cordovaSQLite.openDB({ name: "testDB.db", iosDatabaseLocation:'default'}); 
// Works on android but not in iOS

                   

Error: Database location or iosDatabaseLocation value is now mandatory in openDatabase call



Use below to open DB:
window.sqlitePlugin.openDatabase({ name: "testDB.db", location: 2, createFromLocation: 1});


Solution:

if(isAndroid){
                    // Works on android but not in iOS
                    _sqlLiteDB = $cordovaSQLite.openDB({ name: "testDB.db", iosDatabaseLocation:'default'}); 
} else{
                    // Works on iOS 
                    _sqlLiteDB = window.sqlitePlugin.openDatabase({ name: "testDB.db", location: 2, createFromLocation: 1}); 
 }



Wednesday, June 1, 2016

error JSON.stringify()ing argument: RangeError: Invalid Date

There is minor bug in contact plugin in cordova ionic. contact list is loaded with error due to the birthdate field in contact card. Its bad practice to keep minor error in execution of code, It may effect to different OS versions.

error JSON.stringify()ing argument: RangeError: Invalid Date


Cordova Plugin: cordova-plugin-contacts
Verison: 2.1.0 "Contacts"


Open convertUtils.js file  

File Path: plugins/cordova-plugin-contacts/www/convertUtils.js



Find function "toCordovaFormat" and remove below try-catch code.


 try {
         contact.birthday = new Date(parseFloat(value));
} catch (exception){
          console.log("Cordova Contact toCordovaFormat error: exception creating date.");
}

add below code instead of try-catch

if (value !== null) {
        try {
                contact.birthday = new Date(parseFloat(value));
               
                //we might get 'Invalid Date' which does not throw an error
                //and is an instance of Date.
                if (isNaN(contact.birthday.getTime())) {
                       contact.birthday = null;
               }
               
        } catch (exception){
                console.log("Cordova Contact toCordovaFormat error: exception creating date.");
        }
}

Check below screenshot for better understand.




iOS contact card does not have value for "displayName". "displayName" is used for the android devices. So For iOS device, use "name.formatted" instead of "displayName".

Cheers.... Keep Coding... :)








Wednesday, May 25, 2016

Easily Track Javascript File and line number which has error

When all else fails, the issue may be caused by errors in your JavaScript application. A helpful way to determine this is to use the window.onerror function to track down your errors.

Easily Track Javascript File and line number which has error


window.onerror = function (err, fileName, lineNumber) {
   // alert or console.log a message
   alert(fileName, 'Line:', lineNumber, 'Error:', e.message);
};

Parameter info: 
// err: error message
// fileName: which file error occurs in
// lineNumber: what line error occurs on

Thursday, February 12, 2015

Smooth Scroll Using jQuery

Smooth Scroll Using jQuery Code:


$(function() {
  $('a[href*=#]:not([href=#])').click(function() {
    if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) {
      var target = $(this.hash);
      target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
      if (target.length) {
        $('html,body').animate({
          scrollTop: target.offset().top
        }, 1000);
        return false;
      }
    }
  });
});

Thursday, January 23, 2014

Add New Line On Mailto Syntax

This link needed to include a subject, CC, BCC and body text.

As the code used for html emails is still quite basic, so that all possible email programs can read them well, and I did not want to risk using a javascript based obfuscator I had to use the mailto syntax when usually.

The MailTo command can do more than enter a single e-mail address in the “Send To” field while activating your e-mail program.

Address message to multiple recipients
, (comma separating e-mail addresses)

Add entry in the “Subject” field
subject=Subject Field Text

Add entry in the “Copy To” or “CC” field
cc=id@internet.node

Wednesday, January 8, 2014

PhoneGap: Detect File Loaded from Phonegap or Not

/** * Determine whether the file loaded from PhoneGap or not */

 function isPhoneGap() { 
     return (cordova || PhoneGap || phonegap) 
     && /^file:\/{3}[^\/]/i.test(window.location.href) 
     && /ios|iphone|ipod|ipad|android/i.test(navigator.userAgent); 
}
 if ( isPhoneGap() ) { 
     alert("Running on PhoneGap!"); 
} else { 
     alert("Not running on PhoneGap!"); 
}

Tuesday, January 7, 2014

Roman Number Converter Using Javascript

Javascript 

Number to Roman convert:

function toroman (num) {
if (!+num)
return false;
var digits = String(+num).split(""),
key = ["","C","CC","CCC","CD","D","DC","DCC","DCCC","CM",
"","X","XX","XXX","XL","L","LX","LXX","LXXX","XC",
"","I","II","III","IV","V","VI","VII","VIII","IX"],
roman = "",

Friday, August 9, 2013

Create Mathematical Validation in Phone

create input, box and operation div in the html file.
write below code in the js file.
var answer;

var method = ['+', '-', '*'];
var operation;
//var operation='1+2+3';

// load new operation on page laod
new_operation();

Wednesday, July 10, 2013

Get Element Attribute Value using jQuery

Create textarea element to enter html content dynamic

// button click
$('#click_elemtn').click(function(){
    var str= $('#html_content').text();
    html = $.parseHTML( str ); // parse text to html
    $.each( html, function( i, el ) {
        var attr = $(el).attr('src'); // attribute name that you want fro the textarea content
        if (typeof attr !== 'undefined' && attr !== false) {
            alert(attr); // attribute value
        }
    });
});

you can get attribute value in alert dialog.

refer below URL for live example

http://jsfiddle.net/RNmJ2/

Friday, April 19, 2013

Get County from User Lat Long

In Mobile application how the server knows about the posted device country and response then as per the location.

Get the current location of the device and use google map api to get user location. Get location from the ipaddress is a worth thing now. because all the internet user use proxy network.

PHP:

<?php

$cur_lat =$_REQUEST['lat'];
$cur_lon = $_REQUEST['lon'];

Stop Copy Text from Phonegap Applications

Hello,

Phonegap application is based on the HTML, CSS and JQuery. So if the user double tap on the app content then it will select the text and give option to copy and select text.

So for the application privacy if app admin does not want to copy application text then here is a way to stop selection of text.

Monday, April 1, 2013

Image store in Database.

Get the image URL that you want to store in the database.

$file= "http://sitename.com/image1.jpg";

$imgdata = base64_encode(file_get_content($file));

Above syntax give you a image in encoded formate. Store image data as a text in the database.

Use of image data in html app.
Get data from the database and append "data:image/jpeg:base64," before the data string like below:

data:image/jpeg:base64,imgdata

Use appended string as a source of the image like below:

<img src="data:image/jpeg:base64,skadadjsiweryerjtkHRUWNHDDhASDJKKSDHD=" />

It will display image to the application.. in mobile applications does not need to load image from the server. and its also use for the offline application.

Wednesday, February 13, 2013

Disable Page Scroll on jQueryMobile Popup opens

when JQM popup open, and you dont want to scroll page then try this code.

Disable scroll.
$( ".popup").live({
                      popupbeforeposition: function(event, ui) {
                        $("body").on("touchmove", false);
                      }
});

After close popup release scroll.
$( ".popup" ).live({
                      popupafterclose: function(event, ui) {
                        $("body").unbind("touchmove");
                      }
});