From 6c79d45bd00addd57397ba0d85cf57eb8cc52e8b Mon Sep 17 00:00:00 2001 From: Hongyuan Ma Date: Tue, 31 Jul 2018 22:42:05 +0800 Subject: [PATCH] Optimize details --- .../src/component/result-filter/index.jsx | 3 +- front-end/src/page/detailInfo/index.jsx | 2 + front-end/src/page/status/index.jsx | 45 +++++++++++++------ front-end/src/util/basic-table/index.jsx | 2 +- front-end/src/util/constant.jsx | 1 + .../src/util/machine-record-table/index.jsx | 12 ++++- front-end/src/util/record-table/index.jsx | 24 ++++++++-- web/apps/test_records/serializer.py | 45 +++++++++---------- web/apps/test_records/views.py | 2 +- web/apps/user_operation/filters.py | 4 +- web/apps/users/serializer.py | 2 +- 11 files changed, 92 insertions(+), 50 deletions(-) diff --git a/front-end/src/component/result-filter/index.jsx b/front-end/src/component/result-filter/index.jsx index b9ad705..2ae1141 100644 --- a/front-end/src/component/result-filter/index.jsx +++ b/front-end/src/component/result-filter/index.jsx @@ -153,6 +153,8 @@ class ResultFilter extends React.Component { isClear: true }); + console.log('the lastest selected') + console.dir(newSelected) } @@ -198,7 +200,6 @@ class ResultFilter extends React.Component { this.props.onIsLoadingChange(true); let branches = this.getSelectedBranches() - console.dir(branches) this.props.onApplyBtnClick(branches); // console.log('isLoading:' + this.props.isLoading) diff --git a/front-end/src/page/detailInfo/index.jsx b/front-end/src/page/detailInfo/index.jsx index af9008e..419c70f 100644 --- a/front-end/src/page/detailInfo/index.jsx +++ b/front-end/src/page/detailInfo/index.jsx @@ -48,6 +48,7 @@ class DetailInfo extends React.Component { let machine = this.state.recordInfo.test_machine || {}; let dataset = this.state.recordInfo.dataset_info || {}; let meta_info = this.state.recordInfo.meta_info || {}; + let pg_info = this.state.recordInfo.pg_info || {}; let linux_info = this.state.recordInfo.linux_info || {}; let hardware_info = this.state.recordInfo.hardware_info || {}; let ro = dataset.ro || {}; @@ -294,6 +295,7 @@ class DetailInfo extends React.Component { + diff --git a/front-end/src/page/status/index.jsx b/front-end/src/page/status/index.jsx index cab19e6..d1a2b33 100644 --- a/front-end/src/page/status/index.jsx +++ b/front-end/src/page/status/index.jsx @@ -47,12 +47,11 @@ class Status extends React.Component { console.log('handle apply!') let _this = this - let selected_branches = branches - if(selected_branches === undefined || selected_branches.length == 0) { - selected_branches = this.state.branch_list - for (let i = 0; i < selected_branches.length; i++) { - selected_branches[i].isSelected = true; - } + let selected_branches = [] + if(branches === undefined || branches.length == 0) { + selected_branches = this.adjustBranchList([]) + }else{ + selected_branches = branches } this.setState({ selected_branches: selected_branches, @@ -60,17 +59,37 @@ class Status extends React.Component { }); } + adjustBranchList(branches){ + let selected_branches = [] + if(branches === undefined || branches.length == 0) { + branches = this.state.branch_list + + for (let i = 0; i < branches.length; i++) { + let newItem = {} + newItem['name'] = branches[i].branch_name + newItem['value'] = branches[i].branch_name + newItem['isSelected'] = true; + selected_branches.push(newItem) + } + + } + + return selected_branches + } loadBranchList() { _record.getBranchList().then(res => { - let selected_branches = res.results - for (let i = 0; i < selected_branches.length; i++) { - selected_branches[i].isSelected = true; - } - + // let selected_branches = res.results + // for (let i = 0; i < selected_branches.length; i++) { + // selected_branches[i].isSelected = true; + // } + let _this = this this.setState({ branch_list: res.results, - selected_branches: selected_branches, + },()=>{ + this.setState({ + selected_branches: _this.adjustBranchList([]), + }); }); console.log('now console the branch_list') console.dir(res.results) @@ -137,7 +156,7 @@ class Status extends React.Component { let table_list = this.state.selected_branches.map((value, index) => { if (value.isSelected == true) { return ( - + ); } }); diff --git a/front-end/src/util/basic-table/index.jsx b/front-end/src/util/basic-table/index.jsx index 22d5b41..a2eb1a6 100644 --- a/front-end/src/util/basic-table/index.jsx +++ b/front-end/src/util/basic-table/index.jsx @@ -80,7 +80,7 @@ class BasicTable extends React.Component { display: 'show' }; let listBody = _list.map((record, index) => { - let machine = record.machine_info[0]; + let machine = record.machine_info; let system = machine.os_name + ' ' + machine.os_version + ' ' + machine.comp_name + ' ' + machine.comp_version; let alias = machine.alias; diff --git a/front-end/src/util/constant.jsx b/front-end/src/util/constant.jsx index f0e6e6a..1752b76 100644 --- a/front-end/src/util/constant.jsx +++ b/front-end/src/util/constant.jsx @@ -6,5 +6,6 @@ const object = { UnauthorizedCode:401,// unlogin AuthorizedErrorCode:400,// username or pwd mistake + PG_GITHUB_MIRROR:'https://github.com/postgres/postgres/commit/' }; export default object; \ No newline at end of file diff --git a/front-end/src/util/machine-record-table/index.jsx b/front-end/src/util/machine-record-table/index.jsx index 27c34c7..c8b999a 100644 --- a/front-end/src/util/machine-record-table/index.jsx +++ b/front-end/src/util/machine-record-table/index.jsx @@ -2,6 +2,7 @@ import React from 'react'; import {Link} from 'react-router-dom'; import {Icon, Table, Label, Message, Button} from 'semantic-ui-react' import Pagination from 'util/pagination/index.jsx' +import PGConstant from 'util/constant.jsx' import './index.css'; function Bubble(props) { @@ -45,7 +46,7 @@ class MachineRecordTable extends React.Component { display: 'show' }; let listBody = _list.map((record, index) => { - let machine = record.machine_info[0]; + let machine = record.machine_info; let system = machine.os_name + ' ' + machine.os_version + ' ' + machine.comp_name + ' ' + machine.comp_version; let alias = machine.alias; @@ -58,7 +59,11 @@ class MachineRecordTable extends React.Component { {/*alias*/} - {alias} + + + {alias} + + {/*system*/} {/*{system}*/} @@ -89,6 +94,8 @@ class MachineRecordTable extends React.Component { + {/*commit*/} + { record.commit.substring(0, 7)} {/*date*/} {record.add_time} @@ -108,6 +115,7 @@ class MachineRecordTable extends React.Component { {/*Branch*/} Trending Detail + Commit Date diff --git a/front-end/src/util/record-table/index.jsx b/front-end/src/util/record-table/index.jsx index bffb955..dc731cc 100644 --- a/front-end/src/util/record-table/index.jsx +++ b/front-end/src/util/record-table/index.jsx @@ -5,6 +5,7 @@ import Pagination from 'util/pagination/index.jsx' import Record from 'service/record-service.jsx' import './index.css'; const _record = new Record(); +import PGConstant from 'util/constant.jsx' function Bubble(props) { if (props.num <= 0) { @@ -109,7 +110,7 @@ class RecordTable extends React.Component { display: 'show' }; let listBody = _list.map((record, index) => { - let machine = record.machine_info[0]; + let machine = record.machine_info; let system = machine.os_name + ' ' + machine.os_version + ' ' + machine.comp_name + ' ' + machine.comp_version; let alias = machine.alias; @@ -122,10 +123,14 @@ class RecordTable extends React.Component { {/*alias*/} - {alias} + + + {alias} + + {/*system*/} - {system} + {system} {/*branch*/} {/*{branch}*/} @@ -153,7 +158,8 @@ class RecordTable extends React.Component { - + {/*commit*/} + { record.commit.substring(0, 7)} {/*date*/} {record.add_time} @@ -162,6 +168,15 @@ class RecordTable extends React.Component { return ( + + {/**/} + {/*Branch: {this.state.branch}*/} + {/**/} + + {this.state.branch} + + + {/**/} {/*Branch: {this.state.branch}*/} @@ -172,6 +187,7 @@ class RecordTable extends React.Component { {/*Branch*/} Trending Detail + Commit Date diff --git a/web/apps/test_records/serializer.py b/web/apps/test_records/serializer.py index be3f295..574ab70 100644 --- a/web/apps/test_records/serializer.py +++ b/web/apps/test_records/serializer.py @@ -15,7 +15,7 @@ class TestBranchSerializer(serializers.ModelSerializer): class Meta: model = TestBranch - fields = ('branch_name','id') + fields = ('branch_name', 'id') class TestCategorySerializer(serializers.ModelSerializer): @@ -65,29 +65,32 @@ class PGInfoSerializer(serializers.ModelSerializer): class Meta: model = PGInfo - fields = "__all__" + fields = ('checkpoint_timeout', 'log_temp_files', 'work_mem', 'log_line_prefix', 'shared_buffers', + 'log_autovacuum_min_duration', 'checkpoint_completion_target', 'maintenance_work_mem', + 'log_checkpoints', 'max_wal_size', 'min_wal_size') def get_log_checkpoints(self, obj): new_dict = {v: k for k, v in DB_ENUM["general_switch"].items()} return new_dict[obj.log_checkpoints] def get_checkpoint_timeout(self, obj): - return obj['checkpoint_timeout'].__str__() + 'min' + return obj.checkpoint_timeout.__str__() + 'min' def get_work_mem(self, obj): - return obj['work_mem'].__str__() + 'MB' + return obj.work_mem.__str__() + 'MB' def get_shared_buffers(self, obj): - return obj['shared_buffers'].__str__() + 'GB' + return obj.shared_buffers.__str__() + 'GB' def get_maintenance_work_mem(self, obj): - return obj['maintenance_work_mem'].__str__() + 'MB' + return obj.maintenance_work_mem.__str__() + 'MB' def get_max_wal_size(self, obj): - return obj['max_wal_size'].__str__() + 'GB' + return obj.max_wal_size.__str__() + 'GB' def get_min_wal_size(self, obj): - return obj['min_wal_size'].__str__() + 'GB' + return obj.min_wal_size.__str__() + 'GB' + class HardwareInfoDetailSerializer(serializers.ModelSerializer): ''' @@ -148,6 +151,7 @@ class CreateTestResultSerializer(serializers.ModelSerializer): model = TestResult fields = "__all__" + class TestResultSerializer(serializers.ModelSerializer): ''' use TestResultSerializer @@ -196,6 +200,7 @@ class CreateTestDateSetSerializer(serializers.ModelSerializer): model = TestDataSet fields = "__all__" + class TestStatusRecordListSerializer(serializers.ModelSerializer): ''' use ModelSerializer @@ -255,11 +260,12 @@ class TestStatusRecordListSerializer(serializers.ModelSerializer): # rw_client_num = TestResult.objects.filter(Q(test_record_id=obj.id ) ,test_cate_id=2).order_by('clients').distinct('clients').count() # return max(ro_client_num,rw_client_num) + class TestRecordListSerializer(serializers.ModelSerializer): ''' use ModelSerializer ''' - pg_info = PGInfoSerializer() + # pg_info = PGInfoSerializer() linux_info = LinuxInfoSerializer() meta_info = MetaInfoSerializer() branch = serializers.SerializerMethodField() @@ -269,7 +275,7 @@ class TestRecordListSerializer(serializers.ModelSerializer): # client_max_num = serializers.SerializerMethodField() class Meta: model = TestRecord - fields = ('uuid', 'add_time', 'machine_info', 'pg_info', 'branch', 'trend', 'linux_info', 'meta_info') + fields = ('uuid', 'add_time', 'machine_info', 'branch', 'trend', 'linux_info', 'meta_info', 'commit') def get_branch(self, obj): branch = TestBranch.objects.filter(id=obj.branch.id).first() @@ -304,9 +310,9 @@ class TestRecordListSerializer(serializers.ModelSerializer): return trend def get_machine_info(self, obj): - machine_data = UserMachine.objects.filter(id=obj.test_machine_id) + machine_data = UserMachine.objects.filter(id=obj.test_machine_id).get() - machine_info_serializer = UserMachineSerializer(machine_data, many=True) + machine_info_serializer = UserMachineSerializer(machine_data) return machine_info_serializer.data # def get_client_max_num(self, obj): @@ -403,18 +409,6 @@ class TestRecordDetailSerializer(serializers.ModelSerializer): return dataset - # def get_ro_info(self, obj): - # all_data = TestResult.objects.filter(Q(test_record_id=obj.id ) ,test_cate_id=1) - # - # ro_info_serializer = TestResultSerializer(all_data, many=True, context={'request': self.context['request']}) - # return ro_info_serializer.data - # - # def get_rw_info(self, obj): - # all_data = TestResult.objects.filter(Q(test_record_id=obj.id) ,test_cate_id=2) - # - # rw_info_serializer = TestResultSerializer(all_data, many=True, context={'request': self.context['request']}) - # return rw_info_serializer.data - class MachineHistoryRecordSerializer(serializers.ModelSerializer): ''' @@ -423,6 +417,7 @@ class MachineHistoryRecordSerializer(serializers.ModelSerializer): machine_info = serializers.SerializerMethodField() reports = serializers.SerializerMethodField() branches = serializers.SerializerMethodField() + class Meta: model = UserMachine fields = ('machine_info', 'reports', 'branches') @@ -436,7 +431,7 @@ class MachineHistoryRecordSerializer(serializers.ModelSerializer): item = {} item['branch'] = branch_item[0] - records = TestRecord.objects.filter(test_machine_id=obj.id,branch_id=branch_item[0]) + records = TestRecord.objects.filter(test_machine_id=obj.id, branch_id=branch_item[0]) serializer = TestRecordListSerializer(records, many=True) item['records'] = serializer.data diff --git a/web/apps/test_records/views.py b/web/apps/test_records/views.py index 80b981f..0b6c776 100644 --- a/web/apps/test_records/views.py +++ b/web/apps/test_records/views.py @@ -101,7 +101,7 @@ class TestRecordDetailViewSet(mixins.RetrieveModelMixin, viewsets.GenericViewSet class MachineHistoryRecordViewSet( mixins.RetrieveModelMixin, viewsets.GenericViewSet): """ - detail test records + machine info page """ lookup_field = 'machine_sn' queryset = UserMachine.objects.all().order_by('add_time') diff --git a/web/apps/user_operation/filters.py b/web/apps/user_operation/filters.py index 743728b..7208055 100644 --- a/web/apps/user_operation/filters.py +++ b/web/apps/user_operation/filters.py @@ -10,8 +10,8 @@ class MachineRecordListFilter(django_filters.rest_framework.FilterSet): """ TestRecordListFilter """ - branch__id = django_filters.NumberFilter(lookup_expr='icontains') - test_machine__machine_sn = django_filters.NumberFilter(lookup_expr='icontains') + branch__id = django_filters.NumberFilter() + test_machine__machine_sn = django_filters.CharFilter() class Meta: model = TestRecord diff --git a/web/apps/users/serializer.py b/web/apps/users/serializer.py index 91346b3..553f456 100644 --- a/web/apps/users/serializer.py +++ b/web/apps/users/serializer.py @@ -24,7 +24,7 @@ class UserMachineSerializer(serializers.ModelSerializer): avatar = serializers.SerializerMethodField() class Meta: model = UserMachine - fields = ('alias', 'os_name', 'os_version', 'comp_name', 'comp_version', 'reports', 'owner' , 'avatar') + fields = ('alias', 'os_name', 'os_version', 'comp_name', 'comp_version', 'reports', 'owner' , 'avatar', 'machine_sn') def get_alias(self, obj): target_alias = Alias.objects.filter(id=obj.alias_id).first() -- 2.39.5