forked from fanruan/fineui
zsmj
2 years ago
13 changed files with 641 additions and 433 deletions
@ -0,0 +1,128 @@ |
|||||||
|
const fs = require("fs"); |
||||||
|
const path = require("path"); |
||||||
|
|
||||||
|
const depts = {}; |
||||||
|
|
||||||
|
async function handle(filename) { |
||||||
|
// 找clzName
|
||||||
|
const code = fs.readFileSync(filename); |
||||||
|
const inheritRegResult = /BI\.(.*?)\s=\sBI\.inherit\(/.exec(code); |
||||||
|
let clzName; |
||||||
|
if (inheritRegResult) { |
||||||
|
clzName = inheritRegResult[1]; |
||||||
|
} else { |
||||||
|
const clzRegResult = /export\sclass\s(.*?)\sextend/.exec(code); |
||||||
|
if (clzRegResult) { |
||||||
|
clzName = clzRegResult[1]; |
||||||
|
} |
||||||
|
} |
||||||
|
depts[clzName] = filename; |
||||||
|
} |
||||||
|
|
||||||
|
function isExist(filePath) { |
||||||
|
return fs.existsSync(filePath); |
||||||
|
} |
||||||
|
|
||||||
|
async function bfs(filename) { |
||||||
|
const stat = fs.statSync(filename); |
||||||
|
const isDir = stat.isDirectory(); |
||||||
|
if (isDir) { |
||||||
|
const files = fs.readdirSync(filename); |
||||||
|
for (let i = 0; i < files.length; i++) { |
||||||
|
const file = files[i]; |
||||||
|
await bfs(path.resolve(filename, file)); |
||||||
|
} |
||||||
|
} else { |
||||||
|
await handle(filename); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
async function initDepts() { |
||||||
|
// dfs 构建依赖关系
|
||||||
|
await bfs(path.resolve("src")); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
function search(src, clzName) { |
||||||
|
if (!depts[clzName]) { |
||||||
|
return ""; |
||||||
|
} |
||||||
|
|
||||||
|
const dstName = path.basename(depts[clzName]).replace(/.js$/g, ""); |
||||||
|
const dstPath = path.normalize(depts[clzName]).split("src")[1].split("\\").join("/").split("/"); |
||||||
|
const srcPath = path.normalize(src).split("src")[1].split("\\").join("/").split("/"); |
||||||
|
|
||||||
|
// console.log("src", src);
|
||||||
|
// console.log("dst", depts[clzName]);
|
||||||
|
|
||||||
|
dstPath.shift(); |
||||||
|
dstPath.pop(); |
||||||
|
srcPath.shift(); |
||||||
|
srcPath.pop(); |
||||||
|
|
||||||
|
const findDstIndexPath = (dstArr, startIndex) => { |
||||||
|
let i = startIndex; |
||||||
|
|
||||||
|
while (!isExist(path.resolve("src", dstArr.slice(0, i + 1).join("/"), "index.js"))) { |
||||||
|
i++; |
||||||
|
} |
||||||
|
if (i < dstArr.length) { |
||||||
|
return dstArr.slice(startIndex, i + 1).join("/"); |
||||||
|
} else { |
||||||
|
return `${dstArr.slice(startIndex).join("/")}/${dstName}`; |
||||||
|
} |
||||||
|
}; |
||||||
|
|
||||||
|
// 不同包
|
||||||
|
if (dstPath[0] !== srcPath[0]) { |
||||||
|
return `@/${dstPath[0]}`; |
||||||
|
} |
||||||
|
|
||||||
|
// 同包
|
||||||
|
let i = 0; |
||||||
|
while (dstPath[i] === srcPath[i] && i < dstPath.length && i < srcPath.length) { |
||||||
|
i++; |
||||||
|
} |
||||||
|
|
||||||
|
if (i < srcPath.length) { |
||||||
|
let result = ""; |
||||||
|
const rawI = i; |
||||||
|
|
||||||
|
// 回溯
|
||||||
|
for (let j = 0; j < srcPath.length - rawI; j++) { |
||||||
|
result += "../"; |
||||||
|
i--; |
||||||
|
} |
||||||
|
i++; |
||||||
|
// dstPath 也没有了
|
||||||
|
if (i < dstPath.length) { |
||||||
|
return result + findDstIndexPath(dstPath, i); |
||||||
|
// 还有好多没有匹配完
|
||||||
|
// while (i < srcPath) {
|
||||||
|
// // exists(srcPath.slice(0, i).join())
|
||||||
|
// result += srcPath[i];
|
||||||
|
// i++;
|
||||||
|
// }
|
||||||
|
} else if (i === dstPath.length) { |
||||||
|
return `${result}${dstName}`; |
||||||
|
} |
||||||
|
} else if (i === srcPath.length) { |
||||||
|
if (i === dstPath.length) { |
||||||
|
return dstName; |
||||||
|
} else if (i < dstPath.length) { |
||||||
|
return findDstIndexPath(dstPath, i); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// search(process.argv[2], "Text").then(res => {
|
||||||
|
// console.log(res);
|
||||||
|
// });
|
||||||
|
|
||||||
|
exports.initDepts = initDepts; |
||||||
|
exports.search = search; |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,4 @@ |
|||||||
|
export { MultiPopupView } from "./layer.multipopup"; |
||||||
|
export { PopupPanel } from "./layer.panel"; |
||||||
|
export { ListPane } from "./pane.list"; |
||||||
|
export { Panel } from "./panel"; |
@ -0,0 +1,2 @@ |
|||||||
|
export { LinearSegmentButton } from "./button.linear.segment"; |
||||||
|
export { LinearSegment } from "./linear.segment"; |
@ -1,60 +1,62 @@ |
|||||||
BI.LinearSegment = BI.inherit(BI.Widget, { |
|
||||||
|
|
||||||
props: { |
import { shortcut, Widget, createItems, makeArrayByArray } from "@/core"; |
||||||
baseCls: "bi-linear-segment", |
|
||||||
items: [], |
|
||||||
height: 30 |
|
||||||
}, |
|
||||||
|
|
||||||
render: function () { |
@shortcut() |
||||||
var self = this, o = this.options; |
export class LinearSegment extends Widget { |
||||||
|
static xtype = "bi.linear_segment" |
||||||
|
|
||||||
|
props = { baseCls:"bi-linear-segment", items:[], height:30 }; |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
render () { |
||||||
|
const o = this.options; |
||||||
|
|
||||||
return { |
return { |
||||||
type: "bi.button_group", |
type: "bi.button_group", |
||||||
items: [BI.createItems(o.items, { |
items: [createItems(o.items, { |
||||||
type: "bi.linear_segment_button", |
type: "bi.linear_segment_button", |
||||||
height: o.height |
height: o.height, |
||||||
})], |
})], |
||||||
layouts: [{ |
layouts: [{ |
||||||
type: "bi.table", |
type: "bi.table", |
||||||
columnSize: BI.makeArrayByArray(o.items, "fill"), |
columnSize: makeArrayByArray(o.items, "fill"), |
||||||
}], |
}], |
||||||
value: o.value, |
value: o.value, |
||||||
listeners: [{ |
listeners: [{ |
||||||
eventName: "__EVENT_CHANGE__", |
eventName: "__EVENT_CHANGE__", |
||||||
action: function () { |
action () { |
||||||
self.fireEvent("__EVENT_CHANGE__", arguments); |
this.fireEvent("__EVENT_CHANGE__", arguments); |
||||||
} |
}, |
||||||
}, { |
}, { |
||||||
eventName: "EVENT_CHANGE", |
eventName: "EVENT_CHANGE", |
||||||
action: function () { |
action () { |
||||||
self.fireEvent("EVENT_CHANGE"); |
this.fireEvent("EVENT_CHANGE"); |
||||||
} |
}, |
||||||
}], |
}], |
||||||
ref: function () { |
ref: _ref => { |
||||||
self.buttonGroup = this; |
this.buttonGroup = _ref; |
||||||
} |
}, |
||||||
}; |
}; |
||||||
}, |
} |
||||||
|
|
||||||
setValue: function (v) { |
setValue (v) { |
||||||
this.buttonGroup.setValue(v); |
this.buttonGroup.setValue(v); |
||||||
}, |
} |
||||||
|
|
||||||
setEnabledValue: function (v) { |
setEnabledValue (v) { |
||||||
this.buttonGroup.setEnabledValue(v); |
this.buttonGroup.setEnabledValue(v); |
||||||
}, |
} |
||||||
|
|
||||||
|
|
||||||
getValue: function () { |
getValue () { |
||||||
return this.buttonGroup.getValue(); |
return this.buttonGroup.getValue(); |
||||||
}, |
} |
||||||
|
|
||||||
populate: function (buttons) { |
populate (buttons) { |
||||||
var o = this.options; |
const o = this.options; |
||||||
this.buttonGroup.populate([BI.createItems(buttons, { |
this.buttonGroup.populate([createItems(buttons, { |
||||||
type: "bi.linear_segment_button", |
type: "bi.linear_segment_button", |
||||||
height: o.height |
height: o.height, |
||||||
})]) |
})]); |
||||||
}, |
} |
||||||
}); |
} |
||||||
BI.shortcut("bi.linear_segment", BI.LinearSegment); |
|
||||||
|
Loading…
Reference in new issue