module.exports = function(self) { function mmb(t, d) { return '

' + t + '

' + d + '
'; } function allchildren(obj_) { var obj = typeof(obj_) === "function" ? obj_() : obj_; return [].concat.apply([obj], _.map(obj.children, allchildren)) } var _ = require("lodash"); var opath = require("opath"); var types = {} types.allmodules = function(obj, field) { return '
' + self.allchildren().filter(function(a) {
            return a._metas.modules ? true : false
        }).map(function(a) {
            return _.repeat(" ", a.path.split("/").length) + '' + a.path + ''
        }).join("\n") + '
'; } types.availablemodules = function(obj, field) { var s = '
' + _.map(self.editorTypes(), function(func, name) {
            return name;
        }).join("\n");
        s += "\n";
        s += self.allchildren().filter(function(a) {
            return a.modulefunc
        }).map(function(child) {
            return '' + child.path + '.modulefunc';
        }).join("\n");
        s += '
'; return s; } types.layouttabedit = function(obj, field) { field.excludekeys = field.excludekeys || ["layouts"]; return types.alineedit(obj, field); } types.alineedit = function(obj, field) { var oa = opath.get(obj, field.path); /*if(!oa){ opath.set(obj, field.path,{}) } */ var excludekeys = ["type", "modules"].concat(field.excludekeys || []); console.log("EEEEEEEEEEEEEEEEEEEEEE",excludekeys); var tmp = {} var s = _.keys(oa).filter(function(key) { return excludekeys.indexOf(key) === -1; }).map(function(key) { if (_.isArray(oa[key])) { return _.map(oa[key], function(tab, i) { return '
' + types.alineedit(obj, { path: field.path + "." + key + "." + i }) + '
' }).join("\n"); } else { if (typeof(oa[key]) === "function") { tmp[obj.path + '/.' + field.path + '.' + key] = true; return '
' + ((oa.type && types[oa.type] && types[oa.type].settings && types[oa.type].settings[ key]) ? types[oa.type].settings[key].info + ' def:' + types[oa.type].settings[key].default : '') + '
'; } if (_.isObject(oa[key])) { return '
' + _.map(oa[key], function(taba, i) { return '' + i + '' + (typeof(taba) === "boolean" ? types.truefalse(obj, { path: field.path + "." + key + "." + i }) : '') }).join("\n") + '
'; } else { if (key === "type") { return '
' + (types[oa[key]] ? types[oa[key]].help : 'na') + '
'; } else { if (key.indexOf("data") === 0) { tmp[obj.path + '/.' + field.path + '.' + key] = true; return '
' + ((oa.type && types[oa.type] && types[oa.type].settings && types[oa.type].settings[ key]) ? types[oa.type].settings[key].info + ' def:' + types[oa.type].settings[key].default : '') + '
'; } else { tmp[obj.path + '/.' + field.path + '.' + key] = true; return '
' + ((oa.type && types[oa.type] && types[oa.type].settings && types[oa.type].settings[ key]) ? types[oa.type].settings[key].info + ' def:' + types[oa.type].settings[key].default : '') + '
'; } } } } }).join("\n"); if (types[oa.type]) { s = '
' + (types[oa.type] ? types[oa.type].help : 'na') + '
' + s s += _.map(types[oa.type].settings || {}, function(val, key) { if (tmp[obj.path + '/.' + field.path + '.' + key]) { return ""; } return '
' + (val.info ? val.info + ' def:' + val.default : '') + '
'; }) } else { s = '
' + (types[oa.type] ? types[oa.type].help : 'na') + '
' + s } s += '
' return s; } types.elementseditor = function(obj, field) { console.log("FFFF", field); var template_tab = "" template_tab += '
  • '; if ((!field.show) || (field.show && field.show.tool !== false) ) { template_tab += '
    '; template_tab += ' '; if ((!field.show) || (field.show && field.show.mover !== false) ) { template_tab += ' '; } if ((!field.show) || (field.show && field.show.add !== false) ) { template_tab += ''; } if ((!field.show) || (field.show && field.show.modules !== false) ) { template_tab += ''; } if ((!field.show) || (field.show && field.show.delete !== false) ) { template_tab += ''; } if ((!field.show) || (field.show && field.show.title !== false) ) { template_tab += ''; } if ((!field.show) || (field.show && field.show.name !== false) ) { template_tab += ''; } template_tab += '
    ' } if ((!field.show) || (field.show && field.show.editor !== false) ) { if (field.defaults) { template_tab += '
    ' + _.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 += ' ' template_module += '{{xtypeselect}}' template_module += 'Delete' template_module += '
    {{mod.type}} {{mod.name}} {{mod.title}}
    ' template_module += '
    ' } template_module += '
    ' template_module += '
  • ' var ta3 = `
      {{basecontent}}
    `; 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: '', 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: '', 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 = `
  • {{tab.title}}
      {{mods}}
      {{content}}
  • `; var ta2 = `
  • {{mod.title}}
    {{datas}}
  • `; var ta3 = `
      {{basecontent}}
    `; 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 = `
  • {{tab.name}} {{tab.id}} {{tab.title}} {{tab.title}}
      {{mods}}
      {{content}}
  • `; var ta2 = `
  • {{mod.title}}
    {{datas}}
  • `; var ta3 = `
      {{basecontent}}
    `; 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 = `
  • {{mod.type}} {{mod.name}} {{mod.title}}
  • `; var ta3 = `
      {{basecontent}}
    `; 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: '', 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: '', index: mi }) }).join("\n"), content: content }) }) }); } types.layouteditor_editor = function(obj, field) { var ta1 = `
  • {{alinee}}
      {{mods}}
      {{content}}
  • `; var ta2 = `
  • {{xtypeselect}} Delete
    {{mod.type}}
  • `; var ta3 = `
      {{basecontent}}
    `; 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: '', 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: '', 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

    ' + aa.map(function(a) { return self.template('', a) }).join("\n") + '
    Obj
    {{path}}

    '; 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 += '
    ' if (!obj._metas.undeletable) { s += '
  • ' } return s } types.export = function(obj, field) { var s = ""; s += '

    ' + obj.path + '

    '; s += '' s += '
    ' + " 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 += '' + _.filter(self.oo, function(a) { return typeof(a) === "function" }).map(function(a) { return a() }).map(function(a) { return '' }).join("\n") + '
    PathBytes
    ' + a.path + '' + ((self.jsonstringify(a.exportSync("")).length / (1))) + '
    '; s += ''; return s } else { var s = ""; s += ''; s += '
    ' + '
    '; return s; } } types.clone = function(obj, field) { return "
    ' } types.delete = function(obj, field) { return '
  • ' } 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 + '
  • ', "
    ' ]); } }) 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 + '
  • ' }).join("\n");; ss.push([relname + "(" + relators.length + ")", sss]); }); s += ss.map(function(a) { return '

    ' + a[0] + '

    ' + a[1] + '
    ' }).join("\n") return s; } types.relationsadd = function(obj, field) { var s = ""; s += '
  • ' + '
    to:
    as:
    with:
  • '; 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}}
  • ', { tob: tob, obj: obj, name: name }); }).join("\n") + '
    ' } types.isas = function(obj, field) { return '
    ' + _.map(obj._isa, function(tob, name) { return self.template( '
  • {{name}}
  • ', { 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}}
  • ', { 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}}
  • ', { 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 ( '
    '); } 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 += '' + arr.map(function(a) { var ll = ((self.jsonstringify( a.exportSync("")).length / (1))); var lc = (a.exportFlatSync().length); total += ll; totallc += lc; return '' }).join("\n") s += '' s += '
    PathFilenameObjsBytesAvg
    ' + a.path + ((ns.linked && ns.linked[a.path + ".link"] ? '*' : '')) + '' + a.path + '.json' + lc + '' + ll + '' + (ll / lc).toFixed(2) + '
    ' + totallc + '' + total + '' + (total / totallc).toFixed(2) + '
    '; s += '
    Output'; s += ''; s += '
    ' return s; } else if (run == 2) { self.saveZip().then(function(files) { var ss = '' + files.map(function(file) { return ''; }).join("\n") + '
    Filename Size
    ' + file.filename + ' ' + file.blob.size + '
    '; $("#rootzipresult").html(ss) }) return 'zipping...' } else { var s = ""; s += ''; 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 ''; }).join("\n") + '
    ' + key + '' + types.truefalse(obj, { path: field.path + "." + key }) + '
    '; } types.elements = function(obj, field) { return '' + _.map(opath.get(obj, field.path), function(val, key) { return ''; }).join("\n") + '
    ' + 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" }) + '
    '; } 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 += ''; } 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 + '
  • '; } } 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; }