/* * layer: Object representing the parent layer { id: .. name: ... url } * dependencies: array of dependency layer objects { id: .. name: ..} * title: optional override for title * body: optional override for body * addToProject: Whether to add layers to project on accept * successAdd: function to run on success */ function showLayerDepsModal(layer, dependencies, title, body, addToProject, successAdd) { if ($("#dependencies-modal").length === 0) { $.get(libtoaster.ctx.htmlUrl + "/layer_deps_modal.html", function(html){ $("body").append(html); setupModal(); }); } else { setupModal(); } function setupModal(){ if (title) { $('#dependencies-modal #title').text(title); } else { $('#dependencies-modal #title').text(layer.name); } if (body) { $("#dependencies-modal #body-text").html(body); } else { $("#dependencies-modal #layer-name").text(layer.name); } var deplistHtml = ""; for (var i = 0; i < dependencies.length; i++) { deplistHtml += "
  • "; } $('#dependencies-list').html(deplistHtml); $("#dependencies-modal").data("deps", dependencies); $('#dependencies-modal').modal('show'); /* Discard the old submission function */ $("#dependencies-modal-form").unbind('submit'); $("#dependencies-modal-form").submit(function (e) { e.preventDefault(); var selectedLayerIds = []; var selectedLayers = []; $("input[name='dependencies']:checked").each(function () { selectedLayerIds.push(parseInt($(this).val())); }); /* -1 is a special dummy Id which we use when the layer isn't yet in the * system, normally we would add the current layer to the selection. */ if (layer.id != -1) selectedLayerIds.push(layer.id); /* Find the selected layer objects from our original list */ for (var i = 0; i < selectedLayerIds.length; i++) { for (var j = 0; j < dependencies.length; j++) { if (dependencies[j].id == selectedLayerIds[i]) { selectedLayers.push(dependencies[j]); } } } if (addToProject) { libtoaster.editCurrentProject({ 'layerAdd': selectedLayerIds.join(",") }, function () { if (successAdd) { successAdd(selectedLayers); } }, function () { console.warn("Adding layers to project failed"); }); } else { successAdd(selectedLayers); } $('#dependencies-modal').modal('hide'); }); } }