ebac854da8
* The MongoDB/Mongoose data storage is removed in favor of Sequelize. This abstracts over SQLite or RDBMs like PostgreSQL and MSSQL. The default is SQLite, which significantly simplifies deployments in end-user environments. * As Spacedeck now has no more mandatory server dependencies, we can wrap it in Electron and ship it as a desktop application. * Removes docker-compose.yml * First version of import UI
168 lines
4.2 KiB
JavaScript
168 lines
4.2 KiB
JavaScript
|
|
function boot_spacedeck() {
|
|
console.log("booting...");
|
|
// custom directives
|
|
|
|
setup_directives();
|
|
setup_whiteboard_directives();
|
|
setup_exclusive_audio_video_playback();
|
|
|
|
var data = {
|
|
active_view: null,
|
|
online: true,
|
|
was_offline: false,
|
|
account: "profile",
|
|
logged_in: false,
|
|
guest_nickname: null,
|
|
user: {},
|
|
|
|
active_profile: null,
|
|
active_profile_spaces: [],
|
|
active_dropdown: "none",
|
|
|
|
creating_user: false,
|
|
signup_error: null,
|
|
login_error: null,
|
|
password_reset_send: false,
|
|
password_reset_error: null,
|
|
password_reset_email: null,
|
|
password_reset_confirm_error: null,
|
|
reset_token: null,
|
|
|
|
global_spinner: false
|
|
};
|
|
|
|
var methods = {
|
|
activate_dropdown: function(id, evt) {
|
|
if (this.active_dropdown == id) {
|
|
this.active_dropdown = "none";
|
|
return;
|
|
}
|
|
this.active_dropdown = id;
|
|
},
|
|
|
|
close_dropdown: function(evt) {
|
|
if (evt) {
|
|
if ($(evt.target).parents(".dropdown").length) {
|
|
return;
|
|
}
|
|
}
|
|
|
|
this.active_dropdown = "none";
|
|
},
|
|
|
|
translate: function() {
|
|
return i18n.t(arguments)
|
|
},
|
|
};
|
|
|
|
// mix in functions from all Spacedeck modules
|
|
|
|
methods = _.extend(methods, SpacedeckUsers.methods);
|
|
methods = _.extend(methods, SpacedeckWebsockets.methods);
|
|
methods = _.extend(methods, SpacedeckSpaces.methods);
|
|
methods = _.extend(methods, SpacedeckTeams.methods);
|
|
methods = _.extend(methods, SpacedeckBoardArtifacts);
|
|
methods = _.extend(methods, SpacedeckFormatting);
|
|
methods = _.extend(methods, SpacedeckSections.methods);
|
|
methods = _.extend(methods, SpacedeckAvatars.methods);
|
|
methods = _.extend(methods, SpacedeckModals.methods);
|
|
methods = _.extend(methods, SpacedeckAccount.methods);
|
|
methods = _.extend(methods, SpacedeckRoutes);
|
|
|
|
data = _.extend(data, SpacedeckUsers.data);
|
|
data = _.extend(data, SpacedeckAccount.data);
|
|
data = _.extend(data, SpacedeckWebsockets.data);
|
|
data = _.extend(data, SpacedeckSpaces.data);
|
|
data = _.extend(data, SpacedeckTeams.data);
|
|
data = _.extend(data, SpacedeckSections.data);
|
|
data = _.extend(data, SpacedeckAvatars.data);
|
|
data = _.extend(data, SpacedeckModals.data);
|
|
|
|
Vue.filter('select', function (array, key, operant, value) {
|
|
var res = _.filter(array, function(e){
|
|
var test = eval(e[key] + " " + operant + " " + value);
|
|
return test;
|
|
});
|
|
return res;
|
|
});
|
|
|
|
Vue.filter('date', function (value, format) {
|
|
var day = moment(value);
|
|
return day.format(format).replace("\'", "").replace("\'", "");
|
|
});
|
|
|
|
Vue.filter('exceptFilter', function (array, key) {
|
|
var filtered = _.filter(array, function(i){
|
|
return i[key]==undefined;
|
|
});
|
|
return filtered;
|
|
});
|
|
|
|
Vue.filter('size', function (array) {
|
|
return array.length;
|
|
});
|
|
|
|
Vue.filter('empty?', function (array) {
|
|
return array.length==0;
|
|
});
|
|
|
|
Vue.filter('urls_to_links', function (text) {
|
|
return urls_to_links(text);
|
|
});
|
|
|
|
window.spacedeck = new Vue({
|
|
el: "body",
|
|
data: data,
|
|
methods: methods
|
|
});
|
|
|
|
var lang = "en";
|
|
|
|
window.refreshLocale = function() {
|
|
if (spacedeck && spacedeck.user && spacedeck.user.preferences) {
|
|
lang = spacedeck.user.preferences.language || "en";
|
|
} else if (window.browser_lang) {
|
|
lang = window.browser_lang;
|
|
}
|
|
}
|
|
|
|
window.refreshLocale();
|
|
|
|
i18n.init({ lng: lang, resStore: window.locales }, function(err, t) {
|
|
console.log("i18n initialized: "+lang);
|
|
});
|
|
|
|
window.__ = function() {
|
|
var params = Array.prototype.slice.call(arguments);
|
|
params.shift();
|
|
window.refreshLocale();
|
|
return i18n.t(arguments[0], { postProcess: "sprintf", sprintf: params });
|
|
};
|
|
|
|
spacedeck.setup_section_module();
|
|
spacedeck.load_user(function() {
|
|
spacedeck.route();
|
|
},function() {
|
|
spacedeck.route();
|
|
});
|
|
|
|
window.addEventListener("paste", function(evt) {
|
|
if (evt.target.nodeName=="INPUT" || (evt.target.nodeName=="TEXTAREA" && evt.target.id!="clipboard-ta") || evt.target.contenteditable) {
|
|
// cancel
|
|
return;
|
|
}
|
|
if (spacedeck.active_space) {
|
|
spacedeck.handle_section_paste(evt);
|
|
}
|
|
});
|
|
}
|
|
|
|
document.addEventListener("DOMContentLoaded",function() {
|
|
window.smoke = smoke;
|
|
window.alert = smoke.alert;
|
|
|
|
FastClick.attach(document.body);
|
|
boot_spacedeck();
|
|
});
|