2022-12-19 22:26:51 +00:00
const base _url = "https://oss110metz.rezo-rm.fr/"
2022-12-21 21:58:48 +00:00
var page = [ '#main-page' , '#admin-page' , '#login-page' , '#demande-page' ] ;
2022-12-21 21:57:49 +00:00
window . onpopstate = history . onpushstate = function ( e ) {
2022-12-21 22:22:56 +00:00
if ( e . state ) {
show _page ( e . state , true ) ;
} else {
history . back ( ) ;
}
2022-12-21 21:57:49 +00:00
} ;
history . pushState ( "#main-page" , "" , "" )
2022-12-21 22:25:34 +00:00
function show _page ( id , historyPush ) {
2022-12-21 21:58:48 +00:00
for ( i in page ) {
$ ( page [ i ] ) . hide ( ) ;
}
2022-12-19 22:26:51 +00:00
$ ( id ) . show ( ) ;
2022-12-21 22:22:56 +00:00
if ( ! historyPush ) {
history . pushState ( id , "" , "" )
}
2022-12-19 22:26:51 +00:00
}
2022-12-21 21:20:48 +00:00
$ ( "#login-button" ) . click ( function ( e ) {
var data = JSON . stringify ( {
user : $ ( "#login" ) . val ( ) ,
password : $ ( "#password" ) . val ( )
} ) ;
$ ( "#password" ) . val ( '' ) ;
$ . ajax ( {
type : "POST" ,
url : base _url + "login" ,
data : data ,
contentType : "application/json; charset=utf-8" ,
dataType : "json" ,
success : function ( data ) {
if ( data . success ) {
localStorage . setItem ( "token" , data . token ) ;
2023-01-03 19:13:45 +00:00
localStorage . setItem ( "user" , data . user . uid ) ;
localStorage . setItem ( "isAdmin" , data . user . isAdmin ) ;
2023-01-03 19:15:40 +00:00
if ( data . user . isAdmin ) {
show _page ( '#admin-page' ) ;
2023-01-03 19:20:27 +00:00
get _admin ( "prank" ) ;
2023-01-03 19:15:40 +00:00
} else {
show _page ( '#demande-page' ) ;
}
2022-12-21 21:20:48 +00:00
} else {
2023-01-02 20:38:58 +00:00
alert ( data . why ) ;
2022-12-21 21:20:48 +00:00
}
}
} ) ;
} ) ;
$ ( "#prank-button" ) . click ( function ( ) {
2022-12-21 22:42:53 +00:00
if ( localStorage . getItem ( 'token' ) ) {
2022-12-21 21:20:48 +00:00
show _page ( '#demande-page' ) ;
}
else {
show _page ( '#login-page' ) ;
}
} ) ;
2022-12-21 22:42:53 +00:00
$ ( "#logo" ) . click ( function ( ) {
if ( localStorage . getItem ( 'token' ) ) {
if ( localStorage . getItem ( 'isAdmin' ) ) {
show _page ( '#admin-page' ) ;
2023-01-01 20:40:58 +00:00
// Load prank by default
2023-01-02 22:33:43 +00:00
get _admin ( "prank" ) ;
2022-12-21 22:42:53 +00:00
}
else {
show _page ( '#demande-page' ) ;
}
}
else {
show _page ( '#login-page' ) ;
}
} ) ;
2023-01-02 22:45:00 +00:00
$ ( "#admin-prank" ) . click ( ( ) => {
get _admin ( "prank" ) ;
} )
$ ( "#admin-treasure" ) . click ( ( ) => {
get _admin ( "treasure" ) ;
} )
$ ( "#admin-activity" ) . click ( ( ) => {
get _admin ( "activity" ) ;
} )
2023-01-01 20:40:58 +00:00
function get _admin ( type ) {
2023-01-03 19:48:52 +00:00
$ ( "#admin-content" ) . empty ( ) ;
2023-01-01 20:40:58 +00:00
$ . ajax ( {
type : "POST" ,
2023-01-03 19:20:27 +00:00
url : base _url + "get" ,
2023-01-01 20:40:58 +00:00
data : JSON . stringify ( {
uid : localStorage . getItem ( 'user' ) ,
token : localStorage . getItem ( 'token' ) ,
type : type ,
} ) ,
contentType : "application/json; charset=utf-8" ,
dataType : "json" ,
success : function ( data ) {
if ( data . success ) {
switch ( type ) {
2023-01-02 22:35:30 +00:00
case "prank" :
2023-01-01 20:40:58 +00:00
let doneCnt = 0 ;
let prankData = [ ] ;
for ( prankUid in data . prankData ) {
data . prankData [ prankUid ] . prankUid = prankUid ;
prankData . push ( data . prankData [ prankUid ] ) ;
}
prankData . sort ( ( a , b ) => Date ( a . date ) - Date ( b . date ) ) ;
for ( entry in prankData ) {
switch ( prankData [ entry ] . type ) {
2023-01-02 22:35:30 +00:00
case "crêpe" :
2023-01-01 20:40:58 +00:00
if ( prankData [ entry ] . state == "pending"
|| prankData [ entry ] . state == "accepted" ) {
2023-01-03 19:35:48 +00:00
$ ( "#admin-content" ) . append ( `
2023-01-01 20:40:58 +00:00
< span id = "${prankData[entry].prankUid}" class = "prank" >
< div class = "prank-title" > Demande de crêpe par $ { prankData [ entry ] . creator } < / d i v >
< div class = "prank-amount" > Quantité : $ { prankData [ entry ] . amount } < / d i v >
< div class = "prank-supplement" > Garniture : $ { prankData [ entry ] . supplement } < / d i v >
< div class = "prank-where" > Livraison : $ { prankData [ entry ] . where } < / d i v >
< div class = "prank-note" > Livraison : $ { prankData [ entry ] . note } < / d i v >
< span class = "prank-footer" >
< div class = "prank-uid" > UID : $ { prankData [ entry ] . prankUid } < / d i v >
< div class = "prank-date" > UID : $ { prankData [ entry ] . date } < / d i v >
< / s p a n >
< span class = "prank-btn" >
2023-01-02 20:38:58 +00:00
< div class = "prank-btn-accept" style = "display: ${(prankData[entry].state == " accepted " && prankData[entry].manageBy == localStorage.getItem(" user ")) ? " none " : " flex "};" > $ { ( prankData [ entry ] . state == "pending" ) ? "Accepter" : "Récupérer (accepté par: " + prankData [ entry ] . manageBy + ")" } < / d i v >
2023-01-01 20:40:58 +00:00
< div class = "prank-btn-refused" > Refuser < / d i v >
2023-01-02 20:38:58 +00:00
< div class = "prank-btn-done" style = "display: ${(prankData[entry].state == " accepted " && prankData[entry].manageBy == localStorage.getItem(" user ")) ? " flex " : " none "};" > Done < / d i v >
2023-01-01 20:40:58 +00:00
< / s p a n >
< / s p a n >
` )
} else if ( prankData [ entry ] . state == "done" ) {
doneCnt ++ ;
}
break ;
2023-01-02 22:35:30 +00:00
case "kidnap" :
2023-01-02 20:38:58 +00:00
// Not Handle
2023-01-01 20:40:58 +00:00
break ;
}
}
2023-01-03 19:35:48 +00:00
$ ( "#admin-content" ) . append ( `
2023-01-02 20:38:58 +00:00
< span class = "prank" >
< div id = prankDone > Nombre totale de mission achevées : $ { doneCnt } < / d i v >
< / s p a n >
` );
2023-01-01 20:40:58 +00:00
break ;
2023-01-02 22:35:30 +00:00
case "treasure" :
2023-01-02 22:33:43 +00:00
let treasureData = [ ] ;
for ( treasureUid in data . treasureData ) {
data . treasureData [ treasureUid ] . treasureUid = treasureUid ;
treasureData . push ( data . treasureData [ treasureUid ] ) ;
}
treasureData . sort ( ( a , b ) => Date ( a . date ) - Date ( b . date ) ) ;
for ( entry in treasureData ) {
if ( treasureData [ entry ] . state == "pending" ) {
2023-01-03 19:35:48 +00:00
$ ( "#admin-content" ) . append ( `
2023-01-02 22:33:43 +00:00
< span id = "${treasureData[entry].treasureUid}" class = "treasure" >
< div class = "treasure-title" > Demande de vérification par $ { treasureData [ entry ] . creator } < / d i v >
< div class = "treasure-activity" > Activité : $ { treasureData [ entry ] . activity . title } < / d i v >
< div class = "treasure-desc" > Description : $ { treasureData [ entry ] . desc } < / d i v >
< div class = "treasure-image" > Image : < a href = "${base_url}static/images/${treasureData[entry].image}" target = "_blank" > lien < / a > < / d i v >
< span class = "treasure-footer" >
< div class = "treasure-uid" > UID : $ { treasureData [ entry ] . treasureUid } < / d i v >
< div class = "treasure-date" > UID : $ { treasureData [ entry ] . date } < / d i v >
< / s p a n >
< span class = "treasure-btn" >
< div class = "treasure-btn-accept" > Accepter < / d i v >
< div class = "treasure-btn-refused" > Refuser < / d i v >
< / s p a n >
< / s p a n >
` )
}
}
2023-01-01 20:40:58 +00:00
break ;
2023-01-02 22:35:30 +00:00
case "activity" :
2023-01-03 19:35:48 +00:00
$ ( "#admin-content" ) . append ( `
< span id = "addActivity" class = "activity" >
< label for = "activityType" > Choisir une option : < / l a b e l >
< select name = "type" id = "activityType" >
< option value = "event" > Event < / o p t i o n >
< option value = "treasure" > Trésor < / o p t i o n >
< / s e l e c t >
2023-01-03 20:53:43 +00:00
< div class = "activity-title" > Titre : < textarea type = "text" > < / t e x t a r e a > < / d i v >
< div class = "activity-desc" > Description : < textarea type = "text" > < / t e x t a r e a > < / d i v >
< div class = "activity-where" > Lieu : < textarea type = "text" > < / t e x t a r e a > < / d i v >
2023-01-03 20:56:03 +00:00
< div class = "activity-start" > Début : < input type = "datetime-local" > < / i n p u t > < / d i v >
< div id = "activity-end-add" class = "activity-end" > Fin : < input type = "datetime-local" > < / i n p u t > < / d i v >
2023-01-03 19:35:48 +00:00
< span class = "activity-btn" >
< div id = "activity-btn-add" > Ajouter une activité < / d i v >
< / s p a n >
2023-01-02 22:33:43 +00:00
< / s p a n >
` )
let activityData = [ ] ;
for ( activityUid in data . activityData ) {
data . activityData [ activityUid ] . activityUid = activityUid ;
activityData . push ( data . activityData [ activityUid ] ) ;
}
activityData . sort ( ( a , b ) => Date ( a . start ) - Date ( b . start ) ) ;
for ( entry in activityData ) {
if ( activityData [ entry ] . type = "event" ) {
2023-01-03 19:35:48 +00:00
$ ( "#admin-content" ) . append ( `
2023-01-02 22:33:43 +00:00
< span id = "${activityData[entry].activityUid}" class = "activity" >
2023-01-03 21:00:10 +00:00
< div class = "activity-title" > Event : < textarea type = "text" > $ { activityData [ entry ] . title } < / t e x t a r e a > < / d i v >
< div class = "activity-desc" > Description : < textarea type = "text" > $ { activityData [ entry ] . desc } < / t e x t a r e a > < / d i v >
< div class = "activity-where" > Lieu : < textarea type = "text" > $ { activityData [ entry ] . where } < / t e x t a r e a > < / d i v >
2023-01-03 20:56:03 +00:00
< div class = "activity-start" > Début : < input type = "datetime-local" value = "${toIsoString(new Date(activityData[entry].start))}" > < / i n p u t > < / d i v >
< div class = "activity-end" > Fin : < input type = "datetime-local" value = "${toIsoString(new Date(activityData[entry].end))}" > < / i n p u t > < / d i v >
2023-01-02 22:33:43 +00:00
< span class = "activity-footer" >
< div class = "activity-uid" > UID : $ { activityData [ entry ] . activityUid } < / d i v >
< / s p a n >
< span class = "activity-btn" >
< div class = "activity-btn-update" > Update < / d i v >
< div class = "activity-btn-delete" > Supprimer < / d i v >
< / s p a n >
< / s p a n >
` )
} else if ( activityData [ entry ] . type = "treasure" ) {
2023-01-03 19:35:48 +00:00
$ ( "#admin-content" ) . prepend ( `
2023-01-02 22:33:43 +00:00
< span id = "${activityData[entry].activityUid}" class = "activity" >
2023-01-03 21:00:10 +00:00
< div class = "activity-title" > Trésor : < textarea type = "text" > $ { activityData [ entry ] . title } < / t e x t a r e a > < / d i v >
< div class = "activity-desc" > Description : < textarea type = "text" > $ { activityData [ entry ] . desc } < / t e x t a r e a > < / d i v >
< div class = "activity-where" > Lieu : < textarea type = "text" > $ { activityData [ entry ] . where } < / t e x t a r e a > < / d i v >
2023-01-03 20:56:03 +00:00
< div class = "activity-start" > Début : < input type = "datetime-local" value = "${toIsoString(new Date(activityData[entry].start))}" > < / i n p u t > < / d i v >
2023-01-02 22:33:43 +00:00
< div class = "activity-state" > Status : $ { activityData [ entry ] . treasureState } < / d i v >
< span class = "activity-footer" >
< div class = "activity-uid" > UID : $ { activityData [ entry ] . activityUid } < / d i v >
< / s p a n >
< span class = "activity-btn" >
< div class = "activity-btn-update" > Update < / d i v >
< div class = "activity-btn-delete" > Supprimer < / d i v >
< / s p a n >
< / s p a n >
` )
}
}
2023-01-01 20:40:58 +00:00
break ;
}
2023-01-02 22:33:43 +00:00
refreshListener ( ) ;
2023-01-01 20:40:58 +00:00
} else {
2023-01-03 19:24:31 +00:00
if ( data . why == "Not authentificated" ) {
show _page ( '#login-page' ) ;
} else {
alert ( data . why ) ;
}
2023-01-01 20:40:58 +00:00
}
}
} ) ;
}
2023-01-02 22:33:43 +00:00
function refreshListener ( ) {
$ ( ".prank-btn-accept" ) . click ( ( e ) => {
let uid = e . target . parentNode . parentNode . id
$ . ajax ( {
type : "POST" ,
url : base _url + "acceptPrank" ,
data : JSON . stringify ( {
uid : localStorage . getItem ( 'user' ) ,
token : localStorage . getItem ( 'token' ) ,
prankUid : uid ,
} ) ,
contentType : "application/json; charset=utf-8" ,
dataType : "json" ,
2023-01-02 20:38:58 +00:00
2023-01-02 22:33:43 +00:00
success : function ( data ) {
if ( data . success ) {
let btnElems = $ ( "#" + uid ) . children ( ) [ 6 ] ;
2023-01-03 19:58:46 +00:00
btnElems . children ( ) [ 0 ] . css ( "display" , "none" ) ;
btnElems . children ( ) [ 2 ] . css ( "display" , "flex" ) ;
2023-01-02 22:33:43 +00:00
} else {
2023-01-03 19:24:31 +00:00
if ( data . why == "Not authentificated" ) {
show _page ( '#login-page' ) ;
} else {
alert ( data . why ) ;
}
2023-01-02 22:33:43 +00:00
}
2023-01-02 20:38:58 +00:00
}
2023-01-02 22:33:43 +00:00
} ) ;
} )
2023-01-02 20:38:58 +00:00
2023-01-02 22:33:43 +00:00
$ ( ".prank-btn-refused" ) . click ( ( e ) => {
let uid = e . target . parentNode . parentNode . id
$ . ajax ( {
type : "POST" ,
url : base _url + "refusePrank" ,
data : JSON . stringify ( {
uid : localStorage . getItem ( 'user' ) ,
token : localStorage . getItem ( 'token' ) ,
prankUid : uid ,
} ) ,
contentType : "application/json; charset=utf-8" ,
dataType : "json" ,
2023-01-02 20:38:58 +00:00
2023-01-02 22:33:43 +00:00
success : function ( data ) {
if ( data . success ) {
$ ( "#" + uid ) . remove ( ) ;
} else {
2023-01-03 19:24:31 +00:00
if ( data . why == "Not authentificated" ) {
show _page ( '#login-page' ) ;
} else {
alert ( data . why ) ;
}
2023-01-02 22:33:43 +00:00
}
2023-01-02 20:38:58 +00:00
}
2023-01-02 22:33:43 +00:00
} ) ;
} )
2023-01-02 20:38:58 +00:00
2023-01-02 22:33:43 +00:00
$ ( ".prank-btn-done" ) . click ( ( e ) => {
let uid = e . target . parentNode . parentNode . id
$ . ajax ( {
type : "POST" ,
url : base _url + "donePrank" ,
data : JSON . stringify ( {
uid : localStorage . getItem ( 'user' ) ,
token : localStorage . getItem ( 'token' ) ,
prankUid : uid ,
} ) ,
contentType : "application/json; charset=utf-8" ,
dataType : "json" ,
2023-01-02 20:38:58 +00:00
2023-01-02 22:33:43 +00:00
success : function ( data ) {
if ( data . success ) {
$ ( "#" + uid ) . remove ( ) ;
2023-01-03 19:48:52 +00:00
$ ( "#prankDone" ) [ 0 ] . innerHTML = "Nombre totale de mission achevées: " + ( parseInt ( $ ( "#prankDone" ) [ 0 ] . innerHTML . replace ( "Nombre totale de mission achevées: " , "" ) ) + 1 ) ;
2023-01-02 22:33:43 +00:00
} else {
2023-01-03 19:24:31 +00:00
if ( data . why == "Not authentificated" ) {
show _page ( '#login-page' ) ;
} else {
alert ( data . why ) ;
}
2023-01-02 22:33:43 +00:00
}
}
} ) ;
} )
$ ( ".treasure-btn-accept" ) . click ( ( e ) => {
let uid = e . target . parentNode . parentNode . id
$ . ajax ( {
type : "POST" ,
url : base _url + "acceptTreasure" ,
data : JSON . stringify ( {
uid : localStorage . getItem ( 'user' ) ,
token : localStorage . getItem ( 'token' ) ,
treasureUid : uid ,
} ) ,
contentType : "application/json; charset=utf-8" ,
dataType : "json" ,
success : function ( data ) {
if ( data . success ) {
$ ( "#" + uid ) . remove ( ) ;
} else {
2023-01-03 19:24:31 +00:00
if ( data . why == "Not authentificated" ) {
show _page ( '#login-page' ) ;
} else {
alert ( data . why ) ;
}
2023-01-02 22:33:43 +00:00
}
2023-01-02 20:38:58 +00:00
}
2023-01-02 22:33:43 +00:00
} ) ;
} )
$ ( ".treasure-btn-refused" ) . click ( ( e ) => {
let uid = e . target . parentNode . parentNode . id
$ . ajax ( {
type : "POST" ,
url : base _url + "refuseTreasure" ,
data : JSON . stringify ( {
uid : localStorage . getItem ( 'user' ) ,
token : localStorage . getItem ( 'token' ) ,
treasureUid : uid ,
} ) ,
contentType : "application/json; charset=utf-8" ,
dataType : "json" ,
success : function ( data ) {
if ( data . success ) {
$ ( "#" + uid ) . remove ( ) ;
} else {
2023-01-03 19:24:31 +00:00
if ( data . why == "Not authentificated" ) {
show _page ( '#login-page' ) ;
} else {
alert ( data . why ) ;
}
2023-01-02 22:33:43 +00:00
}
}
} ) ;
} )
$ ( ".activity-btn-update" ) . click ( ( e ) => {
let uid = e . target . parentNode . parentNode . id ;
2023-01-03 20:04:09 +00:00
let children = e . target . parentNode . parentNode . children ;
2023-01-02 22:33:43 +00:00
$ . ajax ( {
type : "POST" ,
2023-01-03 20:32:08 +00:00
url : base _url + "addActivity" ,
2023-01-02 22:33:43 +00:00
data : JSON . stringify ( {
uid : localStorage . getItem ( 'user' ) ,
token : localStorage . getItem ( 'token' ) ,
activityUid : uid ,
type : ( children [ 0 ] . innerHTML . substring ( 0 , 5 ) == "Event" ) ? "event" : "treasure" ,
2023-01-03 20:07:45 +00:00
title : children [ 0 ] . children [ 0 ] . value ,
desc : children [ 1 ] . children [ 0 ] . value ,
where : children [ 2 ] . children [ 0 ] . value ,
start : new Date ( children [ 3 ] . children [ 0 ] . value ) . toString ( ) ,
end : ( children [ 3 ] . children . length == 0 ) ? null : new Date ( children [ 4 ] . children [ 0 ] . value ) . toString ( ) ,
2023-01-02 22:33:43 +00:00
} ) ,
contentType : "application/json; charset=utf-8" ,
dataType : "json" ,
success : function ( data ) {
if ( data . success ) {
alert ( "Update réussie" )
} else {
2023-01-03 19:24:31 +00:00
if ( data . why == "Not authentificated" ) {
show _page ( '#login-page' ) ;
} else {
alert ( data . why ) ;
}
2023-01-02 22:33:43 +00:00
}
}
} ) ;
} )
$ ( ".activity-btn-delete" ) . click ( ( e ) => {
let uid = e . target . parentNode . parentNode . id
$ . ajax ( {
type : "POST" ,
url : base _url + "delActivity" ,
data : JSON . stringify ( {
uid : localStorage . getItem ( 'user' ) ,
token : localStorage . getItem ( 'token' ) ,
activityUid : uid ,
} ) ,
contentType : "application/json; charset=utf-8" ,
dataType : "json" ,
success : function ( data ) {
if ( data . success ) {
$ ( "#" + uid ) . remove ( ) ;
} else {
2023-01-03 19:24:31 +00:00
if ( data . why == "Not authentificated" ) {
show _page ( '#login-page' ) ;
} else {
alert ( data . why ) ;
}
2023-01-02 22:33:43 +00:00
}
}
} ) ;
} )
2023-01-03 19:58:46 +00:00
$ ( "#activityType" ) . on ( "change" , function ( ) {
2023-01-02 22:33:43 +00:00
if ( this . value == "treasure" ) {
2023-01-03 19:58:46 +00:00
$ ( "#activity-end-add" ) . css ( "display" , "none" ) ;
2023-01-02 22:33:43 +00:00
} else if ( this . value == "event" ) {
2023-01-03 19:58:46 +00:00
$ ( "#activity-end-add" ) . css ( "display" , "flex" ) ;
2023-01-02 20:38:58 +00:00
}
2023-01-02 22:33:43 +00:00
} )
2023-01-03 20:04:09 +00:00
$ ( "#activity-btn-add" ) . click ( ( e ) => {
let children = e . target . parentNode . parentNode . children ;
2023-01-02 22:33:43 +00:00
$ . ajax ( {
type : "POST" ,
2023-01-03 20:32:08 +00:00
url : base _url + "addActivity" ,
2023-01-02 22:33:43 +00:00
data : JSON . stringify ( {
uid : localStorage . getItem ( 'user' ) ,
token : localStorage . getItem ( 'token' ) ,
type : $ ( "#activityType" ) . val ( ) ,
2023-01-03 20:07:45 +00:00
title : children [ 2 ] . children [ 0 ] . value ,
desc : children [ 3 ] . children [ 0 ] . value ,
where : children [ 4 ] . children [ 0 ] . value ,
start : new Date ( children [ 5 ] . children [ 0 ] . value ) . toString ( ) ,
end : ( $ ( "#activityType" ) . val ( ) == "treasure" ) ? null : new Date ( children [ 6 ] . children [ 0 ] . value ) . toString ( ) ,
2023-01-02 22:33:43 +00:00
} ) ,
contentType : "application/json; charset=utf-8" ,
dataType : "json" ,
success : function ( data ) {
if ( data . success ) {
get _admin ( "activity" ) ;
} else {
2023-01-03 19:24:31 +00:00
if ( data . why == "Not authentificated" ) {
show _page ( '#login-page' ) ;
} else {
alert ( data . why ) ;
}
2023-01-02 22:33:43 +00:00
}
}
} ) ;
} )
}
2023-01-02 20:38:58 +00:00
2022-12-15 13:30:34 +00:00
$ ( window ) . on ( "load" , function ( ) {
2022-12-20 20:23:31 +00:00
/* Register the Service Worker */
if ( 'serviceWorker' in navigator ) {
2022-12-21 21:20:48 +00:00
navigator . serviceWorker . register ( './js/sw.js' ) ;
2022-12-20 20:23:31 +00:00
}
2022-12-21 21:58:48 +00:00
for ( i in page ) {
$ ( page [ i ] ) . css ( 'z-index' , i ) ;
}
2022-12-15 13:30:34 +00:00
/* load timer */
window . setInterval ( function ( ) {
var time = $ ( "#timer" ) . text ( ) ;
var t = time . split ( ":" ) . map ( t => parseInt ( t ) ) ;
t [ 2 ] -= 1 ;
if ( t [ 2 ] < 0 ) {
t [ 2 ] = 59 ;
t [ 1 ] -= 1 ;
}
if ( t [ 1 ] < 0 ) {
t [ 1 ] = 59 ;
t [ 0 ] -= 1 ;
}
if ( t [ 0 ] < 0 ) {
t [ 0 ] = 0 ;
t [ 1 ] = 0 ;
t [ 2 ] = 0 ;
}
2022-12-15 16:14:41 +00:00
$ ( "#timer" ) . text ( ( new Date ( 'December 17, 1995 ' + t . join ( ':' ) ) ) . toLocaleTimeString ( 'default' , {
hour : '2-digit' ,
minute : '2-digit' ,
second : '2-digit'
} ) ) ;
2022-12-15 13:30:34 +00:00
} , 1000 ) ;
2022-12-19 22:26:51 +00:00
} ) ;
2023-01-02 22:33:43 +00:00
function toIsoString ( date ) {
var tzo = - date . getTimezoneOffset ( ) ,
dif = tzo >= 0 ? '+' : '-' ,
pad = function ( num ) {
return ( num < 10 ? '0' : '' ) + num ;
} ;
return date . getFullYear ( ) +
'-' + pad ( date . getMonth ( ) + 1 ) +
'-' + pad ( date . getDate ( ) ) +
'T' + pad ( date . getHours ( ) ) +
':' + pad ( date . getMinutes ( ) ) +
':' + pad ( date . getSeconds ( ) ) ;
}