blob: df1b19b80200b7e74cf55eeada1fdf7212e98217 [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.
*/
var App = require('app');
App.MainViewsDetailsView = Em.View.extend({
name: "mainViewsDetailsView",
tagName: "iframe",
classNames: ["views_sizes"],
attributeBindings: ['src','seamless','allowfullscreen'],
seamless: "seamless",
allowfullscreen: "true",
interval: null,
/**
* Drop autoHeight timer
*/
willDestroyElement: function() {
var interval = this.get('interval');
if (interval) {
clearInterval(interval);
}
},
/**
* Updates iframe height every 5s
*/
didInsertElement : function() {
var interval, self = this;
interval = setInterval(function() {
self.resizeFunction();
}, 5000);
self.set('interval', interval);
this.resizeFunction();
App.router.get('mainController').monitorInactivity();
},
resizeFunction : function() {
var body = $(document.body);
var footer = $("footer", body);
var header = $("#top-nav", body);
var iframe = $("iframe", body);
var bodyHeight = body.outerHeight();
var footerHeight = footer != null ? footer.outerHeight() : 0;
var headerHeight = header != null ? header.outerHeight() : 0;
var defaultHeight = bodyHeight - footerHeight - headerHeight;
if (iframe != null && iframe.length > 0) {
var childrenHeight = 0;
var iframeElement = iframe[0];
var pageScrollTop = $(window).scrollTop();
// set iframe height to 'auto' to get actual scrollHeight
iframeElement.style.height = 'auto';
if (iframeElement.contentWindow != null
&& iframeElement.contentWindow.document != null
&& iframeElement.contentWindow.document.body != null) {
var iFrameContentBody = iframeElement.contentWindow.document.body;
childrenHeight = iFrameContentBody.scrollHeight;
}
var iFrameHeight = Math.max(childrenHeight, defaultHeight);
iframe.css('height', iFrameHeight);
$(window).scrollTop(pageScrollTop);
}
},
src: function() {
// can't use window.location.origin because IE doesn't support it
return window.location.protocol + '//' + window.location.host + this.get('controller.content.href') + this.get('controller.content.viewPath');
}.property('controller.content')
});