From 0740f85d483bb1179f8b7401e45ed4dec623ca52 Mon Sep 17 00:00:00 2001 From: shaoying Date: Wed, 13 Jan 2021 08:39:21 +0800 Subject: [PATCH] add camera --- frame.js | 35 ++++++++++++++++++++++------------- lib/user.js | 5 +++++ page/index.css | 19 +++++++++++++++++++ pane/River.js | 14 +++++++++----- pane/Search.css | 4 ++++ pane/Search.js | 42 ++++++++++++++++++++++-------------------- plugin/input.js | 2 +- 7 files changed, 82 insertions(+), 39 deletions(-) diff --git a/frame.js b/frame.js index 435e0e1c..4a98a607 100644 --- a/frame.js +++ b/frame.js @@ -428,7 +428,7 @@ Volcanos("onlayout", {help: "页面布局", list: [], _init: function(can, targe }) }) - if (can.user.isMobile || can.user.Search(can, "share")) { return } + if (can.user.isMobile) { return } can.onengine.trigger(can, can.request(event, {width: width, height: height}), "resize") can.page.Select(can, target, ["fieldset.main"], function(field, index) { @@ -444,26 +444,35 @@ Volcanos("onlayout", {help: "页面布局", list: [], _init: function(can, targe }, profile: function(can, target) { - can.ui = can.page.Append(can, target, [{type: "table", list: [{type: "tr", list: [ - {type: "td", list: [{view: ["project", "div", "project"]}]}, - {type: "td", list: [{type: "tr", list: [{type: "table", list: [ - {type: "td", list: [{view: ["content", "div", "content"]}]}, - {type: "td", list: [{view: ["profile", "div", "profile"]}]}, - ]}]}, {type: "tr", list: [ - {type: "td", list: [{view: ["display", "div", "display"]}]} - ]}]} + return can.page.Append(can, target, [{view: ["void", "table"], list: [{type: "tr", list: [ + {type: "td", list: [{view: ["project"]}]}, + {type: "td", list: [ + {view: ["void", "table"], list: [ + {type: "tr", list: [{view: ["void", "table"], list: [ + {type: "tr", list: [ + {type: "td", list: [{view: ["content"]}]}, + {type: "td", list: [{view: ["profile"]}]}, + ]} + ]}]}, + {type: "tr", list: [ + {type: "td", list: [{view: ["display"]}]} + ]} + ]} + ]} ]}] }]) }, project: function(can, target) { - can.ui = can.page.Append(can, target, [{type: "table", list: [{type: "tr", list: [ + can.ui = can.page.Append(can, target, [{view: ["void", "table"], list: [{type: "tr", list: [ {type: "td", list: [{view: "project"}]}, {type: "td", list: [ - {type: "tr", list: [{view: "content"}]}, - {type: "tr", list: [{view: "display"}]}, + {view: ["void", "table"], list: [ + {type: "tr", list: [{view: "content"}]}, + {type: "tr", list: [{view: "display"}]}, + ]} ]} ]}] }]) }, display: function(can, target) { target = target || can._target - return can.page.Appends(can, target, [{type: "table", list: [ + return can.page.Appends(can, target, [{view: ["void", "table"], list: [ {type: "tr", list: [{view: "content"}]}, {type: "tr", list: [{view: "display"}]}, ]}]) diff --git a/lib/user.js b/lib/user.js index b1f18a60..486bb5f9 100644 --- a/lib/user.js +++ b/lib/user.js @@ -46,6 +46,11 @@ Volcanos("user", {help: "用户模块", agent: { can.user.toast(can, text, "复制成功") }, + camera: function(can, msg, cb) { + navigator.getUserMedia({video: true}, cb, function(error) { + can.base.Log(error) + }) + }, trans: function(can, text) { if (typeof text == "function") { text = text.name || "" diff --git a/page/index.css b/page/index.css index 5d792880..f6f8f0ba 100644 --- a/page/index.css +++ b/page/index.css @@ -77,6 +77,25 @@ select { padding:0 10px; } +table.void>tr { + margin:0;border:0;padding:0; +} +table.void>tr>th { + margin:0;border:0;padding:0; +} +table.void>tr>td { + margin:0;border:0;padding:0; +} +table.void>tr:hover { + background-color:#0fbd4500; +} +table.void>tr>th:hover { + background-color:#0fbd4500; +} +table.void>tr>td:hover { + background-color:#0fbd4500; +} + table { border:0; white-space:pre; font-size:14px; font-family:monospace; diff --git a/pane/River.js b/pane/River.js index 740b02ee..ffe6eb68 100644 --- a/pane/River.js +++ b/pane/River.js @@ -5,7 +5,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, can.run({}, ["search", "Header.onimport.menu", "river", ["添加", "创建群组", "添加应用", "添加工具", "添加用户", "添加设备"], - ["访问", "访问研发", "访问应用", "访问工具", "访问用户", "访问设备"], + ["访问", "访问研发", "访问应用", "访问工具", "访问用户", "访问设备", "访问任务"], ["共享", "共享群组", "共享应用", "共享工具", "共享用户", "共享设备"], ], function(event, item) { var cb = can.ondetail[item]; typeof cb == "function" && cb(event, can, item, can.Conf(RIVER), can.Conf(STORM)) @@ -221,8 +221,8 @@ Volcanos("ondetail", {help: "菜单交互", list: ["共享群组", "添加用户 }) }, - "访问用户": function(event, can, button, river, storm) { - can.user.select(event, can, "user", "time,type,name,text") + "访问研发": function(event, can, button, river, storm) { + can.user.select(event, can, "github", "time,type,name,text") }, "访问应用": function(event, can, button, river, storm) { can.user.select(event, can, "storm", "type,name,text") @@ -230,11 +230,15 @@ Volcanos("ondetail", {help: "菜单交互", list: ["共享群组", "添加用户 "访问工具": function(event, can, button, river, storm) { can.user.select(event, can, "plugin", "type,name,text") }, + "访问用户": function(event, can, button, river, storm) { + can.user.select(event, can, "user", "time,type,name,text") + }, "访问设备": function(event, can, button, river, storm) { can.user.select(event, can, "space", "time,type,name,text") }, - "访问研发": function(event, can, button, river, storm) { - can.user.select(event, can, "github", "time,type,name,text") + "访问任务": function(event, can, button, river, storm) { + var msg = can.request(event, {index: "web.team.task"}) + can.user.select(event, can, "task", "time,type,name,text") }, }) Volcanos("onexport", {help: "导出数据", list: [], diff --git a/pane/Search.css b/pane/Search.css index 79752ef9..3fc6b2f5 100644 --- a/pane/Search.css +++ b/pane/Search.css @@ -20,3 +20,7 @@ fieldset.Search div.output div.display { max-height:200px; overflow:auto; } +fieldset.Search div.output div.profile { + max-height:400px; + overflow:auto; +} diff --git a/pane/Search.js b/pane/Search.js index ad02495c..c5b3efa7 100644 --- a/pane/Search.js +++ b/pane/Search.js @@ -1,31 +1,32 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) { - can.ui = can.page.Append(can, can._output, [ - {input: ["word", function(event) { can.onkeypop.input(event, can) - if (event.key == "Escape") { can.onmotion.hide(can) } + can.ui = can.onlayout.profile(can, can._output) + can.ui.table = can.page.Append(can, can.ui.display, [{type: "table"}]).first + + can.ui.word = can.page.Append(can, can._action, [{input: ["word", function(event) { can.onkeypop.input(event, can) + if (event.key == "Escape") { can.onmotion.hide(can) } + + if (event.key == "Enter") { event.stopPropagation(), event.preventDefault() + if (event.ctrlKey && can.onaction.choice(event, can, 0)) { return } + can.input(event, event.target.value) + } + }]}]).first - if (event.key == "Enter") { event.stopPropagation(), event.preventDefault() - if (event.ctrlKey && can.onaction.choice(event, can, 0)) { return } - can.input(event, event.target.value) - } - }]}, - {view: "content"}, {view: "display", list: [{type: "table"}]}, - ]) typeof cb == "function" && cb(msg) }, _table: function(can, msg, fields) { can.onmotion.clear(can, can.ui.content) - var table = can.onappend.table(can, msg, can.ui.content, "table", function(value, key, index, line) { - can.Status("count", index+1) + var table = can.onappend.table(can, msg, can.ui.content, "table", function(value, key, index, line) { can.Status("count", index+1) return {text: [key == "text" && typeof line.text == "function" && line.text.help || value, "td"], onclick: function(event) { - if (event.shiftKey) { var msg = can.request(event, line) - can.onappend.plugin(can, {index: line.ctx+"."+line.cmd}, function(story, meta) { + // if (event.shiftKey) { + can.onappend.plugin(can, {index: msg.Option("index")||line.ctx+"."+line.cmd, arg: [line.type, line.name]}, function(story, meta) { story.run = function(event, cmds, cb, silent) { - can.run(event, ["plugin", "run", meta.index].concat(cmds), function(msg) { + can.run(event, ["action", "command", "run", meta.index].concat(cmds), function(msg) { typeof cb == "function" && cb(msg) }) } - }, can.ui.display) - return - } + }, can.ui.profile) + can.onmotion.clear(can, can.ui.profile) + // return + // } if (line.ctx == "web.chat" && line.cmd == "/search") { can.onimport.select(can, can.request(), [line.type, line.name, line.text], can.cb) return @@ -50,10 +51,11 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, can.page.Modify(can, can.ui.table, {style: {width: table.offsetWidth}}) }, _word: function(can, msg, cmds, fields) { - var msg = can.request({}, {fields: fields.join(","), word: cmds}) + can.request(msg._event, {fields: fields.join(","), word: cmds}) can.onengine.trigger(can, msg, "search") can.onmotion.clear(can, can.ui.content) + can.onmotion.clear(can, can.ui.profile) can.run(msg._event, cmds, function(msg) { can.list = msg.Table() can.onimport._table(can, msg, fields) }) @@ -77,7 +79,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, can.page.Modify(can, can._target, {style: {left: item.offsetWidth}}) }) - can.onmotion.show(can), can.ui.input.focus() + can.onmotion.show(can), can.ui.word.focus() can.onimport._word(can, msg, cmds, fields) }, }) diff --git a/plugin/input.js b/plugin/input.js index 92d6ede4..674fc3b5 100644 --- a/plugin/input.js +++ b/plugin/input.js @@ -65,7 +65,7 @@ Volcanos("onaction", {help: "控件交互", list: [], _init: function(can, meta, var input = feature && feature[name]; if (input) { return can.sup.onaction.input(event, can.sup, name, function(msg) { if (can.sup._outputs && can.sup._outputs.length > 0) { var i = can.sup._outputs.length - 1 - can.sup._outputs[i].onimport._process(can.sup._outputs[i], msg) + can.sup._outputs[i].onimport._process && can.sup._outputs[i].onimport._process(can.sup._outputs[i], msg) return }; can.sup.onimport._process(can.sup, msg) })