1 | package clarin.cmdi.componentregistry.browser { |
---|
2 | import clarin.cmdi.componentregistry.common.ItemDescription; |
---|
3 | |
---|
4 | import mx.collections.Sort; |
---|
5 | import mx.collections.SortField; |
---|
6 | import mx.controls.dataGridClasses.DataGridColumn; |
---|
7 | import mx.utils.ObjectUtil; |
---|
8 | |
---|
9 | public class BrowserColumns { |
---|
10 | public function BrowserColumns() { |
---|
11 | } |
---|
12 | |
---|
13 | public function getProfileColumns():Array { |
---|
14 | var columns:Array = new Array(); |
---|
15 | columns.push(createColumn("name", "Name")); |
---|
16 | columns.push(createColumn("groupName", "Group Name")); |
---|
17 | columns.push(createColumn("domainName", "Domain Name")); |
---|
18 | columns.push(createColumn("creatorName", "Creator")); |
---|
19 | columns.push(createColumn("description", "Description")); |
---|
20 | columns.push(createDateColumn()); |
---|
21 | columns.push(createCommentsColumn()); |
---|
22 | return columns; |
---|
23 | } |
---|
24 | |
---|
25 | public function getComponentColumns():Array { |
---|
26 | var columns:Array = new Array(); |
---|
27 | columns.push(createColumn("name", "Name")); |
---|
28 | columns.push(createColumn("groupName", "Group Name")); |
---|
29 | columns.push(createColumn("domainName", "Domain Name")); |
---|
30 | columns.push(createColumn("creatorName", "Creator Name")); |
---|
31 | columns.push(createColumn("description", "Description")); |
---|
32 | columns.push(createDateColumn()); |
---|
33 | columns.push(createCommentsColumn()); |
---|
34 | return columns; |
---|
35 | } |
---|
36 | |
---|
37 | private function createColumn(dataField:String, headerText:String):DataGridColumn { |
---|
38 | var c:DataGridColumn = new DataGridColumn(); |
---|
39 | c.dataField = dataField; |
---|
40 | c.headerText = headerText; |
---|
41 | c.dataTipField = dataField; |
---|
42 | c.sortCompareFunction = function(itemA:Object, itemB:Object):int { //Sort all string fields case insensitive |
---|
43 | return ObjectUtil.stringCompare(itemA[dataField], itemB[dataField], true); |
---|
44 | } |
---|
45 | return c; |
---|
46 | } |
---|
47 | |
---|
48 | public static function getInitialSortForProfiles():Sort { |
---|
49 | var sort:Sort = new Sort(); |
---|
50 | var sortByGroup:SortField = new SortField("groupName", true); |
---|
51 | var sortByName:SortField = new SortField("name", true); |
---|
52 | var sortByDate:SortField = new SortField("registrationDate", true, true); |
---|
53 | sortByDate.compareFunction = compareRegistrationDate; |
---|
54 | sort.fields = [sortByGroup, sortByName, sortByDate]; |
---|
55 | return sort |
---|
56 | } |
---|
57 | |
---|
58 | public static function getInitialSortForComponents():Sort { |
---|
59 | var sort:Sort = new Sort(); |
---|
60 | var sortByGroup:SortField = new SortField("groupName", true); |
---|
61 | var sortByName:SortField = new SortField("name", true); |
---|
62 | var sortByDate:SortField = new SortField("registrationDate", true, true); |
---|
63 | sortByDate.compareFunction = compareRegistrationDate; |
---|
64 | sort.fields = [sortByGroup, sortByName, sortByDate]; |
---|
65 | return sort |
---|
66 | } |
---|
67 | |
---|
68 | private function createDateColumn():DataGridColumn { |
---|
69 | var c:DataGridColumn = createColumn("registrationDate", "Registration Date"); |
---|
70 | c.sortCompareFunction = compareRegistrationDate; |
---|
71 | return c; |
---|
72 | } |
---|
73 | |
---|
74 | private static function compareRegistrationDate(itemA:Object, itemB:Object):int { |
---|
75 | return ObjectUtil.dateCompare(itemA.registrationDateValue, itemB.registrationDateValue); |
---|
76 | } |
---|
77 | |
---|
78 | private function createCommentsColumn():DataGridColumn { |
---|
79 | var c:DataGridColumn = createColumn("commentsCount","Comments"); |
---|
80 | c.width = 75; |
---|
81 | c.sortCompareFunction = compareCommentsCount; |
---|
82 | return c; |
---|
83 | } |
---|
84 | |
---|
85 | private static function compareCommentsCount(objectA:Object, objectB:Object):int { |
---|
86 | //var stringA:String = itemA.toString(); |
---|
87 | //var stringB:String = itemB.toString(); |
---|
88 | var itemA:ItemDescription = ItemDescription(objectA); |
---|
89 | var itemB:ItemDescription = ItemDescription(objectB); |
---|
90 | return ObjectUtil.numericCompare(itemA.commentsCount, itemB.commentsCount); |
---|
91 | } |
---|
92 | |
---|
93 | } |
---|
94 | } |
---|