Add paging function
authorHongyuan Ma <CS_MaleicAcid@163.com>
Fri, 22 Jun 2018 02:12:13 +0000 (10:12 +0800)
committerHongyuan Ma <CS_MaleicAcid@163.com>
Fri, 22 Jun 2018 02:12:13 +0000 (10:12 +0800)
client/post-example/results.json
front-end/src/page/status/index.jsx
front-end/src/service/record-service.jsx
front-end/src/util/basic-table/index.jsx
web/apps/test_records/serializer.py
web/apps/test_records/views.py
web/apps/users/models.py

index 1e5d9139263a732dd0beed418fe7797a13b6d1f3..151f6791dc48627c056ff4520e1a03a87df1cb1a 100644 (file)
@@ -4,7 +4,7 @@
             "10": {
                 "1": {
                     "std": 397.30643899999995, 
-                    "metric": 11292.645435, 
+                    "metric": 11992.645435, 
                     "median": 11892.645435, 
                     "results": [
                         {
@@ -37,7 +37,7 @@
                 }, 
                 "2": {
                     "std": 252.71243850000064, 
-                    "metric": 28983.186513499997, 
+                    "metric": 38183.186513499997, 
                     "median": 28953.186513499997, 
                     "results": [
                         {
@@ -70,7 +70,7 @@
                 }, 
                 "4": {
                     "std": 285.0294699999995, 
-                    "metric": 38295.454019999997, 
+                    "metric": 38215.454019999997, 
                     "median": 28795.454019999997, 
                     "results": [
                         {
             "10": {
                 "1": {
                     "std": 86.91589850000001, 
-                    "metric": 350.6329775, 
+                    "metric": 1300.6329775, 
                     "median": 150.6329775, 
                     "results": [
                         {
                 }, 
                 "4": {
                     "std": 15.571989000000002, 
-                    "metric": 390.858649, 
+                    "metric": 1190.858649, 
                     "median": 399.858649, 
                     "results": [
                         {
index ba3cccd04557840f2b515f0025c5c7b12f14c5ba..c33502c8665d0c80377803a3aa4dda805b28d51d 100644 (file)
@@ -12,7 +12,8 @@ class Status extends React.Component {
         super(props);
         this.state = {
             isLoading: false,
-            currentPage: 3,
+            currentPage: 1,
+            total:3,
             filter: {},
             list: [
                 // {
@@ -32,6 +33,7 @@ class Status extends React.Component {
             this.onPageChange = this.onPageChange.bind(this);
         this.onIsLoadingChange = this.onIsLoadingChange.bind(this);
         this.handleApplyBtnClick = this.handleApplyBtnClick.bind(this);
+        this.loadRecordList = this.loadRecordList.bind(this);
     }
 
     componentDidMount() {
@@ -44,16 +46,18 @@ class Status extends React.Component {
     }
 
     // load record list
-    loadRecordList() {
+    loadRecordList(page=1) {
         let _this = this;
         let listParam = {};
         listParam.filter = this.state.filter;
-        // listParam.pageNum = this.state.pageNum;
+
+        listParam.page = page;
 
         _record.getRecordList(listParam).then(res => {
             console.log('res is:' + res)
             this.setState({
                 list: res.results,
+                total: res.count,
                 isLoading: false
             });
             _this.changeIsLoading(false);
@@ -117,7 +121,7 @@ class Status extends React.Component {
                 {/*</TableList>*/}
                 {/*<Pagination style={style} onChange={this.onPageChange} current={this.state.currentPage} total={25}/>*/}
 
-                <BasicTable list={this.state.list}></BasicTable>
+                <BasicTable list={this.state.list} total={this.state.total} current={this.state.currentPage} loadfunc={this.loadRecordList}/>
                 {/*<RateBar std={this.state.std} curMark={this.state.curMark1}/>*/}
 
             </div>
index 989b0a16e3d8bea415c55b988c94273b6f70d071..3108aaa9f1025aad7958bba9de8857544bf20996 100644 (file)
@@ -8,7 +8,7 @@ class Record{
         let url = PGConstant.base_url + '/records';
 
         let data = {};
-        data.pageNum    = listParam.pageNum;
+        data.page    = listParam.page;
 
         return _util.request({
             type    : 'get',
index e26d3c6bd558b1f4283c28c6e86e8d09fbb67983..21b49e5b6f946bc77ca3547f7c1c940d9e344f88 100644 (file)
@@ -1,5 +1,6 @@
 import React from 'react';
-import {Icon, Table, Menu, Message} from 'semantic-ui-react'
+import {Icon, Table, Menu, Message, Button} from 'semantic-ui-react'
+import Pagination from 'util/pagination/index.jsx'
 import './index.css';
 
 // general basic table
@@ -7,13 +8,27 @@ class BasicTable extends React.Component {
     constructor(props) {
         super(props);
         this.state = {
-            isFirstLoading: true
+            isFirstLoading: true,
+            total: this.props.total,
+            currentPage: 1,
         }
     }
 
+    onPageNumChange(current){
+        this.setState({
+            currentPage : current
+        }, () => {
+            this.props.loadfunc(current);
+        });
+        console.log('current:' + this.state.currentPage)
+    }
 
     render() {
+
         let _list = this.props.list
+        let style = {
+            display: 'show'
+        };
         let listBody = _list.map((record, index) => {
             let machine = record.machine_info[0];
             let system = machine.os_name + ' ' + machine.os_version + ' ' + machine.comp_name + ' ' + machine.comp_version;
@@ -41,9 +56,15 @@ class BasicTable extends React.Component {
                         <Icon color='green' name='meh' size='large'/>{trend.quo}
                     </Table.Cell>
                     <Table.Cell textAlign='center'>
-                        <i class="fa fa-meh-o"></i>{trend.regressive}
+                        <i className="fa fa-meh-o"></i>{trend.regressive}
+                    </Table.Cell>
+                    <Table.Cell textAlign='center'>
+                        <a href={'detail/' + record.uuid}>
+                            <Button size='mini' color='linkedin'>
+                                <Icon name='linkify' /> Link
+                            </Button>
+                        </a>
                     </Table.Cell>
-
                     {/*date*/}
                     <Table.Cell>{new Date().toDateString()}</Table.Cell>
                 </Table.Row>
@@ -51,13 +72,14 @@ class BasicTable extends React.Component {
         });
 
         return (
-            <Table celled structured compact>
+            <Table celled structured compact textAlign='center'>
                 <Table.Header>
                     <Table.Row>
                         <Table.HeaderCell rowSpan='2'>Alias</Table.HeaderCell>
                         <Table.HeaderCell rowSpan='2'>System</Table.HeaderCell>
                         <Table.HeaderCell rowSpan='2'>Branch</Table.HeaderCell>
-                        <Table.HeaderCell textAlign='center' colSpan='3'>Trending</Table.HeaderCell>
+                        <Table.HeaderCell colSpan='3'>Trending</Table.HeaderCell>
+                        <Table.HeaderCell rowSpan='2'>Detail</Table.HeaderCell>
                         <Table.HeaderCell rowSpan='2'>Date</Table.HeaderCell>
                     </Table.Row>
                     <Table.Row>
@@ -74,20 +96,22 @@ class BasicTable extends React.Component {
                 <Table.Footer>
                     <Table.Row>
                         <Table.HeaderCell colSpan='10'>
-                            <Menu size='small' floated='right' pagination>
-                                <Menu.Item as='a' icon>
-                                    <Icon name='chevron left'/>
-                                </Menu.Item>
-                                <Menu.Item as='a'>1</Menu.Item>
-                                <Menu.Item as='a'>2</Menu.Item>
-                                <Menu.Item as='a'>3</Menu.Item>
-                                <Menu.Item as='a'>4</Menu.Item>
-                                <Menu.Item as='a' icon>
-                                    <Icon name='chevron right'/>
-                                </Menu.Item>
-                            </Menu>
+                            {/*<Menu size='small' floated='right' pagination>*/}
+                                {/*<Menu.Item as='a' icon>*/}
+                                    {/*<Icon name='chevron left'/>*/}
+                                {/*</Menu.Item>*/}
+                                {/*<Menu.Item as='a'>1</Menu.Item>*/}
+                                {/*<Menu.Item as='a'>2</Menu.Item>*/}
+                                {/*<Menu.Item as='a'>3</Menu.Item>*/}
+                                {/*<Menu.Item as='a'>4</Menu.Item>*/}
+                                {/*<Menu.Item as='a' icon>*/}
+                                    {/*<Icon name='chevron right'/>*/}
+                                {/*</Menu.Item>*/}
+                            {/*</Menu>*/}
+                            <Pagination style={style} onChange={(current) => this.onPageNumChange(current)} pageSize={2} current={this.state.currentPage} total={this.props.total}/>
 
                         </Table.HeaderCell>
+
                     </Table.Row>
                 </Table.Footer>
             </Table>
index 2fc0ac1de876c44a0f83489b443203a8ca1976df..8ab52e3f74775ee127e9c9d3802b15d9fe59c7c0 100644 (file)
@@ -192,7 +192,7 @@ class TestRecordDetailSerializer(serializers.ModelSerializer):
 
             dataset_scale_list = TestDataSet.objects.filter(test_record_id=obj.id, test_cate=cate_item[0]).values_list(
                 'scale').annotate(Count('id'))
-            # print(dataset_scale_list) <QuerySet [(10, 2), (20, 1)]>
+            # print(dataset_scale_list) <QuerySet [(10, 2), (20, 1)]>
             for scale_item in dataset_scale_list:
                 dataset[cate_sn][scale_item[0]] = {}
 
@@ -200,8 +200,7 @@ class TestRecordDetailSerializer(serializers.ModelSerializer):
                                                                  test_cate=cate_item[0],
                                                                  scale=scale_item[0]).values_list(
                     'clients').annotate(Count('id'))
-                print(dataset_client_list)
-                # <QuerySet [(1, 1), (2, 1), (4, 1)]>
+                # print(dataset_client_list) # <QuerySet [(1, 1), (2, 1), (4, 1)]>
                 for client_item in dataset_client_list:
                     dataset[cate_sn][scale_item[0]][client_item[0]] = []
                     target_dataset = TestDataSet.objects.filter(test_record_id=obj.id, test_cate=cate_item[0],
index 40803f960fb970fdaab2eff88a2ce1cbc93cefc4..41a766751c0fe02456cb2ec8567306b00f69cafa 100644 (file)
@@ -24,7 +24,7 @@ import json
 
 
 class StandardResultsSetPagination(PageNumberPagination):
-    page_size = 5
+    page_size = 2
     page_size_query_param = 'page_size'
     max_page_size = 100
 
index 16ef78b810d471cbfa9c9bd381ce52c7cabaec80..2b5eb6250b5afb94b1b2c6e986bac6fed23d3016 100644 (file)
@@ -27,6 +27,7 @@ class UserProfile(AbstractUser):
 class Alias(models.Model):
     name = models.CharField(max_length=32, verbose_name="alias name")
     is_used = models.BooleanField(default=False,verbose_name="is_used")
+    add_time = models.DateTimeField(default=timezone.now, verbose_name="add time", help_text="category added time")
 
 class UserMachine(models.Model):
     """