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 ) ;
} ) ;