-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathinitialiseViewItem.js
63 lines (53 loc) · 2.23 KB
/
initialiseViewItem.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
function initialiseViewItem(viewItem, gaffa, specCollection, references) {
var ViewItem = require('./viewItem'),
ViewContainer = require('./viewContainer'),
initialiseView = require('./initialiseView'),
initialiseAction = require('./initialiseAction'),
initialiseBehaviour = require('./initialiseBehaviour');
references = references || {
objects: [],
viewItems: []
};
// ToDo: Deprecate .type
var viewItemType = viewItem._type || viewItem.type;
if(!(viewItem instanceof ViewItem)){
if (!specCollection[viewItemType]) {
throw "No constructor is loaded to handle view of type " + viewItemType;
}
var referenceIndex = references.objects.indexOf(viewItem);
if(referenceIndex >= 0){
return references.viewItems[referenceIndex];
}
references.objects.push(viewItem);
viewItem = new specCollection[viewItemType](viewItem);
references.viewItems.push(viewItem);
}
for(var key in viewItem.views){
if(!(viewItem.views[key] instanceof ViewContainer)){
viewItem.views[key] = new ViewContainer(viewItem.views[key]);
}
var views = viewItem.views[key];
for (var viewIndex = 0; viewIndex < views.length; viewIndex++) {
var view = initialiseView(views[viewIndex], gaffa, references);
views[viewIndex] = view;
view.parentContainer = views;
}
}
for(var key in viewItem.actions){
var actions = viewItem.actions[key];
for (var actionIndex = 0; actionIndex < actions.length; actionIndex++) {
var action = initialiseAction(actions[actionIndex], gaffa, references);
actions[actionIndex] = action;
action.parentContainer = actions;
}
}
if(viewItem.behaviours){
for (var behaviourIndex = 0; behaviourIndex < viewItem.behaviours.length; behaviourIndex++) {
var behaviour = initialiseBehaviour(viewItem.behaviours[behaviourIndex], gaffa, references);
viewItem.behaviours[behaviourIndex] = behaviour;
behaviour.parentContainer = viewItem.behaviours;
}
}
return viewItem;
}
module.exports = initialiseViewItem;