2014-12-11 2 views
0

FUELUX reperater를 사용하려고하는데 모든 데이터가 정상적으로 작동합니다. 이제 제 질문은 :Fuelux에서 페이징을 설정하는 방법

어떻게 페이징을 올바르게 설정할 수 있습니까? 지금은 한 페이지에 모든 결과를 표시하고 콘솔에서 최대 호출 스택 초과 오류가 발생합니다.

function getCheckinData(options, callback) { 
     $.ajax({ 
      type: 'POST', 
      url: "../wp-content/plugins/hg-reports/includes/checkin_page/JSON_data.php", 
      data: { 
       filter: options.filter.value, 
       search: (typeof options.search != 'undefined') ? options.search : "", 
       sort_property: (typeof options.sortProperty != 'undefined') ? options.sortProperty : "", 
       sort_direction: (typeof options.sortDirection != 'undefined') ? options.sortDirection : "" 
      } 
     }) 
      .done(function (data, result, jqXHR) { 
       var checkinData = JSON.parse(data).data; 

       _.templateSettings.variable = "badNode"; 
       var template = _.template(
        $("script.template").html() 
       ); 

       _.each(checkinData, function (row) { 
        row.badNodesHTML = ""; 
        var HG_action_login = '<a class="btn btn-default btn-sm" target="_blank" href="#"><i class="fa fa-external-link"></i> APP</a>'; 

        row.HG_actions = HG_action_login; 
        if (row.badNodes.length) { 
         _.each(row.badNodes, function (badNode) { 
          [badNode.address].toString() 
          badNode.address = /:(.+)/.exec(badNode.address)[1]; 
          row.badNodesHTML += template(badNode); 
          row.HG_actions; 
         }); 
        } 
       }); 


       var resp = { 
        columns: [ 
         {label: "Actions", property: "HG_actions", sortable: false, className: "actions", width: 70}, 
         {label: "User", property: "customer", sortable: true, width: 200, className: "userCell"}, 
         {label: "Description", property: "description", sortable: false, width: 180, className: "editableDescription"}, 
         {label: "Flag", property: "flag", sortable: false, width: 60, className: "editableFlag"}, 
         {label: "Build", property: "build", sortable: false, width: 150}, 
         // {label: "TimeStamp", property: "ts", sortable: true, width: 180}, 
         {label: "Checkin", property: "checkin", sortable: true, width: 250}, 
         {label: "MAC", property: "site", sortable: true, width: 200, className: "macAddressColumn"}, 
         // {label: "Address", property: "address", sortable: false, width: 150}, 
         {label: "Boiler", property: "boiler", sortable: false, width: 150}, 
         {label: "Nodes", property: "nodes", sortable: false, width: 80}, 
         {label: "BadNodes", property: "badNodesHTML", sortable: false, className: "badNodes"} 
        ], 
        count: checkinData.length, 
        items: checkinData, 
        page: options.pageIndex, 
        pages: Math.ceil(checkinData.length/(options.pageSize || 50)) 
       }; 

       var items = checkinData; 

       var pageIndex = options.pageIndex; 
       var pageSize = options.pageSize; 
       var data = items; 

       var totalItems = data.length; 
       var totalPages = Math.ceil(totalItems/pageSize); 
       var startIndex = (pageIndex * pageSize) + 1; 
       var endIndex = (startIndex + pageSize) - 1; 
       if (endIndex > data.length) { 
        endIndex = data.length; 
       } 

       data = data.slice(startIndex - 1, endIndex); 

       var dataSource = { 
        page: pageIndex, 
        pages: totalPages, 
        count: totalItems, 
        start: startIndex, 
        end: endIndex, 
        columns: columns, 
        items: data 
       }; 

       callback(resp, dataSource); 
       var statusColumnSuccess = $(".macAddressColumn span.success"); 
       var statusColumnWarning = $(".macAddressColumn span.warning"); 
       var statusColumnDanger = $(".macAddressColumn span.danger"); 

       $(statusColumnSuccess).closest("tr").addClass("hg-systems-success") 
       $(statusColumnWarning).closest("tr").addClass("hg-systems-warning") 
       $(statusColumnDanger).closest("tr").addClass("hg-systems-danger") 

      } 
     ). 
      fail(function (jqXHR, textStatus, errorThrown) { 
       console.error(
        "The following error occured: " + 
         textStatus, errorThrown 
       ); 
      }); 

    }; 
    $('#myRepeater').repeater({dataSource: getCheckinData}); 

여기에 HTML 마크 업입니다 :

이 내가 가진 그 코드는 어떤 도움이 정말 감사하겠습니다

<div class="fuelux"> 
<div class="repeater" id="myRepeater"> 
<div class="repeater-header"> 
    <div class="repeater-header-left"> 
     <div class="repeater-search"> 
      <div class="search input-group"> 
       <input type="search" class="form-control" placeholder="Search" id="fueluxSearchBox"/> 
      <span class="input-group-btn"> 
       <button class="btn btn-default" type="button" id="searchButton"> 
        <span class="glyphicon glyphicon-search"></span> 
        <span class="sr-only">Search</span> 
       </button> 
       <button id="enableEdit" class="btn btn-success">Enable Edit</button> 
      </span> 
      </div> 

     </div> 
    </div> 
    <div class="repeater-header-right"> 
     <div class="btn-group selectlist repeater-filters" data-resize="auto"> 
      <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown"> 
       <span class="selected-label">&nbsp;</span> 
       <span class="caret"></span> 
       <span class="sr-only">Toggle Filters</span> 
      </button> 
      <ul class="dropdown-menu" role="menu"> 
       <li data-value="all" data-selected="true"><a href="#">All</a></li> 
       <li data-value="notRegistered"><a href="#">Not Registered</a></li> 
       <li data-value="nodeIssues"><a href="#">Node Issues</a></li> 
       <li data-value="checkinIssues"><a href="#">Checkin Issues</a></li> 
       <li data-value="oldSoftware"><a href="#">Old Software</a></li> 
      </ul> 
      <input class="hidden hidden-field" name="filterSelection" readonly="readonly" aria-hidden="true" 
        type="text"/> 
     </div> 
    </div> 
</div> 
<div class="repeater-viewport"> 
    <div class="repeater-canvas"></div> 
    <div class="loader repeater-loader"></div> 
</div> 
<div class="repeater-footer"> 
<div class="repeater-footer-left"> 
    <div class="repeater-itemization"> 
     <span><span class="repeater-start"></span> - <span class="repeater-end"></span> of <span 
       class="repeater-count"></span> items</span> 

     <div class="btn-group selectlist" data-resize="auto"> 
      <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown"> 
       <span class="selected-label">&nbsp;</span> 
       <span class="caret"></span> 
       <span class="sr-only">Toggle Dropdown</span> 
      </button> 
      <ul class="dropdown-menu" role="menu"> 
       <li data-value="5"><a href="#">5</a></li> 
       <li data-value="10" data-selected="true"><a href="#">10</a></li> 
       <li data-value="20"><a href="#">20</a></li> 
       <li data-value="50" data-foo="bar" data-fizz="buzz"><a href="#">50</a></li> 
       <li data-value="100"><a href="#">100</a></li> 
      </ul> 
      <input class="hidden hidden-field" name="itemsPerPage" readonly="readonly" aria-hidden="true" type="text"/> 
     </div> 
     <span>Per Page</span> 
    </div> 
</div> 
<div class="repeater-footer-right"> 
    <div class="repeater-pagination"> 
     <button type="button" class="btn btn-default btn-sm repeater-prev"> 
      <span class="glyphicon glyphicon-chevron-left"></span> 
      <span class="sr-only">Previous Page</span> 
     </button> 
     <label class="page-label" id="myPageLabel">Page</label> 

     <div class="repeater-primaryPaging active"> 
      <div class="input-group input-append dropdown combobox"> 
       <input type="text" class="form-control" aria-labelledby="myPageLabel"> 

       <div class="input-group-btn"> 
        <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown"> 
         <span class="caret"></span> 
         <span class="sr-only">Toggle Dropdown</span> 
        </button> 
        <ul class="dropdown-menu dropdown-menu-right"></ul> 
       </div> 


      </div> 
     </div> 
     <input type="text" class="form-control repeater-secondaryPaging" aria-labelledby="myPageLabel"> 
     <span>of <span class="repeater-pages"></span></span> 


     <button type="button" class="btn btn-default btn-sm repeater-next"> 
      <span class="glyphicon glyphicon-chevron-right"></span> 


      <span class="sr-only">Next Page</span> 
     </button> 
    </div> 

! 당신은 단지 리피터를 한 페이지에 있어야합니다 항목을 줄 수 있도록

덕분에 많은

답변

1

당신은 당신의 데이터 소스에서 페이징을 설정합니다. 데이터 소스의 콜백으로 전송 된 데이터는 현재 표시된 데이터 여야하며 데이터 소스에서 사용할 수있는 옵션이 두 번째 페이지라고하면 데이터를 두 번째 페이지의 데이터로 변경하십시오.

필터처럼 데이터 소스를 처리하십시오.

+0

내가 확인할 수있는 예제가 있습니까? – Nick

관련 문제