add farmer-card
authorHongyuan Ma <CS_MaleicAcid@163.com>
Sun, 24 Jun 2018 08:56:33 +0000 (16:56 +0800)
committerHongyuan Ma <CS_MaleicAcid@163.com>
Sun, 24 Jun 2018 08:56:33 +0000 (16:56 +0800)
front-end/src/component/farmer-card/index.jsx [new file with mode: 0644]
front-end/src/page/detailInfo/index.jsx
web/apps/users/serializer.py

diff --git a/front-end/src/component/farmer-card/index.jsx b/front-end/src/component/farmer-card/index.jsx
new file mode 100644 (file)
index 0000000..048f3ac
--- /dev/null
@@ -0,0 +1,46 @@
+import React from 'react';
+
+import NavTop from 'component/nav-top/index.jsx';
+// import './index.css';
+import {Image, Card, Button, List, Icon} from 'semantic-ui-react'
+class FarmerCard extends React.Component {
+    constructor(props){
+        super(props);
+    }
+    render(){
+        let machine = this.props.machine
+        let system = machine.os_name + ' ' + machine.os_version;
+        let camp = machine.comp_name + ' ' + machine.comp_version;
+        return (
+
+            <div className="farmer-card">
+                <Card>
+                    <Card.Content>
+                        <Image floated='right' size='mini'
+                               src='http://www.semantic-ui.cn/images/avatar2/small/lena.png'/>
+                        <Card.Header>Farmer: {machine.alias}</Card.Header>
+                        <Card.Meta>report num: {machine.reports}</Card.Meta>
+                        <Card.Description>
+                            <List>
+                                <List.Item icon='computer' content={system} />
+                                <List.Item icon='microchip' content={camp} />
+                                <List.Item
+                                    icon='mail'
+                                    content={<a href={machine.owner}>{machine.owner}</a>}
+                                />
+                            </List>
+                        </Card.Description>
+                    </Card.Content>
+                    <Card.Content extra>
+                        <div className='ui buttons'>
+                            <Button basic color='blue'>
+                                Other records
+                            </Button>
+                        </div>
+                    </Card.Content>
+                </Card>
+            </div>
+        );
+    }
+}export default FarmerCard;
+
index 93dd26f9103ea1299c37e1ff87631523b7d2a2fe..1cbb46b0bcf98b3eebfb0fe4379abb0da21ce8e4 100644 (file)
@@ -2,6 +2,7 @@ import React from 'react';
 import './index.css';
 import {Table, Divider, Segment, Image, Label, Card, Button, List, Icon} from 'semantic-ui-react'
 import PGUtil        from 'util/util.jsx'
+import FarmerCard      from 'component/farmer-card/index.jsx'
 import Record      from 'service/record-service.jsx'
 const _util = new PGUtil();
 const _record = new Record();
@@ -27,52 +28,32 @@ class DetailInfo extends React.Component {
         listParam.recordNo = this.state.recordNo;
 
         _record.getRecordInfo(listParam).then(res => {
-            this.setState(res);
-        }, errMsg => {
             this.setState({
-                list: []
+                recordInfo:res
             });
+            console.log(this.state.recordInfo)
+        }, errMsg => {
+            // this.setState({
+            //     recordInfo: {}
+            // });
             _util.errorTips(errMsg);
         });
     }
 
     render() {
+        let machine = this.state.recordInfo.test_machine || {};
+        console.log(machine)
+        // let system = machine.os_name + ' ' + machine.os_version + ' ' + machine.comp_name + ' ' + machine.comp_version;
         return (
             <div className="container-fluid detail-container">
+                <div className="record-title">
+                    <h2 >NO: {this.state.recordNo}</h2>
+                </div>
+
                 <div className="col-md-3">
-                    <h2>{this.state.recordNo}</h2>
+
                     <Segment vertical>Farmer Info</Segment>
-                    <Card>
-                        <Card.Content>
-                            <Image floated='right' size='mini'
-                                   src='http://www.semantic-ui.cn/images/avatar2/small/lena.png'/>
-                            <Card.Header>Farmer: Cabbage</Card.Header>
-                            <Card.Meta>report num: 4</Card.Meta>
-                            <Card.Description>
-                                <List>
-                                    <List.Item icon='computer' content='ubuntu 16' />
-                                    <List.Item icon='microchip' content='x86 64' />
-                                    <List.Item
-                                        icon='mail'
-                                        content={<a href='mailto:jack@semantic-ui.com'>mahongyuan1997@semantic-ui.com</a>}
-                                    />
-                                </List>
-                                {/*<div>*/}
-                                    {/*<ul className="list-group" >*/}
-                                        {/*<li className="list-group-item">system os:ubuntu 16</li>*/}
-                                        {/*<li className="list-group-item">camp: x86 64</li>*/}
-                                    {/*</ul>*/}
-                                {/*</div>*/}
-                            </Card.Description>
-                        </Card.Content>
-                        <Card.Content extra>
-                            <div className='ui two buttons'>
-                                <Button basic color='green'>
-                                    Other records
-                                </Button>
-                            </div>
-                        </Card.Content>
-                    </Card>
+                    <FarmerCard machine={machine}></FarmerCard>
                 </div>
 
                 <div className="col-md-9">
index 2f6a12f93b13aee846136319cc890d63412329a2..ec047ed994cbf3177d67375b9d1d8bafcd775600 100644 (file)
@@ -1,14 +1,42 @@
 from rest_framework import serializers
-from users.models import UserMachine
+
+from test_records.models import TestRecord
+from users.models import UserMachine, Alias, UserProfile
 from django.db.models import Q
 
+class AliasSerializer(serializers.ModelSerializer):
+    '''
+    use TestResultSerializer
+    '''
+
+    class Meta:
+        model = Alias
+        fields = ('name', )
 
 class UserMachineSerializer(serializers.ModelSerializer):
     '''
     use UserMachineSerializer
     '''
 
+    alias = serializers.SerializerMethodField()
+    reports = serializers.SerializerMethodField()
+    owner = serializers.SerializerMethodField()
     class Meta:
         model = UserMachine
         # fields = "__all__"
-        fields = ('alias', 'os_name', 'os_version', 'comp_name', 'comp_version')
+        fields = ('alias', 'os_name', 'os_version', 'comp_name', 'comp_version', 'reports', 'owner')
+
+    def get_alias(self, obj):
+        target_alias = Alias.objects.filter(id=obj.alias_id).first()
+
+        serializer = AliasSerializer(target_alias)
+        return serializer.data['name']
+
+    def get_reports(self, obj):
+        reports_num = TestRecord.objects.filter(test_machine_id=obj.id).count()
+        return reports_num
+
+    def get_owner(self, obj):
+        target_owner = UserProfile.objects.filter(id=obj.machine_owner_id).values('email').first()
+
+        return target_owner['email']
\ No newline at end of file