mirror of
https://shylinux.com/x/volcanos
synced 2025-04-25 08:48:06 +08:00
opt miss
This commit is contained in:
parent
9f9da31b4f
commit
95dce31deb
@ -5,7 +5,7 @@ App({
|
||||
conf: {serve: "https://shylinux.com/chat"},
|
||||
request: function(cmd, data, cb) {var app = this; data.sessid = app.conf.sessid
|
||||
wx.request({method: "POST", url: app.conf.serve+"/"+cmd, data: data, success(res) {var msg = res.data
|
||||
console.log(msg)
|
||||
console.log("POST", cmd, msg)
|
||||
if (res.statusCode == 401) {
|
||||
app.usercode(function() {app.request(cmd, data, cb)})
|
||||
return
|
||||
@ -26,6 +26,17 @@ App({
|
||||
}
|
||||
},
|
||||
}
|
||||
var row = 0
|
||||
var index = []
|
||||
if (msg.append) {
|
||||
for (var i = 0; i < msg.append.length; i++) {
|
||||
row = msg[msg.append[i]].length > row? msg[msg.append[i]].length: row
|
||||
}
|
||||
for (var i = 0; i < row; i++) {
|
||||
index.push(i)
|
||||
}
|
||||
}
|
||||
msg._index = index
|
||||
typeof cb == "function" && cb(msg)
|
||||
}})
|
||||
},
|
||||
@ -54,5 +65,6 @@ App({
|
||||
toast: function(title) {wx.showToast({title: title})},
|
||||
onLaunch: function() {
|
||||
this.conf.sessid = wx.getStorageSync("sessid")
|
||||
console.log("load", "sessid", this.conf.sessid)
|
||||
},
|
||||
})
|
||||
|
@ -1,5 +1,5 @@
|
||||
<template name="list-name">
|
||||
<table wx:if="{{msg.append && msg.append[0]}}">
|
||||
<tr wx:for="{{msg[msg.append[0]]}}" bindtap="onClick" data-index="{{index}}"><td class="item">{{msg.name[index]}}</td></tr>
|
||||
<tr wx:for="{{msg[msg.append[0]]}}" wx:key="name" bindtap="onClick" data-index="{{index}}"><td class="item">{{msg.name[index]}}</td></tr>
|
||||
</table>
|
||||
</template>
|
||||
|
@ -11,33 +11,34 @@ Page({
|
||||
{name: "共享", bind: "refresh"},
|
||||
{name: "扫码", bind: "action"},
|
||||
],
|
||||
msg: {append: ["hi", "he"], hi: [1, 2], he: [3, 4]},
|
||||
res: [],
|
||||
his: {},
|
||||
inputs: {},
|
||||
},
|
||||
run: function(order, cb) {var page = this, field = page.data.res[order]
|
||||
var his = page.data.his[order] || []
|
||||
run: function(order, cmd, cb) {var page = this, field = page.data.res[order]
|
||||
// var his = page.data.his[order] || []
|
||||
var arg = []
|
||||
field.inputs.forEach(function(input) {
|
||||
if (input._input == "text") {
|
||||
arg.push(input.value||"")
|
||||
}
|
||||
})
|
||||
his.push(arg)
|
||||
page.data.his[order] = his
|
||||
|
||||
var cmds = [page.data.river, page.data.storm, order]
|
||||
field.inputs.forEach(function(input) {
|
||||
if (input._input == "text") {
|
||||
cmds.push(input.value||"")
|
||||
if (input._input == "textarea") {
|
||||
arg.push(input.value||"")
|
||||
}
|
||||
})
|
||||
// his.push(arg)
|
||||
// page.data.his[order] = his
|
||||
|
||||
var cmds = [page.data.river, page.data.storm, order]
|
||||
cmds = cmds.concat(cmd||arg||[])
|
||||
|
||||
for (var i = cmds.length-1; i > 0; i--) {
|
||||
if (cmds[i] === "") {cmds.pop()} else {break}
|
||||
}
|
||||
app.request("action", {cmds: cmds}, function(msg) {
|
||||
page.data.res[order].msg = msg
|
||||
page.setData({res: page.data.res})
|
||||
console.log("update-----", page.data.res[order])
|
||||
typeof cb == "function" && cb(msg)
|
||||
})
|
||||
},
|
||||
@ -48,7 +49,7 @@ Page({
|
||||
break
|
||||
case "串行":
|
||||
function cb(i) {
|
||||
page.run(i, function() {i < page.data.res.length && cb(i+1)})
|
||||
page.run(i, null, function() {i < page.data.res.length && cb(i+1)})
|
||||
}
|
||||
cb(0)
|
||||
break
|
||||
@ -82,10 +83,34 @@ Page({
|
||||
onEnter: function(event) {var page = this, data = event.target.dataset
|
||||
page.data.res[data.order].inputs[data.index].value = event.detail.value
|
||||
},
|
||||
onfigure: {
|
||||
key: {
|
||||
click: function(event, page, data, cmd, field) {
|
||||
page.run(data.order, ["action", "input", data.item.name, data.item.value], function(msg) {
|
||||
console.log("onkey-----", page.data.res[data.order])
|
||||
})
|
||||
},
|
||||
},
|
||||
location: {
|
||||
click: function(event, page, data, cmd, field) {
|
||||
wx.chooseLocation({success: function(res) {
|
||||
field.inputs[data.index].value = res.name
|
||||
page.setData({res: page.data.res})
|
||||
page.run(data.order, ["action", "location", res.name, res.address, res.latitude*100000, res.longitude*100000])
|
||||
}})
|
||||
},
|
||||
}
|
||||
},
|
||||
onClick: function(event) {var page = this, data = event.target.dataset
|
||||
var field = page.data.res[data.order]
|
||||
if (data && data.item && data.item._input == "text") {
|
||||
var figure = page.onfigure[data.item.cb||data.item.figure||data.item.name]
|
||||
figure && figure.click(event, page, data, "what", field)
|
||||
return
|
||||
}
|
||||
switch (data.input.cb) {
|
||||
case "Last":
|
||||
break
|
||||
var his = page.data.his[data.order] || []
|
||||
his.pop()
|
||||
var arg = his.pop()
|
||||
@ -105,15 +130,21 @@ Page({
|
||||
page.data.res[data.order].inputs.forEach(function(input) {
|
||||
if (input.name == data.field) {
|
||||
input.value = data.value
|
||||
if (input.action == "auto") {
|
||||
page.run(data.order)
|
||||
}
|
||||
page.setData({res: page.data.res})
|
||||
page.data.inputs[data.order] = page.data.res[data.order].inputs
|
||||
|
||||
if (input.action == "auto") {
|
||||
page.run(data.order, null, function(msg) {
|
||||
console.log("onwhich-----", page.data.res[data.order])
|
||||
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
onLoad: function (options) {var page = this
|
||||
console.log("page", "action", options)
|
||||
app.conf.sessid = app.conf.sessid || options.sessid
|
||||
page.data.river = options.river
|
||||
page.data.storm = options.storm
|
||||
|
@ -1,15 +1,21 @@
|
||||
<view class="display">
|
||||
<view class="action">
|
||||
<view wx:for="{{button}}">
|
||||
<view wx:for="{{button}}" wx:key="name">
|
||||
<button size="mini" bindtap="{{item.bind}}" data-name="{{item.name}}">{{item.name}}</button>
|
||||
</view>
|
||||
</view>
|
||||
<view class="field" wx:for="{{res}}" wx:for-index="order" wx:for-item="field">
|
||||
|
||||
<view class="field" wx:for="{{res}}" wx:key="name" wx:for-index="order" wx:for-item="field">
|
||||
<view class="detail">
|
||||
<view><text class="title">{{field.name}}({{field.help}})</text></view>
|
||||
<view wx:for="{{field.inputs}}" class="inputs">
|
||||
<view wx:for="{{field.inputs}}" wx:key="name" class="inputs">
|
||||
<view wx:if="{{item._input == 'text'}}">
|
||||
<input type="text" value="{{item.value}}" placeholder="{{item.name}}" bindblur="onBlur" bindconfirm="onEnter" data-order="{{order}}" data-index="{{index}}" data-item="{{item}}"/>
|
||||
<input type="text" value="{{item.value}}" placeholder="{{item.name}}"
|
||||
bindtap="onClick" bindblur="onBlur" bindconfirm="onEnter" data-order="{{order}}" data-index="{{index}}" data-item="{{item}}"/>
|
||||
</view>
|
||||
<view wx:elif="{{item._input == 'textarea'}}" class="textarea">
|
||||
<textarea value="{{item.value||item.name}}" placeholder="{{item.name}}"
|
||||
bindtap="onClick" bindblur="onBlur" data-order="{{order}}" data-field="{{field}}" data-index="{{index}}" data-input="{{item}}"></textarea>
|
||||
</view>
|
||||
<view wx:elif="{{item._input == 'button'}}" class="button">
|
||||
<button size="mini" bindtap="onClick" data-order="{{order}}" data-field="{{field}}" data-index="{{index}}" data-input="{{item}}">{{item.value||item.name}}</button>
|
||||
@ -18,10 +24,10 @@
|
||||
</view>
|
||||
|
||||
<table wx:if="{{field.msg}}">
|
||||
<tr><th wx:for="{{field.msg.append}}">{{item}}</th></tr>
|
||||
<tr wx:for="{{field.msg[field.msg.append[0]]}}" wx:for-index="line"><td wx:for="{{field.msg.append}}" bindtap="onWhich" data-value="{{field.msg[item][line]}}" data-index="{{line}}" data-field="{{item}}" data-order="{{order}}">{{field.msg[item][line]}}</td></tr>
|
||||
<tr><th wx:for="{{field.msg.append}}" wx:key="name">{{item}}</th></tr>
|
||||
<tr wx:for="{{field.msg._index}}" wx:key="name" wx:for-index="line"><td wx:for="{{field.msg.append}}" bindtap="onWhich" data-value="{{field.msg[item][line]}}" data-index="{{line}}" data-field="{{item}}" data-order="{{order}}">{{field.msg[item][line]}}</td></tr>
|
||||
</table>
|
||||
<view class="output" wx:if="{{field.msg.result && field.feature && field.feature.display == 'inner'}}"><rich-text wx:for="{{field.msg.result}}" nodes="{{item}}"></rich-text></view>
|
||||
<view class="output" wx:elif="{{field.msg.result}}"><text wx:for="{{field.msg.result}}">{{item}}</text></view>
|
||||
<view class="output" wx:if="{{field.msg.result && field.feature && field.feature.display == 'inner'}}"><rich-text wx:for="{{field.msg.result}}" wx:key="name" nodes="{{item}}"></rich-text></view>
|
||||
<view class="output" wx:elif="{{field.msg.result}}"><text wx:for="{{field.msg.result}}" wx:key="name">{{item}}</text></view>
|
||||
</view>
|
||||
</view>
|
||||
|
@ -5,19 +5,25 @@ view.detail {
|
||||
margin-top:10px;
|
||||
clear:both;
|
||||
}
|
||||
input {
|
||||
width:80px;
|
||||
}
|
||||
text.title {
|
||||
view.detail text.title {
|
||||
font-weight:bold;
|
||||
font-size:18px;
|
||||
}
|
||||
view.detail>view.inputs>view {
|
||||
view.detail view.inputs>view {
|
||||
float:left;
|
||||
}
|
||||
.input {
|
||||
view.detail input {
|
||||
width:80px;
|
||||
margin:2px;
|
||||
padding:2px;
|
||||
border:solid 1px green;
|
||||
}
|
||||
.output {
|
||||
view.detail view.textarea {
|
||||
clear:both;
|
||||
width:calc(100% - 2px);
|
||||
border:solid 1px green;
|
||||
}
|
||||
view.output {
|
||||
background-color:#272822;
|
||||
}
|
||||
|
||||
|
@ -19,6 +19,7 @@ Page({
|
||||
onClick: function(event) {this.toStorm(event.currentTarget.dataset.index)},
|
||||
|
||||
onLoad: function (options) {
|
||||
console.log("page", "river", options)
|
||||
app.conf.sessid = app.conf.sessid || options.sessid
|
||||
this.refresh()
|
||||
},
|
||||
|
@ -18,6 +18,7 @@ Page({
|
||||
onClick: function(event) {this.toAction(event.currentTarget.dataset.index)},
|
||||
|
||||
onLoad: function (options) {
|
||||
console.log("page", "storm", options)
|
||||
app.conf.sessid = app.conf.sessid || options.sessid
|
||||
this.data.river = options.river, this.refresh()
|
||||
},
|
||||
|
66
frame.js
66
frame.js
@ -1,6 +1,6 @@
|
||||
var can = Volcanos("chat", {
|
||||
Page: shy("构造网页", function(can, name, conf, cb, body) {
|
||||
var page = Volcanos(name, {_type: "local", _panes: {}, target: body,
|
||||
var page = Volcanos(name, {_type: "local", _panes: {}, _views: {}, target: body,
|
||||
Plugin: can.Plugin, Inputs: can.Inputs, Output: can.Output,
|
||||
|
||||
Import: function(event, value, key) {var cb = page.onimport[key];
|
||||
@ -18,7 +18,7 @@ var can = Volcanos("chat", {
|
||||
page.onimport._init && page.onimport._init(page, page.Conf(conf), body)
|
||||
|
||||
can.core.Next(conf.pane, function(item, cb) {
|
||||
page._panes[item.name] = page[item.pos] = page[item.name] = can.Pane(page, item.name, item, cb,
|
||||
page._panes[item.name] = page[item.name] = page._views[item.pos] = page[item.pos] = can.Pane(page, item.name, item, cb,
|
||||
can.page.Select(can, body, "fieldset."+item.name)[0] ||
|
||||
can.page.AppendField(can, body, item.name+" "+(item.pos||""), item))
|
||||
}, function() {typeof cb == "function" && cb(page)})
|
||||
@ -28,7 +28,7 @@ var can = Volcanos("chat", {
|
||||
Pane: shy("构造面板", function(can, name, meta, cb, field) {
|
||||
var river = "", storm = "";
|
||||
|
||||
var pane = Volcanos(name, {_type: "local", _plugins: [], target: field,
|
||||
var pane = Volcanos(name, {_type: "local", _plugins: [], _local: {}, target: field,
|
||||
option: field.querySelector("form.option"),
|
||||
action: field.querySelector("div.action"),
|
||||
output: field.querySelector("div.output"),
|
||||
@ -115,7 +115,7 @@ var can = Volcanos("chat", {
|
||||
var args = meta.args || [];
|
||||
var feature = JSON.parse(meta.feature||'{}');
|
||||
var exports = JSON.parse(meta.exports||'""')||feature.exports||[];
|
||||
var plugin = Volcanos(name, {_type: "local", target: field,
|
||||
var plugin = Volcanos(name, {_type: "local", _local: {}, target: field,
|
||||
option: option, action: action, output: output,
|
||||
Inputs: can.Inputs, Output: can.Output,
|
||||
|
||||
@ -131,7 +131,7 @@ var can = Volcanos("chat", {
|
||||
var name = item.name || item.value || "args"+plugin.page.Select(can, option, "input.args.temp").length;
|
||||
var count = plugin.page.Select(can, option, ".args").length, value = "";
|
||||
args && count < args.length && (value = args[count] || item.value || "");
|
||||
plugin[name] = can.Inputs(plugin, item, item.display||"input", name, value, cb, option);
|
||||
plugin._local[name] = plugin[name] = can.Inputs(plugin, item, item.display||"input", name, value, cb, option);
|
||||
},
|
||||
Select: function(event, target, focus) {
|
||||
can.page.Select(can, field.parentNode, "fieldset.item.select", function(item) {
|
||||
@ -169,7 +169,9 @@ var can = Volcanos("chat", {
|
||||
return item.target.value = item.value
|
||||
}).length > 0 && plugin.Runs(event)
|
||||
},
|
||||
Runs: function(event, cb) {plugin.Run(event, plugin.Option(), cb)},
|
||||
Runs: function(event, cb) {
|
||||
plugin.Run(event, plugin.Option(), cb)
|
||||
},
|
||||
Run: function(event, args, cb, silent) {var show = !silent;
|
||||
history.push(plugin.page.Select(can, option, ".args", function(item, index, list) {
|
||||
return {target: item, value: item.value}
|
||||
@ -185,7 +187,7 @@ var can = Volcanos("chat", {
|
||||
})
|
||||
},
|
||||
Show: function(type, msg, cb) {plugin.msg = msg, msg._plugin_name = name;
|
||||
return plugin._output = plugin[type] = can.Output(plugin, feature, type, msg, cb, output, action, option, status)
|
||||
return plugin._output = plugin._local[type] = plugin[type] = can.Output(plugin, feature, type, msg, cb, output, action, option, status)
|
||||
},
|
||||
Clone: function(event, cb) {meta.nick = meta.name + can.ID()
|
||||
meta.args = can.page.Select(can, plugin.option, ".args", function(item) {return item.value})
|
||||
@ -194,31 +196,6 @@ var can = Volcanos("chat", {
|
||||
},
|
||||
Delete: function(event) {field.parentNode.removeChild(field)},
|
||||
}, Config.libs.concat(["plugin/"+(meta.type||feature.active||"state")]), function(plugin) {plugin.Conf(meta);
|
||||
var resize = false, last, size, change;
|
||||
can.page.Select(can, field, "div.border-bottom", function(item) {
|
||||
item.onmousedown = function(event) {resize = !resize;
|
||||
can.escape = function(event) {resize = false
|
||||
plugin._output.onaction && plugin._output.onaction.resize && plugin._output.onaction.resize(event, plugin._output, change, "y")
|
||||
}
|
||||
can.resize = plugin.resize = function(event) {change = event.clientY - last;
|
||||
if (resize) {field.style.height = size + change + "px"}
|
||||
}
|
||||
size = field.offsetHeight;
|
||||
last = event.clientY;
|
||||
}
|
||||
item.onmousemove = function(event) {plugin.resize && plugin.resize(event)}
|
||||
})
|
||||
can.page.Select(can, field, "div.border-right", function(item) {
|
||||
item.onmousedown = function(event) {resize = !resize;
|
||||
can.escape = function(event) {resize = false}
|
||||
can.resize = plugin.resize = function(event) {
|
||||
if (resize) {field.style.width = size + event.clientX - last + "px"}
|
||||
}
|
||||
size = field.offsetWidth;
|
||||
last = event.clientX;
|
||||
}
|
||||
item.onmousemove = function(event) {plugin.resize && plugin.resize(event)}
|
||||
})
|
||||
var list = JSON.parse(meta.inputs||"[]");
|
||||
plugin.onimport._init? plugin.onimport._init(plugin, feature, plugin.output, plugin.action, plugin.option):
|
||||
can.core.Next(list.length>0? list: [{type: "text"}, {type: "button", value: "执行"}], plugin.Append, function() {
|
||||
@ -229,7 +206,9 @@ var can = Volcanos("chat", {
|
||||
return plugin
|
||||
}),
|
||||
Inputs: shy("构造控件", function(can, item, type, name, value, cb, option) {
|
||||
var input = Volcanos(name, {_type: "local", item: item, _plugin: can,
|
||||
var input = Volcanos(name, {_type: "input", _plugin: can, item: item, target: "",
|
||||
Run: can.Run, Runs: can.Runs,
|
||||
|
||||
Select: function(event) {can.Select(event, input.target, true)},
|
||||
Import: function(event, value, key, index) {var cb = input.onimport[item.imports];
|
||||
value = typeof cb == "function" && cb(event, input, value, key, input.target) || value
|
||||
@ -245,22 +224,25 @@ var can = Volcanos("chat", {
|
||||
|
||||
}, Config.libs.concat(["plugin/"+type]), function(input) {
|
||||
var target = input.onimport.init(input, item, name, value, option);
|
||||
input.target = target, target.Input = input;
|
||||
typeof cb == "function" && cb(input);
|
||||
input.target = target, typeof cb == "function" && cb(input);
|
||||
})
|
||||
return input
|
||||
}),
|
||||
Output: shy("构造组件", function(can, feature, type, msg, cb, target, action, option, status) {
|
||||
if (type == "inner" && (!msg.result || msg.result.length == 0)) {type = "table"}
|
||||
|
||||
var output = Volcanos(type, {_type: "local", action: action, msg: msg, feature: feature,
|
||||
var output = Volcanos(type, {_type: "output", feature: feature, msg: msg,
|
||||
target: target, action: action,
|
||||
Run: can.Run, Runs: can.Runs,
|
||||
|
||||
Import: function(event, value, key) {var cb = output.onimport[key];
|
||||
typeof cb == "function" && cb(event, output, value, key, target);
|
||||
},
|
||||
Option: function(key, value) {
|
||||
return can.page.Select(can, can.option, "input[name="+key+"],select[name="+key+"]", function(item) {
|
||||
value != undefined && (item.value = value), value = item.value
|
||||
}), value
|
||||
return key == undefined? can.page.Select(can, can.option, ".args", function(item) {return item.value}):
|
||||
(can.page.Select(can, can.option, "input[name="+key+"],select[name="+key+"]", function(item) {
|
||||
value != undefined && (item.value = value), value = item.value
|
||||
}), value)
|
||||
},
|
||||
Action: function(key, value) {
|
||||
return can.page.Select(can, can.action, "input[name="+key+"],select."+key+",select[name="+key+"]", function(item) {
|
||||
@ -277,7 +259,7 @@ var can = Volcanos("chat", {
|
||||
},
|
||||
|
||||
run: function(event, cmd, cb, silent) {var msg = can.Event(event);
|
||||
can.page.Select(can, option, "input,select", function(item) {
|
||||
cmd = cmd || can.Option(), can.page.Select(can, option, "input,select", function(item) {
|
||||
item.name && item.value && msg.Option(item.name, item.value)
|
||||
});
|
||||
(output[cmd[1]] || can[cmd[1]] || can.Run)(event, cmd, cb, silent);
|
||||
@ -286,7 +268,7 @@ var can = Volcanos("chat", {
|
||||
status.innerHTML = "", output.onstatus && can.page.AppendStatus(output, status, output.onstatus.list)
|
||||
output.onimport.init(output, msg, cb, target, action, option);
|
||||
}, msg)
|
||||
return output.target = target, target.Output = output
|
||||
return output
|
||||
}),
|
||||
}, Config.libs.concat(Config.list), function(can) {
|
||||
can[Config.main] = can.Page(can, Config.main, Config, function(chat) {
|
||||
@ -297,4 +279,6 @@ var can = Volcanos("chat", {
|
||||
chat.Header.Import(event||{}, user.name, "username")
|
||||
})
|
||||
}, document.body)
|
||||
|
||||
can.require(["page/"+(can.user.Search(can, "topic")||Config.topic)+".css"], function() {})
|
||||
})
|
||||
|
10
lib/page.js
10
lib/page.js
@ -42,6 +42,7 @@ Volcanos("page", {help: "网页模块",
|
||||
// 基本结构: type name data list
|
||||
var type = item.type || "div", data = item.data || {};
|
||||
var name = item.name || data.name;
|
||||
name && (data.name = data.name || item.name);
|
||||
|
||||
// 数据调整
|
||||
can.core.Item(item, function(key, value) {
|
||||
@ -93,6 +94,7 @@ Volcanos("page", {help: "网页模块",
|
||||
})
|
||||
data.className = list[0][0] || "";
|
||||
data.title = data.title || name;
|
||||
data.name = name;
|
||||
|
||||
} else if (item.input) {var list = can.core.List(item.input);
|
||||
type = "input", name = name || list[0] || "";
|
||||
@ -100,6 +102,7 @@ Volcanos("page", {help: "网页模块",
|
||||
data.className = data.className || data.name;
|
||||
data.placeholder = data.placeholder || data.name;
|
||||
data.title = data.title || data.placeholder;
|
||||
data.autocomplete = "none"
|
||||
|
||||
data.onkeydown = function(event) {
|
||||
typeof list[1] == "function" && list[1](event);
|
||||
@ -140,7 +143,7 @@ Volcanos("page", {help: "网页模块",
|
||||
// 创建节点
|
||||
name = name || data.className || type;
|
||||
var node = can.page.Create(can, type, data);
|
||||
value.last = node, value.first || (value.first = node), name && (value[name] = node);
|
||||
value.last = node, value.first || (value.first = node), name && (value[name] = value[data.className||""] = value[type] = node);
|
||||
item.list && can.page.Append(can, node, item.list, value);
|
||||
target && target.append && target.append(node);
|
||||
})
|
||||
@ -189,14 +192,11 @@ Volcanos("page", {help: "网页模块",
|
||||
AppendField: shy("添加插件", function(can, target, type, item) {
|
||||
var dataset = {}; item && item.name && (dataset.names = item.name);
|
||||
var field = can.page.Append(can, target, [{view: [type, "fieldset"], list: [
|
||||
// {view: ["border-left"]}, {view: ["border-right"]},
|
||||
item.pos? undefined: {text: [(item.nick||item.name||"")+"("+(item.help||"")+")", "legend"]},
|
||||
{view: ["option", "form"], dataset: dataset, list: [{type: "input", style: {display: "none"}}]},
|
||||
{view: ["action"]}, {view: ["output"]}, {view: ["status"]},
|
||||
// {view: ["border-bottom"]},
|
||||
]}]).first;
|
||||
field.Meta = item
|
||||
return field;
|
||||
return field.Meta = item, field;
|
||||
}),
|
||||
AppendTable: shy("添加表格", function(can, target, msg, list, cb, cbs) {
|
||||
var table = can.page.Append(can, target, "table");
|
||||
|
28
lib/user.js
28
lib/user.js
@ -5,6 +5,34 @@ Volcanos("user", {help: "用户模块",
|
||||
reload: function(force) {(force || confirm("重新加载页面?")) && location.reload()},
|
||||
title: function(text) {document.title = text},
|
||||
|
||||
input: function(event, can, form, cb) {
|
||||
var view = can.page.Append(can, document.body, [{view: ["input", "fieldset"], style: {left: event.clientX+"px", top: event.clientY+"px"}, list: [
|
||||
{view: ["option", "table"], list: can.core.List(form, function(item) {
|
||||
return {type: ["tr"], list: [
|
||||
{type: "td", list: [{text: typeof item == "string"?
|
||||
item: item.length > 0? item[0]: item.name || "",
|
||||
}]},
|
||||
{type: "td", list: [typeof item == "string"? {input: item, data: {autofocus: true}}:
|
||||
item.length > 0? {select: [item]}: item]
|
||||
},
|
||||
]}
|
||||
})},
|
||||
{view: "action", list: [{button: ["提交", function(event, value) {
|
||||
var data = {}
|
||||
var list = can.page.Select(can, view.table, "select,input,textarea", function(item) {
|
||||
return data[item.name] = item.value
|
||||
})
|
||||
if (typeof cb == "function" && cb(event, value, data, list)) {
|
||||
can.page.Remove(can, view.first)
|
||||
}
|
||||
}]}, {button: ["关闭", function(event, value) {
|
||||
if (typeof cb == "function" && cb(event, value)) {
|
||||
can.page.Remove(can, view.first)
|
||||
}
|
||||
}]}]},
|
||||
]}])
|
||||
return view
|
||||
},
|
||||
toast: function(text) {},
|
||||
carte: function(event, cb) {},
|
||||
login: function(cb) {},
|
||||
|
2
order.js
2
order.js
@ -29,7 +29,7 @@ var Config = {iceberg: "/chat/", volcano: "/static/volcanos/",
|
||||
{group: "index", name: "Action", pos: "bottom"},
|
||||
{group: "index", name: "Footer", pos: "foot", state: ["ntxt", "ncmd"], title: '<a href="mailto:shylinux@163.com">shylinux@163.com</a>'},
|
||||
|
||||
], title: "volcanos", layout: {def: "办公", list: ["工作", "办公", "聊天"], size: {
|
||||
], title: "volcanos", topic: "black", layout: {def: "工作", list: ["工作", "办公", "聊天"], size: {
|
||||
"最大": {head: 0, foot: 0, left: 0, right: 0, bottom: -1, center: 0, top: 0},
|
||||
"工作": {head: 30, foot: 30, left: 0, right: 100, bottom: -1, center: 0, top: 0},
|
||||
"办公": {head: 30, foot: 30, left: 100, right: 100, bottom: -1, center: 0, top: 0},
|
||||
|
56
page/black.css
Normal file
56
page/black.css
Normal file
@ -0,0 +1,56 @@
|
||||
body, fieldset {
|
||||
color: white;
|
||||
background-color:black;
|
||||
}
|
||||
|
||||
fieldset.item:hover {
|
||||
/* background-color:gold; */
|
||||
border:ridge 2px red;
|
||||
}
|
||||
fieldset.item.select {
|
||||
/* background-color:gold; */
|
||||
border:ridge 2px red;
|
||||
}
|
||||
|
||||
fieldset.dialog {
|
||||
}
|
||||
|
||||
fieldset input {
|
||||
font-size:12px;
|
||||
}
|
||||
fieldset input.args {
|
||||
background-color:cyan;
|
||||
font-weight:600;
|
||||
width:80px;
|
||||
}
|
||||
fieldset input::-webkit-input-placeholder, textarea::-webkit-input-placeholder {
|
||||
color:green;
|
||||
}
|
||||
|
||||
fieldset table tr:hover {
|
||||
background-color:#0fbd45;
|
||||
}
|
||||
fieldset table tr.select {
|
||||
background-color:#0fbd45;
|
||||
}
|
||||
fieldset table th {
|
||||
font-family:monospace;
|
||||
background-color:#0fbd45;
|
||||
cursor:pointer;
|
||||
padding: 0 6px;
|
||||
}
|
||||
fieldset table td {
|
||||
max-width:1200px;
|
||||
font-family:monospace;
|
||||
padding: 0 6px;
|
||||
/* white-space: pre; */
|
||||
}
|
||||
fieldset table td.over {
|
||||
border:solid 2px red;
|
||||
}
|
||||
fieldset table td:hover {
|
||||
background-color:red;
|
||||
}
|
||||
fieldset table td.select {
|
||||
background-color:red;
|
||||
}
|
12
page/chat.js
12
page/chat.js
@ -10,6 +10,12 @@ Volcanos("onimport", {help: "导入数据", list: [],
|
||||
})
|
||||
Volcanos("onaction", {help: "组件交互", list: [],
|
||||
onkeydown: function(event, can) {
|
||||
if (event.target.tagName == "INPUT" || event.target.tagName == "TEXTAREA") {
|
||||
return
|
||||
}
|
||||
if (event.target.getAttribute("contenteditable")) {
|
||||
return
|
||||
}
|
||||
switch (event.key) {
|
||||
case "k":
|
||||
can.Report(event, {x: 0, y: -30}, "scroll")
|
||||
@ -21,12 +27,6 @@ Volcanos("onaction", {help: "组件交互", list: [],
|
||||
can.Action.escape && can.Action.escape(event)
|
||||
break
|
||||
case " ":
|
||||
if (event.target.getAttribute("contenteditable")) {
|
||||
break
|
||||
}
|
||||
if (event.target.tagName == "INPUT" || event.target.tagName == "TEXTAREA") {
|
||||
break
|
||||
}
|
||||
can.Favor && can.page.Select(can, can.Favor.Show(), "input.cmd", function(item) {
|
||||
item.focus()
|
||||
})
|
||||
|
40
page/gray.css
Normal file
40
page/gray.css
Normal file
@ -0,0 +1,40 @@
|
||||
body, fieldset {
|
||||
background-color:#d8d8d8;
|
||||
}
|
||||
|
||||
fieldset.item:hover {
|
||||
background-color:gold;
|
||||
border:ridge 2px red;
|
||||
}
|
||||
fieldset.item.select {
|
||||
background-color:gold;
|
||||
border:ridge 2px red;
|
||||
}
|
||||
|
||||
fieldset.dialog {
|
||||
}
|
||||
|
||||
fieldset table tr:hover {
|
||||
background-color:lightgreen;
|
||||
}
|
||||
fieldset table tr.select {
|
||||
background-color:lightgreen;
|
||||
}
|
||||
fieldset table th {
|
||||
font-family:monospace;
|
||||
background-color:lightgreen;
|
||||
cursor:pointer;
|
||||
padding: 0 6px;
|
||||
}
|
||||
fieldset table td {
|
||||
max-width:1200px;
|
||||
font-family:monospace;
|
||||
padding: 0 6px;
|
||||
/* white-space: pre; */
|
||||
}
|
||||
fieldset table td:hover {
|
||||
background-color:red;
|
||||
}
|
||||
fieldset table td.select {
|
||||
background-color:red;
|
||||
}
|
@ -5,10 +5,12 @@ Volcanos("onimport", {help: "导入数据", list: [],
|
||||
})
|
||||
},
|
||||
init: function(event, can, msg, cmd, target) {can.output.innerHTML = "";
|
||||
msg.Table(function(item, index) {if (!item.name) {return}
|
||||
can._plugins.push(can[item.name] = can.Plugin(can, item.name, item, function(event, cmds, cbs) {
|
||||
can._local[msg.cmds[0]] = can._local[msg.cmds[0]] || {}
|
||||
can._local[msg.cmds[0]][msg.cmds[1]] = msg.Table(function(item, index) {if (!item.name) {return}
|
||||
var plugin = can[item.name] = can.Plugin(can, item.name, item, function(event, cmds, cbs) {
|
||||
can.run(event, [item.river, item.storm, item.action].concat(cmds), cbs)
|
||||
}, can.page.AppendField(can, can.output, "item "+item.group+" "+item.name, item)))
|
||||
}, can.page.AppendField(can, can.output, "item "+item.name, item))
|
||||
return can._plugins.push(plugin), plugin
|
||||
})
|
||||
},
|
||||
layout: function(event, can, value, cmd, target) {can.layout = value;
|
||||
@ -47,7 +49,7 @@ Volcanos("onimport", {help: "导入数据", list: [],
|
||||
can._plugin && can._plugin.Import(event, msg, cmd)
|
||||
},
|
||||
})
|
||||
Volcanos("onaction", {help: "组件交互", list: [["layout", "最大", "工作", "办公", "聊天"], "刷新", "清屏", "并行","串行",
|
||||
Volcanos("onaction", {help: "组件交互", list: [["layout", "工作", "办公", "聊天"], "刷新", "清屏", "并行","串行",
|
||||
["action", "正常", "编辑", "编排", "定位"],
|
||||
{input: "pod"}, {input: "you"}, {input: "hot"}, {input: "top"},
|
||||
],
|
||||
|
@ -1,7 +1,7 @@
|
||||
fieldset.dialog.Carte {
|
||||
padding:0;
|
||||
border:solid 2px red;
|
||||
background-color:greenyellow;
|
||||
/* background-color:greenyellow; */
|
||||
position:absolute;
|
||||
display:none;
|
||||
z-index:200;
|
||||
|
@ -1,6 +1,6 @@
|
||||
fieldset.Toast {
|
||||
border:solid 2px red;
|
||||
background-color:rgba(100,100,100,0.8);
|
||||
/* background-color:rgba(100,100,100,0.8); */
|
||||
position:absolute;
|
||||
display:none;
|
||||
z-index:200;
|
||||
@ -15,7 +15,7 @@ fieldset.Toast>div.output {
|
||||
fieldset.Toast>div.output>div.title {
|
||||
font-size:12px;
|
||||
text-align:center;
|
||||
color:gray;
|
||||
/* color:gray; */
|
||||
}
|
||||
fieldset.Toast>div.output>div.content {
|
||||
word-break:break-word;
|
||||
@ -26,16 +26,16 @@ fieldset.Toast>div.output>div.content {
|
||||
font-size:16px;
|
||||
}
|
||||
fieldset.Toast>div.output table {
|
||||
color:yellow
|
||||
/* color:yellow */
|
||||
}
|
||||
fieldset.Toast>div.output table th {
|
||||
background:red;
|
||||
/* background:red; */
|
||||
}
|
||||
fieldset.Toast>div.output table td {
|
||||
white-space:pre;
|
||||
}
|
||||
fieldset.Toast>div.output>div.tick {
|
||||
font-size:12px;
|
||||
color:gray;
|
||||
/* color:gray; */
|
||||
}
|
||||
|
||||
|
@ -37,6 +37,7 @@ Volcanos("onimport", {help: "导入数据", list: [],
|
||||
// (item.type == "text" || item.type == "textarea") && !target.placeholder && (target.placeholder = item.name || "");
|
||||
item.type == "text" && !target.title && (target.title = item.placeholder || item.name || "");
|
||||
item.type == "button" && item.action == "auto" && can.run && can.run({});
|
||||
item.type == "textarea" && can.page.Append(can, option, [{type: "br"}])
|
||||
return target;
|
||||
}),
|
||||
path: function(event, can, value, cmd, target) {
|
||||
@ -44,6 +45,25 @@ Volcanos("onimport", {help: "导入数据", list: [],
|
||||
},
|
||||
})
|
||||
Volcanos("onfigure", {help: "控件详情", list: [],
|
||||
key: {click: function(event, can, value, cmd, target) {
|
||||
function add(msg, list, update) {
|
||||
can.page.Append(can, can.figure.output, [{view: "list", list: can.core.List(list, function(item) {
|
||||
return {text: [item, "div", "label"], onclick: function(event) {
|
||||
target.value = item;
|
||||
update && can.history.unshift(item);
|
||||
msg.Option("_refresh") && run()
|
||||
}}
|
||||
})}])
|
||||
}
|
||||
function run() {can.figure.output.innerHTML = ""
|
||||
can.Run(event, ["action", "input", can.item.name, target.value], function(msg) {
|
||||
add(msg, can.history), can.core.List(msg.append, function(key) {add(msg, msg[key], true)})
|
||||
}, true)
|
||||
}
|
||||
|
||||
can.history = can.history || [];
|
||||
can.onfigure._prepare(event, can, value, cmd ,target) && run()
|
||||
}},
|
||||
date: {click: function(event, can, value, cmd, target) {if (can.date) {return}
|
||||
target.style.width = "120px"
|
||||
function set(now) {
|
||||
@ -162,7 +182,7 @@ Volcanos("onfigure", {help: "控件详情", list: [],
|
||||
_prepare: function(event, can, value, cmd, target) {if (can.figure) {return}
|
||||
can.figure = can.page.Append(can, document.body, [{view: ["input "+cmd, "fieldset"], style: {
|
||||
position: "absolute", left: "20px", top: event.clientY+10+"px",
|
||||
}, list: [{view: ["action"]}, {view: ["output"]}], onmouseleave: function(event) {
|
||||
}, list: [{text: [cmd, "legend"]}, {view: ["action"]}, {view: ["output"]}], onmouseleave: function(event) {
|
||||
!can.figure.stick && can.onfigure._release(event, can, value, cmd, target)
|
||||
}}])
|
||||
return can.figure
|
||||
@ -176,6 +196,9 @@ Volcanos("onaction", {help: "控件交互", list: [],
|
||||
var figure = can.onfigure[can.item.cb] || can.onfigure[can.item.figure]
|
||||
figure? figure.click(event, can, can.item, can.item.name, event.target): can.item.type == "button" && can.run(event)
|
||||
},
|
||||
onchange: function(event, can) {
|
||||
can.item.type == "select" && can.item.action == "auto" && can.Runs(event)
|
||||
},
|
||||
onkeydown: function(event, can) {
|
||||
can.page.oninput(event, can, function(event) {
|
||||
switch (event.key) {
|
||||
|
@ -8,9 +8,19 @@ Volcanos("onimport", {help: "导入数据", list: [],
|
||||
var table = can.page.AppendTable(can, output, msg, msg.append);
|
||||
table.onclick = function(event) {switch (event.target.tagName) {
|
||||
case "TD":
|
||||
can.onimport.which(event, table, msg.append, function(index, key) {
|
||||
can.ondetail["复制"](event, can, msg, event.target.innerHTML, index, key, event.target);
|
||||
can.Export(event, event.target.innerHTML.trim(), key, index)
|
||||
var input = can.user.input(event, can, ["group", "type", "name", "text"], function(event, value, data) {
|
||||
switch (value) {
|
||||
case "提交":
|
||||
can.run(event, ["action", "insert", data.group, data.type, data.name, data.text, "begin_time", can.base.Time()], function(msg) {
|
||||
can.page.Remove(can, input.first)
|
||||
can.user.toast("添加成功")
|
||||
can.Runs(event)
|
||||
return true
|
||||
}, true)
|
||||
console.log(data)
|
||||
break
|
||||
case "取消": return true;
|
||||
}
|
||||
})
|
||||
break
|
||||
case "TH":
|
||||
@ -20,6 +30,8 @@ Volcanos("onimport", {help: "导入数据", list: [],
|
||||
}}
|
||||
table.oncontextmenu = function(event) {var target = event.target;
|
||||
switch (event.target.tagName) {
|
||||
case "DIV":
|
||||
break
|
||||
case "TD":
|
||||
can.onimport.which(event, table, msg.append, function(index, key) {
|
||||
can.user.carte(event, shy("", can.ondetail, can.feature.detail || can.ondetail.list, function(event, cmd, meta) {var cb = meta[cmd];
|
||||
@ -42,7 +54,7 @@ Volcanos("onimport", {help: "导入数据", list: [],
|
||||
}
|
||||
}
|
||||
|
||||
can.page.Select(can, table, "div.miss", function(item) {
|
||||
can.page.Select(can, table, "div.task", function(item) {
|
||||
item.setAttribute("draggable", true)
|
||||
item.ondragstart = function(event) {can.drag = event.target}
|
||||
item.ondragover = function(event) {event.preventDefault()}
|
||||
|
@ -28,7 +28,8 @@ Volcanos("onimport", {help: "导入数据", list: [],
|
||||
|
||||
item.onclick = function(event) {can.node = item}
|
||||
item.oncontextmenu = function(event) {var target = event.target; can.user.carte(event, shy("", can.ondetail, figure.menu||can.ondetail.list, function(event, key, meta) {var cb = meta[key];
|
||||
typeof cb == "function" && cb(event, can, msg, 0, key, key, target);
|
||||
cb? typeof cb == "function" && cb(event, can, msg, 0, key, key, target):
|
||||
(cb = can.onchoice[key] || can.onaction[key], typeof cb == "function" && cb(event, can, key, key, target))
|
||||
}), can), event.stopPropagation(), event.preventDefault()}
|
||||
|
||||
figure && figure.init && figure.init({}, can, item.localName, "init", item)
|
||||
@ -105,7 +106,7 @@ Volcanos("onfigure", {help: "图形绘制", list: [],
|
||||
return [{view: ["story", "p", "p"], dataset: {type: "spark", name: "", text: ""}, inner: "spark...."}]
|
||||
},
|
||||
save: function(event, can, value, cmd, target) {var data = target.dataset;
|
||||
return value? 'spark "'+data.name+'" `' + value + '`': ""
|
||||
return value? 'spark "'+data.name+'" `' + value + '`': "spark"
|
||||
},
|
||||
},
|
||||
|
||||
@ -235,13 +236,26 @@ Volcanos("onfigure", {help: "图形绘制", list: [],
|
||||
},
|
||||
},
|
||||
})
|
||||
Volcanos("onaction", {help: "组件菜单", list: ["保存", ["操作", "只读", "排序", "编辑"],
|
||||
Volcanos("onaction", {help: "组件菜单", list: ["刷新", "保存", ["操作", "只读", "排序", "编辑"],
|
||||
"插入", ["元素", "h1", "h2", "h3", "brief", "refer", "spark", "shell", "order", "table", "stack"]],
|
||||
|
||||
"刷新": function(event, can, value, cmd, target) {
|
||||
can.run(event)
|
||||
},
|
||||
"追加": function(event, can, value, cmd, target) {
|
||||
can.user.input(event, can, [["type", "spark", "label", "section", "chapter", "title"], "name", {name: "text", type: "textarea"}], function(event, value, form, list) {
|
||||
value == "提交" && can.run(event, ["action", cmd, can.Option("name")].concat(list), function(msg) {
|
||||
can.user.confirm("是否刷新") && can.run({})
|
||||
}, true)
|
||||
return true
|
||||
})
|
||||
},
|
||||
"保存": function(event, can, value, cmd, target) {
|
||||
var save = can.page.Select(can, target, ".story", function(story) {
|
||||
var figure = can.onfigure[story.dataset.type] || can.onfigure[story.localName];
|
||||
return figure && figure.save && figure.save(event, can, story.innerHTML, cmd, story) || story.innerHTML
|
||||
var text = figure && figure.save && figure.save(event, can, story.innerText||story.innerHTML, cmd, story) || story.innerText||story.innerHTML
|
||||
console.log(story.dataset.type, text)
|
||||
return text
|
||||
}).join("\n\n")
|
||||
|
||||
can.run(event, ["action", cmd, can.Option("name"), save], function(msg) {
|
||||
@ -273,27 +287,12 @@ Volcanos("onaction", {help: "组件菜单", list: ["保存", ["操作", "只读"
|
||||
can.page.Append(can, can.preview, figure.push(event, can, value, cmd, target)).first.setAttribute("contenteditable", true)
|
||||
},
|
||||
})
|
||||
Volcanos("onchoice", {help: "组件交互", list: ["保存", "清空", ["rect", "rect", "line", "circle"]],
|
||||
Volcanos("onchoice", {help: "组件交互", list: ["刷新", "保存", "追加", "清空", ["rect", "rect", "line", "circle"]],
|
||||
"清空": function(event, can, msg, cmd, target) {
|
||||
console.log("choice", cmd)
|
||||
},
|
||||
})
|
||||
Volcanos("ondetail", {help: "组件详情", list: ["编辑", "删除"],
|
||||
"编辑": function(event, can, msg, index, key, cmd, target) {
|
||||
can.user.prompt("文字", function(text) {
|
||||
if (target.tagName == "text") {return target.innerHTML = text}
|
||||
|
||||
var data = {"text-anchor": "middle", "dominant-baseline": "middle"}
|
||||
var figure = can.onfigure[target.tagName]
|
||||
figure.text(event, can, data, target)
|
||||
|
||||
var p = can.onaction.push(event, can, data, "text", can.svg)
|
||||
p.innerHTML = text;
|
||||
|
||||
target.Text && can.page.Remove(can, target.Text) && delete(target.Text)
|
||||
target.Text = p
|
||||
}, target.Text && target.Text.innerText || "")
|
||||
},
|
||||
Volcanos("ondetail", {help: "组件详情", list: ["刷新", "追加", "编辑", "删除", "插入"],
|
||||
"删除": function(event, can, msg, index, key, cmd, target) {
|
||||
can.page.Remove(can, target)
|
||||
},
|
||||
|
2
proto.js
2
proto.js
@ -31,7 +31,7 @@ function Volcanos(name, can, libs, cb, msg) { // 封装模块
|
||||
|
||||
meta.cache[name] = []
|
||||
for (var i = meta.index; i < list.length; i++) {var item = list[i];
|
||||
if (item._name == can._name || item._type == "local") {continue}
|
||||
if (item._name == can._name || item._type == "local"|| item._type == "input" || item._type == "output") {continue}
|
||||
can[item._name] = item;
|
||||
meta.cache[name].push(item);
|
||||
}
|
||||
|
101
style.css
101
style.css
@ -1,5 +1,4 @@
|
||||
html, body {
|
||||
background-color:#d8d8d8;
|
||||
padding:0px;
|
||||
height:100%;
|
||||
width:100%;
|
||||
@ -7,7 +6,6 @@ html, body {
|
||||
}
|
||||
fieldset {
|
||||
position:relative;
|
||||
background-color:#d8d8d8;
|
||||
padding:0px;
|
||||
min-width:10px;
|
||||
overflow:auto;
|
||||
@ -67,6 +65,16 @@ fieldset>div.action div.space {
|
||||
display:inline-block;
|
||||
width:10px;
|
||||
}
|
||||
fieldset>div.action input {
|
||||
width:60px;
|
||||
margin-left:5px;
|
||||
}
|
||||
fieldset>div.action input:focus {
|
||||
width:120px;
|
||||
}
|
||||
fieldset>div.action input:hover {
|
||||
width:120px;
|
||||
}
|
||||
fieldset>div.output {
|
||||
clear:both;
|
||||
/* max-height:800px; */
|
||||
@ -105,7 +113,6 @@ fieldset>div.output table.edit {
|
||||
}
|
||||
|
||||
fieldset.dialog {
|
||||
background-color:lightgray;
|
||||
padding:10px;
|
||||
display:none;
|
||||
position:absolute;
|
||||
@ -134,14 +141,6 @@ fieldset.dialog>div.create table {
|
||||
fieldset.item {
|
||||
float:left;
|
||||
}
|
||||
fieldset.item:hover {
|
||||
background-color:gold;
|
||||
border:ridge 2px red;
|
||||
}
|
||||
fieldset.item.select {
|
||||
background-color:gold;
|
||||
border:ridge 2px red;
|
||||
}
|
||||
fieldset.item>form.option>div.item {
|
||||
padding:0;
|
||||
border:0;
|
||||
@ -178,11 +177,9 @@ fieldset.item>div.output>div.status>input.cmd {
|
||||
font-size:16px;
|
||||
width:250px;
|
||||
}
|
||||
|
||||
fieldset.item>div.output>div.code svg {
|
||||
border: solid 2px red;
|
||||
}
|
||||
|
||||
fieldset.item div.border-left {
|
||||
position:absolute;
|
||||
width:2px;
|
||||
@ -209,6 +206,32 @@ fieldset.item div.border-bottom {
|
||||
cursor:ns-resize;
|
||||
}
|
||||
|
||||
fieldset.input {
|
||||
z-index: 10000;
|
||||
border:solid 2px yellow;
|
||||
position:absolute;
|
||||
}
|
||||
fieldset.input.date table tr:hover {
|
||||
background-color:yellow;
|
||||
}
|
||||
fieldset.input.date table td:hover {
|
||||
background-color:red;
|
||||
cursor:pointer;
|
||||
}
|
||||
fieldset.input.date table td.now {
|
||||
background-color:red;
|
||||
}
|
||||
fieldset.input div.output div.list {
|
||||
clear:both;
|
||||
}
|
||||
fieldset.input div.output div.label {
|
||||
padding: 10px;
|
||||
float:left;
|
||||
}
|
||||
fieldset.input div.output div.label:hover {
|
||||
background-color:red;
|
||||
}
|
||||
|
||||
fieldset table {
|
||||
font-size:14px;
|
||||
overflow: auto;
|
||||
@ -222,36 +245,15 @@ fieldset table caption {
|
||||
fieldset table tbody {
|
||||
overflow:auto;
|
||||
}
|
||||
fieldset table tr:hover {
|
||||
background-color:lightgreen;
|
||||
}
|
||||
fieldset table tr.select {
|
||||
background-color:lightgreen;
|
||||
}
|
||||
fieldset table th {
|
||||
font-family:monospace;
|
||||
background-color:lightgreen;
|
||||
cursor:pointer;
|
||||
padding: 0 6px;
|
||||
}
|
||||
fieldset table th.order {
|
||||
background-color:red;
|
||||
cursor:pointer;
|
||||
}
|
||||
fieldset table td {
|
||||
max-width:1200px;
|
||||
font-family:monospace;
|
||||
padding: 0 6px;
|
||||
/* white-space: pre; */
|
||||
}
|
||||
fieldset table td.clip {
|
||||
background-color:red;
|
||||
}
|
||||
fieldset table td:hover {
|
||||
background-color:red;
|
||||
}
|
||||
fieldset table td.select {
|
||||
background-color:red;
|
||||
fieldset table td sup.more {
|
||||
color:red;
|
||||
}
|
||||
|
||||
fieldset div.code {
|
||||
@ -278,12 +280,13 @@ fieldset .story {
|
||||
fieldset .story:hover {
|
||||
border:solid 2px red;
|
||||
}
|
||||
|
||||
fieldset p.story {
|
||||
white-space:pre;
|
||||
}
|
||||
fieldset ul.story li:hover {
|
||||
border:solid 2px red;
|
||||
cursor:pointer;
|
||||
}
|
||||
|
||||
fieldset code.story {
|
||||
display:block;
|
||||
color:white;
|
||||
@ -315,25 +318,3 @@ fieldset ul.stack:hover {
|
||||
border:solid 2px red;
|
||||
}
|
||||
|
||||
fieldset td.over {
|
||||
border:solid 2px red;
|
||||
}
|
||||
|
||||
sup.more {
|
||||
color:red;
|
||||
}
|
||||
|
||||
fieldset.input {
|
||||
z-index: 10000;
|
||||
border:solid 2px yellow;
|
||||
}
|
||||
fieldset.input.date table tr:hover {
|
||||
background-color:yellow;
|
||||
}
|
||||
fieldset.input.date table td:hover {
|
||||
background-color:red;
|
||||
cursor:pointer;
|
||||
}
|
||||
fieldset.input.date table td.now {
|
||||
background-color:red;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user