/*jshint esversion: 6 */
/*********** MessageBox ****************/
// simply show info. Only close button
function infoMessageBox ( message , title ) {
$ ( "#info-body" ) . html ( message ) ;
$ ( "#info-title" ) . html ( title ) ;
$ ( "#info-popup" ) . modal ( 'show' ) ;
}
// modal with full control
function messageBox ( body , title , ok _text , close _text , callback ) {
$ ( "#modal-body" ) . html ( body ) ;
$ ( "#modal-title" ) . html ( title ) ;
if ( ok _text ) $ ( "#modal-button" ) . html ( ok _text ) ;
if ( close _text ) $ ( "#modal-close-button" ) . html ( close _text ) ;
$ ( "#modal-button" ) . unbind ( "click" ) ; // remove existing events attached to this
$ ( "#modal-button" ) . click ( callback ) ;
$ ( "#popup" ) . modal ( "show" ) ;
}
/*********** crontab actions ****************/
function deleteJob ( _id ) {
// TODO fix this. pass callback properly
messageBox ( "<p> Do you want to delete this Job? </p>" , "Confirm delete" , null , null , function ( ) {
$ . post ( routes . remove , { _id : _id } , function ( ) {
location . reload ( ) ;
} ) ;
} ) ;
}
function stopJob ( _id ) {
messageBox ( "<p> Do you want to stop this Job? </p>" , "Confirm stop job" , null , null , function ( ) {
$ . post ( routes . stop , { _id : _id } , function ( ) {
location . reload ( ) ;
} ) ;
} ) ;
}
function startJob ( _id ) {
messageBox ( "<p> Do you want to start this Job? </p>" , "Confirm start job" , null , null , function ( ) {
$ . post ( routes . start , { _id : _id } , function ( ) {
location . reload ( ) ;
} ) ;
} ) ;
}
function setCrontab ( ) {
messageBox ( "<p> Do you want to set the crontab file? </p>" , "Confirm crontab setup" , null , null , function ( ) {
$ . get ( routes . crontab , { "env_vars" : $ ( "#env_vars" ) . val ( ) } , function ( ) {
// TODO show only if success
infoMessageBox ( "Successfuly set crontab file!" , "Information" ) ;
} ) ;
} ) ;
}
function getCrontab ( ) {
messageBox ( "<p> Do you want to get the crontab file? </p>" , "Confirm crontab retrieval" , null , null , function ( ) {
$ . get ( routes . import _crontab , { "env_vars" : $ ( "#env_vars" ) . val ( ) } , function ( ) {
// TODO show only if success
infoMessageBox ( "Successfuly got the crontab file!" , "Information" ) ;
location . reload ( ) ;
} ) ;
} ) ;
}
function editJob ( _id ) {
var job = null ;
crontabs . forEach ( function ( crontab ) {
if ( crontab . _id == _id )
job = crontab ;
} ) ;
if ( job ) {
$ ( "#job" ) . modal ( "show" ) ;
$ ( "#job-name" ) . val ( job . name ) ;
$ ( "#job-command" ) . val ( job . command ) ;
// if macro not used
if ( job . schedule . indexOf ( "@" ) != 0 ) {
var components = job . schedule . split ( " " ) ;
$ ( "#job-minute" ) . val ( components [ 0 ] ) ;
$ ( "#job-hour" ) . val ( components [ 1 ] ) ;
$ ( "#job-day" ) . val ( components [ 2 ] ) ;
$ ( "#job-month" ) . val ( components [ 3 ] ) ;
$ ( "#job-week" ) . val ( components [ 4 ] ) ;
}
schedule = job . schedule ;
job _command = job . command ;
if ( job . logging && job . logging != "false" )
$ ( "#job-logging" ) . prop ( "checked" , true ) ;
job _string ( ) ;
}
$ ( "#job-save" ) . unbind ( "click" ) ; // remove existing events attached to this
$ ( "#job-save" ) . click ( function ( ) {
// TODO good old boring validations
$ . post ( routes . save , { name : $ ( "#job-name" ) . val ( ) , command : job _command , schedule : schedule , _id : _id , logging : $ ( "#job-logging" ) . prop ( "checked" ) } , function ( ) {
location . reload ( ) ;
} ) ;
} ) ;
}
function newJob ( ) {
schedule = "" ;
job _command = "" ;
$ ( "#job-minute" ) . val ( "*" ) ;
$ ( "#job-hour" ) . val ( "*" ) ;
$ ( "#job-day" ) . val ( "*" ) ;
$ ( "#job-month" ) . val ( "*" ) ;
$ ( "#job-week" ) . val ( "*" ) ;
$ ( "#job" ) . modal ( "show" ) ;
$ ( "#job-name" ) . val ( "" ) ;
$ ( "#job-command" ) . val ( "" ) ;
job _string ( ) ;
$ ( "#job-save" ) . unbind ( "click" ) ; // remove existing events attached to this
$ ( "#job-save" ) . click ( function ( ) {
// TODO good old boring validations
$ . post ( routes . save , { name : $ ( "#job-name" ) . val ( ) , command : job _command , schedule : schedule , _id : - 1 , logging : $ ( "#job-logging" ) . prop ( "checked" ) } , function ( ) {
location . reload ( ) ;
} ) ;
} ) ;
}
function doBackup ( ) {
messageBox ( "<p> Do you want to take backup? </p>" , "Confirm backup" , null , null , function ( ) {
$ . get ( routes . backup , { } , function ( ) {
location . reload ( ) ;
} ) ;
} ) ;
}
function delete _backup ( db _name ) {
messageBox ( "<p> Do you want to delete this backup? </p>" , "Confirm delete" , null , null , function ( ) {
$ . get ( routes . delete _backup , { db : db _name } , function ( ) {
location = routes . root ;
} ) ;
} ) ;
}
function restore _backup ( db _name ) {
messageBox ( "<p> Do you want to restore this backup? </p>" , "Confirm restore" , null , null , function ( ) {
$ . get ( routes . restore _backup , { db : db _name } , function ( ) {
location = routes . root ;
} ) ;
} ) ;
}
function import _db ( ) {
messageBox ( "<p> Do you want to import crontab?<br /> <b style='color:red'>NOTE: It is recommended to take a backup before this.</b> </p>" , "Confirm import from crontab" , null , null , function ( ) {
$ ( '#import_file' ) . click ( ) ;
} ) ;
}
// script corresponding to job popup management
var schedule = "" ;
var job _command = "" ;
function job _string ( ) {
$ ( "#job-string" ) . val ( schedule + " " + job _command ) ;
return schedule + " " + job _command ;
}
function set _schedule ( ) {
schedule = $ ( "#job-minute" ) . val ( ) + " " + $ ( "#job-hour" ) . val ( ) + " " + $ ( "#job-day" ) . val ( ) + " " + $ ( "#job-month" ) . val ( ) + " " + $ ( "#job-week" ) . val ( ) ;
job _string ( ) ;
}
// popup management ends