diff options
author | Erik Johnston <erik@matrix.org> | 2014-10-31 17:48:05 +0000 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2014-10-31 17:48:05 +0000 |
commit | b63691f6e205b4e2d2a990ff04318e4daf731e2c (patch) | |
tree | aa7a80d740c7ba8f7f5ce9fe28dc32c523746d53 /webclient/app-directive.js | |
parent | Coturn's timestamps are in seconds, not milliseconds (diff) | |
parent | Bump version numbers and change log (diff) | |
download | synapse-b63691f6e205b4e2d2a990ff04318e4daf731e2c.tar.xz |
Merge branch 'release-v0.4.2' of github.com:matrix-org/synapse v0.4.2
Diffstat (limited to 'webclient/app-directive.js')
-rw-r--r-- | webclient/app-directive.js | 43 |
1 files changed, 42 insertions, 1 deletions
diff --git a/webclient/app-directive.js b/webclient/app-directive.js index 75283598ab..c1ba0af3a9 100644 --- a/webclient/app-directive.js +++ b/webclient/app-directive.js @@ -40,4 +40,45 @@ angular.module('matrixWebClient') } } }; -}]); \ No newline at end of file +}]) +.directive('asjson', function() { + return { + restrict: 'A', + require: 'ngModel', + link: function (scope, element, attrs, ngModelCtrl) { + function isValidJson(model) { + var flag = true; + try { + angular.fromJson(model); + } catch (err) { + flag = false; + } + return flag; + }; + + function string2JSON(text) { + try { + var j = angular.fromJson(text); + ngModelCtrl.$setValidity('json', true); + return j; + } catch (err) { + //returning undefined results in a parser error as of angular-1.3-rc.0, and will not go through $validators + //return undefined + ngModelCtrl.$setValidity('json', false); + return text; + } + }; + + function JSON2String(object) { + return angular.toJson(object, true); + }; + + //$validators is an object, where key is the error + //ngModelCtrl.$validators.json = isValidJson; + + //array pipelines + ngModelCtrl.$parsers.push(string2JSON); + ngModelCtrl.$formatters.push(JSON2String); + } + } +}); |