102 lines
2.6 KiB
JavaScript
102 lines
2.6 KiB
JavaScript
/*
|
|
* Inspector engine helpers.
|
|
*
|
|
* The helpers are used mostly by the Inspector Surface.
|
|
*
|
|
*/
|
|
+function ($) { "use strict";
|
|
|
|
// NAMESPACES
|
|
// ============================
|
|
|
|
if ($.oc === undefined)
|
|
$.oc = {}
|
|
|
|
if ($.oc.inspector === undefined)
|
|
$.oc.inspector = {}
|
|
|
|
$.oc.inspector.engine = {}
|
|
|
|
// CLASS DEFINITION
|
|
// ============================
|
|
|
|
function findGroup(group, properties) {
|
|
for (var i = 0, len = properties.length; i < len; i++) {
|
|
var property = properties[i]
|
|
|
|
if (property.itemType !== undefined && property.itemType == 'group' && property.title == group) {
|
|
return property
|
|
}
|
|
}
|
|
|
|
return null
|
|
}
|
|
|
|
$.oc.inspector.engine.processPropertyGroups = function(properties) {
|
|
var fields = [],
|
|
result = {
|
|
hasGroups: false,
|
|
properties: []
|
|
},
|
|
groupIndex = 0
|
|
|
|
for (var i = 0, len = properties.length; i < len; i++) {
|
|
var property = properties[i]
|
|
|
|
if (property['sortOrder'] === undefined) {
|
|
property['sortOrder'] = (i+1)*20
|
|
}
|
|
}
|
|
|
|
properties.sort(function(a, b){
|
|
return a['sortOrder'] - b['sortOrder']
|
|
})
|
|
|
|
for (var i = 0, len = properties.length; i < len; i++) {
|
|
var property = properties[i]
|
|
|
|
property.itemType = 'property'
|
|
|
|
if (property.group === undefined) {
|
|
fields.push(property)
|
|
}
|
|
else {
|
|
var group = findGroup(property.group, fields)
|
|
|
|
if (!group) {
|
|
group = {
|
|
itemType: 'group',
|
|
title: property.group,
|
|
properties: [],
|
|
groupIndex: groupIndex
|
|
}
|
|
|
|
groupIndex++
|
|
fields.push(group)
|
|
}
|
|
|
|
property.groupIndex = group.groupIndex
|
|
group.properties.push(property)
|
|
}
|
|
}
|
|
|
|
for (var i = 0, len = fields.length; i < len; i++) {
|
|
var property = fields[i]
|
|
|
|
result.properties.push(property)
|
|
|
|
if (property.itemType == 'group') {
|
|
result.hasGroups = true
|
|
|
|
for (var j = 0, propertiesLen = property.properties.length; j < propertiesLen; j++) {
|
|
result.properties.push(property.properties[j])
|
|
}
|
|
|
|
delete property.properties
|
|
}
|
|
}
|
|
|
|
return result
|
|
}
|
|
}(window.jQuery);
|