@@ -3,27 +3,36 @@ import { get, computed } from '@ember/object';
33import LocalStorageService from 'ember-inspector/services/storage/local' ;
44import { sort } from '@ember/object/computed' ;
55import { inject as service } from '@ember/service' ;
6+ import { HIDE_EMPTY_MODELS_KEY , ORDER_MODELS_BY_COUNT_KEY } from 'ember-inspector/utils/local-storage-keys' ;
67
78export default Controller . extend ( {
89 application : controller ( ) ,
910 navWidth : 180 ,
10- sortProperties : [ 'name' ] ,
11+ sortByNameProp : Object . freeze ( [ 'name' ] ) ,
12+ sortByDescCountProp : Object . freeze ( [ 'count:desc' ] ) ,
1113 storage : service ( `storage/${ LocalStorageService . SUPPORTED ? 'local' : 'memory' } ` ) ,
14+
1215 hideEmptyModelTypes : computed ( {
1316 get ( ) {
14- return ! ! this . get ( 'storage' ) . getItem ( 'are-model-types-hidden' ) ;
17+ return getStoredPropertyValue ( this . get ( 'storage' ) , HIDE_EMPTY_MODELS_KEY ) ;
1518 } ,
1619 set ( key , value ) {
17- if ( ! value ) {
18- this . get ( 'storage' ) . removeItem ( 'are-model-types-hidden' ) ;
19- } else {
20- this . get ( 'storage' ) . setItem ( 'are-model-types-hidden' , value ) ;
21- }
22- return value ;
20+ return handleSettingProperty ( this . get ( 'storage' ) , HIDE_EMPTY_MODELS_KEY , value ) ;
21+ }
22+ } ) ,
23+
24+ orderByRecordCount : computed ( {
25+ get ( ) {
26+ return getStoredPropertyValue ( this . get ( 'storage' ) , ORDER_MODELS_BY_COUNT_KEY ) ;
27+ } ,
28+ set ( key , value ) {
29+ return handleSettingProperty ( this . get ( 'storage' ) , ORDER_MODELS_BY_COUNT_KEY , value ) ;
2330 }
2431 } ) ,
2532
26- sorted : sort ( 'filtered' , 'sortProperties' ) ,
33+ sortByName : sort ( 'filtered' , 'sortByNameProp' ) ,
34+
35+ sortByDescCount : sort ( 'filtered' , 'sortByDescCountProp' ) ,
2736
2837 filtered : computed ( 'model.@each.count' , 'hideEmptyModelTypes' , function ( ) {
2938 return this . get ( 'model' ) . filter ( item => {
@@ -37,3 +46,22 @@ export default Controller.extend({
3746 } ) ;
3847 } )
3948} ) ;
49+
50+ /**
51+ * Returns whether or not a given key has been set in storage.
52+ * @param {* } storage
53+ * @param {string } key
54+ * @returns {boolean }
55+ */
56+ function getStoredPropertyValue ( storage , key ) {
57+ return ! ! storage . getItem ( key ) ;
58+ }
59+
60+ function handleSettingProperty ( storage , key , value ) {
61+ if ( ! value ) {
62+ storage . removeItem ( key ) ;
63+ } else {
64+ storage . setItem ( key , value ) ;
65+ }
66+ return value ;
67+ }
0 commit comments