UNPKG

foam-framework

Version:
84 lines (76 loc) 2.03 kB
/** * @license * Copyright 2015 Google Inc. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ CLASS({ package: 'foam.demos.dailycount', name: 'CountView', extends: 'foam.ui.View', requires: [ 'foam.demos.dailycount.DailyCount' ], imports: [ 'counts' ], properties: [ { model_: 'IntProperty', name: 'count' } ], methods: [ function initHTML() { this.SUPER(); this.updateCount(); }, function today() { var today = new Date(); today.setHours(0,0,0,0); return today; }, function updateCount(incr) { var self = this; var today = this.today(); this.counts.find(AND( EQ(this.DailyCount.THING_ID, this.data), EQ(this.DailyCount.DATE, today)), { put: function(count) { self.count = count.count; if ( incr ) { self.count = ++count.count; self.counts.put(count); } }, error: function() { if ( incr ) { self.count = 1; self.counts.put( self.DailyCount.create({ thingID: self.data, date: today, count: 1 })); } } }); } ], actions: [ { name: 'incr', label: '+', code: function() { this.updateCount(true); } } ], templates: [ function toHTML() {/* $$count{mode: 'read-only'} $$incr */} ] });