foam-framework
Version:
MVC metaprogramming framework
76 lines (74 loc) • 1.89 kB
JavaScript
/**
* @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: 'ViewFactoryView',
extends: 'foam.ui.DetailView',
properties: [
{
name: 'data',
postSet: function() {
if ( this.pending_ ) {
this.dirty_ = true;
}
},
},
{
name: 'preferredHeight',
},
{
name: 'height',
},
// dirty_ and pending_ are used to tell the view to rerender if the data
// changes while the view is rendering. They should go away when the
// DetailView (or something else) finds a way to handle this.
{
name: 'dirty_',
},
{
name: 'pending_',
},
{
name: 'className',
defaultValue: 'ViewFactoryView',
},
],
methods: {
initHTML: function() {
this.SUPER();
this.pending_ = false;
if (this.dirty_) {
this.dirty_ = false;
this.updateHTML();
}
},
},
templates: [
function toHTML() {/*
<% this.pending_ = true; %>
<div id="%%id" <%= this.cssClassAttr() %>>
<%
var view = this.data && this.data({ height$: this.height$ }, this.Y);
if (view) {
this.preferredHeight$ = view.preferredHeight$;
}
%>
<%= view %>
</div>
*/}
],
});