Mercurial > hg > OKFNAnnotator
view annotator_files/lib/plugin/tags.js @ 4:6979313586cf
new version of annotator.
author | casties |
---|---|
date | Mon, 27 Aug 2012 19:05:38 +0200 |
parents | 6356e78ccf5c |
children |
line wrap: on
line source
// Generated by CoffeeScript 1.3.3 var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; Annotator.Plugin.Tags = (function(_super) { __extends(Tags, _super); function Tags() { this.setAnnotationTags = __bind(this.setAnnotationTags, this); this.updateField = __bind(this.updateField, this); return Tags.__super__.constructor.apply(this, arguments); } Tags.prototype.options = { parseTags: function(string) { var tags; string = $.trim(string); tags = []; if (string) { tags = string.split(/\s+/); } return tags; }, stringifyTags: function(array) { return array.join(" "); } }; Tags.prototype.field = null; Tags.prototype.input = null; Tags.prototype.pluginInit = function() { if (!Annotator.supported()) { return; } this.field = this.annotator.editor.addField({ label: Annotator._t('Add some tags here') + '\u2026', load: this.updateField, submit: this.setAnnotationTags }); this.annotator.viewer.addField({ load: this.updateViewer }); if (this.annotator.plugins.Filter) { this.annotator.plugins.Filter.addFilter({ label: Annotator._t('Tag'), property: 'tags', isFiltered: Annotator.Plugin.Tags.filterCallback }); } return this.input = $(this.field).find(':input'); }; Tags.prototype.parseTags = function(string) { return this.options.parseTags(string); }; Tags.prototype.stringifyTags = function(array) { return this.options.stringifyTags(array); }; Tags.prototype.updateField = function(field, annotation) { var value; value = ''; if (annotation.tags) { value = this.stringifyTags(annotation.tags); } return this.input.val(value); }; Tags.prototype.setAnnotationTags = function(field, annotation) { return annotation.tags = this.parseTags(this.input.val()); }; Tags.prototype.updateViewer = function(field, annotation) { field = $(field); if (annotation.tags && $.isArray(annotation.tags) && annotation.tags.length) { return field.addClass('annotator-tags').html(function() { var string; return string = $.map(annotation.tags, function(tag) { return '<span class="annotator-tag">' + Annotator.$.escape(tag) + '</span>'; }).join(' '); }); } else { return field.remove(); } }; return Tags; })(Annotator.Plugin); Annotator.Plugin.Tags.filterCallback = function(input, tags) { var keyword, keywords, matches, tag, _i, _j, _len, _len1; if (tags == null) { tags = []; } matches = 0; keywords = []; if (input) { keywords = input.split(/\s+/g); for (_i = 0, _len = keywords.length; _i < _len; _i++) { keyword = keywords[_i]; if (tags.length) { for (_j = 0, _len1 = tags.length; _j < _len1; _j++) { tag = tags[_j]; if (tag.indexOf(keyword) !== -1) { matches += 1; } } } } } return matches === keywords.length; };