mirror of
https://github.com/ansible/awx.git
synced 2026-03-22 19:35:02 -02:30
Merge pull request #213 from jaredevantabor/dates
Filter Tower dates using moment.js
This commit is contained in:
@@ -23,7 +23,8 @@
|
|||||||
"it": false,
|
"it": false,
|
||||||
"expect": false,
|
"expect": false,
|
||||||
"context": false,
|
"context": false,
|
||||||
"describe": false
|
"describe": false,
|
||||||
|
"moment": false
|
||||||
},
|
},
|
||||||
"strict": false,
|
"strict": false,
|
||||||
"quotmark": false,
|
"quotmark": false,
|
||||||
|
|||||||
@@ -179,7 +179,8 @@ var tower = angular.module('Tower', [
|
|||||||
'CreateCustomInventoryHelper',
|
'CreateCustomInventoryHelper',
|
||||||
'CustomInventoryListDefinition',
|
'CustomInventoryListDefinition',
|
||||||
'AdhocHelper',
|
'AdhocHelper',
|
||||||
'features'
|
'features',
|
||||||
|
'longDateFilter'
|
||||||
])
|
])
|
||||||
|
|
||||||
.constant('AngularScheduler.partials', urlPrefix + 'lib/angular-scheduler/lib/')
|
.constant('AngularScheduler.partials', urlPrefix + 'lib/angular-scheduler/lib/')
|
||||||
|
|||||||
@@ -422,7 +422,7 @@ export function HomeGroups($log, $scope, $filter, $compile, $location, $routePar
|
|||||||
html += "<td><a href=\"#/jobs/" + row.id + "\" " + "aw-tool-tip=\"" + row.status.charAt(0).toUpperCase() + row.status.slice(1) +
|
html += "<td><a href=\"#/jobs/" + row.id + "\" " + "aw-tool-tip=\"" + row.status.charAt(0).toUpperCase() + row.status.slice(1) +
|
||||||
". Click for details\" aw-tip-placement=\"top\"><i class=\"fa icon-job-" +
|
". Click for details\" aw-tip-placement=\"top\"><i class=\"fa icon-job-" +
|
||||||
row.status + "\"></i></a></td>\n";
|
row.status + "\"></i></a></td>\n";
|
||||||
html += "<td>" + ($filter('date')(row.finished,'MM/dd HH:mm:ss')).replace(/ /,'<br />') + "</td>";
|
html += "<td>" + ($filter('longDate')(row.finished)).replace(/ /,'<br />') + "</td>";
|
||||||
html += "<td><a href=\"#/jobs/" + row.id + "\" " + "aw-tool-tip=\"" + row.status.charAt(0).toUpperCase() + row.status.slice(1) +
|
html += "<td><a href=\"#/jobs/" + row.id + "\" " + "aw-tool-tip=\"" + row.status.charAt(0).toUpperCase() + row.status.slice(1) +
|
||||||
". Click for details\" aw-tip-placement=\"top\">" + ellipsis(row.name) + "</a></td>";
|
". Click for details\" aw-tip-placement=\"top\">" + ellipsis(row.name) + "</a></td>";
|
||||||
html += "</tr>\n";
|
html += "</tr>\n";
|
||||||
@@ -457,7 +457,7 @@ export function HomeGroups($log, $scope, $filter, $compile, $location, $routePar
|
|||||||
data.results.forEach( function(row) {
|
data.results.forEach( function(row) {
|
||||||
html += "<tr>";
|
html += "<tr>";
|
||||||
html += "<td><a href=\"\" ng-click=\"viewJob('" + row.related.last_update + "')\" aw-tool-tip=\"" + row.status.charAt(0).toUpperCase() + row.status.slice(1) + ". Click for details\" aw-tip-placement=\"top\"><i class=\"fa icon-job-" + row.status + "\"></i></a></td>";
|
html += "<td><a href=\"\" ng-click=\"viewJob('" + row.related.last_update + "')\" aw-tool-tip=\"" + row.status.charAt(0).toUpperCase() + row.status.slice(1) + ". Click for details\" aw-tip-placement=\"top\"><i class=\"fa icon-job-" + row.status + "\"></i></a></td>";
|
||||||
html += "<td>" + ($filter('date')(row.last_updated,'MM/dd HH:mm:ss')).replace(/ /,'<br />') + "</td>";
|
html += "<td>" + ($filter('longDate')(row.last_updated)).replace(/ /,'<br />') + "</td>";
|
||||||
html += "<td><a href=\"\" ng-click=\"viewJob('" + row.related.last_update + "')\">" + ellipsis(row.summary_fields.group.name) + "</a></td>";
|
html += "<td><a href=\"\" ng-click=\"viewJob('" + row.related.last_update + "')\">" + ellipsis(row.summary_fields.group.name) + "</a></td>";
|
||||||
html += "</tr>\n";
|
html += "</tr>\n";
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -202,7 +202,7 @@ export function InventoriesList($scope, $rootScope, $location, $log,
|
|||||||
html += "<tr>\n";
|
html += "<tr>\n";
|
||||||
html += "<td><a href=\"#/jobs/" + row.id + "\" " + "aw-tool-tip=\"" + row.status.charAt(0).toUpperCase() + row.status.slice(1) +
|
html += "<td><a href=\"#/jobs/" + row.id + "\" " + "aw-tool-tip=\"" + row.status.charAt(0).toUpperCase() + row.status.slice(1) +
|
||||||
". Click for details\" aw-tip-placement=\"top\"><i class=\"fa icon-job-" + row.status + "\"></i></a></td>\n";
|
". Click for details\" aw-tip-placement=\"top\"><i class=\"fa icon-job-" + row.status + "\"></i></a></td>\n";
|
||||||
html += "<td>" + ($filter('date')(row.finished,'MM/dd HH:mm:ss')).replace(/ /,'<br />') + "</td>";
|
html += "<td>" + ($filter('longDate')(row.finished)).replace(/ /,'<br />') + "</td>";
|
||||||
html += "<td><a href=\"#/jobs/" + row.id + "\" " + "aw-tool-tip=\"" + row.status.charAt(0).toUpperCase() + row.status.slice(1) +
|
html += "<td><a href=\"#/jobs/" + row.id + "\" " + "aw-tool-tip=\"" + row.status.charAt(0).toUpperCase() + row.status.slice(1) +
|
||||||
". Click for details\" aw-tip-placement=\"top\">" + ellipsis(row.name) + "</a></td>";
|
". Click for details\" aw-tip-placement=\"top\">" + ellipsis(row.name) + "</a></td>";
|
||||||
html += "</tr>\n";
|
html += "</tr>\n";
|
||||||
@@ -238,7 +238,7 @@ export function InventoriesList($scope, $rootScope, $location, $log,
|
|||||||
if (row.related.last_update) {
|
if (row.related.last_update) {
|
||||||
html += "<tr>";
|
html += "<tr>";
|
||||||
html += "<td><a href=\"\" ng-click=\"viewJob('" + row.related.last_update + "')\" aw-tool-tip=\"" + row.status.charAt(0).toUpperCase() + row.status.slice(1) + ". Click for details\" aw-tip-placement=\"top\"><i class=\"fa icon-job-" + row.status + "\"></i></a></td>";
|
html += "<td><a href=\"\" ng-click=\"viewJob('" + row.related.last_update + "')\" aw-tool-tip=\"" + row.status.charAt(0).toUpperCase() + row.status.slice(1) + ". Click for details\" aw-tip-placement=\"top\"><i class=\"fa icon-job-" + row.status + "\"></i></a></td>";
|
||||||
html += "<td>" + ($filter('date')(row.last_updated,'MM/dd HH:mm:ss')).replace(/ /,'<br />') + "</td>";
|
html += "<td>" + ($filter('longDate')(row.last_updated)).replace(/ /,'<br />') + "</td>";
|
||||||
html += "<td><a href=\"\" ng-click=\"viewJob('" + row.related.last_update + "')\">" + ellipsis(row.summary_fields.group.name) + "</a></td>";
|
html += "<td><a href=\"\" ng-click=\"viewJob('" + row.related.last_update + "')\">" + ellipsis(row.summary_fields.group.name) + "</a></td>";
|
||||||
html += "</tr>\n";
|
html += "</tr>\n";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -175,7 +175,7 @@ export function JobEventsList($sce, $filter, $scope, $rootScope, $location, $log
|
|||||||
}
|
}
|
||||||
//cDate = new Date(set[i].created);
|
//cDate = new Date(set[i].created);
|
||||||
//set[i].created = FormatDate(cDate);
|
//set[i].created = FormatDate(cDate);
|
||||||
set[i].created = $filter('date')(set[i].created, 'MM/dd HH:mm:ss');
|
set[i].created = $filter('longDate')(set[i].created);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Need below lookup to get inventory_id, which is not on event record. Plus, good idea to get status and name
|
// Need below lookup to get inventory_id, which is not on event record. Plus, good idea to get status and name
|
||||||
@@ -360,4 +360,4 @@ export function JobEventsEdit($scope, $rootScope, $compile, $location, $log, $ro
|
|||||||
|
|
||||||
JobEventsEdit.$inject = ['$scope', '$rootScope', '$compile', '$location', '$log', '$routeParams', 'JobEventsForm', 'GenerateForm',
|
JobEventsEdit.$inject = ['$scope', '$rootScope', '$compile', '$location', '$log', '$routeParams', 'JobEventsForm', 'GenerateForm',
|
||||||
'Rest', 'Alert', 'ProcessErrors', 'LoadBreadCrumbs', 'ClearScope', 'GetBasePath', 'FormatDate', 'EventView', 'Wait'
|
'Rest', 'Alert', 'ProcessErrors', 'LoadBreadCrumbs', 'ClearScope', 'GetBasePath', 'FormatDate', 'EventView', 'Wait'
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
import sanitizeFilter from 'tower/filters/sanitize/xss-sanitizer.filter';
|
import sanitizeFilter from 'tower/shared/xss-sanitizer.filter';
|
||||||
import capitalizeFilter from 'tower/filters/capitalize.filter';
|
import capitalizeFilter from 'tower/shared/capitalize.filter';
|
||||||
|
import longDateFilter from 'tower/shared/long-date.filter';
|
||||||
|
|
||||||
export {
|
export {
|
||||||
sanitizeFilter,
|
sanitizeFilter,
|
||||||
capitalizeFilter
|
capitalizeFilter,
|
||||||
|
longDateFilter
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -38,13 +38,13 @@ export default
|
|||||||
"started": {
|
"started": {
|
||||||
label: "Started",
|
label: "Started",
|
||||||
type: "date",
|
type: "date",
|
||||||
"filter": "date:'MM/dd/yy HH:mm:ss'",
|
"filter": "longDate",
|
||||||
readonly: true
|
readonly: true
|
||||||
},
|
},
|
||||||
"finished": {
|
"finished": {
|
||||||
label: "Finished",
|
label: "Finished",
|
||||||
type: "date",
|
type: "date",
|
||||||
"filter": "date:'MM/dd/yy HH:mm:ss'",
|
"filter": "longDate",
|
||||||
readonly: true
|
readonly: true
|
||||||
},
|
},
|
||||||
"elapsed": {
|
"elapsed": {
|
||||||
|
|||||||
@@ -423,10 +423,10 @@ export default
|
|||||||
else if (key === "start" || key === "end" || key === "created") {
|
else if (key === "start" || key === "end" || key === "created") {
|
||||||
if (!/Z$/.test(itm)) {
|
if (!/Z$/.test(itm)) {
|
||||||
itm = itm.replace(/\ /,'T') + 'Z';
|
itm = itm.replace(/\ /,'T') + 'Z';
|
||||||
html += $filter('date')(itm, 'MM/dd/yy HH:mm:ss.sss');
|
html += $filter('longDate')(itm);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
html += $filter('date')(itm, 'MM/dd/yy HH:mm:ss');
|
html += $filter('longDate')(itm);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (key === "host_name" && event.host_id) {
|
else if (key === "host_name" && event.host_id) {
|
||||||
|
|||||||
@@ -121,7 +121,7 @@ angular.module('HostsHelper', [ 'RestServices', 'Utilities', listGenerator.name,
|
|||||||
". Click for details\" data-placement=\"top\"><i class=\"fa icon-job-" +
|
". Click for details\" data-placement=\"top\"><i class=\"fa icon-job-" +
|
||||||
job.status + "\"></i></a></td>\n";
|
job.status + "\"></i></a></td>\n";
|
||||||
|
|
||||||
html += "<td>" + ($filter('date')(job.finished,'MM/dd HH:mm:ss')).replace(/ /,'<br />') + "</td>\n";
|
html += "<td>" + ($filter('longDate')(job.finished)).replace(/ /,'<br />') + "</td>\n";
|
||||||
|
|
||||||
html += "<td class=\"break\"><a href=\"#/jobs/" + job.id + "\" " +
|
html += "<td class=\"break\"><a href=\"#/jobs/" + job.id + "\" " +
|
||||||
"aw-tool-tip=\"" + job.status.charAt(0).toUpperCase() + job.status.slice(1) +
|
"aw-tool-tip=\"" + job.status.charAt(0).toUpperCase() + job.status.slice(1) +
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ export default
|
|||||||
label: 'Finished',
|
label: 'Finished',
|
||||||
noLink: true,
|
noLink: true,
|
||||||
searchable: false,
|
searchable: false,
|
||||||
filter: "date:'MM/dd HH:mm:ss'",
|
filter: "longDate",
|
||||||
columnClass: "col-lg-2 col-md-2 hidden-xs",
|
columnClass: "col-lg-2 col-md-2 hidden-xs",
|
||||||
key: true,
|
key: true,
|
||||||
desc: true
|
desc: true
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ export default
|
|||||||
label: 'Finished',
|
label: 'Finished',
|
||||||
noLink: true,
|
noLink: true,
|
||||||
searchable: false,
|
searchable: false,
|
||||||
filter: "date:'MM/dd HH:mm:ss'",
|
filter: "longDate",
|
||||||
columnClass: "col-lg-2 col-md-2 hidden-xs",
|
columnClass: "col-lg-2 col-md-2 hidden-xs",
|
||||||
key: true,
|
key: true,
|
||||||
desc: true
|
desc: true
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ export default
|
|||||||
label: 'Started',
|
label: 'Started',
|
||||||
noLink: true,
|
noLink: true,
|
||||||
searchable: false,
|
searchable: false,
|
||||||
filter: "date:'MM/dd HH:mm:ss'",
|
filter: "longDate",
|
||||||
columnClass: "col-lg-2 col-md-2 hidden-xs"
|
columnClass: "col-lg-2 col-md-2 hidden-xs"
|
||||||
},
|
},
|
||||||
type: {
|
type: {
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ export default
|
|||||||
label: 'Started',
|
label: 'Started',
|
||||||
noLink: true,
|
noLink: true,
|
||||||
searchable: false,
|
searchable: false,
|
||||||
filter: "date:'MM/dd HH:mm:ss'",
|
filter: "longDate",
|
||||||
columnClass: "col-lg-3 col-md-3 hidden-xs"
|
columnClass: "col-lg-3 col-md-3 hidden-xs"
|
||||||
},
|
},
|
||||||
name: {
|
name: {
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ export default
|
|||||||
},
|
},
|
||||||
last_updated: {
|
last_updated: {
|
||||||
label: '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",
|
columnClass: "col-lg-2 col-md-2 hidden-sm hidden-xs",
|
||||||
excludeModal: true,
|
excludeModal: true,
|
||||||
searchable: false,
|
searchable: false,
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ export default
|
|||||||
noLink: true,
|
noLink: true,
|
||||||
searchable: false,
|
searchable: false,
|
||||||
columnClass: "col-lg-2 col-md-2 hidden-xs",
|
columnClass: "col-lg-2 col-md-2 hidden-xs",
|
||||||
filter: "date:'MM/dd HH:mm:ss'",
|
filter: "longDate",
|
||||||
key: true
|
key: true
|
||||||
},
|
},
|
||||||
type: {
|
type: {
|
||||||
|
|||||||
@@ -29,19 +29,19 @@ export default
|
|||||||
},
|
},
|
||||||
dtstart: {
|
dtstart: {
|
||||||
label: 'First Run',
|
label: 'First Run',
|
||||||
filter: "date:'MM/dd/yy HH:mm:ss'",
|
filter: "longDate",
|
||||||
searchable: false,
|
searchable: false,
|
||||||
columnClass: "col-md-2 col-sm-3 hidden-xs"
|
columnClass: "col-md-2 col-sm-3 hidden-xs"
|
||||||
},
|
},
|
||||||
next_run: {
|
next_run: {
|
||||||
label: 'Next Run',
|
label: 'Next Run',
|
||||||
filter: "date:'MM/dd/yy HH:mm:ss'",
|
filter: "longDate",
|
||||||
searchable: false,
|
searchable: false,
|
||||||
columnClass: "col-md-2 col-sm-3 col-xs-3"
|
columnClass: "col-md-2 col-sm-3 col-xs-3"
|
||||||
},
|
},
|
||||||
dtend: {
|
dtend: {
|
||||||
label: 'Final Run',
|
label: 'Final Run',
|
||||||
filter: "date:'MM/dd/yy HH:mm:ss'",
|
filter: "longDate",
|
||||||
searchable: false,
|
searchable: false,
|
||||||
columnClass: "col-md-2 col-sm-3 hidden-xs"
|
columnClass: "col-md-2 col-sm-3 hidden-xs"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ export default
|
|||||||
desc: true,
|
desc: true,
|
||||||
noLink: true,
|
noLink: true,
|
||||||
searchable: false,
|
searchable: false,
|
||||||
filter: "date:'MM/dd/yy HH:mm:ss'"
|
filter: "longDate"
|
||||||
},
|
},
|
||||||
user: {
|
user: {
|
||||||
label: 'Initiated by',
|
label: 'Initiated by',
|
||||||
|
|||||||
@@ -572,7 +572,7 @@ angular.module('Utilities', ['RestServices', 'Utilities', 'sanitizeFilter'])
|
|||||||
.factory('FormatDate', ['$filter',
|
.factory('FormatDate', ['$filter',
|
||||||
function ($filter) {
|
function ($filter) {
|
||||||
return function (dt) {
|
return function (dt) {
|
||||||
return $filter('date')(dt, 'MM/dd/yy HH:mm:ss');
|
return $filter('longDate')(dt);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
])
|
])
|
||||||
|
|||||||
6
awx/ui/static/js/shared/long-date.filter.js
Normal file
6
awx/ui/static/js/shared/long-date.filter.js
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
angular.module('longDateFilter', []).filter('longDate', function() {
|
||||||
|
return function(input) {
|
||||||
|
var date = moment(input).locale(navigator.language);
|
||||||
|
return date.format('l LTS');
|
||||||
|
};
|
||||||
|
});
|
||||||
@@ -300,7 +300,7 @@ angular.module('StreamWidget', ['RestServices', 'Utilities', 'StreamListDefiniti
|
|||||||
scope = generator.inject(form, { mode: 'edit', modal: true, related: false });
|
scope = generator.inject(form, { mode: 'edit', modal: true, related: false });
|
||||||
scope.changes = activity.changes_stringified;
|
scope.changes = activity.changes_stringified;
|
||||||
scope.user = ((activity.summary_fields.actor) ? activity.summary_fields.actor.username : 'system') +
|
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.operation = activity.description_nolink;
|
||||||
|
|
||||||
scope.formModalAction = function () {
|
scope.formModalAction = function () {
|
||||||
|
|||||||
Reference in New Issue
Block a user