Treecat
2 years ago
5 changed files with 103 additions and 1 deletions
@ -0,0 +1,17 @@
|
||||
/** |
||||
* guy |
||||
* 行为控件 |
||||
*/ |
||||
import { OB, extend } from "@/core"; |
||||
|
||||
export class Behavior extends OB { |
||||
_defaultConfig() { |
||||
return extend(super._defaultConfig(...arguments), { |
||||
rule: () => true, |
||||
}); |
||||
} |
||||
|
||||
doBehavior() { |
||||
|
||||
} |
||||
} |
@ -0,0 +1,34 @@
|
||||
/** |
||||
* guy |
||||
*/ |
||||
import { isFunction, each } from "@/core"; |
||||
import { Single } from "../single/0.single"; |
||||
import { Behavior } from "./0.behavior"; |
||||
|
||||
export class HighlightBehavior extends Behavior { |
||||
doBehavior(items) { |
||||
const args = Array.prototype.slice.call(arguments, 1), |
||||
{ rule } = this.options; |
||||
each(items, (i, item) => { |
||||
if (item instanceof Single) { |
||||
const rules = rule(item.getValue(), item); |
||||
|
||||
function doBe(run) { |
||||
if (run === true) { |
||||
item.doHighLight && item.doHighLight(...args); |
||||
} else { |
||||
item.unHighLight && item.unHighLight(...args); |
||||
} |
||||
} |
||||
|
||||
if (isFunction(rules)) { |
||||
rules(doBe); |
||||
} else { |
||||
doBe(rules); |
||||
} |
||||
} else { |
||||
item.doBehavior && item.doBehavior(...args); |
||||
} |
||||
}); |
||||
} |
||||
} |
@ -0,0 +1,25 @@
|
||||
/** |
||||
* guy |
||||
* 标红行为 |
||||
*/ |
||||
import { Behavior } from "./0.behavior"; |
||||
import { each } from "@/core"; |
||||
import { Single } from "../single/0.single"; |
||||
|
||||
export class RedMarkBehavior extends Behavior { |
||||
doBehavior(items) { |
||||
const args = Array.prototype.slice.call(arguments, 1), |
||||
{ rule } = this.options; |
||||
each(items, (i, item) => { |
||||
if (item instanceof Single) { |
||||
if (rule(item.getValue(), item)) { |
||||
item.doRedMark && item.doRedMark(...args); |
||||
} else { |
||||
item.doRedMark && item.unRedMark(...args); |
||||
} |
||||
} else { |
||||
item.doBehavior && item.doBehavior(...args); |
||||
} |
||||
}); |
||||
} |
||||
} |
@ -0,0 +1,26 @@
|
||||
|
||||
import { HighlightBehavior } from "./behavior.highlight"; |
||||
import { RedMarkBehavior } from "./behavior.redmark"; |
||||
|
||||
export const BehaviorFactory = { |
||||
createBehavior (key, options) { |
||||
let Behavior; |
||||
switch (key) { |
||||
case "highlight": |
||||
Behavior = HighlightBehavior; |
||||
break; |
||||
case "redmark": |
||||
Behavior = RedMarkBehavior; |
||||
break; |
||||
default: |
||||
} |
||||
|
||||
return new Behavior(options); |
||||
}, |
||||
}; |
||||
|
||||
export { Behavior } from "./0.behavior"; |
||||
export { |
||||
HighlightBehavior, |
||||
RedMarkBehavior |
||||
}; |
Loading…
Reference in new issue