Saravanan's Corner: Blackberry Dev

Wednesday, 26 February 2025

 <!DOCTYPE html>

<html>

<head>

<meta name="viewport" content="width=device-width, initial-scale=1">

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">

<style>

* {box-sizing: border-box}

body {font-family: Verdana, sans-serif; margin:0}

.mySlides {display: none}

img {vertical-align: middle;}


/* Slideshow container */

.slideshow-container {

  max-width: 1000px;

  position: relative;

  margin: auto;

}


/* Next & previous buttons */

.prev, .next {

  cursor: pointer;

  position: absolute;

  top: 50%;

  width: auto;

  padding: 16px;

  margin-top: -22px;

  color: white;

  font-weight: bold;

  font-size: 18px;

  transition: 0.6s ease;

  border-radius: 0 3px 3px 0;

  user-select: none;

}


/* Position the "next button" to the right */

.next {

  right: 0;

  border-radius: 3px 0 0 3px;

}


/* On hover, add a black background color with a little bit see-through */

.prev:hover, .next:hover {

  background-color: rgba(0,0,0,0.8);

}


/* Caption text */

.text {

  color: #f2f2f2;

  font-size: 15px;

  padding: 8px 12px;

  position: absolute;

  bottom: 8px;

  width: 100%;

  text-align: center;

}


/* Number text (1/3 etc) */

.numbertext {

  color: #f2f2f2;

  font-size: 12px;

  padding: 8px 12px;

  position: absolute;

  top: 0;

}


/* The dots/bullets/indicators */

.dot {

  cursor: pointer;

  height: 15px;

  width: 15px;

  margin: 0 2px;

  background-color: #bbb;

  border-radius: 50%;

  display: inline-block;

  transition: background-color 0.6s ease;

}


.active, .dot:hover {

  background-color: #717171;

}


/* Fading animation */

.fade {

  animation-name: fade;

  animation-duration: 1.5s;

}


@keyframes fade {

  from {opacity: .4} 

  to {opacity: 1}

}


/* On smaller screens, decrease text size */

@media only screen and (max-width: 300px) {

  .prev, .next,.text {font-size: 11px}

}

.btn-group button {

  background-color: #04AA6D; /* Green background */

  border: 1px solid green; /* Green border */

  color: white; /* White text */

  padding: 10px 24px; /* Some padding */

  cursor: pointer; /* Pointer/hand icon */

}


/* Clear floats (clearfix hack) */

.btn-group:after {

  content: "";

  clear: both;

  display: table;

}


.btn-group button:not(:last-child) {

  border-right: none; /* Prevent double borders */

}


/* Add a background color on hover */

.btn-group button:hover {

  background-color: #3e8e41;

}


/*mobile menu*/

.mobile-container {

  max-width: 480px;

  margin: auto;

  background-color: #555;

  height: 500px;

  color: white;

  border-radius: 10px;

}


.topnav {

  overflow: hidden;

  background-color: #333;

  position: relative;

}


.topnav #myLinks {

  display: none;

}


.topnav a {

  color: white;

  padding: 14px 16px;

  text-decoration: none;

  font-size: 17px;

  display: block;

}


.topnav a.icon {

  background: black;

  display: block;

  position: absolute;

  right: 0;

  top: 0;

}


.topnav a:hover {

  background-color: #ddd;

  color: black;

}


.active {

  background-color: #04AA6D;

  color: white;

}

</style>

</head>

<body>


<div class="slideshow-container">


<!-- Top Navigation Menu -->

<div class="topnav">

  <a href="#home" class="active">Radiant Systems</a>

  <div id="myLinks">

    <a href="#news">News</a>

    <a href="#contact">Contact</a>

    <a href="#about">About</a>

  </div>

  <a href="javascript:void(0);" class="icon" onclick="myFunction()">

    <i class="fa fa-bars"></i>

  </a>

</div>


<div class="mySlides fade">

  <img src="img_nature_wide.jpg" style="width:100%"> 

  <div>Slide 1</div>

  <div style="text-align:center"><br/>

  <div class="btn-group">

  <button>Contact</button>

  </div>

   </div>   

</div>


<div class="mySlides fade">

  

  <img src="img_snow_wide.jpg" style="width:100%">

  <div>Slide 2</div>

  <div style="text-align:center"><br/>

  <div class="btn-group">

  <button>Contact</button>

  </div>

   </div>  

</div>


<div class="mySlides fade">

   

  <img src="img_mountains_wide.jpg" style="width:100%">

 <div>Slide 3</div>

  <div style="text-align:center"><br/>

  <div class="btn-group">

  <button>Contact</button>

  </div>

   </div>  

</div>


<a class="prev" onclick="plusSlides(-1)">❮</a>

<a class="next" onclick="plusSlides(1)">❯</a>


</div>

<br>


<div style="text-align:center">

  <span class="dot" onclick="currentSlide(1)"></span> 

  <span class="dot" onclick="currentSlide(2)"></span> 

  <span class="dot" onclick="currentSlide(3)"></span> 

</div>


<script>


function myFunction() {

  var x = document.getElementById("myLinks");

  if (x.style.display === "block") {

    x.style.display = "none";

  } else {

    x.style.display = "block";

  }

}



let slideIndex = 1;

showSlides(slideIndex);


function plusSlides(n) {

  showSlides(slideIndex += n);

}


function currentSlide(n) {

  showSlides(slideIndex = n);

}


function showSlides(n) {

  let i;

  let slides = document.getElementsByClassName("mySlides");

  let dots = document.getElementsByClassName("dot");

  if (n > slides.length) {slideIndex = 1}    

  if (n < 1) {slideIndex = slides.length}

  for (i = 0; i < slides.length; i++) {

    slides[i].style.display = "none";  

  }

  for (i = 0; i < dots.length; i++) {

    dots[i].className = dots[i].className.replace(" active", "");

  }

  slides[slideIndex-1].style.display = "block";  

  dots[slideIndex-1].className += " active";

}

</script>


</body>

</html> 


Thursday, 23 January 2025

Angular - Interview Questions and Answers

 Angular


Module-> component -> 


npm install -g typescript

tsc -variable


npm install -g @angular/cli


ng serve --open

ng new 

ng generate component login

@input -- parent to child component

@output -- child to parent component


@input('name')

variable declaration;


Component :

Each component defines a class that contains application data and logic, and is associated with an HTML template that defines a view to be displayed in a target environment.


Templates - A template combines HTML with Angular markup that can modify HTML elements before they are displayed.

Template directives provide program logic, and binding markup connects your application data and the DOM.


Binding

-> One way binding

-> Two way binding - achieved by ngModel --> FormsModule --> @angular/forms

---->1. Event binding

=> String Interpolation with Attribute binding - 

---->2.Attribute binding --> [src] 

---->3.Property binding --> Binding with html elements properties <h1 [innerText]="text">

Property binding with safe navigation Operater --> ? is a safenavigation operation for null check. --> user?.name

==============

-->What are decorators in Angular? 

Decorators are a design pattern or function that defines how Angular features work. They are used to make prior modifications to a class, service, or filter. Angular supports four types of decorators, they are: Class Decorators, Property Decorators, Method Decorators and Parameter Decorators

==============

->Directives : Directives are attributes that allow the user to write new HTML syntax specific to their applications. They execute whenever the Angular compiler finds them in the DOM. Angular supports three types of directives.

1.Component directives - These are special directives that have a template or template URLs. They are essentially components that show something in the DOM.

2.Structural directives -  ngFor, ngIf - These directives manipulate the DOM elements by adding or removing elements, thus changing the structure of the DOM. ngFor Variables (index, first, last, even, odd)

3.Attribute directives - ngClass, ngStyle. These directives change the appearance or behavior of an html element.

    

Creating Custom Directive - Highlighting Text Example, you can use the @Directive  

- ng generate directive highlight(directive name) 

================

->Pipes: - 

change one value to another value

Some key features include:

Pipes are defined using the pipe “|” symbol.

Pipes can be chained with other pipes.

Pipes can be provided with arguments by using the colon (:) sign.

--> pripe ice ppercase pipe,lowercase pipes, slice pipe

Date pipe - > unformated date to fourmatted date . {{toDate | date}} 

===============================================

->LifeCycle Hooks

1.Constructor: Angular invokes the component class constructor

2.ngOnChanges: --only for @input decorator-- Angular calls ngOnChanges method whenever it detects changes to input properties. The first call happens before the component is fully initialized, which is before ngOnInit

3.ngOnInit: It gets called once, after the first ngOnChanges. At this point, the component is fully initialized

4.ngDoCheck: Angular calls ngDoCheck method immediately after ngOnInit and then every subsequent check of the component

5.ngAfterContentInit and ngAfterContentChecked: are called after Angular projects external content into the component's view

6.ngAfterViewInit and ngAfterViewChecked: These are called when the component's view, and the views of its child directives, are fully initialized


==========================================