blob: 797f46539e18114dcb3f0f839a78b27c33238572 [file] [log] [blame]
// Copyright (c) 2000-2019 Ericsson Telecom AB //
// All rights reserved. This program and the accompanying materials are made available under the //
// terms of the Eclipse Public License v2.0 which accompanies this distribution, and is available at //
// https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html //
///////////////////////////////////////////////////////////////////////////////////////////////////////
function PlaylistEditor_ViewModel(p_model) {
var v_model = p_model;
var v_dsRestAPI = v_model.getDsRestAPI();
var v_fileHandler = v_model.getFileHandler();
var v_binder;
var v_viewmodels = {};
var v_help;
this.elementEditorViewmodel = new PlaylistEditor_ElementEditor_ViewModel();
this.filterElementEditorViewmodel = new PlaylistEditor_FilterElementEditor_ViewModel();
this.init = function(p_callback) {
function helpArrived(ok, help) {
v_help = new HelpTreeBuilder(help).getHelpTree();
p_callback(true);
}
v_model.getDsRestAPI().getHelp(helpArrived);
};
this.setBinder = function(binder) {
v_binder = binder;
};
this.newPlaylist = v_model.newPlaylist;
this.deletePlaylist = v_model.deletePlaylist;
this.loadPlaylist = v_model.loadPlaylist;
this.savePlaylist = v_model.savePlaylist;
this.savePlaylistAs = function(group, name, callback) {
v_model.savePlaylistAs(group + '/' + name, callback);
};
this.currentlyEdited = v_model.currentlyEdited;
this.listPlaylists = function(callback) {
v_model.listPlaylists(function(ok, list) {
callback(createOptionsFromList(list))
});
}
this.listGroups = function(callback) {
v_model.listGroups(function(ok, list) {
callback(createOptionsFromList(list))
});
}
this.playlistExists = function(group, name, callback) {
v_model.playlistExists(group + '/' + name, callback);
};
this.getEditorViewmodels = function() {
v_viewmodels = {};
var models = v_model.getEditorModels();
for (var id in models) {
v_viewmodels[id] = new PlaylistEditor_PlaylistItem_ViewModel(models[id], v_help);
}
return v_viewmodels;
};
this.createEditorViewmodel = function() {
var obj = v_model.createEditorModel();
v_viewmodels[obj.id] = new PlaylistEditor_PlaylistItem_ViewModel(obj.model, v_help);
return {
"id": obj.id,
"viewmodel": v_viewmodels[obj.id]
};
};
this.deleteEditorViewmodel = function(id) {
v_model.deleteEditorModel(id);
delete v_viewmodels[id];
};
this.playlistConnection = v_model.playlistConnection;
this.getHelp = function() {
return v_help;
};
this.loadFile = v_model.getFileHandler().loadFile;
function createOptionsFromList(list) {
if (list == undefined) {
list = [];
}
var options = [];
for (var i = 0; i < list.length; ++i) {
options.push({
"text": list[i],
"value": list[i]
});
}
return options;
}
}