blob: 6fcc132c5ec7165faab0ee217865645443a1a86d [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.
*/
$(function() {
// Base html template that is used for the gadget wrapper and site
var gadgetTemplate = '<div class="portlet">' +
'<div class="portlet-header" id="portlet-id">' +
'sample to replace</div>' +
'<div id="gadget-site" class="portlet-content"></div>' +
'</div>';
// Variable to keep track of gadget current view
// for collapse and expand gadget actions.
var currentView = 'default';
// ID used to associate gadget site
var curId = 0;
// Navigate to the new view and save it as current view
navigateView = function(gadgetSite, gadgetURL, toView) {
// Save the current view for collapse, expand gadget
currentView = toView;
CommonContainer.navigateView(gadgetSite, gadgetURL, toView);
};
// Handle gadget collapse, expand, and remove gadget actions
handleNavigateAction = function(portlet, gadgetSite, gadgetURL, actionId) {
// Remove button was click, remove the portlet/gadget
if (actionId === 'remove') {
if (confirm('This gadget will be removed, ok?')) {
if (gadgetSite) {
CommonContainer.closeGadget(gadgetSite);
}
if (gadgetURL) {
CommonContainer.unloadGadget(gadgetURL);
urlsToGadgetIdMap[gadgetURL] = null;
}
portlet.remove();
}
} else if (actionId === 'expand') {
// Navigate to currentView prior to collapse gadget
if (gadgetSite) {
CommonContainer.navigateView(gadgetSite, gadgetURL, currentView);
}
else {
preRenderGadget(gadgetURL);
}
} else if (actionId === 'collapse') {
CommonContainer.closeGadget(gadgetSite);
}
};
// Create a gadget with navigation tool bar header
// enabling gadget collapse, expand and remove.
buildGadget = function(result,gadgetURL,lazyload) {
var gadgetSiteString = "$(this).closest(\'.portlet\')." +
"find(\'.portlet-content\').data(\'gadgetSite\')";
var newGadgetSite = gadgetTemplate;
newGadgetSite = newGadgetSite.replace(/(portlet-id)/g, '$1-' + curId);
newGadgetSite = newGadgetSite.replace(/(gadget-site)/g, '$1-' + curId);
var gadgetSiteData = null;
$(newGadgetSite).appendTo($('#gadgetArea')).addClass(
'ui-widget ui-widget-content ui-helper-clearfix ui-corner-all')
.find('.portlet-header')
.addClass('ui-widget-header ui-corner-all')
.text(result[gadgetURL]['modulePrefs'].title)
.append('<span id="remove" class="ui-icon ui-icon-closethick"></span>')
.append('<span id="expand" class="ui-icon ui-icon-plusthick"></span>')
.append('<span id="collapse" class="ui-icon ui-icon-minusthick"></span>')
.end()
.find('.portlet-content')
.data('gadgetSite', lazyload ? null :
CommonContainer.renderGadget(gadgetURL, curId));
// determine which button was clicked and handle the appropriate event.
$('#portlet-id-'+ curId + ' > .ui-icon').click(
function() {
handleNavigateAction(
$(this).closest('.portlet'),
$(this).closest('.portlet').find('.portlet-content')
.data('gadgetSite'),
gadgetURL, this.id);
}
);
var gadgetId = urlsToGadgetIdMap[gadgetURL];
if (!gadgetId) {
urlsToGadgetIdMap[gadgetURL] = curId;
}
};
// Add single gadget
addGadget = function(gadgetUrl, lazyload) {
CommonContainer.preloadGadget(gadgetUrl, function(result) {
for (var gadgetURL in result) {
buildGadget(result, gadgetURL, lazyload);
curId++;
}
});
return true;
};
});