From e41359c8ccf8dd896de9245942bf4da8d7f1b5a5 Mon Sep 17 00:00:00 2001 From: Jared Tabor Date: Tue, 12 May 2015 10:07:51 -0400 Subject: [PATCH] Adding a date filter that will format dates in Tower UI based on the user's locale. short and long date format filters adding long date format to appropriate files in doing a grep for the long date format, i found these files could instead use the londDate filter Removing short hand abbreviation for dates. We will now include the year in all our date formats updating jshint to ignore moment updating long date filter --- .jshintrc | 3 ++- awx/ui/static/js/app.js | 3 ++- awx/ui/static/js/filters.js | 4 +++- awx/ui/static/js/filters/dates/long-date.filter.js | 6 ++++++ awx/ui/static/js/forms/LogViewerStatus.js | 4 ++-- awx/ui/static/js/helpers/EventViewer.js | 4 ++-- awx/ui/static/js/lists/AllJobs.js | 2 +- awx/ui/static/js/lists/CompletedJobs.js | 4 ++-- awx/ui/static/js/lists/Jobs.js | 2 +- awx/ui/static/js/lists/PortalJobs.js | 4 ++-- awx/ui/static/js/lists/Projects.js | 2 +- awx/ui/static/js/lists/ScheduledJobs.js | 6 +++--- awx/ui/static/js/lists/Schedules.js | 8 ++++---- awx/ui/static/js/lists/Streams.js | 4 ++-- awx/ui/static/js/widgets/Stream.js | 2 +- awx/ui/static/partials/job_detail.html | 4 ++-- awx/ui/static/partials/job_stdout_adhoc.html | 4 ++-- 17 files changed, 38 insertions(+), 28 deletions(-) create mode 100644 awx/ui/static/js/filters/dates/long-date.filter.js diff --git a/.jshintrc b/.jshintrc index 3ed9f59504..0239abbde6 100644 --- a/.jshintrc +++ b/.jshintrc @@ -23,7 +23,8 @@ "it": false, "expect": false, "context": false, - "describe": false + "describe": false, + "moment": false }, "strict": false, "quotmark": false, diff --git a/awx/ui/static/js/app.js b/awx/ui/static/js/app.js index ed0a3b7ab8..2ee0160c33 100644 --- a/awx/ui/static/js/app.js +++ b/awx/ui/static/js/app.js @@ -179,7 +179,8 @@ var tower = angular.module('Tower', [ 'CreateCustomInventoryHelper', 'CustomInventoryListDefinition', 'AdhocHelper', - 'features' + 'features', + 'longDateFilter' ]) .constant('AngularScheduler.partials', urlPrefix + 'lib/angular-scheduler/lib/') diff --git a/awx/ui/static/js/filters.js b/awx/ui/static/js/filters.js index aaf9f04c17..be5d00ad85 100644 --- a/awx/ui/static/js/filters.js +++ b/awx/ui/static/js/filters.js @@ -1,7 +1,9 @@ import sanitizeFilter from 'tower/filters/sanitize/xss-sanitizer.filter'; import capitalizeFilter from 'tower/filters/capitalize.filter'; +import longDateFilter from 'tower/filters/dates/long-date.filter'; export { sanitizeFilter, - capitalizeFilter + capitalizeFilter, + longDateFilter }; diff --git a/awx/ui/static/js/filters/dates/long-date.filter.js b/awx/ui/static/js/filters/dates/long-date.filter.js new file mode 100644 index 0000000000..e80c89b347 --- /dev/null +++ b/awx/ui/static/js/filters/dates/long-date.filter.js @@ -0,0 +1,6 @@ +angular.module('longDateFilter', []).filter('longDate', function() { + return function(input) { + var date = moment(input); + return date.format('l LTS'); + }; +}); diff --git a/awx/ui/static/js/forms/LogViewerStatus.js b/awx/ui/static/js/forms/LogViewerStatus.js index d3dc26c118..a1b25e1e72 100644 --- a/awx/ui/static/js/forms/LogViewerStatus.js +++ b/awx/ui/static/js/forms/LogViewerStatus.js @@ -38,13 +38,13 @@ export default "started": { label: "Started", type: "date", - "filter": "date:'MM/dd/yy HH:mm:ss'", + "filter": "longDate", readonly: true }, "finished": { label: "Finished", type: "date", - "filter": "date:'MM/dd/yy HH:mm:ss'", + "filter": "longDate", readonly: true }, "elapsed": { diff --git a/awx/ui/static/js/helpers/EventViewer.js b/awx/ui/static/js/helpers/EventViewer.js index ff76bffc3d..65a7ab2452 100644 --- a/awx/ui/static/js/helpers/EventViewer.js +++ b/awx/ui/static/js/helpers/EventViewer.js @@ -423,10 +423,10 @@ export default else if (key === "start" || key === "end" || key === "created") { if (!/Z$/.test(itm)) { itm = itm.replace(/\ /,'T') + 'Z'; - html += $filter('date')(itm, 'MM/dd/yy HH:mm:ss.sss'); + html += $filter('longDate')(itm); } else { - html += $filter('date')(itm, 'MM/dd/yy HH:mm:ss'); + html += $filter('longDate')(itm); } } else if (key === "host_name" && event.host_id) { diff --git a/awx/ui/static/js/lists/AllJobs.js b/awx/ui/static/js/lists/AllJobs.js index fe194baa7d..3cc5b0e7b5 100644 --- a/awx/ui/static/js/lists/AllJobs.js +++ b/awx/ui/static/js/lists/AllJobs.js @@ -52,7 +52,7 @@ export default label: 'Finished', noLink: true, searchable: false, - filter: "date:'MM/dd HH:mm:ss'", + filter: "longDate", columnClass: "col-lg-2 col-md-2 hidden-xs", key: true, desc: true diff --git a/awx/ui/static/js/lists/CompletedJobs.js b/awx/ui/static/js/lists/CompletedJobs.js index c3f8d2447d..18c72fe0c5 100644 --- a/awx/ui/static/js/lists/CompletedJobs.js +++ b/awx/ui/static/js/lists/CompletedJobs.js @@ -9,7 +9,7 @@ export default - angular.module('CompletedJobsDefinition', ['sanitizeFilter']) + angular.module('CompletedJobsDefinition', ['sanitizeFilter', 'longDateFilter']) .value( 'CompletedJobsList', { name: 'completed_jobs', @@ -51,7 +51,7 @@ export default label: 'Finished', noLink: true, searchable: false, - filter: "date:'MM/dd HH:mm:ss'", + filter: "longDate", columnClass: "col-lg-2 col-md-2 hidden-xs", key: true, desc: true diff --git a/awx/ui/static/js/lists/Jobs.js b/awx/ui/static/js/lists/Jobs.js index ce739ac4df..b7548d54d6 100644 --- a/awx/ui/static/js/lists/Jobs.js +++ b/awx/ui/static/js/lists/Jobs.js @@ -57,7 +57,7 @@ export default label: 'Started', noLink: true, searchable: false, - filter: "date:'MM/dd HH:mm:ss'", + filter: "longDate", columnClass: "col-lg-2 col-md-2 hidden-xs" }, type: { diff --git a/awx/ui/static/js/lists/PortalJobs.js b/awx/ui/static/js/lists/PortalJobs.js index 00db6461e0..65a3539bda 100644 --- a/awx/ui/static/js/lists/PortalJobs.js +++ b/awx/ui/static/js/lists/PortalJobs.js @@ -12,7 +12,7 @@ export default - angular.module('PortalJobsListDefinition', []) + angular.module('PortalJobsListDefinition', ['longDateFilter']) .value( 'PortalJobsList', { name: 'portal_jobs', @@ -58,7 +58,7 @@ export default label: 'Started', noLink: true, searchable: false, - filter: "date:'MM/dd HH:mm:ss'", + filter: "longDate", columnClass: "col-lg-3 col-md-3 hidden-xs" }, name: { diff --git a/awx/ui/static/js/lists/Projects.js b/awx/ui/static/js/lists/Projects.js index 84adf22b17..1e6552debc 100644 --- a/awx/ui/static/js/lists/Projects.js +++ b/awx/ui/static/js/lists/Projects.js @@ -45,7 +45,7 @@ export default }, last_updated: { label: 'Last Updated', - filter: "date:'MM/dd/yy HH:mm:ss'", + filter: "longDate", columnClass: "col-lg-2 col-md-2 hidden-sm hidden-xs", excludeModal: true, searchable: false, diff --git a/awx/ui/static/js/lists/ScheduledJobs.js b/awx/ui/static/js/lists/ScheduledJobs.js index 08d470af43..72af30e578 100644 --- a/awx/ui/static/js/lists/ScheduledJobs.js +++ b/awx/ui/static/js/lists/ScheduledJobs.js @@ -9,7 +9,7 @@ export default - angular.module('ScheduledJobsDefinition', ['sanitizeFilter']) + angular.module('ScheduledJobsDefinition', ['sanitizeFilter', 'longDateFilter']) .value( 'ScheduledJobsList', { name: 'schedules', @@ -36,7 +36,7 @@ export default noLink: true, searchable: false, columnClass: "col-lg-2 col-md-2 hidden-xs", - filter: "date:'MM/dd HH:mm:ss'", + filter: "longDate", key: true }, type: { @@ -92,4 +92,4 @@ export default dataPlacement: 'top' } } - }); \ No newline at end of file + }); diff --git a/awx/ui/static/js/lists/Schedules.js b/awx/ui/static/js/lists/Schedules.js index 52e94d6187..e33b5e88a7 100644 --- a/awx/ui/static/js/lists/Schedules.js +++ b/awx/ui/static/js/lists/Schedules.js @@ -29,19 +29,19 @@ export default }, dtstart: { label: 'First Run', - filter: "date:'MM/dd/yy HH:mm:ss'", + filter: "longDate", searchable: false, columnClass: "col-md-2 col-sm-3 hidden-xs" }, next_run: { label: 'Next Run', - filter: "date:'MM/dd/yy HH:mm:ss'", + filter: "longDate", searchable: false, columnClass: "col-md-2 col-sm-3 col-xs-3" }, dtend: { label: 'Final Run', - filter: "date:'MM/dd/yy HH:mm:ss'", + filter: "longDate", searchable: false, columnClass: "col-md-2 col-sm-3 hidden-xs" } @@ -96,4 +96,4 @@ export default dataPlacement: 'top' } } - }); \ No newline at end of file + }); diff --git a/awx/ui/static/js/lists/Streams.js b/awx/ui/static/js/lists/Streams.js index 7cae0dc263..7e2752b278 100644 --- a/awx/ui/static/js/lists/Streams.js +++ b/awx/ui/static/js/lists/Streams.js @@ -29,7 +29,7 @@ export default desc: true, noLink: true, searchable: false, - filter: "date:'MM/dd/yy HH:mm:ss'" + filter: "longDate", }, user: { label: 'Initiated by', @@ -281,4 +281,4 @@ export default } } - }); \ No newline at end of file + }); diff --git a/awx/ui/static/js/widgets/Stream.js b/awx/ui/static/js/widgets/Stream.js index 3000100012..5afcd6d165 100644 --- a/awx/ui/static/js/widgets/Stream.js +++ b/awx/ui/static/js/widgets/Stream.js @@ -300,7 +300,7 @@ angular.module('StreamWidget', ['RestServices', 'Utilities', 'StreamListDefiniti scope = generator.inject(form, { mode: 'edit', modal: true, related: false }); scope.changes = activity.changes_stringified; scope.user = ((activity.summary_fields.actor) ? activity.summary_fields.actor.username : 'system') + - ' on ' + $filter('date')(activity.timestamp, "MM/dd/yy HH:mm:ss"); + ' on ' + $filter('longDate')(activity.timestamp); scope.operation = activity.description_nolink; scope.formModalAction = function () { diff --git a/awx/ui/static/partials/job_detail.html b/awx/ui/static/partials/job_detail.html index 371b143ab3..c8460083e8 100644 --- a/awx/ui/static/partials/job_detail.html +++ b/awx/ui/static/partials/job_detail.html @@ -45,8 +45,8 @@
-
Started  {{ job_status.started | date:'MM/dd/yy HH:mm:ss' }}
-
Finished  {{ job_status.finished | date:'MM/dd/yy HH:mm:ss' }}
+
Started  {{ job_status.started | longDate }}
+
Finished  {{ job_status.finished | longDate }}
Elapsed  {{ job_status.elapsed }}
diff --git a/awx/ui/static/partials/job_stdout_adhoc.html b/awx/ui/static/partials/job_stdout_adhoc.html index 07796a5e9a..f001ba52ab 100644 --- a/awx/ui/static/partials/job_stdout_adhoc.html +++ b/awx/ui/static/partials/job_stdout_adhoc.html @@ -44,10 +44,10 @@
- Started  {{ job.started | date:'MM/dd/yy HH:mm:ss' }} + Started  {{ job.started | longDate }}
- Finished  {{ job.finished | date:'MM/dd/yy HH:mm:ss' }} + Finished  {{ job.finished | longDate }}
Elapsed  {{ job.elapsed }} seconds