Ignore:
Timestamp:
May 13, 2010, 10:21:05 PM (14 years ago)
Author:
grum
Message:

Improve algorythm for colors analysis + use GPCRequestBuilder interface instead of a local interface

File:
1 edited

Legend:

Unmodified
Added
Removed
  • extensions/ColorStat/admin/cstat_search.tpl

    r6107 r6176  
    1 {known_script id="jquery.ui" src=$ROOT_URL|@cat:"themes/default/js/ui/packed/ui.core.packed.js"}
    2 {known_script id="jquery.ui.dialog" src=$ROOT_URL|@cat:"themes/default/js/ui/packed/ui.dialog.packed.js"}
    3 {known_script id="jquery.tipTip" src=$ROOT_URL|@cat:"themes/default/js/plugins/jquery.tipTip.minified.js"}
    4 
    5 {known_script id="gpc.pagesNavigator" src=$ROOT_URL|@cat:"plugins/GrumPluginClasses/js/pagesNavigator.js"}
    6 
    7 
    8 {literal}
    9 <script type="text/javascript">
    10 var cb=null;
    11 
    12   interfaceManager = function(optionsToSet)
    13   {
    14     var pn=null;
    15     var requestNumber=0;
    16 
    17     options =
    18       {
    19         requestCriterionsVisible:'',
    20         requestCriterionsHidden:'',
    21         requestResult:'',
    22         requestResultContent:'',
    23         requestResultNfo:'',
    24         requestResultPagesNavigator:'',
    25         requestResultRequestNumber:0,
    26         onPageChange:null,
    27         numberPerPage:30,
    28       };
    29 
    30     /**
    31      *
    32      */
    33     this.doAction = function(fct)
    34     {
    35       switch(fct)
    36       {
    37         case 'queryResult':
    38           /* function 'queryResult' : when query is executed, prepare the interface
    39            */
    40           if(arguments.length==3)
    41           {
    42             displayQueryResult(arguments[1], arguments[2]);
    43           }
    44           break;
    45         case 'queryPage':
    46           /* function 'queryPage' : display returned page
    47            */
    48           if(arguments.length==3)
    49           {
    50             displayQueryPage(arguments[1], arguments[2]);
    51           }
    52           break;
    53         case 'show':
    54           /* function 'show' : show/hide the query/result
    55            */
    56           if(arguments.length==2)
    57           {
    58             show(arguments[1]);
    59           }
    60           break;
    61         case 'setOptions':
    62           /* function 'setOptions' : allows to set options after the object was
    63            *                         created
    64            */
    65           if(arguments.length==2)
    66           {
    67             setOptions(arguments[1]);
    68           }
    69           break;
    70       }
    71     }
    72 
    73     /**
    74      * returns the current request number
    75      */
    76     this.getRequestNumber = function ()
    77     {
    78       return(requestNumber);
    79     }
    80 
    81     /**
    82      * returns the number of items per page
    83      */
    84     this.getNumberPerPage = function ()
    85     {
    86       return(options.numberPerPage);
    87     }
    88 
    89     /**
    90      * this function show/hide the different panels
    91      *  'buildQuery'  : hide the result panel and display the panel to build query
    92      *  'resultQuery' : hide the panel to build query and display the result panel
    93      */
    94     var show = function(mode)
    95     {
    96       switch(mode)
    97       {
    98         case 'buildQuery':
    99           $('.'+options.requestCriterionsVisible).css('display', 'block');
    100           $('.'+options.requestCriterionsHidden).css('display', 'none');
    101           $('.'+options.requestResult).css('display', 'none');
    102           break;
    103         case 'resultQuery':
    104           $('#iResultQueryContent').html("<br><img src='./plugins/GrumPluginClasses/icons/processing.gif'>");
    105           $('.'+options.requestCriterionsVisible).css('display', 'none');
    106           $('.'+options.requestCriterionsHidden).css('display', 'block');
    107           $('.'+options.requestResult).css('display', 'block');
    108           break;
    109       }
    110     }
    111 
    112     /**
    113      * this function display the number of items found and prepare the page
    114      * navigator
    115      *
    116      * @param String nfo : 2 information separated with a semi-colon ';'
    117      *                      requestNumber;numberOfItems
    118      */
    119     var displayQueryResult = function (isSuccess, nfo)
    120     {
    121       if(isSuccess)
    122       {
    123         nfo=nfo.split(';');
    124 
    125         requestNumber=nfo[0];
    126         $('#iResultQueryNfo').html(nfo[1]);
    127         pn.doAction('setOptions', { numberItem:nfo[1], defaultPage:1 } );
    128         show('resultQuery');
    129       }
    130       else
    131       {
    132         //$('#'+options.requestResultContent).html("");
    133         show('buildQuery');
    134         alert('Something is wrong on the server-side !');
    135       }
    136     }
    137 
    138 
    139     /**
    140      * this function display the number of items found and prepare the page
    141      * navigator
    142      *
    143      * @param String nfo : 2 information separated with a semi-colon ';'
    144      *                      requestNumber;numberOfItems
    145      */
    146     var displayQueryPage = function (isSuccess, nfo)
    147     {
    148       if(isSuccess)
    149       {
    150         $('#iResultQueryContent').html(nfo);
    151       }
    152       else
    153       {
    154         alert('Something is wrong on the server-side !');
    155       }
    156     }
    157 
    158 
    159     /**
    160      *
    161      * @param Object optionsToSet : set the given options
    162      */
    163     var setOptions = function(optionsToSet)
    164     {
    165       if(typeof optionsToSet=='object')
    166       {
    167         options = jQuery.extend(options, optionsToSet);
    168       }
    169     }
    170 
    171     /**
    172      * initialize the object
    173      */
    174     var init = function (optionsToSet)
    175     {
    176       setOptions(optionsToSet);
    177 
    178       pn = new pagesNavigator(options.requestResultPagesNavigator,
    179         {
    180           itemPerPage:options.numberPerPage,
    181           displayNumPage:9,
    182           classActive:'pnActive{/literal}{$datas.themeName}{literal}',
    183           classInactive:'pnInactive{/literal}{$datas.themeName}{literal}',
    184           onPageChange: function (page)
    185             {
    186               if(options.onPageChange!=null && jQuery.isFunction(options.onPageChange))
    187               {
    188                 options.onPageChange(requestNumber, page, options.numberPerPage);
    189               }
    190             },
    191         }
    192       );
    193 
    194       requestNumber=options.requestResultRequestNumber;
    195     }
    196 
    197     init(optionsToSet);
    198   }
    199 
    200 
    201   function init()
    202   {
    203     im = new interfaceManager(
    204       {
    205         requestCriterionsVisible:'cRequestCriterions',
    206         requestCriterionsHidden:'cModifyRequest',
    207         requestResult:'cResultQuery',
    208         requestResultContent:'iResultQueryContent',
    209         requestResultNfo:'iResultQueryNfo',
    210         requestResultPagesNavigator:'iPagesNavigator',
    211       }
    212     );
    213 
    214     requestBuilderOptions.imgEditUrl='{/literal}{$ROOT_URL}{$themeconf.admin_icon_dir}{literal}/edit_s.png';
    215     requestBuilderOptions.imgDeleteUrl='{/literal}{$ROOT_URL}{$themeconf.admin_icon_dir}{literal}/delete.png';
    216     requestBuilderOptions.classGroup='gcBorderInput gcTextInput';
    217     requestBuilderOptions.classItem='gcBgInput gcTextInput';
    218     requestBuilderOptions.classOperator='cbOperator cbOperatorBg{/literal}{$datas.themeName}{literal} gcLinkHover';
    219     requestBuilderOptions.onRequestSuccess = function (msg) { im.doAction('queryResult', true, msg); cb.doAction('getPage', im.getRequestNumber(), 1, im.getNumberPerPage()); };
    220     requestBuilderOptions.onRequestError = function (msg) { im.doAction('queryResult', false, msg); };
    221     requestBuilderOptions.onGetPageSuccess = function (msg) { im.doAction('queryPage', true, msg); };
    222     requestBuilderOptions.onGetPageError = function (msg) { im.doAction('queryPage', false, msg); };
    223 
    224     cb = new criteriaBuilder('iListColorsChoosen', requestBuilderOptions);
    225 
    226     im.doAction('setOptions',
    227       { onPageChange:
    228           function (requestNumber, page, numberPerPage)
    229           {
    230             $('#iResultQueryContent').html("<br><img src='./plugins/GrumPluginClasses/icons/processing.gif'>");
    231             cb.doAction('getPage', requestNumber, page, numberPerPage);
    232           }
    233       }
    234     );
    235 
    236   }
    237 
    238 
    239 
    240 </script>
    241 {/literal}
    242 
    243 {$datas.dialogBox}
    2441
    2452<h2>{'cstat_search_by_color'|@translate}</h2>
    2463
    247 <form>
    248   <fieldset>
    249     <legend>{'cstat_search_criterion'|@translate}</legend>
    250 
    251     <div id='iRequestCriterions' class='cRequestCriterions'>
    252       <div style='width:100%;min-height:250px;margin-bottom:8px;'>
    253         <ul id='iListColorsChoosen'>
    254         </ul>
    255       </div>
    256 
    257       <div class='gcBgInput cbButtons'>{literal}<a onclick="colorBox.show({cBuilder:cb});">{/literal}{'cstat_add_colors'|@translate}</a></div>
    258       <div class='gcBgInput cbButtons'>{literal}<a onclick="cb.doAction('clear');">{/literal}{'cstat_clear_colors'|@translate}</a></div>
    259     </div>
    260     <div class='cModifyRequest' style='display:none;'>
    261       <div class='gcBgInput cbButtons'>{literal}<a onclick="im.doAction('show', 'buildQuery');">{/literal}{'cstat_do_modify_request'|@translate}</a></div>
    262     </div>
    263 
    264   </fieldset>
    265 
    266   <input type="button" class='cRequestCriterions' style="margin-left:1em;" onclick="cb.doAction('send');" value="{'cstat_search'|@translate}">
    267 </form>
    268 
    269   <fieldset id='iResultQuery' style='display:none;' class='cResultQuery'>
    270     <legend>{'cstat_result_query'|@translate}</legend>
    271 
    272     <div id='iResultQueryContent' style='width:100%;min-height:250px;max-height:450px;overflow:auto;margin-bottom:8px;'></div>
    273 
    274     <div class='gcBgInput gcTextInput'>
    275       <div id='iPagesNavigator' style='float:right;'></div>
    276       <div style='text-align:left;padding:4px;'>{'cstat_number_of_item_found'|@translate}&nbsp;:&nbsp;<span id='iResultQueryNfo'></span></div>
    277     </div>
    278 
    279   </fieldset>
    280 
    281 
    282 <script type="text/javascript">
    283  init();
    284 </script>
     4{$cstat_search_page}
Note: See TracChangeset for help on using the changeset viewer.