You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
202 lines
4.7 KiB
202 lines
4.7 KiB
function onTemplateLoadedCallback(app) {
|
|
/*
|
|
$("button[role=addObject]").click(function() {
|
|
createObject(app);
|
|
});
|
|
*/
|
|
}
|
|
|
|
function reloadApp(app) {
|
|
$("#objects").empty();
|
|
var count = parseInt(app.parameters.value("count"));
|
|
|
|
for(var i=0 ; i<count ; i++) {
|
|
var objectUi = $(Mustache.render(objectTemplate, window));
|
|
objectUi.draggable({
|
|
containment: "#scene",
|
|
scroll: false,
|
|
revert: app.onEdit ? false : "invalid"
|
|
});
|
|
$("#objects").append(objectUi);
|
|
}
|
|
|
|
if(!app.onEdit) {
|
|
$("#box").droppable({
|
|
hoverClass: "ui-state-hover",
|
|
activeClass: "ui-state-active",
|
|
drop: function(event, ui) {
|
|
ui.draggable.addClass("inBox");
|
|
}
|
|
});
|
|
$("#box").click(function(){
|
|
$(this).addClass("onReset");
|
|
var objects = $("#objects .inBox");
|
|
var n = objects.size();
|
|
if(n==0) {
|
|
$(this).removeClass("onReset");
|
|
}else {
|
|
objects.each(function(i, o){
|
|
$(this).removeClass("inBox");
|
|
$(this).addClass("hasBeenInBox");
|
|
$(this).animate({
|
|
left: null,
|
|
top: null
|
|
}, function(){
|
|
n--;
|
|
if(n==0) {
|
|
$("#box").removeClass("onReset");
|
|
}
|
|
});
|
|
});
|
|
}
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Ce code est pour la version objet personnalisable.
|
|
* L'app a été simplifié
|
|
*/
|
|
/*
|
|
var objects = app.parameters.value("Objects");
|
|
|
|
if(objects !== undefined) {
|
|
objects = objects.split(",");
|
|
for(var i=0 ; i<objects.length ; i++) {
|
|
var id = objects[i];
|
|
objectForGUID(app, id, getPositionFor(app.parameters, id));
|
|
}
|
|
}
|
|
|
|
if(!app.onEdit) {
|
|
$("#box").droppable({
|
|
hoverClass: "ui-state-hover",
|
|
activeClass: "ui-state-active",
|
|
drop: function(event, ui) {
|
|
ui.draggable.addClass("inBox");
|
|
}
|
|
});
|
|
$("#box").click(function(){
|
|
$("#objects .inBox").each(function(i, o){
|
|
$(this).removeClass("inBox");
|
|
var position = getPositionFor(app.parameters, $(this).attr("id"));
|
|
log(position);
|
|
$(this).animate({
|
|
left: position.left,
|
|
top: position.top
|
|
});
|
|
});
|
|
});
|
|
}
|
|
*/
|
|
}
|
|
|
|
/**
|
|
* Ce code est pour la version objet personnalisable.
|
|
* L'app a été simplifié
|
|
*/
|
|
/*
|
|
function getIdFor(i) {
|
|
return "o"+i;
|
|
}
|
|
|
|
function addObjectWithId(app, id) {
|
|
var objects = app.parameters.value("Objects");
|
|
app.parameters.value("Objects", objects === undefined ? id : objects+","+id);
|
|
}
|
|
|
|
function removeObjectWithId(app, id) {
|
|
var objects = app.parameters.value("Objects");
|
|
objects = objects.split(",");
|
|
for(var i=0 ; i<objects.length ; i++) {
|
|
if(id === objects[i]) {
|
|
objects.splice(i, 1);
|
|
break;
|
|
}
|
|
}
|
|
app.parameters.value("Objects", objects.join(","));
|
|
}
|
|
|
|
function createObject(app, duplicateID) {
|
|
var id = app.utils.guid();
|
|
addObjectWithId(app, id);
|
|
|
|
var last = $("#objects>div:last");
|
|
var left = 0;
|
|
var top = 0;
|
|
|
|
if(last.size() > 0) {
|
|
left = parseInt((last.css("left") || "0").replace("px","")) + 10;
|
|
top = parseInt((last.css("top") || "0").replace("px",""));
|
|
|
|
var count = last.parent().find(">div").size();
|
|
log(last.parent().width() +"-"+ (left+last.width() * count));
|
|
if(last.parent().width() <= (left+last.width() * count)){
|
|
left = -last.width() * count;
|
|
top += last.height() + 10;
|
|
}
|
|
}
|
|
|
|
objectForGUID(app, id, {left: left, top: top});
|
|
|
|
//TODO Duplication : Recupérer les images du dupliqué
|
|
}
|
|
|
|
function objectForGUID(app, guid, position) {
|
|
window.object = guid;
|
|
var objectUi = $(Mustache.render(objectTemplate, window));
|
|
objectUi.css("left", position.left);
|
|
objectUi.css("top", position.top);
|
|
objectUi.draggable({
|
|
containment: "#scene",
|
|
scroll: false,
|
|
revert: app.onEdit ? false : "invalid"
|
|
});
|
|
$("#objects").append(objectUi);
|
|
|
|
if(app.onEdit) {
|
|
objectUi.bind("dragstop", function(event, ui){
|
|
var id = ui.helper.attr("id");
|
|
log(id);
|
|
var left = ui.position.left ;
|
|
var top = ui.position.top;
|
|
log(left+"-"+top);
|
|
setPositionFor(app.parameters, id, ui.position);
|
|
});
|
|
objectUi.find("button[role=remove]").click(function(){
|
|
removeObjectWithId(app, guid);
|
|
objectUi.remove();
|
|
});
|
|
objectUi.find("button[role=duplicate]").click(function(){
|
|
createObject(app, guid);
|
|
});
|
|
}
|
|
}
|
|
|
|
function getPositionFor(parameters, id) {
|
|
var left = parameters.value("Object#"+id+"left");
|
|
var top = parameters.value("Object#"+id+"top");
|
|
if(left === undefined)
|
|
left = 0;
|
|
if(top === undefined)
|
|
top = 0;
|
|
return {left: parseInt(left), top: parseInt(top)};
|
|
}
|
|
|
|
function setPositionFor(parameters, id, position) {
|
|
parameters.value("Object#"+id+"left", position.left);
|
|
parameters.value("Object#"+id+"top", position.top);
|
|
}
|
|
*/
|
|
|
|
function reloadCallback(parameter) {
|
|
reloadApp(this);
|
|
}
|
|
|
|
$(document).ready(function(){
|
|
var callbacks = {
|
|
onTemplatesLoaded: onTemplateLoadedCallback,
|
|
onEdit: reloadApp,
|
|
onView: reloadApp
|
|
};
|
|
init(reloadCallback, {toolbar: toolbarTemplate, parameters: parametersTemplate}, callbacks);
|
|
}); |