source: branches/1.2/workflow/js/nano/NanoController.class.js @ 1349

Revision 1349, 5.3 KB checked in by niltonneto, 15 years ago (diff)

Ticket #561 - Inclusão do módulo Workflow faltante nessa versão.

  • Property svn:executable set to *
Line 
1// -----------------------------------------------------------------------------
2// Class NanoController
3function NanoController()
4{
5    /* Instance Variables */
6
7    // PRIVATE Variables
8    // create NanoAjax Object (executes AJAX)
9    var _mObjNanoAjax              = new NanoAjax();
10
11    _mObjNanoAjax.onSuccess        = _defaultSuccessHandler;
12    _mObjNanoAjax.onError          = _defaultErrorHandler;
13
14
15        // #########################################################################
16    // Privileged Method (has public access and can access private vars & funcs)
17    this.setServerUrl              = setServerUrl;
18    this.setWfUrl                  = setWfUrl;
19    this.setStatusHandler          = setStatusHandler;
20    this.setStatusTranslation      = setStatusTranslation;
21    this.setStateChangeId          = setStateChangeId;
22    this.setSuccessHandler         = setSuccessHandler;
23    this.setExceptionHandler       = setExceptionHandler;
24    this.setErrorHandler           = setErrorHandler;
25
26    this.disableErrorReporting     = _disableErrorReporting;
27
28    this.addVirtualRequest         = _addVirtualRequest;
29    this.addVirtualAutoloadRequest = _addVirtualAutoloadRequest;
30
31    this.sendRequest               = _sendRequest;
32
33
34    function setServerUrl( url )
35    {
36        if( isNaN(url) && url != '' )
37        {
38            _mObjNanoAjax.ajaxServerUrl = url;
39        }
40    }
41
42    function setWfUrl( )
43    {
44                /* encontra o endereço do próprio javascript */
45                var address = $A(document.getElementsByTagName("script")).findAll(
46                        function(s)
47                        {
48                                return (s.src && s.src.match(/js\/nano\/NanoController\.class\.js(\?.*)?$/));
49                        }).first().src;
50                /* pega só até o /workflow/ */
51                address = address.replace(/js\/nano\/NanoController\.class\.js(\?.*)?$/, '');
52
53                /* completa o endereço */
54                address = address + location.href.match(/index\.php\?menuaction=workflow\.run_activity\.go.*$/);
55                address = address.replace(/index\.php\?menuaction=workflow\.run_activity\.go/g, 'index.php?menuaction=workflow.run_activity.goAjax');
56        this.setServerUrl(address);
57    }
58
59    function setStatusHandler( status_handler, div_id )
60    {
61        var div_id = (div_id) ?  div_id : null;
62
63        if( status_handler != '' )
64        {
65            _mObjNanoAjax.onStateChange    = status_handler;
66            _mObjNanoAjax.onStateChangeDiv = div_id;
67
68        }
69    }
70
71    function setStatusTranslation( status_translation )
72    {
73        if( status_translation != '' )
74        {
75            _mObjNanoAjax.statusTranslation = status_translation;
76        }
77    }
78
79    function setStateChangeId( status_change_id )
80    {
81        if( status_change_id != '' && $(status_change_id) )
82        {
83            _mObjNanoAjax.onStateChangeId = status_change_id;
84        }
85    }
86
87    function setSuccessHandler( success_handler )
88    {
89        if( success_handler != '' )
90        {
91            _mObjNanoAjax.onSuccess = success_handler;
92        }
93    }
94
95    function setExceptionHandler( exception_handler )
96    {
97        if( exception_handler != '' )
98        {
99            _mObjNanoAjax.onException = exception_handler;
100        }
101    }
102
103    function setErrorHandler( error_handler )
104    {
105        if( error_handler != '' )
106        {
107            _mObjNanoAjax.onError = error_handler;
108        }
109    }
110
111    function _disableErrorReporting()
112    {
113        _mObjNanoAjax.errorReporting = false;
114    }
115
116    function _addVirtualRequest( identifier, parameter, data )
117    {
118        var req = new NanoRequest();
119
120        // (virtual) request parameter
121        req.requestParameter = parameter;
122
123        // (virtual) request data
124        req.requestData      = data;
125
126        _mObjNanoAjax.addVirtualRequest( identifier, req.getAssembledRequest() );
127    }
128
129    function _addVirtualAutoloadRequest( parameter, form, field_prefix)
130    {
131        var req = new NanoRequest();
132
133        // (virtual) request parameter
134        req.requestParameter = parameter;
135
136        // (virtual) request auto load data from HTML form
137        req.autoLoadData( form, field_prefix );
138
139        _mObjNanoAjax.addVirtualRequest( req.getAssembledRequest() );
140    }
141
142    function _sendRequest()
143    {
144        if( _mObjNanoAjax.ajaxServerUrl != '' && _mObjNanoAjax.ajaxServerUrl.length > 2 )
145        {
146            if( _mObjNanoAjax.isVirtualRequestSet() )
147            {
148                _mObjNanoAjax.sendRequest();
149            }
150            else
151            {
152                alert('No (virtual) Request is set!!!');
153            }
154        }
155        else
156        {
157            alert( 'Server URL is not set correctly!!!');
158        }
159    }
160
161    function _defaultSuccessHandler( decode_json_data )
162    {
163        var output      = '';
164        var row_width   = 90;
165
166        for( i= 0; i < decode_json_data.length; i++)
167        {
168            for( var row in decode_json_data[i] )
169            {
170                output += '(virtual) Request No.: '+row+'\n'+unescape(decode_json_data[i][row])+
171                          '\n'+(('-').repeat(row_width))+'\n';
172            }
173        }
174
175        alert( 'Default \'onSuccess\' handler was called!\n'+
176               'Please define your own handler to fit your individual needs.\n\n\n'+
177               'AJAX Response returns (JSON decoded):\n\n'+
178               (('-').repeat(row_width))+'\n'+output);
179    }
180
181    function _defaultErrorHandler( decode_json_data )
182    {
183        alert( "NanoController ERROR:\n"+decode_json_data );
184    }
185}
Note: See TracBrowser for help on using the repository browser.