Convert period selector to angular & allow plugins to add periods to the frontend (#11873)
* Add generate:angular-component command to generate an angular component. * Do not modify Date prototype. * Move period selector code from calendar.js to new angular directive (just move, no refactoring). * Extract date picker code from period selector code and put into new directive. * Extract range picking code into separate component than period selector. * Extract single period calendar to separate component & extract period specific functionality to new extendable periods service. * Fixing regressions in period selector behavior. * Move bulk of period selector code from directive to controller, & fix variable name in date range picker template. * Fix issue w/ yesterday date value, remove need to give period selector directive translations and make sure periods can be extended in the frontend. * Make sure period selector still works outside of an angular routing context (ie, in embedded dashboard). * In period selector UI test, hide ajaxLoadingCalendar using CSS since it is now managed by angular. * Make sure selected period highlighting changes immediately after selecting, even if loading a new page. * Put period selector top level element ID & classes on correct elements to ensure certain styles work properly. * Make sure selected period text changes immediately after selecing period, even if loading a new page or changing the URL. * Make sure range start/end changes immediately when a period is selected & selected period date range stops being highlighted immediately when a range period is selected, even if loading a new page. * Updating expected screenshots. * Updating screenshots. * Assorted fixes for period selector refactor. - Filter out invalid period labels (can happen if INI config for allowed periods is incorrect). - When determining display text for range, don't try to format the startRangeDate/endRangeDate vars, they're both strings. - Use correct selector when closing period selector. * Set global piwik date/period values on location change, outside of period selector component. * Do not skip parsing date if it does not start with an int (since the JS can handle today/yesterday/now). * Assorted fixes for period selector refactor: - use $onChanges instead of watches in datepicker (watches get triggered every time, $onChanges doesn't) - don't use arrays for selected/highlighted dates (for some weird reason, changing one of these arrays results in angular thinking it changes 3 times instead of once) - don't redraw on triggered mouseover events (something triggers mouseover when a date is selected, probably jquery datepicker) - draw after a setTimeout when a date is selected so our drawing occurs after jquery datepicker draws * Achieving smoother rendering for period selector by removing click handlers jquery datepicker adds. Also fixed bug where selecting the current period type reset the view date for the date picker. * Bound range date in period selector by piwik min/max date, so inferred dates will always be within allowed pickable dates in picker. * Removing ES6 used by accident + fix for issue when switching from non-year to year period (ui-datepicker-current-day class does not get removed). * Fix for angularjs one way binding quirk: initial property value is set before $onInit not during construction. * Avoid an exception when a date input in the date range picker is empty. * Split up change/keyup event to solve strange race condition in IE 10 on browserstack. * Change period selector "click again" tooltip to "double click". * Remove tabindexes > 1 so period selector control can be tabbed through. * Show visual cue for invalid dates in date range picker. * Only hide period option tooltip if period is active period, not if period is selected period. * In period selector, disable apply button if range is invalid. Also fix case when \$.datepicker.parseDate returns null instead of throwing.
parent
c1422b53
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Affichage de
- core/Period/PeriodValidator.php 6 ajouts, 4 suppressionscore/Period/PeriodValidator.php
- core/Plugin/Controller.php 1 ajout, 0 suppressioncore/Plugin/Controller.php
- lang/en.json 1 ajout, 1 suppressionlang/en.json
- plugins/CoreConsole/Commands/GenerateAngularComponent.php 74 ajouts, 0 suppressionplugins/CoreConsole/Commands/GenerateAngularComponent.php
- plugins/CoreConsole/Commands/GenerateAngularConstructBase.php 72 ajouts, 0 suppression...ins/CoreConsole/Commands/GenerateAngularConstructBase.php
- plugins/CoreConsole/Commands/GenerateAngularDirective.php 3 ajouts, 55 suppressionsplugins/CoreConsole/Commands/GenerateAngularDirective.php
- plugins/CoreConsole/Commands/GeneratePluginBase.php 1 ajout, 1 suppressionplugins/CoreConsole/Commands/GeneratePluginBase.php
- plugins/CoreHome/CoreHome.php 21 ajouts, 0 suppressionplugins/CoreHome/CoreHome.php
- plugins/CoreHome/angularjs/common/services/periods.js 271 ajouts, 0 suppressionplugins/CoreHome/angularjs/common/services/periods.js
- plugins/CoreHome/angularjs/common/services/piwik.js 60 ajouts, 2 suppressionsplugins/CoreHome/angularjs/common/services/piwik.js
- plugins/CoreHome/angularjs/date-picker/date-picker.directive.js 368 ajouts, 0 suppression...s/CoreHome/angularjs/date-picker/date-picker.directive.js
- plugins/CoreHome/angularjs/date-range-picker/date-range-picker.component.html 58 ajouts, 0 suppression...ularjs/date-range-picker/date-range-picker.component.html
- plugins/CoreHome/angularjs/date-range-picker/date-range-picker.component.js 156 ajouts, 0 suppression...ngularjs/date-range-picker/date-range-picker.component.js
- plugins/CoreHome/angularjs/date-range-picker/date-range-picker.component.less 3 ajouts, 0 suppression...ularjs/date-range-picker/date-range-picker.component.less
- plugins/CoreHome/angularjs/period-date-picker/period-date-picker.component.html 14 ajouts, 0 suppression...arjs/period-date-picker/period-date-picker.component.html
- plugins/CoreHome/angularjs/period-date-picker/period-date-picker.component.js 105 ajouts, 0 suppression...ularjs/period-date-picker/period-date-picker.component.js
- plugins/CoreHome/angularjs/period-date-picker/period-date-picker.component.less 3 ajouts, 0 suppression...arjs/period-date-picker/period-date-picker.component.less
- plugins/CoreHome/angularjs/period-selector/period-selector.controller.js 218 ajouts, 0 suppression...e/angularjs/period-selector/period-selector.controller.js
- plugins/CoreHome/angularjs/period-selector/period-selector.directive.html 86 ajouts, 0 suppression.../angularjs/period-selector/period-selector.directive.html
- plugins/CoreHome/angularjs/period-selector/period-selector.directive.js 38 ajouts, 0 suppression...me/angularjs/period-selector/period-selector.directive.js
Chargement en cours
Veuillez vous inscrire ou vous se connecter pour commenter