"use strict"; function projectPageInit(ctx) { var layerAddInput = $("#layer-add-input"); var layersInPrjList = $("#layers-in-project-list"); var layerAddBtn = $("#add-layer-btn"); var machineChangeInput = $("#machine-change-input"); var machineChangeBtn = $("#machine-change-btn"); var machineForm = $("#select-machine-form"); var machineChangeFormToggle = $("#change-machine-toggle"); var machineNameTitle = $("#project-machine-name"); var machineChangeCancel = $("#cancel-machine-change"); var freqBuildBtn = $("#freq-build-btn"); var freqBuildList = $("#freq-build-list"); var releaseChangeFormToggle = $("#release-change-toggle"); var releaseTitle = $("#project-release-title"); var releaseForm = $("#change-release-form"); var releaseModal = $("#change-release-modal"); var cancelReleaseChange = $("#cancel-release-change"); var currentLayerAddSelection; var currentMachineAddSelection = ""; var urlParams = libtoaster.parseUrlParams(); libtoaster.getProjectInfo(libtoaster.ctx.projectPageUrl, function(prjInfo){ updateProjectLayers(prjInfo.layers); updateFreqBuildRecipes(prjInfo.freqtargets); updateProjectRelease(prjInfo.release); updateProjectReleases(prjInfo.releases, prjInfo.release); /* If we're receiving a machine set from the url and it's different from * our current machine then activate set machine sequence. */ if (urlParams.hasOwnProperty('setMachine') && urlParams.setMachine !== prjInfo.machine.name){ machineChangeInput.val(urlParams.setMachine); machineChangeBtn.click(); } else { updateMachineName(prjInfo.machine.name); } /* Now we're really ready show the page */ $("#project-page").show(); }); (function notificationRequest(){ if (urlParams.hasOwnProperty('notify')){ switch (urlParams.notify){ case 'new-project': $("#project-created-notification").show(); break; case 'layer-imported': layerImportedNotification(); break; case 'layer-deleted': layerDeletedNotification(); default: break; } } })(); /* Layer deleted notification */ function layerDeletedNotification(){ var layer = $.cookie("layer-deleted"); if (!layer) return; var message = "You have deleted 1 layer from your "; message += "project: " + layer + ""; libtoaster.showChangeNotification(message); $.removeCookie("layer-deleted", { path: "/"}); } /* Layer imported notification */ function layerImportedNotification(){ var imported = $.cookie("layer-imported-alert"); var message = "Layer imported"; if (!imported) return; else imported = JSON.parse(imported); if (imported.deps_added.length === 0) { message = "You have imported "+imported.imported_layer.name+" and added it to your project."; } else { var links = ""+imported.imported_layer.name+", "; imported.deps_added.map (function(item, index){ links +=''+item.name+''; /*If we're at the last element we don't want the trailing comma */ if (imported.deps_added[index+1] !== undefined) links += ', '; }); /* Length + 1 here to do deps + the imported layer */ message = 'You have imported '+imported.imported_layer.name+' and added '+(imported.deps_added.length+1)+' layers to your project: '+links+''; } libtoaster.showChangeNotification(message); $.removeCookie("layer-imported-alert", { path: "/"}); } /* Add/Rm layer functionality */ libtoaster.makeTypeahead(layerAddInput, libtoaster.ctx.layersTypeAheadUrl, { include_added: "false" }, function(item){ currentLayerAddSelection = item; layerAddBtn.removeAttr("disabled"); }); layerAddInput.keyup(function() { if ($(this).val().length == 0) { layerAddBtn.attr("disabled", "disabled") } }); layerAddBtn.click(function(e){ e.preventDefault(); var layerObj = currentLayerAddSelection; addRmLayer(layerObj, true); /* Reset the text input */ layerAddInput.val(""); /* Disable the add layer button*/ layerAddBtn.attr("disabled", "disabled"); }); function addRmLayer(layerObj, add){ libtoaster.addRmLayer(layerObj, add, function(layerDepsList){ if (add){ updateProjectLayers([layerObj]); updateProjectLayers(layerDepsList); } /* Show the alert message */ var message = libtoaster.makeLayerAddRmAlertMsg(layerObj, layerDepsList, add); libtoaster.showChangeNotification(message); }); } function updateProjectLayers(layers){ /* No layers to add */ if (layers.length === 0){ updateLayersCount(); return; } for (var i in layers){ var layerObj = layers[i]; var projectLayer = $("