Sunday, 11 April 2021

ANGULAR

 ch-1 angular setups and intro

1.npm install -g @angular/cli

2.ng

3.cd desktop

ng new demo

4.cd demo
ng serve --open

5.<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>document</title> </head> <body> <script> class wap{ demo(){ alert(); } } var x=new wap(); x.demo(); </script> </body> </html>

6.<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>document</title> </head> <body> <script> class wap{ myname="saurav"; demo(){ alert(this.myname); } } var x=new wap(); x.demo(); </script> </body> </html>

7.<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>document</title> </head> <body> <script> class wap{ x=12; y=15; z=this.x+this.y; demo(){ alert(this.z); } } var x=new wap(); x.demo(); </script> </body> </html>

8.<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>document</title> </head> <body> <script> class wap{ demo(){ var x="saurav";//wrong to use var alert(x); } } var x=new wap(); x.demo(); </script> </body> </html>

9.<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>document</title> </head> <body> <script> class wap{ demo(){ this.x="saurav"; alert(this.x); } wap(){ alert(this.x); } cad(){ alert(this.x); } } var x=new wap(); x.demo(); x.wap(); x.cad(); </script> </body> </html>

10.<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>document</title> </head> <body> <script> class wap{ constructor(){ alert(); } } new wap(); </script> </body> </html>

11.<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>document</title> </head> <body> <script> function demo(){ alert(); } new demo(); </script> </body> </html>

ch-2 angular coding concepts
1.cd desktop
cd demo
ng serve --open

2.ng generate component homepage
3.ng add @ng-bootstrap/ng-bootstrap
4.ng serve

5.
->app.componenet.html
<h1 class="text-danger">My root component</h1>
<homepage></homepage>

->homepage.component.html
<h2>My homepage</h2> <button class="btn btn-primary" (click)="demo()">testing</button>

->homepage.component.html
<h2>My homepage</h2> <button class="btn btn-primary" (mouseover)="demo()">testing</button>

->homepage.component.html
<h2>{{ x }}</h2> <button class="btn btn-primary" (mouseover)="demo()">testing</button>

->homepage.component.html
<h2>{{ x }}</h2> <button class="btn btn-primary" (click)="demo()">testing</button>

ch-3 angular spa with basic routing
1.ng generate component header
2.ng generate component section
3.ng generate component footer
4.ng generate component courses
5.ng generate component about-us
6.ng generate component contact-us

ch-69 angular intro to sass language
1.<ul> <li><a href="#">home</a></li> <li><a href="#">images</a></li> <li><a href="#">videos</a></li> <li><a href="#">movies</a></li> <li><a href="#">about us</a></li> </ul>

->
//variables $a_tag:green; $large_font:40px; ul{ list-style:none; background-color:$a_tag; li{ display:inline-block; a{ text-decoration:none; padding:0px 32px; color:$a_tag; } a:hover{ color:blue; font-size:$large_font; } } }

->
@import url('https://fonts.googleapis.com/css2?family=Lato:wght@100&family=Open+Sans:wght@300&family=Roboto:wght@100&display=swap');

//sass map
$font_size:(
large:60px,
medium:40px,
small:20px,
);

$fonts: (
  one: Lato,
  two: "Open Sans",
  three: Roboto
);

$colors: (
  primary: blue,
  secondary: #323232,
  warning: yellow,
  danger: red,
  info: navy
);


ul{
list-style:none;
li{
display:inline-block;
a{
text-decoration:none;
padding:0px 32px;
color:map-get($colors,info);
}
a:hover{
color:blue;
font-size:map-get($font_size,large);
font-family:map-get($fonts,one);
}
}
}


2.<button class="border-remove">Testing</button>
<input class="border-remove">

->app.component.scss
@import url('https://fonts.googleapis.com/css2?family=Lato:wght@100&family=Open+Sans:wght@300&family=Roboto:wght@100&display=swap');

@import "./framework/sass/design";


//sass map
$font_size:(
large:60px,
medium:40px,
small:20px,
);

$fonts: (
  one: Lato,
  two: "Open Sans",
  three: Roboto
);

$colors: (
  primary: blue,
  secondary: #323232,
  warning: yellow,
  danger: red,
  info: navy
);


// function
@function demo($x,$el){
@if($el == ul){
@return green;
}

@else{
@return map-get($colors,$x);
}
}

ul{
list-style:none;
background-color:demo(danger,ul);
li{
display:inline-block;
a{
text-decoration:none;
padding:0px 32px;
color:demo(danger,a);
}
a:hover{
color:blue;
}
}
}

button,input{
@include remove-border;
@include myshadow(blue);
@include bgcolor(deeppink);
}

->design.css
@mixin remove-border{
  border: none
}


@mixin myshadow($color){
  box-shadow: 0px 8px 16px 0px $color;
}

@mixin bgcolor($color){
background-color:$color;
}

ch-70 angular crm project setup
1.ng g m modules/all --flat --module app.module

2.ng add @angular/material

3.npm i -s @angular/flex-layout @angular/cdk

4.import { FlexLayoutModule } from '@angular/flex-layout';

5.ng add @angular/fire
6.npm install font-awesome

ch-71 angular firebase email signup
1.ng g m signup --route signup --module app.module
2.ng g s services/auth

ch-72 angular firebase route guard
1.ng g m profile --route profile --module app.module
2.ng g m signin --route signin --module app.module

ch-73 angular firebase email verification
1.npm install sweetalert2 --save
2.import Swal from 'sweetalert2'
3.npm install animate.css --save

ch-74 angular crm customers part 1
1.ng g m profile-data/customers --route profile-data/customers --module profile/profile.module
2.ng g s services/firestore

ch-74 angular crm customers part 2

1.https://www.npmjs.com/package/ngx-cookie-service
2.npm install ngx-cookie-service --save
3.import { CookieService } from 'ngx-cookie-service';
4.ng g s services/storage

ch-75 angular firebase drop upload and image crop

1. npm install ngx-image-cropper –save

2.import { ImageCropperModule } from 'ngx-image-cropper';
3.import { ImageCroppedEvent } from 'ngx-image-cropper';








Saturday, 2 May 2020

TYPESCRIPT

1.typescript_configure_and_setups

1<head>
<script src="demo.ts"></script>
</head>
<body>
</body>

=>demo.ts

window.alert("hello");

->C:\Users\toufi>npm i -g typescript

->C:\Users\toufi>cd desktop

C:\Users\toufi\Desktop>cd demo

C:\Users\toufi\Desktop\demo>tsc demo.ts

C:\Users\toufi\Desktop\demo>


2.typescript_var_const_and_let

1.<body>
<script src="j.js"></script>
</body>
=>j.ts
var x="saurav";
x="wap";
alert(x);

2.<body>
<script src="j.js"></script>
</body>
=>j.ts
const x="saurav";
alert(x);

3.<body>
<script src="j.js"></script>
</body>
=>j.ts
if(10==10)
{
var x="saurav";
}
alert(x);

4.
<body>
<script src="j.js"></script>
</body>
=>j.ts
if(10==10)
{
let x="saurav";
alert(x);
}

3.typescript_intro_to_oops
1.
<body>
<script src="j.js"></script>
</body>
=>j.ts
class wap{
demo()
{
alert("testing");
}
}
var x=new wap()
x.demo();

4.typescript_oops_properties__methods_and_constructor
1.<head>
<script src="demo.ts"></script>
</head>
<body>
</body>
=>j.ts
class wap{
constructor()
{
alert("testing");
}
}
new wap();
=>j.ts
class wap{
constructor(x)
{
alert(x);
}
}
new wap("saurav");
=>j.ts
class wap{
constructor(x,y)
{
alert(x+y);
}
}
new wap(2,4);
=>j.ts
class wap{
data;
constructor()
{
this.data="saurav";
alert(this.data);
}
}
new wap();
=>j.ts
class wap{
data;
constructor(x,y)
{
this.data="saurav";
}
}
var x=new wap();
alert(x.data);

5.typescript_oops_multiple_classes_and_return
1.<head>
<script src="demo.ts"></script>
</head>
<body>
</body>
=>j.ts 
class wap{
data;
demo(){
this.data="saurav";
return this.data;
}
}
var x=new wap();
alert(x.demo());
=>j.ts
class one{
demo(){
document.write("testing");
}
}
class two{
data;
constructor(){
this.data=new one();
this.data.demo();
}
}
new two();


 














Thursday, 23 April 2020

API TRAINING

ch-1 api development configure jwt
1.<?php
echo "success";
?>
=>index.php
$(document).ready(function(){
$.ajax({
type:"POST",
url:"http://adsewap.com/api/index.php",
success:function(response)
{
console.log(response);
}
});
});


2.<?php

header("Access-Control-Allow-Origin:*");

echo "success";

?>

=>index.php
$(document).ready(function(){
$.ajax({
type:"POST",
url:"http://adsewap.com/api/index.php",
success:function(response)
{
console.log(response);
}
});
});

3.<?php
header("Access-Control-Allow-Origin:*");
if($_SERVER['REQUEST_METHOD'] == "POST")
{
echo "success";
}
else{
echo "Access denied";
}
?>
=>index.php
$(document).ready(function(){
$.ajax({
type:"POST",
url:"http://adsewap.com/api/index.php",
success:function(response)
{
console.log(response);
}
});
});
=>index.php
$(document).ready(function(){
 $.ajax({
 type:"GET",
 url:"http://adsewap.com/api/index.php", 
success:function(response) 
console.log(response);
}
});
});

4.<?php
header("Access-Control-Allow-Origin:*");
if($_SERVER['REQUEST_METHOD'] == "POST")
{
echo "success";
}
else{
http_response_code(401);
echo "Access denied";
}
?>
=>index.php
$(document).ready(function(){
$.ajax({
type:"POST",
url:"http://adsewap.com/api/index.php",
success:function(response)
{
console.log(response);
}
});
});

5.<?php
header("Access-Control-Allow-Origin:*");
if($_SERVER['REQUEST_METHOD'] == "POST")
{
echo "success";
}
else{
http_response_code(401);
echo "Access denied";
}
?>
=>index.php
$(document).ready(function(){
$.ajax({
type:"GET",
url:"http://adsewap.com/api/index.php",
success:function(response)
{
console.log(response);
}
});
});

6.<?php
header("Access-Control-Allow-Origin:*");
if($_SERVER['REQUEST_METHOD'] == "POST")
{
http_response_code(200);
echo "success";
}
else{
http_response_code(401);
echo "Access denied";
}
?>
=>index.php
<script>
$(document).ready(function(){
$.ajax({
type:"GET",
url:"http://adsewap.com/api/index.php",
success:function(response)
{
console.log(response);
}
});
});

7.<?php
header("Access-Control-Allow-Origin:*");
require_once("jwt.php");
if($_SERVER['REQUEST_METHOD'] == "POST")
{
http_response_code(200)
$data= "success";
$final=JWT::encode($data,"12345");
echo json_encode(array("response"=>$final));
}
else{
http_response_code(401);
echo "Access denied";
}
?>
=>index.php
$(document).ready(function(){
$.ajax({
type:"POST",
url:"http://adsewap.com/api/index.php",
success:function(response)
{
console.log(response);
}
});
});

8.C:\Users\toufi>composer

9.C:\Users\toufi>cd.. C:\Users>cd.. C:\>cd wamp C:\wamp>cd www C:\wamp\www>cd api_project C:\wamp\www\api_project>composer require firebase/php-jwt


ch-3 api development ajax response
1.<?php
header('Content-Type:application/json');
echo "success";
?>

2.<?php
header('Content-Type:application/json');
echo json_encode(array("data"=>"saurav"));
?>

3.<?php
echo json_encode(array("data"=>"saurav"));
?>

4.<?php
echo json_encode(array("data"=>"saurav"));
echo "saurav";
?>

5.<?php
header('Allow-Control-Allow-Origin:*');
class main{
private $x="saurav";
function demo(){
echo $this->x;
}
}
$d=new main();
$d->demo();
?>

6.<?php
header('Allow-Control-Allow-Origin:*');
class main{
private static $x="saurav";
static function demo(){
echo self::$x;
}
}
$d=new main();
$d->demo();
?>

CH-1 GOOGLE API CLIENT AUTHENTICATION
1.C:\Users\toufi>cd..

C:\Users>cd..

C:\>cd wamp/www/google_api/login_with_google

C:\wamp\www\google_api\login_with_google>composer require google/apiclient:^2.0

2.
=>setup.php
<?php
require_once('vendor/autoload.php');

$google=new Google_Client();

$google->setClientId('98158025683-ehi3hn4kk4e5gf3pmdnajo1i3ctqdlll.apps.googleusercontent.com');

$google->setClientSecret('1VXF7XbOKpmMAV94nXMlNbou');

$google->setRedirectUri('http://localhost/google_api/login_with_google/profile.php');

$google->addScope('email');

$google->addScope('profile');

session_start();

?>

=>index.php
<?php
require_once('setup.php');
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
</head>
<body class="py-5">
<center>
<div class="btn-group border shadow-sm">
<button class="btn bg-white">
<img src="google.png" width="40">
</button> 
<button class="btn btn-light">
<a href="<?php echo $google->createAuthUrl();?>">SIGN IN WITH GOOGLE</a>
</button>
</div>
</center>
</body>

=>profile.php
<?php
error_reporting(0);

require_once('setup.php');

if(isset($_GET['code']))
{

$token=$google->fetchAccessTokenWithAuthCode($_GET['code']);

$_SESSION['token']=$token;

if(!isset($token['error']))
{
$google->setAccessToken($token['access_token']);

$service=new Google_Service_Oauth2($google);

$data=$service->userinfo->get();

$_SESSION['name']=$data['name'];
$_SESSION['src']=$data['picture'];
$_SESSION['email']=$data['email'];
}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<title>picdrive</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
</head>
<body>
<div class="container">
<div class="card" style="width:400px;margin:80px auto">
<img src="<?php echo $_SESSION['src'];?>" class="card-img-top" style="width:100%">
<div class="card-body">
<h4 class="card-title"><?php echo $_SESSION['name'];?></h4>
<span><?php echo $_SESSION['email'];?></span>
<br>
<a href="logout.php" class="btn btn-primary">Logout</a>
</div>
</div>
</div>
</body>

=>logout.php
<?php
require_once("setup.php");

$google->revokeToken($_SESSION['token']);

session_destroy();

header('Location:index.php');
?>

ch-2 google api business chart
1.
=>index.php
<!DOCTYPE html>
<html lang="en">
<head>
<title>picdrive</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script src="area_chart.js"></script>
  <script src="category_chart.js"></script>
  <script src="column_chart.js"></script>
  <script src="geo_chart.js"></script>
</head>
<body>
<div class="container-fluid p-5">
<h4 class="mb-5">Google Charts For Business</h4>
<div class="row">
<div class="col-md-6">
<div class="jumbotron rounded-0 shadow-sm border bg-white w-100" style="height:500px" id="chart_div">
</div>
<button class="btn btn-light border shadow-sm p-3 font-weight export-btn">EXPORT TO PNG</button>
</div>
<div class="col-md-6">
<div class="jumbotron rounded-0 shadow-sm border bg-white" id="cat_name">
</div>
</div>

<div class="col-md-6">
<div class="jumbotron rounded-0 shadow-sm border bg-white" id="column_name">
</div>
</div>

<div class="col-md-6">
<div class="jumbotron rounded-0 shadow-sm border bg-white" id="geo_name">
</div>
</div>
</body>

=>area_chart.js
$(document).ready(function(){
 $.ajax({
 type:"POST",
 url:"data.php",
 success:function(response)
 {
var all_data=JSON.parse(response);
result(all_data);
 }  
 }); 
});


function result(all_data)
{
google.charts.load('current', {'packages':['corechart']});
google.charts.setOnLoadCallback(drawChart);
function drawChart() {

var d=new google.visualization.DataTable();
d.addColumn('string','year');
d.addColumn('number','sales');
d.addColumn('number','profit');
d.addColumn('number','expenses');

for(i=0;i<all_data.length;i++)
{
 var year=all_data[i].year;
 var sales=Number(all_data[i].sales);
 var profit=Number(all_data[i].profit);
 var expenses=Number(all_data[i].expenses);
d.addRows([

[year,sales,profit,expenses]

]);

}


var options = {
title: 'Business report',
titleTextStyle:{color:'red',fontSize:40},
hAxis: {title: 'Year',  titleTextStyle: {color: '#333'}},
vAxis: {minValue: 0,title:'Testing'},
pointSize:30,
pointShape:'star',
lineWidth:5,
legend:'none',
orientation:'vertical',
series:{
0:{color:'red'},
1:{color:'green'},
2:{color:'blue'}  
}
};
var chart = new google.visualization.AreaChart(document.getElementById('chart_div'));
google.visualization.events.addListener(chart,'ready',function(){
$(".export-btn").click(function(){
 var a=document.createElement("a");
 a.href=chart.getImageURI();
 a.download='export.png'; 
 a.click();
});  
});
chart.draw(d, options);
}
}

=>data.php
<?php

$all_data=[];

$db=new mysqli("localhost","root","","api");

$q="SELECT * FROM business";

$response=$db->query($q);

while($data=$response->fetch_assoc())
{
array_push($all_data, $data);
}

echo json_encode($all_data);
?>

CH-3 GOOGLE API CATEGORY AND COLUMN CHART

1.
=>category_chart.js
$(document).ready(function(){
$.ajax({
 type:'POST',
 url:'cat.php',
 success:function(response)
 {
 var all_data=JSON.parse(response);
 data(all_data); 
 } 
});  
});

function data(all_data){
 var i; 
google.charts.load('current', {packages:["orgchart"]});
google.charts.setOnLoadCallback(drawChart);

function drawChart() {
var data = new google.visualization.DataTable();

data.addColumn('string','access_name');
data.addColumn('string','text');

for(i=0;i<all_data.length;i++)
{
if(all_data[i].cat_name != 'null') 
data.addRows([
[{v:all_data[i].v,f:all_data[i].f+"<div style='color:red'>Testing</div>"},all_data[i].cat_name]

]);
}

else{
data.addRows([
[{v:all_data[i].v,f:all_data[i].f},null]

]);
}  
}

// Create the chart.
var chart = new google.visualization.OrgChart(document.getElementById('cat_name'));
// Draw the chart, setting the allowHtml option to true for the tooltips.
google.visualization.events.addListener(chart,'select',function(){
window.location="https://wapinstitute.com";
});
chart.draw(data, {'allowHtml':true,'color':'red','allowCollapse':true,'selectionColor':'yellow'});
}

}

/*
data.addRows([
[{v:'mobile_category',f:'Mobile'},null],
[{v:'computer_category',f:'Computer'},null],
[{v:'nokia',f:'Nokia'},'mobile_category'],
[{v:'samsung',f:'Samsung'},'mobile_category'],
[{v:'nokia-1',f:'Nokia 1'},'nokia'],
[{v:'nokia-2',f:'Nokia 2'},'nokia'],
[{v:'nokia-3',f:'Nokia 3'},'nokia'],
[{v:'samsung-1',f:'Samsung 1'},'samsung'],
[{v:'samsung-2',f:'Samsung 2'},'samsung'],
[{v:'samsung-3',f:'Samsung 3'},'samsung'],

]);
*/

=>column_chart.js
google.charts.load('current', {'packages':['bar']});
google.charts.setOnLoadCallback(drawChart);
function drawChart() {
var data=new google.visualization.DataTable();
data.addColumn('string','year');
data.addColumn('number','profit');

data.addRows([
  ['2016',20000],
  ['2017',40000],
  ['2018',60000]
  ]);

var options = {
chart: {
title: 'Business profit',
subtitle: 'profit from 2016 to 2017',
}
};
var chart = new google.charts.Bar(document.getElementById('column_name'));
chart.draw(data, google.charts.Bar.convertOptions(options));
}

CH-4 GOOGLE API MAPS
1.
=>geo_chart.js
google.charts.load('current', {
'packages':['geochart'],
// Note: you will need to get a mapsApiKey for your project.
// See: https://developers.google.com/chart/interactive/docs/basic_load_libs#load-settings
'mapsApiKey': 'AIzaSyBmSDq7ATBSCeQfvllK-7tBR0OVyaKcWY4'
});
google.charts.setOnLoadCallback(drawRegionsMap);
function drawRegionsMap() {
var data =new google.visualization.DataTable();

data.addColumn('string','states');
data.addColumn('number','Branches');

data.addRows([
['Bihar',20000],
['Uttar Pradesh',50000]
  ]); 


var options = {
region:'IN',
resolution:'provinces',
colors:['red','yellow'],
datalessRegionColor:'black',
tooltip:{textStyle:{color:'red',bold:true,italic:true,fontName:'calibri'}},
legend:{textStyle:{fontSize:20,bold:true}},

};
var chart = new google.visualization.GeoChart(document.getElementById('geo_name'));

google.visualization.events.addListener(chart,'select',function(){
var index= chart.getSelection(); 
alert(index[0].row);
});

chart.draw(data, options);
}

=>index.php
<body>
<div id="result" style="width:100%;height:600px">
</div>
<script>
function demo()
{
navigator.geolocation.getCurrentPosition(function(data){
var lat=data.coords.latitude;
var lng=data.coords.longitude;
var result=document.querySelector("#result");
var map=new google.maps.Map(result,{
center:{lat:lat,lng:lng},
zoom:10
});
});
}
</script>

<script async defer
  src="https://maps.googleapis.com/maps/api/js?key=AIzaSyBmSDq7ATBSCeQfvllK-7tBR0OVyaKcWY4&callback=demo">
</script>
</body>

CH-5 GOOGLE API DYNAMIC MAPS
1.
=>data.php
<?php

$all_data=[];

$db=new mysqli("localhost","root","","api");

$q="SELECT * FROM map";

$response=$db->query($q);

while($data=$response->fetch_assoc())
{
array_push($all_data, $data);
}

echo json_encode($all_data);
?>

=>index.php
<!DOCTYPE html>
<html lang="en">
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>

<meta charset="UTF-8">
<title>map</title>
</head>
<body>
<div id="result" style="width:100%;height:600px">
</div>

<script>
function demo()
{
var result=document.querySelector("#result");
var json_data={
center:{lat:26.151582,lng:85.353609},
zoom:8,
//mapTypeId:'satellite'
mapTypeId:'hybrid'
}
var map=new google.maps.Map(result,json_data);
//map.setMapTypeId('hybrid');

$.ajax({
type:"POST",
url:"data.php",
success:function(response)
{
var all_data=JSON.parse(response);
var i;
for(i=0;i<all_data.length;i++)
{
var lat=Number(all_data[i].lat);
var lng=Number(all_data[i].lng);
var icon={url:all_data[i].icon,scaledSize:new google.maps.Size(50,50)};
var tooltip=all_data[i].tooltip;
multi(lat,lng,icon,tooltip);
}
}
});

function multi(lat,lng,icon,tooltip)
{
var marker=new google.maps.Marker({
position:{lat:lat,lng:lng},
map:map,
//icon:'marker.webp'
icon:icon,
draggable:true,
animation:google.maps.Animation.DROP

});

/*icon:{
url:'marker.webp',scaledSize:new google.maps.Size(150,150)
}*/

/*new google.maps.Marker({
position:{lat:40,lng:50},
map:map,
icon:'marker.webp'
});*/

var tooltip=new google.maps.InfoWindow({
/*content:"<img src='map.png' width='80'><br><h4>Wap Institute</h4>"*/
content:tooltip
});

marker.addListener('click',function(){
//window.location="https://www.google.co.in/"
//tooltip.open(map,marker);
if(marker.getAnimation() == null)
{
marker.setAnimation(google.maps.Animation.BOUNCE);
tooltip.open(map,marker);
}

else{
marker.setAnimation(null);
tooltip.open(null);
}
});

}
}
</script>

<button onclick="dynamic()">show map</button>
<script>
function dynamic(){
var script=document.createElement("SCRIPT");
script.src="https://maps.googleapis.com/maps/api/js?key=AIzaSyBmSDq7ATBSCeQfvllK-7tBR0OVyaKcWY4&callback=demo";
script.async=true;
script.defer=true;
document.body.append(script);
}
</script>
</body>

CH-6 GOOGLE API PLACES AND CHARTS

1.C:\Users\toufi>npm install electron -g

2.C:\Users\toufi>cd desktop/memory

C:\Users\toufi\Desktop\memory>npm init

3.C:\Users\toufi\Desktop\memory>electron .

4.<body>
<script>
var os=require('os');
console.log(os.totalmem()/1024/1024/1024);
</script>
</body>
</html>

5.C:\Users\toufi\Desktop\memory>npm install -D electron

6.C:\Users\toufi\Desktop\memory>npm install -D electron-builder

7.C:\Users\toufi\Desktop\memory>npm run dist

8.search_places.php
<body class="py-5">
<div class="container">
<h4>Google Map</h4>
<input type="search" name="search" placeholder="Enter places" class="form-control mb-4" id="search">
<div class="row">
<div class="col-md-12" id="result" style="height:500px">
</div>
</div>
</div>

<script>
function show_map()
{
var search=document.querySelector("#search");
var result=document.querySelector("#result");

var auto_search=new google.maps.places.Autocomplete(search,{
types:['geocode']
});

google.maps.event.addListener(auto_search,'place_changed',function(){
var place=auto_search.getPlace();
var lat=place.geometry.location.lat();
var lng=place.geometry.location.lng();
var map=new google.maps.Map(result,{
center:{lat:lat,lng:lng},
zoom:15
});
});
}
</script>
</body>

9.index.html
<html>
<head>
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript">
google.charts.load('current', {'packages':['gauge']});
google.charts.setOnLoadCallback(drawChart);
function drawChart() {
var os=require('os');
var free_memory=os.freemem();
var total_momory=os.totalmem();
var used=total_momory-free_memory;
var m=(used*100)/total_momory;
var data = google.visualization.arrayToDataTable([
['Label', 'Value'],
['Used Memory', m],
]);
var options = {
width: 500, height: 500,
redFrom: 90, redTo: 100,
yellowFrom:75, yellowTo: 90,
minorTicks: 5
};
var chart = new google.visualization.Gauge(document.getElementById('chart_div'));
chart.draw(data, options);
}
setInterval(function(){drawChart()},5000);
</script>
</head>
<body>
<div id="chart_div" style="width: 400px; height: 120px;"></div>
</body>
</html>

=>package.json
{
"name": "memory",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "electron .",
"pack": "electron-builder --dir",
"dist": "electron-builder  --ia32 --x64 -w"
},
"author": "",
"license": "ISC",
"devDependencies": {
"electron": "^8.2.5",
"electron-builder": "^22.6.0"
},
"build": {
"appId": "com.wapinstitute.memory",
"productName": "Memory status",
"target": "NSIS",
"publish": null
}
}

10.index.html
<html>
  <head>
    <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
    <script type="text/javascript">
    google.charts.load('current', {'packages':['corechart']});
    google.charts.setOnLoadCallback(drawChart);
    function drawChart() {
    var data=new google.visualization.DataTable();

    data.addColumn("string","name");
    data.addColumn("number","project");

    data.addRows([
      ["Ravi",40],
      ["Rahul",70],
      ["Chandan",90]


      ]);

    var options = {
    title: 'My Daily Activities'
    };
    var chart = new google.visualization.PieChart(document.getElementById('piechart'));
    chart.draw(data, options);
    }
    </script>
  </head>
  <body>
    <div id="piechart" style="width: 900px; height: 500px;"></div>
  </body>
</html>

CH-9 GOOGLE API DRIVE UI PART 1,2
1.<head>
<script src="index.js"></script>
</head>
<body>
<button id="btn">check ui</button>
<script src="https://www.google.com/jsapi"></script>
<script src="https://apis.google.com/js/client.js?onload=setup" async defer></script>
</body>

=>index.js
function setup(){
var ui=new FilePicker({
api_key:"AIzaSyBIt7Fu_EQoVe8xM22mz8R1OQbMMKkBBZs",
client_id:"26790787030-v503dn25ot7s389e2lv8ve8ra3nmf2h1.apps.googleusercontent.com",
button:document.querySelector("#btn"),
onClick:function(file){
ui_popup("https://drive.google.com/file/d/"+file.id+"/view","",1000,500);
}
});
}
function ui_popup(url,title,width,height)
{
}
window.onload=function(){
var left=(screen.width/2)-(1000/2);
var top=(screen.height/2)-(500/2);
window.open("https://wapinstitute.com","","width=1000,height=500,top="+top+",left="+left);
}

2.<head>
<script src="index.js"></script>
</head>
<body>
<button id="btn">check ui</button>
<button onclick="logout()">logout</button>
<script src="https://www.google.com/jsapi"></script>

<script src="https://apis.google.com/js/client.js?onload=setup" async defer></script>
</body>

=>index.js
function setup(){
var ui=new FilePicker({
api_key:"AIzaSyBIt7Fu_EQoVe8xM22mz8R1OQbMMKkBBZs",
client_id:"26790787030-v503dn25ot7s389e2lv8ve8ra3nmf2h1.apps.googleusercontent.com",
button:document.querySelector("#btn"),
onClick:function(file){
ui_popup("https://drive.google.com/file/d/"+file.id+"/view","",1000,500);
}
});
}

function ui_popup(url,title,width,height)
{
var left=(screen.width/2)-(width/2);
var top=(screen.height/2)-(height/2);
window.open(url,title,"width="+width+",height="+height+",top="+top+",left="+left);
}

function FilePicker(data)
{
this.api_key=data.api_key;
this.client_id=data.client_id;
this.button=data.button;
this.onClick=data.onClick;

//group properties
this.button.addEventListener('click',this.open.bind(this));

//this.button.disabled=true;

gapi.client.setApiKey(this.api_key);

gapi.client.load('drive','v2',this.DriveApiLoaded.bind(this));

gapi.load('picker','1',{callback:this.PickerApiLoaded.bind(this)});
}

FilePicker.prototype={
open:function(){
var token=gapi.auth.getToken();
if(token)
{
this.ShowPicker();
}

else{
this.DoAuth(false,function(){
this.ShowPicker();
    }.bind(this));
}

},

ShowPicker:function(){
var access_token=gapi.auth.getToken().access_token;

var doc_view=new google.picker.DocsView();

doc_view=doc_view.setIncludeFolders(true);

var upload_view=new google.picker.DocsUploadView();

upload_view=upload_view.setIncludeFolders(true);

this.picker=new google.picker.PickerBuilder();

this.picker=this.picker.addView(doc_view);

this.picker=this.picker.enableFeature(google.picker.Feature.MULTISELECT_ENABLE);

this.picker=this.picker.setAppId(this.client_id);

this.picker=this.picker.addView(upload_view);

this.picker=this.picker.setOAuthToken(access_token);

this.picker=this.picker.setCallback(this.PickerResponse.bind(this));

this.picker=this.picker.setTitle("Wap Institute").build();

this.picker.setVisible(true);
},

PickerResponse:function(data){
if(data[google.picker.Response.ACTION] == google.picker.Action.PICKED)
{
var file=data[google.picker.Response.DOCUMENTS][0];
var id=file[google.picker.Document.ID];
var request=gapi.client.drive.files.get({fileId :id});
this.ShowPicker();
request.execute(this.GetFileDetails.bind(this));
}
},

GetFileDetails:function(file){
if(this.onClick)
{
this.onClick(file);
}
},

PickerApiLoaded:function(){
this.button.disabled=false;
},

DriveApiLoaded:function(){
this.DoAuth(true);
},

DoAuth:function(quick,callback){
gapi.auth.authorize({
client_id:this.client_id,
scope:'https://www.googleapis.com/auth/drive',
immediate:quick,
},callback);
}
}

//logout

function logout(){
window.location="https://www.google.com/accounts/Logout";
}

ch-15 google api service worker

1.<!DOCTYPE html>
<html lang="en">
<head>
<script src="https://cdn.onesignal.com/sdks/OneSignalSDK.js" async=""></script>
<script>
var OneSignal = window.OneSignal || [];
OneSignal.push(function() {
OneSignal.init({
appId: "82d77603-5de0-47b8-ab23-bbb547237e90",
});
});
</script>
</head>
<body>
<h1>welcome to website</h1>
</body>
</html>

2.<!DOCTYPE html>
<html lang="en">
<head>
<script src="js/test.js"></script>
<link rel="stylesheet" href="css/style.css">
<script src="main.js"></script>
</head>
<body>
<div class="container-fluid">
<div class="jumbotron header">
<h1>ADSE WAP</h1>
<img src="images/b.jpg">
<br><br>
<button><a href="contact.html">Contact</a></button>
</div>
</div>
</body>
</html>

=>main.js
window.onload=function(){
var secured=new Worker("special.js");
secured.onmessage=function(event)
{
alert(event.data);
}
if(navigator.serviceWorker)
{
navigator.serviceWorker.register("service.js");
}

else{
document.write("please update your storage"); }
}

=>service.js
var key="data";
var store=[
'index.html',
'contact.html',
'js/test.js',
'images/b.jpg',
'css/style.css',
'main.js'
];

self.addEventListener('install',function(event){
event.waitUntil(
caches
.open(key)
.then(function(access_key){
access_key.addAll(store);
})
.then(function(){
self.skipWaiting()
})
);
});

self.addEventListener('fetch',function(event){
event.respondWith(fetch(event.request).catch(function(){
caches.match(event.request)
}));
})

=>special.js
var x=10;
var y=20;
var z=x+y;
postMessage(z);