Skip to content

Commit 03c8bf5

Browse files
committed
Add "hidden" field to Domains/Areas and "Show/Hide Hidden" button
Fix Domain/Area/Record reverting
1 parent 0fa6e4c commit 03c8bf5

14 files changed

+67
-40
lines changed

apps/trolls_goals/models/area.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,12 @@ module.exports = (function() {
1919
, records: { type: Schema.Types.Mixed, default: function() { return {}; } } // Date: number of records
2020
, start_day: { type: Number, default: getToday }
2121
, prompt_for_details: Boolean
22+
, hidden: { type: Boolean } // whether this domain should be retrieved under normal circumstances
2223
});
2324

2425
var Area = mongoose.model('Area', AreaSchema);
2526

26-
Area.update_fields = ['name', 'description', 'domain', 'prompt_for_details'];
27+
Area.update_fields = ['name', 'description', 'domain', 'prompt_for_details', 'hidden'];
2728

2829
Area.deleteHook = function(_id, cb) {
2930
Record.remove({ area: _id }, cb);

apps/trolls_goals/models/domain.js

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ module.exports = (function() {
1212
, description: { type: String } // a description of the domain
1313
, username: { type: String, index: true }
1414
, user: { type: ObjectId, ref: 'users', index: true }
15+
, hidden: { type: Boolean } // whether this domain should be retrieved under normal circumstances
1516
});
1617

1718
var Domain = mongoose.model('Domain', DomainSchema);

apps/trolls_goals/public/js/areas.js

+5-13
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,12 @@ areasModule.factory('AreaFactory', function($resource, $rootScope) {
1313
};
1414

1515
$rootScope.revertArea = function(area) {
16-
_.each(area._backup, function(val, key) {
17-
area[key] = val;
16+
_.each(area, function(val, key) {
17+
if (key !== '_backup') {
18+
area[key] = area._backup[key];
19+
}
1820
});
21+
delete area._backup;
1922
$rootScope.calculateDomainAreaMap();
2023
};
2124

@@ -88,15 +91,4 @@ areasModule.factory('AreaFactory', function($resource, $rootScope) {
8891
return Area;
8992
});
9093

91-
/*areasModule.controller('ManageAreasCtrl', function($scope, $route, AreaFactory, $rootScope) {
92-
$scope.__defineGetter__('editing_area', function() {
93-
return (typeof $rootScope.area_backup !== 'undefined');
94-
});
95-
96-
$scope.areaDomainName = function(area) {
97-
var domain = _.find($rootScope.domains, { _id: area.domain });
98-
if (_.isEmpty(domain)) { return 'None'; }
99-
return domain.name;
100-
};
101-
});*/
10294
})();

apps/trolls_goals/public/js/domains.js

+5-7
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,12 @@ domainsModule.factory('DomainFactory', function($resource, $rootScope) {
2323
};
2424

2525
$rootScope.revertDomain = function(domain) {
26-
_.each(domain._backup, function(val, key) {
27-
domain[key] = val;
26+
_.each(domain, function(val, key) {
27+
if (key !== '_backup') {
28+
domain[key] = domain._backup[key];
29+
}
2830
});
31+
delete domain._backup;
2932
$rootScope.calculateDomainAreaMap();
3033
};
3134

@@ -95,9 +98,4 @@ domainsModule.factory('DomainFactory', function($resource, $rootScope) {
9598
return Domain;
9699
});
97100

98-
/*domainsModule.controller('ManageDomainsCtrl', function($scope, DomainFactory, $rootScope) {
99-
$scope.__defineGetter__('editing_domain', function() {
100-
return (typeof $scope.domain_backup !== 'undefined');
101-
});
102-
});*/
103101
})();

apps/trolls_goals/public/js/records.js

+14-12
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,21 @@ recordsModule.factory('RecordFactory', function($resource, $rootScope) {
1616
});
1717
};
1818

19+
$rootScope.backupRecord = $rootScope.backupRecord || function(record) {
20+
record._backup = _.cloneDeep(record);
21+
};
22+
23+
$rootScope.revertRecord = $rootScope.revertRecord || function(record) {
24+
_.each(record, function(val, key) {
25+
if (key !== '_backup') {
26+
record[key] = record._backup[key];
27+
}
28+
});
29+
delete record._backup;
30+
};
31+
1932
$rootScope.saveRecord = $rootScope.saveRecord || function(record) {
33+
delete record._backup;
2034
Record.update({ id: record._id }, record, function(r) {
2135
console.log('successfully edited record!', r);
2236
}, function(response) {
@@ -37,18 +51,6 @@ recordsModule.factory('RecordFactory', function($resource, $rootScope) {
3751
});
3852
};
3953

40-
$rootScope.revertRecord = $rootScope.revertRecord || function(record) {
41-
Record.get({ id: record._id }, function(r) {
42-
_.each(r, function(val, key) {
43-
record[key] = val;
44-
});
45-
console.log('successfully reverted record!', record);
46-
}, function(response) {
47-
console.error(response.data.error);
48-
scope.domain_error = response.data.error;
49-
});
50-
};
51-
5254
$rootScope.getNumRecords = $rootScope.getNumRecords || function(domain_areas, day) {
5355
var area_ids = _.pluck(domain_areas, '_id')
5456
, num_records = 0

apps/trolls_goals/public/js/records_table.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ recordsTableModule.directive('recordsTable', function($rootScope, RecordFactory)
44
return {
55
restrict: 'E',
66
scope: { domain_areas: '=domainAreas', firstDay: '@', lastDay: '@', records: '=',
7-
showHeader: '@', clickToAddRecordToFirstDay: '@', domain: '=' },
7+
showHeader: '@', clickToAddRecordToFirstDay: '@', domain: '=', show_hidden: '=showHidden' },
88
templateUrl: 'tmpl/records_table.html',
99

1010
link: function(scope, element, attrs) {

apps/trolls_goals/public/tmpl/area_tooltip.html

+8-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
<div class="popover {{placement}}" ng-class="{ in: isOpen, fade: animation() }">
1+
<div class="popover {{placement}}" ng-class="{ in: isOpen, fade: animation() }"
2+
ng-init="$root.backupArea(item)">
23
<div class="arrow"></div>
34
<div class="popover-inner">
45
<div ng-enter="$root.saveArea(item); closePopup();"
@@ -25,6 +26,12 @@
2526
ng-options="o.v as o.n for o in [{ n: 'No', v: false }, { n: 'Yes', v: true }]">
2627
</select>
2728
</div>
29+
<div class="input-group" title="When you add a record in this area, will you want to enter details?">
30+
<span class="input-group-addon bold" focus-next-when-clicked>Hide Area?</span>
31+
<select class="form-control" ng-model="item.hidden"
32+
ng-options="o.v as o.n for o in [{ n: 'No', v: false }, { n: 'Yes', v: true }]">
33+
</select>
34+
</div>
2835
<input type="hidden" ng-model="item.start_day" />
2936
</div>
3037
<div class="crud_buttons">

apps/trolls_goals/public/tmpl/day.html

+2-1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ <h2 class="time_header">{{ day | dayToDate | dateFormat }}</h2>
1717
</div>
1818
<div ng-repeat="(domain_id, domain_areas) in domain_area_map"
1919
ng-init="domain = getDomain(domain_id)"
20+
ng-show="! domain.hidden || show_hidden || domain._backup"
2021
class="domain_container inline-table-wrapper">
2122
<div class="domain-header">
2223
<span class="small-grey-icon glyphicon glyphicon-chevron-down"
@@ -31,7 +32,7 @@ <h2 class="time_header">{{ day | dayToDate | dateFormat }}</h2>
3132
</span>
3233
<h3 title="{{domain.description}}" class="domain-title">{{ domain.name }}</h3>
3334
</div>
34-
<records-table domain="domain" domain-areas="domain_areas"
35+
<records-table domain="domain" domain-areas="domain_areas" show-hidden="show_hidden"
3536
show-header="false" click-to-add-record-to-first-day="true"
3637
records="records" first-day="{{day}}" last-day="{{day}}">
3738
</records-table>

apps/trolls_goals/public/tmpl/domain_tooltip.html

+8-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
<div class="popover {{placement}}" ng-class="{ in: isOpen, fade: animation() }">
1+
<div class="popover {{placement}}" ng-class="{ in: isOpen, fade: animation() }"
2+
ng-init="$root.backupDomain(item)">
23
<div class="arrow"></div>
34
<div class="popover-inner">
45
<div ng-enter="$root.saveDomain(item); closePopup();"
@@ -13,6 +14,12 @@
1314
<input type="text" class="form-control" ng-model="item.description" />
1415
</div>
1516
</div>
17+
<div class="input-group" title="When you add a record in this area, will you want to enter details?">
18+
<span class="input-group-addon bold" focus-next-when-clicked>Hide Domain?</span>
19+
<select class="form-control" ng-model="item.hidden"
20+
ng-options="o.v as o.n for o in [{ n: 'No', v: false }, { n: 'Yes', v: true }]">
21+
</select>
22+
</div>
1623
<div class="crud_buttons">
1724
<button class="btn btn-primary" ng-click="$root.saveDomain(item); closePopup();" title="{{mode}} (Enter)">
1825
{{mode}}

apps/trolls_goals/public/tmpl/record_tooltip.html

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
<div class="popover {{placement}}" ng-class="{ in: isOpen, fade: animation() }">
1+
<div class="popover {{placement}}" ng-class="{ in: isOpen, fade: animation() }"
2+
ng-init="$root.backupRecord(item)">
23
<div class="arrow"></div>
34
<div class="popover-inner">
45
<div ng-enter="$root.saveRecord(item); closePopup();"

apps/trolls_goals/public/tmpl/records_table.html

+3-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@
44
<th ng-repeat="day in [firstDay, lastDay] | makeRange">{{ day | dayToDate | dateFormat }}</th>
55
</thead>
66
<tbody>
7-
<tr ng-repeat="area in domain_areas | orderBy: 'name' | etceteraGoLast" title="{{area.description}} (Click to create record)">
7+
<tr ng-repeat="area in domain_areas | orderBy: 'name' | etceteraGoLast"
8+
title="{{area.description}} (Click to create record)"
9+
ng-show="! area.hidden || show_hidden || area._backup">
810
<td ng-if="clickToAddRecordToFirstDay"
911
class="clickable parent-sibling-cell-trigger"
1012
ng-click="$root.createRecord(area._id, firstDay)">

apps/trolls_goals/public/tmpl/week.html

+2-1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ <h2 class="time_header">
1818
</div>
1919
<div ng-repeat="(domain_id, domain_areas) in domain_area_map"
2020
ng-init="domain = getDomain(domain_id)"
21+
ng-show="! domain.hidden || show_hidden || domain._backup"
2122
class="domain_container">
2223
<div class="domain-header">
2324
<span class="small-grey-icon glyphicon glyphicon-chevron-down"
@@ -32,7 +33,7 @@ <h2 class="time_header">
3233
</span>
3334
<h3 title="{{domain.description}}" class="domain-title">{{ domain.name }}</h3>
3435
</div>
35-
<records-table domain="domain" domain-areas="domain_areas" show-header="true"
36+
<records-table domain="domain" domain-areas="domain_areas" show-header="true" show-hidden="show_hidden"
3637
records="records" first-day="{{last_day - 6}}" last-day="{{last_day}}">
3738
</records-table>
3839
</div>

apps/trolls_goals/routes.js

+3
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,9 @@ module.exports = function(app) {
5959
_.each(models, function(Model, model_name) {
6060
app.get('/api/' + model_name, function(req, res) {
6161
var query = { user: req.user._id };
62+
if (_.isObject(Model.default_query)) {
63+
_.defaults(query, Model.default_query);
64+
}
6265
Model.find(query, function(find_err, docs) {
6366
if (find_err) {
6467
return res.error(find_err);

apps/trolls_goals/views/index.ejs

+11
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,17 @@
1313
<navlink href="day" title="Today"></navlink>
1414
<navlink href="week" title="This Week"></navlink>
1515
</ul>
16+
<button ng-show="! show_hidden" class="btn btn-primary btn-xs"
17+
ng-init="show_hidden = false"
18+
ng-click="show_hidden = true" title="Show hidden domains and areas">
19+
Show Hidden
20+
<span class="glyphicon glyphicon-eye-open"></span>
21+
</button>
22+
<button ng-show="show_hidden" class="btn btn-primary btn-xs"
23+
ng-click="show_hidden = false" title="Hide hidden domains and areas">
24+
Hide Hidden
25+
<span class="glyphicon glyphicon-eye-close"></span>
26+
</button>
1627
</div>
1728
<div id="page-content-wrapper">
1829
<div class="page-content">

0 commit comments

Comments
 (0)