diff --git a/platform/persistence/queue/bundle.json b/platform/persistence/queue/bundle.json index c05d023b30..c67e241e35 100644 --- a/platform/persistence/queue/bundle.json +++ b/platform/persistence/queue/bundle.json @@ -31,6 +31,12 @@ "key": "persistence-failure-dialog", "templateUrl": "templates/persistence-failure-dialog.html" } + ], + "controllers": [ + { + "key": "PersistenceFailureController", + "implementation": "PersistenceFailureController.js" + } ] } } \ No newline at end of file diff --git a/platform/persistence/queue/res/templates/persistence-failure-dialog.html b/platform/persistence/queue/res/templates/persistence-failure-dialog.html index 37f023bb40..ef2423a00c 100644 --- a/platform/persistence/queue/res/templates/persistence-failure-dialog.html +++ b/platform/persistence/queue/res/templates/persistence-failure-dialog.html @@ -1,3 +1,5 @@ + +
External changes have been made to the following objects: You may overwrite these objects, or discard your changes to keep @@ -22,3 +28,4 @@
+
\ No newline at end of file diff --git a/platform/persistence/queue/src/PersistenceFailureConstants.js b/platform/persistence/queue/src/PersistenceFailureConstants.js index b91286193d..a130a3b14b 100644 --- a/platform/persistence/queue/src/PersistenceFailureConstants.js +++ b/platform/persistence/queue/src/PersistenceFailureConstants.js @@ -2,5 +2,7 @@ define({ REVISION_ERROR_KEY: "revision", - OVERWRITE_KEY: "overwrite" + OVERWRITE_KEY: "overwrite", + TIMESTAMP_FORMAT: "YYYY-MM-DD HH:mm:ss\\Z", + UNKNOWN_USER: "unknown user" }); \ No newline at end of file diff --git a/platform/persistence/queue/src/PersistenceFailureController.js b/platform/persistence/queue/src/PersistenceFailureController.js new file mode 100644 index 0000000000..551e759c22 --- /dev/null +++ b/platform/persistence/queue/src/PersistenceFailureController.js @@ -0,0 +1,32 @@ +/*global define*/ + +define( + ['moment', './PersistenceFailureConstants'], + function (moment, Constants) { + "use strict"; + + /** + * Controller to support the template to be shown in the + * dialog shown for persistence failures. + */ + function PersistenceFailureController() { + return { + /** + * Format a timestamp for display in the dialog. + */ + formatTimestamp: function (timestamp) { + return moment.utc(timestamp) + .format(Constants.TIMESTAMP_FORMAT); + }, + /** + * Format a user name for display in the dialog. + */ + formatUsername: function (username) { + return username || Constants.UNKNOWN_USER; + } + }; + } + + return PersistenceFailureController; + } +); \ No newline at end of file diff --git a/platform/persistence/queue/test/PersistenceFailureControllerSpec.js b/platform/persistence/queue/test/PersistenceFailureControllerSpec.js new file mode 100644 index 0000000000..6592d880e3 --- /dev/null +++ b/platform/persistence/queue/test/PersistenceFailureControllerSpec.js @@ -0,0 +1,27 @@ +/*global define,Promise,describe,it,expect,beforeEach,waitsFor,jasmine*/ + + +define( + ["../src/PersistenceFailureController"], + function (PersistenceFailureController) { + "use strict"; + + describe("The persistence failure controller", function () { + var controller; + + beforeEach(function () { + controller = new PersistenceFailureController(); + }); + + it("converts timestamps to human-readable dates", function () { + expect(controller.formatTimestamp(402514331000)) + .toEqual("1982-10-03 17:32:11Z"); + }); + + it("provides default user names", function () { + expect(controller.formatUsername(undefined)) + .toEqual(jasmine.any(String)); + }); + }); + } +); \ No newline at end of file diff --git a/platform/persistence/queue/test/suite.json b/platform/persistence/queue/test/suite.json index 4e386cdde5..3c32be4155 100644 --- a/platform/persistence/queue/test/suite.json +++ b/platform/persistence/queue/test/suite.json @@ -1,5 +1,6 @@ [ "PersistenceFailureConstants", + "PersistenceFailureController", "PersistenceFailureDialog", "PersistenceFailureHandler", "PersistenceQueue",