import React from 'react';
 import Pagination from 'util/pagination/index.jsx';
+import PGUtil        from 'util/util.jsx'
+const _util = new PGUtil();
 import './index.css';
 
 class ResultFilter extends React.Component {
             restoreNum: 0,
             selected: [{
                 'cate': 'Category 1',
-                'index': 2,
+                'index': 0,
+                'key': 'date',
                 'data': [
-                    'All',
-                    '7 days',
-                    '30 days'
+                    {'name':'All', 'value':''},
+                    {'name':'7 days', 'value':'7'},
+                    {'name':'30 days', 'value':'30'}
                 ],
             }],
             // selected: [{
         let cate_index = e.currentTarget.getAttribute("data-cate-index")
 
         let newSelected = this.state.selected;
-
+        console.log('prev index is:' + newSelected[cate_index]["index"])
+        console.log('cur index is:' + item_index)
         if (newSelected[cate_index]["index"] != item_index) {
             newSelected[cate_index]["index"] = item_index;
             this.setState({
         }
     }
 
-    deleteSelectItemClick(e) {
-
-    }
 
     handleClick() {
         console.log('handleClick!!', this);
-        var self = this;
+        let self = this;
     }
+    getFilterParams() {
+        let params_list = this.state.selected;
+        let result = {};
+        for (let i = 0; i < params_list.length; i++) {
+            let params_item = params_list[i];
+            console.log('cur filter index is:' + params_item.index)
+            let value = params_item.data[params_item.index]['value']
+            let key = params_item.key;
+            if (value){
+                console.log('key is:' + key)
+                if(key == 'date'){
+                    result[key] = _util.getDateStr(value * -1)
+                }else{
+                    result[key] =value
+                }
+
+            }
 
+        }
+        return result
+    }
     applyButtonClick() {
         this.setState({
             // selected: newArr,
             isClear: false
         });
         this.props.onIsLoadingChange(true);
-        this.props.onApplyBtnClick(true);
+        let params = this.getFilterParams()
+        console.dir(params)
+        this.props.onApplyBtnClick(params);
         console.log('isLoading:' + this.props.isLoading)
     }
 
                     <dd onClick={(e) => this.selectItemClick(e)} key={index} data-cate-name={item["cate"]}
                         data-cate-index={i} data-item-index={index} data-item-name={s}
                         className={is_high_light}><a
-                        href="javascript:void(0);">{s}</a></dd>
+                        href="javascript:void(0);">{s['name']}</a></dd>
                 )
             });
 
 
 import Record      from 'service/record-service.jsx'
 const _util = new PGUtil();
 const _record = new Record();
+
 class DetailInfo extends React.Component {
     constructor(props) {
         super(props);
         console.log(machine)
         // Object.keys(obj).map(key => console.log(obj[key]));
         let ro_10 = ro['10'] || {};
+        let rw_10 = rw['10'] || {};
+
+        let rw_tables = Object.keys(rw_10).map(key => {
+            console.log(rw_10[key])
+            let metric = 0;
+            let percentage = 0.0;
+            let status = -1;
+            let tableRow = rw_10[key].map((item, idx) => {
+                console.log('item is:')
+                console.log(item)
+                metric = parseFloat(item['metric']).toFixed(4)
+                percentage = (item['percentage'] * 100).toFixed(2).toString() + '%'
+                status = item['status']
+
+                let results = item['results'].map((result, idx) => {
+                    return (
+                        <Table.Row>
+                            <Table.Cell>{result.run}</Table.Cell>
+                            <Table.Cell>{result.tps}</Table.Cell>
+                            <Table.Cell>{result.mode}</Table.Cell>
+                            <Table.Cell>{result.latency}</Table.Cell>
+                        </Table.Row>
+                    );
+                });
+                return results;
+
+            });
+            let trend_span
+
+            if (status == -1) {
+                trend_span = <span>{percentage}</span>;
+            } else if (status == 1){
+                trend_span = <span className="trend-span improved"><Icon name="angle double up"/>+{percentage}</span>;
+            } else if (status == 2){
+                trend_span = <span className="trend-span quo"><Icon name="bars"/>+{percentage}</span>;
+            } else if (status == 3){
+                trend_span = <span className="trend-span regressive"><Icon name="angle double down"/>{percentage}</span>;
+            }
+
+            return (
+                <Table celled striped>
+                    <Table.Header>
+                        <Table.Row>
+                            <Table.HeaderCell colSpan="4">
+                                <div className="client-title-div">
+                                    <div>Client(s) {key}: {metric}  {trend_span}</div>
+                                    <div><a href=""> >>prev</a></div>
+                                </div>
+                                {/*<div>*/}
+                                    {/*<span>Improved ()</span>*/}
+                                {/*</div>*/}
+                            </Table.HeaderCell>
+                        </Table.Row>
+                        <Table.Row>
+                            <Table.HeaderCell>Run</Table.HeaderCell>
+                            <Table.HeaderCell>Tps</Table.HeaderCell>
+                            <Table.HeaderCell>mode</Table.HeaderCell>
+                            <Table.HeaderCell>latency</Table.HeaderCell>
+                        </Table.Row>
+                    </Table.Header>
+
+                    <Table.Body>
+                        {tableRow}
+                        {/*<Table.Row>*/}
+                        {/*<Table.Cell>2018-09-11 15:32</Table.Cell>*/}
+                        {/*<Table.Cell>200.221</Table.Cell>*/}
+                        {/*<Table.Cell>simple</Table.Cell>*/}
+                        {/*<Table.Cell>-1</Table.Cell>*/}
+                        {/*</Table.Row>*/}
+                    </Table.Body>
+                </Table>
+            );
+        });
+
 
         let ro_tables = Object.keys(ro_10).map(key => {
             console.log(ro_10[key])
+            let metric = 0;
+            let percentage = 0.0;
+            let status = -1;
             let tableRow = ro_10[key].map((item, idx) => {
                 console.log('item is:')
                 console.log(item)
+                metric = parseFloat(item['metric']).toFixed(4)
+                percentage = (item['percentage'] * 100).toFixed(2).toString() + '%'
+                status = item['status']
 
                 let results = item['results'].map((result, idx) => {
                     return (
                         <Table.Row>
-                            <Table.Cell>{result.start}</Table.Cell>
+                            <Table.Cell>{result.run}</Table.Cell>
                             <Table.Cell>{result.tps}</Table.Cell>
                             <Table.Cell>{result.mode}</Table.Cell>
                             <Table.Cell>{result.latency}</Table.Cell>
                 return results;
 
             });
+            let trend_span
+
+            if (status == -1) {
+                trend_span = <span>{percentage}</span>;
+            } else if (status == 1){
+                trend_span = <span className="trend-span improved"><Icon name="angle double up"/>+{percentage}</span>;
+            } else if (status == 2){
+                trend_span = <span className="trend-span quo"><Icon name="bars"/>+{percentage}</span>;
+            } else if (status == 3){
+                trend_span = <span className="trend-span regressive"><Icon name="angle double down"/>{percentage}</span>;
+            }
 
             return (
                 <Table celled striped>
                     <Table.Header>
                         <Table.Row>
-                            <Table.HeaderCell colSpan="4">Clients:{key} scale:10 <a href=""> >>prev</a>
-                                <div>
-                                    mertic:200 <span>Improved (+12.4%)</span>
+                            <Table.HeaderCell colSpan="4">
+                                <div className="client-title-div">
+                                    <div>Client(s) {key}: {metric}  {trend_span}</div>
+                                    <div><a href=""> >>prev</a></div>
                                 </div>
+                                {/*<div>*/}
+                                {/*<span>Improved ()</span>*/}
+                                {/*</div>*/}
                             </Table.HeaderCell>
                         </Table.Row>
                         <Table.Row>
-                            <Table.HeaderCell>Start</Table.HeaderCell>
+                            <Table.HeaderCell>Run</Table.HeaderCell>
                             <Table.HeaderCell>Tps</Table.HeaderCell>
                             <Table.HeaderCell>mode</Table.HeaderCell>
                             <Table.HeaderCell>latency</Table.HeaderCell>
 
                     <Segment vertical>Farmer Info</Segment>
                     <FarmerCard machine={machine}></FarmerCard>
+                    //todo add a catalog
                 </div>
 
                 <div className="col-md-9">
                         <div className="col-md-6 card-div">
 
                             <Segment vertical>RW</Segment>
-                            <Table celled striped color='red' key='1'>
-                                <Table.Header>
-                                    <Table.Row>
-                                        <Table.HeaderCell colSpan="3">Clients:4</Table.HeaderCell>
-                                    </Table.Row>
-                                    <Table.Row>
-                                        <Table.HeaderCell>Food</Table.HeaderCell>
-                                        <Table.HeaderCell>Calories</Table.HeaderCell>
-                                        <Table.HeaderCell>Protein</Table.HeaderCell>
-                                    </Table.Row>
-                                </Table.Header>
-
-                                <Table.Body>
-                                    <Table.Row>
-                                        <Table.Cell>Apples</Table.Cell>
-                                        <Table.Cell>200</Table.Cell>
-                                        <Table.Cell>0g</Table.Cell>
-                                    </Table.Row>
-                                    <Table.Row>
-                                        <Table.Cell>Orange</Table.Cell>
-                                        <Table.Cell>310</Table.Cell>
-                                        <Table.Cell>0g</Table.Cell>
-                                    </Table.Row>
-                                </Table.Body>
-                            </Table>
+                            {rw_tables}
 
                         </div>
                     </div>
 
             ]
 
         },
-            this.onPageChange = this.onPageChange.bind(this);
+
+        this.onPageChange = this.onPageChange.bind(this);
         this.onIsLoadingChange = this.onIsLoadingChange.bind(this);
         this.handleApplyBtnClick = this.handleApplyBtnClick.bind(this);
         this.loadRecordList = this.loadRecordList.bind(this);
         this.loadRecordList();
     }
 
-    handleApplyBtnClick() {
-        console.log('apply btn clicked!')
-        this.loadRecordList()
+    handleApplyBtnClick(params) {
+        console.log('handle apply!')
+
+        let self = this
+        this.setState({filter: params}, ()=> {
+            self.loadRecordList()
+        });
     }
 
     // load record list
     loadRecordList(page=1) {
         let _this = this;
         let listParam = {};
-        listParam.filter = this.state.filter;
-
+        listParam= this.state.filter;
         listParam.page = page;
 
         _record.getRecordList(listParam).then(res => {
             _this.changeIsLoading(false);
         });
 
-
         console.log(this.state.list)
     }
 
     onIsLoadingChange(flag) {
         console.log('flag:' + flag)
         this.setState({
-            isLoading: flag
+            isLoading: flag,
         });
         console.log('status isLoading:' + this.state.isLoading)
     }