diff --git a/frame.js b/frame.js index 5968d22f..57e03b12 100644 --- a/frame.js +++ b/frame.js @@ -137,7 +137,7 @@ Volcanos("onappend", { _init: function(can, meta, list, cb, target, field) { met 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 + value == undefined? (value = item.innerHTML): (item.innerHTML = value) }) return value }, @@ -261,7 +261,8 @@ Volcanos("onappend", { _init: function(can, meta, list, cb, target, field) { met 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) + var cb = can.onaction[item] || can.onkeymap && can.onkeymap._remote + cb? cb(event, can, item): can.run(event, ["action", item], function(msg) {}, true) }}): item.length > 0? can.onappend.input(can, action, "input", {type: "select", values: item.slice(1), name: item[0], onchange: function(event) { can.onaction[item[0]](event, can, item[0], item[event.target.selectedIndex+1]) }}): typeof item == "object" && can.onappend.input(can, action, "input", item) @@ -351,7 +352,7 @@ Volcanos("onappend", { _init: function(can, meta, list, cb, target, field) { met item.type == "textarea" && can.page.Append(can, option, [{type: "br"}]); item.type == "text" && !target.placeholder && (target.placeholder = item.name || ""); - item.type != "button" && !target.title && (target.title = target.placeholder); + item.type == "text" && !target.title && (target.title = target.placeholder); // item.type == "button" && item.action == "auto" && can.run && can.run({}); // item.type == "select" && (target.value = item.value || item.values[item.index||0]); return target; @@ -460,10 +461,9 @@ Volcanos("onappend", { _init: function(can, meta, list, cb, target, field) { met var width = meta.width||200, height = meta.height||100 var pos = {position: "absolute", display: "block", - width: width+"px", - top: document.body.clientHeight/2-height/2, + width: width, bottom: 100, left: document.body.clientWidth/2-width/2, - }; pos.left += "px"; pos.top += "px"; + }; can.page.Modify(can, can._toast, {style: pos}) can.Timer({value: 1000, length: (meta.duration||3000)/1000}, function(event, interval, index) { diff --git a/lib/page.js b/lib/page.js index 86d9be47..fb8c8cb1 100644 --- a/lib/page.js +++ b/lib/page.js @@ -36,8 +36,8 @@ var page = Volcanos("page", {help: "网页模块", "width": true, "height": true, "max-height": true, "margin-left": true, - "left": true, - "top": true, + "left": true, "right": true, + "top": true, "bottom": true, } if (size[sub] && (typeof value == "number" || !value.endsWith("px"))) { value += "px" diff --git a/lib/user.js b/lib/user.js index 7c59c1c5..9cbf03ae 100644 --- a/lib/user.js +++ b/lib/user.js @@ -78,6 +78,10 @@ var user = Volcanos("user", {help: "用户模块", return key+"="+encodeURIComponent(value) }).join("&") }), + Searchs: shy("请求参数", function(can, key, def) { + return can.user.Search(can, "active") == can._name? can.user.Search(can, key): def + }), + Cookie: shy("会话变量", function(can, key, value, path) { function set(k, v) {document.cookie = k+"="+v+";path="+(path||"/")} diff --git a/plugin/inner.js b/plugin/inner.js index 8fa73c6c..f9c7410a 100644 --- a/plugin/inner.js +++ b/plugin/inner.js @@ -52,6 +52,8 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, list, cb, can.page.Append(can, can._action, [{view: ["file", "div", name], onclick: function(event) { can.onsyntax._init(can, can.tabview[path+name] = msg) can.Option({path: path, name: name, key: ""}) + }, ondblclick: function(event) { + can.onkeymap._remote(event, can, "运行") }, oncontextmenu: function(event) { can.onappend.carte(can, null, ["保存", "运行"]) }}]).first.click() @@ -530,7 +532,7 @@ Volcanos("onkeymap", {help: "键盘交互", list: ["command", "normal", "insert" }) Volcanos("onaction", {help: "控件交互", list: [ "", "项目", "上传", - "", "保存", "运行", "日志", + "", "保存", "运行", "串行", "并行", "日志", "", "提交", "历史", "记录", "复盘", "", "收藏", "列表", "搜索", "推荐", ], @@ -577,6 +579,19 @@ Volcanos("onaction", {help: "控件交互", list: [ return target }, + "串行": function(event, can, msg) { + can.core.Next(can.page.Select(can, can._action, "div.file", function(item) { + return item.innerHTML + + }), function(item, next) { + can.run({}, ["action", "run", can.Option("path"), item], function(msg) { + next() + }, true) + + }, function() { + can.onappend.toast(can, "执行成功") + }) + }, "项目": function(event, can) { can.onlayout.project(can) }, "上传": function(event, can) { can.onappend.upload(can) }, "搜索": function(event, can) { can.onkeymap._remote(event, can, "搜索", ["action", "find", "vim.history", "", "id", "type", "name", "text"]) }, diff --git a/plugin/input.js b/plugin/input.js index aff68da2..1ea7cf4a 100644 --- a/plugin/input.js +++ b/plugin/input.js @@ -4,7 +4,10 @@ Volcanos("onimport", {help: "导入数据", list: [], }) Volcanos("onaction", {help: "控件交互", list: [], onchange: function(event, can) { - console.log(can.Conf()) + can.run(event) + // if (can.Conf("auto") == "true") { + // can.run(event) + // } }, onclick: function(event, can) { switch (can.Conf("type")) { diff --git a/plugin/local/team/miss.js b/plugin/local/team/miss.js index db26c316..0653c9e8 100644 --- a/plugin/local/team/miss.js +++ b/plugin/local/team/miss.js @@ -1,16 +1,17 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) { can._target.innerHTML = "" - can.ui = can.page.Append(can, can._target, [ - {view: ["project", "table"], style: {display: can.user.Search(can, "project")||"none"}}, + can._name = "plan", can.ui = can.page.Append(can, can._target, [ + {view: ["project", "table"], style: {display: can.user.Searchs(can, "project")||"none"}}, {view: ["content", "table"]}, - {view: ["profile", "table"], style: {display: can.user.Search(can, "project")||"none"}}, + {view: ["profile", "table"], style: {display: can.user.Searchs(can, "profile")||"none"}}, ]) + can.onimport[can.Option("scale")](can, msg) can.Timer(10, function() { can.onimport._stat(can, msg) - can.page.Select(can, can.ui.content, "div.item.id"+can.user.Search(can, "id"), function(item) { + can.page.Select(can, can.ui.content, "div.item.id"+can.user.Searchs(can, "id"), function(item) { item.click() }) + can.onaction.view({}, can, "view", can.user.Search(can, "view")) }) - can.onimport[can.Option("scale")](can, msg) }, _stat: function(can, msg) { var stat = { @@ -26,23 +27,28 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, stat.count++ }) can.Status("count", stat.process+"/"+stat.count) - can.page.Append(can, can.ui.project, [ - {th: ["key", "value"]}, - {td: ["prepare", stat.prepare]}, - {td: ["process", stat.process]}, - {td: ["cancel", stat.cancel]}, - {td: ["finish", stat.finish]}, - stat.l1 > 0 && {td: ["level-1", stat.l1]}, - stat.l2 > 0 && {td: ["level-2", stat.l2]}, - stat.l3 > 0 && {td: ["level-3", stat.l3]}, - stat.l4 > 0 && {td: ["level-4", stat.l4]}, - stat.l5 > 0 && {td: ["level-5", stat.l5]}, - stat.s1 > 0 && {td: ["score-1", stat.s1]}, - stat.s2 > 0 && {td: ["score-2", stat.s2]}, - stat.s3 > 0 && {td: ["score-3", stat.s3]}, - stat.s4 > 0 && {td: ["score-4", stat.s4]}, - stat.s5 > 0 && {td: ["score-5", stat.s5]}, - ]) + + can.page.Append(can, can.ui.project, [ {th: ["key", "value"]} ]) + can.core.List(["prepare", "process", "cancel", "finish"], function(item) { + can.page.Append(can, can.ui.project, [{td: [item, stat[item]], onclick: function(event) { + can.onaction._filter(event, can, "status", item) + } }]) + }) + + can.core.List(["1", "2", "3", "4", "5"], function(item) { + stat["l"+item] > 0 && can.page.Append(can, can.ui.project, [ + {td: ["level-"+item, stat["l"+item]], onclick: function(event) { + can.onaction._filter(event, can, "level", "l"+item) + }} + ]) + }) + can.core.List(["1", "2", "3", "4", "5"], function(item) { + stat["s"+item] > 0 && can.page.Append(can, can.ui.project, [ + {td: ["score-"+item, stat["s"+item]], onclick: function(event) { + can.onaction._filter(event, can, "score", "s"+item) + }} + ]) + }) }, _task: function(can, msg, time, list, view) { return {text: ["", "td"], @@ -55,8 +61,8 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, can.drop(event, event.target, time) }, list: can.core.List(list, function(task) { - return typeof task == "string"? {view: ["date", "div", task]}: {view: [["item", task.status, "id"+task.id, "l"+(task.level||""), "s"+(task.score||"")].join(" "), - "div", can.onexport[can.Action("view")||view||"name"](can, task)], + return typeof task == "string"? {view: ["date", "div", task]}: {view: [can.onexport.style(can, task), "div", + can.onexport[can.Action("view")||view||"name"](can, task)], title: can.onexport.title(can, task), draggable: true, ondragstart: function(event) { var target = event.target; can.drop = function(event, td, time) { td.append(target) can.onaction.modifyTask(event, can, task, "begin_time", time, task.begin_time) @@ -64,6 +70,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, can.onimport._profile(can, msg, task) }, oncontextmenu: function(event) { var target = event.target can.onappend.carte(can, can.ondetail, can.ondetail.list, function(event, item) { + can.onaction.modifyTask(event, can, task, "status", item) }) }} }) } @@ -195,11 +202,12 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, }]).table }, }, ["/plugin/local/team/miss.css"]) -Volcanos("onaction", {help: "组件交互", list: ["统计","详情", "添加", +Volcanos("onaction", {help: "组件交互", list: ["统计","详情", "", ["level", "all", "l1", "l2", "l3", "l4", "l5"], ["status", "all", "prepare", "process", "cancel", "finish"], ["score", "all", "s1", "s2", "s3", "s4", "s5"], ["view", "", "name", "text", "level", "score"], + "添加", "导出", "导入", ], modifyTask: function(event, can, task, key, value) { var msg = can.request(event); msg.Option(task) @@ -226,12 +234,14 @@ Volcanos("onaction", {help: "组件交互", list: ["统计","详情", "添加", count++ }) can.Status("count", count) + can.Action(key, value) }, level: function(event, can, key, value) { can.onaction._filter(event, can, key, value) }, status: function(event, can, key, value) { can.onaction._filter(event, can, key, value) }, score: function(event, can, key, value) { can.onaction._filter(event, can, key, value) }, + view: function(event, can, key, value) { can.ui.content.innerHTML = "" - can.onimport[can.Option("scale")](can, can._msg) + can.Action(key, value), can.onimport[can.Option("scale")](can, can._msg) }, "统计": function(event, can, key) { @@ -241,16 +251,13 @@ Volcanos("onaction", {help: "组件交互", list: ["统计","详情", "添加", can.page.Modify(can, can.ui.profile, {style: {display: can.ui.profile.style.display=="none"? "table": "none"}}) }, "添加": function(event, can, key) { - can.require(["/plugin/input/date"], function(can) { - console.log("waht") - }) - function time(event) { + var now = new Date(); can.require(["/plugin/input/date"]); function date(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}, + {name: "begin_time", type: "input", value: can.base.Time(can.base.TimeAdd(now, now.getHours()/24)), onclick: date}, + {name: "end_time", type: "input", value: can.base.Time(can.base.TimeAdd(now, (now.getHours()+1)/24)), onclick: date}, ], function(event, button, data, list) { can.run(event, ["action", "insert"].concat(list), function(msg) { @@ -277,11 +284,15 @@ Volcanos("onexport", {help: "导出数据", list: ["count", "begin_time", "zone" title: function(can, task) { return task.zone+": "+(task.type||"") }, + style: function(can, task) { + return ["item", task.status, "id"+task.id, "l"+(task.level||""), "s"+(task.score||"")].join(" ") + }, key: function(can, msg) { msg.Option("project", can.ui.project.style.display) msg.Option("profile", can.ui.profile.style.display) msg.Option("id", can.Status("id")) + msg.Option("view", can.Action("view")) }, })