1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
| "use strict";
const
kIsoFormat = d3.time.format( "%Y-%m-%dT%H:%M:%S.%L%Z" ),
kModel = Symbol( 'ObjModel' ),
kGetType = function( Obj ){
return Object.prototype.toString.call( Obj ).match( /\s([a-zA-Z]+)/ )[ 1 ].toLowerCase();
},
kSetModel = function( Obj ){
if ( kGetType( Obj ) === "object" ){
Obj[ kModel ] = Object.create( Object.prototype );
Object.getOwnPropertyNames( Obj ).forEach( function( key ){
if ( key != kModel ) {
Object.defineProperty( Obj[ kModel ], key, {
"value" : kGetType( Obj[ key ] ),
"enumerable" : true
});
}
});
Object.getOwnPropertySymbols( Obj ).forEach( function( key ){
if ( key != kModel ) {
Object.defineProperty( Obj[ kModel ], key, {
"value" : kGetType( Obj[ key ] ),
"enumerable" : true
});
}
});
} else {
throw `Erreur dans kSetModel(), ${Obj} n'est pas un objet`;
}
},
kCreateDOMObject = function( domFragment, keys, boolChildren ){
let
Obj = Object.create( Object.prototype ),
nodes = [],
treeWalker = {},
bool = boolChildren || false;
if ( kGetType( domFragment ).slice( 0, 4 ) === "html" ) {
treeWalker = document.createTreeWalker(
domFragment,
NodeFilter.SHOW_ELEMENT,
{
"acceptNode" : function( node ){
if ( bool ) {
return NodeFilter.FILTER_ACCEPT;
} else if ( node.parentNode === domFragment ) {
return NodeFilter.FILTER_ACCEPT;
}
return NodeFilter.FILTER_SKIP;
}
},
false
);
while( treeWalker.nextNode() ){
nodes.push( treeWalker.currentNode );
}
nodes.forEach( function( item, i ){
let key = "dom_" + ( keys[ i ] ? keys[ i ] : i );
Object.defineProperty( Obj, key, {
"value" : item,
"enumerable" : true
});
});
} else {
alert( `L'objet créé est vide, car le paramètre domFragment ne contient pas un fragment du DOM` );
}
return Obj;
},
dvjhDate = class extends Date {
constructor( p ){
if ( p ) {
super( p );
} else {
super();
}
this.auteur = 'Daniel Hagnoul';
}
toString(){
return kIsoFormat( this );
}
}; |
Partager