Changeset 234

Show
Ignore:
Timestamp:
01/05/09 15:37:03 (10 years ago)
Author:
samuraraujo
Message:
 
Location:
Explorator/trunk/public/javascripts
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • Explorator/trunk/public/javascripts/explorator_controller.js

    r214 r234  
    66//Plug the behaviour to the annoted elements. 
    77var uri = '/explorator/' 
    8 var createuri= uri + 'create?exp=' 
    9 var updateuri= uri + 'update?exp=' 
    10 var executeuri= uri + 'execute?exp=' 
    11 var removeuri= uri + 'remove?exp=' 
    12  
    13 var facetsuri= '/facets/execute?exp=' 
    14  
    15 var facetoriginalexpression=null; 
     8var createuri = uri + 'create?exp=' 
     9var updateuri = uri + 'update?exp=' 
     10var executeuri = uri + 'execute?exp=' 
     11var removeuri = uri + 'remove?exp=' 
     12 
     13var facetsuri = '/facets/execute?exp=' 
     14 
     15var facetoriginalexpression = null; 
    1616//Global controller methods 
    1717Element.addMethods({ 
    1818    //remove an element 
    1919    ctr_remove: function(item){ 
    20                 //Removing a resource from a set. Remove an element from a set is the same 
    21                 // than do the difference from the original set and the resource 
    22         if (item.hasClassName('resource')){               
    23                    parameters.set('SET', item.up('._WINDOW')); 
    24                    parameters.set('REMOVE', item); 
    25            ajax_update(item.up('._WINDOW').id,updateuri  + new SemanticExpression('SET').difference('REMOVE') + '&uri=' + item.up('._WINDOW').id); 
    26         } 
    27         else { 
    28                 //Removing a entire set 
    29           ajax_remove('/explorator/execute?exp=remove(\'' + item.id + '\')'); 
    30         }         
    31     },crt_refresh: function(item,view,filter){ 
    32                 //reload the set .                                 
    33            ajax_update(item.id,executeuri  + 'refresh(\'' + item.id +'\',:'+view+',\''+filter+'\')');                    
    34     }, 
    35         //open a new window where his content will be defined by the item.exp attribute. 
    36     ctr_open: function(item){    
    37                 parameters.set('O', item); 
     20        //Removing a resource from a set. Remove an element from a set is the same 
     21        // than do the difference from the original set and the resource 
     22        if (item.hasClassName('resource')) { 
     23            parameters.set('SET', item.up('._WINDOW')); 
     24            parameters.set('REMOVE', item); 
     25            ajax_update(item.up('._WINDOW').id, updateuri + new SemanticExpression('SET').difference('REMOVE') + '&uri=' + item.up('._WINDOW').id); 
     26        } 
     27        else { 
     28            //Removing a entire set 
     29            ajax_remove('/explorator/execute?exp=remove(\'' + item.id + '\')'); 
     30        } 
     31    }, 
     32    crt_refresh: function(item, view, filter){ 
     33        //reload the set .                                 
     34        ajax_update(item.id, executeuri + 'refresh(\'' + item.id + '\',:' + view + ',\'' + filter + '\')'); 
     35    }, 
     36    //open a new window where his content will be defined by the item.exp attribute. 
     37    ctr_open: function(item){ 
     38        parameters.set('O', item); 
    3839        ajax_create(new SemanticExpression('O') + '&view=' + item.readAttribute('view')); 
    3940    }, 
    40         //Create or replace the facet window with a new content. 
    41          crt_facet: function(item,name){ 
    42          facetoriginalexpression=null;           
    43                 facetsetmove(); 
    44                 if ($('facets')){ 
    45                         ajax_update('facets', facetsuri+'facet' + Element.exp(item) + '&name='+name); 
    46                 }else{                   
    47                 ajax_request_forfacet(facetsuri+'facet' + Element.exp(item)+ '&name='+name,item);                
    48                 }        
     41    //Create or replace the facet window with a new content. 
     42    crt_facet: function(item, name){ 
     43        facetoriginalexpression = null; 
     44         
     45         
     46        facetsetmove(); 
     47        if ($('facets')) { 
     48            ajax_update('facets', facetsuri + 'facet' + item.exp() + '&name=' + name); 
     49        } 
     50        else { 
     51         
     52            ajax_request_forfacet(facetsuri + 'facet' + item.exp() + '&name=' + name, item); 
     53        } 
    4954    },//Create or replace the facet window with a new content. 
    50          crt_infer: function(item){ 
    51                 facetoriginalexpression=null; 
    52                 facetsetmove(item); 
    53                 if ($('facets')){ 
    54                         ajax_update('facets',facetsuri+'infer' + Element.exp(item)); 
    55                 }else{                    
    56                 ajax_request_forfacet(facetsuri+ 'infer' + Element.exp(item),item);              
    57                 }        
    58     }, 
    59         crt_dofacet: function(item){     
    60                 facetwindow = item.up('._WINDOW').up('._WINDOW'); 
    61                 if (facetoriginalexpression==null){ 
    62                         facetoriginalexpression=facetwindow.readAttribute('exp') ; 
    63                 } 
    64                 facetwindow.setAttribute('exp',facetoriginalexpression); 
    65                 parameters.set('C', facetwindow);                                        
    66                  expression = new SemanticExpression('C'); 
    67                  $$(".values").each(function(x){ 
    68                         allchecked = x.select("._checkboxfacet:checked"); 
    69                         if (allchecked.size() > 0 ){                     
    70                           parameters.set('A', allchecked); 
    71                   expression.intersection('A');                                           
    72                           }  
    73     }); 
    74         ajax_update(facetwindow.readAttribute('set'), updateuri + expression + '&uri=' + Element.set(facetwindow));      
    75          
    76     }, 
    77         sum: function  (item){ 
    78                 ajax_update(item.id, uri + "sum?uri=" + item.id ); 
    79 }, 
    80          set: function(item){ 
     55    crt_infer: function(item){ 
     56        facetoriginalexpression = null; 
     57         
     58        facetsetmove(item); 
     59        if ($('facets')) { 
     60            ajax_update('facets', facetsuri + 'infer' + item.exp()); 
     61        } 
     62        else { 
     63         
     64            ajax_request_forfacet(facetsuri + 'infer' + item.exp(), item); 
     65        } 
     66    }, 
     67     
     68    crt_dofacet: function(item){ 
     69        facetwindow = item.up('._WINDOW').up('._WINDOW'); 
     70        if (facetoriginalexpression == null) { 
     71            facetoriginalexpression = facetwindow.readAttribute('exp'); 
     72        } 
     73        facetwindow.setAttribute('exp', facetoriginalexpression); 
     74        parameters.set('C', facetwindow); 
     75        expression = new SemanticExpression('C'); 
     76        $$(".values").each(function(x){ 
     77            allchecked = x.select("._checkboxfacet:checked"); 
     78            if (allchecked.size() > 0) { 
     79                parameters.set('A', allchecked); 
     80                expression.intersection('A'); 
     81            } 
     82        }); 
     83        ajax_update(facetwindow.readAttribute('set'), updateuri + expression + '&uri=' + Element.set(facetwindow)); 
     84         
     85    }, 
     86    sum: function(item){ 
     87        ajax_update(item.id, uri + "sum?uri=" + item.id); 
     88    }, 
     89    set: function(item){ 
    8190        return encodeURIComponent(item.readAttribute('set')); 
    82     }, resource: function(item){ 
     91    }, 
     92    resource: function(item){ 
    8393        return encodeURIComponent(item.readAttribute('resource')); 
    8494    }, 
     
    8696        return encodeURIComponent(item.readAttribute('exp')); 
    8797    }, 
    88      resource: function(item){ 
     98    resource: function(item){ 
    8999        return encodeURIComponent(item.readAttribute('resource')); 
    90100    } 
     
    98108function register_controllers(){ 
    99109    cmd_set(); 
    100     cmd_semantic();     
    101 } 
     110    cmd_semantic(); 
     111} 
     112 
    102113/////////////////////////////// SET OPERATIONS ////////////////////////////////////////// 
    103114function setParameter(item){ 
    104         removeCSS(Element.exp(item)); 
    105                         $$('.SELECTED').invoke('addClassName', Element.exp(item)); 
    106                         item.addClassName(Element.exp(item)); 
    107             parameters.set(item.id, $$('.SELECTED')); 
    108 } 
     115    removeCSS(Element.exp(item)); 
     116    $$('.SELECTED').invoke('addClassName', Element.exp(item)); 
     117    item.addClassName(Element.exp(item)); 
     118    parameters.set(item.id, $$('.SELECTED')); 
     119} 
     120 
    109121//These are the operations applyed over sets 
    110122function cmd_set(){ 
    111123    $$('._setparameter').each(function(item){ 
    112124        item.onclick = function(){ 
    113                 setParameter(item); 
     125            setParameter(item); 
    114126        }; 
    115127    }); 
    116128    $$('._union').each(function(item){ 
    117129        item.onclick = function(){ 
    118                         setParameter(item); 
    119                         parameters.set('operation','union' );            
     130            setParameter(item); 
     131            parameters.set('operation', 'union'); 
    120132        }; 
    121133    }); 
    122134    $$('._intersection').each(function(item){ 
    123135        item.onclick = function(){ 
    124                         setParameter(item); 
    125                         parameters.set('operation','intersection' );              
     136            setParameter(item); 
     137            parameters.set('operation', 'intersection'); 
    126138        }; 
    127139    }); 
    128140    $$('._difference').each(function(item){ 
    129141        item.onclick = function(){ 
    130                         setParameter(item); 
    131                         parameters.set('operation','difference' );                       
    132         }; 
    133     }); 
    134         $$('._equal').each(function(item){ 
    135         item.onclick = function(){ 
    136                   parameters.set('B', $$('.SELECTED')); 
    137                   if(parameters.get('operation') == 'union'){                
    138                   ajax_create(new SemanticExpression('A').union('B'));} 
    139                   else  if(parameters.get('operation') == 'intersection')                        
    140                   ajax_create(new SemanticExpression('A').intersection('B')); 
    141                   else  if(parameters.get('operation') == 'difference')                  
    142           ajax_create(new SemanticExpression('A').difference('B'));          
    143                   else{//spo 
    144                         if (validation_spo()) return; 
    145                     parameters.set(item.id, Element.exp(item)); 
    146                         var view = 'subject_view'; 
    147                         if (parameters.get(':s') != undefined && parameters.get(':p') != undefined && parameters.get(':o') == undefined   ){ 
    148                                 view = 'object_view'; 
    149                         }  
    150             ajax_create(new SemanticExpression().spo(':s', ':p', ':o', ':r') + "&view=" + view); 
    151                 }                   
    152           clear(); 
    153         }; 
    154     }); 
    155           $$('._sum').each(function(item){ 
    156         item.onclick = function(){            
     142            setParameter(item); 
     143            parameters.set('operation', 'difference'); 
     144        }; 
     145    }); 
     146    $$('._equal').each(function(item){ 
     147        item.onclick = function(){ 
     148            parameters.set('B', $$('.SELECTED')); 
     149            if (parameters.get('operation') == 'union') { 
     150                ajax_create(new SemanticExpression('A').union('B')); 
     151            } 
     152            else  
     153                if (parameters.get('operation') == 'intersection')  
     154                    ajax_create(new SemanticExpression('A').intersection('B')); 
     155                else  
     156                    if (parameters.get('operation') == 'difference')  
     157                        ajax_create(new SemanticExpression('A').difference('B')); 
     158                    else {//spo 
     159                        if (validation_spo())  
     160                            return; 
     161                        parameters.set(item.id, Element.exp(item)); 
     162                        var view = 'subject_view'; 
     163                        if (parameters.get(':s') != undefined && parameters.get(':p') != undefined && parameters.get(':o') == undefined) { 
     164                            view = 'object_view'; 
     165                        } 
     166                        ajax_create(new SemanticExpression().spo(':s', ':p', ':o', ':r') + "&view=" + view); 
     167                    } 
     168            clear(); 
     169        }; 
     170    }); 
     171    $$('._sum').each(function(item){ 
     172        item.onclick = function(){ 
    157173            item.up('._WINDOW').sum(); 
    158174        }; 
    159     });   
    160 } 
     175    }); 
     176} 
     177 
    161178//Validates a set (union, intersection or difference) command. A and B must be defined for this operation be success executed. 
    162179function validation_set(){ 
    163         if (!(parameters.get('A') && parameters.get('B'))){ 
    164                 alert('Parameter A and B must be defined.') 
    165                 return true; 
    166         } 
    167         return false; 
    168 } 
     180    if (!(parameters.get('A') && parameters.get('B'))) { 
     181        alert('Parameter A and B must be defined.') 
     182        return true; 
     183    } 
     184    return false; 
     185} 
     186 
    169187//Validates a spo command. S, P or O must be defined for this operation be success executed. 
    170188function validation_spo(){ 
    171         if ((!parameters.get(':s') && !parameters.get(':p') && !parameters.get(':o'))){ 
    172                 alert('Parameter S, P or O must be defined.') 
    173                 return true; 
    174         } 
    175         return false; 
    176 } 
     189    if ((!parameters.get(':s') && !parameters.get(':p') && !parameters.get(':o'))) { 
     190        alert('Parameter S, P or O must be defined.') 
     191        return true; 
     192    } 
     193    return false; 
     194} 
     195 
    177196function clear(){ 
    178         //Remove all CSS added to which resource selected. 
    179         ['A','B','S','P','O'].each (function(item){removeCSS(item);} ); 
    180         removeCSS('SELECTED'); 
    181         parameters = new Hash(); 
    182          
    183 } 
    184 function removeCSS(item) { 
    185   $$('.' +  item).invoke('removeClassName', item); 
    186 } 
     197    //Remove all CSS added to which resource selected. 
     198    ['A', 'B', 'S', 'P', 'O'].each(function(item){ 
     199        removeCSS(item); 
     200    }); 
     201    removeCSS('SELECTED'); 
     202    parameters = new Hash(); 
     203     
     204} 
     205 
     206function removeCSS(item){ 
     207    $$('.' + item).invoke('removeClassName', item); 
     208} 
     209 
    187210/////////////////////////////// SEMANTIC OPERATIONS ////////////////////////////////////////// 
    188211//These are the operations applyed over triples or semantics annotations 
    189 function cmd_semantic(){     
    190         $$('._clear').each(function(item){ 
    191         item.onclick = function(){ 
    192                     clear(); 
     212function cmd_semantic(){ 
     213    $$('._clear').each(function(item){ 
     214        item.onclick = function(){ 
     215            clear(); 
    193216        }; 
    194217    }); 
     
    196219    //This observer is applied over the form id_form_keyword 
    197220    $('go').onclick = function(){ 
    198                 ajax_create(new SemanticExpression().go($F('seachbykeyword')));        
     221        ajax_create(new SemanticExpression().go($F('seachbykeyword'))); 
    199222    }; 
    200    $('search').onclick = function(){ 
    201                 ajax_create(new SemanticExpression().search($F('seachbykeyword')));       
     223    $('search').onclick = function(){ 
     224        ajax_create(new SemanticExpression().search($F('seachbykeyword'))); 
    202225    }; 
    203           //Add a listener for the facet create form.  
     226    //Add a listener for the facet create form.  
    204227    //This observer is applied over the form id_form_facet 
    205                 $$('._form_facet').each( function(item){ 
    206                 item.onsubmit = function(){                               
    207                 parameters.set('A', $$('.SELECTED')); 
    208         ajax_request("/facets/create?name="+$F(this['facetname'])+"&exp="+ new SemanticExpression('A')); 
    209                 clear(); 
    210         return false; 
    211                  };  
    212         }); 
    213   
    214         $$('._facetlist').each( function(item){ 
    215                 item.onchange = function(){              
    216                 //gets the set that has been faceted and computes the facet again.        
    217         $$('div#facetgroup > div:nth-child(3)')[0].crt_facet($F(this)); 
    218         return false; 
    219                  };  
    220         }); 
     228    $$('._form_facet').each(function(item){ 
     229        item.onsubmit = function(){ 
     230            parameters.set('A', $$('.SELECTED')); 
     231            ajax_request("/facets/create?name=" + $F(this['facetname']) + "&exp=" + new SemanticExpression('A')); 
     232            clear(); 
     233            return false; 
     234        }; 
     235    }); 
     236     
     237    $$('._facetlist').each(function(item){ 
     238        item.onchange = function(){ 
     239            //gets the set that has been faceted and computes the facet again.    
     240            $$('div#facetgroup > div:nth-child(3)')[0].crt_facet($F(this)); 
     241            return false; 
     242        }; 
     243    }); 
    221244} 
    222245 
     
    244267        if (Object.isArray(a)) { 
    245268            this.expression += a.map(function(x){ 
    246                 return '.union' +Element.exp(x); 
    247             }).join('');         
    248                 } 
     269                return '.union' + Element.exp(x); 
     270            }).join(''); 
     271        } 
    249272        else { 
    250273            this.expression += '.union' + Element.exp(a); 
     
    259282        if (Object.isArray(a)) { 
    260283            this.expression += '.intersection(' + new SemanticExpression(param) + ')'; 
    261          
    262                 } 
     284             
     285        } 
    263286        else { 
    264287            this.expression += '.intersection' + Element.exp(a); 
     
    275298                return '.difference' + Element.exp(x); 
    276299            }).join(''); 
    277                 } 
     300        } 
    278301        else { 
    279302            this.expression += '.difference' + Element.exp(a); 
     
    281304        return this; 
    282305    }, 
    283         getResourcesArray: function (param){ 
    284                 var a = parameters.get(param); 
    285                 var expression = ''; 
    286                 if (a == undefined)  
     306    getResourcesArray: function(param){ 
     307        var a = parameters.get(param); 
     308        var expression = ''; 
     309        if (a == undefined)  
    287310            return param; 
    288311        //The parameter could be only one element or several.                    
    289         if (Object.isArray(a)) {                         
     312        if (Object.isArray(a)) { 
    290313            expression += a.map(function(x){ 
    291                                 var resource = Element.resource(x); 
    292                                 if (resource == 'null'){  
    293                                 var exp = x.readAttribute('exp'); 
    294                                 if (exp.indexOf (':o,:o')!= -1) 
    295                                 { 
    296                                         return 'SemanticExpression.new' + encodeURIComponent(exp.replace(":o,:o",':o')) +'.resources(:o)' ;                                      
    297                                 }else if (exp.indexOf (':o,:p') != -1) 
    298                                 { 
    299                                         return 'SemanticExpression.new' + encodeURIComponent(exp.replace(":o,:p",':o')) +'.resources(:p)' ;                                      
    300                                 }else{ 
    301                                         return 'SemanticExpression.new' + encodeURIComponent(exp) +'.resources(:s)' ;                                    
    302                                 } 
    303                                 }else{ 
    304                                     return "['" + resource + "']" ; 
    305                                 } 
    306             }).join('|');                        
    307         }        
    308                 return  expression ; //returns a array of resources in ruby 
    309         }, 
    310     spo: function(s, p, o, r){           
     314                var resource = Element.resource(x); 
     315                if (resource == 'null') { 
     316                    var exp = x.readAttribute('exp'); 
     317                    if (exp.indexOf(':o,:o') != -1) { 
     318                        return 'SemanticExpression.new' + encodeURIComponent(exp.replace(":o,:o", ':o')) + '.resources(:o)'; 
     319                    } 
     320                    else  
     321                        if (exp.indexOf(':o,:p') != -1) { 
     322                            return 'SemanticExpression.new' + encodeURIComponent(exp.replace(":o,:p", ':o')) + '.resources(:p)'; 
     323                        } 
     324                        else { 
     325                            return 'SemanticExpression.new' + encodeURIComponent(exp) + '.resources(:s)'; 
     326                        } 
     327                } 
     328                else { 
     329                    return "['" + resource + "']"; 
     330                } 
     331            }).join('|'); 
     332        } 
     333        return expression; //returns a array of resources in ruby 
     334    }, 
     335    spo: function(s, p, o, r){ 
    311336        this.expression += '.spo(' + this.getResourcesArray(s) + ',' + this.getResourcesArray(p) + ',' + this.getResourcesArray(o) + ',' + parameters.get(r) + ')'; 
    312337        return this; 
     
    316341        return this; 
    317342    }, 
    318           search: function(k){ 
     343    search: function(k){ 
    319344        this.expression += '.search(\'' + encodeURIComponent(k) + '\')'; 
    320345        return this; 
    321346    }, 
    322         go: function(k){ 
     347    go: function(k){ 
    323348        this.expression += '.go(\'' + encodeURIComponent(k) + '\')'; 
    324349        return this; 
     
    329354}); 
    330355function preDefinedFilter(el){ 
    331         Element.extend(el); 
    332         var win = el.up('._WINDOW'); 
    333         var exp = Element.exp(win); 
    334          
    335         var select = el.previous('select'); 
    336          
    337         var operator = $F(select); 
    338         var value = el.value; 
    339          
    340         ajax_update(win.id, uri + "addfilter?uri=" + win.id +"&op=" + operator +"&value=" +value); 
    341 } 
    342  
     356    Element.extend(el); 
     357    var win = el.up('._WINDOW'); 
     358    var exp = Element.exp(win); 
     359     
     360    var select = el.previous('select'); 
     361     
     362    var operator = $F(select); 
     363    var value = el.value; 
     364     
     365    ajax_update(win.id, uri + "addfilter?uri=" + win.id + "&op=" + operator + "&value=" + value); 
     366} 
     367 
  • Explorator/trunk/public/javascripts/explorator_ui.js

    r227 r234  
    5959    $$('.resource').each(function(resource){ 
    6060        resource.identify(); 
    61         resource.ondblclick = function(e){         
     61        resource.ondblclick = function(e){ 
    6262            resource.ui_open(); 
    6363            e.stopPropagation(); 
    6464        }; 
    65 //         resource.onclick = function(e){         
    66 //                 $('seachbykeyword').value=resource.readAttribute('resource'); 
    67 //                      e.stopPropagation(); 
    68 //        }; 
     65        //         resource.onclick = function(e){         
     66        //                 $('seachbykeyword').value=resource.readAttribute('resource'); 
     67        //                      e.stopPropagation(); 
     68        //        }; 
    6969     
    7070        /* resource.onclick = function(e){           
     
    7575         };*/ 
    7676    }); 
    77          
     77     
    7878    $$('.all').each(function(resource){ 
    7979        resource.identify(); 
     
    105105    $$('._facet').each(function(item){ 
    106106        item.onclick = function(){ 
    107             $$('._FACETED').invoke('removeClassName', '_FACETED'); 
    108             item.addClassName('_FACETED'); 
    109             item.up('._WINDOW').crt_facet('default'); 
     107            if ($$('.SELECTED').size() != 1) { 
     108                alert("Select JUST 1 set to apply the facets."); 
     109            } 
     110            else { 
     111                if ($$('.SELECTED').first().hasClassName('resource')) { 
     112                    alert('You can only facet a SET not a RESOURCE.') 
     113                    return; 
     114                } 
     115                 
     116                $$('.SELECTED').first().crt_facet('default'); 
     117            } 
     118             
    110119        }; 
    111120    }); //calcuates the facets 
    112121    $$('._infer').each(function(item){ 
    113122        item.onclick = function(){ 
    114             $$('._FACETED').invoke('removeClassName', '_FACETED'); 
    115             item.addClassName('_FACETED'); 
    116             item.up('._WINDOW').crt_infer(); 
     123         
     124            if ($$('.SELECTED').size() != 1) { 
     125                alert("Select JUST 1 set to apply the facets."); 
     126            } 
     127            else { 
     128                if ($$('.SELECTED').first().hasClassName('resource')) { 
     129                    alert('You can only facet a SET not a RESOURCE.') 
     130                    return; 
     131                } 
     132                $$('.SELECTED').first().crt_infer(); 
     133            } 
    117134        }; 
    118135    }); 
     
    248265                } 
    249266            }); 
    250                         var uri = item.readAttribute('resource'); 
    251                         if (uri!=null) 
    252                         $('seachbykeyword').value=uri.replace('<','').replace('>','') 
    253                  
    254          
     267            var uri = item.readAttribute('resource'); 
     268            if (uri != null)  
     269                $('seachbykeyword').value = uri.replace('<', '').replace('>', '') 
     270             
     271             
    255272            item.select('._collapseproperties').invoke('hide'); 
    256273            item.select('._expandproperties').invoke('show');