Changeset 416


Ignore:
Timestamp:
02/19/14 17:34:45 (6 years ago)
Author:
jls17
Message:
  • kept the general filtering logic in object_list.js
  • ... and removed it from actlinkList.js
  • moved schema-list specific code to its own file (schemaList.js)
  • updated the page generation of actlink-list and schema-list to use the correct js files
Location:
branches/work_304
Files:
1 added
5 edited

Legend:

Unmodified
Added
Removed
  • branches/work_304/ARInsideLib.vcproj

    r403 r416  
    17091709                        <File 
    17101710                                RelativePath=".\res\schema_page.js" 
     1711                                > 
     1712                        </File> 
     1713                        <File 
     1714                                RelativePath=".\res\schemaList.js" 
    17111715                                > 
    17121716                        </File> 
  • branches/work_304/CMakeLists.txt

    r412 r416  
    285285        COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/schema_page.js ${CMAKE_BINARY_DIR}/img 
    286286        COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/arshelper.js ${CMAKE_BINARY_DIR}/img 
     287        COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/schemaList.js ${CMAKE_BINARY_DIR}/img 
    287288        COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/actlinkList.js ${CMAKE_BINARY_DIR}/img 
    288289        COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/style.css ${CMAKE_BINARY_DIR}/img 
  • branches/work_304/doc/DocMain.cpp

    r412 r416  
    201201                                webPage.GetReferenceManager() 
    202202                                        .AddScriptReference("img/object_list.js") 
     203                                        .AddScriptReference("img/schemaList.js") 
    203204                                        .AddScriptReference("img/jquery.timers.js") 
    204205                                        .AddScriptReference("img/jquery.address.min.js"); 
     
    284285                        { 
    285286                                webPage.GetReferenceManager() 
     287                                        .AddScriptReference("img/object_list.js") 
    286288                                        .AddScriptReference("img/actlinkList.js") 
    287289                                        .AddScriptReference("img/jquery.timers.js") 
  • branches/work_304/res/actlinkList.js

    r415 r416  
    1 function FilterableTable(objTableId, objFilterId, objResultCountId) { 
    2         this.tableId = objTableId; 
    3         this.filterId = objFilterId; 
    4         this.resultCountId = objResultCountId; 
    5         this.maxMatches = 100; 
    6         this.lastMatches = 0; 
    7         this.lastIndex = 0; 
    8         this.nameIndex = 0; 
    9     this.table = $('#' + objTableId); 
    10 } 
    11  
    12 FilterableTable.prototype.hasTypeFilter = function() { return false; } 
    13 FilterableTable.prototype.checkTypeFilterForRow = function(row) { return false; } 
    14 FilterableTable.prototype.createHtmlRow = function(row) { return ""; } 
    15  
    16 FilterableTable.prototype.onHasTypeFilter = function(cb) { this.hasTypeFilter = cb; return this; } 
    17 FilterableTable.prototype.onCheckTypeFilterForRow = function(cb) { this.checkTypeFilterForRow = cb; return this; } 
    18 FilterableTable.prototype.onCreateHtmlRow = function(cb) { this.createHtmlRow = cb; return this; } 
    19  
    20 FilterableTable.prototype.setNameIndex = function(idx) { this.nameIndex = idx; return this; } 
    21  
    22 FilterableTable.prototype.createMoreResultsRow = function() { 
    23         var ft = this; 
    24     return $("<tfoot>").append($("<tr>") 
    25     .append($("<td class='warn' colspan=99>").text("Result limit reached! ") 
    26             .append($("<a id=showNext href='javascript:void(0)'>Show Next " + ft.maxMatches + "</a>").click(function() { 
    27                 $(this).parents('tfoot:first').remove(); 
    28                 ft.filterTable('next'); 
    29             })) 
    30             .append(" &nbsp; ") 
    31             .append($("<a id=showAll href='javascript:void(0)'>Show All</a>").click(function() { 
    32                 $(this).parents('tfoot:first').remove(); 
    33                 ft.filterTable('all'); 
    34             })) 
    35         )); 
    36 } 
    37  
    38 FilterableTable.prototype.filterTable = function(appendNextChunk) { 
    39     var table = this.table; //$('#' + tableId); 
    40         var list = window[this.tableId]; 
    41     var search = $('#' + this.filterId).val().replace(/ +/g, " ").replace(/ /g, ".*"); 
    42     var numSearch = search.search("^\\d+$"); 
    43     var maxMatch = this.maxMatches; 
    44     var lastMatches = 0; 
    45     var matches = 0; 
    46     var hasTypeFilter = this.hasTypeFilter(); 
    47     var hasFilter = (search != null && search.length > 0) || hasTypeFilter; 
    48     var start = 0; 
    49     var end = list.length; 
    50     var showAllMatches = appendNextChunk == 'all'; 
    51  
    52     if (appendNextChunk) { 
    53         start = this.lastIndex; 
    54         lastMatches += this.lastMatches; 
    55     } 
    56     else { 
    57         $('#' + this.tableId + ' tbody,tfoot').remove(); 
    58     } 
    59  
    60     if (hasFilter) { 
    61         for (var i = start; i < end; i++) { 
    62             var r = new RegExp(search, "i"); 
    63                         var row = list[i]; 
    64             if ((!hasTypeFilter || hasTypeFilter && this.checkTypeFilterForRow(row)) && (row[this.nameIndex].match(r) || (numSearch == 0 && ("" + row[0]) == search))) { 
    65                 matches++; 
    66                 table.append(this.createHtmlRow(row)); 
    67             } 
    68             if (!showAllMatches && matches >= maxMatch) { 
    69                 table.append(this.createMoreResultsRow()); 
    70                 this.lastIndex = i + 1; 
    71                 this.lastMatches = lastMatches + matches; 
    72                 break; 
    73             } 
    74         }; 
    75     } 
    76     $('#' + this.resultCountId).text((hasFilter ? "showing " + (lastMatches + matches) + " out of " : "")); 
    77 } 
    78  
    791function initActlinkTable() { 
    802    if (alList != null) {  
  • branches/work_304/res/object_list.js

    r415 r416  
    7676    $('#' + this.resultCountId).text((hasFilter ? "showing " + (lastMatches + matches) + " out of " : "")); 
    7777} 
    78  
    79 function initSchemaTable() { 
    80     if (schemaList != null) {  
    81                 schemaListObj = new FilterableTable('schemaList', 'formFilter', 'schemaListFilterResultCount'); 
    82                 schemaListObj.typeFilter = new Array(); 
    83                 schemaListObj.onHasTypeFilter(function() { 
    84                         var allTypeOn = true; 
    85                         var allTypeOff = true; 
    86                         for (i = 1; i < 6; i++) { 
    87                                 this.typeFilter[i] = $('#multiFilter input[value="' + i + '"]').attr('checked'); 
    88                                 if (this.typeFilter[i]) { allTypeOff = false; } 
    89                                 if (!this.typeFilter[i]) { allTypeOn = false; } 
    90                         } 
    91                         return !(allTypeOff || allTypeOn)                        
    92                 }) 
    93                 .onCheckTypeFilterForRow(function(row) { 
    94                         return schemaListObj.typeFilter[row[5]]; 
    95                 }) 
    96                 .setNameIndex(1) 
    97                 .onCreateHtmlRow(createSchemaRowHtml); 
    98         } 
    99 } 
    100  
    101 function updateSchemaTable() { 
    102     if (schemaListObj != null) { schemaListObj.filterTable(); } 
    103 } 
    104  
    105 function createSchemaRowHtml(data) { 
    106     return ($("<tr>") 
    107         .append($("<td>") 
    108             .append(getIcon(rootLevel, 1, 0)) 
    109             .append($("<a>").attr("href", data[8]).text(data[1])) 
    110         ) 
    111         .append($("<td>").text(data[2])) 
    112         .append($("<td>").text(data[3])) 
    113                 .append($("<td>").text(data[4])) 
    114                 .append($("<td>").text(ARSchemaType(data[5]))) 
    115                 .append($("<td>").text(data[6])) 
    116                 .append($("<td>").text(data[7])) 
    117     ); 
    118 } 
    119  
    120 $('document').ready(function() { 
    121     var checkBoxes = $('#multiFilter input[type="checkbox"]'); 
    122  
    123     $(".clearable").on('propertychange keyup input paste', 'input.data_field', function(e) { 
    124         if (e.keyCode == 27 /*Escape-Key*/) { $(this).val(''); } 
    125         $(this).stopTime().oneTime(300, updateSchemaTable); 
    126     }); 
    127     $("#formFilter").click(updateSchemaTable); 
    128     $("#typeFilterNone").click(function() { 
    129         checkBoxes.each(function() { 
    130             this.checked = false; 
    131         }); 
    132         updateSchemaTable(); 
    133     }); 
    134     checkBoxes.change(updateSchemaTable); 
    135  
    136     initSchemaTable(); 
    137     if ($("#formFilter").focus().val() != "" || schemaListObj.hasTypeFilter()) { 
    138         updateSchemaTable(); 
    139     }; 
    140  
    141     $("#formLetterFilter a").click(function() { 
    142         $("#formFilter").val("^" + this.text); 
    143         updateSchemaTable(); 
    144         return false; 
    145     }); 
    146 }); 
Note: See TracChangeset for help on using the changeset viewer.