Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas ZILLIOX <thomas@zilliox.me>2013-05-08 20:42:09 +0400
committerThomas ZILLIOX <thomas@zilliox.me>2013-05-08 20:42:09 +0400
commitb830387b839f6a1732d310e26fa81de27e19ff95 (patch)
treea6cf18412a42b0db34b9941de89724bb2f7dadd9 /plugins/Overlay/javascripts/Piwik_Overlay.js
parenteeb6be9d1e4bb54a05b78537a080622dc764e72e (diff)
Reorganizing the stylesheets & javascripts folders for every plugins
Diffstat (limited to 'plugins/Overlay/javascripts/Piwik_Overlay.js')
-rw-r--r--plugins/Overlay/javascripts/Piwik_Overlay.js263
1 files changed, 263 insertions, 0 deletions
diff --git a/plugins/Overlay/javascripts/Piwik_Overlay.js b/plugins/Overlay/javascripts/Piwik_Overlay.js
new file mode 100644
index 0000000000..0caaefe559
--- /dev/null
+++ b/plugins/Overlay/javascripts/Piwik_Overlay.js
@@ -0,0 +1,263 @@
+/*!
+ * Piwik - Web Analytics
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+var Piwik_Overlay = (function () {
+
+ var $body, $iframe, $sidebar, $main, $location, $loading, $errorNotLoading;
+ var $rowEvolutionLink, $transitionsLink, $fullScreenLink;
+
+ var idSite, period, date;
+
+ var errorTimeout = false;
+
+ var iframeSrcBase;
+ var iframeDomain = '';
+ var iframeCurrentPage = '';
+ var iframeCurrentPageNormalized = '';
+ var iframeCurrentActionLabel = '';
+ var updateComesFromInsideFrame = false;
+
+
+ /** Load the sidebar for a url */
+ function loadSidebar(currentUrl) {
+ showLoading();
+
+ $location.html('&nbsp;').unbind('mouseenter').unbind('mouseleave');
+
+ iframeCurrentPage = currentUrl;
+ iframeDomain = currentUrl.match(/http(s)?:\/\/(www\.)?([^\/]*)/i)[3];
+
+ globalAjaxQueue.abort();
+ var ajaxRequest = new ajaxHelper();
+ ajaxRequest.addParams({
+ module: 'Overlay',
+ action: 'renderSidebar',
+ currentUrl: currentUrl
+ }, 'get');
+ ajaxRequest.setCallback(
+ function (response) {
+ hideLoading();
+
+ var $response = $(response);
+
+ var $responseLocation = $response.find('.Overlay_Location');
+ var $url = $responseLocation.find('span');
+ iframeCurrentPageNormalized = $url.data('normalizedUrl');
+ iframeCurrentActionLabel = $url.data('label');
+ $url.html(piwikHelper.addBreakpointsToUrl($url.text()));
+ $location.html($responseLocation.html()).show();
+ $responseLocation.remove();
+
+ var $locationSpan = $location.find('span');
+ $locationSpan.html(piwikHelper.addBreakpointsToUrl($locationSpan.text()));
+ if (iframeDomain) {
+ // use addBreakpointsToUrl because it also encoded html entities
+ $locationSpan.tooltip({
+ track: true,
+ items: '*',
+ tooltipClass: 'Overlay_Tooltip',
+ content: '<b>' + Piwik_Overlay_Translations.domain + ':</b> ' +
+ piwikHelper.addBreakpointsToUrl(iframeDomain),
+ show: false,
+ hide: false
+ });
+ }
+
+ $sidebar.empty().append($response).show();
+
+ if ($sidebar.find('.Overlay_NoData').size() == 0) {
+ $rowEvolutionLink.show();
+ $transitionsLink.show()
+ }
+ }
+ );
+ ajaxRequest.setFormat('html');
+ ajaxRequest.send(false);
+ }
+
+ /** Adjust the dimensions of the iframe */
+ function adjustDimensions() {
+ $iframe.height($(window).height());
+ $iframe.width($body.width() - $iframe.offset().left - 2); // -2 because of 2px border
+ }
+
+ /** Display the loading message and hide other containers */
+ function showLoading() {
+ $loading.show();
+
+ $sidebar.hide();
+ $location.hide();
+
+ $fullScreenLink.hide();
+ $rowEvolutionLink.hide();
+ $transitionsLink.hide();
+
+ $errorNotLoading.hide();
+
+ // Start a timeout that shows an error when nothing is loaded
+ if (errorTimeout) {
+ window.clearTimeout(errorTimeout);
+ }
+ errorTimeout = window.setTimeout(function () {
+ hideLoading();
+ $errorNotLoading.show();
+ }, 9000);
+ }
+
+ /** Hide the loading message */
+ function hideLoading() {
+ if (errorTimeout) {
+ window.clearTimeout(errorTimeout);
+ errorTimeout = false;
+ }
+ $loading.hide();
+ $fullScreenLink.show();
+ }
+
+ /** $.history callback for hash change */
+ function hashChangeCallback(urlHash) {
+ var location = broadcast.getParamValue('l', urlHash);
+ location = Overlay_Helper.decodeFrameUrl(location);
+
+ if (!updateComesFromInsideFrame) {
+ var iframeUrl = iframeSrcBase;
+ if (location) {
+ iframeUrl += '#' + location;
+ }
+ $iframe.attr('src', iframeUrl);
+ showLoading();
+ } else {
+ loadSidebar(location);
+ }
+
+ updateComesFromInsideFrame = false;
+ }
+
+ return {
+
+ /** This method is called when Overlay loads (from index.tpl) */
+ init: function (iframeSrc, pIdSite, pPeriod, pDate) {
+ iframeSrcBase = iframeSrc;
+ idSite = pIdSite;
+ period = pPeriod;
+ date = pDate;
+
+ $body = $('body');
+ $iframe = $('#Overlay_Iframe');
+ $sidebar = $('#Overlay_Sidebar');
+ $location = $('#Overlay_Location');
+ $main = $('#Overlay_Main');
+ $loading = $('#Overlay_Loading');
+ $errorNotLoading = $('#Overlay_Error_NotLoading');
+
+ $rowEvolutionLink = $('#Overlay_RowEvolution');
+ $transitionsLink = $('#Overlay_Transitions');
+ $fullScreenLink = $('#Overlay_FullScreen');
+
+ adjustDimensions();
+
+ showLoading();
+
+ // apply initial dimensions
+ window.setTimeout(function () {
+ adjustDimensions();
+ }, 50);
+
+ // handle window resize
+ // we manipulate broadcast.pageload because it unbinds all resize events on window
+ var originalPageload = broadcast.pageload;
+ broadcast.pageload = function (hash) {
+ originalPageload(hash);
+ $(window).resize(function () {
+ adjustDimensions();
+ });
+ };
+ $(window).resize(function () {
+ adjustDimensions();
+ });
+
+ // handle hash change
+ broadcast.loadAjaxContent = hashChangeCallback;
+ broadcast.init();
+
+ if (window.location.href.split('#').length == 1) {
+ // if there's no hash, broadcast won't trigger the callback - we have to do it here
+ hashChangeCallback('');
+ }
+
+ // handle date selection
+ var $select = $('select#Overlay_DateRangeSelect').change(function () {
+ var parts = $(this).val().split(';');
+ if (parts.length == 2) {
+ period = parts[0];
+ date = parts[1];
+ window.location.href = Overlay_Helper.getOverlayLink(idSite, period, date, iframeCurrentPage);
+ }
+ });
+
+ var optionMatchFound = false;
+ $select.find('option').each(function () {
+ if ($(this).val() == period + ';' + date) {
+ $(this).prop('selected', true);
+ optionMatchFound = true;
+ }
+ });
+
+ if (!optionMatchFound) {
+ $select.prepend('<option selected="selected">');
+ }
+
+ // handle transitions link
+ $transitionsLink.click(function () {
+ DataTable_RowActions_Transitions.launchForUrl(iframeCurrentPageNormalized);
+ return false;
+ });
+
+ // handle row evolution link
+ $rowEvolutionLink.click(function () {
+ DataTable_RowActions_RowEvolution.launch('Actions.getPageUrls', iframeCurrentActionLabel);
+ return false;
+ });
+
+ // handle full screen link
+ $fullScreenLink.click(function () {
+ var href = iframeSrcBase;
+ if (iframeCurrentPage) {
+ href += '#' + iframeCurrentPage.replace(/#/g, '%23');
+ }
+ window.location.href = href;
+ return false;
+ });
+ },
+
+ /** This callback is used from within the iframe */
+ setCurrentUrl: function (currentUrl) {
+ showLoading();
+
+ var locationParts = location.href.split('#');
+ var currentLocation = '';
+ if (locationParts.length > 1) {
+ currentLocation = broadcast.getParamValue('l', locationParts[1]);
+ }
+
+ var newLocation = Overlay_Helper.encodeFrameUrl(currentUrl);
+
+ if (newLocation != currentLocation) {
+ updateComesFromInsideFrame = true;
+ // put the current iframe url in the main url to enable refresh and deep linking.
+ // use disableHistory=true to make sure that the back and forward buttons can be
+ // used on the iframe (which in turn notifies the parent about the location change)
+ broadcast.propagateAjax('l=' + newLocation, true);
+ } else {
+ // happens when the url is changed by hand or when the l parameter is there on page load
+ loadSidebar(currentUrl);
+ }
+ }
+
+ };
+
+})(); \ No newline at end of file