Ignore:
Timestamp:
05/27/11 17:57:48 (13 years ago)
Author:
airton
Message:

Ticket #1954 - Implementação de busca avançada no contactcenter

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sandbox/2.2.0.2/contactcenter/js/cc_search.js

    r3644 r4544  
    130130                this.DOMinput = document.createElement('input'); 
    131131                this.DOMbtn = document.createElement('input'); 
     132                this.DOMAdv = document.createElement('input'); 
    132133                this.DOMbtn2 = document.createElement('input'); 
    133134                this.DOMbtn3 = document.createElement('input'); 
     
    191192                this.DOMbtn.type = 'button'; 
    192193                //this.DOMbtn.style.height = parseInt(this.DOMdiv.style.height)/2 + 'px'; 
    193                 this.DOMbtn.style.width = '60px'; 
     194//              this.DOMbtn.style.width = '60px'; 
    194195                this.DOMbtn.value = params['button_text']; 
    195196                this.DOMbtn.onclick = function () {_this.go();}; 
     
    206207                this.DOMbtn3.disabled = 'disabled'; 
    207208                this.DOMbtn3.value =  v_label + ':'; 
     209var btn = this.DOMbtn.cloneNode(true); 
     210 
     211                var btn = this.DOMbtn.cloneNode(true); 
     212 
     213                this.DOMAdv.type = 'button'; 
     214//              this.DOMAdv.style.padding = '1px'; 
     215                this.DOMAdv.value = 'Busca Avancada'; 
     216                this.DOMAdv.id = 'advanced'; 
     217                this.DOMAdv.onclick = function() 
     218                { 
     219                    var target = document.getElementById( 'Layer2' ); 
     220 
     221                    if( !target.innerHTML ) 
     222                    { 
     223                        var overlay = document.createElement( 'DIV' ); 
     224 
     225                        var items = target.style.width = overlay.innerHTML = ''; 
     226 
     227                        var config = { "cn":"Nome", "uid":"Matricula" }; 
     228 
     229                        for( attr in config ) 
     230                            items += "<tr><td style='padding: 3px'>"+config[attr]+"</td><td style='padding: 5px;'><input type='text' name='advanced_search' label='"+attr+"'><br></td></tr>"; 
     231 
     232                        for( attr in advanced_search_fields ) 
     233                            items += "<tr><td style='padding: 3px'>"+advanced_search_fields[attr]+"</td><td style='padding: 5px;'><input type='text' name='advanced_search' label='"+attr+"'><br></td></tr>"; 
     234                         
     235                        var itemH = document.createElement('DIV'); 
     236 
     237                        itemH.innerHTML = items ? '<table>' + items + '</table>' : ''; 
     238                        target.appendChild( itemH ); 
     239 
     240                        target.style.left = "507px"; 
     241 
     242                        var holder = document.createElement('DIV'); 
     243                        holder.setAttribute('align','center'); 
     244 
     245                        var exact_search = document.createElement('input'); 
     246                        exact_search.type = 'checkbox'; 
     247                        exact_search.id = 'exact_search'; 
     248                        exact_search.setAttribute( "checked", "checked" ); 
     249 
     250                        var label_exact_search = document.createElement('label'); 
     251                        label_exact_search.setAttribute( "rel", exact_search.id ); 
     252                        label_exact_search.innerHTML = 'Busca Exata'; 
     253 
     254                        btn.onclick = function(){ _this.go(); }; 
     255                        var closeBtn = document.createElement('input'); 
     256                        closeBtn.value = 'Fechar'; 
     257                        closeBtn.type = 'button'; 
     258                        closeBtn.onclick = function(){  
     259                            document.getElementById('Layer2').style.visibility = 'hidden'; 
     260                            document.getElementById('overlay').style.visibility = 'hidden'; 
     261                        }; 
     262                         
     263                        holder.appendChild( exact_search ); 
     264                        holder.appendChild( label_exact_search ); 
     265                        holder.appendChild( spacer.cloneNode(false) ); 
     266                        holder.appendChild( btn ); 
     267                        holder.appendChild( spacer.cloneNode(false) ); 
     268                        holder.appendChild( closeBtn ); 
     269                        holder.appendChild( spacer.cloneNode(false) ); 
     270 
     271                        holder.style.padding = '5px'; 
     272                        target.style.padding = '5px'; 
     273 
     274                        target.appendChild( holder ); 
     275                    } 
     276 
     277                    var overlay = document.getElementById('overlay'); 
     278 
     279                    overlay.style.visibility = ( overlay.style.visibility === 'hidden' ? 'visible' : 'hidden' ); 
     280 
     281                    var pos = findPosY( this ); 
     282 
     283                    with( target.style ) 
     284                    { 
     285                        if( !visibility || visibility === 'visible' ) 
     286                            visibility = 'hidden'; 
     287                        else 
     288                        { 
     289                            visibility = 'visible'; 
     290                           top = 19 + pos + "px"; 
     291                        } 
     292                    } 
     293                }; 
    208294 
    209295                this.DOMprogHold.style.position = 'absolute'; 
     
    236322                this.DOMdiv.appendChild(spacer); 
    237323                this.DOMdiv.appendChild(this.DOMbtn); 
     324                this.DOMdiv.appendChild(spacer.cloneNode(false)); 
     325                this.DOMdiv.appendChild(this.DOMAdv); 
    238326                this.DOMdiv.appendChild(this.DOMprogHold); 
    239327                this.DOMdiv.appendChild(this.DOMresult); 
     
    242330        ccSearchClass.prototype.go = function() 
    243331        { 
    244                 if ( (this.DOMinput.value == '') && (this.DOMinputx.value == '') ) { 
    245                         if ((ccTree.actualCatalog != 'bo_group_manager') &&  
    246                                         (ccTree.actualCatalog != 'bo_shared_group_manager') &&  
    247                                         (!ccTree.actualCatalogIsExternal)) { //Busca avançada para pessoal e catálogo geral 
    248                                 ccFullSearchVar.showForm(); 
    249                                 return; 
    250                         } 
    251                 } 
    252332                var data = new Array(); 
    253333                 
     
    269349                 
    270350                data['search_for']       = this.DOMinput.value; 
    271                 data['search_for_area']       = this.DOMinputx.value; 
    272                  
    273                 var invalidChars = /[\%\?]/; 
    274                 if(invalidChars.test(data['search_for']) || invalidChars.test(data['search_for_area'])){ 
    275                         showMessage(Element('cc_msg_err_invalid_serch').value); 
    276                         return; 
     351 
     352//                 var customFilter = '(mail=*@mail.prognus*)(uid=*c120455*)'; 
     353 
     354                var customFilterDiv = document.getElementById( 'Layer2' ); 
     355 
     356                if( customFilterDiv && customFilterDiv.style.visibility !== 'hidden' ) 
     357                { 
     358                    var customFilter = cn = ''; 
     359                 
     360                    var values = document.getElementsByName('advanced_search'); 
     361 
     362                    for( var i = 0; i < values.length; i++ ) 
     363                    { 
     364                        if( !values[i].value ) continue; 
     365                         
     366                        if( values[i].getAttribute('label') === 'cn' ) 
     367                        { 
     368                            cn = values[i].value; 
     369                            continue; 
     370                        } 
     371 
     372                        customFilter += '(' + values[i].getAttribute('label') + '=*' + values[i].value.replace( / /g, '*' ) + '*)'; 
     373                    } 
     374 
     375                    if( customFilter ) 
     376                    { 
     377                        if( document.getElementById('exact_search').checked ) 
     378                            data['exact'] = 'true'; 
     379 
     380                        data['search_for'] = customFilter; 
     381                        data['CN'] = cn; 
     382                        data['custom_filter'] = true; 
     383                    } 
     384                    else 
     385                        data['search_for'] = cn; 
     386 
     387                    customFilterDiv.style.visibility = 'hidden'; 
     388                    document.getElementById('overlay').style.visibility = 'hidden'; 
    277389                } 
    278390                 
    279                 var search_for = data['search_for'].split(' '); 
    280                 var greaterThan4 = false; 
    281                 var use_length = v_min; 
    282  
    283                 if (search_for.length == 1) 
    284                     { 
    285                         if(search_for[0].length == 0) 
    286                             { 
    287                                 search_for[0] = "*"; 
    288                                 data['search_for'] = "*"; 
    289                                 use_length = 1; 
    290                             } 
    291                     } 
    292  
    293                 for (i = 0; i < search_for.length; i++) 
    294                 { 
    295                         if (search_for[i].length >= use_length) 
    296                         { 
    297                                 greaterThan4 = true; 
    298                         } 
    299                 } 
    300  
    301                 if (!greaterThan4){ 
    302                         alert("Favor fazer a consulta com pelo menos " + v_min + " caracteres!"); 
    303                         return; 
    304                 } 
     391//              var search_for = data['search_for'].split(' '); 
     392//              var greaterThan4 = false; 
     393//                var use_length = v_min; 
     394 
     395//                if (search_for.length == 1) 
     396//                    { 
     397//                        if(search_for[0].length == 0) 
     398//                            { 
     399//                                search_for[0] = "*"; 
     400//                                data['search_for'] = "*"; 
     401//                                use_length = 1; 
     402//                            } 
     403//                    } 
     404 
     405//              for (i = 0; i < search_for.length; i++) 
     406//              { 
     407//                      if (search_for[i].length >= use_length) 
     408//                      { 
     409//                              greaterThan4 = true; 
     410//                      } 
     411//              } 
     412 
     413//              if (!greaterThan4){ 
     414//                      alert("Favor fazer a consulta com pelo menos " + v_min + " caracteres!"); 
     415//                      return; 
     416//              } 
    305417 
    306418                var _this = this; 
Note: See TracChangeset for help on using the changeset viewer.