--- a/src/iconolab/static/iconolab/css/iconolab.css Wed Jul 27 10:55:21 2016 +0200
+++ b/src/iconolab/static/iconolab/css/iconolab.css Thu Jul 28 16:55:44 2016 +0200
@@ -17,6 +17,12 @@
margin-bottom: 15px;
}
+.highlight {
+ border: 1px solid orange;
+}
+
+.revision-proposal {background-color: #ECF0F1;}
+
.collection-home-btn{
margin-top: 5px;
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/iconolab/static/iconolab/js/iconolab-bundle/src/components/mergetool/MergeTool.vue Thu Jul 28 16:55:44 2016 +0200
@@ -0,0 +1,89 @@
+<script>
+
+import Typeahead from '../typeahead/Typeahead.vue'
+
+export default {
+
+ data () {
+ return {}
+ },
+
+ components: {
+ Typeahead: Typeahead
+ },
+
+ mounted () {
+
+ this.targetKeyMap = {
+ title: "proposal-title",
+ desc: "proposal-description",
+ frag: "proposal-fragment"
+ };
+
+ this.targetFieldTypeMap = {
+ title: "input",
+ desc: "input",
+ frag: "frag"
+ };
+
+ this.originalValues = {
+ title: "",
+ desc: "",
+ frag: ""
+ }
+
+ },
+
+ methods: {
+
+ pickProposition: function (event, sourceId, targetKey) {
+ var value = "";
+ var source = document.getElementById(sourceId);
+ var targetField = this.$refs[this.targetKeyMap[targetKey]];
+ var targetType = this.targetFieldTypeMap[targetKey];
+ if (!targetType) { throw new Error("A target type must be provided..."); }
+
+ if (targetType === "input") {
+ value = targetField.value;
+ targetField.value = source.value;
+ }
+
+ if (targetType === "frag") {
+ value = targetField.getAttribute("d");
+ var sourceValue = source.getAttribute("d");
+ var targetPathType = targetField.getAttribute("data-path-type");
+ targetField.setAttribute("d", sourceValue);
+
+ var pathType = source.getAttribute("data-path-type");
+ pathType = pathType || "FREE";
+ var fragmentField = this.$refs["fragment-field"];
+ fragmentField.value = sourceValue + ";" + pathType;
+ }
+
+ this.preserveOriginalValue(targetKey, value);
+ },
+
+ pickTag: function (event, refTag) {
+ var source = this.$refs[refTag];
+ var target = this.$refs['proposal-tags'];
+ this.preserveOriginalValue('proposal-tags', target.tags);
+ target.setTags(source.tags, true);
+ },
+
+ preserveOriginalValue: function (key, value) {
+ if (!this.originalValues[key]) {
+ this.originalValues[key] = value;
+ }
+ },
+
+ hightlightSource: function (source) {
+ source.className += "highlight";
+ },
+
+ save: function () {
+ alert("this is it ... ");
+ }
+ }
+}
+
+</script>
\ No newline at end of file
--- a/src/iconolab/static/iconolab/js/iconolab-bundle/src/components/taglist/Taglist.vue Wed Jul 27 10:55:21 2016 +0200
+++ b/src/iconolab/static/iconolab/js/iconolab-bundle/src/components/taglist/Taglist.vue Thu Jul 28 16:55:44 2016 +0200
@@ -17,6 +17,11 @@
this.normalizeSelectedTags();
},
+ reset: function () {
+ this.tags = [];
+ this.normalizeSelectedTags();
+ },
+
/* check tag already exists */
tagAlreadyExists (tag) {
var result = false;
--- a/src/iconolab/static/iconolab/js/iconolab-bundle/src/components/taglist/template.html Wed Jul 27 10:55:21 2016 +0200
+++ b/src/iconolab/static/iconolab/js/iconolab-bundle/src/components/taglist/template.html Thu Jul 28 16:55:44 2016 +0200
@@ -16,7 +16,7 @@
</ul>
<ul class="list-inline" v-show="readOnly">
- <li v-for="(tag, index) in tags" href="#">
+ <li v-for="(tag, index) in tags">
<i class="fa fa-tag"></i> <span class="label label-info">{{ tag.tag_label }}</span>
| précision <span class="badge">{{ tag.accuracy }}</span>
| pertinence <span class="badge">{{ tag.relevancy }}</span>
--- a/src/iconolab/static/iconolab/js/iconolab-bundle/src/components/typeahead/Typeahead.vue Wed Jul 27 10:55:21 2016 +0200
+++ b/src/iconolab/static/iconolab/js/iconolab-bundle/src/components/typeahead/Typeahead.vue Thu Jul 28 16:55:44 2016 +0200
@@ -31,10 +31,7 @@
mounted() {
this.taglist = this.$refs.taglist;
this.taglist.readOnly = this.readOnly;
- if (Array.isArray(this.tags) && this.tags.length) {
- this.taglist.setTags(this.tags);
- }
-
+ this.setTags(this.tags);
},
data() {
@@ -52,6 +49,15 @@
},
methods: {
+
+ setTags(tags, reset) {
+ tags = Array.isArray(tags) ? tags : [];
+ reset = (typeof reset === "boolean") ? reset : false;
+ if (reset) {
+ this.taglist.reset();
+ }
+ this.taglist.setTags(tags);
+ },
checkQuery () {
if (this.query.length === 0) {
--- a/src/iconolab/static/iconolab/js/iconolab-bundle/src/main.js Wed Jul 27 10:55:21 2016 +0200
+++ b/src/iconolab/static/iconolab/js/iconolab-bundle/src/main.js Thu Jul 28 16:55:44 2016 +0200
@@ -5,11 +5,13 @@
import Typeahead from './components/typeahead/Typeahead.vue'
import Cutout from './components/cutout'
import Zoomview from './components/zoomview/Zoomview.vue'
+import MergeTool from './components/mergetool/MergeTool.vue'
var iconolab = {
Cutout : Cutout,
VueComponents : {
Typeahead: Typeahead,
+ MergeTool: MergeTool,
Zoomview: Zoomview
}
};
--- a/src/iconolab/templates/iconolab/merge_revision.html Wed Jul 27 10:55:21 2016 +0200
+++ b/src/iconolab/templates/iconolab/merge_revision.html Thu Jul 28 16:55:44 2016 +0200
@@ -1,170 +1,247 @@
{% extends 'iconolab_base.html' %}
{% load staticfiles %}
-{% load thumbnail %}
+{% load thumbnail %}
+{% load iconolab_tags %}
{% block content %}
-<div id="annotation-wrapper" class="row" style="border: 1px solid gray">
- <div class="col-md-4">
- <h4>Révision courante
- <a id="merge-current-revision-info-icon" class="btn btn-default btn-xs btn-revision-info" title="Plus d'info"><i class="fa fa-question-circle-o" aria-hidden="true"></i></a>
- </h4>
- <div id="merge-current-revision-alert" class="alert alert-warning revision-info-alert">
- Cette révision est la révision actuellement publiée pour l'annotation.
- </div>
- <form class="form">
- <fieldset class="form-group">
- <label class="control-label">Titre:</label>
-
- <a class="btn btn-default btn-xs" title="Comparer avec proposition"><i class="fa fa-exchange" aria-hidden="true"></i></a>
- <a class="btn btn-default btn-xs" title="Copier vers proposition"><i class="fa fa-chevron-right" aria-hidden="true"></i></a>
- <input type="text" class="form-control"
- id="merge-current-revision-title"
- value="{{current_revision.title}}" readonly="readonly">
- </fieldset>
- <fieldset class="form-group">
- <label class="control-label">Description: </label>
-
- <a class="btn btn-default btn-xs" title="Comparer avec proposition"><i class="fa fa-exchange" aria-hidden="true"></i></a>
- <a class="btn btn-default btn-xs" title="Copier vers proposition"><i class="fa fa-chevron-right" aria-hidden="true"></i></a>
- <textarea class="form-control"
- id="merge-current-revision-description" readonly="readonly">{{ current_revision.description}}</textarea>
- </fieldset>
- <fieldset class="form-group">
- <label class="control-label">Tags: </label>
-
- <a class="btn btn-default btn-xs" title="Comparer avec proposition"><i class="fa fa-exchange" aria-hidden="true"></i></a>
- <a class="btn btn-default btn-xs" title="Copier vers proposition"><i class="fa fa-chevron-right" aria-hidden="true"></i></a>
- <typeahead id="merge-current-revision-tags" :tags="{{ current_tags_data }}"></typeahead>
- </fieldset>
- <label>Image: </label><br>
- <label>Commentaire de création: </label>
- <div class="alert alert-info" role="alert">
- <span class="glyphicon glyphicon-comment" aria-hidden="true"></span>
- <span class="sr-only">Info:</span>
- <b>Révision par {{ current_revision.author }} <br> le {{ current_revision.created|date:"d/m/Y" }} à {{ current_revision.created|time:"H:i" }}</b><br>
- <i class="fa fa-quote-left" aria-hidden="true"></i> {{ current_comment.comment }} <i class="fa fa-quote-right" aria-hidden="true"></i>
+
+
+
+<div id="merge-tool" class="row" style="border: 2px solid gray">
+ <mergetool inline-template>
+ <div class="wrapper">
+
+ <div class="col-md-4">
+ <h4>Révision courante
+ <a id="merge-current-revision-info-icon" class="btn btn-default btn-xs btn-revision-info" title="Plus d'info"><i class="fa fa-question-circle-o" aria-hidden="true"></i></a>
+ </h4>
+ <div id="merge-current-revision-alert" class="alert alert-warning revision-info-alert">
+ Cette révision est la révision actuellement publiée pour l'annotation.
+ </div>
+ <form class="form">
+ <fieldset class="form-group">
+ <label class="control-label">Titre:</label>
+
+ <a class="btn btn-default btn-xs" title="Comparer avec proposition"><i class="fa fa-exchange" aria-hidden="true"></i></a>
+ <a @click="pickProposition($event, 'merge-current-revision-title', 'title')" class="btn btn-default btn-xs" title="Copier vers proposition"><i class="fa fa-chevron-right" aria-hidden="true"></i></a>
+ <input type="text" class="form-control"
+ id="merge-current-revision-title"
+ value="{{current_revision.title}}" readonly="readonly">
+ </fieldset>
+ <fieldset class="form-group">
+ <label class="control-label">Description: </label>
+
+ <a class="btn btn-default btn-xs" title="Comparer avec proposition"><i class="fa fa-exchange" aria-hidden="true"></i></a>
+ <a @click="pickProposition($event, 'merge-current-revision-description', 'desc')" class="btn btn-default btn-xs" title="Copier vers proposition"><i class="fa fa-chevron-right" aria-hidden="true"></i></a>
+ <textarea class="form-control"
+ id="merge-current-revision-description" readonly="readonly">{{ current_revision.description}}</textarea>
+ </fieldset>
+ <fieldset class="form-group">
+ <label class="control-label">Tags: </label>
+
+ <a class="btn btn-default btn-xs" title="Comparer avec proposition"><i class="fa fa-exchange" aria-hidden="true"></i></a>
+ <a @click="pickTag($event, 'current-tags')" class="btn btn-default btn-xs" title="Copier vers proposition"><i class="fa fa-chevron-right" aria-hidden="true"></i></a>
+ <typeahead ref="current-tags" read-only="1" id="merge-current-revision-tags" :tags="{{ current_tags_data }}"></typeahead>
+ </fieldset>
+
+ <label>Image: </label>
+
+ <a class="btn btn-default btn-xs" title="Comparer avec proposition"><i class="fa fa-exchange" aria-hidden="true"></i></a>
+
+ <a @click="pickProposition($event, 'merge-current-revision-fragment', 'frag')" class="btn btn-default btn-xs" title="Copier vers proposition"><i class="fa fa-chevron-right" aria-hidden="true"></i></a>
+
+ <br>
+ <fieldset>
+ {% thumbnail image.media "100x100" crop=False as im %}
+ <svg width="{{ im.width }}" height="{{ im.height }}">
+ <image id="main-image" class="main-image" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="{{ im.url }}" x="0" y="0" width="{{ im.width }}" height="{{ im.height }}"></image>
+ <g transform="matrix({% transform_matrix im_width=im.width im_height=im.height max_x=100 max_y=100 %})">
+ <path data-path-type="{{ current_revision.fragment|path_type }}" id="merge-current-revision-fragment" d="{{ current_revision.fragment|clean_path }}" opacity="0.7" fill="orange"></path>
+ </g>
+ </svg>
+ {% endthumbnail %}
+ </fieldset>
+
+ <label>Commentaire de création: </label>
+ <div class="alert alert-info" role="alert">
+ <span class="glyphicon glyphicon-comment" aria-hidden="true"></span>
+ <span class="sr-only">Info:</span>
+ <b>Révision par {{ current_revision.author }} <br> le {{ current_revision.created|date:"d/m/Y" }} à {{ current_revision.created|time:"H:i" }}</b><br>
+ <i class="fa fa-quote-left" aria-hidden="true"></i> {{ current_comment.comment }} <i class="fa fa-quote-right" aria-hidden="true"></i>
+ </div>
+ </form>
</div>
- </form>
- </div>
- <div class="col-md-4">
- <h4>Révision parente
- <a id="merge-parent-revision-info-icon" class="btn btn-default btn-xs btn-revision-info" title="Plus d'info"><i class="fa fa-question-circle-o" aria-hidden="true"></i></a>
- </h4>
- <div id="merge-parent-revision-alert" class="alert alert-warning revision-info-alert">
- Cette révision est la révision à partir de laquelle l'annotation proposée a été créée.
-
- {% if parent_revision.revision_guid == current_revision.revision_guid %}<br><b>Note: Dans ce cas précis, cette révision est identique à la révision courante. </b>{% endif %}
+
+ <div class="col-md-4 revision-proposal">
+ <h4>Révision proposée</h4>
+ <form class="form" action="{% url 'annotation_merge' collection_name image_guid annotation_guid revision_guid %}" method="POST">
+ {% if merge_form.errors %}
+ <div id="errors" style="display: none;">
+ {% for field in merge_form %}
+ {% if field.errors %}
+ * {{ merge_form.name }}: {{ error|striptags }}
+ {% endif %}
+ {% endfor %}
+ </div>
+ {% endif %}
+ {% csrf_token %}
+ <fieldset class="form-group {% if merge_form.title.errors %}has-error{% endif %}">
+ <label class="control-label" for="id_{{ merge_form.title.name }}">Titre </label>
+ {% if merge_form.title.errors %}
+ <div class="alert alert-danger" role="alert">
+ <span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span>
+ <span class="sr-only">Error:</span>
+ {{ merge_form.title.errors | striptags }}
+ </div>
+ {% endif %}
+ <input ref="proposal-title" type="text" class="form-control"
+ name="{{ merge_form.title.name }}"
+ id="id_{{ merge_form.title.name }}" value="{% if merge_form.title.value %}{{ merge_form.title.value}}{% endif %}">
+ </fieldset>
+ <fieldset class="form-group {% if merge_form.description.errors %}has-error{% endif %}">
+ <label class="control-label" for="id_{{ merge_form.description.name }}">Description: </label>
+ {% if merge_form.description.errors %}
+ <div class="alert alert-danger" role="alert">
+ <span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span>
+ <span class="sr-only">Error:</span>
+ {{ form.description.errors | striptags }}
+ </div>
+ {% endif %}
+ <textarea ref="proposal-description" class="form-control"
+ name="{{ merge_form.description.name }}"
+ id="id_{{ merge_form.description.name }}" >{% if merge_form.description.value %}{{ merge_form.description.value}}{% endif %}</textarea>
+ </fieldset>
+ <fieldset class="form-group">
+ <label class="control-label" for="id_{{ form.tags.name }}">{{ merge_form.tags.label }}: </label>
+ <typeahead ref="proposal-tags" id="proposal-tags" read-only="1" :tags="{{ proposal_tags_data }}"></typeahead>
+ </fieldset>
+
+ <label class="control-label" for="id_{{ form.tags.name }}">Image: </label><br>
+
+ <div>
+ {% thumbnail image.media "100x100" crop=False as im %}
+ <svg width="{{ im.width }}" height="{{ im.height }}">
+ <image id="main-image" class="main-image" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="{{ im.url }}" x="0" y="0" width="{{ im.width }}" height="{{ im.height }}"></image>
+ <g transform="matrix({% transform_matrix im_width=im.width im_height=im.height max_x=100 max_y=100 %})">
+ <path data-path-type="{{ proposal_revision.fragment|path_type }}" ref="proposal-fragment" d="{{ proposal_revision.fragment|clean_path }}" opacity="0.7" fill="orange"></path>
+ </g>
+ </svg>
+ {% endthumbnail %}
+ </div>
+
+
+ <label>Commentaire de création: </label>
+ <div id="merge-proposal-revision-comment" class="alert alert-info" role="alert">
+ <span class="glyphicon glyphicon-comment" aria-hidden="true"></span>
+ <span class="sr-only">Info:</span>
+ <b>Révision par {{ proposal_revision.author }} <br> le {{ proposal_revision.created|date:"d/m/Y" }} à {{ proposal_revision.created|time:"H:i" }}</b><br>
+ <i class="fa fa-quote-left" aria-hidden="true"></i> {{ proposal_comment.comment }} <i class="fa fa-quote-right" aria-hidden="true"></i>
+ </div>
+ <fieldset class="form-group {% if merge_form.comment.errors %}has-error{% endif %}">
+ <label class="control-label" for="id_{{ merge_form.comment.name }}">Commentaire de révision:</label>
+ {% if merge_form.comment.errors %}
+ <div class="alert alert-danger" role="alert">
+ <span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span>
+ <span class="sr-only">Error:</span>
+ {{ merge_form.comment.errors | striptags }}
+ </div>
+ {% endif %}
+ <textarea class="form-control"
+ name="{{ merge_form.comment.name }}"
+ id="id_{{ merge_form.comment.name }}" ></textarea>
+ </fieldset>
+ <input ref="fragment-field" type="hidden" name="fragment" value="{{proposal_revision.fragment}}"></input>
+ <button type="submit" class="save btn btn-default btn-sm">Enregister</button>
+ <a class="btn btn-default btn-sm" href="{% url 'revision_detail' collection_name image_guid annotation_guid revision_guid %}" role="button">Retour</a>
+ <br><br>
+ </form>
+ </div>
+
+ <div class="col-md-4">
+ <h4>Révision parente</h4>
+ <a id="merge-parent-revision-info-icon" class="btn btn-default btn-xs btn-revision-info" title="Plus d'info"><i class="fa fa-question-circle-o" aria-hidden="true"></i></a>
+
+ <div id="merge-parent-revision-alert" class="alert alert-warning revision-info-alert">
+ Cette révision est la révision à partir de laquelle l'annotation proposée a été créée.
+
+ {% if parent_revision.revision_guid == current_revision.revision_guid %}<br><b>Note: Dans ce cas précis, cette révision est identique à la révision courante. </b>{% endif %}
+ </div>
+ <form class="form">
+ <fieldset class="form-group">
+ <label class="control-label">Titre:</label>
+
+ <a @click="pickProposition($event, 'merge-parent-revision-title', 'title')" class="btn btn-default btn-xs" title="Copier vers proposition"><i class="fa fa-chevron-left" aria-hidden="true"></i></a>
+ <a class="btn btn-default btn-xs" title="Comparer avec proposition"><i class="fa fa-exchange" aria-hidden="true"></i></a>
+ <input type="text" class="form-control"
+ id="merge-parent-revision-title"
+ value="{{parent_revision.title}}" readonly="readonly">
+ </fieldset>
+ <fieldset class="form-group">
+ <label class="control-label">Description: </label>
+
+ <a @click="pickProposition($event, 'merge-parent-revision-description', 'desc')" class="btn btn-default btn-xs" title="Copier vers proposition"><i class="fa fa-chevron-left" aria-hidden="true"></i></a>
+ <a class="btn btn-default btn-xs" title="Comparer avec proposition"><i class="fa fa-exchange" aria-hidden="true"></i></a>
+ <textarea id="merge-parent-revision-description" class="form-control"
+ readonly="readonly">{{ parent_revision.description}}</textarea>
+ </fieldset>
+ <fieldset class="form-group">
+ <label class="control-label">Tags: </label>
+
+ <a @click="pickTag($event, 'parent-tags')" class="btn btn-default btn-xs" title="Copier vers proposition"><i class="fa fa-chevron-left" aria-hidden="true"></i></a>
+ <a class="btn btn-default btn-xs" title="Comparer avec proposition"><i class="fa fa-exchange" aria-hidden="true"></i></a>
+ <typeahead ref="parent-tags" read-only="1" id="merge-parent-revision-tags" :tags="{{ current_tags_data }}"></typeahead>
+ </fieldset>
+
+ <fieldset>
+ <label>Image: </label>
+
+ <a @click="pickProposition($event, 'merge-parent-revision-fragment', 'frag')" class="btn btn-default btn-xs" title="Copier vers proposition"><i class="fa fa-chevron-left" aria-hidden="true"></i></a>
+ <a class="btn btn-default btn-xs" title="Comparer avec proposition"><i class="fa fa-exchange" aria-hidden="true"></i></a>
+ <br>
+ {% thumbnail image.media "100x100" crop=False as im %}
+ <svg width="{{ im.width }}" height="{{ im.height }}">
+ <image id="main-image" class="main-image" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="{{ im.url }}" x="0" y="0" width="{{ im.width }}" height="{{ im.height }}"></image>
+ <g transform="matrix({% transform_matrix im_width=im.width im_height=im.height max_x=100 max_y=100 %})">
+ <path data-path-type="{{ parent_revision.fragment|path_type }}" id="merge-parent-revision-fragment" d="{{ parent_revision.fragment|clean_path }}" opacity="0.7" fill="orange"></path>
+ </g>
+ </svg>
+ {% endthumbnail %}
+ </fieldset>
+
+ <label>Commentaire de création: </label>
+ <div id="merge-parent-revision-comment" class="alert alert-info" role="alert">
+ <span class="glyphicon glyphicon-comment" aria-hidden="true"></span>
+ <span class="sr-only">Info:</span>
+ <b>Révision par {{ parent_revision.author }} <br> le {{ parent_revision.created|date:"d/m/Y" }} à {{ parent_revision.created|time:"H:i" }}</b><br>
+ <i class="fa fa-quote-left" aria-hidden="true"></i> {{ parent_comment.comment }} <i class="fa fa-quote-right" aria-hidden="true"></i>
+ </div>
+ </form>
+ </div>
+
</div>
- <form class="form">
- <fieldset class="form-group">
- <label class="control-label">Titre:</label>
-
- <a class="btn btn-default btn-xs" title="Comparer avec proposition"><i class="fa fa-exchange" aria-hidden="true"></i></a>
- <a class="btn btn-default btn-xs" title="Copier vers proposition"><i class="fa fa-chevron-right" aria-hidden="true"></i></a>
- <input type="text" class="form-control"
- id="merge-current-revision-title"
- value="{{parent_revision.title}}" readonly="readonly">
- </fieldset>
- <fieldset class="form-group">
- <label class="control-label">Description: </label>
-
- <a class="btn btn-default btn-xs" title="Comparer avec proposition"><i class="fa fa-exchange" aria-hidden="true"></i></a>
- <a class="btn btn-default btn-xs" title="Copier vers proposition"><i class="fa fa-chevron-right" aria-hidden="true"></i></a>
- <textarea id="merge-parent-revision-description" class="form-control"
- readonly="readonly">{{ parent_revision.description}}</textarea>
- </fieldset>
- <fieldset class="form-group">
- <label class="control-label">Tags: </label>
-
- <a class="btn btn-default btn-xs" title="Comparer avec proposition"><i class="fa fa-exchange" aria-hidden="true"></i></a>
- <a class="btn btn-default btn-xs" title="Copier vers proposition"><i class="fa fa-chevron-right" aria-hidden="true"></i></a>
- <typeahead id="parent-comment" :tags="{{ current_tags_data }}"></typeahead>
- </fieldset>
- <label>Image: </label><br>
- <label>Commentaire de création: </label>
- <div id="merge-parent-revision-comment" class="alert alert-info" role="alert">
- <span class="glyphicon glyphicon-comment" aria-hidden="true"></span>
- <span class="sr-only">Info:</span>
- <b>Révision par {{ parent_revision.author }} <br> le {{ parent_revision.created|date:"d/m/Y" }} à {{ parent_revision.created|time:"H:i" }}</b><br>
- <i class="fa fa-quote-left" aria-hidden="true"></i> {{ parent_comment.comment }} <i class="fa fa-quote-right" aria-hidden="true"></i>
- </div>
- </form>
- </div>
- <div class="col-md-4">
- <h4>Révision proposée</h4>
- <form class="form" action="{% url 'annotation_merge' collection_name image_guid annotation_guid revision_guid %}" method="POST">
- {% if merge_form.errors %}
- <div id="errors" style="display: none;">
- {% for field in merge_form %}
- {% if field.errors %}
- * {{ merge_form.name }}: {{ error|striptags }}
- {% endif %}
- {% endfor %}
- </div>
- {% endif %}
- {% csrf_token %}
- <fieldset class="form-group {% if merge_form.title.errors %}has-error{% endif %}">
- <label class="control-label" for="id_{{ merge_form.title.name }}">Titre </label>
- {% if merge_form.title.errors %}
- <div class="alert alert-danger" role="alert">
- <span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span>
- <span class="sr-only">Error:</span>
- {{ merge_form.title.errors | striptags }}
- </div>
- {% endif %}
- <input type="text" class="form-control"
- name="{{ merge_form.title.name }}"
- id="id_{{ merge_form.title.name }}" value="{% if merge_form.title.value %}{{ merge_form.title.value}}{% endif %}">
- </fieldset>
- <fieldset class="form-group {% if merge_form.description.errors %}has-error{% endif %}">
- <label class="control-label" for="id_{{ merge_form.description.name }}">Description: </label>
- {% if merge_form.description.errors %}
- <div class="alert alert-danger" role="alert">
- <span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span>
- <span class="sr-only">Error:</span>
- {{ form.description.errors | striptags }}
- </div>
- {% endif %}
- <textarea class="form-control"
- name="{{ merge_form.description.name }}"
- id="id_{{ merge_form.description.name }}" >{% if merge_form.description.value %}{{ merge_form.description.value}}{% endif %}</textarea>
- </fieldset>
- <fieldset class="form-group">
- <label class="control-label" for="id_{{ form.tags.name }}">{{ merge_form.tags.label }}: </label>
- <typeahead :tags="{{ tags_data }}"></typeahead>
- </fieldset>
- <label class="control-label" for="id_{{ form.tags.name }}">Image: </label><br>
- <label>Commentaire de création: </label>
- <div id="merge-proposal-revision-comment" class="alert alert-info" role="alert">
- <span class="glyphicon glyphicon-comment" aria-hidden="true"></span>
- <span class="sr-only">Info:</span>
- <b>Révision par {{ proposal_revision.author }} <br> le {{ proposal_revision.created|date:"d/m/Y" }} à {{ proposal_revision.created|time:"H:i" }}</b><br>
- <i class="fa fa-quote-left" aria-hidden="true"></i> {{ proposal_comment.comment }} <i class="fa fa-quote-right" aria-hidden="true"></i>
- </div>
- <fieldset class="form-group {% if merge_form.comment.errors %}has-error{% endif %}">
- <label class="control-label" for="id_{{ merge_form.comment.name }}">Commentaire de révision:</label>
- {% if merge_form.comment.errors %}
- <div class="alert alert-danger" role="alert">
- <span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span>
- <span class="sr-only">Error:</span>
- {{ merge_form.comment.errors | striptags }}
- </div>
- {% endif %}
- <textarea class="form-control"
- name="{{ merge_form.comment.name }}"
- id="id_{{ merge_form.comment.name }}" ></textarea>
- </fieldset>
- <input type="hidden" name="tags" value="[]"></input>
- <input v-model="normalizePath" type="hidden" name="fragment" value=";FREE"></input>
- <button type="submit" class="save btn btn-default btn-sm">Enregister</button>
- <a class="btn btn-default btn-sm" href="{% url 'revision_detail' collection_name image_guid annotation_guid revision_guid %}" role="button">Retour</a>
- <br><br>
- </form>
- </div>
+ </mergetool>
</div>
{% endblock %}
{% block footer_js %}
<script>
+ new Vue({
+
+ el: "#merge-tool",
+ mounted () {
+ console.log(iconolab);
+ },
+ methods: {
+ click: function () {
+ alert("ssd");
+ }
+ },
+
+ components: {
+ 'mergetool': iconolab.VueComponents.MergeTool
+ }
+
+ });
+
$(".revision-info-alert").hide()
$(".btn-revision-info").click(function(event){
relatedAlertID = /([a-zA-Z\-]+)-info-icon/.exec($(this).attr("id"))[1]+"-alert";
--- a/src/iconolab/templatetags/iconolab_tags.py Wed Jul 27 10:55:21 2016 +0200
+++ b/src/iconolab/templatetags/iconolab_tags.py Thu Jul 28 16:55:44 2016 +0200
@@ -10,7 +10,7 @@
x_ratio = im_width / max_x
y_ratio = im_height / max_y
value_list = [x_ratio, 0, 0, y_ratio, 0, 0]
- matrix = ','.join([str(v) for v in value_list])
+ matrix = ",".join([str(v) for v in value_list])
except:
matrix = ""
@@ -18,9 +18,24 @@
@register.filter
def clean_path(path):
+ result = ""
if not len(path):
- return ""
+ return result
else:
- path_infos = path.split(';')
- return path_infos[0]
-
\ No newline at end of file
+ path_infos = path.split(";")
+ if len(path_infos) > 0 :
+ result = path_infos[0]
+ return result
+
+
+@register.filter
+def path_type(path):
+ result = ""
+ if not len(path):
+ return result
+ else:
+ path_infos = path.split(";")
+ if len(path_infos) > 1 :
+ result = path_infos[1]
+
+ return result
\ No newline at end of file