diff options
author | Thomas Steur <thomas.steur@gmail.com> | 2015-10-15 16:43:35 +0300 |
---|---|---|
committer | Thomas Steur <thomas.steur@gmail.com> | 2015-10-15 16:43:35 +0300 |
commit | bb80b8f831e10f037c8d2722c9967943defef95e (patch) | |
tree | 3ce0a28cb1d15148cd15d48b83a39e0c92bf38b8 /plugins/CoreHome/javascripts/calendar.js | |
parent | 713a124cc2c118697f3f2801679bc0e2bb5c5dc3 (diff) | |
parent | 1e139be2c8c3c6f974e740dd1c9f905e8f673f98 (diff) |
Merge branch 'master' into 3.0
Conflicts:
CHANGELOG.md
core/Plugin/Controller.php
core/Version.php
plugins/API/ProcessedReport.php
plugins/CoreHome/CoreHome.php
plugins/CoreHome/javascripts/corehome.js
plugins/CoreHome/javascripts/menu.js
plugins/CoreHome/javascripts/menu_init.js
plugins/CoreHome/lang/en.json
plugins/CoreHome/stylesheets/zen-mode.less
plugins/CoreHome/templates/ReportsByDimension/_reportsByDimension.twig
plugins/CoreHome/templates/_indexContent.twig
plugins/CoreHome/templates/getDefaultIndexView.twig
plugins/Dashboard/Menu.php
plugins/Dashboard/javascripts/dashboard.js
plugins/Dashboard/javascripts/dashboardObject.js
plugins/Goals/templates/_titleAndEvolutionGraph.twig
plugins/Goals/templates/getOverviewView.twig
plugins/Morpheus/javascripts/piwikHelper.js
plugins/Referrers/templates/index.twig
plugins/UserCountry/templates/index.twig
plugins/VisitFrequency/templates/_sparklines.twig
plugins/ZenMode/ZenMode.php
plugins/ZenMode/javascripts/zen-mode.js
tests/PHPUnit/Fixtures/UITestFixture.php
tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getReportMetadata_day.xml
tests/UI/expected-ui-screenshots
tests/UI/specs/Dashboard_spec.js
tests/UI/specs/Menus_spec.js
tests/UI/specs/UIIntegration_spec.js
Diffstat (limited to 'plugins/CoreHome/javascripts/calendar.js')
-rw-r--r-- | plugins/CoreHome/javascripts/calendar.js | 105 |
1 files changed, 60 insertions, 45 deletions
diff --git a/plugins/CoreHome/javascripts/calendar.js b/plugins/CoreHome/javascripts/calendar.js index 1c308fb74c..004c15e0aa 100644 --- a/plugins/CoreHome/javascripts/calendar.js +++ b/plugins/CoreHome/javascripts/calendar.js @@ -294,7 +294,6 @@ var togglePeriodPickers = function (showSingle) { $('#periodString').find('.period-date').toggle(showSingle); $('#periodString').find('.period-range').toggle(!showSingle); - $('#calendarRangeApply').toggle(!showSingle); }; // @@ -355,7 +354,24 @@ }); var reloading = false; - var changePeriodOnClick = function (periodInput) { + + var changePeriodWithPageReload = function (periodInput) { + var url = periodInput.val(), + period = broadcast.getValueFromUrl('period', url); + + // if clicking on the selected period, change the period but not the date + if (period != 'range' && !reloading) { + // only reload if current period is different from selected + reloading = true; + selectedPeriod = period; + updateDate(piwik.currentDateString); + return true; + } + + return false; + }; + + var changePeriodOnClickIfPeriodChanged = function (periodInput) { if (reloading) // if a click event resulted in reloading, don't reload again { return; @@ -367,11 +383,10 @@ // if clicking on the selected period, change the period but not the date if (selectedPeriod == period && selectedPeriod != 'range') { // only reload if current period is different from selected - if (piwik.period != selectedPeriod && !reloading) { - reloading = true; - selectedPeriod = period; - updateDate(piwik.currentDateString); + if (piwik.period != selectedPeriod) { + return changePeriodWithPageReload(periodInput); } + return true; } @@ -380,16 +395,50 @@ $("#otherPeriods").find("label,input").on('dblclick', function (e) { var id = $(e.target).attr('for'); - changePeriodOnClick($('#' + id)); + changePeriodOnClickIfPeriodChanged($('#' + id)); + }); + + $("#otherPeriods").find("label,input").on('dblclick', function (e) { + var id = $(e.target).attr('for'); + changePeriodOnClickIfPeriodChanged($('#' + id)); }); + // Apply date range button will reload the page with the selected range + $('#calendarApply') + .on('click', function () { + var $selectedPeriod = $('#periodMore [name=period]:checked'); + + if (!$selectedPeriod.is('#period_id_range')) { + changePeriodWithPageReload($selectedPeriod); + return true; + } + + var dateFrom = $('#inputCalendarFrom').val(), + dateTo = $('#inputCalendarTo').val(), + oDateFrom = $.datepicker.parseDate('yy-mm-dd', dateFrom), + oDateTo = $.datepicker.parseDate('yy-mm-dd', dateTo); + + if (!isValidDate(oDateFrom) + || !isValidDate(oDateTo) + || oDateFrom > oDateTo) { + $('#alert').find('h2').text(_pk_translate('General_InvalidDateRange')); + piwikHelper.modalConfirm('#alert', {}); + return false; + } + piwikHelper.showAjaxLoading('ajaxLoadingCalendar'); + broadcast.propagateNewPage('period=range&date=' + dateFrom + ',' + dateTo); + }) + .show(); + + + // when non-range period is clicked, change the period & refresh the date picker $("#otherPeriods").find("input").on('click', function (e) { var request_URL = $(e.target).val(), period = broadcast.getValueFromUrl('period', request_URL), lastPeriod = selectedPeriod; - if (changePeriodOnClick($(e.target))) { + if (changePeriodOnClickIfPeriodChanged($(e.target))) { return true; } @@ -440,21 +489,6 @@ toggleMonthDropdown(selectedPeriod == 'year'); }); - // reset date/period when opening calendar - $("#periodString").on('click', "#date,.calendar-icon", function () { - var periodMore = $("#periodMore").toggle(); - if (periodMore.is(":visible")) { - periodMore.find(".ui-state-highlight").removeClass('ui-state-highlight'); - } - }); - - $('body').on('click', function(e) { - var target = $(e.target); - if (target.closest('html').length && !target.closest('#periodString').length && !target.is('option') && $("#periodMore").is(":visible")) { - $("#periodMore").hide(); - } - }); - function onDateRangeSelect(dateText, inst) { var toOrFrom = inst.id == 'calendarFrom' ? 'From' : 'To'; $('#inputCalendar' + toOrFrom).val(dateText); @@ -487,27 +521,6 @@ // If not called, the first date appears light brown instead of dark brown $('.ui-state-hover').removeClass('ui-state-hover'); - // Apply date range button will reload the page with the selected range - $('#calendarRangeApply') - .on('click', function () { - var request_URL = $(e.target).val(); - var dateFrom = $('#inputCalendarFrom').val(), - dateTo = $('#inputCalendarTo').val(), - oDateFrom = $.datepicker.parseDate('yy-mm-dd', dateFrom), - oDateTo = $.datepicker.parseDate('yy-mm-dd', dateTo); - - if (!isValidDate(oDateFrom) - || !isValidDate(oDateTo) - || oDateFrom > oDateTo) { - $('#alert').find('h2').text(_pk_translate('General_InvalidDateRange')); - piwikHelper.modalConfirm('#alert', {}); - return false; - } - piwikHelper.showAjaxLoading('ajaxLoadingCalendar'); - broadcast.propagateNewPage('period=range&date=' + dateFrom + ',' + dateTo); - }) - .show(); - // Bind the input fields to update the calendar's date when date is manually changed $('#inputCalendarFrom, #inputCalendarTo') .keyup(function (e) { @@ -520,7 +533,7 @@ } $("#calendar" + fromOrTo).datepicker("setDate", newDate); if (e.keyCode == 13) { - $('#calendarRangeApply').click(); + $('#calendarApply').click(); } }); return true; @@ -534,6 +547,8 @@ if (piwik.period == 'range') { $("#period_id_range").click(); } + + initTopControls(); }); }(jQuery)); |