Skip to content

Commit d33cb67

Browse files
committed
Made SortBy option configurable
1 parent b65d745 commit d33cb67

3 files changed

Lines changed: 37 additions & 15 deletions

File tree

js/Settings.js

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ module.exports = {
1616
Storages: [],
1717
DefaultStorage: 'personal',
1818
AllowAddressBooksManagement: false,
19+
ContactsSortBy: {},
1920

2021
ImportExportFormats: [],
2122
SaveVcfServerModuleName: '',
@@ -52,14 +53,17 @@ module.exports = {
5253
this.Storages.push('group');
5354
}
5455
this.AllowAddressBooksManagement = Types.pBool(oAppDataSection.AllowAddressBooksManagement, this.AllowAddressBooksManagement);
55-
56+
5657
this.ImportExportFormats = Types.pArray(oAppDataSection.ImportExportFormats, this.ImportExportFormats);
5758
this.SaveVcfServerModuleName = Types.pString(oAppDataSection.SaveVcfServerModuleName, this.SaveVcfServerModuleName);
58-
59+
5960
this.EContactsPrimaryEmail = Types.pObject(oAppDataSection.PrimaryEmail);
6061
this.EContactsPrimaryPhone = Types.pObject(oAppDataSection.PrimaryPhone);
6162
this.EContactsPrimaryAddress = Types.pObject(oAppDataSection.PrimaryAddress);
6263
this.EContactSortField = Types.pObject(oAppDataSection.SortField);
64+
this.ContactsSortBy = this.getSortConfig(Types.pObject(oAppDataSection.ContactsSortBy));
65+
66+
console.log('ContactsSortBy', this.ContactsSortBy);
6367
}
6468
},
6569

@@ -71,5 +75,15 @@ module.exports = {
7175
update: function (iContactsPerPage)
7276
{
7377
this.ContactsPerPage = iContactsPerPage;
78+
},
79+
80+
getSortConfig: function (config)
81+
{
82+
return {
83+
Allow: config.Allow ? true : false,
84+
DisplayOptions: config.DisplayOptions || [],
85+
DefaultSortBy: config.DefaultSortBy && config.Allow ? config.DefaultSortBy : 'Name',
86+
DefaultSortOrder: config.DefaultSortOrder && config.Allow ? config.DefaultSortOrder : 'Desc'
87+
};
7488
}
7589
};

js/views/CContactsView.js

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -213,18 +213,27 @@ function CContactsView()
213213
}
214214
}, this);
215215

216-
this.sortBy = ko.observable(Enums.ContactSortField.Name); // Email: 2, Frequency: 3, Name: 1
217-
this.sortOrder = ko.observable(Enums.SortOrder.Asc); // Asc: 0, Desc: 1
216+
this.bSortEnabled = Settings.ContactsSortBy && Settings.ContactsSortBy.Allow
217+
&& Settings.ContactsSortBy.DisplayOptions && Settings.ContactsSortBy.DisplayOptions.length > 0;
218+
219+
// Had to set it here because in Setting.init not all Enums are defined
220+
Settings.ContactsSortBy.DefaultSortBy = Enums.ContactSortField[Settings.ContactsSortBy.DefaultSortBy];
221+
Settings.ContactsSortBy.DefaultSortOrder = Enums.SortOrder[Settings.ContactsSortBy.DefaultSortOrder];
222+
223+
this.sortBy = ko.observable(Settings.ContactsSortBy.DefaultSortBy);
224+
this.sortOrder = ko.observable(Settings.ContactsSortBy.DefaultSortOrder);
218225

219226
this.aSortList = [];
220-
_.each(Enums.ContactSortField, function (iValue, sName, oItem) {
221-
this.aSortList.push({
222-
sText: TextUtils.i18n('%MODULENAME%/SORT_OPTION_' + sName.toUpperCase()),
223-
sSortBy: iValue,
224-
// sortOrder: ko.observable(Enums.SortOrder.Asc),
225-
// selected: ko.observable(sName === this.sSortBy)
226-
});
227-
}.bind(this));
227+
if (this.bSortEnabled) {
228+
_.each(Enums.ContactSortField, function (iValue, sName) {
229+
if (Settings.ContactsSortBy.DisplayOptions.indexOf(sName) >= 0) {
230+
this.aSortList.push({
231+
sText: TextUtils.i18n('%MODULENAME%/SORT_OPTION_' + sName.toUpperCase()),
232+
sSortBy: iValue
233+
});
234+
}
235+
}.bind(this));
236+
}
228237

229238
this.isSearchFocused = ko.observable(false);
230239
this.searchInput = ko.observable('');
@@ -414,7 +423,7 @@ CContactsView.prototype.executeSort = function (sValue)
414423
if (sCurrentSort === sValue) {
415424
this.sortOrder(this.sortOrder() === Enums.SortOrder.Asc ? Enums.SortOrder.Desc : Enums.SortOrder.Asc); // Asc: 0, Desc: 1
416425
} else {
417-
this.sortOrder(Enums.SortOrder.Asc);
426+
this.sortOrder(Enums.SortOrder[Settings.ContactsSortBy.DefaultSortOrder]);
418427
}
419428

420429
this.requestContactList();
@@ -1095,7 +1104,6 @@ CContactsView.prototype.requestContactList = function ()
10951104
Ajax.send('GetContacts', {
10961105
'Offset': (this.currentPage() - 1) * Settings.ContactsPerPage,
10971106
'Limit': Settings.ContactsPerPage,
1098-
// 'SortField': Enums.ContactSortField.Name,
10991107
'SortField': this.sortBy(),
11001108
'SortOrder': this.sortOrder(),
11011109
'Search': this.search(),

templates/Toolbar/ContactsView.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
<span class="text" data-bind="i18n: {'key': '%MODULENAME%/ACTION_UNSHARE'}"></span>
2121
</span>
2222

23-
<!-- ko template: {name: '%ModuleName%_Toolbar_SortButtonView'} --><!-- /ko -->
23+
<!-- ko template: {name: '%ModuleName%_Toolbar_SortButtonView', if: bSortEnabled,} --><!-- /ko -->
2424

2525
<span class="item control" data-bind="visible: visibleImportExport() && isImportAllowed(), dropdown: {control: false}">
2626
<span class="icon arrow"></span>

0 commit comments

Comments
 (0)