1
0
mirror of https://shylinux.com/x/volcanos synced 2025-04-25 16:58:06 +08:00

opt miss.js

This commit is contained in:
shylinux 2020-06-09 11:10:21 +08:00
parent 669242c25a
commit aed2e98f2c
4 changed files with 141 additions and 72 deletions

View File

@ -104,7 +104,7 @@ Volcanos("onengine", { _init: function(can, meta, list, cb, target) {
},
})
Volcanos("onappend", { _init: function(can, meta, list, cb, target, field) { meta.name = meta.name.split(" ")[0]
field = field || can.onappend.field(can, target, meta.type||"plugin", meta);
field = field || can.onappend.field(can, target, meta.type||"plugin", meta).first;
var legend = can.page.Select(can, field, "legend")[0];
var option = can.page.Select(can, field, "form.option")[0];
var action = can.page.Select(can, field, "div.action")[0];
@ -116,9 +116,7 @@ Volcanos("onappend", { _init: function(can, meta, list, cb, target, field) { met
_target: field, _inputs: {}, _outputs: [], _history: [],
_option: option, _action: action, _output: output,
Option: function(key, value) {
if (typeof key == "object") {
return sub.core.Item(key, function(key, value) { sub.Option(key, value) }), key
}
if (typeof key == "object") { return sub.core.Item(key, can.Option), key }
if (key == undefined) { value = {}
sub.page.Select(sub, option, "select.args,input.args", function(item) {
value[item.name] = item.value
@ -137,6 +135,7 @@ Volcanos("onappend", { _init: function(can, meta, list, cb, target, field) { met
return value
},
Status: function(key, value) {
if (typeof key == "object") { return sub.core.Item(key, sub.Status), key }
sub.page.Select(sub, status, "div."+key+">span", function(item) {
item.innerHTML = value
})
@ -206,7 +205,7 @@ Volcanos("onappend", { _init: function(can, meta, list, cb, target, field) { met
}
can.core.Item(input.onaction, function(key, value) {
input._target && key.indexOf("on") == 0 && (input._target[key] = function(event) {
input._target && key.indexOf("on") == 0 && (input._target[key] = input._target[key] || function(event) {
value(event, input);
})
}), next();
@ -258,8 +257,8 @@ Volcanos("onappend", { _init: function(can, meta, list, cb, target, field) { met
location.href = can.user.Share(can, args, true)
})
},
_action: function(can, action) { // [string [class item...] {}]
action && (action.innerHTML = ""), can.onaction && can.core.List(can.onaction.list, function(item) {
_action: function(can, action, list) { // [string [class item...] {}]
action && (action.innerHTML = ""), can.onaction && can.core.List(list||can.onaction.list, function(item) {
item === ""? can.page.Append(can, action, [{view: "item space"}]):
typeof item == "string"? can.onappend.input(can, action, "input", {type: "button", value: item, onclick: function(event) {
(can.onaction[item] || can.onkeymap && can.onkeymap._remote)(event, can, item)
@ -304,8 +303,8 @@ Volcanos("onappend", { _init: function(can, meta, list, cb, target, field) { met
item.pos? undefined: {text: [(item.nick||item.name||"")+"("+(item.help||"")+")", "legend"]},
{view: ["option", "form"], dataset: dataset, list: []},
{view: ["action"]}, {view: ["output"]}, {view: ["status"]},
]}]).first;
return field.Meta = item, field;
]}]);
return field.first.Meta = item, field;
},
input: function(can, option, type, item, value) {
item.name && item.name.indexOf("@") == 0 && (item.name = item.name.slice(1)) && (item.position = item.position || "opts")
@ -343,7 +342,10 @@ Volcanos("onappend", { _init: function(can, meta, list, cb, target, field) { met
item.value == "auto" && (item.value = "")
item.action == "auto" && (input.dataset.action = "auto")
var target = can.page.Append(can, option, [{view: ["item "+item.type], list: [item.position && {text: item.name+": "}, input]}])[item.name]
item.figure && item.figure.indexOf("@") == 0 && (item.figure = item.figure.slice(1)) && can.require(["/plugin/input/"+item.figure], function() {
item.figure && item.figure.indexOf("@") == 0 && (item.figure = item.figure.slice(1)) && can.require(["/plugin/input/"+item.figure], function(can) {
can.core.Item(can.onfigure[item.figure], function(key, value) { if (key.startsWith("on")) {
target[key] = function(event) { value(event, can, item, target) }
} })
target.type != "button" && (target.value = "")
})
@ -372,7 +374,6 @@ Volcanos("onappend", { _init: function(can, meta, list, cb, target, field) { met
switch (item) {
case "编辑":
var ui = can.page.Appends(can, td, [{type: "input", value: back, onkeydown: function(event) {
console.log("key", event.key)
switch (event.key) {
case "Enter":
td.innerHTML = event.target.value
@ -431,7 +432,6 @@ Volcanos("onappend", { _init: function(can, meta, list, cb, target, field) { met
var ls = can._follow.split(".")
console.log(ls.length, can)
var left = (ls.length > 2) && can.run({}, ["search", can._follow.split(".")[1]+".onexport.left"]) || 0
var top = (ls.length == 3) && can.run({}, ["search", can._follow.split(".")[1]+".onexport.top"]) || 0
var top = (ls.length > 3)? event.y: top
@ -521,6 +521,24 @@ Volcanos("onappend", { _init: function(can, meta, list, cb, target, field) { met
}, true);
})
},
modify: function(can, target, cb) { var back = target.innerHTML
var ui = can.page.Appends(can, target, [{type: "input", value: back, onkeydown: function(event) {
switch (event.key) {
case "Enter":
target.innerHTML = event.target.value
if (event.target.value != back) {
cb(event, event.target.value, back)
}
break
case "Escape":
td.innerHTML = back
break
}
}, onkeyup: function(event) {
}}]); ui.input.focus(), ui.input.setSelectionRange(0, -1)
},
}, [], function(can) {})
Volcanos("onlayout", { _init: function(can, meta, list, cb, target) {
var width = can._width, height = can._height;

View File

@ -147,8 +147,13 @@ var page = Volcanos("page", {help: "网页模块",
data.src = list[0];
} else if (item.row) {type = "tr";
item.list = item.row.map(function(text) {return {text: [text, item.sub||"td"]}});
} else if (item.include) {var list = can.core.List(item.include);
item.list = item.row.map(function(text) {return {text: [text, item.sub||"td"]}})
} else if (item.th) {type = "tr";
item.list = item.th.map(function(text) {return {text: [text, "th"]}})
} else if (item.td) {type = "tr";
item.list = item.td.map(function(text) {return {text: [text, "td"]}})
} else if (item.include) {var list = can.core.List(item.include)
type = "script";
data.src = list[0];
data.onload = list[1];
@ -170,7 +175,7 @@ var page = Volcanos("page", {help: "网页模块",
return target.innerHTML = "", can.page.Append(can, target, key, value)
}),
Remove: shy("删除节点", function(can, target) {
target.parentNode && target.parentNode.removeChild(target)
target && target.parentNode && target.parentNode.removeChild(target)
}),
CopySub: shy("复制节点", function(can, target, source) {

View File

@ -1,41 +1,46 @@
Volcanos("onfigure", {help: "控件详情", list: [],
date: {click: function(event, can, value, cmd, target, figure) {
date: {onclick: function(event, can, item, target) {
can._figure && can.page.Remove(can, can._figure.fieldset)
can._figure = can.onappend.field(can, can._target, "input date", {})
// 设置输入
target.style.width = "120px"
function set(now) {
target.style.width = "120px"; function set(now) {
target.value = can.base.Time(now);
can.item.action == "auto" && can.run({});
item.action == "auto" && can.run({});
}
// 添加插件
var figure = can._figure
figure.table = can.page.Append(can, figure.output, [{type: "table"}]).first
can.page.Modify(can, figure.fieldset, {style: {top: target.offsetTop+20, left: target.offsetLeft}})
can.page.Remove(can, figure.legend)
// 添加控件
can.now = target.value? new Date(target.value): new Date();
var now = target.value? new Date(target.value): new Date();
var control = can.page.AppendAction(can, figure.action, ["今天", "随机",
["hour"].concat(can.core.List(24)), ["minute"].concat(can.core.List(0, 60, 5)), ["second"].concat(can.core.List(0, 60, 5)), {view: ["", "br"]},
{type: "hr", style: {margin: 0}}, {type: "br"},
"上一月", ["year"].concat(can.core.List(can.now.getFullYear() - 20, can.now.getFullYear() + 20)),
"关闭", {type: "hr", style: {margin: 0}},
"上一月", ["year"].concat(can.core.List(now.getFullYear() - 20, now.getFullYear() + 20)),
["month"].concat(can.core.List(1, 13)), "下一月", {view: ["", "br"]},
], function(event, value, cmd) {can.stick = true;
// 设置时间
switch (cmd) {
case "year": can.now.setFullYear(parseInt(value)); show(can.now); return;
case "month": can.now.setMonth(parseInt(value)-1); show(can.now); return;
case "hour": can.now.setHours(parseInt(value)); set(show(can.now)); return;
case "minute": can.now.setMinutes(parseInt(value)); set(show(can.now)); return;
case "second": can.now.setSeconds(parseInt(value)); set(show(can.now)); return;
case "year": now.setFullYear(parseInt(value)); show(now); return;
case "month": now.setMonth(parseInt(value)-1); show(now); return;
case "hour": now.setHours(parseInt(value)); set(show(now)); return;
case "minute": now.setMinutes(parseInt(value)); set(show(now)); return;
case "second": now.setSeconds(parseInt(value)); set(show(now)); return;
}
// 设置日期
switch (value) {
case "今天": can.now = new Date(); set(show(can.now)); break;
case "随机": can.now.setDate((Math.random() * 100 - 50) + can.now.getDate()); set(show(can.now)); break;
case "关闭": can.page.Remove(can, figure.fieldset); break;
case "今天": now = new Date(); set(show(now)); break;
case "随机": now.setDate((Math.random() * 100 - 50) + now.getDate()); set(show(now)); break;
case "关闭": can.page.Remove(can, figure.first); delete(can.figure);
case "前一年": can.now.setFullYear(can.now.getFullYear()-1); show(can.now); break;
case "后一年": can.now.setFullYear(can.now.getFullYear()+1); show(can.now); break;
case "上一月": can.now.setMonth(can.now.getMonth()-1); show(can.now); break;
case "下一月": can.now.setMonth(can.now.getMonth()+1); show(can.now); break;
case "前一年": now.setFullYear(now.getFullYear()-1); show(now); break;
case "后一年": now.setFullYear(now.getFullYear()+1); show(now); break;
case "上一月": now.setMonth(now.getMonth()-1); show(now); break;
case "下一月": now.setMonth(now.getMonth()+1); show(now); break;
}
})
@ -51,7 +56,7 @@ Volcanos("onfigure", {help: "控件详情", list: [],
can.page.Appends(can, figure.table, [{type: "tr", list: can.core.List(["日", "一", "二", "三", "四", "五", "六"], function(day) {return {text: [day, "th"]}})}])
var tr; function add(day, type) {if (day.getDay() == 0) {tr = can.page.Append(can, figure.table, [{type: "tr"}]).tr}
can.page.Append(can, tr, [{text: [day.getDate(), "td", can.base.Time(day).split(" ")[0] == can.base.Time(now).split(" ")[0]? "select": type],
dataset: {date: day.getTime()}, click: function(event) {set(can.now = new Date(parseInt(event.target.dataset.date)))},
dataset: {date: day.getTime()}, click: function(event) {set(now = new Date(parseInt(event.target.dataset.date)))},
}])
}
@ -66,8 +71,6 @@ Volcanos("onfigure", {help: "控件详情", list: [],
for (var day = new Date(one); day < end; day.setDate(day.getDate()+1)) {add(day, "main")}
for (var day = new Date(end); end.getDay() != 0 && day < tail; day.setDate(day.getDate()+1)) {add(day, "next")}
return now
}
set(show(can.now));
}; set(show(now));
}},
})
}, ["/plugin/input/date.css"])

View File

@ -6,7 +6,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
can.onimport[can.Option("scale")](can, msg)
},
_task: function(can, msg, time, values) {
_task: function(can, msg, time, list, view) {
return {text: ["", "td"],
ondragover: function(event) { event.preventDefault()
can.page.Select(can, can.ui.content, "td", function(item) {
@ -14,43 +14,66 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
}), can.page.ClassList.add(can, event.target, "over")
},
ondrop: function(event) { event.preventDefault()
can.run(event, ["action", "modify", "begin_time", time, ""], function(msg) {
value.begin_time = begin_time
can.onimport._display(can, msg, value)
can.onappend.toast(can, "修改成功")
}, true)
event.target.append(can.task)
can.drop(event, event.target, time)
},
list: can.core.List(values, function(value) {
return {view: [value.status, "div", value.name], draggable: true,
ondragstart: function(event) { can.task = event.target },
ondragover: function(event) { event.preventDefault() },
ondrop: function(event) { event.preventDefault() },
list: can.core.List(list, function(task) {
return {view: [task.status, "div", view!="detail"? task.name: task.name+": "+task.text], title: task.text, draggable: true,
ondragstart: function(event) { var target = event.target; can.drop = function(event, td, time) {
var msg = can.request(event); msg.Option(task)
td.append(target), can.run(event, ["action", "modify", "begin_time", time, task.begin_time], function(msg) {
task.begin_time = time, can.onimport._display(can, msg, task)
can.onappend.toast(can, "修改成功")
}, true)
} },
onclick: function(event) {
can.onimport._display(can, msg, value)
can.onimport._display(can, msg, task)
}, oncontextmenu: function(event) { var target = event.target
can.onappend.carte(can, can.ondetail, can.ondetail.list, function(event, item) {
var msg = can.request(event); msg.Option(value)
can.run(event, ["action", "modify", "status", item, value.status], function(msg) {
target.className = value.status = item
can.onimport._display(can, msg, value)
var msg = can.request(event); msg.Option(task)
can.run(event, ["action", "modify", "status", item, task.status], function(msg) {
target.className = task.status = item
can.onimport._display(can, msg, task)
can.onappend.toast(can, "修改成功")
}, true)
})
}}
}) }
},
_display: function(can, msg, value) { can.ui.display.innerHTML = ""
can.page.Append(can, can.ui.display, [{type: "tr", list: [{text: ["key", "th"]}, {text: ["value", "th"]}]}])
can.core.Item(value, function(key, value) {
can.page.Append(can, can.ui.display, [{type: "tr", list: [{text: [key, "td"]}, {text: [value, "td"]}]}])
_display: function(can, msg, task) { can.ui.display.innerHTML = ""
can.Status(task)
can.page.Append(can, can.ui.display, [{th: ["key", "value"]}])
can.core.Item(task, function(key, value) {
can.page.Append(can, can.ui.display, [{td: [key, value], oncontextmenu: function(event) { var target = event.target
can.onappend.carte(can, can.ondetail, ["编辑"].concat(can.ondetail.list), function(event, item, meta) {
var res = can.request(event); res.Option(task)
switch (item) {
case "编辑":
can.onappend.modify(can, target, function(ev, value, old) {
can.run(event, ["action", "modify", key, value, old], function(res) {
task[key] = value
can.onimport._display(can, msg, task)
can.onappend.toast(can, "修改成功")
}, true)
})
break
default:
can.run(event, ["action", "modify", "status", item, task.status], function(res) {
task.status = item
can.onimport._display(can, msg, task)
can.onappend.toast(can, "修改成功")
}, true)
}
})
}}])
})
},
day: function(can, msg) {
var hash = {}; msg.Table(function(value) { var time = new Date(value.time)
day: function(can, msg) { var begin_time = new Date(can.base.Time(can.Option("begin_time")))
function set(hour) {
return can.base.Time(new Date(begin_time-((begin_time.getHours()-hour))*60*60*1000))
}
var hash = {}; msg.Table(function(value) { var time = new Date(value.begin_time)
var key = time.getHours(); hash[key] = (hash[key]||[]).concat([value])
})
@ -59,12 +82,16 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
var table = can.page.Append(can, can.ui.content, [{type: "table", list:
can.core.List(list, function(hour, index) {
if (index == 0) { return {type: "tr", list: [{text: ["time", "th"]}, {text: ["text", "th"]}]} }
return {type: "tr", list: [{text: [can.base.Number(hour), "td"]}, can.onimport._task(can, msg, "2020-06-08 "+hour+":00:00", hash[hour])]}
return {type: "tr", list: [{text: [can.base.Number(hour), "td"]}, can.onimport._task(can, msg, set(hour), hash[hour], "detail")]}
})
}]).table
},
week: function(can, msg) {
var hash = {}; msg.Table(function(value) { var time = new Date(value.time)
week: function(can, msg) { var begin_time = new Date(can.base.Time(can.Option("begin_time")))
function set(week, hour) {
return can.base.Time(new Date(begin_time-((begin_time.getDay()-week)*24+(begin_time.getHours()-hour))*60*60*1000))
}
var hash = {}; msg.Table(function(value) { var time = new Date(value.begin_time)
var key = time.getDay()+" "+time.getHours()
hash[key] = (hash[key]||[]).concat([value])
})
@ -76,9 +103,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
can.core.List(list, function(hour, index) {
if (index == 0) { return {type: "tr", list: can.core.List(head, function(head) { return {text: [head, "th"]} })} }
return {type: "tr", list: can.core.List(head, function(head, index) { if (index == 0) { return {text: [hour, "td"]} }
return {text: ["", "td"], list: can.core.List(hash[index-1+" "+hour], function(value) {
return can.onimport._task(can, msg, value)
})}
return can.onimport._task(can, msg, set(index-1, hour), hash[index-1+" "+hour])
})}
})
}]).table
@ -92,10 +117,28 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
long: function(can, msg) {
},
}, ["/plugin/local/team/miss.css"])
Volcanos("onaction", {help: "组件交互", list: [],
Volcanos("onaction", {help: "组件交互", list: ["添加"],
"添加": function(event, can, key) {
can.require(["/plugin/input/date"], function(can) {
console.log("waht")
})
function time(event) {
can.onfigure.date.onclick(event, can, {}, event.target)
}
can.user.input(event, can, [
"zone", "type", "name", "text",
{name: "begin_time", type: "input", value: can.base.Time(), onclick: time},
{name: "end_timem", type: "input", value: can.base.Time(), onclick: time},
], function(event, button, data, list) {
can.run(event, ["action", "insert"].concat(list), function(msg) {
}, true)
return true
})
},
})
Volcanos("ondetail", {help: "菜单交互", list: ["prepare", "process", "finish", "cancel"],
})
Volcanos("onexport", {help: "导出数据", list: [],
Volcanos("onexport", {help: "导出数据", list: ["begin_time", "zone", "id", "type", "name"],
})