0009768: Use ModelConfig for Timetracker models
[tine20] / tine20 / Timetracker / js / Timetracker.js
1 /*
2  * Tine 2.0
3  * 
4  * @package     Timetracker
5  * @license     http://www.gnu.org/licenses/agpl.html AGPL Version 3
6  * @author      Philipp Schüle <p.schuele@metaways.de>
7  * @copyright   Copyright (c) 2007-2016 Metaways Infosystems GmbH (http://www.metaways.de)
8  */
9  
10 Ext.ns('Tine.Timetracker');
11
12 Tine.widgets.grid.RendererManager.register('Timetracker', 'Timesheet', 'timeaccount_closed', function(row, index, record) {
13     var isopen = (record.data.timeaccount_id.is_open == '1');
14     return Tine.Tinebase.common.booleanRenderer(!isopen);
15 });
16
17 Tine.widgets.grid.RendererManager.register('Timetracker', 'Timesheet', 'timeaccount_id', function(row, index, record) {
18     var record = new Tine.Timetracker.Model.Timeaccount(record.get('timeaccount_id'));
19     var closedText = record.get('is_open') ? '' : (' (' + Tine.Tinebase.appMgr.get('Timetracker').i18n._('closed') + ')');
20     return record.get('number') ? (record.get('number') + ' - ' + record.get('title') + closedText) : '';
21 });
22
23 Tine.Tinebase.data.TitleRendererManager.register('Timetracker', 'Timeaccount', function(record) {
24     var closedText = record.get('is_open') ? '' : (' (' + Tine.Tinebase.appMgr.get('Timetracker').i18n._('closed') + ')');
25     return record.get('number') ? (record.get('number') + ' - ' + record.get('title') + closedText) : '';
26 });
27
28 Tine.Tinebase.data.TitleRendererManager.register('Timetracker', 'Timesheet', function(record) {
29     var timeaccount = record.get('timeaccount_id'),
30         description = Ext.util.Format.ellipsis(record.get('description'), 30, true),
31         timeaccountTitle = '';
32
33     if (timeaccount) {
34         if (typeof(timeaccount.get) !== 'function') {
35             timeaccount = new Tine.Timetracker.Model.Timeaccount(timeaccount);
36         }
37         timeaccountTitle = timeaccount.getTitle();
38     }
39
40     timeaccountTitle = timeaccountTitle ? '[' + timeaccountTitle + '] ' : '';
41     return timeaccountTitle + description;
42 });
43
44 Tine.widgets.grid.RendererManager.register('Timetracker', 'Timeaccount', 'status', function(row, index, record) {
45     return Tine.Tinebase.appMgr.get('Timetracker').i18n._hidden(record.get('status'));
46 });
47
48 Tine.widgets.grid.RendererManager.register('Timetracker', 'Timeaccount', 'is_open', function(row, index, record) {
49     var i18n = Tine.Tinebase.appMgr.get('Timetracker').i18n;
50     return record.get('is_open') ? i18n._('open') : i18n._('closed');
51 });
52
53 // add renderer for invoice position gridpanel
54 Tine.Timetracker.HumanHourRenderer = function(value) {
55     return Ext.util.Format.round(value, 2);
56 }
57
58 Tine.Timetracker.registerRenderers = function() {
59     
60     if (! Tine.hasOwnProperty('Sales') || ! Tine.Sales.hasOwnProperty('InvoicePositionQuantityRendererRegistry')) {
61         Tine.Timetracker.registerRenderers.defer(10);
62         return false;
63     }
64     
65     Tine.Sales.InvoicePositionQuantityRendererRegistry.register('Timetracker_Model_Timeaccount', 'hour', Tine.Timetracker.HumanHourRenderer);
66 };
67
68 Tine.Timetracker.registerRenderers();
69
70 Tine.Timetracker.registerAccountables = function() {
71     if (! Tine.hasOwnProperty('Sales') || ! Tine.Sales.hasOwnProperty('AccountableRegistry')) {
72         Tine.Timetracker.registerAccountables.defer(10);
73         return false;
74     }
75     
76     Tine.Sales.AccountableRegistry.register('Timetracker', 'Timeaccount');
77 };
78
79 Tine.Timetracker.registerAccountables();
80
81 // disables container tree in WestPanel
82 Tine.Timetracker.TimeaccountWestPanel = Ext.extend(Tine.widgets.mainscreen.WestPanel, {
83     hasContainerTreePanel: false
84 });