Widget:CetsiSearchHelper/cetsihelper.js

From Open Energy Information

/*plan,assess, and imp switches*/ var planChecked=false; var assessChecked=false; var impChecked=false;

/*attach checkboxes with attributes*/ $('.action-togglebox').each(function(index){

 /*get label text*/
 label = $(this).children("span:first").html();

 label = label.replace(/ /g,'_');

 /*get arrow child to use to insert checkbox before */
 arrow = $(this).children("div:first");
 /*generate a checkbox based on the label text*/
 chkBox = "<input id='"+label+"' type='checkbox' style='float:left;position:relative;'/>";
 /*insert the checkbox into the parent container*/
 $(chkBox).insertBefore(arrow).bind('click',specialAsk);
 });


/*add display div*/ rightSideDiv = $(".right:last"); newInfoDiv=document.createElement('ul'); //txtNode = document.createTextNode('Test:'); //newInfoDiv.appendChild(txtNode); newInfoDiv.setAttribute('id', 'rCetsiMeta'); newInfoDiv.setAttribute('class', 'right'); $(newInfoDiv).insertAfter(rightSideDiv); $("#rCetsiMeta").css({'font-weight':'bolder','width':'32%','height':'491px','clear':'right','padding':'10px','list-style':'none','overflow-y':'scroll','border':'3px solid #96CBB7'});

$instructions= function(){

$('
  • Please click a checkbox to show related results:
  • ').addClass('rCetsiMeta_'+label).appendTo($('#rCetsiMeta'));
     };
    

    $instructions();

    /*******************/ function specialAsk(e){ var sector=""; if (typeof e=="string"){

     sector=e;
     }else sector= e.currentTarget.id;
    

    /*unfix the id format*/ sector=sector.replace(/_/g, " "); $("#rCetsiMeta").children().remove();

    /*check if more than one checkbox is checked*/ var params = $("input:checked"); if(params.length <1) {e.stopPropagation();$("#rCetsiMeta").append($instructions);return"";} var ajWaitWidth="110"; var ajWaitHeight="110"; var ajWaitMarginLeft= ($('#rCetsiMeta').width()/2) - (.2 * ajWaitWidth); var ajWaitMarginTop= ($('#rCetsiMeta').height()/2) - (.2 * ajWaitHeight); /*if passes checks, display wait image*/

    $("#rCetsiMeta").empty().html("
    <img src='/w/images/3/33/Ajaxwait.gif' alt='Loading Content' />
    ");

    var sectors=new Array(); var imps=new Array(); var sTokens=""; var ipTokens=""; var lBrk="["; var rBrk="]"; var like="-7E"; var under="-20a"; var glue="AND"; var s ="Sector::"; var ip="Implementation_Phase::"; var like ="%7E" var eq="%3D"; var useOR=false; var format="json"; var limit="500"; var itemsArr= new Array(); var impMatch=false; //var logOr="||"; var logOr=""; if(params.length >1) useOR=true;

    if(useOR){

     $.each(params, function(index, el) {
       impMatch=checkId(el.id);
       if(impMatch){
          /*build Implementation Phases*/
          imps.push(getImpStr(el.id));
          /*array to string with glue*/
          //ipTokens=imps.join(glue);
          }else{
             /*build sectors*/
             sectors.push(el.id.replace(/_/g, " ")+logOr);
             //sTokens=sectors.join(glue);
             }
       impMatch=false;
       });
     /*wrap imps after all checked have been looped through and extrated*/
     ipTokens=wrapImps(imps);
     sTokens=wrapSectors(sectors);
     }else{
        impMatch=checkId(params[0].id);
        if(impMatch){
           imps.push(getImpStr(params[0].id));
           ipTokens=wrapImps(imps);
           }else{
           	sectors.push((params[0].id.replace(/_/g, " "))+logOr);
               sTokens=wrapSectors(sectors);
               }
        impMatch=false;   
        }
    

    var orStr=""; if(sTokens.length>0 && ipTokens.length>0) orStr=" AND "; /*ask it*/ var serv= document.domain.replace(/.openei.org/g, "");/* global regex rep*/ $.ajax({

       type: 'POST',
       url: 'http://'+serv+'.openei.org/wiki/Special:Ask',
       dataType: 'json',
       data:{title:'Special:Ask',p:{format:'json',limit:500},q:'" '+sTokens+orStr+ipTokens+'"'},
       success: function(msg){
           /*clear loader*/
           clearContainer("#rCetsiMeta");
           msg=msg.items;
           $.each(msg, function(key, val) {
               /*if(key=="items") itemsArr.push(val);*/
               itemsArr.push(val.uri);
               addCetsiMeta(key,val.uri);
               });
           }  
    

    });

    /*populate the new right side cetsi meta area*/

    /*this is needed so checkboxes check and other parent click events don't happen*/ e.stopPropagation(); }/*f*/

    function wrapSectors(sectors){ var retStr=""; var wrapLeft=""; var wrapRight=""; if(sectors.length <1) return ""; /*retStr+=wrapLeft;when using ORs*/ $.each(sectors, function(key,val){ retStr+=wrapLeft+val+wrapRight; }); /*retStr = retStr.substring(0, retStr.length-2); when using ORs*/ /*retStr+=wrapRight;used when using ORs*/ return retStr; }/*f*/

    function wrapImps(imps){

     var retStr="";
     var wrapLeft="";
     if(imps.length <1) return "";
     retStr+=wrapLeft;
     $.each(imps, function(key,val){
         retStr+=val;
         });
     retStr = retStr.substring(0, retStr.length-2);
     retStr+=wrapRight;
     return retStr;
     }/*f*/
    

    function checkId(id){

     var match=false;
     switch(id){
       case"Plan":
         planChecked=true;
         match=true;
         break;
       case"Assess":
         assessChecked=true;
         match=true;
         break;
       case"Implement":
         impChecked=true;
         match=true;
         break;
       }
     return match;
     }/*f*/
    

    function getImpStr(id){

     var impStr="";
     switch(id){
       case"Plan":
         impStr+="Create a Vision||";
         impStr+="Bring the Right People Together||";
         break;
       case"Assess":
         impStr+="Determine Baseline||";
         impStr+="Evaluate Options||";
         impStr+="Develop Goals||";
         impStr+="Prepare a Plan||";
         impStr+="Get Feedback||";
         break;
       case"Implement":
         impStr+="Develop Finance and Implement Projects||";
         impStr+="Create Early Successes||";
         impStr+="Evaluate Effectiveness and Revise as Needed||";
         break;
       }
     return impStr;  
      }
    

    function clearContainer(locator){

     /*clear cetsimeta div*/
     $("#rCetsiMeta").children().remove();
     }/*f*/
    

    function addCetsiMeta(key,label){

     labelTitle= label.replace(/http:\/\/?.{2,3}.openei.org\/w\/index.php\?title=/g,);
    
    $("#rCetsiMeta").append("
  • <a href='http://"+document.domain+"/w/index.php?title="+labelTitle+"' target='_blank'>"+labelTitle+"</a>

  • ");
     }/*f*/