diff --git a/base/web/matrix.go b/base/web/matrix.go index a074dcad..a1d71f10 100644 --- a/base/web/matrix.go +++ b/base/web/matrix.go @@ -119,8 +119,7 @@ func init() { }}, }, ctx.ConfAction( mdb.FIELD, "time,domain,status,type,name,text,icons,repos,binary,module,version,access", - ctx.TOOLS, kit.Simple(SPIDE, VERSION, STATUS), ONLINE, ice.TRUE, - cli.TIMEOUT, "10s", + ctx.TOOLS, kit.Simple(SPIDE, VERSION, STATUS), ONLINE, ice.TRUE, cli.TIMEOUT, "10s", )), Hand: func(m *ice.Message, arg ...string) { if kit.HasPrefixList(arg, ctx.ACTION) { _matrix_action(m, arg[1], arg[2:]...) @@ -149,8 +148,12 @@ func init() { }) m.RewriteAppend(func(value, key string, index int) string { if key == mdb.ICONS && kit.HasPrefix(value, nfs.P, nfs.REQUIRE) { - if domain := m.Appendv(DOMAIN)[index]; domain != "" { - value = kit.MergeURL2(space[domain][mdb.TEXT], value, ice.POD, m.Appendv(mdb.NAME)[index]) + if domain := m.Appendv(DOMAIN)[index]; domain != "" && space[domain][mdb.TYPE] == ORIGIN { + value = kit.MergeURL2(space[domain][mdb.TEXT], value, m.Appendv(mdb.NAME)[index]) + } else if m.Appendv(mdb.TYPE)[index] == SERVER { + value = kit.MergeURL(value, ice.POD, m.Appendv(DOMAIN)[index]) + } else if m.Appendv(mdb.TYPE)[index] == WORKER { + value = kit.MergeURL(value, ice.POD, kit.Keys(m.Appendv(DOMAIN)[index], m.Appendv(mdb.NAME)[index])) } } return value diff --git a/base/web/matrix.js b/base/web/matrix.js index d03ffc9d..9ee6e6c0 100644 --- a/base/web/matrix.js +++ b/base/web/matrix.js @@ -4,28 +4,29 @@ Volcanos(chat.ONIMPORT, { list[name] = list[name]||{}, list[name][_domain] = value, domain.indexOf(_domain) == -1 && domain.push(_domain) value.type == web.SERVER && server.push(value.domain) }), can.db.list = list, can.db.domain = domain, can.db.server = server - - can.ui = can.page.Appends(can, can._output, [{view: [wiki.CONTENT, html.TABLE], list: [ - {type: html.THEAD, list: [{type: html.TR, list: can.core.Item(list, function(name, value) { - return {type: html.TH, list: [value[""]? can.onimport.item(can, value[""], list): can.onimport.void(can, name, domain, list)]} - }) }]}, - {type: html.TBODY, list: can.core.List(domain, function(domain) { if (!domain) { return } - return {type: html.TR, list: can.core.Item(list, function(name, value) { var item = value[domain] - return {type: html.TD, list: [item? can.onimport.item(can, item, list): can.onimport.void(can, name, domain, list)]} - })} - })}, - ] }]), can.onmotion.delay(can, function() { can.Status(mdb.COUNT, can.core.List(domain).length+"x"+can.core.Item(list).length) }) - return - can.ui = can.page.Appends(can, can._output, [{view: [wiki.CONTENT, html.TABLE], list: [ - {type: html.THEAD, list: [{type: html.TR, list: can.core.List(domain, function(domain) { - return {type: html.TH, list: [can.onimport.item(can, list[""][domain], list)]} - }) }]}, - {type: html.TBODY, list: can.core.Item(list, function(name, value) { if (!name) { return } - return {type: html.TR, list: can.core.List(domain, function(domain) { var item = value[domain] - return {type: html.TD, list: [item? can.onimport.item(can, item, list): can.onimport.void(can, name, domain, list)]} - })} - })}, - ] }]), can.onmotion.delay(can, function() { can.Status(mdb.COUNT, can.core.Item(list).length+"x"+can.core.List(domain).length) }) + if (domain.length > can.core.Item(list).length) { + can.ui = can.page.Appends(can, can._output, [{view: [wiki.CONTENT, html.TABLE], list: [ + {type: html.THEAD, list: [{type: html.TR, list: can.core.Item(list, function(name, value) { + return {type: html.TH, list: [value[""]? can.onimport.item(can, value[""], list): can.onimport.void(can, name, domain, list)]} + }) }]}, + {type: html.TBODY, list: can.core.List(domain, function(domain) { if (!domain) { return } + return {type: html.TR, list: can.core.Item(list, function(name, value) { var item = value[domain] + return {type: html.TD, list: [item? can.onimport.item(can, item, list): can.onimport.void(can, name, domain, list)]} + })} + })}, + ] }]), can.onmotion.delay(can, function() { can.Status(mdb.COUNT, can.core.List(domain).length+"x"+can.core.Item(list).length) }) + } else { + can.ui = can.page.Appends(can, can._output, [{view: [wiki.CONTENT, html.TABLE], list: [ + {type: html.THEAD, list: [{type: html.TR, list: can.core.List(domain, function(domain) { + return {type: html.TH, list: [can.onimport.item(can, list[""][domain], list)]} + }) }]}, + {type: html.TBODY, list: can.core.Item(list, function(name, value) { if (!name) { return } + return {type: html.TR, list: can.core.List(domain, function(domain) { var item = value[domain] + return {type: html.TD, list: [item? can.onimport.item(can, item, list): can.onimport.void(can, name, domain, list)]} + })} + })}, + ] }]), can.onmotion.delay(can, function() { can.Status(mdb.COUNT, can.core.Item(list).length+"x"+can.core.List(domain).length) }) + } }, void: function(can, name, domain, list) { var worker = list[name][""], server = list[""][domain] return {view: html.ACTION, _init: function(target) { @@ -41,8 +42,7 @@ Volcanos(chat.ONIMPORT, { {view: wiki.TITLE, list: [ {text: item.name||item.domain||location.host, onclick: cb(web.OPEN)}, item.status != cli.STOP && can.onappend.label(can, item, {version: icon.version, time: icon.compile, access: "bi bi-file-lock"}), - {text: [item.text, "", mdb.STATUS]}, - can.onappend.buttons(can, item), + {text: [item.text, "", mdb.STATUS]}, can.onappend.buttons(can, item), ]}, ], _init: function(target) { item._target = target }} }, @@ -56,18 +56,18 @@ Volcanos(chat.ONIMPORT, { }, }, [""]) Volcanos(chat.ONACTION, { - upgrade: function(event, can) { - var msg = can.request(event); if (msg.Option(mdb.NAME) || msg.Option(web.DOMAIN)) { return can.Update(event, [ctx.ACTION, code.UPGRADE]) } - can.page.ClassList.add(can, can._output, "process") + upgrade: function(event, can) { var msg = can.request(event) + if (msg.Option(mdb.NAME) || msg.Option(web.DOMAIN)) { return can.Update(event, [ctx.ACTION, code.UPGRADE]) } + can.page.ClassList.add(can, can._output, ice.PROCESS) can.core.Next(can.db.server, function(server, next, index) { can.core.Next(can.core.Item(can.db.list, function(key, value) { return value }), function(list, next, i) { var item = list[server]; if (!item) { return next() } if (!item.name || item.status != cli.START) { return next() } - can.page.ClassList.add(can, item._target, "process") + can.page.ClassList.add(can, item._target, ice.PROCESS) can.Update(can.request({}, item, {_handle: ice.TRUE}), [ctx.ACTION, code.UPGRADE], function(msg) { next() }) }, next) }, function() { can.core.Next(can.db.server, function(server, next, index) { - var item = can.db.list[""][server]; can.page.ClassList.add(can, item._target, "process") + var item = can.db.list[""][server]; can.page.ClassList.add(can, item._target, ice.PROCESS) can.Update(can.request({}, item, {_handle: ice.TRUE}), [ctx.ACTION, code.UPGRADE], function(msg) { next() }) }, function() { can.onmotion.delay(can, function() {can.Update() }, 3000) }) })