@ -36,10 +36,11 @@ export class EnvoyerCarteComponent implements OnInit, OnDestroy {
commercant : Commercant ;
opComm : OperationCommerciale ;
cartePar : CarteParrainage ;
birthdayTemp : Date ;
commList : FirebaseListObservable < any [ ] > ;
opCommList : FirebaseListObservable < any [ ] > ;
parrainExistList : FirebaseListObservable < any [ ] > ;
parrainSelected : FirebaseListObservable < any [ ] > ;
parrainAffList : FirebaseListObservable < any [ ] > ;
carteParList : FirebaseListObservable < any [ ] > ;
parSelect : string ;
@ -101,7 +102,7 @@ export class EnvoyerCarteComponent implements OnInit, OnDestroy {
this . opComm = element ;
this . cartePar . uid = firebase . database ( ) . ref ( ) . child ( 'CarteParrainage' ) . push ( ) . key ;
this . cartePar . name = this . opComm . name ;
this . cartePar . commercant ID = this . opComm . idCommercant ;
this . cartePar . commercant Carte. uid = this . opComm . commercantOpCom . uid ;
this . cartePar . operationCommercialID = this . opComm . uid ;
this . cartePar . dateDebut = this . opComm . dateDebut ;
this . cartePar . dateFin = this . opComm . dateFin ;
@ -129,11 +130,11 @@ export class EnvoyerCarteComponent implements OnInit, OnDestroy {
console . log ( 'carte :' + carte . length ) ;
carte . forEach ( elementCarte = > {
console . log ( "elementCarte. parrainID : " + elementCarte . parrainID ) ;
console . log ( "elementCarte. .parrainCarte.uid : " + elementCarte . parrainCarte . uid ) ;
this . parrainAffList = this . afDb . list ( '/Parrain/' , {
query : {
orderByChild : 'uid' ,
equalTo : elementCarte.parrain ID
equalTo : elementCarte.parrain Carte.uid
}
}
) ;
@ -192,13 +193,14 @@ export class EnvoyerCarteComponent implements OnInit, OnDestroy {
emailVerified : true
} ) ;
this . cartePar . parrain ID = userCreate . uid ;
this . cartePar . parrain Carte. uid = userCreate . uid ;
this . parrain . uid = userCreate . uid ;
this . parrain . emailVerified = userCreate . emailVerified ;
userRef . set ( this . parrain ) ;
this . creerCartePar ( ) ;
firebase . auth ( ) . sendPasswordResetEmail ( this . parrain . email ) ;
userCreate . sendEmailVerification ( )
firebase . auth ( ) . signOut ( ) ;
firebase . auth ( ) . signInWithEmailAndPassword ( this . commercant . email , this . commercant . password ) ;
} ) ;
@ -213,7 +215,7 @@ export class EnvoyerCarteComponent implements OnInit, OnDestroy {
getIdParrain ( parUid ) {
this . cartePar . parrain ID = parUid ;
this . cartePar . parrain Carte. uid = parUid ;
this . selectPar = true ;
@ -238,9 +240,21 @@ export class EnvoyerCarteComponent implements OnInit, OnDestroy {
} ) ;
}
console . log ( 'this.cartePar.commercantID : ' + this . cartePar . commercantID ) ;
console . log ( 'this.cartePar.parrainID : ' + this . cartePar . parrainID ) ;
this . parrainSelected = this . afDb . list ( '/Parrain/' , {
query : {
orderByChild : 'uid' ,
equalTo : parUid
}
}
) ;
this . parrainSelected . forEach ( paSel = > {
paSel . forEach ( elementPaSel = > {
this . parrain = elementPaSel ;
} ) ;
} ) ;
// console.log('this.birthday parrain : ' + this.parrain.birthday);
console . log ( 'this.cartePar.commercantCarte.uid : ' + this . cartePar . commercantCarte . uid ) ;
console . log ( 'this.cartePar..parrainCarte.uid : ' + this . cartePar . parrainCarte . uid ) ;
console . log ( 'this.cartePar.operationCommercialID : ' + this . cartePar . operationCommercialID ) ;
console . log ( 'this.cartePar.dateDebut : ' + this . cartePar . dateDebut ) ;
console . log ( 'this.cartePar.dateFin : ' + this . cartePar . dateFin ) ;
@ -248,9 +262,60 @@ export class EnvoyerCarteComponent implements OnInit, OnDestroy {
creerCartePar() {
this . opComService . creerCartePar ( this . cartePar ) ;
// this.opComService.creerCartePar(this.cartePar);
this . sectionToImage ( this . cartePar ) ;
// console.log('iiiiiiiii :' + this.opComService.saveImg(this.cartePar));
}
sectionToImage ( maCarteP : CarteParrainage ) {
html2canvas ( document . getElementById ( 'subCard1' ) , {
// allowTaint: true,
useCORS : true ,
logging : true ,
onrendered : function ( canvas ) {
var context = canvas . getContext ( '2d' ) ;
var img = new Image ( ) ;
var offsets = document . getElementById ( 'subCard1' ) . getBoundingClientRect ( ) ;
var imgTop = offsets . top ;
var imgLeft = offsets . left ;
img . onload = function ( ) {
context . drawImage ( img , imgLeft , imgTop ) ;
} ;
img . crossOrigin = 'Anonymous' ;
canvas . crossOrigin = 'Anonymous' ;
canvas . id = 'canvas' ;
document . body . appendChild ( canvas ) ;
canvas . toBlob ( blob = > {
var nouvelleImg = new Image ( ) ;
let storageRef = firebase . storage ( ) . ref ( ) ;
nouvelleImg . setAttribute ( 'crossOrigin' , 'anonymous' ) ;
nouvelleImg . src = blob ;
storageRef . child ( 'CarteParrainage/' + maCarteP . uid + '/carteTemplate' ) . put ( blob ) . then ( ( snapshot ) = > {
// console.log('Uploaded a blob or file! Now storing the reference at', `/${this.folder}/images/`);
// this.afDb.list(`/${folder}/`).push({ path: path, filename: selectedFile.name });
let updates = { } ;
maCarteP . carteTemplate . path = 'CarteParrainage/' + maCarteP . uid + '/carteTemplate' ;
maCarteP . carteTemplate . filename = maCarteP . name ;
maCarteP . carteTemplate . downloadURL = snapshot . downloadURL ;
updates [ 'CarteParrainage/' + maCarteP . uid ] = maCarteP ;
firebase . database ( ) . ref ( ) . update ( updates ) ;
} ) ;
} ) ;
}
} ) ;
}
goToOpComm() {
this . router . navigate ( [ '/opCommercial' ] ) ;
}
//////
ngOnInit() {
this . subscription = this . opComService . getParrains ( )
@ -264,8 +329,8 @@ export class EnvoyerCarteComponent implements OnInit, OnDestroy {
this . cartePar = {
uid : '' ,
name : '' ,
parrain ID: '' ,
commercant ID: '' ,
parrain Carte: new Parrain ( ) ,
commercant Carte: new Commercant ( ) ,
operationCommercialID : '' ,
dateDebut : new Date ( ) ,
dateFin : new Date ( ) ,
@ -298,332 +363,4 @@ export class EnvoyerCarteComponent implements OnInit, OnDestroy {
status : ''
} ;
}
sectionToImage ( monURL : string ) {
/ * *
* covert canvas to image
* and save the image file
* /
var Canvas2Image = function ( ) {
// check if support sth.
var $support = function ( ) {
var canvas = document . createElement ( 'canvas' ) ,
ctx = canvas . getContext ( '2d' ) ;
return {
canvas : ! ! ctx ,
imageData : ! ! ctx . getImageData ,
dataURL : ! ! canvas . toDataURL ,
btoa : ! ! window . btoa
} ;
} ( ) ;
var downloadMime = 'image/png' ;
function scaleCanvas ( canvas , width , height ) {
var w = canvas . width ,
h = canvas . height ;
if ( width == undefined ) {
width = w ;
}
if ( height == undefined ) {
height = h ;
}
var retCanvas = document . createElement ( 'canvas' ) ;
var retCtx = retCanvas . getContext ( '2d' ) ;
retCanvas . width = width ;
retCanvas . height = height ;
retCtx . drawImage ( canvas , 0 , 0 , w , h , 0 , 0 , width , height ) ;
return retCanvas ;
}
function getDataURL ( canvas , type , width , height ) {
canvas = scaleCanvas ( canvas , width , height ) ;
return canvas . toDataURL ( type ) ;
}
function saveFile ( strData ) {
document . location . href = strData ;
}
function genImage ( strData ) {
var img = document . createElement ( 'img' ) ;
img . src = strData ;
return img ;
}
function fixType ( type ) {
type = type . toLowerCase ( ) . replace ( /jpg/i , 'jpeg' ) ;
var r = type . match ( /png|jpeg|bmp|gif/ ) [ 0 ] ;
return 'image/' + r ;
}
function encodeData ( data ) {
if ( ! window . btoa ) {
throw 'btoa undefined'
}
var str = '' ;
if ( typeof data == 'string' ) {
str = data ;
} else {
for ( var i = 0 ; i < data . length ; i ++ ) {
str += String . fromCharCode ( data [ i ] ) ;
}
}
return btoa ( str ) ;
}
function getImageData ( canvas ) {
var w = canvas . width ,
h = canvas . height ;
return canvas . getContext ( '2d' ) . getImageData ( 0 , 0 , w , h ) ;
}
function makeURI ( strData , type ) {
return 'data:' + type + ';base64,' + strData ;
}
/ * *
* create bitmap image
* 按 照 规 则 生 成 图 片 响 应 头 和 响 应 体
* /
var genBitmapImage = function ( oData ) {
//
// BITMAPFILEHEADER: http://msdn.microsoft.com/en-us/library/windows/desktop/dd183374(v=vs.85).aspx
// BITMAPINFOHEADER: http://msdn.microsoft.com/en-us/library/dd183376.aspx
//
var biWidth = oData . width ;
var biHeight = oData . height ;
var biSizeImage = biWidth * biHeight * 3 ;
var bfSize = biSizeImage + 54 ; // total header size = 54 bytes
//
// typedef struct tagBITMAPFILEHEADER {
// WORD bfType;
// DWORD bfSize;
// WORD bfReserved1;
// WORD bfReserved2;
// DWORD bfOffBits;
// } BITMAPFILEHEADER;
//
var BITMAPFILEHEADER = [
// WORD bfType -- The file type signature; must be "BM"
0x42 , 0x4D ,
// DWORD bfSize -- The size, in bytes, of the bitmap file
bfSize & 0xff , bfSize >> 8 & 0xff , bfSize >> 16 & 0xff , bfSize >> 24 & 0xff ,
// WORD bfReserved1 -- Reserved; must be zero
0 , 0 ,
// WORD bfReserved2 -- Reserved; must be zero
0 , 0 ,
// DWORD bfOffBits -- The offset, in bytes, from the beginning of the BITMAPFILEHEADER structure to the bitmap bits.
54 , 0 , 0 , 0
] ;
//
// typedef struct tagBITMAPINFOHEADER {
// DWORD biSize;
// LONG biWidth;
// LONG biHeight;
// WORD biPlanes;
// WORD biBitCount;
// DWORD biCompression;
// DWORD biSizeImage;
// LONG biXPelsPerMeter;
// LONG biYPelsPerMeter;
// DWORD biClrUsed;
// DWORD biClrImportant;
// } BITMAPINFOHEADER, *PBITMAPINFOHEADER;
//
var BITMAPINFOHEADER = [
// DWORD biSize -- The number of bytes required by the structure
40 , 0 , 0 , 0 ,
// LONG biWidth -- The width of the bitmap, in pixels
biWidth & 0xff , biWidth >> 8 & 0xff , biWidth >> 16 & 0xff , biWidth >> 24 & 0xff ,
// LONG biHeight -- The height of the bitmap, in pixels
biHeight & 0xff , biHeight >> 8 & 0xff , biHeight >> 16 & 0xff , biHeight >> 24 & 0xff ,
// WORD biPlanes -- The number of planes for the target device. This value must be set to 1
1 , 0 ,
// WORD biBitCount -- The number of bits-per-pixel, 24 bits-per-pixel -- the bitmap
// has a maximum of 2^24 colors (16777216, Truecolor)
24 , 0 ,
// DWORD biCompression -- The type of compression, BI_RGB (code 0) -- uncompressed
0 , 0 , 0 , 0 ,
// DWORD biSizeImage -- The size, in bytes, of the image. This may be set to zero for BI_RGB bitmaps
biSizeImage & 0xff , biSizeImage >> 8 & 0xff , biSizeImage >> 16 & 0xff , biSizeImage >> 24 & 0xff ,
// LONG biXPelsPerMeter, unused
0 , 0 , 0 , 0 ,
// LONG biYPelsPerMeter, unused
0 , 0 , 0 , 0 ,
// DWORD biClrUsed, the number of color indexes of palette, unused
0 , 0 , 0 , 0 ,
// DWORD biClrImportant, unused
0 , 0 , 0 , 0
] ;
var iPadding = ( 4 - ( ( biWidth * 3 ) % 4 ) ) % 4 ;
var aImgData = oData . data ;
var strPixelData = '' ;
var biWidth4 = biWidth << 2 ;
var y = biHeight ;
var fromCharCode = String . fromCharCode ;
do {
var iOffsetY = biWidth4 * ( y - 1 ) ;
var strPixelRow = '' ;
for ( var x = 0 ; x < biWidth ; x ++ ) {
var iOffsetX = x << 2 ;
strPixelRow += fromCharCode ( aImgData [ iOffsetY + iOffsetX + 2 ] ) +
fromCharCode ( aImgData [ iOffsetY + iOffsetX + 1 ] ) +
fromCharCode ( aImgData [ iOffsetY + iOffsetX ] ) ;
}
for ( var c = 0 ; c < iPadding ; c ++ ) {
strPixelRow += String . fromCharCode ( 0 ) ;
}
strPixelData += strPixelRow ;
} while ( -- y ) ;
var strEncoded = encodeData ( BITMAPFILEHEADER . concat ( BITMAPINFOHEADER ) ) + encodeData ( strPixelData ) ;
return strEncoded ;
} ;
/ * *
* saveAsImage
* @param canvasElement
* @param { String } image type
* @param { Number } [ optional ] png width
* @param { Number } [ optional ] png height
* /
var saveAsImage = function ( canvas , width , height , type ) {
if ( $support . canvas && $support . dataURL ) {
if ( typeof canvas == "string" ) {
canvas = document . getElementById ( canvas ) ;
}
if ( type == undefined ) {
type = 'png' ;
}
type = fixType ( type ) ;
if ( /bmp/ . test ( type ) ) {
var data = getImageData ( scaleCanvas ( canvas , width , height ) ) ;
var strData = '' ;
strData = genBitmapImage ( data ) ;
saveFile ( makeURI ( strData , downloadMime ) ) ;
} else {
var strData = '' ;
strData = getDataURL ( canvas , type , width , height ) ;
saveFile ( strData . replace ( type , downloadMime ) ) ;
}
}
} ;
var convertToImage = function ( canvas , width , height , type ) {
if ( $support . canvas && $support . dataURL ) {
if ( typeof canvas == "string" ) {
canvas = document . getElementById ( canvas ) ;
}
if ( type == undefined ) {
type = 'png' ;
}
type = fixType ( type ) ;
if ( /bmp/ . test ( type ) ) {
var data = getImageData ( scaleCanvas ( canvas , width , height ) ) ;
var strData = '' ;
strData = genBitmapImage ( data ) ;
return genImage ( makeURI ( strData , 'image/bmp' ) ) ;
} else {
var strData = '' ;
strData = getDataURL ( canvas , type , width , height ) ;
return genImage ( strData ) ;
}
}
} ;
return {
saveAsImage : saveAsImage ,
saveAsPNG : function ( canvas , width , height ) {
return saveAsImage ( canvas , width , height , 'png' ) ;
} ,
saveAsJPEG : function ( canvas , width , height ) {
return saveAsImage ( canvas , width , height , 'jpeg' ) ;
} ,
saveAsGIF : function ( canvas , width , height ) {
return saveAsImage ( canvas , width , height , 'gif' ) ;
} ,
saveAsBMP : function ( canvas , width , height ) {
return saveAsImage ( canvas , width , height , 'bmp' ) ;
} ,
convertToImage : convertToImage ,
convertToPNG : function ( canvas , width , height ) {
return convertToImage ( canvas , width , height , 'png' ) ;
} ,
convertToJPEG : function ( canvas , width , height ) {
return convertToImage ( canvas , width , height , 'jpeg' ) ;
} ,
convertToGIF : function ( canvas , width , height ) {
return convertToImage ( canvas , width , height , 'gif' ) ;
} ,
convertToBMP : function ( canvas , width , height ) {
return convertToImage ( canvas , width , height , 'bmp' ) ;
}
} ;
} ( ) ;
/ *
html2canvas ( document . body ) . then ( canvas = > {
var imgData = canvas . toDataURL ( "image/png" ) ;
var context = canvas . getContext ( '2d' ) ;
console . log ( imgData ) ;
window . open ( imgData ) ;
// this.AddImagesResource(imgData);
// document.body.appendChild(canvas);
} ) ; * /
html2canvas ( document . getElementById ( 'subCard1' ) , {
allowTaint : true ,
useCORS : true ,
logging : true ,
onrendered : function ( canvas ) {
var context = canvas . getContext ( '2d' ) ;
var img = new Image ( ) ;
var offsets = document . getElementById ( 'subCard1' ) . getBoundingClientRect ( ) ;
var imgTop = offsets . top ;
var imgLeft = offsets . left ;
// var offsetsContainer = document.getElementById('subCard1').getBoundingClientRect();
// var imageLeft = imgLeft - offsetsContainer.left;
// var imageTop = imgTop - offsetsContainer.top;
img . src = monURL ; // document.getElementById('myimage').getAttribute('src');
img . onload = function ( ) {
context . drawImage ( img , imgLeft , imgTop ) ;
} ;
document . body . appendChild ( canvas ) ;
Canvas2Image . saveAsPNG ( canvas , 50 , 1000 ) ;
// window.open(canvas.toDataURL('image/png'));
}
} ) ;
}
goToOpComm() {
this . router . navigate ( [ '/opCommercial' ] ) ;
}
}