UNPKG

foam-framework

Version:
92 lines (85 loc) 2.2 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.ui', name: 'ImageBooleanView', extends: 'foam.ui.SimpleView', properties: [ { name: 'data', postSet: function(old, nu) { this.updateHTML(); } }, { name: 'name', label: 'Name', type: 'String', defaultValue: '' }, { name: 'trueImage' }, { name: 'falseImage' }, { name: 'trueClass' }, { name: 'falseClass' } ], methods: { image: function() { return this.data ? this.trueImage : this.falseImage; }, toHTML: function() { var id = this.id; // TODO: next line appears slow, check why this.on('click', this.onClick, id); return this.name ? '<img id="' + id + '" ' + this.cssClassAttr() + '" name="' + this.name + '">' : '<img id="' + id + '" ' + this.cssClassAttr() + '>' ; }, initHTML: function() { if ( ! this.$ ) return; this.SUPER(); this.updateHTML(); }, updateHTML: function() { if ( ! this.$ ) return; this.$.src = this.image(); if ( this.data ) { this.trueClass && this.$.classList.add(this.trueClass); this.falseClass && this.$.classList.remove(this.falseClass); } else { this.trueClass && this.$.classList.remove(this.trueClass); this.falseClass && this.$.classList.add(this.falseClass); } }, }, listeners: [ { name: 'onClick', code: function(e) { e.stopPropagation(); this.data = ! this.data; } } ] });