Files
DiceCloud/app/client/views/library/itemLibrary/itemLibrary.js
2018-10-02 15:43:10 +02:00

95 lines
2.5 KiB
JavaScript

const librarySubs = new SubsManager();
Template.itemLibrary.onCreated(function(){
this.selectedTab = new ReactiveVar("0");
this.librariesOpen = new ReactiveVar([]);
this.readyDict = new ReactiveDict();
this.autorun(() => {
// Subscribe to all open libraries
_.each(this.librariesOpen.get(), (libraryId) => {
var handle = librarySubs.subscribe("libraryItems", libraryId);
this.autorun(() => {
this.readyDict.set(libraryId, handle.ready());
});
});
});
});
Template.itemLibrary.helpers({
selectedTab(){
return Template.instance().selectedTab.get();
},
libraries(){
let userId = Meteor.userId();
return Libraries.find({
$or: [
{readers: userId},
{writers: userId},
{owner: userId},
],
});
},
libraryItems(){
return LibraryItems.find({
library: this._id
},{
sort: {name: 1}
});
},
ready(libraryId){
return Template.instance().readyDict.get(libraryId);
},
isOpen(libraryId){
const librariesOpen = Template.instance().librariesOpen.get();
return _.contains(librariesOpen, libraryId);
},
});
Template.itemLibrary.events({
"click .library-header": function(event, template){
let libs = template.librariesOpen.get();
const libraryId = this._id;
// Toggle whether this key is in the array or not
if (_.contains(libs, libraryId)){
libs = _.without(libs, libraryId);
} else {
libs.push(libraryId);
}
template.librariesOpen.set(libs);
},
"click .editLibrary": function(event, instance){
event.stopPropagation();
var libraryId = this._id;
pushDialogStack({
template: "libraryDialog",
data: {libraryId},
element: event.currentTarget.parentElement.parentElement,
returnElement: () => instance.find(`.library-header[data-id='${libraryId}']`),
});
},
"click .addItem": function(event, instance){
event.stopPropagation();
var libraryId = this._id;
var itemId = LibraryItems.insert({
name: "New Library Item",
library: libraryId,
});
pushDialogStack({
template: "libraryItemDialog",
data: {itemId},
element: event.currentTarget,
returnElement: () => instance.find(`.item-name[data-id='${itemId}']`),
});
},
"click .item-name": function(event, instance){
event.stopPropagation();
var itemId = this._id;
pushDialogStack({
template: "libraryItemDialog",
data: {itemId},
element: event.currentTarget,
returnElement: () => instance.find(`.item-name[data-id='${itemId}']`),
});
},
})