diff --git a/app/coffee/modules/base/tags.coffee b/app/coffee/modules/base/tags.coffee new file mode 100644 index 00000000..314a2076 --- /dev/null +++ b/app/coffee/modules/base/tags.coffee @@ -0,0 +1,50 @@ +### +# Copyright (C) 2014 Andrey Antukh +# Copyright (C) 2014 Jesús Espino Garcia +# Copyright (C) 2014 David Barragán Merino +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +# File: modules/base/tags.coffee +### + +taiga = @.taiga + +# Directive that parses/format tags inputfield. + +TagsDirective = -> + formatter = (v) -> + if _.isArray(v) + return v.join(", ") + return "" + + parser = (v) -> + return [] if not v + result = _(v.split(",")).map((x) -> _.str.trim(x)) + .map((x) -> x.replace(/\s+/, "-")) + + return result.value() + + link = ($scope, $el, $attrs, $ctrl) -> + $ctrl.$formatters.push(formatter) + $ctrl.$parsers.push(parser) + + return { + require: "ngModel" + link: link + } + + +module = angular.module("taigaBase") +module.directive("tgTags", TagsDirective)