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