Newer
Older
* @module URL_OPT_DIR/quiqqer/cron/bin/Manager
'qui/QUI',
'qui/controls/windows/Confirm',
'Ajax',
'Locale'
],function(QUI, QUIPanel, QUIConfirm, QUIButton, QUIButtonSeperator, Grid, Ajax, Locale)
Type : 'URL_OPT_DIR/quiqqer/cron/bin/Manager',
initialize : function(options)
{
this.parent( options );
this.addEvents({
onCreate : this.$onCreate,
onResize : this.$onResize
});
},
/**
* Load the crons into the grid
*
* @return {self}
*/
loadCrons : function()
{
var self = this;
Ajax.get('package_quiqqer_cron_ajax_getList', function(result)
{
if ( !self.$Grid ) {
return;
}
var i, len, Btn;
for ( i = 0, len = result.length; i < len; i++ )
{
result[ i ].status = {
title : 'Cron aktivieren / deaktivieren',
icon : result[ i ].active == 1 ? 'icon-ok' : 'icon-remove',
cronId : result[ i ].id,
events :
{
onClick : function(Btn)
{
self.toggleStatusOfCron(
Btn.getAttribute( 'cronId' )
);
}
}
};
result[ i ].play = {
name : 'cron-play-button-'+ result[ i ].id,
title : 'Cron ausführen',
icon : 'icon-play',
cronId : result[ i ].id,
events :
{
onClick : function(Btn)
{
self.execCron(
Btn.getAttribute( 'cronId' )
);
}
}
};
self.$Grid.setData({
data : result
});
},
/**
* event : on Create
*/
$onCreate : function()
{
name : 'add',
text : 'Cron hinzufügen',
textimage : 'icon-plus',
events :
{
onClick : function() {
self.openAddCronWindow();
}
}
})
);
this.addButton( new QUIButtonSeperator() );
this.addButton(
new QUIButton({
name : 'edit',
text : 'Markierten Cron editieren',
textimage : 'icon-pencil',
events :
{
onClick : function() {
self.editMarkedCron();
}
}
})
);
name : 'delete',
text : 'Markierte(n) Cron(s) löschen',
textimage : 'icon-trash',
events :
{
onClick : function() {
self.deleteMarkedCrons();
this.addButton( new QUIButtonSeperator() );
this.addButton(
new QUIButton({
name : 'history',
text : 'Cron History',
textimage : 'icon-long-arrow-right',
events :
{
onClick : function() {
self.showHistory();
}
}
})
);
this.getButtons( 'delete' ).disable();
var Content = this.getContent(),
size = Content.getSize(),
Container = new Element('div', {
'class' : 'box',
styles : {
width : '100%',
height : '100%'
}
}).inject( Content );
this.$Grid = new Grid(Container, {
columnModel : [{
header : 'Status',
}, {
header : ' ',
dataIndex : 'play',
dataType : 'button',
width : 50
}, {
header : 'ID',
dataIndex : 'id',
dataType : 'string',
width : 50
dataType : 'string',
width : 150
}, {
header : 'Min',
dataIndex : 'min',
dataType : 'string',
width : 50
}, {
header : 'Std',
dataIndex : 'hour',
dataType : 'string',
width : 50
}, {
header : 'Tag',
dataIndex : 'day',
dataType : 'string',
width : 50
}, {
header : 'Monat',
dataIndex : 'month',
dataType : 'string',
width : 50
}, {
header : 'Exec',
dataIndex : 'exec',
dataType : 'string',
width : 150
}, {
header : 'Parameter',
dataIndex : 'params',
dataType : 'string',
width : 150
}, {
header : 'Cron-Beschreibung',
dataIndex : 'desc',
dataType : 'string',
width : 200
}],
multipleSelection : true,
pagination : true
});
this.$Grid.addEvents({
onRefresh : function() {
self.loadCrons();
},
onClick : function()
{
var delButton = self.getButtons( 'delete' ),
editButton = self.getButtons( 'edit' ),
selected = self.$Grid.getSelectedIndices().length;
if ( selected == 1 )
{
editButton.enable();
} else
{
editButton.disable();
}
{
delButton.enable();
} else
{
delButton.disable()
}
},
onDblClick : function(data)
{
var rowData = self.$Grid.getDataByRow( data.row );
self.editCron( rowData.id );
}
});
this.loadCrons();
},
/**
* event : on resize
*/
$onResize : function()
{
if ( !this.$Grid ) {
return;
}
var Content = this.getContent(),
size = Content.getSize();
this.$Grid.setHeight( size.y - 40 );
this.$Grid.setWidth( size.x - 40 );
},
/**
* Open the delete marked cron windows and delete all marked crons
*
* @return {self}
*/
deleteMarkedCrons : function()
{
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
if ( !this.$Grid ) {
return this;
}
var self = this,
data = this.$Grid.getSelectedData();
if ( !data.length ) {
return this;
}
var ids = data.map(function(o) {
return o.id;
});
new QUIConfirm({
icon : 'icon-remove',
title : 'Cron Einträge löschen',
text : '<p>Möchten Sie folgende Cron Einträge wirklich löschen?</p>',
information : '<p>Zu löschende Cron-Einträge: <b>'+ ids.join(',') +'</b></p>' +
'<p>Beachten Sie, die Cron-Einträge sind nicht wieder herstellbar</p>',
events :
{
onSubmit : function(Win)
{
Win.Loader.show();
Ajax.post('package_quiqqer_cron_ajax_delete', function()
{
Win.close();
self.loadCrons();
}, {
'package' : 'quiqqer/cron',
ids : JSON.encode( ids )
});
}
}
}).open();
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
* Edit a cron, opens the cron Edit-Window
*
* @param {String} cronId - ID of the Cron
*/
editCron : function(cronId)
{
var self = this;
require(['package/quiqqer/cron/bin/CronWindow'], function(Window)
{
new Window({
cronId : cronId,
events :
{
onSubmit : function() {
self.loadCrons();
}
}
}).open();
});
return this;
},
/**
* Opens the Edit-Window for the marked cron
*/
editMarkedCron : function()
{
if ( !this.$Grid ) {
return this;
}
var self = this,
data = this.$Grid.getSelectedData();
if ( !data.length ) {
return this;
}
this.editCron( data[ 0 ].id );
},
/**
* Open the add Cron-Window
*
* @return {self}
*/
openAddCronWindow : function()
{
var self = this;
require(['package/quiqqer/cron/bin/CronWindow'], function(Window)
{
new Window({
events :
{
onSubmit : function() {
self.loadCrons();
}
}
}).open();
});
return this;
},
/**
* Change the cron status
* If the cron is active to deactive
* If the cron is deactive to active
*
* @param {Integer} cronId - ID of the Cron
* @return {self}
*/
toggleStatusOfCron : function(cronId)
{
var self = this;
Ajax.post('package_quiqqer_cron_ajax_cron_toggle', function(result)
{
self.loadCrons();
}, {
'package' : 'quiqqer/cron',
cronId : cronId
});
return this;
},
/**
* Execute the cron
*
* @param {Integer} cronId - ID of the Cron
* @return {self}
*/
execCron : function(cronId)
{
var i, len;
var buttons = [];
if ( this.$Grid ) {
buttons = QUI.Controls.get( 'cron-play-button-'+ cronId );
}
for ( i = 0, len = buttons.length; i < len; i++ ) {
buttons[ i ].setAttribute('icon', 'icon-refresh icon-spin');
}
Ajax.post('package_quiqqer_cron_ajax_cron_executeCron', function(result)
{
for ( i = 0, len = buttons.length; i < len; i++ ) {
buttons[ i ].setAttribute('icon', 'icon-play');
}
}, {
'package' : 'quiqqer/cron',
cronId : cronId
});
},
/**
* Show the Cron-History Panel
*/
showHistory : function()
{
var self = this;
require(['package/quiqqer/cron/bin/History'], function(Panel) {
new Panel().inject( self.getParent() );
});
}