mirror of
https://shylinux.com/x/volcanos
synced 2025-04-25 08:48:06 +08:00
opt miss.js
This commit is contained in:
parent
669242c25a
commit
aed2e98f2c
42
frame.js
42
frame.js
@ -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;
|
||||
|
11
lib/page.js
11
lib/page.js
@ -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) {
|
||||
|
@ -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"])
|
||||
|
@ -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"],
|
||||
})
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user