Convert resources app.js to TS

This commit is contained in:
Hadi Nategh 2020-03-09 10:42:06 +01:00
parent 173b695cf2
commit 76dbec4d8b
2 changed files with 291 additions and 164 deletions

View File

@ -1,3 +1,4 @@
"use strict";
/** /**
* EGroupware - Resources - Javascript UI * EGroupware - Resources - Javascript UI
* *
@ -8,58 +9,47 @@
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @version $Id: app.js 44390 2013-11-04 20:54:23Z ralfbecker $ * @version $Id: app.js 44390 2013-11-04 20:54:23Z ralfbecker $
*/ */
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var egw_app_1 = require("../../api/js/jsapi/egw_app");
/** /**
* UI for resources * UI for resources
*
* @augments AppJS
*/ */
app.classes.resources = AppJS.extend( var resourcesApp = /** @class */ (function (_super) {
{ __extends(resourcesApp, _super);
appname: 'resources',
/**
* et2 widget container
*/
et2: null,
/**
* path widget
*/
/** /**
* Constructor * Constructor
*
* @memberOf app.resources
*/ */
init: function() function resourcesApp() {
{ return _super.call(this) || this;
// call parent }
this._super.apply(this, arguments);
},
/** /**
* Destructor * Destructor
*/ */
destroy: function() resourcesApp.prototype.destroy = function (_app) {
{
delete this.et2; delete this.et2;
// call parent _super.prototype.destroy.call(this, _app);
this._super.apply(this, arguments); };
},
/** /**
* This function is called when the etemplate2 object is loaded * This function is called when the etemplate2 object is loaded
* and ready. If you must store a reference to the et2 object, * and ready. If you must store a reference to the et2 object,
* make sure to clean it up in destroy(). * make sure to clean it up in destroy().
*
* @param et2 etemplate2 Newly ready object
*/ */
et2_ready: function(et2) resourcesApp.prototype.et2_ready = function (et2, name) {
{ _super.prototype.et2_ready.call(this, et2, name);
// call parent };
this._super.apply(this, arguments);
},
/** /**
* call calendar planner by selected resources * call calendar planner by selected resources
* *
@ -67,111 +57,88 @@ app.classes.resources = AppJS.extend(
* @param {action} _senders selected action * @param {action} _senders selected action
* *
*/ */
view_calendar: function (_action,_senders) resourcesApp.prototype.view_calendar = function (_action, _senders) {
{
var res_ids = []; var res_ids = [];
var matches = []; var matches = [];
var nm = _action.parent.data.nextmatch; var nm = _action.parent.data.nextmatch;
var selection = nm.getSelection(); var selection = nm.getSelection();
var show_calendar = function (res_ids) {
var show_calendar = function(res_ids) { egw(window).message(this.egw.lang('%1 resource(s) View calendar', res_ids.length));
egw_message(this.egw.lang('%1 resource(s) View calendar',res_ids.length));
var current_owners = (app.calendar ? app.calendar.state.owner || [] : []).join(','); var current_owners = (app.calendar ? app.calendar.state.owner || [] : []).join(',');
if(current_owners) if (current_owners) {
{
current_owners += ','; current_owners += ',';
} }
this.egw.open_link('calendar.calendar_uiviews.index&view=planner&sortby=user&owner='+current_owners+'r'+res_ids.join(',r')+'&ajax=true'); this.egw.open_link('calendar.calendar_uiviews.index&view=planner&sortby=user&owner=' + current_owners + 'r' + res_ids.join(',r') + '&ajax=true');
}.bind(this); }.bind(this);
if (selection && selection.all) {
if(selection && selection.all)
{
// Get selected ids from nextmatch - it will ask server if user did 'select all' // Get selected ids from nextmatch - it will ask server if user did 'select all'
fetchAll(res_ids, nm, show_calendar) fetchAll(res_ids, nm, show_calendar);
} }
else else {
{ for (var i = 0; i < _senders.length; i++) {
for (var i=0;i<_senders.length;i++)
{
res_ids.push(_senders[i].id); res_ids.push(_senders[i].id);
matches = res_ids[i].match(/^(?:resources::)?([0-9]+)(:([0-9]+))?$/); matches = res_ids[i].match(/^(?:resources::)?([0-9]+)(:([0-9]+))?$/);
if (matches) if (matches) {
{
res_ids[i] = matches[1]; res_ids[i] = matches[1];
} }
} }
show_calendar(res_ids); show_calendar(res_ids);
} }
}, };
/** /**
* Calendar sidebox hook change handler * Calendar sidebox hook change handler
* *
*/ */
sidebox_change: function(ev, widget) resourcesApp.prototype.sidebox_change = function (ev, widget) {
{ if (ev[0] != 'r') {
if(ev[0] != 'r') { widget.setSubChecked(ev, widget.getValue()[ev].value || false);
widget.setSubChecked(ev,widget.getValue()[ev].value || false);
} }
var owner = jQuery.extend([],app.calendar.state.owner) || []; var owner = jQuery.extend([], app.calendar.state.owner) || [];
for(var i = owner.length-1; i >= 0; i--) for (var i = owner.length - 1; i >= 0; i--) {
{ if (owner[i][0] == 'r') {
if(owner[i][0] == 'r') owner.splice(i, 1);
{
owner.splice(i,1);
} }
} }
var value = widget.getValue(); var value = widget.getValue();
for(var key in value) for (var key in value) {
{ if (key[0] !== 'r')
if(key[0] !== 'r') continue; continue;
if(value[key].value && owner.indexOf(key) === -1) if (value[key].value && owner.indexOf(key) === -1) {
{
owner.push(key); owner.push(key);
} }
} }
app.calendar.update_state({owner: owner}); app.calendar.update_state({ owner: owner });
}, };
/** /**
* Book selected resource for calendar * Book selected resource for calendar
* *
* @param {action} _action actions * @param {action} _action actions
* @param {action} _senders selected action * @param {action} _senders selected action
*/ */
book: function(_action,_senders) resourcesApp.prototype.book = function (_action, _senders) {
{ var res_ids = [], matches = [];
for (var i = 0; i < _senders.length; i++) {
var res_ids =[], matches = [];
for (var i=0;i<_senders.length;i++)
{
res_ids.push(_senders[i].id); res_ids.push(_senders[i].id);
matches = res_ids[i].match(/^(?:resources::)?([0-9]+)(:([0-9]+))?$/); matches = res_ids[i].match(/^(?:resources::)?([0-9]+)(:([0-9]+))?$/);
if (matches) if (matches) {
{
res_ids[i] = matches[1]; res_ids[i] = matches[1];
} }
} }
egw_message(this.egw.lang('%1 resource(s) booked',res_ids.length)); egw(window).message(this.egw.lang('%1 resource(s) booked', res_ids.length));
this.egw.open_link('calendar.calendar_uiforms.edit&participants=r' + res_ids.join(',r'), '_blank', '700x700');
this.egw.open_link('calendar.calendar_uiforms.edit&participants=r'+res_ids.join(',r'),'_blank','700x700'); };
},
/** /**
* set the picture_src to own_src by uploding own file * set the picture_src to own_src by uploding own file
* *
*/ */
select_picture_src: function () resourcesApp.prototype.select_picture_src = function () {
{
var rBtn = this.et2.getWidgetById('picture_src'); var rBtn = this.et2.getWidgetById('picture_src');
if (typeof rBtn != 'undefined') if (typeof rBtn != 'undefined') {
{
rBtn.set_value('own_src'); rBtn.set_value('own_src');
} }
}, };
resourcesApp.appname = 'resources';
}); return resourcesApp;
}(egw_app_1.EgwApp));
app.classes.resources = resourcesApp;
//# sourceMappingURL=app.js.map

160
resources/js/app.ts Normal file
View File

@ -0,0 +1,160 @@
/**
* EGroupware - Resources - Javascript UI
*
* @link http://www.egroupware.org
* @package resources
* @author Hadi Nategh <hn-AT-stylite.de>
* @copyright (c) 2008-13 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @version $Id: app.js 44390 2013-11-04 20:54:23Z ralfbecker $
*/
import {EgwApp} from "../../api/js/jsapi/egw_app";
/**
* UI for resources
*/
class resourcesApp extends EgwApp
{
static readonly appname: string = 'resources';
/**
* Constructor
*/
constructor()
{
super();
}
/**
* Destructor
*/
destroy(_app)
{
delete this.et2;
super.destroy(_app);
}
/**
* This function is called when the etemplate2 object is loaded
* and ready. If you must store a reference to the et2 object,
* make sure to clean it up in destroy().
*/
et2_ready(et2, name)
{
super.et2_ready(et2, name);
}
/**
* call calendar planner by selected resources
*
* @param {action} _action actions
* @param {action} _senders selected action
*
*/
view_calendar(_action,_senders)
{
let res_ids = [];
let matches = [];
let nm = _action.parent.data.nextmatch;
let selection = nm.getSelection();
let show_calendar = function(res_ids) {
egw(window).message(this.egw.lang('%1 resource(s) View calendar',res_ids.length));
let current_owners = (app.calendar ? app.calendar.state.owner || [] : []).join(',');
if(current_owners)
{
current_owners += ',';
}
this.egw.open_link('calendar.calendar_uiviews.index&view=planner&sortby=user&owner='+current_owners+'r'+res_ids.join(',r')+'&ajax=true');
}.bind(this);
if(selection && selection.all)
{
// Get selected ids from nextmatch - it will ask server if user did 'select all'
fetchAll(res_ids, nm, show_calendar)
}
else
{
for (let i=0;i<_senders.length;i++)
{
res_ids.push(_senders[i].id);
matches = res_ids[i].match(/^(?:resources::)?([0-9]+)(:([0-9]+))?$/);
if (matches)
{
res_ids[i] = matches[1];
}
}
show_calendar(res_ids);
}
}
/**
* Calendar sidebox hook change handler
*
*/
sidebox_change(ev, widget)
{
if(ev[0] != 'r') {
widget.setSubChecked(ev,widget.getValue()[ev].value || false);
}
let owner = jQuery.extend([],app.calendar.state.owner) || [];
for(let i = owner.length-1; i >= 0; i--)
{
if(owner[i][0] == 'r')
{
owner.splice(i,1);
}
}
let value = widget.getValue();
for(let key in value)
{
if(key[0] !== 'r') continue;
if(value[key].value && owner.indexOf(key) === -1)
{
owner.push(key);
}
}
app.calendar.update_state({owner: owner});
}
/**
* Book selected resource for calendar
*
* @param {action} _action actions
* @param {action} _senders selected action
*/
book(_action,_senders)
{
let res_ids =[], matches = [];
for (let i=0;i<_senders.length;i++)
{
res_ids.push(_senders[i].id);
matches = res_ids[i].match(/^(?:resources::)?([0-9]+)(:([0-9]+))?$/);
if (matches)
{
res_ids[i] = matches[1];
}
}
egw(window).message(this.egw.lang('%1 resource(s) booked',res_ids.length));
this.egw.open_link('calendar.calendar_uiforms.edit&participants=r'+res_ids.join(',r'),'_blank','700x700');
}
/**
* set the picture_src to own_src by uploding own file
*
*/
select_picture_src()
{
let rBtn = this.et2.getWidgetById('picture_src');
if (typeof rBtn != 'undefined')
{
rBtn.set_value('own_src');
}
}
}
app.classes.resources = resourcesApp;