Skip to content
Snippets Groups Projects
Commit 1985cea9 authored by Sebastien's avatar Sebastien
Browse files

Add module auto registration

parent d7675fcf
No related branches found
No related tags found
1 merge request!98refresh the mosaic on annotation modification
......@@ -26,7 +26,6 @@
<script language="javascript" type='text/javascript' src='../shared/js/libs/fastdom.js'></script>
<script language="javascript" type='text/javascript' src='../shared/js/libs/moment-with-langs.min.js'></script>
<script language="javascript" type="text/javascript" src='../shared/js/shared.js'></script>
<script language="javascript" type="text/javascript" src='../shared/js/MosaicPanelWidget.js'></script>
<script language="javascript" type='text/javascript' src="../shared/php/rekallApp.js.php"></script>
......@@ -40,6 +39,7 @@
<script language="javascript" type='text/javascript' src='../shared/js/online-rekall/Tags.js'></script>
<script language="javascript" type='text/javascript' src='../shared/js/online-rekall/Timeline.js'></script>
<script language="javascript" type='text/javascript' src="../shared/js/online-rekall/RekallApplication.js"></script>
<script language="javascript" type="text/javascript" src='../shared/js/MosaicPanelWidget.js'></script>
<script language="javascript" type='text/javascript' src='../shared/js/iannix.js'></script>
<script language="javascript" type='text/javascript' src='../shared/js/online-script.js'></script>
......
function MosaicPanelWidget(opts){
((app) => {
function MosaicPanelWidget() {
const defaultOptions = {
htmlElement: $('#mosaic_tab'),
rekall: window.app.rekall.Rekall('rekall'),
getTagGradientColor: function (tag) {
var isOpera = !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0; // Opera 8.0+ (UA detection to detect Blink/v8-powered Opera)
var isFirefox = typeof InstallTrigger !== 'undefined'; // Firefox 1.0+
......@@ -23,10 +21,17 @@ function MosaicPanelWidget(opts){
getPreviewPath: function (tagOrDoc) {
Utils.getPreviewPath(tagOrDoc);
},
isOpen: false
htmlElement: function() { return $('#mosaic_tab') },
isOpen: false,
pubsub: function() {
return app.rekall.Rekall('pubSub');
},
rekall: function() {
return app.rekall.Rekall('rekall');
}
};
const localOptions = $.extend({}, defaultOptions, opts);
const localOptions = $.extend({}, defaultOptions);
const getUrl = function (tagOrDoc, path) {
if ('undefined' === typeof path) {
......@@ -45,7 +50,9 @@ function MosaicPanelWidget(opts){
let name = tagOrDoc.getMetadata("Rekall->Name");
let url = getUrl(tagOrDoc, path);
let div=$('<div/>').addClass('mosaic_item').on('click', function() {tagOrDoc.openPopupEdit();});
let div = $('<div/>').addClass('mosaic_item').on('click', function () {
tagOrDoc.openPopupEdit();
});
div.append($('<img/>').attr('src', url).attr('onerror', "this.src='../shared/css/images/img-document.png';"));
div.append($('<span/>').addClass('caption').text(name));
div.attr('data-rekall-labels', '');
......@@ -63,7 +70,7 @@ function MosaicPanelWidget(opts){
}
const emptyPanel = function () {
localOptions.htmlElement.html('');
localOptions.htmlElement().html('');
}
const fillPanel = function () {
......@@ -77,11 +84,11 @@ function MosaicPanelWidget(opts){
},
'mosaic_filter_item_all'
));
localOptions.htmlElement.append(filterdiv);
localOptions.htmlElement().append(filterdiv);
let labels = new Set();
// TODO is there a better way to iterate over tags or documents ?
for ( let [k, v] of Object.entries(localOptions.rekall.sortings.colors.categories)) {
let categoryName = localOptions.rekall.sortings.colors.getCategoryName(k)
for (let [k, v] of Object.entries(localOptions.rekall().sortings.colors.categories)) {
let categoryName = localOptions.rekall().sortings.colors.getCategoryName(k)
let category = $('<div/>').addClass('mosaic_category').css('background', localOptions.getTagGradientColor(v));
let grid = $('<div/>').addClass('mosaic_category_grid');
......@@ -102,10 +109,12 @@ function MosaicPanelWidget(opts){
grid.append(createHtmlElementForTagOrDoc(v.tags[i]));
let current_labels = v.tags[i].getMetadata('Rekall->Labels');
if (current_labels && current_labels != '') {
current_labels.split(';').forEach(l => {if (l != '') labels.add(l)});
current_labels.split(';').forEach(l => {
if (l != '') labels.add(l)
});
}
}
localOptions.htmlElement.append(category);
localOptions.htmlElement().append(category);
}
labels.forEach(l => {
......@@ -145,20 +154,31 @@ function MosaicPanelWidget(opts){
if (localOptions.isOpen)
return;
localOptions.rekall.timeline.pause();
localOptions.rekall().timeline.pause();
fillPanel();
localOptions.htmlElement.show();
localOptions.updateObserver = window.app.rekall.Rekall('pubSub').subscribe('popupEdit.updated', this.refresh)
localOptions.htmlElement().show();
localOptions.updateObserver = localOptions.pubsub().subscribe('popupEdit.updated', this.refresh);
localOptions.isOpen = true;
},
hide: function () {
window.app.rekall.Rekall('pubSub').unsubscribe(localOptions.updateObserver);
if (!localOptions.isOpen)
return;
localOptions.pubsub().unsubscribe(localOptions.updateObserver);
localOptions.updateObserver = undefined;
localOptions.htmlElement.hide();
localOptions.htmlElement().hide();
emptyPanel();
localOptions.isOpen = false;
},
refresh: function () {
emptyPanel();
fillPanel();
}
};
}
app.rekall.Rekall('mosaicWidget', MosaicPanelWidget());
}
)(window.app = window.app || {})
\ No newline at end of file
......@@ -12,7 +12,6 @@ window.onload = function() {
pubSub.subscribe('open_paste_modal', openPasteModal);
pubSub.subscribe('close_paste_modal', closePasteModal);
pubSub.subscribe('updated.project.name', onUpdatedProjectName);
window.app.rekall.Rekall('mosaicWidget', new MosaicPanelWidget())
};
$(document).ready(function() {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment