diff --git a/client/src/app-components/ticket-list.js b/client/src/app-components/ticket-list.js
index 6bf7f885..99f54638 100644
--- a/client/src/app-components/ticket-list.js
+++ b/client/src/app-components/ticket-list.js
@@ -6,6 +6,8 @@ import Table from 'core-components/table';
import Button from 'core-components/button';
import Tooltip from 'core-components/tooltip';
+import DateTransformer from 'lib-core/date-transformer';
+
class TicketList extends React.Component {
static propTypes = {
tickets: React.PropTypes.arrayOf(React.PropTypes.object),
@@ -23,7 +25,7 @@ class TicketList extends React.Component {
render() {
return (
);
}
@@ -109,11 +111,13 @@ class TicketList extends React.Component {
priority: this.getTicketPriority(ticket.priority),
department: ticket.department.name,
author: ticket.author.name,
- date: ticket.date,
+ date: DateTransformer.transformToString(ticket.date),
+ unread: ticket.unread,
highlighted: ticket.unread
};
}
- getTicketPriority(priority){
+
+ getTicketPriority(priority) {
if(priority == 'high'){
return (
{i18n('HIGH')}
@@ -130,6 +134,39 @@ class TicketList extends React.Component {
);
}
}
+
+ compareFunction(row1, row2) {
+ let ans = 0;
+
+ if (row1.closed == row2.closed) {
+ if (row1.unread == row2.unread) {
+ let s1 = row1.date;
+ let s2 = row2.date;
+
+ let y1 = s1.substring(0, 4);
+ let y2 = s2.substring(0, 4);
+
+ if (y1 == y2) {
+ let m1 = s1.substring(4, 6);
+ let m2 = s2.substring(4, 6);
+
+ if (m1 == m2) {
+ let d1 = s1.substring(6, 8);
+ let d2 = s2.substring(6, 8);
+
+ if (d1 == d2) {
+ return 0;
+ }
+ return d1 > d2 ? -1 : 1;
+ }
+ return m1 > m2 ? -1 : 1;
+ }
+ return y1 > y2 ? -1 : 1;
+ }
+ return row1.unread ? -1 : 1;
+ }
+ return row1.closed ? -1 : 1;
+ }
}
diff --git a/client/src/app/demo/components-demo-page.js b/client/src/app/demo/components-demo-page.js
index 122bff4a..e1f724f1 100644
--- a/client/src/app/demo/components-demo-page.js
+++ b/client/src/app/demo/components-demo-page.js
@@ -128,21 +128,28 @@ let DemoPage = React.createClass({
{value:'Title First', key: 'title1'},
{value:'Title Second', key: 'title2'}
]} rows={[
- {title1: 'Row1', title2: 'Example'},
- {title1: 'Row2', title2: 'Example'},
- {title1: 'Row3', title2: 'Example'},
- {title1: 'Row4', title2: 'Example'},
- {title1: 'Row5', title2: 'Example'},
- {title1: 'Row6', title2: 'Example'},
- {title1: 'Row7', title2: 'Example'},
- {title1: 'Row8', title2: 'Example'},
- {title1: 'Row9', title2: 'Example'},
- {title1: 'Row10', title2: 'Example'},
- {title1: 'Row11', title2: 'Example'},
- {title1: 'Row12', title2: 'Example'},
- {title1: 'Row13', title2: 'Example'},
- {title1: 'Row14', title2: 'Example'}
- ]} pageSize={3}/>
+ {title1: 'Row1', title2: 'Example', n: 1},
+ {title1: 'Row2', title2: 'Example', n: 2},
+ {title1: 'Row3', title2: 'Example', n: 3},
+ {title1: 'Row4', title2: 'Example', n: 4},
+ {title1: 'Row5', title2: 'Example', n: 5},
+ {title1: 'Row6', title2: 'Example', n: 6},
+ {title1: 'Row7', title2: 'Example', n: 7},
+ {title1: 'Row8', title2: 'Example', n: 8},
+ {title1: 'Row9', title2: 'Example', n: 9},
+ {title1: 'Row10', title2: 'Example', n: 10},
+ {title1: 'Row11', title2: 'Example', n: 11},
+ {title1: 'Row12', title2: 'Example', n: 12},
+ {title1: 'Row13', title2: 'Example', n: 13},
+ {title1: 'Row14', title2: 'Example', n: 14}
+ ]} pageSize={3} comp={function (a, b) {
+ let ans = 0;
+ if(a.title1 < b.title1)
+ ans = -1;
+ else if(a.title1 > b.title1)
+ ans = 1;
+ return ans;
+ }}/>
)
}
],
diff --git a/client/src/core-components/table.js b/client/src/core-components/table.js
index d63d40aa..72bc875b 100644
--- a/client/src/core-components/table.js
+++ b/client/src/core-components/table.js
@@ -13,7 +13,8 @@ class Table extends React.Component {
})),
rows: React.PropTypes.arrayOf(React.PropTypes.object),
pageSize: React.PropTypes.number,
- type: React.PropTypes.oneOf(['default'])
+ type: React.PropTypes.oneOf(['default']),
+ comp: React.PropTypes.func
};
static defaultProps = {
@@ -34,7 +35,7 @@ class Table extends React.Component {
- {this.props.rows.map(this.renderRow.bind(this))}
+ {this.getRows().map(this.renderRow.bind(this))}
{(this.props.pageSize && this.props.rows.length > this.props.pageSize) ? this.renderNavigation() : null}
@@ -100,6 +101,13 @@ class Table extends React.Component {
return classNames(classes);
}
+
+ getRows() {
+ let v = _.clone(this.props.rows);
+ v.sort(this.props.comp);
+ return v;
+ }
+
}
export default Table;
\ No newline at end of file
diff --git a/client/src/data/fixtures/user-fixtures.js b/client/src/data/fixtures/user-fixtures.js
index 529789bc..d0b2cf36 100644
--- a/client/src/data/fixtures/user-fixtures.js
+++ b/client/src/data/fixtures/user-fixtures.js
@@ -143,10 +143,10 @@ module.exports = [
id: 2,
name: 'Environment Setup'
},
- date: '15 Apr 2016',
+ date: '20140415',
file: 'http://www.opensupports.com/some_file.zip',
language: 'en',
- unread: true,
+ unread: false,
closed: false,
priority: 'low',
author: {
@@ -168,7 +168,7 @@ module.exports = [
email: 'jobs@steve.com',
staff: true
},
- date: '12 Dec 2016',
+ date: '20161212',
file: ''
},
{
@@ -179,7 +179,7 @@ module.exports = [
steve: 'haskell@lambda.com',
staff: false
},
- date: '12 Dec 2016',
+ date: '20161212',
file: ''
}
]
@@ -192,7 +192,7 @@ module.exports = [
id: 2,
name: 'Environment Setup'
},
- date: '15 Apr 2016',
+ date: '20170415',
file: 'http://www.opensupports.com/some_file.zip',
language: 'en',
unread: false,
@@ -232,10 +232,10 @@ module.exports = [
id: 2,
name: 'Environment Setup'
},
- date: '15 Apr 2016',
+ date: '20160415',
file: 'http://www.opensupports.com/some_file.zip',
language: 'en',
- unread: false,
+ unread: true,
closed: false,
priority: 'high',
author: {
diff --git a/client/src/lib-core/date-transformer.js b/client/src/lib-core/date-transformer.js
new file mode 100644
index 00000000..9c036994
--- /dev/null
+++ b/client/src/lib-core/date-transformer.js
@@ -0,0 +1,12 @@
+let month = ["", "Jan", "Feb", "Mar", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
+
+export default {
+ transformToString (date) {
+ let y = date.substring(0, 4);
+ let m = date.substring(4, 6);
+ let d = date.substring(6, 8);
+ m = (m[0] - '0') * 10 + (m[1] - '0');
+
+ return d + " " + month[m] + " " + y;
+ }
+};
\ No newline at end of file