' + _.map(field.defaults, function(d, k) {
return '
'
}
template_tab += '
{{xtypeselect}}{{alinee}}
'
}
if ((!field.show) ||
(field.show && field.show.modules !== false)
) {
template_tab += '
{{mods}} '
} else {
if (field.allsamemodule) {
template_tab += '
{{mods}} '
}
}
if ((!field.show) ||
(field.show && field.show.children !== false)
) {
template_tab += '
{{content}} '
}
template_tab += ''
var template_module = '
';
if ((!field.show) ||
(field.show && field.show.tool !== false)
) {
template_module += ''
}
template_module += '
'
template_module += ' '
var ta3 =
`
`;
function rec_go(arr, prop, path, func, level_) {
var level = level_ || 0;
return _.map((arr || []), function(a, i) {
if (a[prop] && _.isArray(a[prop])) {
return func(a, path + "." + i, rec_go(a[prop], prop, path + "." + i + "." + prop, func, level + 1));
} else {
return func(a, path + "." + i)
}
}).join("\n");
}
function gmods(tab, path) {
var arrr = (tab.modules || []);
return _.map(arrr, function(m, mi) {
return self.template(template_module, {
tab: tab,
path: path,
mod: m,
/* datas: types[m.type] ? types[m.type](obj, m) : "na",*/
typeselect: '
' + _.keys(types).filter(
function(
name) {
return name.indexOf("element_") > -1
}).map(function(name) {
return '' + name + ' '
}).join("\n") + ' ',
index: mi
})
}).join("\n")
}
var zearr = opath.get(obj, field.path);
if (field.find) {
/* zearr = zearr.filter(function(a) {
return a.name.indexOf(field.find) > -1
})*/
}
return self.template(ta3, {
dataname: field.dataname,
obj: obj,
childrenpath: field.childrenpath,
fieldpath: field.path,
basecontent: rec_go(zearr, field.childrenpath, obj.path + "/." + field.path, function(tab, path, content) {
/* if(field.find && tab.name.indexOf(field.find)===-1){
return "xx:"+field.find+":"+tab.name;
}*/
return self.template(template_tab, {
clss: field.find && tab.name.indexOf(field.find) === -1 ? "hidden" : "show",
tab: tab,
path: path,
typeselect: '
' + _.keys(types).filter(function(name) {
return name.indexOf("element_") > -1
}).map(function(name) {
return '' + name + ' '
}).join("\n") + ' ',
childrenpath: field.childrenpath,
alinee: types.alineedit(obj, {
path: path.split("/.").pop(),
excludekeys: [field.childrenpath]
}),
mods: gmods(tab, path),
content: content
})
})
});
}
types.elementseditor.help = "elementseditor help";
types.elementseditor.settings = {
"path": {
default: "_data.elements",
"info": "path to array"
},
"childrenpath": {
default: "elements",
"info": "array name"
},
"show": {
default: {
"tool": true,
"mover": true,
"add": true,
"modules": true,
"children": true,
"delete": true,
"editor": true
},
"info": "shows"
}
};
types.elementstree = function(obj, field) {
var ta1 =
`
{{mods}}
{{content}}
`;
var ta2 =
`
{{mod.title}}
{{datas}}
`;
var ta3 =
`
`;
function rec_go(arr, prop, path, func, level_) {
var level = level_ || 0;
return _.map((arr || []), function(a, i) {
if (a[prop] && _.isArray(a[prop])) {
return func(a, path + "." + i, rec_go(a[prop], prop, path + "." + i + "." + prop, func, level + 1));
} else {
return func(a, path + "." + i)
}
}).join("\n");
}
return self.template(ta3, {
obj: obj,
childrenpath: field.childrenpath,
fieldpath: field.path,
field: field,
basecontent: rec_go(opath.get(obj, field.path), field.childrenpath, obj.path + "/." + field.path, function(tab, path, content) {
return self.template(ta1, {
tab: tab,
path: path,
childrenpath: field.childrenpath,
mods: _.map((tab.modules || []), function(m, mi) {
return self.template(ta2, {
tab: tab,
path: path,
mod: m,
datas: types[m.type] ? types[m.type](obj, m) : "na",
index: mi
})
}).join("\n"),
content: content
})
})
});
}
types.elementstree.help = "elements view";
types.elementstree.settings = {
"path": {
default: "_data.elements",
"info": "path to array"
},
"childrenpath": {
default: "elements",
"info": "array name"
}
};
types.get_renders = function(obj, field) {
var layouts = obj.getStuff3(field.path, function(a) {
return a
}, field.path);
var yy = {}
while (layouts.length) {
var ta = layouts.pop();
ta.data.map(function(tta) {
var t = _.cloneDeep(tta);
t.froma = ta.name;
var tname = t.name;
if (t.target) {
tname = t.target
}
if (t.method) {
if (t.method == "replace") {
if (yy[tname]) {
var tt = yy[tname].froma;
yy[tname] = t;
yy[tname].froma_replaced = tt;
} else {
yy[tname] = t;
}
}
if (t.method == "append") {
if (yy[tname]) {
yy[tname].content = yy[tname].content || []
yy[tname].content.push(t);
} else {
yy[tname] = t;
}
}
if (t.method == "prepend") {
if (yy[tname]) {
yy[tname].content = yy[tname].content || []
yy[tname].content.unshift(t);
} else {
yy[tname] = t;
}
}
} else {
if (yy[tname]) {
yy[tname].content = yy[tname].content || []
yy[tname].content.push(t);
} else {
yy[tname] = t;
}
}
})
}
return yy;
}
types.renderlayout = function(obj, field) {
console.log("FFFFFFFFFFFFFFFFFFFFFFFFFFFFF", field);
function rega(a) {
return self.template(field.data ? field.data : '
{{mods}}{{content}}
', {
keya: a.name,
val: a,
mods: (a.modules || []).map(function(m) {
return types[m.type] ? types[m.type](obj, m) : self.template(m.data, {
obj: obj,
m: m,
tab: a
})
}).join("\n"),
content: a[field.childrenpath] ? a[field.childrenpath].map(rega).join("\n") : a.data
})
}
function kmap(a, pa) {
var s = _.map(a, function(val, key) {
return self.template(field.data ? (field.data_before + field.data + field.data_after) :
'
{{selfa}}{{mods}}{{content}}
', {
key: key,
val: val,
mods: (val.modules || []).map(function(m) {
console.log("MMMM", m)
return types[m.type] ? types[m.type](obj, m) : self.template(m.data, {
obj: obj,
m: m,
tab: val
})
}).join("\n"),
selfa: val.data ? self.template(val.data, obj) : "",
content: (val[field.childrenpath] || []).map(rega).join("\n") + (val.content || []).map(rega).join("\n")
});
}).join("\n");
return s;
}
var yy = types.get_renders(obj, field);
var ssa = "";
if (field.debug) {
var cont = JSON.stringify(yy, true, 2)
ssa = '
' + '' + '
'
}
return self.template(kmap(yy, []).replace("%%CONTENT%%", field.content), obj) + ssa
console.log("YYYYYYYYYYYYYYY", yy);
return JSON.stringify(yy, true, 2);
/*
var layouts = [];
var x = obj.getStuff3("_data.layouts", function(a) {
return a
}, "_data.layouts").map(function(a) {
layouts = layouts.concat(a.data);
return a;
});
console.log(layouts, x)
function rec_go(arr, prop, path, func, level_) {
var level = level_ || 0;
return _.map((arr || []), function(a, i) {
if (a[prop] && _.isArray(a[prop])) {
return func(a, path.concat(a.name).join("."), rec_go(a[prop], prop, path.length === 0 && !a.name ? path : path.concat(a.name), func, level + 1));
} else {
return func(a, path.concat(a.name).join("."))
}
}).join("\n");
}
var s = "";
var cont = "";
var obja = {};
var ps = {};
var alle = [];
x.reverse();
var ind = 0;
while (x.length) {
var t = x.shift();
console.log("TTTTTTTTTT_", t.data, t);
if (ind === 0) {
//first
t.data.map(function(ta) {
obja[ta.name] = {
data: ta.data,
name: ta.name,
modules: ta.modules
}
})
} else {
t.data.map(function(ta) {
if (obja[ta.name]) {
obja[ta.name].layouts = obja[ta.name].layouts || []
obja[ta.name].layouts.push(ta);
} else {
//obja[ta.name] = ta
console.log("NAAAAAAA", ta.name);
}
})
}
ind++
//
var nn = t.name.split("/").pop();
rec_go([{
layouts: t.data
}], "layouts", [], function(taba, path, content) {
var ta = _.omit(taba, ["layouts"]);
ta.path = path;
ta.from = t.name + "/." + t.from
alle.push(ta)
})
}
cont = JSON.stringify(obja, true, 2)
function kmap(a, pa) {
return _.map(a, function(val, key) {
return _.repeat(" ", pa.length) + '
0 ? ' ' + key : '') + '" >\n' + _.repeat(" ", pa.length) + (
typeof(val) === "object" ? kmap(val, pa.concat(key)) : (["content", "data"].indexOf(key) > -1 ? self.template(val, obj) : val)) + '\n' + _.repeat(
" ", pa.length) +
'
'
}).join("\n");
}
var ssa = '
' + '' + '
'
return self.template(kmap(obja, []).replace("%%CONTENT%%", field.content), obj) + ssa
return s;
return rec_go(layouts, "layouts", "layouts", function(tab, path, content) {
return tab.title + " " + path;
})
return layouts.map(function(a) {
return a.name === obj.path ? types.renderlayout_t(self.oget(a.name), {}) : types.renderlayout_t(self.oget(a.name), {});
}).join("\n");
*/
}
types.renderlayout22 = function(obj, field) {
var layouts = [];
var x = obj.getStuff3("_data.layouts", function(a) {
return a
}, "_data.layouts").map(function(a) {
layouts = layouts.concat(a.data);
return a;
});
console.log(layouts, x)
function rec_go(arr, prop, path, func, level_) {
var level = level_ || 0;
return _.map((arr || []), function(a, i) {
if (a[prop] && _.isArray(a[prop])) {
return func(a, path + "." + a.name, rec_go(a[prop], prop, path + "." + a.name, func, level + 1));
} else {
return func(a, path + "." + a.name)
}
}).join("\n");
}
var s = "";
var cont = "";
var obja = {};
while (x.length) {
var t = x.pop();
console.log("T", t.name);
t.data.map(function(tab) {
if (tab.target) {} else {
console.log("mmmmmmmm ", tab.name, tab);
obja[tab.name] = {
"data": tab.data,
"modules": tab.modules
};
rec_go(tab.layouts, "layouts", tab.name, function(taba, path, content) {
if (taba.target && !obja[taba.target]) {
// console.log("TTTTT ", path, taba);
} else {
// console.log(":::::::::::", path, taba);
opath.set(obja, path + ".data", taba.data);
opath.set(obja, path + ".modules", taba.modules);
}
})
// obja[tab.name] = tab;
}
})
t.data.map(function(tab) {
rec_go(tab.layouts, "layouts", tab.name, function(taba, path, content) {
if (taba.target) {
opath.set(obja, taba.target + "." + tab.name + ".data", tab.data);
opath.set(obja, taba.target + "." + tab.name + ".modules", tab.modules);
}
})
})
t.data.map(function(tab) {
if (tab.target) {
opath.set(obja, tab.target + "." + tab.name + ".data", tab.data);
opath.set(obja, tab.target + "." + tab.name + ".modules", tab.modules);
rec_go(tab.layouts, "layouts", tab.name, function(taba, path, content) {
if (taba.target) {
console.log("TTTTT ", path, taba);
} else {
opath.set(obja, tab.target + "." + path + ".data", taba.data);
opath.set(obja, tab.target + "." + path + ".modules", taba.modules);
console.log(":::::::::::", tab.target + "." + path, taba);
}
})
}
})
/*t.data.map(function(tab){
if(obja[tab.name]){
}else{
if(tab.target){
obja[tab.target] = obja[tab.target] || [];
obja[tab.target].push(tab);
}else{
obja[tab.name]=[tab]
}
}
})*/
}
/*
løb over 2-3 gange ...obja[name] = [] ..push.
*/
cont = '
' + JSON.stringify(obja, true, 2) + ' '
function kmap(a, pa) {
return _.map(a, function(val, key) {
return _.repeat(" ", pa.length) + '
0 ? ' ' + key : '') + '" >\n' + _.repeat(" ", pa.length) + (
typeof(val) === "object" ? kmap(val, pa.concat(key)) : (key === "content" ? self.template(val, obj) : val)) + '\n' + _.repeat(" ", pa.length) +
'
'
}).join("\n");
}
return self.template(kmap(obja, []).replace("%%CONTENT%%", field.content), obj) + ' ' + '
'
return s;
return rec_go(layouts, "layouts", "layouts", function(tab, path, content) {
return tab.title + " " + path;
})
return layouts.map(function(a) {
return a.name === obj.path ? types.renderlayout_t(self.oget(a.name), {}) : types.renderlayout_t(self.oget(a.name), {});
}).join("\n");
}
types.renderlayout_t = function(obj, field) {
var ta1 =
`
{{mods}}
{{content}}
`;
var ta2 =
`
{{mod.title}}
{{datas}}
`;
var ta3 =
`
`;
function rec_go(arr, prop, path, func, level_) {
var level = level_ || 0;
return _.map((arr || []), function(a, i) {
if (a[prop] && _.isArray(a[prop])) {
return func(a, path + "." + i, rec_go(a[prop], prop, path + "." + i + "." + prop, func, level + 1));
} else {
return func(a, path + "." + i)
}
}).join("\n");
}
field.childrenpath = "layouts";
field.path = "_data.layouts";
return self.template(ta3, {
obj: obj,
childrenpath: field.childrenpath,
fieldpath: field.path,
field: field,
basecontent: rec_go(opath.get(obj, field.path), field.childrenpath, obj.path + "/." + field.path, function(tab, path, content) {
return self.template(ta1, {
tab: tab,
path: path,
childrenpath: field.childrenpath,
mods: _.map((tab.modules || []), function(m, mi) {
return self.template(ta2, {
tab: tab,
path: path,
mod: m,
datas: types[m.type] ? types[m.type](obj, m) : "na",
index: mi
})
}).join("\n"),
content: content
})
})
});
}
types.layouteditor = function(obj, field) {
var layouts = obj.getStuff3("_data.layouts", function(a) {
return a
}, "_data.layouts");
var s = "";
/*if (!obj._data.layouts || obj._data.layouts.length === 0) {
s += types.elementseditor(obj, {
"path": "_data.layouts",
"childrenpath": "layouts",
"show": {
"title": false,
"name": true
}
});
}*/
s += types.elementseditor(obj, {
"path": "_data.layouts",
"childrenpath": "layouts",
"show": {
"title": false,
"name": true
}
});
// var selfi = layouts.shift();
var yy = {}
while (layouts.length) {
var ta = layouts.pop();
ta.data.map(function(tta) {
var t = _.clone(tta);
t.froma = ta.name;
if (t.method) {
if (t.method == "replace") {
if (yy[t.name]) {
var tt = yy[t.name].froma;
yy[t.name] = t;
yy[t.name].froma_replaced = tt;
} else {
yy[t.name] = t;
}
}
} else {
yy[t.name] = t;
}
console.log("TTT", t);
})
}
console.log("YYYYYYYYYYYYYYY", yy);
return s;
if (layouts.length === 0) {
return 'no layout'
}
var alltabs = [];
var sil = layouts.shift();
layouts.map(function(a) {
alltabs = alltabs.concat(a.data)
})
s += sil.data.map(function(t) {
return '
' + t.name + ' ' + JSON.stringify(t);
}).join("\n")
s += alltabs.map(function(t) {
return '
' + t.name + ' ' + JSON.stringify(t);
}).join("\n")
return s;
if (layouts.length > 1) {
/* s += layouts.map(function(a) {
return a.name === obj.path ? "FFF" : types.layouteditor_tree(self.oget(a.name), {}, obj);
}).join("\n");
*/
//s += types.layouteditor_tree(self.oget(layouts[layouts.length - 1].name), {}, obj)
/* types.elementseditor(obj, {
"path": "_data.layouts",
"childrenpath": "layouts",
"find": tab.name,
"dataname": tab.name
}
*/
} else {
s += layouts.map(function(a) {
return a.name === obj.path ? types.elementseditor(obj, {
"path": "_data.layouts",
"childrenpath": "layouts",
"show": {
"title": false,
"name": true
}
}) : types.layouteditor_tree(self.oget(a.name), {}, obj);
}).join("\n");
}
return s;
}
types.layouteditor_tree = function(obj, field, obj2) {
var ta1 =
`
ddd {{tab.id}} {{tab.name}} {{tab.title}}
{{mods}}
{{content}}
{{obj2thing}}
`;
var ta2 =
`
`;
var ta3 =
`
`;
function rec_go(arr, prop, path, func, level_) {
var level = level_ || 0;
return _.map((arr || []), function(a, i) {
if (a[prop] && _.isArray(a[prop])) {
return func(a, path + "." + i, rec_go(a[prop], prop, path + "." + i + "." + prop, func, level + 1));
} else {
return func(a, path + "." + i)
}
}).join("\n");
}
field.childrenpath = "layouts";
field.path = "_data.layouts";
return self.template(ta3, {
obj: obj,
childrenpath: field.childrenpath,
fieldpath: field.path,
basecontent: rec_go(opath.get(obj, field.path), field.childrenpath, obj.path + "/." + field.path, function(tab, path, content) {
return self.template(ta1, {
obj2thing: types.elementseditor(obj2, {
"path": "_data.layouts",
"childrenpath": "layouts",
"find": tab.name,
"dataname": tab.name
}),
tab: tab,
path: path,
typeselect: '
' + _.keys(types).filter(function(name) {
return name.indexOf("element_") > -1
}).map(function(name) {
return '' + name + ' '
}).join("\n") + ' ',
childrenpath: field.childrenpath,
alinee: types.alineedit(obj, {
path: path.split("/.").pop(),
excludekeys: [field.childrenpath]
}),
mods: _.map((tab.modules || []), function(m, mi) {
return self.template(ta2, {
tab: tab,
path: path,
mod: m,
typeselect: '
' + _.keys(types).filter(
function(
name) {
return name.indexOf("element_") > -1
}).map(function(name) {
return '' + name + ' '
}).join("\n") + ' ',
index: mi
})
}).join("\n"),
content: content
})
})
});
}
types.layouteditor_editor = function(obj, field) {
var ta1 =
`
Add
Delete
M
{{alinee}}
{{mods}}
{{content}}
`;
var ta2 =
`
`;
var ta3 =
`
{{basecontent}}
Add child
`;
function rec_go(arr, prop, path, func, level_) {
var level = level_ || 0;
return _.map((arr || []), function(a, i) {
if (a[prop] && _.isArray(a[prop])) {
return func(a, path + "." + i, rec_go(a[prop], prop, path + "." + i + "." + prop, func, level + 1));
} else {
return func(a, path + "." + i)
}
}).join("\n");
}
field.childrenpath = "layouts";
field.path = "_data.layouts";
return self.template(ta3, {
obj: obj,
childrenpath: field.childrenpath,
fieldpath: field.path,
basecontent: rec_go(opath.get(obj, field.path), field.childrenpath, obj.path + "/." + field.path, function(tab, path, content) {
return self.template(ta1, {
tab: tab,
path: path,
typeselect: '
' + _.keys(types).filter(function(name) {
return name.indexOf("element_") > -1
}).map(function(name) {
return '' + name + ' '
}).join("\n") + ' ',
childrenpath: field.childrenpath,
alinee: types.layouttabedit(obj, {
path: path.split("/.").pop()
}),
mods: _.map((tab.modules || []), function(m, mi) {
return self.template(ta2, {
tab: tab,
path: path,
mod: m,
typeselect: '
' + _.keys(types).filter(
function(
name) {
return name.indexOf("element_") > -1
}).map(function(name) {
return '' + name + ' '
}).join("\n") + ' ',
index: mi
})
}).join("\n"),
content: content
})
})
});
}
types.breakpoint_editor = function(obj, field) {
// console.log(Object.assign({field: field}, obj ))
return '
'
}
types.element_ = function(obj, field) {
// console.log(Object.assign({field: field}, obj ))
return self.template(field.data, Object.assign({
field: field
}, obj));
}
types.element_rows = function() {
return self.template(field.data, obj);
}
types.element_cols = function() {
return self.template(field.data, {
obj: obj,
field: field
});
}
types.element_link = function() {
return self.template(field.data, {
obj: obj,
field: field
});
}
types.element_image = function() {
return self.template(field.data, {
obj: obj,
field: field
});
}
types.thismodules = function(obj, field) {
var s = ""
s += '
' + _.map(obj._metas.modules, function(mod) {
return mod.type + " : " + mod.title;
}).join("\n") + ' ';
s += "
'
return s;
}
types.status = function(obj, field) {
var aa = []
_.keys(self.oo).filter(aa => ["trash", ""].indexOf(aa) === -1 && typeof(self.oo[aa]) === "function").map(function(key) {
aa = [].concat.apply(aa, allchildren(self.oo[key]()).filter(function(a) {
return a._isdirty
}))
})
var s = ""
s += '
Dirty pages Obj ' + aa.map(function(a) {
return self.template('{{path}} ', a)
}).join("\n") + '
Save... ';
return s
}
types.tree = function(obj, field) {
return '
' + self.allchildren(field.from ? field.from : undefined).map(function(a) {
return _.repeat(" ", a.path.split("/").length) + '' + a.name + ' '
}).join("\n") + ' ';
}
types.source = function(obj, field) {
var s = "";
s += '
';
s += '
'
return s
}
types.sourcefull = function(obj, field) {
var s = "";
s += '
';
s += '
'
return s
}
types.sourcefulla = function(obj, field) {
var s = "";
s += '
Edit
';
s += '
'
s +=
'
Upload files
'
if (!obj._metas.undeletable) {
s += '
Delete Permanently '
}
return s
}
types.export = function(obj, field) {
var s = "";
s += '
' + obj.path + ' ';
s += '
Save as '
s += '
Export Standard Export flat ' +
" Export size: " + ((self.jsonstringify(obj.exportSync("")).length / (1024 * 1024)).toFixed(2) + "mb");
s += '
';
s += '
'
return s
}
types.globalexport = function(obj, field, run) {
if (run) {
var s = "";
s += '
Path Bytes ' + _.filter(self.oo, function(a) {
return typeof(a) === "function"
}).map(function(a) {
return a()
}).map(function(a) {
return '' + a.path + ' ' + ((self.jsonstringify(a.exportSync("")).length / (1))) +
' Save as '
}).join("\n") + '
';
s += '
';
return s
} else {
var s = "";
s += '
Calculate ';
s += '
' + '
';
return s;
}
}
types.clone = function(obj, field) {
return "
'
}
types.delete = function(obj, field) {
return '
Trash Delete Permanently '
}
types.keyseditor = function(obj, field) {
}
types.allprops = function(obj, field) {
var stash = [];
var prot = {}
var meta = {}
self.allchildren().map(function(c) {
var arr = opath.flatten(c._data, "");
arr.map(function(a) {
prot[a[0]] = prot[a[0]] || {}
prot[a[0]][a[1]] = prot[a[0]][a[1]] || 0
prot[a[0]][a[1]] += 1;
})
var arr = opath.flatten(c._metas, "");
arr.map(function(a) {
if (a[0].indexOf('_wp_attachment_backup_sizes') > -1) {
return;
}
meta[a[0]] = meta[a[0]] || {}
meta[a[0]][a[1]] = meta[a[0]][a[1]] || 0
meta[a[0]][a[1]] += 1;
})
});
var prota = _.map(prot, function(vala, nama) {
return nama + " : " + _.size(vala)
});
var metas = _.map(meta, function(vala, nama) {
return nama + " : " + _.size(vala)
});
stash.push(["Data Properties", '
' + JSON.stringify(prota, true, 2) + ' '])
stash.push(["Meta Properties", '
' + JSON.stringify(metas, true, 2) + ' '])
var ss = ('
' + stash.map(function(a) {
return '
' + (a[0] === false ? "" : a[0] + "") + '
' + a[1] + '
'
}).join("\n") + '
');
return ss
}
types.jsfuncs = function(obj, field) {
var qq = [];
_.map(_.omit(obj, ignores), function(val, prop) {
if (typeof(val) === "function") {
qq.push(["JS " + prop + '
Delete ',
"
'
]);
}
})
qq.push(["JS ", "
"]);
var ss = ('
' + qq.map(function(a) {
return '
' + (a[0] === false ? "" : a[0] + "") + '
' + a[1] +
'
'
}).join("\n") + '
');
return ss
}
types.relations = function(obj, field) {
var s = "";
var ss = []
_.map(obj._relations, function(rels, relname) {
var relators = _.keys(rels);
var sss = relators.slice(0, 25).map(function(relator) {
return '
' + relator + ' X '
}).join("\n");;
ss.push([relname + "(" + relators.length + ")", sss]);
});
s += ss.map(function(a) {
return '
'
}).join("\n")
return s;
}
types.relationsadd = function(obj, field) {
var s = "";
s += '
' +
' to: as: with: Relate ';
return s;
}
types.templatepaths = function(obj, field) {
return "
" + _.map(self.getRenderTemplate(obj), function(a) {
return '
' +
a.name +
' '
}).join("\n");
}
types.visa = function(obj, fielda) {
var field = Object.assign({
"show": {},
"cap": 1000
}, fielda)
setTimeout(function() {
var statusa = document.getElementById('visastatus');
var colas = {
parent: "#000000",
child: "#ff00ff",
extends: "#00ff00",
inherits: "#ff0000",
isa: "#ff9900",
hasa: "#00ff99"
}
function lokup(tp) {
return colas[tp];
}
var graph = Viva.Graph.graph();
var graphics = Viva.Graph.View.svgGraphics(),
nodeSize = 10;
var oba = obj; // obj.parents[_.keys(obj.parents).shift()] || obj;
var alle = allchildren(oba).filter(function(c) {
return true //c.path.indexOf("trash/") === -1 && c.path.indexOf("folders/") === -1 && c.path.indexOf("blobs/") === -1
});
/* alle.slice(0,2).map(addobj);
setTimeout(function(){
alle.slice(2,20).map(addobj);
},2000)
*/
/*
if(alle.length>0){
stepa();
}
*/
var cols = [];
alle.map(addobj);
if (obj.parents[_.keys(obj.parents).shift()]) {
addobj2(obj.parents[_.keys(obj.parents).shift()]);
cols.unshift([obj.path, _.keys(obj.parents).shift(), "child of"])
}
var colsori = cols.length;
if (cols.length > field.cap) {
cols = cols.slice(0, field.cap);
// cols = cols.filter(function(a){return a[2] !== "isa" })
// cols = cols.filter(function(a){return a[2] !== "child" })
// cols = cols.filter(function(a){return a[2] !== "hasa" })
}
function stepa() {
statusa.innerHTML = ' ' + alle.length + " : " + colsori + " " + field.cap + " " + cols.length;
var i = 0,
c;
while (i < 10 && cols.length > 0) {
i++
c = cols.shift();
graph.addLink(c[0], c[1], c[2])
}
if (cols.length > 0) {
setTimeout(stepa, 100)
} else {
statusa.innerHTML = ' ' + alle.length + " : " + colsori + " " + field.cap + " " + cols.length;
}
}
stepa()
function addobj2(c) {
// graph.addNode(c.path);
_.map(c._isa, function(child, name) {
cols.push([c.path, child.path, 'isa'])
});
_.map(c._hasa, function(child, name) {
cols.push([c.path, child.path, 'hasa'])
});
_.map(c._extends, function(child, name) {
cols.push([c.path, child.path, 'extends'])
});
_.map(c._inherits, function(child, name) {
cols.push([c.path, child.path, 'inherits'])
});
_.map(c._relations, function(rels, relname) {
_.map(rels, function(child, name) {
cols.push([c.path, name, relname])
})
});
}
function addobj(c) {
// graph.addNode(c.path);
if (field.show.children) {
_.map(c.children, function(child, name) {
cols.push([c.path, child().path, 'child'])
});
}
if (field.show.isa) {
_.map(c._isa, function(child, name) {
cols.push([c.path, child.path, 'isa'])
});
}
if (field.show.hasa) {
_.map(c._hasa, function(child, name) {
cols.push([c.path, child.path, 'hasa'])
});
}
if (field.show.extends) {
_.map(c._extends, function(child, name) {
cols.push([c.path, child.path, 'extends'])
});
}
if (field.show.inherits) {
_.map(c._inherits, function(child, name) {
cols.push([c.path, child.path, 'inherits'])
});
}
if (field.show.relations) {
_.map(c._relations, function(rels, relname) {
_.map(rels, function(child, name) {
cols.push([c.path, name, relname + " with " + child.context.d])
})
});
}
}
var idas = 1;
var ida = function() {
return "ida" + (idas++)
}
graphics.node(function(node) {
var ui = Viva.Graph.svg('g');
var circle = Viva.Graph.svg('circle')
.attr('cx', 2)
.attr('cy', 2)
.attr('r', 2)
.attr('fill', obj.path === node.id ? "#ff0000" : "#dadada");
ui.append(circle);
var svgText = Viva.Graph.svg('text').attr("fill", obj.path === node.id ? "#ff0000" : "#333333").attr('font-size', obj.path === node.id ? "18px" :
"12px").attr('y', '4px').text(node.id.split("/").slice(-2).join("/"));
ui.append(svgText);
return ui;
}).placeNode(function(nodeUI, pos) {
nodeUI.attr('transform',
'translate(' +
(pos.x - nodeSize / 2) + ',' + (pos.y - nodeSize / 2) +
')');
});
var createMarker = function(id) {
return Viva.Graph.svg('marker')
.attr('id', id)
.attr('viewBox', "0 0 10 10")
.attr('refX', "10")
.attr('refY', "5")
.attr('markerUnits', "strokeWidth")
.attr('markerWidth', "10")
.attr('markerHeight', "5")
.attr('orient', "auto");
},
marker = createMarker('Triangle');
marker.append('path').attr('d', 'M 0 0 L 10 5 L 0 10 z');
// Marker should be defined only once in
child element of root element:
var defs = graphics.getSvgRoot().append('defs');
defs.append(marker);
var geom = Viva.Graph.geom();
graphics.link(function(link) {
// Notice the Triangle marker-end attribe:
var isParent = (link.data === 'parent');
var ui = Viva.Graph.svg('g');
var p = Viva.Graph.svg('path')
.attr('stroke', lokup(link.data) || "#000000")
.attr('fill', 'none')
.attr('marker-end', 'url(#Triangle)')
.attr('id', ida())
ui.isParent = isParent; // remember for future.
ui.linka = link.data;
ui.ry = 50 //- (Math.random() * 100);
ui.pp = p;
var svgText = Viva.Graph.svg('text').attr("dy", -4).attr("class", "slabel");
var textPath = Viva.Graph.svg("textPath");
textPath.attr("href", "#" + p.id).attr("startOffset", "25%").text(link.data + " >");
svgText.append(textPath)
ui.tt = svgText;
////
// svgText.attr('xlink', link.id);
ui.append(svgText)
ui.append(p);
return ui;
}).placeLink(function(linkUI, fromPos, toPos) {
// using arc command: http://www.w3.org/TR/SVG/paths.html#PathDataEllipticalArcCommands
//var data = 'M' + fromPos.x + ',' + fromPos.y +
// ' A 4,' + linkUI.ry + ',-' + linkUI.ry + ',0,1,' + toPos.x + ',' + toPos.y;
var data = 'M' + fromPos.x + ',' + fromPos.y +
' C ' + (fromPos.x + 50) + ' ' + (fromPos.y + 10) + ',' + (toPos.x - 50) + ' ' + (toPos.y - 10) + ',' + toPos.x + ' ' + toPos.y;
linkUI.pp.attr("d", data);
return;
// linkUI.tt.attr("y", ((fromPos.y + toPos.y) / 2) - linkUI.ry);
// linkUI.tt.attr("x", ((fromPos.x + toPos.x) / 2) );
});
var layout = Viva.Graph.Layout.forceDirected(graph, {
springLength: 80,
springCoeff: 0.00001,
dragCoeff: 0.001,
gravity: -1.2
});
var renderer = Viva.Graph.View.renderer(graph, {
graphics: graphics,
container: document.getElementById('visagraf'),
layout: layout
});
renderer.run();
}, 200);
return 'xxxx
'
}
types.visa.help = "Shows linked visualization of obj";
types.visa.settings = {
"cap": {
default: 500,
"info": "Max render object"
},
"show": {}
};
types.meta = function(obj, field) {
return "
'
}
types.data = function(obj, field) {
return "
'
}
types.hasas = function(obj, field) {
return '' + _.map(obj._hasa, function(tob, name) {
return self.template(
'
{{name}} X ', {
tob: tob,
obj: obj,
name: name
});
}).join("\n") + '
'
}
types.isas = function(obj, field) {
return '' + _.map(obj._isa, function(tob, name) {
return self.template(
'
{{name}} X ', {
tob: tob,
obj: obj,
name: name
});
}).join("\n") + '
' + self.template(' ', {
obj: obj
});
}
types.extends = function(obj, field) {
return '' + _.map(obj._extends, function(tob, name) {
return self.template(
'
{{name}} X ', {
tob: tob,
obj: obj,
name: name
});
}).join("\n") + '
' + self.template(' ', {
obj: obj
});
}
types.inherits = function(obj, field) {
return '' + _.map(obj._inherits, function(tob, name) {
return self.template(
'
{{name}} X ', {
tob: tob,
obj: obj,
name: name
});
}).join("\n") + '
' + self.template(' ', {
obj: obj
});
}
types.children = function(obj, field) {
var s = '';
s += mmb("Add child", " ');
s += '' + _.map(obj.children, function(a) {
return a().path
}).map(function(k) {
return '
' + k +
' '
}).join("\n") + ' '
return s;
}
types.parents = function(obj, field) {
return self.template('{{parents::}}', obj);
}
types.path = function(obj, fiels) {
return " ';
}
types.info = function(obj, field) {
return "Path: " + obj.path
}
types.upload = function(obj, field) {
return (
'Upload files
');
}
types.content = function(obj, field) {
var content_type = " ' + "
";
var s = '';
s += mmb("Title", types.propeditor(obj, {
"path": "_data.title"
}))
if (obj._metas.type && obj._metas.type == "html") {
s += mmb("Content", "')
} else {
s += mmb("Body", "')
}
s += mmb("Type", content_type);
return s;
}
types.truefalse = function(obj, field) {
return ' '
}
types.position = function(obj, field) {
return ' '
}
types.rootzip = function(obj, field, run) {
if (run == 1) {
var ns = self.oget("namespace")._data;
var arr = _.filter(self.oo, function(a, k) {
return typeof(a) === "function" && k !== "namespace"
}).map(function(a) {
return a()
});
var s = "";
var total = 0;
var totallc = 0;
s +=
'Path Filename Objs Bytes Avg ' +
arr.map(function(a) {
var ll = ((self.jsonstringify(
a.exportSync("")).length / (1)));
var lc = (a.exportFlatSync().length);
total += ll;
totallc += lc;
return ' ' + a.path + ((ns.linked && ns.linked[a.path + ".link"] ? '*' : '')) + ' ' + a.path +
'.json ' + lc + ' ' + ll +
' ' + (ll / lc).toFixed(2) + ' '
}).join("\n")
s += ' ' + totallc + ' ' + total + ' ' + (total / totallc).toFixed(2) +
' '
s += '
';
s += ' Output';
s += 'Calculate zip ';
s += '
'
return s;
} else if (run == 2) {
self.saveZip().then(function(files) {
var ss = ' Filename Size ' +
files.map(function(file) {
return ' ' + file.filename + ' ' + file.blob.size + ' ';
}).join("\n") + '
';
$("#rootzipresult").html(ss)
})
return 'zipping...'
} else {
var s = "";
s += 'Calculate ';
s += '' + '
';
return s;
}
}
types.yearmonth = function(obj, field) {
var s = "";
s += ' '
return s
}
types.checkboxes = function(obj, field) {
return '' + field.title + ' ' + _.map(opath.get(obj, field.path), function(val, key) {
return '' + key + ' ' + types.truefalse(obj, {
path: field.path + "." + key
}) + ' ';
}).join("\n") + '
';
}
types.elements = function(obj, field) {
return '' + _.map(opath.get(obj, field.path), function(val, key) {
return '' + key + ' ' + types.truefalse(obj, {
path: field.path + "." + key + ".visible"
}) + ' ' + types.position(obj, {
path: field.path + "." + key + ".x"
}) + ' ' + types.position(obj, {
path: field.path + "." + key + ".y"
}) + ' ';
}).join("\n") + '
';
}
types.template = function(obj, field) {
return "'
}
types.dataeditor = function(obj, field) {
var s = "";
s += ''
return s
}
types.dataeditorarray = function(obj, field) {
var s = "";
s += ''
return s
},
types.texteditor = function(obj, field) {
var s = "";
s += ''
return s
}
types.namespaceedit = function(obj, field) {
var s = "";
s += ' '
return s
}
types.propeditor = function(obj, field) {
var s = "";
s += ' '
return s
}
function sort_by_1_col_alpha(a, b) {
var x = a[0].toLowerCase(),
y = b[0].toLowerCase();
return x < y ? -1 : x > y ? 1 : 0;
}
function xflatten(obj, pre) {
var pre = pre || "";
var r = [];
for (var i in obj) {
if (typeof(obj[i]) === "object") {
r = r.concat(xflatten(obj[i], (pre.length > 0 ? pre + "." : "") + i));
} else {
r.push([(pre.length > 0 ? pre + "." : "") + i, obj[i]]);
}
}
r.sort(sort_by_1_col_alpha)
return r;
}
types.advpropeditor = function(obj, field) {
var sa = "";
var oa = opath.get(obj, field.path);
function rrr(oo, key, path) {
var s = "";
if (_.isArray(oo)) {
s += '' + _.map(oo, function(val, key) {
return rrr(val, key, path + "." + key);
}).join("\n") + ' ';
} else if (_.isObject(oo)) {
s += '' + _.map(oo, function(val, key) {
return rrr(val, key, path + "." + key);
}).join("\n") + ' ';
} else if (_.isBoolean(oo)) {
s += '' + key + ":" + types.truefalse(obj, {
path: path
}) + ' ';
} else if (_.isString(oo)) {
s += '' + key + ":" + ' ';
}
return s;
}
// var ss = rrr(oa, "", obj.path + "/." + field.path);
/* var tt = xflatten(oa, "_metas");
var ss = tt.map(function(a) {
var prop = a[0];
var val = a[1];
var type = typeof(val);
if(type==="boolean"){
return ''+prop+' '
}
if(type==="string"){
return ''+prop+' '
}
}).join("\n");
*/
/*
_metas.modules = []
_metas.tabs = []
_metas.fields = [];
*/
var ss = "";
//s += ' '
return ss
}
types.lookup = function(obj, field) {
var temps = obj.getStuff3(field.path, function(a) {
return a
}, field.path)
var current_name = "",
current_data = "";
if (temps.length > 0) {
current_name = temps[0].name
current_data = temps[0].data;
}
var s = ''; //' '
var path = opath.get(obj, field.path);
if (current_name !== "" && !path) {
path = opath.get(self.oget(current_name), field.path);
s += ' inherit ' + path + ' ';
s += ' from ' + ' ' + current_name + ' '
} else {
if (!path) {
s += 'no object selected'
} else {
s += 'Current: ' + path + ' X ';
}
}
s += " ";
return s;
}
types.lookup2 = function(obj, field) {
var temps = obj.getStuff3(field.path, function(a) {
return a
}, field.path)
var current_name = "",
current_data = "";
if (temps.length > 0) {
current_name = temps[0].name
current_data = temps[0].data;
}
var s = ''; //' '
s += " ";
var path = opath.get(obj, field.path);
if (current_name !== "" && !path) {
path = opath.get(self.oget(current_name), field.path);
s += ' inherit ' + path + ' ';
s += ' from ' + ' ' + current_name + ' '
} else {
s += ' ' + path + ' ';
}
return s;
}
return types;
}