Skip to content

Commit

Permalink
Infinite nesting and editing of those nests and rename/maps working
Browse files Browse the repository at this point in the history
Next step is to make Group a "class" to allow for instance onChange
events to be registered. (at the moment the group config doesn't
update if you modify the group until you click a container again)
  • Loading branch information
James committed Aug 26, 2009
1 parent 89223f1 commit a7e329b
Show file tree
Hide file tree
Showing 5 changed files with 372 additions and 88 deletions.
15 changes: 15 additions & 0 deletions js/Container.js
Expand Up @@ -299,6 +299,21 @@ WireIt.Container.prototype = {
this.layer.removeContainer(this);
},

highlight: function()
{
this.el.style.border = "2px solid blue";
},

dehighlight: function()
{
this.el.style.border = "";
},

superHighlight: function()
{
this.el.style.border = "4px outset blue";
},

onGroupButton: function(e, args) {
Event.stopEvent(e);

Expand Down
96 changes: 70 additions & 26 deletions js/Group.js
Expand Up @@ -5,6 +5,44 @@

WireIt.Group = {

applyToContainers: function(group, deep, func, context)
{
if (!lang.isValue(context))
context = this;

if (lang.isValue(group.groupContainer))
func.call(context, group.groupContainer);
else
{
for (var cI in group.containers)
func.call(context, group.containers[cI].container)

if (deep)
{
for (var gI in group.groups)
WireIt.Group.applyToContainers(group.groups[gI].group, deep, func, context);
}
}
},

addContainer: function(group, container, overrides)
{
if (!lang.isObject(overrides))
overrides = {"fields" : {}, "terminals" : {}};

group.containers.push({"container" : container, "overrides" : overrides});
container.group = group;
},

addGroup: function(group, innerGroup, overrides)
{
if (!lang.isObject(overrides))
overrides = {"fields" : {}, "terminals" : {}};

group.groups.push({"group" : innerGroup, "overrides" : overrides});
innerGroup.group = group;
},

getOuterGroup: function(group, groupCallback)
{
var last = group;
Expand Down Expand Up @@ -36,7 +74,7 @@
}
},

serialiseGroup: function(group, containers)
serialiseGroup: function(group, containers, groups)
{
var sGroup = {};
sGroup.properties = {};
Expand Down Expand Up @@ -174,18 +212,11 @@
];
},

getExternalToInteralMap: function(map)
getExternalToInternalMap: function(map)
{
var containerMap = {"fields" : {}, "terminals" : {}};
var groupMap = {"fields" : {}, "terminals" : {}};

var flattened = []
//flatten
for (var cI in map.containerMap)
{
flattened.push(map.containerMap[cI])
}


for (var cI in map.containerMap)
{
var c = map.containerMap[cI];
Expand Down Expand Up @@ -336,14 +367,14 @@
lang.augmentObject(mergedUsedNames, usedNames.fields);
lang.augmentObject(mergedUsedNames, usedNames.terminals);

f.externalName = this.generateFreshName(fName, mergedUsedNames);
f.externalName = WireIt.Group.generateFreshName(fName, mergedUsedNames);

usedNames.fields[f.externalName] = true;
usedNames.terminals[f.externalName] = true;
}
else
{
f.externalName = generateFreshName(fName, usedNames.fields);
f.externalName = WireIt.Group.generateFreshName(fName, usedNames.fields);

usedNames.fields[f.externalName] = true;
}
Expand Down Expand Up @@ -424,7 +455,7 @@
return self.isTerminalExternal(terminal, inGroup);
}

mergeTerminalOverrides(terminalConfigs, os, usedNames, forceVisible, cm);
mergeTerminalOverrides(terminalConfigs, os.terminals, usedNames, forceVisible, cm, c.options.title);

containerMap[cI].terminals = cm;

Expand Down Expand Up @@ -464,7 +495,7 @@
}
else
{
var externalToInternalMap = WireIt.Group.getExternalToInteralMap(map);
var externalToInternalMap = WireIt.Group.getExternalToInternalMap(map);

forceVisible = function(name)
{
Expand Down Expand Up @@ -493,7 +524,7 @@
}


mergeTerminalOverrides(terminalConfigs, os, usedNames, forceVisible, gm);
mergeTerminalOverrides(terminalConfigs, os.terminals, usedNames, forceVisible, gm);

groupMap[gI].terminals = gm;
}
Expand Down Expand Up @@ -559,7 +590,7 @@
{
return self.isFieldExternal.call(self, c.form.inputsNames[name], inGroup);
}
this.mergeFieldOverrides(fieldConfigs, os, usedNames, forceVisible, cm);
this.mergeFieldOverrides(fieldConfigs, os.fields, usedNames, forceVisible, cm);
}
containerMap[cI] = {};

Expand Down Expand Up @@ -589,25 +620,38 @@
}
else
{
var externalToInternalMap = WireIt.Group.getExternalToInteralMap(map);
//TODO: is this right???
forceVisible = function(name)
var forceVisible2;

forceVisible2 = function(name, group, map)
{
for (var fName in externalToInternalMap.containerMap.fields)
{
var fMap = externalToInternalMap.containerMap.fields[fName]
if (!lang.isValue(map))
map = WireIt.Group.getMap(group);

var externalToInternalMap = WireIt.Group.getExternalToInternalMap(map);

var f = g.containers[fMap.containerId].container.form.inputsNames[fMap.name]
var fMap = externalToInternalMap.containerMap.fields[name]

if (lang.isValue(fMap))
{
var f = group.containers[fMap.containerId].container.form.inputsNames[fMap.name]

if (self.isFieldExternal.call(self, f, inGroup))
return true;
}

else
{
var fMap = externalToInternalMap.groupMap.fields[name];

if (lang.isValue(fMap))
return forceVisible2(name, group.groups[fMap.containerId].group);
}
return false;
}

forceVisible = function(name) { return forceVisible2(name, g, map); };
}

this.mergeFieldOverrides(fieldConfigs, os, usedNames, forceVisible, gm);
this.mergeFieldOverrides(fieldConfigs, os.fields, usedNames, forceVisible, gm);

groupMap[gI] = {}
groupMap[gI].fields = gm;
Expand Down Expand Up @@ -660,7 +704,7 @@
usedNames.fields[o.rename] = true;

if (f.inputParams.wirable)
userNames.terminals[name] = true;
usedNames.terminals[name] = true;

map.externalName = o.rename;
}
Expand Down
29 changes: 24 additions & 5 deletions js/GroupFormContainer.js
Expand Up @@ -98,7 +98,10 @@ YAHOO.lang.extend(WireIt.GroupFormContainer, WireIt.FormContainer, {
var group = {"properties" : sGroup.properties}; //TODO: copy rather than reference?

if (lang.isValue(sGroup.groupContainer))
{
group.groupContainer = expandedContainers[sGroup.groupContainer];
group.groupContainer.group = group;
}
else
{
group.containers = [];
Expand All @@ -107,21 +110,32 @@ YAHOO.lang.extend(WireIt.GroupFormContainer, WireIt.FormContainer, {
for (var cI in sGroup.containers)
{
var co = sGroup.containers[cI];
var c = expandedContainers[co.container];

group.containers.push({"container" : expandedContainers[co.container], "overrides" : co.overrides});
group.containers.push({"container" : c, "overrides" : co.overrides});
c.group = this.group;
}

for (var gI in sGroup.groups)
{
var go = sGroup.groups[gI]
var g = deserialise(go.group);

group.groups.push({"group" : deserialise(go.group), "overrides" : go.overrides});
group.groups.push({"group" : g, "overrides" : go.overrides});
g.group = this.group;
}
}

return group;
}

var group = deserialise(this.options.groupConfig.group);
var group = deserialise.call(this, this.options.groupConfig.group);
/*
for (var cI in expandedContainers)
{
var c = expandedContainers[cI]
c.group = this.innerGroup;
}*/

var getTerminalByName = function (terminals, name)
{
Expand Down Expand Up @@ -250,10 +264,15 @@ YAHOO.lang.extend(WireIt.GroupFormContainer, WireIt.FormContainer, {
*/
this.layer.removeContainer(this);

this.group.groupContainer = null;
this.group.containers = group.containers;
this.group.groups = group.groups;

for (var gI in group.groups)
var POPIgI = 0;
for (POPIgI = 0; POPIgI < group.groups.length; POPIgI++)
{
var g = group.groups[gI].group;
var g = group.groups[POPIgI].group;

if (g.properties.expanded && lang.isValue(g.groupContainer))
g.groupContainer.expand();
Expand Down

0 comments on commit a7e329b

Please sign in to comment.