Newer
Older

Henning Leutz
committed
* @module package/quiqqer/cron/bin/Manager

Henning Leutz
committed
*
* @require qui/QUI
* @require qui/controls/desktop/Panel
* @require qui/controls/windows/Confirm
* @require qui/controls/buttons/Button
* @require qui/controls/buttons/Seperator
* @require controls/grid/Grid
* @require Ajax
* @require Locale

Henning Leutz
committed
define('package/quiqqer/cron/bin/Manager', [
'qui/QUI',
'qui/controls/windows/Confirm',
'Ajax',
'Locale'
], function (QUI, QUIPanel, QUIConfirm, QUIButton, QUIButtonSeperator, Grid, Ajax, QUILocale) {
Extends: QUIPanel,
Type : 'package/quiqqer/cron/bin/Manager',
options: {
title: 'Cron-Manager',
initialize: function (options) {
this.parent(options);
onCreate: this.$onCreate,
onResize: this.$onResize
});
},
/**
* Load the crons into the grid
*
* @return {self}
*/
loadCrons: function () {
Ajax.get('package_quiqqer_cron_ajax_getList', function (result) {
if (!self.$Grid) {
var execCron = function (Btn) {

Henning Leutz
committed
self.execCron(
Btn.getAttribute('cronId')

Henning Leutz
committed
);
};
var toggleCron = function (Btn) {

Henning Leutz
committed
self.toggleStatusOfCron(
Btn.getAttribute('cronId')

Henning Leutz
committed
);
};
for (var i = 0, len = result.length; i < len; i++) {
result[i].status = {
title : QUILocale.get(lg, 'cron.panel.manager.btn.toggle'),
cronId: result[i].id,
events: {
onClick: toggleCron
result[i].play = {
name : 'cron-play-button-' + result[i].id,
title : QUILocale.get(lg, 'cron.panel.manager.btn.execute'),
cronId: result[i].id,
events: {
onClick: execCron
}
};
'package': 'quiqqer/cron'
},
/**
* event : on Create
*/
$onCreate: function () {
name : 'add',
text : QUILocale.get(lg, 'cron.panel.manager.btn.add'),
events : {
onClick: function () {
self.openAddCronWindow();
}
}
})
);
this.addButton(new QUIButtonSeperator());
this.addButton(
new QUIButton({
name : 'edit',
text : QUILocale.get(lg, 'cron.panel.manager.btn.edit'),
events : {
onClick: function () {
self.editMarkedCron();
}
}
})
);
name : 'delete',
text : QUILocale.get(lg, 'cron.panel.manager.btn.delete'),
events : {
onClick: function () {
this.addButton(new QUIButtonSeperator());
name : 'history',
text : QUILocale.get(lg, 'cron.panel.manager.btn.history'),
events : {
onClick: function () {
this.getButtons('edit').disable();
this.getButtons('delete').disable();
var Content = this.getContent(),
columnModel : [{
header : QUILocale.get('quiqqer/system', 'status'),
dataIndex: 'status',
dataType : 'button',
width : 60
}, {
header : ' ',
dataIndex: 'play',
dataType : 'button',
width : 60
header : QUILocale.get('quiqqer/system', 'id'),
dataIndex: 'id',
dataType : 'string',
width : 50
header : QUILocale.get(lg, 'cron.title'),
dataIndex: 'title',
dataType : 'string',
width : 150
header : QUILocale.get(lg, 'cron.min'),
dataIndex: 'min',
dataType : 'string',
width : 50
header : QUILocale.get(lg, 'cron.hour'),
dataIndex: 'hour',
dataType : 'string',
width : 50
header : QUILocale.get(lg, 'cron.day'),
dataIndex: 'day',
dataType : 'string',
width : 50
header : QUILocale.get(lg, 'cron.month'),
dataIndex: 'month',
dataType : 'string',
width : 50
}, {
header : QUILocale.get(lg, 'cron.dayOfWeek'),
dataIndex: 'dayOfWeek',
dataType : 'string',
width : 50
header : QUILocale.get(lg, 'cron.execute'),
dataIndex: 'exec',
dataType : 'string',
width : 150
header : QUILocale.get(lg, 'cron.params'),
dataIndex: 'params',
dataType : 'string',
width : 150
}, {
header : QUILocale.get(lg, 'cron.desc'),
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;
delButton.enable();

Henning Leutz
committed
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) {
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 () {
if (!this.$Grid) {
return this;
}
var self = this,
data = this.$Grid.getSelectedData();
return this;
}
var ids = data.map(function (o) {
return o.id;
});
new QUIConfirm({
title : QUILocale.get(lg, 'cron.window.delete.cron.title'),
text : QUILocale.get(lg, 'cron.window.delete.cron.text'),
information: QUILocale.get(lg, 'cron.window.delete.cron.information', {
ids: ids.join(',')
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();
* Edit a cron, opens the cron Edit-Window
*
* @param {String} cronId - ID of the Cron
*/
editCron: function (cronId) {
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) {

Henning Leutz
committed
var data = this.$Grid.getSelectedData();
this.editCron(data[0].id);
},
/**
* Open the add Cron-Window
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
*

Henning Leutz
committed
* @param {Number} cronId - ID of the Cron
toggleStatusOfCron: function (cronId) {
var self = this;
Ajax.post('package_quiqqer_cron_ajax_cron_toggle', function () {
self.loadCrons();
'package': 'quiqqer/cron',
cronId : cronId
},
/**
* Execute the cron
*

Henning Leutz
committed
* @param {Number} 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++) {
}
Ajax.post('package_quiqqer_cron_ajax_cron_executeCron', function () {
for (i = 0, len = buttons.length; i < len; i++) {
}
}, {
'package': 'quiqqer/cron',
cronId : cronId
});
showHistory: function () {
require(['package/quiqqer/cron/bin/History'], function (Panel) {
new Panel().inject(self.getParent());
}