/*! fineui 2020-03-04 17:03:01 */
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) throw new TypeError ( "Cannot call a class as a function" ) } ! function ( e ) { function o ( t ) { if ( r [ t ] ) return r [ t ] . exports ; var n = r [ t ] = { i : t , l : ! 1 , exports : { } } ; return e [ t ] . call ( n . exports , n , n . exports , o ) , n . l = ! 0 , n . exports } var r = { } ; o . m = e , o . c = r , o . d = function ( t , n , e ) { o . o ( t , n ) || Object . defineProperty ( t , n , { enumerable : ! 0 , get : e } ) } , o . r = function ( t ) { "undefined" != typeof Symbol && Symbol . toStringTag && Object . defineProperty ( t , Symbol . toStringTag , { value : "Module" } ) , Object . defineProperty ( t , "__esModule" , { value : ! 0 } ) } , o . t = function ( n , t ) { if ( 1 & t && ( n = o ( n ) ) , 8 & t ) return n ; if ( 4 & t && "object" == typeof n && n && n . _ _esModule ) return n ; var e = Object . create ( null ) ; if ( o . r ( e ) , Object . defineProperty ( e , "default" , { enumerable : ! 0 , value : n } ) , 2 & t && "string" != typeof n ) for ( var r in n ) o . d ( e , r , function ( t ) { return n [ t ] } . bind ( null , r ) ) ; return e } , o . n = function ( t ) { var n = t && t . _ _esModule ? function ( ) { return t [ "default" ] } : function ( ) { return t } ; return o . d ( n , "a" , n ) , n } , o . o = function ( t , n ) { return Object . prototype . hasOwnProperty . call ( t , n ) } , o . p = "" , o ( o . s = 70 ) } ( [ function ( e , t , n ) { ( function ( t ) { var n = function ( t ) { return t && t . Math == Math && t } ; e . exports = n ( "object" == typeof globalThis && globalThis ) || n ( "object" == typeof window && window ) || n ( "object" == typeof self && self ) || n ( "object" == typeof t && t ) || Function ( "return this" ) ( ) } ) . call ( this , n ( 74 ) ) } , function ( t , n , e ) { var r = e ( 0 ) , o = e ( 20 ) , i = e ( 41 ) , u = e ( 53 ) , c = r . Symbol , f = o ( "wks" ) ; t . exports = function ( t ) { return f [ t ] || ( f [ t ] = u && c [ t ] || ( u ? c : i ) ( "Symbol." + t ) ) } } , function ( t , n , e ) { var s = e ( 0 ) , l = e ( 24 ) . f , p = e ( 6 ) , v = e ( 11 ) , d = e ( 40 ) , h = e ( 77 ) , y = e ( 51 ) ; t . exports = function ( t , n ) { var e , r , o , i , u , c = t . target , f = t . global , a = t . stat ; if ( e = f ? s : a ? s [ c ] || d ( c , { } ) : ( s [ c ] || { } ) . prototype ) for ( r in n ) { if ( i = n [ r ] , o = t . noTargetGet ? ( u = l ( e , r ) ) && u . value : e [ r ] , ! y ( f ? r : c + ( a ? "." : "#" ) + r , t . forced ) && void 0 !== o ) { if ( typeof i == typeof o ) continue ; h ( i , o ) } ( t . sham || o && o . sham ) && p ( i , "sham" , ! 0 ) , v ( e , r , i , t ) } } } , function ( t , n , e ) { var r = e ( 7 ) ; t . exports = function ( t ) { if ( ! r ( t ) ) throw TypeError ( String ( t ) + " is not an object" ) ; return t } } , function ( t , n ) { t . exports = function ( t ) { try { return ! ! t ( ) } catch ( n ) { return ! 0 } } } , function ( t , n , e ) { var r = e ( 4 ) ; t . exports = ! r ( function ( ) { return 7 != Object . defineProperty ( { } , "a" , { get : function ( ) { return 7 } } ) . a } ) } , function ( t , n , e ) { var r = e ( 5 ) , o = e ( 9 ) , i = e ( 19 ) ; t . exports = r ? function ( t , n , e ) { return o . f ( t , n , i ( 1 , e ) ) } : function ( t , n , e ) { return t [ n ] = e , t } } , function ( t , n ) { t . exports = function ( t ) { return "object" == typeof t ? null !== t : "function" == typeof t } } , function ( t , n ) { var e = { } . hasOwnProperty ; t . exports = function ( t , n ) { return e . call ( t , n ) } } , function ( t , n , e ) { var r = e ( 5 ) , o = e ( 47 ) , i = e ( 3 ) , u = e ( 38 ) , c = Object . defineProperty ; n . f = r ? c : function ( t , n , e ) { if ( i ( t ) , n = u ( n , ! 0 ) , i ( e ) , o ) try { return c ( t , n , e ) } catch ( r ) { } if ( "get" in e || "set" in e ) throw TypeError ( "Accessors not supported" ) ; return "value" in e && ( t [ n ] = e . value ) , t } } , function ( t , n , e ) { t . exports = e ( 0 ) } , function ( t , n , e ) { var c = e ( 0 ) , r = e ( 20 ) , f = e ( 6 ) , a = e ( 8 ) , s = e ( 40 ) , o = e ( 48 ) , i = e ( 16 ) , u = i . get , l = i . enforce , p = String ( o ) . split ( "toString" ) ; r ( "inspectSource" , function ( t ) { return o . call ( t ) } ) , ( t . exports = function ( t , n , e , r ) { var o = ! ! r && ! ! r . unsafe , i = ! ! r && ! ! r . enumerable , u = ! ! r && ! ! r . noTargetGet ; "function" == typeof e && ( "string" != typeof n || a ( e , "name" ) || f ( e , "name" , n ) , l ( e ) . source = p . join ( "string" == typeof n ? n : "" ) ) , t !== c ? ( o ? ! u && t [ n ] && ( i = ! 0 ) : delete t [ n ] , i ? t [ n ] = e : f ( t , n , e ) ) : i ? t [ n ] = e : s ( n , e ) } ) ( Function . prototype , "toString" , function ( ) { return "function" == typeof this && u ( this ) . source || o . call ( this ) } ) } , function ( t , n ) { var e = { } . toString ; t . exports = function ( t ) { return e . call ( t ) . slice ( 8 , - 1 ) } } , function ( t , n ) { t . exports = function ( t ) { if ( "function" != typeof t ) throw TypeError ( String ( t ) + " is not a function" ) ; return t } } , function ( t , n , e ) { var r = e ( 37 ) , o = e ( 25 ) ; t . exports = function ( t ) { return r ( o ( t ) ) } } , function ( t , n ) { t . exports = ! 1 } , function ( t , n , e ) { var r , o , i , u = e ( 76 ) , c = e ( 0 ) , f = e ( 7 ) , a = e ( 6 ) , s = e ( 8 ) , l = e ( 26 ) , p = e ( 27 ) , v = c . WeakMap ; if ( u ) { var d = new v , h = d . get , y = d . has , g = d . set ; r = function ( t , n ) { return g . call ( d , t , n ) , n } , o = function ( t ) { return h . call ( d , t ) || { } } , i = function ( t ) { return y . call ( d , t ) } } else { var x = l ( "state" ) ; p [ x ] = ! 0 , r = function ( t , n ) { return a ( t , x , n ) , n } , o = function ( t ) { return s ( t , x ) ? t [ x ] : { } } , i = function ( t ) { return s ( t , x ) } } t . exports = { set : r , get : o , has : i , enforce : function ( t ) { return i ( t ) ? o ( t ) : r ( t , { } ) } , getterFor
S || ( r = function ( ) { var t , n ; for ( m && ( t = g . domain ) && t . exit ( ) ; o ; ) { n = o . fn , o = o . next ; try { n ( ) } catch ( e ) { throw o ? u ( ) : i = void 0 , e } } i = void 0 , t && t . enter ( ) } , u = m ? function ( ) { g . nextTick ( r ) } : y && ! /(iphone|ipod|ipad).*applewebkit/i . test ( h ) ? ( c = ! 0 , f = document . createTextNode ( "" ) , new y ( r ) . observe ( f , { characterData : ! 0 } ) , function ( ) { f . data = c = ! c } ) : x && x . resolve ? ( a = x . resolve ( void 0 ) , s = a . then , function ( ) { s . call ( a , r ) } ) : function ( ) { d . call ( l , r ) } ) , t . exports = S || function ( t ) { var n = { fn : t , next : void 0 } ; i && ( i . next = n ) , o || ( o = n , u ( ) ) , i = n } } , function ( t , n , e ) { var r = e ( 0 ) ; t . exports = function ( t , n ) { var e = r . console ; e && e . error && ( 1 === arguments . length ? e . error ( t ) : e . error ( t , n ) ) } } , function ( t , n , e ) { "use strict" ; var r = e ( 2 ) , o = e ( 15 ) , i = e ( 64 ) , u = e ( 17 ) , c = e ( 65 ) , f = e ( 67 ) , a = e ( 11 ) ; r ( { target : "Promise" , proto : ! 0 , real : ! 0 } , { "finally" : function ( n ) { var e = c ( this , u ( "Promise" ) ) , t = "function" == typeof n ; return this . then ( t ? function ( t ) { return f ( e , n ( ) ) . then ( function ( ) { return t } ) } : n , t ? function ( t ) { return f ( e , n ( ) ) . then ( function ( ) { throw t } ) } : n ) } } ) , o || "function" != typeof i || i . prototype [ "finally" ] || a ( i . prototype , "finally" , u ( "Promise" ) . prototype [ "finally" ] ) } , function ( t , n , e ) { "use strict" ; var r = e ( 2 ) , o = e ( 5 ) , i = e ( 32 ) , u = e ( 63 ) , c = e ( 21 ) , f = e ( 9 ) , a = e ( 19 ) , s = e ( 34 ) , l = e ( 6 ) , p = e ( 3 ) , v = e ( 16 ) , d = v . set , h = v . getterFor ( "AggregateError" ) , y = function ( t , n ) { var e = this ; if ( ! ( e instanceof y ) ) return new y ( t , n ) ; u && ( e = u ( new Error ( n ) , i ( e ) ) ) ; var r = [ ] ; return s ( t , r . push , r ) , o ? d ( e , { errors : r , type : "AggregateError" } ) : e . errors = r , void 0 !== n && l ( e , "message" , String ( n ) ) , e } ; y . prototype = c ( Error . prototype , { constructor : a ( 5 , y ) , message : a ( 5 , "" ) , name : a ( 5 , "AggregateError" ) , toString : a ( 5 , function ( ) { var t = p ( this ) . name ; t = void 0 === t ? "AggregateError" : String ( t ) ; var n = this . message ; return t + ": " + ( n = void 0 === n ? "" : String ( n ) ) } ) } ) , o && f . f ( y . prototype , "errors" , { get : function ( ) { return h ( this ) . errors } , configurable : ! 0 } ) , r ( { global : ! 0 } , { AggregateError : y } ) } , function ( t , n , e ) { e ( 68 ) } , function ( t , n , e ) { "use strict" ; var r = e ( 2 ) , o = e ( 23 ) , i = e ( 35 ) ; r ( { target : "Promise" , stat : ! 0 } , { "try" : function ( t ) { var n = o . f ( this ) , e = i ( t ) ; return ( e . error ? n . reject : n . resolve ) ( e . value ) , n . promise } } ) } , function ( t , n , e ) { "use strict" ; var r = e ( 2 ) , l = e ( 13 ) , p = e ( 17 ) , o = e ( 23 ) , i = e ( 35 ) , v = e ( 34 ) , d = "No one promise resolved" ; r ( { target : "Promise" , stat : ! 0 } , { any : function ( t ) { var f = this , n = o . f ( f ) , a = n . resolve , s = n . reject , e = i ( function ( ) { var r = l ( f . resolve ) , o = [ ] , i = 0 , u = 1 , c = ! 1 ; v ( t , function ( t ) { var n = i ++ , e = ! 1 ; o . push ( void 0 ) , u ++ , r . call ( f , t ) . then ( function ( t ) { e || c || ( c = ! 0 , a ( t ) ) } , function ( t ) { e || c || ( e = ! 0 , o [ n ] = t , -- u || s ( new ( p ( "AggregateError" ) ) ( o , d ) ) ) } ) } ) , -- u || s ( new ( p ( "AggregateError" ) ) ( o , d ) ) } ) ; return e . error && s ( e . value ) , n . promise } } ) } , function ( t , n , e ) { t . exports = e ( 135 ) } , function ( t , n , e ) { e ( 136 ) ; var r = e ( 33 ) ; t . exports = r ( "String" , "replace" ) } , function ( t , n , e ) { "use strict" ; var r = e ( 137 ) , w = e ( 3 ) , p = e ( 18 ) , P = e ( 28 ) , E = e ( 29 ) , i = e ( 25 ) , A = e ( 139 ) , T = e ( 140 ) , L = Math . max , M = Math . min , v = Math . floor , d = /\$([$&'`]|\d\d?|<[^>]*>)/g , h = /\$([$&'`]|\d\d?)/g ; r ( "replace" , 2 , function ( o , S , O ) { function j ( i , u , c , f , a , t ) { var s = c + i . length , l = f . length , n = h ; return void 0 !== a && ( a = p ( a ) , n = d ) , S . call ( t , n , function ( t , n ) { var e ; switch ( n . charAt ( 0 ) ) { case "$" : return "$" ; case "&" : return i ; case "`" : return u . slice ( 0 , c ) ; case "'" : return u . slice ( s ) ; case "<" : e = a [ n . slice ( 1 , - 1 ) ] ; break ; default : var r = + n ; if ( 0 == r ) return t ; if ( l < r ) { var o = v ( r / 10 ) ; return 0 === o ? t : o <= l ? void 0 === f [ o - 1 ] ? n . charAt ( 1 ) : f [ o - 1 ] + n . charAt ( 1 ) : t } e = f [ r - 1 ] } return void 0 === e ? "" : e } ) } return [ function ( t , n ) { var e = i ( this ) , r = void 0 == t ? void 0 : t [ o ] ; return void 0 !== r ? r . call ( t , e , n ) : S . call ( String ( e ) , t , n ) } , function ( t , n ) { var e = O ( S , t , this , n ) ; if ( e . done ) return e . value ; var r = w ( t ) , o = String ( this ) , i = "function" == typeof n ; i || ( n = String ( n ) ) ; var u = r . global ; if ( u ) { var c = r . unicode ; r . lastIndex = 0 } for ( var f = [ ] ; ; ) { var a = T ( r , o ) ; if ( null === a ) break ; if ( f . push ( a ) , ! u ) break ; "" === String ( a [ 0 ] ) && ( r . lastIndex = A ( o , P ( r . lastIndex ) , c ) ) } for ( var s , l = "" , p = 0 , v = 0 ; v < f . length ; v ++ ) { a = f [ v ] ; for ( var d = String ( a [ 0 ] ) , h = L ( M ( E ( a . index ) , o . length ) , 0 ) , y = [ ] , g = 1 ; g < a . length ; g ++ ) y . push ( void 0 === ( s = a [ g ] ) ? s : String ( s ) ) ; var x = a . groups ; if ( i ) { var m = [ d ] . concat ( y , h , o ) ; void 0 !== x && m . push ( x ) ; var b = String ( n . apply ( void 0 , m ) ) } else b = j ( d , o , h , y , x , n ) ; p <= h && ( l += o . slice ( p , h ) + b , p = h + d . length ) } return l + o . slice ( p ) } ] } ) } , function ( t , n , e ) { "use strict" ; var l = e ( 6 ) , p = e ( 11 ) , v = e ( 4 ) , d = e ( 1 ) , h = e ( 69 ) , y = d ( "species" ) , g =
var isArr = isArray ( srcValue ) , isBuff = ! isArr && isBuffer ( srcValue ) , isTyped = ! isArr && ! isBuff && isTypedArray ( srcValue ) ; newValue = srcValue , isArr || isBuff || isTyped ? isArray ( objValue ) ? newValue = objValue : isArrayLikeObject ( objValue ) ? newValue = copyArray ( objValue ) : isBuff ? ( isCommon = ! 1 , newValue = cloneBuffer ( srcValue , ! 0 ) ) : isTyped ? ( isCommon = ! 1 , newValue = cloneTypedArray ( srcValue , ! 0 ) ) : newValue = [ ] : isPlainObject ( srcValue ) || isArguments ( srcValue ) ? ( newValue = objValue , isArguments ( objValue ) ? newValue = toPlainObject ( objValue ) : ( ! isObject ( objValue ) || srcIndex && isFunction ( objValue ) ) && ( newValue = initCloneObject ( srcValue ) ) ) : isCommon = ! 1 } isCommon && ( stack . set ( srcValue , newValue ) , mergeFunc ( newValue , srcValue , srcIndex , customizer , stack ) , stack [ "delete" ] ( srcValue ) ) , assignMergeValue ( object , key , newValue ) } function baseOrderBy ( collection , iteratees , orders ) { var index = - 1 ; iteratees = arrayMap ( iteratees . length ? iteratees : [ identity ] , baseUnary ( baseIteratee ) ) ; var result = baseMap ( collection , function ( value , key , collection ) { var criteria = arrayMap ( iteratees , function ( iteratee ) { return iteratee ( value ) } ) ; return { criteria : criteria , index : ++ index , value : value } } ) ; return baseSortBy ( result , function ( object , other ) { return compareMultiple ( object , other , orders ) } ) } function basePick ( object , paths ) { return basePickBy ( object , paths , function ( value , path ) { return hasIn ( object , path ) } ) } function basePickBy ( object , paths , predicate ) { for ( var index = - 1 , length = paths . length , result = { } ; ++ index < length ; ) { var path = paths [ index ] , value = baseGet ( object , path ) ; predicate ( value , path ) && baseSet ( result , castPath ( path , object ) , value ) } return result } function basePropertyDeep ( path ) { return function ( object ) { return baseGet ( object , path ) } } function baseRandom ( lower , upper ) { return lower + nativeFloor ( nativeRandom ( ) * ( upper - lower + 1 ) ) } function baseRange ( start , end , step , fromRight ) { for ( var index = - 1 , length = nativeMax ( nativeCeil ( ( end - start ) / ( step || 1 ) ) , 0 ) , result = Array ( length ) ; length -- ; ) result [ fromRight ? length : ++ index ] = start , start += step ; return result } function baseRest ( func , start ) { return setToString ( overRest ( func , start , identity ) , func + "" ) } function baseSet ( object , path , value , customizer ) { if ( ! isObject ( object ) ) return object ; path = castPath ( path , object ) ; for ( var index = - 1 , length = path . length , lastIndex = length - 1 , nested = object ; null != nested && ++ index < length ; ) { var key = toKey ( path [ index ] ) , newValue = value ; if ( index != lastIndex ) { var objValue = nested [ key ] ; newValue = customizer ? customizer ( objValue , key , nested ) : undefined , newValue === undefined && ( newValue = isObject ( objValue ) ? objValue : isIndex ( path [ index + 1 ] ) ? [ ] : { } ) } assignValue ( nested , key , newValue ) , nested = nested [ key ] } return object } function baseSlice ( array , start , end ) { var index = - 1 , length = array . length ; start < 0 && ( start = - start > length ? 0 : length + start ) , end = end > length ? length : end , end < 0 && ( end += length ) , length = start > end ? 0 : end - start >>> 0 , start >>>= 0 ; for ( var result = Array ( length ) ; ++ index < length ; ) result [ index ] = array [ index + start ] ; return result } function baseSome ( collection , predicate ) { var result ; return baseEach ( collection , function ( value , index , collection ) { return result = predicate ( value , index , collection ) , ! result } ) , ! ! result } function baseToString ( value ) { if ( "string" == typeof value ) return value ; if ( isArray ( value ) ) return arrayMap ( value , baseToString ) + "" ; if ( isSymbol ( value ) ) return symbolToString ? symbolToString . call ( value ) : "" ; var result = value + "" ; return "0" == result && 1 / value == - INFINITY ? "-0" : result } function baseUniq ( array , iteratee , comparator ) { var index = - 1 , includes = arrayIncludes , length = array . length , isCommon = ! 0 , result = [ ] , seen = result ; if ( comparator ) isCommon = ! 1 , includes = arrayIncludesWith ; else if ( length >= LARGE _ARRAY _SIZE ) { var set = iteratee ? null : createSet ( array ) ; if ( set ) return setToArray ( set ) ; isCommon = ! 1 , includes = cacheHas , seen = new SetCache } else seen = iteratee ? [ ] : result ; outer : for ( ; ++ index < length ; ) { var value = array [ index ] , computed = iteratee ? iteratee ( value ) : value ; if ( value = comparator || 0 !== value ? value : 0 , isCommon && computed === computed ) { for ( var seenIndex = seen . length ; seenIndex -- ; ) if ( seen [ seenIndex ] === computed ) continue outer ; iteratee && seen . push ( computed ) , result . push ( value ) } else includes ( seen , computed , comparator ) || ( seen !== result && seen . push ( computed ) , result . push ( value ) ) } return result } function baseUnset ( object , path ) { return path = castP
var result = lodash ( value ) ; return result . _ _chain _ _ = ! 0 , result } function tap ( value , interceptor ) { return interceptor ( value ) , value } function thru ( value , interceptor ) { return interceptor ( value ) } function wrapperChain ( ) { return chain ( this ) } function wrapperCommit ( ) { return new LodashWrapper ( this . value ( ) , this . _ _chain _ _ ) } function wrapperNext ( ) { this . _ _values _ _ === undefined && ( this . _ _values _ _ = toArray ( this . value ( ) ) ) ; var done = this . _ _index _ _ >= this . _ _values _ _ . length , value = done ? undefined : this . _ _values _ _ [ this . _ _index _ _ ++ ] ; return { done : done , value : value } } function wrapperToIterator ( ) { return this } function wrapperPlant ( value ) { for ( var result , parent = this ; parent instanceof baseLodash ; ) { var clone = wrapperClone ( parent ) ; clone . _ _index _ _ = 0 , clone . _ _values _ _ = undefined , result ? previous . _ _wrapped _ _ = clone : result = clone ; var previous = clone ; parent = parent . _ _wrapped _ _ } return previous . _ _wrapped _ _ = value , result } function wrapperReverse ( ) { var value = this . _ _wrapped _ _ ; if ( value instanceof LazyWrapper ) { var wrapped = value ; return this . _ _actions _ _ . length && ( wrapped = new LazyWrapper ( this ) ) , wrapped = wrapped . reverse ( ) , wrapped . _ _actions _ _ . push ( { func : thru , args : [ reverse ] , thisArg : undefined } ) , new LodashWrapper ( wrapped , this . _ _chain _ _ ) } return this . thru ( reverse ) } function wrapperValue ( ) { return baseWrapperValue ( this . _ _wrapped _ _ , this . _ _actions _ _ ) } function every ( collection , predicate , guard ) { var func = isArray ( collection ) ? arrayEvery : baseEvery ; return guard && isIterateeCall ( collection , predicate , guard ) && ( predicate = undefined ) , func ( collection , baseIteratee ( predicate , 3 ) ) } function filter ( collection , predicate ) { var func = isArray ( collection ) ? arrayFilter : baseFilter ; return func ( collection , baseIteratee ( predicate , 3 ) ) } function forEach ( collection , iteratee ) { var func = isArray ( collection ) ? arrayEach : baseEach ; return func ( collection , baseIteratee ( iteratee , 3 ) ) } function map ( collection , iteratee ) { var func = isArray ( collection ) ? arrayMap : baseMap ; return func ( collection , baseIteratee ( iteratee , 3 ) ) } function reduce ( collection , iteratee , accumulator ) { var func = isArray ( collection ) ? arrayReduce : baseReduce , initAccum = arguments . length < 3 ; return func ( collection , baseIteratee ( iteratee , 4 ) , accumulator , initAccum , baseEach ) } function reject ( collection , predicate ) { var func = isArray ( collection ) ? arrayFilter : baseFilter ; return func ( collection , negate ( baseIteratee ( predicate , 3 ) ) ) } function size ( collection ) { if ( null == collection ) return 0 ; if ( isArrayLike ( collection ) ) return isString ( collection ) ? stringSize ( collection ) : collection . length ; var tag = getTag ( collection ) ; return tag == mapTag || tag == setTag ? collection . size : baseKeys ( collection ) . length } function some ( collection , predicate , guard ) { var func = isArray ( collection ) ? arraySome : baseSome ; return guard && isIterateeCall ( collection , predicate , guard ) && ( predicate = undefined ) , func ( collection , baseIteratee ( predicate , 3 ) ) } function before ( n , func ) { var result ; if ( "function" != typeof func ) throw new TypeError ( FUNC _ERROR _TEXT ) ; return n = toInteger ( n ) , function ( ) { return -- n > 0 && ( result = func . apply ( this , arguments ) ) , n <= 1 && ( func = undefined ) , result } } function debounce ( func , wait , options ) { function invokeFunc ( time ) { var args = lastArgs , thisArg = lastThis ; return lastArgs = lastThis = undefined , lastInvokeTime = time , result = func . apply ( thisArg , args ) } function leadingEdge ( time ) { return lastInvokeTime = time , timerId = setTimeout ( timerExpired , wait ) , leading ? invokeFunc ( time ) : result } function remainingWait ( time ) { var timeSinceLastCall = time - lastCallTime , timeSinceLastInvoke = time - lastInvokeTime , timeWaiting = wait - timeSinceLastCall ; return maxing ? nativeMin ( timeWaiting , maxWait - timeSinceLastInvoke ) : timeWaiting } function shouldInvoke ( time ) { var timeSinceLastCall = time - lastCallTime , timeSinceLastInvoke = time - lastInvokeTime ; return lastCallTime === undefined || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait } function timerExpired ( ) { var time = now ( ) ; return shouldInvoke ( time ) ? trailingEdge ( time ) : void ( timerId = setTimeout ( timerExpired , remainingWait ( time ) ) ) } function trailingEdge ( time ) { return timerId = undefined , trailing && lastArgs ? invokeFunc ( time ) : ( lastArgs = lastThis = undefined , result ) } function cancel ( ) { timerId !== undefined && clearTimeout ( timerId ) , lastInvokeTime = 0 , lastArgs = lastCallTime = lastThis = timerId = undefined } functi
lodash . max = max , lodash . min = min , lodash . noConflict = noConflict , lodash . noop = noop , lodash . random = random , lodash . reduce = reduce , lodash . result = result , lodash . size = size , lodash . some = some , lodash . trim = trim , lodash . uniqueId = uniqueId , lodash . each = forEach , lodash . first = head , mixin ( lodash , function ( ) { var source = { } ; return baseForOwn ( lodash , function ( func , methodName ) { hasOwnProperty . call ( lodash . prototype , methodName ) || ( source [ methodName ] = func ) } ) , source } ( ) , { chain : ! 1 } ) , lodash . VERSION = VERSION , arrayEach ( [ "drop" , "take" ] , function ( methodName , index ) { LazyWrapper . prototype [ methodName ] = function ( n ) { n = n === undefined ? 1 : nativeMax ( toInteger ( n ) , 0 ) ; var result = this . _ _filtered _ _ && ! index ? new LazyWrapper ( this ) : this . clone ( ) ; return result . _ _filtered _ _ ? result . _ _takeCount _ _ = nativeMin ( n , result . _ _takeCount _ _ ) : result . _ _views _ _ . push ( { size : nativeMin ( n , MAX _ARRAY _LENGTH ) , type : methodName + ( result . _ _dir _ _ < 0 ? "Right" : "" ) } ) , result } , LazyWrapper . prototype [ methodName + "Right" ] = function ( n ) { return this . reverse ( ) [ methodName ] ( n ) . reverse ( ) } } ) , arrayEach ( [ "filter" , "map" , "takeWhile" ] , function ( methodName , index ) { var type = index + 1 , isFilter = type == LAZY _FILTER _FLAG || type == LAZY _WHILE _FLAG ; LazyWrapper . prototype [ methodName ] = function ( iteratee ) { var result = this . clone ( ) ; return result . _ _iteratees _ _ . push ( { iteratee : getIteratee ( iteratee , 3 ) , type : type } ) , result . _ _filtered _ _ = result . _ _filtered _ _ || isFilter , result } } ) , arrayEach ( [ "head" , "last" ] , function ( methodName , index ) { var takeName = "take" + ( index ? "Right" : "" ) ; LazyWrapper . prototype [ methodName ] = function ( ) { return this [ takeName ] ( 1 ) . value ( ) [ 0 ] } } ) , arrayEach ( [ "initial" , "tail" ] , function ( methodName , index ) { var dropName = "drop" + ( index ? "" : "Right" ) ; LazyWrapper . prototype [ methodName ] = function ( ) { return this . _ _filtered _ _ ? new LazyWrapper ( this ) : this [ dropName ] ( 1 ) } } ) , LazyWrapper . prototype . compact = function ( ) { return this . filter ( identity ) } , LazyWrapper . prototype . find = function ( predicate ) { return this . filter ( predicate ) . head ( ) } , LazyWrapper . prototype . findLast = function ( predicate ) { return this . reverse ( ) . find ( predicate ) } , LazyWrapper . prototype . invokeMap = baseRest ( function ( path , args ) { return "function" == typeof path ? new LazyWrapper ( this ) : this . map ( function ( value ) { return baseInvoke ( value , path , args ) } ) } ) , LazyWrapper . prototype . reject = function ( predicate ) { return this . filter ( negate ( getIteratee ( predicate ) ) ) } , LazyWrapper . prototype . slice = function ( start , end ) { start = toInteger ( start ) ; var result = this ; return result . _ _filtered _ _ && ( start > 0 || end < 0 ) ? new LazyWrapper ( result ) : ( start < 0 ? result = result . takeRight ( - start ) : start && ( result = result . drop ( start ) ) , end !== undefined && ( end = toInteger ( end ) , result = end < 0 ? result . dropRight ( - end ) : result . take ( end - start ) ) , result ) } , LazyWrapper . prototype . takeRightWhile = function ( predicate ) { return this . reverse ( ) . takeWhile ( predicate ) . reverse ( ) } , LazyWrapper . prototype . toArray = function ( ) { return this . take ( MAX _ARRAY _LENGTH ) } , baseForOwn ( LazyWrapper . prototype , function ( func , methodName ) { var checkIteratee = /^(?:filter|find|map|reject)|While$/ . test ( methodName ) , isTaker = /^(?:head|last)$/ . test ( methodName ) , lodashFunc = lodash [ isTaker ? "take" + ( "last" == methodName ? "Right" : "" ) : methodName ] , retUnwrapped = isTaker || /^find/ . test ( methodName ) ; lodashFunc && ( lodash . prototype [ methodName ] = function ( ) { var value = this . _ _wrapped _ _ , args = isTaker ? [ 1 ] : arguments , isLazy = value instanceof LazyWrapper , iteratee = args [ 0 ] , useLazy = isLazy || isArray ( value ) , interceptor = function ( value ) { var result = lodashFunc . apply ( lodash , arrayPush ( [ value ] , args ) ) ; return isTaker && chainAll ? result [ 0 ] : result } ; useLazy && checkIteratee && "function" == typeof iteratee && 1 != iteratee . length && ( isLazy = useLazy = ! 1 ) ; var chainAll = this . _ _chain _ _ , isHybrid = ! ! this . _ _actions _ _ . length , isUnwrapped = retUnwrapped && ! chainAll , onlyLazy = isLazy && ! isHybrid ; if ( ! retUnwrapped && useLazy ) { value = onlyLazy ? value : new LazyWrapper ( this ) ; var result = func . apply ( value , args ) ; return result . _ _actions _ _ . push ( { func : thru , args : [ interceptor ] , thisArg : undefined } ) , new LodashWrapper ( result , chainAll ) } return isUnwrapped && onlyLazy ? func . apply ( this , args ) : ( result = this . thru ( interceptor ) , isUnwrapped ? isTaker ? result . value ( ) [ 0 ] : result . value ( ) : result ) } ) } ) , arrayEach ( [ "pop" , "push" , "shift" , "sort" , "splice" , "unshift" ] , function ( methodName ) { var func = arrayProto [ methodName ] , chainName
return null != this . _children [ name ] } , getName : function ( ) { return this . widgetName } , setTag : function ( tag ) { this . options . tag = tag } , getTag : function ( ) { return this . options . tag } , attr : function ( key , value ) { var self = this ; return BI . isPlainObject ( key ) ? void BI . each ( key , function ( k , v ) { self . attr ( k , v ) } ) : BI . isNotNull ( value ) ? this . options [ key ] = value : this . options [ key ] } , css : function ( name , value ) { return this . element . css ( name , value ) } , getText : function ( ) { } , setText : function ( text ) { } , getValue : function ( ) { } , setValue : function ( value ) { } , isEnabled : function ( ) { return ! this . options . disabled } , isVisible : function ( ) { return ! this . options . invisible } , disable : function ( ) { this . setEnable ( ! 1 ) } , enable : function ( ) { this . setEnable ( ! 0 ) } , valid : function ( ) { this . setValid ( ! 0 ) } , invalid : function ( ) { this . setValid ( ! 1 ) } , invisible : function ( ) { this . setVisible ( ! 1 ) } , visible : function ( ) { this . setVisible ( ! 0 ) } , _ _d : function ( ) { this . beforeDestroy && this . beforeDestroy ( ) , this . beforeDestroy = null , BI . each ( this . _children , function ( i , widget ) { widget && widget . _unMount && widget . _unMount ( ) } ) , this . _children = { } , this . _parent = null , this . _isMounted = ! 1 , this . destroyed && this . destroyed ( ) , this . destroyed = null } , _unMount : function ( ) { this . _ _d ( ) , this . fireEvent ( BI . Events . UNMOUNT ) , this . purgeListeners ( ) } , isolate : function ( ) { this . _parent && this . _parent . removeWidget ( this ) , BI . DOM . hang ( [ this ] ) } , empty : function ( ) { BI . each ( this . _children , function ( i , widget ) { widget && widget . _unMount && widget . _unMount ( ) } ) , this . _children = { } , this . element . empty ( ) } , _destroy : function ( ) { this . _ _d ( ) , this . element . destroy ( ) , this . purgeListeners ( ) } , destroy : function ( ) { this . _ _d ( ) , this . element . destroy ( ) , this . fireEvent ( BI . Events . DESTROY ) , this . _purgeRef ( ) , this . purgeListeners ( ) } } ) , BI . Widget . registerRenderEngine = function ( engine ) { BI . Widget . _renderEngine = engine } , BI . Widget . registerRenderEngine ( { createElement : function ( widget ) { if ( BI . isWidget ( widget ) ) { var o = widget . options ; return o . element ? BI . $ ( o . element ) : BI . $ ( document . createElement ( o . tagName ) ) } return BI . $ ( widget ) } , createFragment : function ( ) { return document . createDocumentFragment ( ) } } ) , BI . mount = function ( widget , container , predicate , hydrate ) { if ( hydrate === ! 0 ) { widget . element . data ( "__widgets" , [ widget ] ) ; var res = widget . _mount ( ! 0 , ! 1 , ! 1 , function ( w ) { BI . each ( w . _children , function ( i , child ) { var ws = child . element . data ( "__widgets" ) ; ws || ( ws = [ ] ) , ws . push ( child ) , child . element . data ( "__widgets" , ws ) } ) , predicate && predicate . apply ( this , arguments ) } ) , c = BI . Widget . _renderEngine . createElement ; BI . DOM . patchProps ( widget . element , c ( c ( container ) . children ( ) [ 0 ] ) ) ; var triggerLifeHook = function ( w ) { w . beforeMount && w . beforeMount ( ) , w . mounted && w . mounted ( ) , BI . each ( w . _children , function ( i , child ) { triggerLifeHook ( child ) } ) } ; return triggerLifeHook ( widget ) , res } return container && BI . Widget . _renderEngine . createElement ( container ) . append ( widget . element ) , widget . _mount ( ! 0 , ! 1 , ! 1 , predicate ) } } ( ) , function ( ) { var kv = { } ; BI . shortcut = BI . component = function ( xtype , cls ) { null != kv [ xtype ] && _global . console && console . error ( "shortcut:[" + xtype + "] has been registed" ) , kv [ xtype ] = cls } ; var createWidget = function ( config ) { var cls = kv [ config . type ] , widget = new cls ; return widget . _initProps ( config ) , widget . _init ( ) , widget . _initRef ( ) , widget } ; BI . createWidget = function ( item , options , context ) { BI . init ( ) ; var el , w ; if ( item || ( item = { } ) , BI . isWidget ( options ) ? ( context = options , options = { } ) : options || ( options = { } ) , BI . isEmpty ( item ) && BI . isEmpty ( options ) ) return BI . createWidget ( { type : "bi.layout" } ) ; if ( BI . isWidget ( item ) ) return item ; if ( item . type || options . type ) return el = BI . extend ( { } , options , item ) , w = BI . Plugin . getWidget ( el . type , el ) , w . listeners = ( w . listeners || [ ] ) . concat ( [ { eventName : BI . Events . MOUNT , action : function ( ) { BI . Plugin . getObject ( el . type , this ) } } ] ) , w . type === el . type ? createWidget ( w ) : BI . createWidget ( BI . extend ( { } , item , { type : w . type } , options ) ) ; if ( item . el && ( item . el . type || options . type ) ) return el = BI . extend ( { } , options , item . el ) , w = BI . Plugin . getWidget ( el . type , el ) , w . listeners = ( w . listeners || [ ] ) . concat ( [ { eventName : BI . Events . MOUNT , action : function ( ) { BI . Plugin . getObject ( el . type , this ) } } ] ) , w . type === el . type ? createWidget ( w ) : BI . createWidget ( BI . extend ( { } , item , { type : w . type } , options ) ) ; if ( BI . isWidget ( item . el ) ) return item . el ; throw new Error ( "无法根据item创建组件" ) } , BI . createElement = function ( ) { var wi
var datum = this . getSizeAndPositionOfCell ( targetIndex ) , maxOffset = datum . offset , minOffset = maxOffset - containerSize + datum . size , idealOffset ; switch ( align ) { case "start" : idealOffset = maxOffset ; break ; case "end" : idealOffset = minOffset ; break ; case "center" : idealOffset = maxOffset - ( containerSize - datum . size ) / 2 ; break ; default : idealOffset = Math . max ( minOffset , Math . min ( maxOffset , currentOffset ) ) } var totalSize = this . getTotalSize ( ) ; return Math . max ( 0 , Math . min ( totalSize - containerSize , idealOffset ) ) } , getVisibleCellRange : function ( containerSize , offset ) { var totalSize = this . getTotalSize ( ) ; if ( 0 === totalSize ) return { } ; var maxOffset = offset + containerSize , start = this . _findNearestCell ( offset ) , datum = this . getSizeAndPositionOfCell ( start ) ; offset = datum . offset + datum . size ; for ( var stop = start ; offset < maxOffset && stop < this . _cellCount - 1 ; ) stop ++ , offset += this . getSizeAndPositionOfCell ( stop ) . size ; return { start : start , stop : stop } } , resetCell : function ( index ) { this . _lastMeasuredIndex = Math . min ( this . _lastMeasuredIndex , index - 1 ) } , _binarySearch : function ( high , low , offset ) { for ( var middle , currentOffset ; low <= high ; ) { if ( middle = low + Math . floor ( ( high - low ) / 2 ) , currentOffset = this . getSizeAndPositionOfCell ( middle ) . offset , currentOffset === offset ) return middle ; currentOffset < offset ? low = middle + 1 : currentOffset > offset && ( high = middle - 1 ) } if ( low > 0 ) return low - 1 } , _exponentialSearch : function ( index , offset ) { for ( var interval = 1 ; index < this . _cellCount && this . getSizeAndPositionOfCell ( index ) . offset < offset ; ) index += interval , interval *= 2 ; return this . _binarySearch ( Math . min ( index , this . _cellCount - 1 ) , Math . floor ( index / 2 ) , offset ) } , _findNearestCell : function ( offset ) { if ( ! isNaN ( offset ) ) { offset = Math . max ( 0 , offset ) ; var lastMeasuredCellSizeAndPosition = this . getSizeAndPositionOfLastMeasuredCell ( ) , lastMeasuredIndex = Math . max ( 0 , this . _lastMeasuredIndex ) ; return lastMeasuredCellSizeAndPosition . offset >= offset ? this . _binarySearch ( lastMeasuredIndex , 0 , offset ) : this . _exponentialSearch ( lastMeasuredIndex , offset ) } } } , BI . ScalingCellSizeAndPositionManager = function ( cellCount , cellSizeGetter , estimatedCellSize , maxScrollSize ) { this . _cellSizeAndPositionManager = new BI . CellSizeAndPositionManager ( cellCount , cellSizeGetter , estimatedCellSize ) , this . _maxScrollSize = maxScrollSize || 1e7 } , BI . ScalingCellSizeAndPositionManager . prototype = { constructor : BI . ScalingCellSizeAndPositionManager , configure : function ( ) { this . _cellSizeAndPositionManager . configure . apply ( this . _cellSizeAndPositionManager , arguments ) } , getCellCount : function ( ) { return this . _cellSizeAndPositionManager . getCellCount ( ) } , getEstimatedCellSize : function ( ) { return this . _cellSizeAndPositionManager . getEstimatedCellSize ( ) } , getLastMeasuredIndex : function ( ) { return this . _cellSizeAndPositionManager . getLastMeasuredIndex ( ) } , getOffsetAdjustment : function ( containerSize , offset ) { var totalSize = this . _cellSizeAndPositionManager . getTotalSize ( ) , safeTotalSize = this . getTotalSize ( ) , offsetPercentage = this . _getOffsetPercentage ( containerSize , offset , safeTotalSize ) ; return Math . round ( offsetPercentage * ( safeTotalSize - totalSize ) ) } , getSizeAndPositionOfCell : function ( index ) { return this . _cellSizeAndPositionManager . getSizeAndPositionOfCell ( index ) } , getSizeAndPositionOfLastMeasuredCell : function ( ) { return this . _cellSizeAndPositionManager . getSizeAndPositionOfLastMeasuredCell ( ) } , getTotalSize : function ( ) { return Math . min ( this . _maxScrollSize , this . _cellSizeAndPositionManager . getTotalSize ( ) ) } , getUpdatedOffsetForIndex : function ( align , containerSize , currentOffset , targetIndex ) { currentOffset = this . _safeOffsetToOffset ( containerSize , currentOffset ) ; var offset = this . _cellSizeAndPositionManager . getUpdatedOffsetForIndex ( align , containerSize , currentOffset , targetIndex ) ; return this . _offsetToSafeOffset ( containerSize , offset ) } , getVisibleCellRange : function ( containerSize , offset ) { return offset = this . _safeOffsetToOffset ( containerSize , offset ) , this . _cellSizeAndPositionManager . getVisibleCellRange ( containerSize , offset ) } , resetCell : function ( index ) { this . _cellSizeAndPositionManager . resetCell ( index ) } , _getOffsetPercentage : function ( containerSize , offset , totalSize ) { return totalSize <= containerSize ? 0 : offset / ( totalSize - containerSize ) } , _offsetToSafeOffset : function ( containerSize , offset ) { var totalSize = this . _cellSizeAndPositionManager . getTo
this . _eventUpToken = null ) , null !== this . _animationFrameID && ( cancelAnimationFrame ( this . _animationFrameID ) , this . _animationFrameID = null ) , this . _isDragging && ( this . _isDragging = ! 1 , this . _x = null , this . _y = null ) } , isDragging : function ( ) { return this . _isDragging } , _onMouseMove : function ( event ) { var x = event . clientX , y = event . clientY ; this . _deltaX += x - this . _x , this . _deltaY += y - this . _y , null === this . _animationFrameID && ( this . _animationFrameID = requestAnimationFrame ( this . _didMouseMove ) ) , this . _x = x , this . _y = y , event . preventDefault ? event . preventDefault ( ) : event . returnValue = ! 1 } , _didMouseMove : function ( ) { this . _animationFrameID = null , this . _onMove ( this . _deltaX , this . _deltaY ) , this . _deltaX = 0 , this . _deltaY = 0 } , _onMouseUp : function ( ) { this . _animationFrameID && this . _didMouseMove ( ) , this . _onMoveEnd ( ) } } } ( ) , ! function ( ) { function normalizeWheel ( event ) { var sX = 0 , sY = 0 , pX = 0 , pY = 0 ; return "detail" in event && ( sY = event . detail ) , "wheelDelta" in event && ( sY = - event . wheelDelta / 120 ) , "wheelDeltaY" in event && ( sY = - event . wheelDeltaY / 120 ) , "wheelDeltaX" in event && ( sX = - event . wheelDeltaX / 120 ) , "axis" in event && event . axis === event . HORIZONTAL _AXIS && ( sX = sY , sY = 0 ) , pX = sX * PIXEL _STEP , pY = sY * PIXEL _STEP , "deltaY" in event && ( pY = event . deltaY ) , "deltaX" in event && ( pX = event . deltaX ) , ( pX || pY ) && event . deltaMode && ( 1 === event . deltaMode ? ( pX *= LINE _HEIGHT , pY *= LINE _HEIGHT ) : ( pX *= PAGE _HEIGHT , pY *= PAGE _HEIGHT ) ) , pX && ! sX && ( sX = pX < 1 ? - 1 : 1 ) , pY && ! sY && ( sY = pY < 1 ? - 1 : 1 ) , { spinX : sX , spinY : sY , pixelX : pX , pixelY : pY } } var PIXEL _STEP = 10 , LINE _HEIGHT = 40 , PAGE _HEIGHT = 800 , requestAnimationFrame = _global . requestAnimationFrame || _global . webkitRequestAnimationFrame || _global . mozRequestAnimationFrame || _global . oRequestAnimationFrame || _global . msRequestAnimationFrame || _global . setTimeout ; BI . WheelHandler = function ( onWheel , handleScrollX , handleScrollY , stopPropagation ) { this . _animationFrameID = null , this . _deltaX = 0 , this . _deltaY = 0 , this . _didWheel = BI . bind ( this . _didWheel , this ) , "function" != typeof handleScrollX && ( handleScrollX = handleScrollX ? function ( ) { return ! 0 } : function ( ) { return ! 1 } ) , "function" != typeof handleScrollY && ( handleScrollY = handleScrollY ? function ( ) { return ! 0 } : function ( ) { return ! 1 } ) , "function" != typeof stopPropagation && ( stopPropagation = stopPropagation ? function ( ) { return ! 0 } : function ( ) { return ! 1 } ) , this . _handleScrollX = handleScrollX , this . _handleScrollY = handleScrollY , this . _stopPropagation = stopPropagation , this . _onWheelCallback = onWheel , this . onWheel = BI . bind ( this . onWheel , this ) } , BI . WheelHandler . prototype = { constructor : BI . WheelHandler , onWheel : function ( event ) { var normalizedEvent = normalizeWheel ( event ) , deltaX = this . _deltaX + normalizedEvent . pixelX , deltaY = this . _deltaY + normalizedEvent . pixelY , handleScrollX = this . _handleScrollX ( deltaX , deltaY ) , handleScrollY = this . _handleScrollY ( deltaY , deltaX ) ; if ( handleScrollX || handleScrollY ) { this . _deltaX += handleScrollX ? normalizedEvent . pixelX : 0 , this . _deltaY += handleScrollY ? normalizedEvent . pixelY : 0 , event . preventDefault ? event . preventDefault ( ) : event . returnValue = ! 1 ; var changed ; 0 === this . _deltaX && 0 === this . _deltaY || ( this . _stopPropagation ( ) && ( event . stopPropagation ? event . stopPropagation ( ) : event . cancelBubble = ! 0 ) , changed = ! 0 ) , changed === ! 0 && null === this . _animationFrameID && ( this . _animationFrameID = requestAnimationFrame ( this . _didWheel ) ) } } , _didWheel : function ( ) { this . _animationFrameID = null , this . _onWheelCallback ( this . _deltaX , this . _deltaY ) , this . _deltaX = 0 , this . _deltaY = 0 } } } ( ) , function ( ) { function defaultComparator ( a , b ) { return a < b } BI . Heap = function ( items , comparator ) { this . _items = items || [ ] , this . _size = this . _items . length , this . _comparator = comparator || defaultComparator , this . _heapify ( ) } , BI . Heap . prototype = { constructor : BI . Heap , empty : function ( ) { return 0 === this . _size } , pop : function ( ) { if ( 0 !== this . _size ) { var elt = this . _items [ 0 ] , lastElt = this . _items . pop ( ) ; return this . _size -- , this . _size > 0 && ( this . _items [ 0 ] = lastElt , this . _sinkDown ( 0 ) ) , elt } } , push : function ( item ) { this . _items [ this . _size ++ ] = item , this . _bubbleUp ( this . _size - 1 ) } , size : function ( ) { return this . _size } , peek : function ( ) { if ( 0 !== this . _size ) return this . _items [ 0 ] } , _heapify : function ( ) { for ( var index = Math . floor ( ( this . _size + 1 ) / 2 ) ; index >= 0 ; index -- ) this . _sinkDown ( index ) } , _bubbleUp : function ( index ) { for ( var elt = this . _items [ index ] ; index > 0 ; ) { var parentIndex = Math . floor ( ( index + 1 ) / 2 ) - 1 , parentElt = this . _items [
this . _children = { } , BI . each ( newCh , function ( i , child ) { var node = self . _getOptions ( child ) , key = null == node . key ? self . _getChildName ( i ) : node . key ; children [ key ] . _mount ( ) , self . _children [ self . _getChildName ( i ) ] = children [ key ] } ) , updated } , update : function ( opt ) { var o = this . options , items = opt . items || [ ] , updated = this . updateChildren ( o . items , items ) ; return this . options . items = items , updated } , stroke : function ( items ) { var self = this ; BI . each ( items , function ( i , item ) { item && self . _addElement ( i , item ) } ) } , removeWidget : function ( nameOrWidget ) { var removeIndex ; BI . isWidget ( nameOrWidget ) ? BI . each ( this . _children , function ( name , child ) { child === nameOrWidget && ( removeIndex = name ) } ) : removeIndex = nameOrWidget , removeIndex && this . _removeItemAt ( 0 | removeIndex ) } , empty : function ( ) { BI . Layout . superclass . empty . apply ( this , arguments ) , this . options . items = [ ] } , destroy : function ( ) { BI . Layout . superclass . destroy . apply ( this , arguments ) , this . options . items = [ ] } , populate : function ( items ) { var self = this , o = this . options ; return items = items || [ ] , this . _isMounted ? void this . update ( { items : items } ) : ( this . options . items = items , void this . stroke ( items ) ) } , resize : function ( ) { } } ) , BI . shortcut ( "bi.layout" , BI . Layout ) , BI . Plugin = BI . Plugin || { } , ! function ( ) { var _WidgetsPlugin = { } , _ObjectPlugin = { } , _ConfigPlugin = { } , _GlobalWidgetConfigFn , _GlobalObjectConfigFn ; BI . extend ( BI . Plugin , { getWidget : function ( type , options ) { _GlobalWidgetConfigFn && _GlobalWidgetConfigFn ( type , options ) ; var res ; if ( _ConfigPlugin [ type ] ) for ( var i = _ConfigPlugin [ type ] . length - 1 ; i >= 0 ; i -- ) ( res = _ConfigPlugin [ type ] [ i ] ( options ) ) && ( options = res ) ; if ( _WidgetsPlugin [ type ] ) for ( var i = _WidgetsPlugin [ type ] . length - 1 ; i >= 0 ; i -- ) if ( res = _WidgetsPlugin [ type ] [ i ] ( options ) ) return res ; return options } , config : function ( widgetConfigFn , objectConfigFn ) { _GlobalWidgetConfigFn = widgetConfigFn , _GlobalObjectConfigFn = objectConfigFn } , configWidget : function ( type , fn ) { _ConfigPlugin [ type ] || ( _ConfigPlugin [ type ] = [ ] ) , _ConfigPlugin [ type ] . push ( fn ) } , registerWidget : function ( type , fn ) { _WidgetsPlugin [ type ] || ( _WidgetsPlugin [ type ] = [ ] ) , _WidgetsPlugin [ type ] . length > 0 && console . log ( "组件已经注册过了!" ) , _WidgetsPlugin [ type ] . push ( fn ) } , relieveWidget : function ( type ) { delete _WidgetsPlugin [ type ] } , getObject : function ( type , object ) { if ( _GlobalObjectConfigFn && _GlobalObjectConfigFn ( type , object ) , _ObjectPlugin [ type ] ) for ( var res , i = 0 , len = _ObjectPlugin [ type ] . length ; i < len ; i ++ ) ( res = _ObjectPlugin [ type ] [ i ] ( object ) ) && ( object = res ) ; return res || object } , registerObject : function ( type , fn ) { _ObjectPlugin [ type ] || ( _ObjectPlugin [ type ] = [ ] ) , _ObjectPlugin [ type ] . length > 0 && console . log ( "对象已经注册过了!" ) , _ObjectPlugin [ type ] . push ( fn ) } , relieveObject : function ( type ) { delete _ObjectPlugin [ type ] } } ) } ( ) , BI . Action = BI . inherit ( BI . OB , { _defaultConfig : function ( ) { return BI . extend ( BI . Action . superclass . _defaultConfig . apply ( this , arguments ) , { src : null , tar : null } ) } , _init : function ( ) { BI . Action . superclass . _init . apply ( this , arguments ) } , actionPerformed : function ( src , tar , callback ) { } , actionBack : function ( tar , src , callback ) { } } ) , BI . ActionFactory = { createAction : function ( key , options ) { var action ; switch ( key ) { case "show" : action = BI . ShowAction } return new action ( options ) } } , BI . ShowAction = BI . inherit ( BI . Action , { _defaultConfig : function ( ) { return BI . extend ( BI . ShowAction . superclass . _defaultConfig . apply ( this , arguments ) , { } ) } , _init : function ( ) { BI . ShowAction . superclass . _init . apply ( this , arguments ) } , actionPerformed : function ( src , tar , callback ) { tar = tar || this . options . tar , tar . setVisible ( ! 0 ) , callback && callback ( ) } , actionBack : function ( tar , src , callback ) { tar = tar || this . options . tar , tar . setVisible ( ! 1 ) , callback && callback ( ) } } ) , function ( ) { function isEmpty ( value ) { var result = "" === value || null === value || void 0 === value ; return result } function isInvalidDate ( date ) { return "Invalid Date" == date || "NaN" == date } function _eFormat ( text , fmt ) { function eFormat ( num , format ) { var neg = num < 0 ? ( num *= - 1 , "-" ) : "" , magnitudeNeg = "" , funcName = num > 0 && num < 1 ? "floor" : "ceil" , magnitude = Math [ funcName ] ( Math . log ( num ) / Math . log ( 10 ) ) ; if ( ! isFinite ( magnitude ) ) return format . replace ( /#/gi , "" ) . replace ( /\.e/gi , "E" ) ; num /= Math . pow ( 10 , magnitude ) , num > 0 && num < 1 && ( num *= 10 , magnitude -= 1 ) ; var integerLen = getInteger ( magnitude , format ) ; integerLen > 1 && ( magnitude -= integerLen - 1 , num *= Math . pow ( 10 , integerLen - 1 ) ) , magn
top : y < 0 ? 0 : y + "px" } ) , tooltip . element . hover ( function ( ) { self . remove ( name ) , context . element . trigger ( "mouseleave.title" + context . getName ( ) ) } ) , this } , add : function ( name , bubble ) { return this . has ( name ) ? this : ( this . set ( name , bubble ) , this ) } , get : function ( name ) { return this . tooltipsManager [ name ] } , set : function ( name , bubble ) { this . tooltipsManager [ name ] = bubble } , has : function ( name ) { return null != this . tooltipsManager [ name ] } , remove : function ( name ) { return this . has ( name ) ? ( this . tooltipsManager [ name ] . destroy ( ) , delete this . tooltipsManager [ name ] , this ) : this } } ) , _ . extend ( BI , { Events : { KEYDOWN : "_KEYDOWN" , BACKSPACE : "_BACKSPACE" , SPACE : "_SPACE" , ENTER : "_ENTER" , CONFIRM : "_CONFIRM" , ERROR : "_ERROR" , PAUSE : "_PAUSE" , DESTROY : "_DESTROY" , MOUNT : "_MOUNT" , UNMOUNT : "_UNMOUNT" , CLEAR : "_CLEAR" , ADD : "_ADD" , EDITING : "_EDITING" , EMPTY : "_EMPTY" , VIEW : "_VIEW" , RESIZE : "_RESIZE" , BEFOREEDIT : "_BEFOREEDIT" , AFTEREDIT : "_AFTEREDIT" , STARTEDIT : "_STARTEDIT" , STOPEDIT : "_STOPEDIT" , CHANGE : "_CHANGE" , EXPAND : "_EXPAND" , COLLAPSE : "_COLLAPSE" , CALLBACK : "_CALLBACK" , CLICK : "_CLICK" , STATECHANGE : "_STATECHANGE" , BEFORESTATECHANGE : "_BEFORESTATECHANGE" , INIT : "_INIT" , AFTERINIT : "_AFTERINIT" , SCROLL : "_SCROLL" , STARTLOAD : "_STARTLOAD" , AFTERLOAD : "_AFTERLOAD" , BS : "beforesubmit" , AS : "aftersubmit" , SC : "submitcomplete" , SF : "submitfailure" , SS : "submitsuccess" , BVW : "beforeverifywrite" , AVW : "afterverifywrite" , AV : "afterverify" , BW : "beforewrite" , AW : "afterwrite" , WS : "writesuccess" , WF : "writefailure" , BA : "beforeappend" , AA : "afterappend" , BD : "beforedelete" , AD : "beforedelete" , UC : "unloadcheck" , BTOPDF : "beforetopdf" , ATOPDF : "aftertopdf" , BTOEXCEL : "beforetoexcel" , ATOEXCEL : "aftertoexcel" , BTOWORD : "beforetoword" , ATOWORD : "aftertoword" , BTOIMAGE : "beforetoimage" , ATOIMAGE : "aftertoimage" , BTOHTML : "beforetohtml" , ATOHTML : "aftertohtml" , BIMEXCEL : "beforeimportexcel" , AIMEXCEL : "afterimportexcel" , BPDFPRINT : "beforepdfprint" , APDFPRINT : "afterpdfprint" , BFLASHPRINT : "beforeflashprint" , AFLASHPRINT : "afterflashprint" , BAPPLETPRINT : "beforeappletprint" , AAPPLETPRINT : "afterappletprint" , BSEVERPRINT : "beforeserverprint" , ASERVERPRINT : "afterserverprint" , BEMAIL : "beforeemail" , AEMAIL : "afteremail" } } ) , _ . extend ( BI , { pushArray : function ( sArray , array ) { for ( var i = 0 ; i < array . length ; i ++ ) sArray . push ( array [ i ] ) } , pushDistinct : function ( sArray , obj ) { BI . contains ( sArray , obj ) || sArray . push ( obj ) } , pushDistinctArray : function ( sArray , array ) { for ( var i = 0 , len = array . length ; i < len ; i ++ ) BI . pushDistinct ( sArray , array [ i ] ) } } ) , BI . prepares . push ( function ( ) { BI . Date = BI . Date || { } , BI . Date . _DN = [ BI . i18nText ( "BI-Basic_Sunday" ) , BI . i18nText ( "BI-Basic_Monday" ) , BI . i18nText ( "BI-Basic_Tuesday" ) , BI . i18nText ( "BI-Basic_Wednesday" ) , BI . i18nText ( "BI-Basic_Thursday" ) , BI . i18nText ( "BI-Basic_Friday" ) , BI . i18nText ( "BI-Basic_Saturday" ) , BI . i18nText ( "BI-Basic_Sunday" ) ] , BI . Date . _SDN = [ BI . i18nText ( "BI-Basic_Simple_Sunday" ) , BI . i18nText ( "BI-Basic_Simple_Monday" ) , BI . i18nText ( "BI-Basic_Simple_Tuesday" ) , BI . i18nText ( "BI-Basic_Simple_Wednesday" ) , BI . i18nText ( "BI-Basic_Simple_Thursday" ) , BI . i18nText ( "BI-Basic_Simple_Friday" ) , BI . i18nText ( "BI-Basic_Simple_Saturday" ) , BI . i18nText ( "BI-Basic_Simple_Sunday" ) ] , BI . Date . _FD = 1 , BI . Date . _MN = [ BI . i18nText ( "BI-Basic_January" ) , BI . i18nText ( "BI-Basic_February" ) , BI . i18nText ( "BI-Basic_March" ) , BI . i18nText ( "BI-Basic_April" ) , BI . i18nText ( "BI-Basic_May" ) , BI . i18nText ( "BI-Basic_June" ) , BI . i18nText ( "BI-Basic_July" ) , BI . i18nText ( "BI-Basic_August" ) , BI . i18nText ( "BI-Basic_September" ) , BI . i18nText ( "BI-Basic_October" ) , BI . i18nText ( "BI-Basic_November" ) , BI . i18nText ( "BI-Basic_December" ) ] , BI . Date . _SMN = [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 ] , BI . Date . _QN = [ "" , BI . i18nText ( "BI-Quarter_1" ) , BI . i18nText ( "BI-Quarter_2" ) , BI . i18nText ( "BI-Quarter_3" ) , BI . i18nText ( "BI-Quarter_4" ) ] , BI . Date . _MD = [ 31 , 28 , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31 ] , BI . Date . _OFFSET = [ 0 , - 1 , - 2 , - 3 , - 4 , - 5 , - 6 ] } ) , BI . Date = BI . Date || { } , BI . Date . SECOND = 1e3 , BI . Date . MINUTE = 60 * BI . Date . SECOND , BI . Date . HOUR = 60 * BI . Date . MINUTE , BI . Date . DAY = 24 * BI . Date . HOUR , BI . Date . WEEK = 7 * BI . Date . DAY , _ . extend ( BI , { getTimezone : function ( date ) { return date . toString ( ) . replace ( /^.* (?:\((.*)\)|([A-Z]{1,4})(?:[\-+][0-9]{4})?(?: -?\d+)?)$/ , "$1$2" ) . replace ( /[^A-Z]/g , "" ) } , getMonthDays : function ( date , month ) { var year = date . getFullYear ( ) ; return "undefined" == typeof month && ( month = date . getMonth ( ) ) , 0 != yea
element . appendChild ( element . _ _resizeTriggers _ _ ) , resetTriggers ( element ) , element . addEventListener ( "scroll" , scrollListener , ! 0 ) , animationstartevent && element . _ _resizeTriggers _ _ . addEventListener ( animationstartevent , function ( e ) { e . animationName === animationName && resetTriggers ( element ) } ) ) , element . _ _resizeListeners _ _ . push ( fn ) ) } , removeResizeListener = function ( element , fn ) { attachEvent ? element . detachEvent ( "onresize" , fn ) : ( element . _ _resizeListeners _ _ . splice ( element . _ _resizeListeners _ _ . indexOf ( fn ) , 1 ) , element . _ _resizeListeners _ _ . length || ( element . removeEventListener ( "scroll" , scrollListener ) , element . _ _resizeTriggers _ _ = ! element . removeChild ( element . _ _resizeTriggers _ _ ) ) ) } ; BI . ResizeDetector = { addResizeListener : function ( widget , fn ) { return addResizeListener ( widget . element [ 0 ] , fn ) , function ( ) { removeResizeListener ( widget . element [ 0 ] , fn ) } } , removeResizeListener : function ( widget , fn ) { removeResizeListener ( widget . element [ 0 ] , fn ) } } } ( ) , ! function ( ) { BI . DOM = { } , BI . extend ( BI . DOM , { ready : function ( fn ) { BI . Widget . _renderEngine . createElement ( document ) . ready ( fn ) } } ) , BI . extend ( BI . DOM , { patchProps : function ( fromElement , toElement ) { var elemData = BI . jQuery . _data ( fromElement [ 0 ] ) , events = elemData . events ; BI . each ( events , function ( eventKey , event ) { BI . each ( event , function ( i , handler ) { toElement . on ( eventKey + ( handler . namespace ? "." + handler . namespace : "" ) , handler ) } ) } ) ; var fromChildren = fromElement . children ( ) , toChildren = toElement . children ( ) ; if ( fromChildren . length !== toChildren . length ) throw new Error ( "不匹配" ) ; BI . each ( fromChildren , function ( i , child ) { BI . DOM . patchProps ( BI . jQuery ( child ) , BI . jQuery ( toChildren [ i ] ) ) } ) , BI . each ( fromElement . data ( "__widgets" ) , function ( i , widget ) { widget . element = toElement } ) } , hang : function ( doms ) { if ( ! BI . isEmpty ( doms ) ) { var frag = BI . Widget . _renderEngine . createFragment ( ) ; return BI . each ( doms , function ( i , dom ) { dom instanceof BI . Widget && ( dom = dom . element ) , dom instanceof BI . $ && dom [ 0 ] && frag . appendChild ( dom [ 0 ] ) } ) , frag } } , isExist : function ( obj ) { return BI . Widget . _renderEngine . createElement ( "body" ) . find ( obj . element ) . length > 0 } , preloadImages : function ( srcArray , onload ) { function complete ( ) { count ++ , count >= srcArray . length && onload ( ) } var count = 0 , images = [ ] ; BI . each ( srcArray , function ( i , src ) { images [ i ] = new Image , images [ i ] . src = src , images [ i ] . onload = function ( ) { complete ( ) } , images [ i ] . onerror = function ( ) { complete ( ) } } ) } , getTextSizeWidth : function ( text , fontSize ) { var span = BI . Widget . _renderEngine . createElement ( "<span></span>" ) . addClass ( "text-width-span" ) . appendTo ( "body" ) ; null == fontSize && ( fontSize = 12 ) , fontSize += "px" , span . css ( "font-size" , fontSize ) . text ( text ) ; var width = span . width ( ) ; return span . remove ( ) , width } , getTextSizeHeight : function ( text , fontSize ) { var span = BI . Widget . _renderEngine . createElement ( "<span></span>" ) . addClass ( "text-width-span" ) . appendTo ( "body" ) ; null == fontSize && ( fontSize = 12 ) , fontSize += "px" , span . css ( "font-size" , fontSize ) . text ( text ) ; var height = span . height ( ) ; return span . remove ( ) , height } , getScrollWidth : function ( ) { if ( BI . isNull ( this . _scrollWidth ) || 0 === this . _scrollWidth ) { var ul = BI . Widget . _renderEngine . createElement ( "<div>" ) . width ( 50 ) . height ( 50 ) . css ( { position : "absolute" , top : "-9999px" , overflow : "scroll" } ) . appendTo ( "body" ) ; this . _scrollWidth = ul [ 0 ] . offsetWidth - ul [ 0 ] . clientWidth , ul . destroy ( ) } return this . _scrollWidth } , getImage : function ( param , fillStyle , backgroundColor ) { var canvas = document . createElement ( "canvas" ) , ratio = 2 ; BI . Widget . _renderEngine . createElement ( "body" ) . append ( canvas ) ; var ctx = canvas . getContext ( "2d" ) ; ctx . font = "12px Georgia" ; var w = ctx . measureText ( param ) . width + 4 ; canvas . width = w * ratio , canvas . height = 16 * ratio , ctx . font = 12 * ratio + "px Georgia" , ctx . fillStyle = fillStyle || "#3685f2" , ctx . textBaseline = "middle" , ctx . fillText ( param , 2 * ratio , 9 * ratio ) , BI . Widget . _renderEngine . createElement ( canvas ) . destroy ( ) ; var backColor = backgroundColor || "rgba(54, 133, 242, 0.1)" ; return { width : w , height : 16 , src : canvas . toDataURL ( "image/png" ) , style : "background-color: " + backColor + ";vertical-align: middle; margin: 0 1px; width:" + w + "px;height: 16px; max-width:" + w + "px;max-height: 16px; min-width:" + w + "px;min-height: 16px" , param : param } } } ) , BI . extend ( BI . DOM , { isColor : function ( color ) { return color && ( this . isRGBColor ( color ) || this . isHexColor ( color ) ) } , isRGBColor : function ( color ) { return
return inspect ( options . dataTypes [ 0 ] ) || ! inspected [ "*" ] && inspect ( "*" ) } function ajaxExtend ( target , src ) { var deep , key , flatOptions = jQuery . ajaxSettings . flatOptions || { } ; for ( key in src ) src [ key ] !== undefined && ( ( flatOptions [ key ] ? target : deep || ( deep = { } ) ) [ key ] = src [ key ] ) ; return deep && jQuery . extend ( ! 0 , target , deep ) , target } function ajaxHandleResponses ( s , jqXHR , responses ) { var firstDataType , ct , finalDataType , type , contents = s . contents , dataTypes = s . dataTypes , responseFields = s . responseFields ; for ( type in responseFields ) type in responses && ( jqXHR [ responseFields [ type ] ] = responses [ type ] ) ; for ( ; "*" === dataTypes [ 0 ] ; ) dataTypes . shift ( ) , ct === undefined && ( ct = s . mimeType || jqXHR . getResponseHeader ( "Content-Type" ) ) ; if ( ct ) for ( type in contents ) if ( contents [ type ] && contents [ type ] . test ( ct ) ) { dataTypes . unshift ( type ) ; break } if ( dataTypes [ 0 ] in responses ) finalDataType = dataTypes [ 0 ] ; else { for ( type in responses ) { if ( ! dataTypes [ 0 ] || s . converters [ type + " " + dataTypes [ 0 ] ] ) { finalDataType = type ; break } firstDataType || ( firstDataType = type ) } finalDataType = finalDataType || firstDataType } if ( finalDataType ) return finalDataType !== dataTypes [ 0 ] && dataTypes . unshift ( finalDataType ) , responses [ finalDataType ] } function ajaxConvert ( s , response ) { var conv2 , current , conv , tmp , converters = { } , i = 0 , dataTypes = s . dataTypes . slice ( ) , prev = dataTypes [ 0 ] ; if ( s . dataFilter && ( response = s . dataFilter ( response , s . dataType ) ) , dataTypes [ 1 ] ) for ( conv in s . converters ) converters [ conv . toLowerCase ( ) ] = s . converters [ conv ] ; for ( ; current = dataTypes [ ++ i ] ; ) if ( "*" !== current ) { if ( "*" !== prev && prev !== current ) { if ( conv = converters [ prev + " " + current ] || converters [ "* " + current ] , ! conv ) for ( conv2 in converters ) if ( tmp = conv2 . split ( " " ) , tmp [ 1 ] === current && ( conv = converters [ prev + " " + tmp [ 0 ] ] || converters [ "* " + tmp [ 0 ] ] ) ) { conv === ! 0 ? conv = converters [ conv2 ] : converters [ conv2 ] !== ! 0 && ( current = tmp [ 0 ] , dataTypes . splice ( i -- , 0 , current ) ) ; break } if ( conv !== ! 0 ) if ( conv && s [ "throws" ] ) response = conv ( response ) ; else try { response = conv ( response ) } catch ( e ) { return { state : "parsererror" , error : conv ? e : "No conversion from " + prev + " to " + current } } } prev = current } return { state : "success" , data : response } } function createStandardXHR ( ) { try { return new window . XMLHttpRequest } catch ( e ) { } } function createActiveXHR ( ) { try { return new window . ActiveXObject ( "Microsoft.XMLHTTP" ) } catch ( e ) { } } function createFxNow ( ) { return setTimeout ( function ( ) { fxNow = undefined } ) , fxNow = jQuery . now ( ) } function createTweens ( animation , props ) { jQuery . each ( props , function ( prop , value ) { for ( var collection = ( tweeners [ prop ] || [ ] ) . concat ( tweeners [ "*" ] ) , index = 0 , length = collection . length ; index < length ; index ++ ) if ( collection [ index ] . call ( animation , prop , value ) ) return } ) } function Animation ( elem , properties , options ) { var result , stopped , index = 0 , length = animationPrefilters . length , deferred = jQuery . Deferred ( ) . always ( function ( ) { delete tick . elem } ) , tick = function ( ) { if ( stopped ) return ! 1 ; for ( var currentTime = fxNow || createFxNow ( ) , remaining = Math . max ( 0 , animation . startTime + animation . duration - currentTime ) , temp = remaining / animation . duration || 0 , percent = 1 - temp , index = 0 , length = animation . tweens . length ; index < length ; index ++ ) animation . tweens [ index ] . run ( percent ) ; return deferred . notifyWith ( elem , [ animation , percent , remaining ] ) , percent < 1 && length ? remaining : ( deferred . resolveWith ( elem , [ animation ] ) , ! 1 ) } , animation = deferred . promise ( { elem : elem , props : jQuery . extend ( { } , properties ) , opts : jQuery . extend ( ! 0 , { specialEasing : { } } , options ) , originalProperties : properties , originalOptions : options , startTime : fxNow || createFxNow ( ) , duration : options . duration , tweens : [ ] , createTween : function ( prop , end ) { var tween = jQuery . Tween ( elem , animation . opts , prop , end , animation . opts . specialEasing [ prop ] || animation . opts . easing ) ; return animation . tweens . push ( tween ) , tween } , stop : function ( gotoEnd ) { var index = 0 , length = gotoEnd ? animation . tweens . length : 0 ; if ( stopped ) return this ; for ( stopped = ! 0 ; index < length ; index ++ ) animation . tweens [ index ] . run ( 1 ) ; return gotoEnd ? deferred . resolveWith ( elem , [ animation , gotoEnd ] ) : deferred . rejectWith ( elem , [ animation , gotoEnd ] ) , this } } ) , props = animation . props ; for ( propFilter ( props , animation . opts . specialEasing ) ; index < length ; index ++ ) if ( result = animationPrefilters [ index ] . call ( animation , elem , props , animation . opts ) ) return result ; return createTweens ( animation , props ) , jQuery . isFunctio
jQuery ( this ) . toggleClass ( value . call ( this , i , this . className , stateVal ) , stateVal ) } ) : this . each ( function ( ) { if ( "string" === type ) for ( var className , i = 0 , self = jQuery ( this ) , state = stateVal , classNames = value . match ( core _rnotwhite ) || [ ] ; className = classNames [ i ++ ] ; ) state = isBool ? state : ! self . hasClass ( className ) , self [ state ? "addClass" : "removeClass" ] ( className ) ; else type !== core _strundefined && "boolean" !== type || ( this . className && jQuery . _data ( this , "__className__" , this . className ) , this . className = this . className || value === ! 1 ? "" : jQuery . _data ( this , "__className__" ) || "" ) } ) } , hasClass : function ( selector ) { for ( var className = " " + selector + " " , i = 0 , l = this . length ; i < l ; i ++ ) if ( 1 === this [ i ] . nodeType && ( " " + this [ i ] . className + " " ) . replace ( rclass , " " ) . indexOf ( className ) >= 0 ) return ! 0 ; return ! 1 } , val : function ( value ) { var ret , hooks , isFunction , elem = this [ 0 ] ; { if ( arguments . length ) return isFunction = jQuery . isFunction ( value ) , this . each ( function ( i ) { var val , self = jQuery ( this ) ; 1 === this . nodeType && ( val = isFunction ? value . call ( this , i , self . val ( ) ) : value , null == val ? val = "" : "number" == typeof val ? val += "" : jQuery . isArray ( val ) && ( val = jQuery . map ( val , function ( value ) { return null == value ? "" : value + "" } ) ) , hooks = jQuery . valHooks [ this . type ] || jQuery . valHooks [ this . nodeName . toLowerCase ( ) ] , hooks && "set" in hooks && hooks . set ( this , val , "value" ) !== undefined || ( this . value = val ) ) } ) ; if ( elem ) return hooks = jQuery . valHooks [ elem . type ] || jQuery . valHooks [ elem . nodeName . toLowerCase ( ) ] , hooks && "get" in hooks && ( ret = hooks . get ( elem , "value" ) ) !== undefined ? ret : ( ret = elem . value , "string" == typeof ret ? ret . replace ( rreturn , "" ) : null == ret ? "" : ret ) } } } ) , jQuery . extend ( { valHooks : { option : { get : function ( elem ) { var val = elem . attributes . value ; return ! val || val . specified ? elem . value : elem . text } } , select : { get : function ( elem ) { for ( var value , option , options = elem . options , index = elem . selectedIndex , one = "select-one" === elem . type || index < 0 , values = one ? null : [ ] , max = one ? index + 1 : options . length , i = index < 0 ? max : one ? index : 0 ; i < max ; i ++ ) if ( option = options [ i ] , ( option . selected || i === index ) && ( jQuery . support . optDisabled ? ! option . disabled : null === option . getAttribute ( "disabled" ) ) && ( ! option . parentNode . disabled || ! jQuery . nodeName ( option . parentNode , "optgroup" ) ) ) { if ( value = jQuery ( option ) . val ( ) , one ) return value ; values . push ( value ) } return values } , set : function ( elem , value ) { var values = jQuery . makeArray ( value ) ; return jQuery ( elem ) . find ( "option" ) . each ( function ( ) { this . selected = jQuery . inArray ( jQuery ( this ) . val ( ) , values ) >= 0 } ) , values . length || ( elem . selectedIndex = - 1 ) , values } } } , attr : function ( elem , name , value ) { var hooks , notxml , ret , nType = elem . nodeType ; if ( elem && 3 !== nType && 8 !== nType && 2 !== nType ) return typeof elem . getAttribute === core _strundefined ? jQuery . prop ( elem , name , value ) : ( notxml = 1 !== nType || ! jQuery . isXMLDoc ( elem ) , notxml && ( name = name . toLowerCase ( ) , hooks = jQuery . attrHooks [ name ] || ( rboolean . test ( name ) ? boolHook : nodeHook ) ) , value === undefined ? hooks && notxml && "get" in hooks && null !== ( ret = hooks . get ( elem , name ) ) ? ret : ( typeof elem . getAttribute !== core _strundefined && ( ret = elem . getAttribute ( name ) ) , null == ret ? undefined : ret ) : null !== value ? hooks && notxml && "set" in hooks && ( ret = hooks . set ( elem , value , name ) ) !== undefined ? ret : ( elem . setAttribute ( name , value + "" ) , value ) : void jQuery . removeAttr ( elem , name ) ) } , removeAttr : function ( elem , value ) { var name , propName , i = 0 , attrNames = value && value . match ( core _rnotwhite ) ; if ( attrNames && 1 === elem . nodeType ) for ( ; name = attrNames [ i ++ ] ; ) propName = jQuery . propFix [ name ] || name , rboolean . test ( name ) ? ! getSetAttribute && ruseDefault . test ( name ) ? elem [ jQuery . camelCase ( "default-" + name ) ] = elem [ propName ] = ! 1 : elem [ propName ] = ! 1 : jQuery . attr ( elem , name , "" ) , elem . removeAttribute ( getSetAttribute ? name : propName ) } , attrHooks : { type : { set : function ( elem , value ) { if ( ! jQuery . support . radioValue && "radio" === value && jQuery . nodeName ( elem , "input" ) ) { var val = elem . value ; return elem . setAttribute ( "type" , value ) , val && ( elem . value = val ) , value } } } } , propFix : { tabindex : "tabIndex" , readonly : "readOnly" , "for" : "htmlFor" , "class" : "className" , maxlength : "maxLength" , cellspacing : "cellSpacing" , cellpadding : "cellPadding" , rowspan : "rowSpan" , colspan : "colSpan" , usemap : "useMap" , frameborder : "frameBorder" , contenteditable : "contentEditable" } , prop : function ( elem , name , value ) { var ret , hooks , notxml , nType = elem . nodeType ; if ( elem && 3 !== nType && 8 !== nType && 2 !== nT
for ( var i = 0 , len = contexts . length ; i < len ; i ++ ) Sizzle ( selector , contexts [ i ] , results ) ; return results } function select ( selector , context , results , seed ) { var i , tokens , token , type , find , match = tokenize ( selector ) ; if ( ! seed && 1 === match . length ) { if ( tokens = match [ 0 ] = match [ 0 ] . slice ( 0 ) , tokens . length > 2 && "ID" === ( token = tokens [ 0 ] ) . type && 9 === context . nodeType && ! documentIsXML && Expr . relative [ tokens [ 1 ] . type ] ) { if ( context = Expr . find . ID ( token . matches [ 0 ] . replace ( runescape , funescape ) , context ) [ 0 ] , ! context ) return results ; selector = selector . slice ( tokens . shift ( ) . value . length ) } for ( i = matchExpr . needsContext . test ( selector ) ? 0 : tokens . length ; i -- && ( token = tokens [ i ] , ! Expr . relative [ type = token . type ] ) ; ) if ( ( find = Expr . find [ type ] ) && ( seed = find ( token . matches [ 0 ] . replace ( runescape , funescape ) , rsibling . test ( tokens [ 0 ] . type ) && context . parentNode || context ) ) ) { if ( tokens . splice ( i , 1 ) , selector = seed . length && toSelector ( tokens ) , ! selector ) return push . apply ( results , slice . call ( seed , 0 ) ) , results ; break } } return compile ( selector , match ) ( seed , context , documentIsXML , results , rsibling . test ( selector ) ) , results } function setFilters ( ) { } var i , cachedruns , Expr , getText , isXML , compile , hasDuplicate , outermostContext , setDocument , document , docElem , documentIsXML , rbuggyQSA , rbuggyMatches , matches , contains , sortOrder , expando = "sizzle" + - new Date , preferredDoc = window . document , support = { } , dirruns = 0 , done = 0 , classCache = createCache ( ) , tokenCache = createCache ( ) , compilerCache = createCache ( ) , strundefined = typeof undefined , MAX _NEGATIVE = 1 << 31 , arr = [ ] , pop = arr . pop , push = arr . push , slice = arr . slice , indexOf = arr . indexOf || function ( elem ) { for ( var i = 0 , len = this . length ; i < len ; i ++ ) if ( this [ i ] === elem ) return i ; return - 1 } , whitespace = "[\\x20\\t\\r\\n\\f]" , characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+" , identifier = characterEncoding . replace ( "w" , "w#" ) , operators = "([*^$|!~]?=)" , attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace + "*(?:" + operators + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]" , pseudos = ":(" + characterEncoding + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + attributes . replace ( 3 , 8 ) + ")*)|.*)\\)|)" , rtrim = new RegExp ( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$" , "g" ) , rcomma = new RegExp ( "^" + whitespace + "*," + whitespace + "*" ) , rcombinators = new RegExp ( "^" + whitespace + "*([\\x20\\t\\r\\n\\f>+~])" + whitespace + "*" ) , rpseudo = new RegExp ( pseudos ) , ridentifier = new RegExp ( "^" + identifier + "$" ) , matchExpr = { ID : new RegExp ( "^#(" + characterEncoding + ")" ) , CLASS : new RegExp ( "^\\.(" + characterEncoding + ")" ) , NAME : new RegExp ( "^\\[name=['\"]?(" + characterEncoding + ")['\"]?\\]" ) , TAG : new RegExp ( "^(" + characterEncoding . replace ( "w" , "w*" ) + ")" ) , ATTR : new RegExp ( "^" + attributes ) , PSEUDO : new RegExp ( "^" + pseudos ) , CHILD : new RegExp ( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + "*(\\d+)|))" + whitespace + "*\\)|)" , "i" ) , needsContext : new RegExp ( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)" , "i" ) } , rsibling = /[\x20\t\r\n\f]*[+~]/ , rnative = /^[^{]+\{\s*\[native code/ , rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/ , rinputs = /^(?:input|select|textarea|button)$/i , rheader = /^h\d$/i , rescape = /'|\\/g , rattributeQuotes = /\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g , runescape = /\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g , funescape = function ( _ , escaped ) { var high = "0x" + escaped - 65536 ; return high !== high ? escaped : high < 0 ? String . fromCharCode ( high + 65536 ) : String . fromCharCode ( high >> 10 | 55296 , 1023 & high | 56320 ) } ; try { slice . call ( preferredDoc . documentElement . childNodes , 0 ) [ 0 ] . nodeType } catch ( e ) { slice = function ( i ) { for ( var elem , results = [ ] ; elem = this [ i ++ ] ; ) results . push ( elem ) ; return results } } isXML = Sizzle . isXML = function ( elem ) { var documentElement = elem && ( elem . ownerDocument || elem ) . documentElement ; return ! ! documentElement && "HTML" !== documentElement . nodeName } , setDocument = Sizzle . setDocument = function ( node ) { var doc = node ? node . ownerDocument || node : preferredDoc ; return doc !== document && 9 === doc . nodeType && doc . documentElement ? ( document = doc , docElem = doc . documentElement , documentIsXML = isXML ( doc ) , support . tagNameNoComments = assert ( function ( div ) { return div . appen
tmp = getAll ( safe . appendChild ( elem ) , "script" ) , contains && setGlobalEval ( tmp ) , scripts ) ) for ( j = 0 ; elem = tmp [ j ++ ] ; ) rscriptType . test ( elem . type || "" ) && scripts . push ( elem ) ; return tmp = null , safe } , cleanData : function ( elems , acceptData ) { for ( var elem , type , id , data , i = 0 , internalKey = jQuery . expando , cache = jQuery . cache , deleteExpando = jQuery . support . deleteExpando , special = jQuery . event . special ; null != ( elem = elems [ i ] ) ; i ++ ) if ( ( acceptData || jQuery . acceptData ( elem ) ) && ( id = elem [ internalKey ] , data = id && cache [ id ] ) ) { if ( data . events ) for ( type in data . events ) special [ type ] ? jQuery . event . remove ( elem , type ) : jQuery . removeEvent ( elem , type , data . handle ) ; cache [ id ] && ( delete cache [ id ] , deleteExpando ? delete elem [ internalKey ] : typeof elem . removeAttribute !== core _strundefined ? elem . removeAttribute ( internalKey ) : elem [ internalKey ] = null , core _deletedIds . push ( id ) ) } } } ) ; var iframe , getStyles , curCSS , ralpha = /alpha\([^)]*\)/i , ropacity = /opacity\s*=\s*([^)]*)/ , rposition = /^(top|right|bottom|left)$/ , rdisplayswap = /^(none|table(?!-c[ea]).+)/ , rmargin = /^margin/ , rnumsplit = new RegExp ( "^(" + core _pnum + ")(.*)$" , "i" ) , rnumnonpx = new RegExp ( "^(" + core _pnum + ")(?!px)[a-z%]+$" , "i" ) , rrelNum = new RegExp ( "^([+-])=(" + core _pnum + ")" , "i" ) , elemdisplay = { BODY : "block" } , cssShow = { position : "absolute" , visibility : "hidden" , display : "block" } , cssNormalTransform = { letterSpacing : 0 , fontWeight : 400 } , cssExpand = [ "Top" , "Right" , "Bottom" , "Left" ] , cssPrefixes = [ "Webkit" , "O" , "Moz" , "ms" ] ; jQuery . fn . extend ( { css : function ( name , value ) { return jQuery . access ( this , function ( elem , name , value ) { var len , styles , map = { } , i = 0 ; if ( jQuery . isArray ( name ) ) { for ( styles = getStyles ( elem ) , len = name . length ; i < len ; i ++ ) map [ name [ i ] ] = jQuery . css ( elem , name [ i ] , ! 1 , styles ) ; return map } return value !== undefined ? jQuery . style ( elem , name , value ) : jQuery . css ( elem , name ) } , name , value , arguments . length > 1 ) } , show : function ( ) { return showHide ( this , ! 0 ) } , hide : function ( ) { return showHide ( this ) } , toggle : function ( state ) { var bool = "boolean" == typeof state ; return this . each ( function ( ) { ( bool ? state : isHidden ( this ) ) ? jQuery ( this ) . show ( ) : jQuery ( this ) . hide ( ) } ) } } ) , jQuery . extend ( { cssHooks : { opacity : { get : function ( elem , computed ) { if ( computed ) { var ret = curCSS ( elem , "opacity" ) ; return "" === ret ? "1" : ret } } } } , cssNumber : { columnCount : ! 0 , fillOpacity : ! 0 , fontWeight : ! 0 , lineHeight : ! 0 , opacity : ! 0 , orphans : ! 0 , widows : ! 0 , zIndex : ! 0 , zoom : ! 0 } , cssProps : { "float" : jQuery . support . cssFloat ? "cssFloat" : "styleFloat" } , style : function ( elem , name , value , extra ) { if ( elem && 3 !== elem . nodeType && 8 !== elem . nodeType && elem . style ) { var ret , type , hooks , origName = jQuery . camelCase ( name ) , style = elem . style ; if ( name = jQuery . cssProps [ origName ] || ( jQuery . cssProps [ origName ] = vendorPropName ( style , origName ) ) , hooks = jQuery . cssHooks [ name ] || jQuery . cssHooks [ origName ] , value === undefined ) return hooks && "get" in hooks && ( ret = hooks . get ( elem , ! 1 , extra ) ) !== undefined ? ret : style [ name ] ; if ( type = typeof value , "string" === type && ( ret = rrelNum . exec ( value ) ) && ( value = ( ret [ 1 ] + 1 ) * ret [ 2 ] + parseFloat ( jQuery . css ( elem , name ) ) , type = "number" ) , ! ( null == value || "number" === type && isNaN ( value ) || ( "number" !== type || jQuery . cssNumber [ origName ] || ( value += "px" ) , jQuery . support . clearCloneStyle || "" !== value || 0 !== name . indexOf ( "background" ) || ( style [ name ] = "inherit" ) , hooks && "set" in hooks && ( value = hooks . set ( elem , value , extra ) ) === undefined ) ) ) try { style [ name ] = value } catch ( e ) { } } } , css : function ( elem , name , extra , styles ) { var num , val , hooks , origName = jQuery . camelCase ( name ) ; return name = jQuery . cssProps [ origName ] || ( jQuery . cssProps [ origName ] = vendorPropName ( elem . style , origName ) ) , hooks = jQuery . cssHooks [ name ] || jQuery . cssHooks [ origName ] , hooks && "get" in hooks && ( val = hooks . get ( elem , ! 0 , extra ) ) , val === undefined && ( val = curCSS ( elem , name , styles ) ) , "normal" === val && name in cssNormalTransform && ( val = cssNormalTransform [ name ] ) , "" === extra || extra ? ( num = parseFloat ( val ) , extra === ! 0 || jQuery . isNumeric ( num ) ? num || 0 : val ) : val } , swap : function ( elem , options , callback , args ) { var ret , name , old = { } ; for ( name in options ) old [ name ] = elem . style [ name ] , elem . style [ name ] = options [ name ] ; ret = callback . apply ( elem , args || [ ] ) ; for ( name in options ) elem . style [ name ] = old [ name ] ; return ret } } ) , window . getComputedStyle ? ( getStyles = function ( elem ) { return window . getComputedStyle ( elem , null ) } , curCSS = function ( elem , name , _computed ) { var width , minWidth , maxWidth , computed = _computed || ge
this . preventDefault ( ) } } ) , BI . jQuery && ( ! function ( $ ) { $ . fn . insets || ( $ . fn . insets = function ( ) { var p = this . padding ( ) , b = this . border ( ) ; return { top : p . top , bottom : p . bottom + b . bottom + b . top , left : p . left , right : p . right + b . right + b . left } } ) , $ . fn . bounds || ( $ . fn . bounds = function ( value ) { var tmp = { hasIgnoredBounds : ! 0 } ; return value ? ( isNaN ( value . x ) || ( tmp . left = value . x ) , isNaN ( value . y ) || ( tmp . top = value . y ) , null != value . width && ( tmp . width = value . width - ( this . outerWidth ( ! 0 ) - this . width ( ) ) , tmp . width = tmp . width >= 0 ? tmp . width : value . width ) , null != value . height && ( tmp . height = value . height - ( this . outerHeight ( ! 0 ) - this . height ( ) ) , tmp . height = tmp . height >= 0 ? tmp . height : value . height ) , this . css ( tmp ) , this ) : ( tmp = this . position ( ) , { x : tmp . left , y : tmp . top , width : this . outerWidth ( ) , height : this . outerHeight ( ) } ) } ) } ( BI . jQuery ) , BI . extend ( BI . jQuery . fn , { destroy : function ( ) { this . remove ( ) , BI . isIE ( ) === ! 0 && ( this [ 0 ] . outerHTML = "" ) } , _ _textKeywordMarked _ _ : function ( text , keyword , py ) { if ( ! BI . isKey ( keyword ) || ( text + "" ) . length > 100 ) return this . html ( BI . htmlEncode ( text ) ) ; keyword += "" , keyword = BI . toUpperCase ( keyword ) ; var textLeft = ( text || "" ) + "" ; for ( py = ( py || BI . makeFirstPY ( text , { splitChar : " " } ) ) + "" , py = BI . toUpperCase ( py ) , this . empty ( ) ; py . length > 0 && textLeft . length > 0 ; ) { var tidx = BI . toUpperCase ( textLeft ) . indexOf ( keyword ) , pidx = py . indexOf ( keyword ) ; if ( pidx >= 0 && ( pidx = ( pidx - Math . floor ( pidx / ( textLeft . length + 1 ) ) ) % textLeft . length ) , tidx >= 0 && ( pidx > tidx || pidx === - 1 ) ) this . append ( BI . htmlEncode ( textLeft . substr ( 0 , tidx ) ) ) , this . append ( BI . $ ( "<span>" ) . addClass ( "bi-keyword-red-mark" ) . html ( BI . htmlEncode ( textLeft . substr ( tidx , keyword . length ) ) ) ) , textLeft = textLeft . substr ( tidx + keyword . length ) , BI . isNotEmptyString ( py ) && ( py = BI . map ( py . split ( " " ) , function ( idx , ps ) { return ps . slice ( tidx + keyword . length ) } ) . join ( " " ) ) ; else { if ( ! ( pidx >= 0 ) ) { this . append ( BI . htmlEncode ( textLeft ) ) ; break } this . append ( BI . htmlEncode ( textLeft . substr ( 0 , pidx ) ) ) , this . append ( BI . $ ( "<span>" ) . addClass ( "bi-keyword-red-mark" ) . html ( BI . htmlEncode ( textLeft . substr ( pidx , keyword . length ) ) ) ) , BI . isNotEmptyString ( py ) && ( py = BI . map ( py . split ( " " ) , function ( idx , ps ) { return ps . slice ( pidx + keyword . length ) } ) . join ( " " ) ) , textLeft = textLeft . substr ( pidx + keyword . length ) } } return this } , getDomHeight : function ( parent ) { var clone = BI . $ ( this ) . clone ( ) ; clone . appendTo ( BI . $ ( parent || "body" ) ) ; var height = clone . height ( ) ; return clone . remove ( ) , height } , hasVerticalScroll : function ( ) { return this . height ( ) > 0 && this [ 0 ] . clientWidth < this [ 0 ] . offsetWidth } , hasHorizonScroll : function ( ) { return this . width ( ) > 0 && this [ 0 ] . clientHeight < this [ 0 ] . offsetHeight } , getStyle : function ( name ) { var node = this [ 0 ] , computedStyle = void 0 ; if ( _global . getComputedStyle && ( computedStyle = _global . getComputedStyle ( node , null ) ) ) return computedStyle . getPropertyValue ( BI . hyphenate ( name ) ) ; if ( document . defaultView && document . defaultView . getComputedStyle ) { if ( computedStyle = document . defaultView . getComputedStyle ( node , null ) ) return computedStyle . getPropertyValue ( BI . hyphenate ( name ) ) ; if ( "display" === name ) return "none" } return node . currentStyle ? "float" === name ? node . currentStyle . cssFloat || node . currentStyle . styleFloat : node . currentStyle [ BI . camelize ( name ) ] : node . style && node . style [ BI . camelize ( name ) ] } , _ _isMouseInBounds _ _ : function ( e ) { var offset2Body = this . get ( 0 ) . getBoundingClientRect ? this . get ( 0 ) . getBoundingClientRect ( ) : this . offset ( ) , width = offset2Body . width || this . outerWidth ( ) , height = offset2Body . height || this . outerHeight ( ) ; return ! ( e . pageX < Math . floor ( offset2Body . left ) || e . pageX > offset2Body . left + width || e . pageY < Math . floor ( offset2Body . top ) || e . pageY > offset2Body . top + height ) } , _ _hasZIndexMask _ _ : function ( zindex ) { return zindex && null != this . zIndexMask [ zindex ] } , _ _buildZIndexMask _ _ : function ( zindex , domArray ) { this . zIndexMask = this . zIndexMask || { } , this . indexMask = this . indexMask || [ ] ; var mask = BI . createWidget ( { type : "bi.center_adapt" , cls : "bi-z-index-mask" , items : domArray } ) ; return mask . element . css ( { "z-index" : zindex } ) , BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : mask , left : 0 , right : 0 , top : 0 , bottom : 0 } ] } ) , this . indexMask . push ( mask ) , zindex && ( this . zIndexMask [ zindex ] = mask ) , mask . element } , _ _releaseZIndexMask _ _ : function ( zindex ) { if ( zindex && this . zIndexMask [ zindex ] ) return BI . remove ( this . indexMask , this . zIndexMask [ zindex ] ) , void this . zIndexMask [ zindex ] . destro
"margin-top" : o . vgap + o . tgap + ( item . tgap || 0 ) + ( item . vgap || 0 ) + "px" } ) , o . hgap + o . lgap + ( item . lgap || 0 ) + ( item . hgap || 0 ) !== 0 && w . element . css ( { "margin-left" : ( 0 === i ? o . hgap : 0 ) + o . lgap + ( item . lgap || 0 ) + ( item . hgap || 0 ) + "px" } ) , o . hgap + o . rgap + ( item . rgap || 0 ) + ( item . hgap || 0 ) !== 0 && w . element . css ( { "margin-right" : o . hgap + o . rgap + ( item . rgap || 0 ) + ( item . hgap || 0 ) + "px" } ) , o . vgap + o . bgap + ( item . bgap || 0 ) + ( item . vgap || 0 ) !== 0 && w . element . css ( { "margin-bottom" : o . vgap + o . bgap + ( item . bgap || 0 ) + ( item . vgap || 0 ) + "px" } ) , w } , appendFragment : function ( frag ) { this . $wrapper . append ( frag ) , this . element . append ( this . $wrapper ) } , _getWrapper : function ( ) { return this . $wrapper } , resize : function ( ) { } , populate : function ( items ) { BI . FlexWrapperHorizontalLayout . superclass . populate . apply ( this , arguments ) , this . _mount ( ) } } ) , BI . shortcut ( "bi.flex_scrollable_horizontal" , BI . FlexWrapperHorizontalLayout ) , BI . FlexWrapperVerticalCenter = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . FlexWrapperVerticalCenter . superclass . props . apply ( this , arguments ) , { baseCls : "bi-flex-scrollable-vertical-center-adapt-layout clearfix" , horizontalAlign : BI . HorizontalAlign . Left , columnSize : [ ] , scrollx : ! 1 , scrollable : ! 0 , hgap : 0 , vgap : 0 , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 } ) } , render : function ( ) { var self = this , o = this . options ; return { type : "bi.flex_scrollable_horizontal" , ref : function ( _ref ) { self . wrapper = _ref } , verticalAlign : BI . VerticalAlign . Middle , horizontalAlign : o . horizontalAlign , columnSize : o . columnSize , scrollx : o . scrollx , scrolly : o . scrolly , scrollable : o . scrollable , hgap : o . hgap , vgap : o . vgap , lgap : o . lgap , rgap : o . rgap , items : o . items } } , update : function ( opt ) { return this . wrapper . update ( opt ) } , populate : function ( items ) { this . wrapper . populate ( items ) } } ) , BI . shortcut ( "bi.flex_scrollable_vertical_adapt" , BI . FlexWrapperVerticalCenter ) , BI . shortcut ( "bi.flex_scrollable_vertical_center_adapt" , BI . FlexWrapperVerticalCenter ) , BI . FlexWrapperVerticalLayout = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . FlexWrapperVerticalLayout . superclass . props . apply ( this , arguments ) , { baseCls : "bi-flex-scrollable-vertical-layout clearfix" , horizontalAlign : BI . HorizontalAlign . Left , verticalAlign : BI . VerticalAlign . Top , rowSize : [ ] , scrollable : null , scrolly : ! 0 , hgap : 0 , vgap : 0 , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 } ) } , render : function ( ) { BI . FlexWrapperVerticalLayout . superclass . render . apply ( this , arguments ) ; var o = this . options ; this . $wrapper = BI . Widget . _renderEngine . createElement ( "<div>" ) . addClass ( "flex-scrollable-vertical-layout-wrapper h-" + o . horizontalAlign ) . addClass ( "v-" + o . verticalAlign ) , this . populate ( this . options . items ) } , _addElement : function ( i , item ) { var o = this . options , w = BI . FlexWrapperVerticalLayout . superclass . _addElement . apply ( this , arguments ) ; return w . element . css ( { position : "relative" , "flex-shrink" : "0" } ) , o . rowSize [ i ] > 0 && w . element . height ( o . rowSize [ i ] ) , "fill" === o . rowSize [ i ] && w . element . css ( "flex" , "1" ) , o . vgap + o . tgap + ( item . tgap || 0 ) + ( item . vgap || 0 ) !== 0 && w . element . css ( { "margin-top" : ( 0 === i ? o . vgap : 0 ) + o . tgap + ( item . tgap || 0 ) + ( item . vgap || 0 ) + "px" } ) , o . hgap + o . lgap + ( item . lgap || 0 ) + ( item . hgap || 0 ) !== 0 && w . element . css ( { "margin-left" : o . hgap + o . lgap + ( item . lgap || 0 ) + ( item . hgap || 0 ) + "px" } ) , o . hgap + o . rgap + ( item . rgap || 0 ) + ( item . hgap || 0 ) !== 0 && w . element . css ( { "margin-right" : o . hgap + o . rgap + ( item . rgap || 0 ) + ( item . hgap || 0 ) + "px" } ) , o . vgap + o . bgap + ( item . bgap || 0 ) + ( item . vgap || 0 ) !== 0 && w . element . css ( { "margin-bottom" : o . vgap + o . bgap + ( item . bgap || 0 ) + ( item . vgap || 0 ) + "px" } ) , w } , appendFragment : function ( frag ) { this . $wrapper . append ( frag ) , this . element . append ( this . $wrapper ) } , _getWrapper : function ( ) { return this . $wrapper } , resize : function ( ) { } , populate : function ( items ) { BI . FlexWrapperVerticalLayout . superclass . populate . apply ( this , arguments ) , this . _mount ( ) } } ) , BI . shortcut ( "bi.flex_scrollable_vertical" , BI . FlexWrapperVerticalLayout ) , BI . AbsoluteLayout = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . AbsoluteLayout . superclass . props . apply ( this , arguments ) , { baseCls : "bi-absolute-layout" , hgap : null , vgap : null , lgap : null , rgap : null , tgap : null , bgap : null } ) } , render : function ( ) { BI . AbsoluteLayout . superclass . render . apply ( this , arguments ) , this . populate ( this . options . items ) } , _addElement : function ( i , item ) { var o = this . options , w = BI . AbsoluteLayout . superclass . _addElement . apply ( this , arguments ) , left = 0 , right = 0 , top = 0 , bottom = 0 ; retur
item . width < 1 && item . width >= 0 ? w . element . css ( { right : 100 * right [ i ] + "%" , width : 100 * item . width + "%" } ) : w . element . css ( { right : right [ i ] + ( item . rgap || 0 ) + ( item . hgap || 0 ) + o . hgap + o . rgap + "px" , width : BI . isNumber ( item . width ) ? item . width : "" } ) , ! BI . isNumber ( item . width ) ) return ! 0 } ) } , update : function ( ) { var updated ; return BI . each ( this . _children , function ( i , child ) { updated = child . update ( ) || updated } ) , updated } , populate : function ( items ) { BI . HTapeLayout . superclass . populate . apply ( this , arguments ) , this . _mount ( ) } } ) , BI . shortcut ( "bi.htape" , BI . HTapeLayout ) , BI . VTapeLayout = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . VTapeLayout . superclass . props . apply ( this , arguments ) , { baseCls : "bi-v-tape-layout" , hgap : 0 , vgap : 0 , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 , items : [ { height : 100 , el : { type : "bi.button" , text : "button1" } } , { height : "fill" , el : { type : "bi.button" , text : "button2" } } , { height : 200 , el : { type : "bi.button" , text : "button3" } } ] } ) } , render : function ( ) { BI . VTapeLayout . superclass . render . apply ( this , arguments ) , this . populate ( this . options . items ) } , resize : function ( ) { this . stroke ( this . options . items ) } , addItem : function ( item ) { throw new Error ( "cannot be added" ) } , stroke : function ( items ) { var self = this , o = this . options ; items = BI . compact ( items ) , BI . each ( items , function ( i , item ) { if ( self . hasWidget ( self . getName ( ) + i + "" ) ) w = self . getWidgetByName ( self . getName ( ) + i + "" ) ; else { var w = BI . createWidget ( item ) ; self . addWidget ( self . getName ( ) + i + "" , w ) } w . element . css ( { position : "absolute" , left : ( item . lgap || 0 ) + ( item . hgap || 0 ) + o . hgap + o . lgap + "px" , right : + ( item . hgap || 0 ) + ( item . rgap || 0 ) + o . hgap + o . rgap + "px" } ) } ) ; var top = { } , bottom = { } ; top [ 0 ] = 0 , bottom [ items . length - 1 ] = 0 , BI . any ( items , function ( i , item ) { var w = self . getWidgetByName ( self . getName ( ) + i + "" ) ; if ( BI . isNull ( top [ i ] ) && ( top [ i ] = top [ i - 1 ] + items [ i - 1 ] . height + ( items [ i - 1 ] . tgap || 0 ) + 2 * ( items [ i - 1 ] . vgap || 0 ) + o . vgap + o . tgap + o . bgap ) , item . height < 1 && item . height >= 0 ? w . element . css ( { top : 100 * top [ i ] + "%" , height : 100 * item . height + "%" } ) : w . element . css ( { top : top [ i ] + ( item . vgap || 0 ) + ( item . tgap || 0 ) + o . vgap + o . tgap + "px" , height : BI . isNumber ( item . height ) ? item . height : "" } ) , ! BI . isNumber ( item . height ) ) return ! 0 } ) , BI . backAny ( items , function ( i , item ) { var w = self . getWidgetByName ( self . getName ( ) + i + "" ) ; if ( BI . isNull ( bottom [ i ] ) && ( bottom [ i ] = bottom [ i + 1 ] + items [ i + 1 ] . height + ( items [ i + 1 ] . bgap || 0 ) + 2 * ( items [ i + 1 ] . vgap || 0 ) + o . vgap + o . tgap + o . bgap ) , item . height < 1 && item . height >= 0 ? w . element . css ( { bottom : 100 * bottom [ i ] + "%" , height : 100 * item . height + "%" } ) : w . element . css ( { bottom : bottom [ i ] + ( item . vgap || 0 ) + ( item . bgap || 0 ) + o . vgap + o . bgap + "px" , height : BI . isNumber ( item . height ) ? item . height : "" } ) , ! BI . isNumber ( item . height ) ) return ! 0 } ) } , update : function ( ) { } , populate : function ( items ) { BI . VTapeLayout . superclass . populate . apply ( this , arguments ) , this . _mount ( ) } } ) , BI . shortcut ( "bi.vtape" , BI . VTapeLayout ) , BI . TdLayout = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . TdLayout . superclass . props . apply ( this , arguments ) , { baseCls : "bi-td-layout" , columnSize : [ 200 , 200 , 200 ] , hgap : 0 , vgap : 0 , items : [ [ { el : { text : "label1" } } , { el : { text : "label2" } } , { el : { text : "label3" } } ] ] } ) } , render : function ( ) { BI . TdLayout . superclass . render . apply ( this , arguments ) , this . $table = BI . Widget . _renderEngine . createElement ( "<table>" ) . attr ( { cellspacing : 0 , cellpadding : 0 } ) . css ( { position : "relative" , width : "100%" , height : "100%" , "border-spacing" : "0px" , border : "none" , "border-collapse" : "separate" } ) , this . rows = 0 , this . populate ( this . options . items ) } , _addElement : function ( idx , arr ) { function firstElement ( item , row , col ) { 0 === row && item . addClass ( "first-row" ) , 0 === col && item . addClass ( "first-col" ) , item . addClass ( BI . isOdd ( row + 1 ) ? "odd-row" : "even-row" ) , item . addClass ( BI . isOdd ( col + 1 ) ? "odd-col" : "even-col" ) , item . addClass ( "center-element" ) } function firstObject ( item , row , col ) { var cls = "" ; 0 === row && ( cls += " first-row" ) , 0 === col && ( cls += " first-col" ) , cls += BI . isOdd ( row + 1 ) ? " odd-row" : " even-row" , cls += BI . isOdd ( col + 1 ) ? " odd-col" : " even-col" , item . cls = ( item . cls || "" ) + cls + " center-element" } function first ( item , row , col ) { item instanceof BI . Widget ? firstElement ( item . element , row , col ) : item . el instanceof BI . Widget ? firstElement ( item . el . element , row , col ) : item . el ? firstObject ( item . el , row , col ) : firstObject ( item , row , col ) } for ( var o = this . options , tr = BI . createWidget ( { type : "bi.default" , tagName : "tr" } ) , i = 0 ; i < arr . length ; i ++ ) { var w = BI . createWidget ( a
exports . refreshAll = refreshAll , exports . define = define , exports . inherit = inherit , exports . watch = watch , exports . _ _esModule = ! 0 } ) , function ( factory ) { "function" == typeof define && define . amd ? define ( [ "../core/jquery" ] , factory ) : "object" == typeof exports ? module . exports = factory : factory ( BI . jQuery ) } ( function ( $ ) { function handler ( event ) { var orgEvent = event || _global . event , args = slice . call ( arguments , 1 ) , delta = 0 , deltaX = 0 , deltaY = 0 , absDelta = 0 , offsetX = 0 , offsetY = 0 ; if ( event = $ . event . fix ( orgEvent ) , event . type = "mousewheel" , "detail" in orgEvent && ( deltaY = orgEvent . detail * - 1 ) , "wheelDelta" in orgEvent && ( deltaY = orgEvent . wheelDelta ) , "wheelDeltaY" in orgEvent && ( deltaY = orgEvent . wheelDeltaY ) , "wheelDeltaX" in orgEvent && ( deltaX = orgEvent . wheelDeltaX * - 1 ) , "axis" in orgEvent && orgEvent . axis === orgEvent . HORIZONTAL _AXIS && ( deltaX = deltaY * - 1 , deltaY = 0 ) , delta = 0 === deltaY ? deltaX : deltaY , "deltaY" in orgEvent && ( deltaY = orgEvent . deltaY * - 1 , delta = deltaY ) , "deltaX" in orgEvent && ( deltaX = orgEvent . deltaX , 0 === deltaY && ( delta = deltaX * - 1 ) ) , 0 !== deltaY || 0 !== deltaX ) { if ( 1 === orgEvent . deltaMode ) { var lineHeight = 40 ; delta *= lineHeight , deltaY *= lineHeight , deltaX *= lineHeight } else if ( 2 === orgEvent . deltaMode ) { var pageHeight = 800 ; delta *= pageHeight , deltaY *= pageHeight , deltaX *= pageHeight } if ( absDelta = Math . max ( Math . abs ( deltaY ) , Math . abs ( deltaX ) ) , ( ! lowestDelta || absDelta < lowestDelta ) && ( lowestDelta = absDelta , shouldAdjustOldDeltas ( orgEvent , absDelta ) && ( lowestDelta /= 40 ) ) , shouldAdjustOldDeltas ( orgEvent , absDelta ) && ( delta /= 40 , deltaX /= 40 , deltaY /= 40 ) , delta = Math [ delta >= 1 ? "floor" : "ceil" ] ( delta / lowestDelta ) , deltaX = Math [ deltaX >= 1 ? "floor" : "ceil" ] ( deltaX / lowestDelta ) , deltaY = Math [ deltaY >= 1 ? "floor" : "ceil" ] ( deltaY / lowestDelta ) , special . settings . normalizeOffset && this . getBoundingClientRect ) { var boundingRect = this . getBoundingClientRect ( ) ; offsetX = event . clientX - boundingRect . left , offsetY = event . clientY - boundingRect . top } return event . deltaX = deltaX , event . deltaY = deltaY , event . deltaFactor = lowestDelta , event . offsetX = offsetX , event . offsetY = offsetY , event . deltaMode = 0 , args . unshift ( event , delta , deltaX , deltaY ) , nullLowestDeltaTimeout && clearTimeout ( nullLowestDeltaTimeout ) , nullLowestDeltaTimeout = setTimeout ( nullLowestDelta , 200 ) , ( $ . event . dispatch || $ . event . handle ) . apply ( this , args ) } } function nullLowestDelta ( ) { lowestDelta = null } function shouldAdjustOldDeltas ( orgEvent , absDelta ) { return special . settings . adjustOldDeltas && "mousewheel" === orgEvent . type && absDelta % 120 === 0 } var toFix = [ "wheel" , "mousewheel" , "DOMMouseScroll" , "MozMousePixelScroll" ] , toBind = "onwheel" in document || document . documentMode >= 9 ? [ "wheel" ] : [ "mousewheel" , "DomMouseScroll" , "MozMousePixelScroll" ] , slice = Array . prototype . slice , nullLowestDeltaTimeout , lowestDelta ; if ( $ . event . fixHooks ) for ( var i = toFix . length ; i ; ) $ . event . fixHooks [ toFix [ -- i ] ] = $ . event . mouseHooks ; var special = $ . event . special . mousewheel = { version : "3.1.12" , setup : function ( ) { if ( this . addEventListener ) for ( var i = toBind . length ; i ; ) this . addEventListener ( toBind [ -- i ] , handler , ! 1 ) ; else this . onmousewheel = handler } , teardown : function ( ) { if ( this . removeEventListener ) for ( var i = toBind . length ; i ; ) this . removeEventListener ( toBind [ -- i ] , handler , ! 1 ) ; else this . onmousewheel = null } , settings : { adjustOldDeltas : ! 0 , normalizeOffset : ! 0 } } ; $ . fn . extend ( { mousewheel : function ( fn ) { return fn ? this . bind ( "mousewheel" , fn ) : this . trigger ( "mousewheel" ) } , unmousewheel : function ( fn ) { return this . unbind ( "mousewheel" , fn ) } } ) } ) , BI . Pane = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . Pane . superclass . _defaultConfig . apply ( this , arguments ) , { _baseCls : "bi-pane" , tipText : BI . i18nText ( "BI-No_Selected_Item" ) , overlap : ! 0 , onLoaded : BI . emptyFn } ) } , _assertTip : function ( ) { var o = this . options ; this . _tipText || ( this . _tipText = BI . createWidget ( { type : "bi.label" , cls : "bi-tips" , text : o . tipText , height : 25 } ) , BI . createWidget ( { type : "bi.absolute_center_adapt" , element : this , items : [ this . _tipText ] } ) ) } , loading : function ( ) { var self = this , o = this . options , isIE = BI . isIE ( ) , loadingAnimation = BI . createWidget ( { type : "bi.horizontal" , cls : "bi-loading-widget" + ( isIE ? " wave-loading hack" : "" ) , height : 30 , width : 30 , hgap : 5 , vgap : 2.5 , items : isIE ? [ ] : [ { type : "bi.layout" , cls : "animate-rect rect1" , height : 25 , width : 3 } , { type : "bi.layout" , cls : "animate-rect rect2" , height : 25 , width : 3 } , { type : "bi.layout" , cls : " anim
if ( ! treeNode . getParentNode ( ) ) return [ ] ; var parentNode = treeNode . getParentNode ( ) , result = this . _getParentValues ( parentNode ) ; return result = result . concat ( [ this . _getNodeValue ( parentNode ) ] ) } , _getNodeValue : function ( node ) { return null == node . value ? BI . replaceAll ( node . text . replace ( /<[^>]+>/g , "" ) , " " , " " ) : node . value } , _getHalfSelectedValues : function ( map , node ) { var self = this , checkState = node . getCheckStatus ( ) ; if ( checkState . checked !== ! 1 || checkState . half !== ! 1 ) { if ( BI . isNotEmptyArray ( node . children ) && checkState . half === ! 0 ) { var children = node . children ; return void BI . each ( children , function ( i , ch ) { self . _getHalfSelectedValues ( map , ch ) } ) } var parent = node . parentValues || self . _getParentValues ( node ) , path = parent . concat ( this . _getNodeValue ( node ) ) ; if ( BI . isNotEmptyArray ( node . children ) || checkState . half === ! 1 ) return void this . _buildTree ( map , path ) ; var storeValues = BI . deepClone ( this . options . paras . selectedValues ) , treeNode = this . _getTree ( storeValues , path ) ; this . _addTreeNode ( map , parent , this . _getNodeValue ( node ) , treeNode ) } } , _getTree : function ( map , values ) { var cur = map ; return BI . any ( values , function ( i , value ) { return null == cur [ value ] || void ( cur = cur [ value ] ) } ) , cur } , _addTreeNode : function ( map , values , key , value ) { var cur = map ; BI . each ( values , function ( i , value ) { null == cur [ value ] && ( cur [ value ] = { } ) , cur = cur [ value ] } ) , cur [ key ] = value } , _buildTree : function ( map , values ) { var cur = map ; BI . each ( values , function ( i , value ) { null == cur [ value ] && ( cur [ value ] = { } ) , cur = cur [ value ] } ) } , _getSelectedValues : function ( ) { function track ( nodes ) { BI . each ( nodes , function ( i , node ) { var checkState = node . getCheckStatus ( ) ; if ( checkState . checked === ! 0 || checkState . half === ! 0 ) if ( checkState . half === ! 0 ) self . _getHalfSelectedValues ( hashMap , node ) ; else { var parentValues = node . parentValues || self . _getParentValues ( node ) , values = parentValues . concat ( [ self . _getNodeValue ( node ) ] ) ; self . _buildTree ( hashMap , values ) } } ) } var self = this , hashMap = { } , rootNoots = this . nodes . getNodes ( ) ; return track ( rootNoots ) , hashMap } , _dealWidthNodes : function ( nodes ) { var self = this , o = this . options , ns = BI . Tree . arrayFormat ( nodes ) ; return BI . each ( ns , function ( i , n ) { n . title = n . title || n . text || n . value , n . isParent = n . isParent || n . parent , BI . isKey ( o . paras . keyword ) ? n . text = BI . $ ( "<div>" ) . _ _textKeywordMarked _ _ ( n . text , o . paras . keyword , n . py ) . html ( ) : n . text = BI . htmlEncode ( n . text + "" ) } ) , nodes } , _loadMore : function ( ) { var self = this , o = this . options ; this . tip . setLoading ( ) ; var op = BI . extend ( { } , o . paras , { times : ++ this . times } ) ; o . itemsCreator ( op , function ( res ) { if ( self . _stop !== ! 0 ) { var hasNext = ! ! res . hasNext , nodes = res . items || [ ] ; hasNext ? self . tip . setLoaded ( ) : self . tip . setEnd ( ) , nodes . length > 0 && self . nodes . addNodes ( null , self . _dealWidthNodes ( nodes ) ) } } ) } , _initTree : function ( setting ) { var self = this , o = this . options ; self . fireEvent ( BI . Events . INIT ) , this . times = 1 ; var tree = this . tree ; tree . empty ( ) , this . loading ( ) , this . tip . setVisible ( ! 1 ) ; var callback = function ( nodes ) { self . _stop !== ! 0 && ( self . nodes = BI . $ . fn . zTree . init ( tree . element , setting , nodes ) ) } , op = BI . extend ( { } , o . paras , { times : 1 } ) ; o . itemsCreator ( op , function ( res ) { if ( self . _stop !== ! 0 ) { var hasNext = ! ! res . hasNext , nodes = res . items || [ ] ; nodes . length > 0 && callback ( self . _dealWidthNodes ( nodes ) ) , self . setTipVisible ( nodes . length <= 0 ) , self . loaded ( ) , hasNext ? self . tip . setLoaded ( ) : self . tip . invisible ( ) , 1 === op . times && self . fireEvent ( BI . Events . AFTERINIT ) } } ) } , initTree : function ( nodes , setting ) { var setting = setting || { async : { enable : ! 1 } , check : { enable : ! 1 } , data : { key : { title : "title" , name : "text" } , simpleData : { enable : ! 0 } } , view : { showIcon : ! 1 , expandSpeed : "" , nameIsHTML : ! 0 } , callback : { } } ; this . nodes = BI . $ . fn . zTree . init ( this . tree . element , setting , nodes ) } , start : function ( ) { this . _stop = ! 1 } , stop : function ( ) { this . _stop = ! 0 } , stroke : function ( config ) { delete this . options . keyword , BI . extend ( this . options . paras , config ) ; var setting = this . _configSetting ( ) ; this . _createTree ( ) , this . start ( ) , this . _initTree ( setting ) } , populate : function ( ) { this . stroke . apply ( this , arguments ) } , hasChecked : function ( ) { var treeObj = this . nodes ; return treeObj . getCheckedNodes ( ! 0 ) . length > 0 } , checkAll : function ( checked ) { function setNode ( children ) { BI . each ( children , function ( i , child ) { child . halfCheck = ! 1 , setNode ( child . children ) } ) } this . nodes && ( BI . each ( this . nodes . getNodes ( ) , function ( i , node ) { node . halfCheck = ! 1 , setNode ( node . children ) } ) , this . no
BI . nextTick ( function ( ) { self . fireEvent ( BI . Combo . EVENT _AFTER _INIT ) } ) ) } , _assertPopupViewRender : function ( ) { this . _assertPopupView ( ) , this . _rendered || ( BI . createWidget ( { type : "bi.vertical" , scrolly : ! 1 , element : this . options . container || this , items : [ { el : this . popupView } ] } ) , this . _rendered = ! 0 ) } , _hideIf : function ( e ) { if ( this . element . find ( e . target ) . length > 0 || this . popupView && this . popupView . element . find ( e . target ) . length > 0 || "CodeMirror-cursor" === e . target . className || BI . Widget . _renderEngine . createElement ( e . target ) . closest ( ".CodeMirror-hints" ) . length > 0 ) { var directions = this . options . direction . split ( "," ) ; return void ( ( BI . contains ( directions , "innerLeft" ) || BI . contains ( directions , "innerRight" ) ) && ( this . adjustWidth ( ) , this . adjustHeight ( ) ) ) } var isHide = this . options . hideChecker . apply ( this , [ e ] ) ; isHide !== ! 1 && this . _hideView ( ) } , _hideView : function ( ) { this . fireEvent ( BI . Combo . EVENT _BEFORE _HIDEVIEW ) , this . options . destroyWhenHide === ! 0 ? ( this . popupView && this . popupView . destroy ( ) , this . popupView = null , this . _rendered = ! 1 ) : this . popupView && this . popupView . invisible ( ) , this . element . removeClass ( this . options . comboClass ) , BI . Widget . _renderEngine . createElement ( document ) . unbind ( "mousedown." + this . getName ( ) ) . unbind ( "mousewheel." + this . getName ( ) ) , this . fireEvent ( BI . Combo . EVENT _AFTER _HIDEVIEW ) } , _popupView : function ( e ) { this . _assertPopupViewRender ( ) , this . fireEvent ( BI . Combo . EVENT _BEFORE _POPUPVIEW ) , this . popupView . visible ( ) , this . adjustWidth ( e ) , this . adjustHeight ( e ) , this . element . addClass ( this . options . comboClass ) , BI . Widget . _renderEngine . createElement ( document ) . unbind ( "mousedown." + this . getName ( ) ) . unbind ( "mousewheel." + this . getName ( ) ) , BI . Widget . _renderEngine . createElement ( document ) . bind ( "mousedown." + this . getName ( ) , BI . bind ( this . _hideIf , this ) ) . bind ( "mousewheel." + this . getName ( ) , BI . bind ( this . _hideIf , this ) ) , this . fireEvent ( BI . Combo . EVENT _AFTER _POPUPVIEW ) } , adjustWidth : function ( e ) { var o = this . options ; if ( this . popupView && o . isNeedAdjustWidth === ! 0 ) { this . resetListWidth ( "" ) ; var width = this . popupView . element . outerWidth ( ) , maxW = this . element . outerWidth ( ) || o . width ; width > maxW + 80 ? maxW += 80 : width > maxW && ( maxW = width ) , this . resetListWidth ( maxW < 100 ? 100 : maxW ) } } , adjustHeight : function ( e ) { var o = this . options , p = { } ; if ( this . popupView ) { var isVisible = this . popupView . isVisible ( ) ; this . popupView . visible ( ) ; var combo = BI . isNotNull ( e ) ? { element : { offset : function ( ) { return { left : e . pageX , top : e . pageY } } , bounds : function ( ) { return { x : e . offsetX , y : e . offsetY , width : 0 , height : 24 } } , outerWidth : function ( ) { return 0 } , outerHeight : function ( ) { return 24 } } } : this . combo ; switch ( o . direction ) { case "bottom" : case "bottom,right" : p = BI . DOM . getComboPosition ( combo , this . popupView , o . adjustXOffset , o . adjustYOffset || o . adjustLength , o . isNeedAdjustHeight , [ "bottom" , "top" , "right" , "left" ] , o . offsetStyle ) ; break ; case "top" : case "top,right" : p = BI . DOM . getComboPosition ( combo , this . popupView , o . adjustXOffset , o . adjustYOffset || o . adjustLength , o . isNeedAdjustHeight , [ "top" , "bottom" , "right" , "left" ] , o . offsetStyle ) ; break ; case "left" : case "left,bottom" : p = BI . DOM . getComboPosition ( combo , this . popupView , o . adjustXOffset || o . adjustLength , o . adjustYOffset , o . isNeedAdjustHeight , [ "left" , "right" , "bottom" , "top" ] , o . offsetStyle ) ; break ; case "right" : case "right,bottom" : p = BI . DOM . getComboPosition ( combo , this . popupView , o . adjustXOffset || o . adjustLength , o . adjustYOffset , o . isNeedAdjustHeight , [ "right" , "left" , "bottom" , "top" ] , o . offsetStyle ) ; break ; case "top,left" : p = BI . DOM . getComboPosition ( combo , this . popupView , o . adjustXOffset , o . adjustYOffset || o . adjustLength , o . isNeedAdjustHeight , [ "top" , "bottom" , "left" , "right" ] , o . offsetStyle ) ; break ; case "bottom,left" : p = BI . DOM . getComboPosition ( combo , this . popupView , o . adjustXOffset , o . adjustYOffset || o . adjustLength , o . isNeedAdjustHeight , [ "bottom" , "top" , "left" , "right" ] , o . offsetStyle ) ; break ; case "left,top" : p = BI . DOM . getComboPosition ( combo , this . popupView , o . adjustXOffset || o . adjustLength , o . adjustYOffset , o . isNeedAdjustHeight , [ "left" , "right" , "top" , "bottom" ] , o . offsetStyle ) ; break ; case "right,top" : p = BI . DOM . getComboPosition ( combo , this . popupView , o . adjustXOffset || o . adjustLength , o . adjustYOffset , o . isNeedAdjustHeight , [ "right" , "left" , "top" , "bottom" ] , o . offsetStyle ) ; break ; case "right,innerRight" : p = BI . DOM . getComboPosition ( combo , this . popupView , o . adjustXOffset || o . ad
} , function ( ) { self . isEnabled ( ) && self . switcher . isEnabled ( ) && self . element . removeClass ( o . hoverClass ) } ) , BI . createWidget ( { type : "bi.vertical" , scrolly : ! 1 , element : this , items : [ { el : this . switcher } ] } ) , o . isDefaultInit && this . _assertPopupView ( ) } , _toggle : function ( ) { this . _assertPopupView ( ) , this . isExpanded ( ) ? this . _hideView ( ) : this . isEnabled ( ) && this . _popupView ( ) } , _initPullDownAction : function ( ) { var self = this , o = this . options , evs = this . options . trigger . split ( "," ) ; BI . each ( evs , function ( i , e ) { switch ( e ) { case "hover" : self . element [ e ] ( function ( e ) { self . isEnabled ( ) && self . switcher . isEnabled ( ) && ( self . _popupView ( ) , self . fireEvent ( BI . Controller . EVENT _CHANGE , BI . Events . EXPAND , "" , self . switcher ) , self . fireEvent ( BI . Switcher . EVENT _EXPAND ) ) } , function ( ) { self . isEnabled ( ) && self . switcher . isEnabled ( ) && o . toggle && ( self . _hideView ( ) , self . fireEvent ( BI . Controller . EVENT _CHANGE , BI . Events . COLLAPSE , "" , self . switcher ) , self . fireEvent ( BI . Switcher . EVENT _COLLAPSE ) ) } ) ; break ; default : e && self . element . off ( e + "." + self . getName ( ) ) . on ( e + "." + self . getName ( ) , BI . debounce ( function ( e ) { self . switcher . element . _ _isMouseInBounds _ _ ( e ) && self . isEnabled ( ) && self . switcher . isEnabled ( ) && ( o . toggle ? self . _toggle ( ) : self . _popupView ( ) , self . isExpanded ( ) ? ( self . fireEvent ( BI . Controller . EVENT _CHANGE , BI . Events . EXPAND , "" , self . switcher ) , self . fireEvent ( BI . Switcher . EVENT _EXPAND ) ) : ( self . fireEvent ( BI . Controller . EVENT _CHANGE , BI . Events . COLLAPSE , "" , self . switcher ) , self . fireEvent ( BI . Switcher . EVENT _COLLAPSE ) ) ) } , BI . EVENT _RESPONSE _TIME , { leading : ! 0 , trailing : ! 1 } ) ) } } ) } , _initSwitcher : function ( ) { this . switcher = BI . createWidget ( this . options . el , { value : this . options . value } ) } , _assertPopupView : function ( ) { var self = this , o = this . options ; this . _created || ( this . popupView = BI . createWidget ( o . popup , { type : "bi.button_group" , element : o . adapter && BI . Maskers . create ( this . getName ( ) , o . adapter , BI . extend ( { container : this } , o . masker ) ) , cls : "switcher-popup" , layouts : [ { type : "bi.vertical" , hgap : 0 , vgap : 0 } ] , value : o . value } , this ) , this . popupView . on ( BI . Controller . EVENT _CHANGE , function ( type , value , obj ) { self . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) , type === BI . Events . CLICK && self . fireEvent ( BI . Switcher . EVENT _CHANGE , value , obj ) } ) , o . direction === BI . Direction . Custom || o . adapter || BI . createWidget ( { type : "bi.vertical" , scrolly : ! 1 , element : this , items : [ { el : this . popupView } ] } ) , this . _created = ! 0 , BI . nextTick ( function ( ) { self . fireEvent ( BI . Switcher . EVENT _AFTER _INIT ) } ) ) } , _hideView : function ( ) { this . fireEvent ( BI . Switcher . EVENT _BEFORE _HIDEVIEW ) ; var self = this , o = this . options ; o . adapter ? BI . Maskers . hide ( self . getName ( ) ) : self . popupView && self . popupView . setVisible ( ! 1 ) , BI . nextTick ( function ( ) { o . adapter ? BI . Maskers . hide ( self . getName ( ) ) : self . popupView && self . popupView . setVisible ( ! 1 ) , self . element . removeClass ( o . switcherClass ) , self . fireEvent ( BI . Switcher . EVENT _AFTER _HIDEVIEW ) } ) } , _popupView : function ( ) { var self = this , o = this . options ; this . _assertPopupView ( ) , this . fireEvent ( BI . Switcher . EVENT _BEFORE _POPUPVIEW ) , o . adapter ? BI . Maskers . show ( this . getName ( ) ) : self . popupView . setVisible ( ! 0 ) , BI . nextTick ( function ( name ) { o . adapter ? BI . Maskers . show ( name ) : self . popupView . setVisible ( ! 0 ) , self . element . addClass ( o . switcherClass ) , self . fireEvent ( BI . Switcher . EVENT _AFTER _POPUPVIEW ) } , this . getName ( ) ) } , populate : function ( items ) { this . _assertPopupView ( ) , this . popupView . populate . apply ( this . popupView , arguments ) , this . switcher . populate . apply ( this . switcher , arguments ) } , _setEnable : function ( arg ) { BI . Switcher . superclass . _setEnable . apply ( this , arguments ) , ! arg && this . isViewVisible ( ) && this . _hideView ( ) } , setValue : function ( v ) { this . switcher . setValue ( v ) , BI . isNull ( this . popupView ) ? this . options . popup . value = v : this . popupView . setValue ( v ) } , getValue : function ( ) { return BI . isNull ( this . popupView ) ? this . options . popup . value : this . popupView . getValue ( ) } , setAdapter : function ( adapter ) { this . options . adapter = adapter , BI . Maskers . remove ( this . getName ( ) ) } , isViewVisible : function ( ) { return this . isEnabled ( ) && this . switcher . isEnabled ( ) && ( this . options . adapter ? BI . Maskers . isVisible ( this . getName ( ) ) : this . popupView && this . popupView . isVisible ( ) ) } , isExpanded : function ( ) { return this . isViewVisible ( ) } , showView : function ( ) { this . isEnabled ( ) && this . switcher . isEnabled ( ) && this . _popupView ( ) } , hideView : function ( ) { this . _hideView ( ) } , getView : function ( ) { return t
self . _calculateBlocksToRender ( ) ) } ) } , _renderMoreIf : function ( ) { for ( var self = this , o = this . options , height = this . element . height ( ) , minContentHeight = o . scrollTop + height + o . overscanHeight , index = this . cache [ this . renderedIndex ] && this . cache [ this . renderedIndex ] . index + o . blockSize || 0 , cnt = this . renderedIndex + 1 , lastHeight , getElementHeight = function ( ) { return self . container . element . height ( ) } ; ( lastHeight = getElementHeight ( ) ) < minContentHeight && index < o . items . length ; ) { var items = o . items . slice ( index , index + o . blockSize ) ; this . container . addItems ( items , this ) ; var addedHeight = getElementHeight ( ) - lastHeight ; this . cache [ cnt ] = { index : index , scrollTop : lastHeight , height : addedHeight } , this . renderedIndex = cnt , cnt ++ , index += o . blockSize } } , _calculateBlocksToRender : function ( ) { var o = this . options ; this . _renderMoreIf ( ) } , _populate : function ( items ) { var o = this . options ; items && this . options . items !== items && ( this . options . items = items ) , this . _calculateBlocksToRender ( ) , this . element . scrollTop ( o . scrollTop ) } , restore : function ( ) { this . renderedIndex = - 1 , this . container . empty ( ) , this . cache = { } } , populate : function ( items ) { items && this . options . items !== items && this . restore ( ) , this . _populate ( items ) } , destroyed : function ( ) { this . restore ( ) } } ) , BI . shortcut ( "bi.list_view" , BI . ListView ) , BI . VirtualList = BI . inherit ( BI . Widget , { props : function ( ) { return { baseCls : "bi-virtual-list" , overscanHeight : 100 , blockSize : 10 , scrollTop : 0 , items : [ ] } } , init : function ( ) { var self = this ; this . renderedIndex = - 1 , this . cache = { } } , render : function ( ) { var self = this , o = this . options ; return { type : "bi.vertical" , items : [ { type : "bi.layout" , ref : function ( ) { self . topBlank = this } } , { type : "bi.vertical" , scrolly : ! 1 , ref : function ( ) { self . container = this } } , { type : "bi.layout" , ref : function ( ) { self . bottomBlank = this } } ] , element : this } } , mounted : function ( ) { var self = this , o = this . options ; this . _populate ( ) , this . element . scroll ( function ( e ) { o . scrollTop = self . element . scrollTop ( ) , self . _calculateBlocksToRender ( ) } ) , BI . ResizeDetector . addResizeListener ( this , function ( ) { self . _calculateBlocksToRender ( ) } ) } , _renderMoreIf : function ( ) { for ( var self = this , o = this . options , height = this . element . height ( ) , minContentHeight = o . scrollTop + height + o . overscanHeight , index = this . cache [ this . renderedIndex ] && this . cache [ this . renderedIndex ] . index + o . blockSize || 0 , cnt = this . renderedIndex + 1 , lastHeight , getElementHeight = function ( ) { return self . container . element . height ( ) + self . topBlank . element . height ( ) + self . bottomBlank . element . height ( ) } ; ( lastHeight = getElementHeight ( ) ) < minContentHeight && index < o . items . length ; ) { var items = o . items . slice ( index , index + o . blockSize ) ; this . container . addItems ( items , this ) ; var addedHeight = getElementHeight ( ) - lastHeight ; this . cache [ cnt ] = { index : index , scrollTop : lastHeight , height : addedHeight } , this . tree . set ( cnt , addedHeight ) , this . renderedIndex = cnt , cnt ++ , index += o . blockSize } } , _calculateBlocksToRender : function ( ) { var o = this . options ; this . _renderMoreIf ( ) ; for ( var height = this . element . height ( ) , minContentHeightFrom = o . scrollTop - o . overscanHeight , minContentHeightTo = o . scrollTop + height + o . overscanHeight , start = this . tree . greatestLowerBound ( minContentHeightFrom ) , end = this . tree . leastUpperBound ( minContentHeightTo ) , needDestroyed = [ ] , i = 0 ; i < start ; i ++ ) { var index = this . cache [ i ] . index ; if ( ! this . cache [ i ] . destroyed ) { for ( var j = index ; j < index + o . blockSize && j < o . items . length ; j ++ ) needDestroyed . push ( this . container . _children [ j ] ) , this . container . _children [ j ] = null ; this . cache [ i ] . destroyed = ! 0 } } for ( var i = end + 1 ; i <= this . renderedIndex ; i ++ ) { var index = this . cache [ i ] . index ; if ( ! this . cache [ i ] . destroyed ) { for ( var j = index ; j < index + o . blockSize && j < o . items . length ; j ++ ) needDestroyed . push ( this . container . _children [ j ] ) , this . container . _children [ j ] = null ; this . cache [ i ] . destroyed = ! 0 } } for ( var firstFragment = BI . Widget . _renderEngine . createFragment ( ) , lastFragment = BI . Widget . _renderEngine . createFragment ( ) , currentFragment = firstFragment , i = start < 0 ? 0 : start ; i <= end && i <= this . renderedIndex ; i ++ ) { var index = this . cache [ i ] . index ; if ( this . cache [ i ] . destroyed || ( currentFragment = lastFragment ) , this . cache [ i ] . destroyed === ! 0 ) { for ( var j = index ; j < index + o . blockSize && j < o . items . length ; j ++ ) { var w = this . container . _addElement ( j , BI . extend ( { root : ! 0 } , BI . stripEL ( o . items [ j ] ) ) , this ) ; currentFragment . appendChild ( w . element [ 0 ] ) } this . cache [ i ] . destroyed = ! 1 } } this . contain
keyword : o . keyword , height : o . height } ) ; var icon1 = BI . createWidget ( { type : "bi.icon_label" , cls : o . iconCls1 , width : o . height , height : o . height , iconWidth : o . iconWidth , iconHeight : o . iconHeight } ) , blank = BI . createWidget ( { type : "bi.layout" , width : o . height , height : o . height } ) ; BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : { type : "bi.icon_label" , cls : o . iconCls2 , width : o . height , iconWidth : o . iconWidth , iconHeight : o . iconHeight } , top : 0 , bottom : 0 , right : 0 } ] } ) , BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( "horizontal" , BI . extend ( o . logic , { items : BI . LogicFactory . createLogicItemsByDirection ( "left" , icon1 , this . text , blank ) } ) ) ) ) } , doClick : function ( ) { BI . IconTextIconNode . superclass . doClick . apply ( this , arguments ) , this . isValid ( ) && this . fireEvent ( BI . IconTextIconNode . EVENT _CHANGE , this . getValue ( ) , this ) } , doRedMark : function ( ) { this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } , setValue : function ( ) { this . isReadOnly ( ) || this . text . setValue . apply ( this . text , arguments ) } , getValue : function ( ) { return this . text . getValue ( ) } , setText : function ( ) { this . text . setText . apply ( this . text , arguments ) } , getText : function ( ) { return this . text . getText ( ) } } ) , BI . IconTextIconNode . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.icon_text_icon_node" , BI . IconTextIconNode ) , BI . IconTextNode = BI . inherit ( BI . NodeButton , { _defaultConfig : function ( ) { var conf = BI . IconTextNode . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( conf , { baseCls : ( conf . baseCls || "" ) + " bi-icon-text-node" , logic : { dynamic : ! 1 } , cls : "close-ha-font" , iconHeight : null , iconWidth : null , textHgap : 0 , textVgap : 0 , textLgap : 0 , textRgap : 0 } ) } , _init : function ( ) { BI . IconTextNode . superclass . _init . apply ( this , arguments ) ; var o = this . options , c = this . _const ; this . text = BI . createWidget ( { type : "bi.label" , cls : "list-item-text" , textAlign : "left" , hgap : o . textHgap , vgap : o . textVgap , lgap : o . textLgap , rgap : o . textRgap , text : o . text , value : o . value , keyword : o . keyword , height : o . height } ) , this . icon = BI . createWidget ( { type : "bi.icon_label" , width : o . height , height : o . height , iconWidth : o . iconWidth , iconHeight : o . iconHeight } ) , BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( "horizontal" , BI . extend ( o . logic , { items : BI . LogicFactory . createLogicItemsByDirection ( "left" , this . icon , this . text ) } ) ) ) ) } , setValue : function ( ) { this . isReadOnly ( ) || this . text . setValue . apply ( this . text , arguments ) } , getValue : function ( ) { return this . text . getValue ( ) } , setText : function ( ) { this . text . setText . apply ( this . text , arguments ) } , getText : function ( ) { return this . text . getText ( ) } , doClick : function ( ) { BI . IconTextNode . superclass . doClick . apply ( this , arguments ) , this . isValid ( ) && this . fireEvent ( BI . IconTextNode . EVENT _CHANGE , this . getValue ( ) , this ) } , doRedMark : function ( ) { this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } } ) , BI . IconTextNode . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.icon_text_node" , BI . IconTextNode ) , BI . TextIconNode = BI . inherit ( BI . NodeButton , { _defaultConfig : function ( ) { var conf = BI . TextIconNode . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( conf , { baseCls : ( conf . baseCls || "" ) + " bi-text-icon-node" , logic : { dynamic : ! 1 } , cls : "close-ha-font" , iconHeight : null , iconWidth : null , textHgap : 0 , textVgap : 0 , textLgap : 0 , textRgap : 0 } ) } , _init : function ( ) { BI . TextIconNode . superclass . _init . apply ( this , arguments ) ; var o = this . options , c = this . _const ; this . text = BI . createWidget ( { type : "bi.label" , cls : "list-item-text" , textAlign : "left" , hgap : o . textHgap , vgap : o . textVgap , lgap : o . textLgap , rgap : o . textRgap , text : o . text , value : o . value , keyword : o . keyword , height : o . height } ) , this . icon = BI . createWidget ( { type : "bi.icon_label" , width : o . height , height : o . height , iconWidth : o . iconWidth , iconHeight : o . iconHeight } ) , BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( "horizontal" , BI . extend ( o . logic , { items : BI . LogicFactory . createLogicItemsByDirection ( "left" , this . text , this . icon ) } ) ) ) ) } , doClick : function ( ) { BI . TextIconNode . superclass . doClick . apply ( this , arguments ) , this . isValid ( ) && this . fireEvent ( BI . TextIconNode . EVENT _CHANGE , this . getValue ( ) , this ) } , setValue : function ( ) { this . isReadOnly ( ) || this . text . setValue . apply ( this . text , arguments ) } , getValue : function ( ) { r
if ( attach . errorCode ) return BI . Msg . toast ( attach . errorMsg , { level : "error" } ) , self . fireEvent ( BI . File . EVENT _ERROR , attach ) , ! 0 } ) ; ! error && self . fireEvent ( BI . File . EVENT _UPLOADED ) } , 1e3 ) } , _wrap . url = o . url , _wrap . fileType = o . accept , _wrap . attach _array = [ ] , _wrap . attach _names = [ ] , _wrap . attachNum = 0 } , _events : function ( wrap ) { var self = this ; return event . add ( wrap . dom . input , "change" , function ( ) { event . del ( wrap . dom . input , "change" , arguments . callee ) ; for ( var input = wrap . dom . input . cloneNode ( ! 0 ) , i = 0 , files = F ( wrap . dom . input ) ; i < files . length ; i ++ ) { var item = files . item ( i ) , tempFile = item . value || item . name , value = item . fileName || ( item . fileName = tempFile . split ( "\\" ) . pop ( ) ) , ext = - 1 !== value . indexOf ( "." ) ? value . split ( "." ) . pop ( ) . toLowerCase ( ) : "unknown" , size = item . fileSize || item . size ; wrap . fileType && - 1 === wrap . fileType . indexOf ( "*." + ext ) ? ( BI . Msg . toast ( BI . i18nText ( "BI-Upload_File_Type_Error" ) , { level : "error" } ) , self . fireEvent ( BI . File . EVENT _ERROR , { errorType : 0 , file : item } ) ) : wrap . maxSize !== - 1 && size && wrap . maxSize < size ? ( BI . Msg . toast ( BI . i18nText ( "BI-Upload_File_Size_Error" ) , { level : "error" } ) , self . fireEvent ( BI . File . EVENT _ERROR , { errorType : 1 , file : item } ) ) : wrap . files . unshift ( item ) } wrap . files . length > 0 && self . fireEvent ( BI . File . EVENT _CHANGE , { files : wrap . files } ) , input . value = "" , wrap . dom . input . parentNode . replaceChild ( input , wrap . dom . input ) , wrap . dom . input = input , event . add ( wrap . dom . input , "change" , arguments . callee ) } ) , wrap } , _wrap : function ( ) { var self = this , o = this . options , input = this . element [ 0 ] ; return o . multiple === ! 0 && this . element . attr ( "multiple" , "multiple" ) , input . value = "" , this . _events ( { dom : { input : input , disabled : ! 1 } , name : input . name , maxSize : o . maxSize ? o . maxSize >> 0 : - 1 , files : [ ] , clean : function ( ) { this . files = [ ] } , upload : function ( handler ) { if ( handler ) for ( var key in handler ) this [ key ] = handler [ key ] ; return sendFiles ( this , this . maxSize ) , this } , hide : function ( ) { this . dom . disabled && ( this . dom . disabled = ! 1 , this . dom . input . removeAttribute ( "disabled" ) ) } , show : function ( total , current , totalProp , currentProp ) { this . dom . disabled || ( this . dom . disabled = ! 0 , this . dom . input . setAttribute ( "disabled" , "disabled" ) ) } } ) } , select : function ( ) { this . wrap && BI . Widget . _renderEngine . createElement ( this . wrap . dom . input ) . click ( ) } , upload : function ( handler ) { this . wrap && this . wrap . upload ( handler ) } , getValue : function ( ) { return this . wrap ? this . wrap . attach _array : [ ] } , reset : function ( ) { this . wrap && ( this . wrap . attach _array = [ ] , this . wrap . attach _names = [ ] , this . wrap . attachNum = 0 ) } , _setEnable : function ( enable ) { BI . File . superclass . _setEnable . apply ( this , arguments ) , enable === ! 0 ? this . element . attr ( "disabled" , "disabled" ) : this . element . removeAttr ( "disabled" ) } } ) , BI . File . EVENT _CHANGE = "EVENT_CHANGE" , BI . File . EVENT _UPLOADSTART = "EVENT_UPLOADSTART" , BI . File . EVENT _ERROR = "EVENT_ERROR" , BI . File . EVENT _PROGRESS = "EVENT_PROGRESS" , BI . File . EVENT _UPLOADED = "EVENT_UPLOADED" , BI . shortcut ( "bi.file" , BI . File ) } ( _global . document || { } ) , BI . Input = BI . inherit ( BI . Single , { _defaultConfig : function ( ) { var conf = BI . Input . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( conf , { baseCls : ( conf . baseCls || "" ) + " bi-input display-block overflow-dot" , tagName : "input" , validationChecker : BI . emptyFn , quitChecker : BI . emptyFn , allowBlank : ! 1 } ) } , _init : function ( ) { BI . Input . superclass . _init . apply ( this , arguments ) ; var self = this , ctrlKey = ! 1 , keyCode = null , inputEventValid = ! 1 , _keydown = BI . debounce ( function ( keyCode ) { self . onKeyDown ( keyCode , ctrlKey ) , self . _keydown _ = ! 1 } , 300 ) , _clk = BI . debounce ( BI . bind ( this . _click , this ) , BI . EVENT _RESPONSE _TIME , { leading : ! 0 , trailing : ! 1 } ) ; this . _focusDebounce = BI . debounce ( BI . bind ( this . _focus , this ) , BI . EVENT _RESPONSE _TIME , { leading : ! 0 , trailing : ! 1 } ) , this . _blurDebounce = BI . debounce ( BI . bind ( this . _blur , this ) , BI . EVENT _RESPONSE _TIME , { leading : ! 0 , trailing : ! 1 } ) , this . element . keydown ( function ( e ) { inputEventValid = ! 1 , ctrlKey = e . ctrlKey || e . metaKey , keyCode = e . keyCode , self . fireEvent ( BI . Input . EVENT _QUICK _DOWN , arguments ) } ) . keyup ( function ( e ) { keyCode = null , inputEventValid && e . keyCode === BI . KeyCode . ENTER || ( self . _keydown _ = ! 0 , _keydown ( e . keyCode ) ) } ) . on ( "input propertychange" , function ( e ) { var originalEvent = e . originalEvent ; ( BI . isNull ( originalEvent . propertyName ) || "value" === originalEvent . propertyName ) && ( inputEventValid = ! 0 , self . _keydown _ = ! 0 , _keydown ( keyCode ) , keyCode = null ) } ) . click ( function ( e ) { e .
return data . getNextNode ( setting , n ) } , n . isAjaxing = ! 1 , data . fixPIdKeyValue ( setting , n ) } } , _init = { bind : [ _bindEvent ] , unbind : [ _unbindEvent ] , caches : [ _initCache ] , nodes : [ _initNode ] , proxys : [ _eventProxy ] , roots : [ _initRoot ] , beforeA : [ ] , afterA : [ ] , innerBeforeA : [ ] , innerAfterA : [ ] , zTreeTools : [ ] } , data = { addNodeCache : function ( setting , node ) { data . getCache ( setting ) . nodes [ data . getNodeCacheId ( node . tId ) ] = node } , getNodeCacheId : function ( tId ) { return tId . substring ( tId . lastIndexOf ( "_" ) + 1 ) } , addAfterA : function ( afterA ) { _init . afterA . push ( afterA ) } , addBeforeA : function ( beforeA ) { _init . beforeA . push ( beforeA ) } , addInnerAfterA : function ( innerAfterA ) { _init . innerAfterA . push ( innerAfterA ) } , addInnerBeforeA : function ( innerBeforeA ) { _init . innerBeforeA . push ( innerBeforeA ) } , addInitBind : function ( bindEvent ) { _init . bind . push ( bindEvent ) } , addInitUnBind : function ( unbindEvent ) { _init . unbind . push ( unbindEvent ) } , addInitCache : function ( initCache ) { _init . caches . push ( initCache ) } , addInitNode : function ( initNode ) { _init . nodes . push ( initNode ) } , addInitProxy : function ( initProxy , isFirst ) { isFirst ? _init . proxys . splice ( 0 , 0 , initProxy ) : _init . proxys . push ( initProxy ) } , addInitRoot : function ( initRoot ) { _init . roots . push ( initRoot ) } , addNodesData : function ( setting , parentNode , nodes ) { var childKey = setting . data . key . children ; parentNode [ childKey ] || ( parentNode [ childKey ] = [ ] ) , parentNode [ childKey ] . length > 0 && ( parentNode [ childKey ] [ parentNode [ childKey ] . length - 1 ] . isLastNode = ! 1 , view . setNodeLineIcos ( setting , parentNode [ childKey ] [ parentNode [ childKey ] . length - 1 ] ) ) , parentNode . isParent = ! 0 , parentNode [ childKey ] = parentNode [ childKey ] . concat ( nodes ) } , addSelectedNode : function ( setting , node ) { var root = data . getRoot ( setting ) ; data . isSelectedNode ( setting , node ) || root . curSelectedList . push ( node ) } , addCreatedNode : function ( setting , node ) { if ( setting . callback . onNodeCreated || setting . view . addDiyDom ) { var root = data . getRoot ( setting ) ; root . createdNodes . push ( node ) } } , addZTreeTools : function ( zTreeTools ) { _init . zTreeTools . push ( zTreeTools ) } , exSetting : function ( s ) { $ . extend ( ! 0 , _setting , s ) } , fixPIdKeyValue : function ( setting , node ) { setting . data . simpleData . enable && ( node [ setting . data . simpleData . pIdKey ] = node . parentTId ? node . getParentNode ( ) [ setting . data . simpleData . idKey ] : setting . data . simpleData . rootPId ) } , getAfterA : function ( setting , node , array ) { for ( var i = 0 , j = _init . afterA . length ; i < j ; i ++ ) _init . afterA [ i ] . apply ( this , arguments ) } , getBeforeA : function ( setting , node , array ) { for ( var i = 0 , j = _init . beforeA . length ; i < j ; i ++ ) _init . beforeA [ i ] . apply ( this , arguments ) } , getInnerAfterA : function ( setting , node , array ) { for ( var i = 0 , j = _init . innerAfterA . length ; i < j ; i ++ ) _init . innerAfterA [ i ] . apply ( this , arguments ) } , getInnerBeforeA : function ( setting , node , array ) { for ( var i = 0 , j = _init . innerBeforeA . length ; i < j ; i ++ ) _init . innerBeforeA [ i ] . apply ( this , arguments ) } , getCache : function ( setting ) { return caches [ setting . treeId ] } , getNextNode : function ( setting , node ) { if ( ! node ) return null ; for ( var childKey = setting . data . key . children , p = node . parentTId ? node . getParentNode ( ) : data . getRoot ( setting ) , i = 0 , l = p [ childKey ] . length - 1 ; i <= l ; i ++ ) if ( p [ childKey ] [ i ] === node ) return i == l ? null : p [ childKey ] [ i + 1 ] ; return null } , getNodeByParam : function ( setting , nodes , key , value ) { if ( ! nodes || ! key ) return null ; for ( var childKey = setting . data . key . children , i = 0 , l = nodes . length ; i < l ; i ++ ) { if ( nodes [ i ] [ key ] == value ) return nodes [ i ] ; var tmp = data . getNodeByParam ( setting , nodes [ i ] [ childKey ] , key , value ) ; if ( tmp ) return tmp } return null } , getNodeCache : function ( setting , tId ) { if ( ! tId ) return null ; var n = caches [ setting . treeId ] . nodes [ data . getNodeCacheId ( tId ) ] ; return n ? n : null } , getNodeName : function ( setting , node ) { var nameKey = setting . data . key . name ; return "" + node [ nameKey ] } , getNodeTitle : function ( setting , node ) { var t = "" === setting . data . key . title ? setting . data . key . name : setting . data . key . title ; return "" + node [ t ] } , getNodes : function ( setting ) { return data . getRoot ( setting ) [ setting . data . key . children ] } , getNodesByParam : function ( setting , nodes , key , value ) { if ( ! nodes || ! key ) return [ ] ; for ( var childKey = setting . data . key . children , result = [ ] , i = 0 , l = nodes . length ; i < l ; i ++ ) nodes [ i ] [ key ] == value && result . push ( nodes [ i ] ) , result = result . concat ( data . getNodesByParam ( setting , nodes [ i ] [ childKey ] , key , value ) ) ; return result } , getNodesByParamFuzzy : function ( setting , nodes , key , value ) { if ( ! nodes || !
event . bindEvent ( setting ) ; var zTreeTools = { setting : setting , addNodes : function ( parentNode , newNodes , isSilent ) { function addCallback ( ) { view . addNodes ( setting , parentNode , xNewNodes , 1 == isSilent ) } if ( ! newNodes ) return null ; if ( parentNode || ( parentNode = null ) , parentNode && ! parentNode . isParent && setting . data . keep . leaf ) return null ; var xNewNodes = tools . clone ( tools . isArray ( newNodes ) ? newNodes : [ newNodes ] ) ; return tools . canAsync ( setting , parentNode ) ? view . asyncNode ( setting , parentNode , isSilent , addCallback ) : addCallback ( ) , xNewNodes } , cancelSelectedNode : function ( node ) { view . cancelPreSelectedNode ( setting , node ) } , destroy : function ( ) { view . destroy ( setting ) } , expandAll : function ( expandFlag ) { return expandFlag = ! ! expandFlag , view . expandCollapseSonNode ( setting , null , expandFlag , ! 0 ) , expandFlag } , expandNode : function ( node , expandFlag , sonSign , focus , callbackFlag ) { if ( ! node || ! node . isParent ) return null ; if ( expandFlag !== ! 0 && expandFlag !== ! 1 && ( expandFlag = ! node . open ) , callbackFlag = ! ! callbackFlag , callbackFlag && expandFlag && 0 == tools . apply ( setting . callback . beforeExpand , [ setting . treeId , node ] , ! 0 ) ) return null ; if ( callbackFlag && ! expandFlag && 0 == tools . apply ( setting . callback . beforeCollapse , [ setting . treeId , node ] , ! 0 ) ) return null ; if ( expandFlag && node . parentTId && view . expandCollapseParentNode ( setting , node . getParentNode ( ) , expandFlag , ! 1 ) , expandFlag === node . open && ! sonSign ) return null ; if ( data . getRoot ( setting ) . expandTriggerFlag = callbackFlag , ! tools . canAsync ( setting , node ) && sonSign ) view . expandCollapseSonNode ( setting , node , expandFlag , ! 0 , function ( ) { if ( focus !== ! 1 ) try { $$ ( node , setting ) . focus ( ) . blur ( ) } catch ( e ) { } } ) ; else if ( node . open = ! expandFlag , view . switchNode ( this . setting , node ) , focus !== ! 1 ) try { $$ ( node , setting ) . focus ( ) . blur ( ) } catch ( e ) { } return expandFlag } , getNodes : function ( ) { return data . getNodes ( setting ) } , getNodeByParam : function ( key , value , parentNode ) { return key ? data . getNodeByParam ( setting , parentNode ? parentNode [ setting . data . key . children ] : data . getNodes ( setting ) , key , value ) : null } , getNodeByTId : function ( tId ) { return data . getNodeCache ( setting , tId ) } , getNodesByParam : function ( key , value , parentNode ) { return key ? data . getNodesByParam ( setting , parentNode ? parentNode [ setting . data . key . children ] : data . getNodes ( setting ) , key , value ) : null } , getNodesByParamFuzzy : function ( key , value , parentNode ) { return key ? data . getNodesByParamFuzzy ( setting , parentNode ? parentNode [ setting . data . key . children ] : data . getNodes ( setting ) , key , value ) : null } , getNodesByFilter : function ( filter , isSingle , parentNode , invokeParam ) { return isSingle = ! ! isSingle , filter && "function" == typeof filter ? data . getNodesByFilter ( setting , parentNode ? parentNode [ setting . data . key . children ] : data . getNodes ( setting ) , filter , isSingle , invokeParam ) : isSingle ? null : [ ] } , getNodeIndex : function ( node ) { if ( ! node ) return null ; for ( var childKey = setting . data . key . children , parentNode = node . parentTId ? node . getParentNode ( ) : data . getRoot ( setting ) , i = 0 , l = parentNode [ childKey ] . length ; i < l ; i ++ ) if ( parentNode [ childKey ] [ i ] == node ) return i ; return - 1 } , getSelectedNodes : function ( ) { for ( var r = [ ] , list = data . getRoot ( setting ) . curSelectedList , i = 0 , l = list . length ; i < l ; i ++ ) r . push ( list [ i ] ) ; return r } , isSelectedNode : function ( node ) { return data . isSelectedNode ( setting , node ) } , reAsyncChildNodes : function ( parentNode , reloadType , isSilent ) { if ( this . setting . async . enable ) { var isRoot = ! parentNode ; if ( isRoot && ( parentNode = data . getRoot ( setting ) ) , "refresh" == reloadType ) { for ( var childKey = this . setting . data . key . children , i = 0 , l = parentNode [ childKey ] ? parentNode [ childKey ] . length : 0 ; i < l ; i ++ ) data . removeNodeCache ( setting , parentNode [ childKey ] [ i ] ) ; if ( data . removeSelectedNode ( setting ) , parentNode [ childKey ] = [ ] , isRoot ) this . setting . treeObj . empty ( ) ; else { var ulObj = $$ ( parentNode , consts . id . UL , setting ) ; ulObj . empty ( ) } } view . asyncNode ( this . setting , isRoot ? null : parentNode , ! ! isSilent ) } } , refresh : function ( ) { this . setting . treeObj . empty ( ) ; var root = data . getRoot ( setting ) , nodes = root [ setting . data . key . children ] ; data . initRoot ( setting ) , root [ setting . data . key . children ] = nodes , data . initCache ( setting ) , view . createNodes ( setting , 0 , root [ setting . data . key . children ] ) } , removeChildNodes : function ( node ) { if ( ! node ) return null ; var childKey = setting . data . key . children , nodes = node [ childKey ] ; return view . removeChildNodes ( setting , node ) , nodes ? nodes : null } , removeNode :
logic : { dynamic : ! 1 } , id : "" , pId : "" , open : ! 1 , height : 24 } ) } , _init : function ( ) { var self = this , o = this . options ; BI . ArrowNode . superclass . _init . apply ( this , arguments ) , this . checkbox = BI . createWidget ( { type : "bi.arrow_group_node_checkbox" } ) , this . text = BI . createWidget ( { type : "bi.label" , textAlign : "left" , whiteSpace : "nowrap" , textHeight : o . height , height : o . height , hgap : o . hgap , text : o . text , value : o . value , py : o . py } ) , this . checkbox . on ( BI . Controller . EVENT _CHANGE , function ( type ) { type === BI . Events . CLICK && self . setSelected ( self . isSelected ( ) ) , self . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) ; var type = BI . LogicFactory . createLogicTypeByDirection ( BI . Direction . Left ) , items = BI . LogicFactory . createLogicItemsByDirection ( BI . Direction . Left , { width : 16 , el : this . checkbox } , this . text ) ; BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( type , BI . extend ( o . logic , { items : items } ) ) ) ) } , doRedMark : function ( ) { this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } , doClick : function ( ) { BI . ArrowNode . superclass . doClick . apply ( this , arguments ) , this . checkbox . setSelected ( this . isOpened ( ) ) } , setText : function ( text ) { BI . ArrowNode . superclass . setText . apply ( this , arguments ) , this . text . setText ( text ) } , setOpened : function ( v ) { BI . ArrowNode . superclass . setOpened . apply ( this , arguments ) , this . checkbox . setSelected ( v ) } } ) , BI . shortcut ( "bi.arrow_group_node" , BI . ArrowNode ) , BI . FirstPlusGroupNode = BI . inherit ( BI . NodeButton , { _defaultConfig : function ( ) { var conf = BI . FirstPlusGroupNode . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( conf , { baseCls : ( conf . baseCls || "" ) + " bi-first-plus-group-node bi-list-item" , logic : { dynamic : ! 1 } , id : "" , pId : "" , open : ! 1 , height : 24 } ) } , _init : function ( ) { BI . FirstPlusGroupNode . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options ; this . checkbox = BI . createWidget ( { type : "bi.first_tree_node_checkbox" , stopPropagation : ! 0 } ) , this . text = BI . createWidget ( { type : "bi.label" , textAlign : "left" , whiteSpace : "nowrap" , textHeight : o . height , height : o . height , hgap : o . hgap , text : o . text , value : o . value , py : o . py , keyword : o . keyword } ) , this . checkbox . on ( BI . Controller . EVENT _CHANGE , function ( type ) { type === BI . Events . CLICK && ( this . isSelected ( ) ? self . triggerExpand ( ) : self . triggerCollapse ( ) ) } ) ; var type = BI . LogicFactory . createLogicTypeByDirection ( BI . Direction . Left ) , items = BI . LogicFactory . createLogicItemsByDirection ( BI . Direction . Left , { width : 24 , el : this . checkbox } , this . text ) ; BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( type , BI . extend ( o . logic , { items : items } ) ) ) ) } , doRedMark : function ( ) { this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } , doClick : function ( ) { BI . FirstPlusGroupNode . superclass . doClick . apply ( this , arguments ) , this . checkbox . setSelected ( this . isSelected ( ) ) } , setOpened : function ( v ) { BI . FirstPlusGroupNode . superclass . setOpened . apply ( this , arguments ) , BI . isNotNull ( this . checkbox ) && this . checkbox . setSelected ( v ) } } ) , BI . shortcut ( "bi.first_plus_group_node" , BI . FirstPlusGroupNode ) , BI . IconArrowNode = BI . inherit ( BI . NodeButton , { _defaultConfig : function ( ) { var conf = BI . IconArrowNode . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( conf , { baseCls : ( conf . baseCls || "" ) + " bi-icon-arrow-node bi-list-item" , logic : { dynamic : ! 1 } , id : "" , pId : "" , open : ! 1 , height : 24 , iconHeight : 12 , iconWidth : 12 , iconCls : "" } ) } , _init : function ( ) { BI . IconArrowNode . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options ; this . checkbox = BI . createWidget ( { type : "bi.arrow_group_node_checkbox" , width : 24 , stopPropagation : ! 0 } ) ; var icon = BI . createWidget ( { type : "bi.icon_label" , width : 24 , cls : o . iconCls , iconWidth : o . iconWidth , iconHeight : o . iconHeight } ) ; this . text = BI . createWidget ( { type : "bi.label" , textAlign : "left" , whiteSpace : "nowrap" , textHeight : o . height , height : o . height , hgap : o . hgap , text : o . text , value : o . value , py : o . py } ) , this . checkbox . on ( BI . Controller . EVENT _CHANGE , function ( type ) { type === BI . Events . CLICK && ( this . isSelected ( ) ? self . triggerExpand ( ) : self . triggerCollapse ( ) ) } ) ; var type = BI . LogicFactory . createLogicTypeByDirection ( BI . Direction . Left ) , items = BI . LogicFactory . createLogicItemsByDirection ( BI . Direction . Left , { width : 16 , el : this . checkbox } , { width : 16 , el : icon } , this . text ) ;
BI . LastTreeNodeCheckbox . superclass . setSelected . apply ( this , arguments ) , v === ! 0 ? this . element . addClass ( "tree-expand-icon-type4" ) : this . element . removeClass ( "tree-expand-icon-type4" ) } } ) , BI . shortcut ( "bi.last_tree_node_checkbox" , BI . LastTreeNodeCheckbox ) , BI . MidTreeNodeCheckbox = BI . inherit ( BI . IconButton , { _defaultConfig : function ( ) { return BI . extend ( BI . MidTreeNodeCheckbox . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "tree-collapse-icon-type3" , iconWidth : 24 , iconHeight : 24 } ) } , setSelected : function ( v ) { BI . MidTreeNodeCheckbox . superclass . setSelected . apply ( this , arguments ) , v === ! 0 ? this . element . addClass ( "tree-expand-icon-type3" ) : this . element . removeClass ( "tree-expand-icon-type3" ) } } ) , BI . shortcut ( "bi.mid_tree_node_checkbox" , BI . MidTreeNodeCheckbox ) , BI . TreeNodeCheckbox = BI . inherit ( BI . IconButton , { _defaultConfig : function ( ) { return BI . extend ( BI . TreeNodeCheckbox . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "tree-collapse-icon-type1" , iconWidth : 24 , iconHeight : 24 } ) } , setSelected : function ( v ) { BI . TreeNodeCheckbox . superclass . setSelected . apply ( this , arguments ) , v ? this . element . addClass ( "tree-expand-icon-type1" ) : this . element . removeClass ( "tree-expand-icon-type1" ) } } ) , BI . shortcut ( "bi.tree_node_checkbox" , BI . TreeNodeCheckbox ) , BI . CustomColorChooser = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . CustomColorChooser . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-custom-color-chooser" , width : 227 , height : 245 } ) } , _init : function ( ) { BI . CustomColorChooser . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options ; this . editor = BI . createWidget ( o . editor , { type : "bi.simple_color_picker_editor" } ) , this . editor . on ( BI . ColorPickerEditor . EVENT _CHANGE , function ( ) { self . setValue ( this . getValue ( ) ) } ) , this . farbtastic = BI . createWidget ( { type : "bi.farbtastic" } ) , this . farbtastic . on ( BI . Farbtastic . EVENT _CHANGE , function ( ) { self . setValue ( this . getValue ( ) ) } ) , BI . createWidget ( { type : "bi.vtape" , element : this , items : [ { type : "bi.absolute" , items : [ { el : this . editor , left : 0 , top : 0 , right : 0 } ] , height : 30 } , { type : "bi.absolute" , items : [ { el : this . farbtastic , left : 15 , right : 15 , top : 7 } ] , height : 215 } ] } ) } , setValue : function ( color ) { this . editor . setValue ( color ) , this . farbtastic . setValue ( color ) } , getValue : function ( ) { return this . editor . getValue ( ) } } ) , BI . CustomColorChooser . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.custom_color_chooser" , BI . CustomColorChooser ) , BI . ColorChooser = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . ColorChooser . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-color-chooser" , value : "" , height : 24 } ) } , _init : function ( ) { BI . ColorChooser . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options ; this . combo = BI . createWidget ( { type : "bi.combo" , element : this , container : o . container , adjustLength : 1 , isNeedAdjustWidth : ! 1 , isNeedAdjustHeight : ! 1 , el : BI . extend ( { type : o . width <= 24 ? "bi.color_chooser_trigger" : "bi.long_color_chooser_trigger" , ref : function ( _ref ) { self . trigger = _ref } , width : o . width - 2 , height : o . height - 2 } , o . el ) , popup : { el : BI . extend ( { type : "bi.color_chooser_popup" , ref : function ( _ref ) { self . colorPicker = _ref } , listeners : [ { eventName : BI . ColorChooserPopup . EVENT _VALUE _CHANGE , action : function ( ) { fn ( ) , self . _isRGBColor ( self . colorPicker . getValue ( ) ) || self . combo . hideView ( ) } } , { eventName : BI . ColorChooserPopup . EVENT _CHANGE , action : function ( ) { fn ( ) , self . combo . hideView ( ) } } ] } , o . popup ) , width : 230 } , value : o . value } ) ; var fn = function ( ) { var color = self . colorPicker . getValue ( ) ; self . trigger . setValue ( color ) } ; this . combo . on ( BI . Combo . EVENT _AFTER _HIDEVIEW , function ( ) { self . fireEvent ( BI . ColorChooser . EVENT _CHANGE , arguments ) } ) } , _isRGBColor : function ( color ) { return BI . isNotEmptyString ( color ) && "transparent" !== color } , isViewVisible : function ( ) { return this . combo . isViewVisible ( ) } , hideView : function ( ) { this . combo . hideView ( ) } , showView : function ( ) { this . combo . showView ( ) } , setValue : function ( color ) { this . combo . setValue ( color ) } , getValue : function ( ) { return this . combo . getValue ( ) } } ) , BI . ColorChooser . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.color_chooser" , BI . ColorChooser ) , BI . ColorChooserPopup = BI . inherit ( BI . Widget , { props : { baseCls : "bi-color-chooser-popup" , width : 230 , height : 145 , simple : ! 1 } , render : function ( ) { var self = this , o = this . options ; this
this . triangle && this . triangle . destroy ( ) , this . triangle = null } , hideView : function ( ) { this . _hideTriangle ( ) , this . combo && this . combo . hideView ( ) } , showView : function ( ) { this . combo && this . combo . showView ( ) } , isViewVisible : function ( ) { return this . combo . isViewVisible ( ) } } ) , BI . BubbleCombo . EVENT _TRIGGER _CHANGE = "EVENT_TRIGGER_CHANGE" , BI . BubbleCombo . EVENT _CHANGE = "EVENT_CHANGE" , BI . BubbleCombo . EVENT _EXPAND = "EVENT_EXPAND" , BI . BubbleCombo . EVENT _COLLAPSE = "EVENT_COLLAPSE" , BI . BubbleCombo . EVENT _AFTER _INIT = "EVENT_AFTER_INIT" , BI . BubbleCombo . EVENT _BEFORE _POPUPVIEW = "EVENT_BEFORE_POPUPVIEW" , BI . BubbleCombo . EVENT _AFTER _POPUPVIEW = "EVENT_AFTER_POPUPVIEW" , BI . BubbleCombo . EVENT _BEFORE _HIDEVIEW = "EVENT_BEFORE_HIDEVIEW" , BI . BubbleCombo . EVENT _AFTER _HIDEVIEW = "EVENT_AFTER_HIDEVIEW" , BI . shortcut ( "bi.bubble_combo" , BI . BubbleCombo ) , BI . BubblePopupView = BI . inherit ( BI . PopupView , { _defaultConfig : function ( ) { var config = BI . BubblePopupView . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( config , { baseCls : config . baseCls + " bi-bubble-popup-view" , minWidth : 220 , maxWidth : 300 , minHeight : 90 } ) } , _init : function ( ) { BI . BubblePopupView . superclass . _init . apply ( this , arguments ) } } ) , BI . shortcut ( "bi.bubble_popup_view" , BI . BubblePopupView ) , BI . BubblePopupBarView = BI . inherit ( BI . BubblePopupView , { _defaultConfig : function ( ) { return BI . extend ( BI . BubblePopupBarView . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "bi-bubble-bar-popup-view" , buttons : [ { value : ! 1 , text : BI . i18nText ( "BI-Basic_Cancel" ) , ghost : ! 0 } , { text : BI . i18nText ( BI . i18nText ( "BI-Basic_Sure" ) ) , value : ! 0 } ] } ) } , _init : function ( ) { BI . BubblePopupBarView . superclass . _init . apply ( this , arguments ) } , _createToolBar : function ( ) { var o = this . options , self = this , items = [ ] ; return BI . each ( o . buttons , function ( i , buttonOpt ) { BI . isWidget ( buttonOpt ) ? items . push ( buttonOpt ) : items . push ( BI . extend ( { type : "bi.button" , height : 24 , handler : function ( v ) { self . fireEvent ( BI . BubblePopupBarView . EVENT _CLICK _TOOLBAR _BUTTON , v ) } } , buttonOpt ) ) } ) , BI . createWidget ( { type : "bi.center" , height : 44 , rgap : 15 , items : [ { type : "bi.right_vertical_adapt" , lgap : 10 , items : items } ] } ) } , _createView : function ( ) { var o = this . options , button = BI . createWidget ( { type : "bi.button_group" , items : [ o . el ] , layouts : [ { type : "bi.vertical" , cls : "bar-popup-container" , hgap : 15 , tgap : 10 } ] } ) ; return button . element . css ( "min-height" , o . minHeight - 44 ) , button } } ) , BI . BubblePopupBarView . EVENT _CLICK _TOOLBAR _BUTTON = "EVENT_CLICK_TOOLBAR_BUTTON" , BI . shortcut ( "bi.bubble_bar_popup_view" , BI . BubblePopupBarView ) , BI . TextBubblePopupBarView = BI . inherit ( BI . Widget , { props : function ( ) { return { baseCls : "bi-text-bubble-bar-popup-view" , text : "" , buttons : [ { level : "ignore" , value : ! 1 , stopPropagation : ! 0 , text : BI . i18nText ( "BI-Basic_Cancel" ) } , { value : ! 0 , stopPropagation : ! 0 , text : BI . i18nText ( "BI-Basic_Sure" ) } ] } } , render : function ( ) { var self = this , o = this . options , buttons = BI . map ( o . buttons , function ( index , buttonOpt ) { return BI . isWidget ( buttonOpt ) ? buttonOpt : BI . extend ( { type : "bi.button" , height : 24 , handler : function ( v ) { self . fireEvent ( BI . TextBubblePopupBarView . EVENT _CHANGE , v ) } } , buttonOpt ) } ) ; return { type : "bi.bubble_bar_popup_view" , minWidth : o . minWidth , maxWidth : o . maxWidth , minHeight : o . minHeight , ref : function ( ) { self . popup = this } , el : { type : "bi.label" , text : o . text , whiteSpace : "normal" , textAlign : "left" , ref : function ( ) { self . text = this } } , buttons : buttons } } , populate : function ( v ) { this . text . setText ( v || this . options . text ) } } ) , BI . TextBubblePopupBarView . EVENT _CHANGE = "EVENT_CLICK_TOOLBAR_BUTTON" , BI . shortcut ( "bi.text_bubble_bar_popup_view" , BI . TextBubblePopupBarView ) , BI . EditorIconCheckCombo = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . EditorIconCheckCombo . superclass . _defaultConfig . apply ( this , arguments ) , { baseClass : "bi-check-editor-combo" , width : 100 , height : 24 , chooseType : BI . ButtonGroup . CHOOSE _TYPE _SINGLE , validationChecker : BI . emptyFn , quitChecker : BI . emptyFn , allowBlank : ! 0 , watermark : "" , errorText : "" } ) } , _init : function ( ) { BI . EditorIconCheckCombo . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options ; this . trigger = BI . createWidget ( { type : "bi.editor_trigger" , items : o . items , height : o . height , validationChecker : o . validationChecker , quitChecker : o . quitChecker , allowBlank : o . allowBlank , watermark : o . watermark , errorText : o . errorText , value : o . value } ) , th
return BI . extend ( conf , { baseCls : ( conf . baseCls || "" ) + " bi-shelter-editor" , hgap : 4 , vgap : 2 , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 , validationChecker : BI . emptyFn , quitChecker : BI . emptyFn , allowBlank : ! 0 , watermark : "" , errorText : "" , height : 24 , textAlign : "left" } ) } , _init : function ( ) { BI . ShelterEditor . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options ; this . editor = BI . createWidget ( { type : "bi.editor" , height : o . height , hgap : o . hgap , vgap : o . vgap , lgap : o . lgap , rgap : o . rgap , tgap : o . tgap , bgap : o . bgap , value : o . value , validationChecker : o . validationChecker , quitChecker : o . quitChecker , allowBlank : o . allowBlank , watermark : o . watermark , errorText : o . errorText } ) , this . text = BI . createWidget ( { type : "bi.text_button" , cls : "shelter-editor-text" , title : o . title , warningTitle : o . warningTitle , tipType : o . tipType , textAlign : o . textAlign , height : o . height , hgap : o . hgap } ) , BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : this . text , left : 0 , right : 0 , top : 0 , bottom : 0 } ] } ) , this . text . on ( BI . Controller . EVENT _CHANGE , function ( ) { arguments [ 2 ] = self , self . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . text . on ( BI . TextButton . EVENT _CHANGE , function ( ) { self . fireEvent ( BI . ShelterEditor . EVENT _CLICK _LABEL ) } ) , this . editor . on ( BI . Controller . EVENT _CHANGE , function ( ) { self . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _FOCUS , function ( ) { self . fireEvent ( BI . ShelterEditor . EVENT _FOCUS , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _BLUR , function ( ) { self . fireEvent ( BI . ShelterEditor . EVENT _BLUR , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _CLICK , function ( ) { self . fireEvent ( BI . ShelterEditor . EVENT _CLICK , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _CHANGE , function ( ) { self . fireEvent ( BI . ShelterEditor . EVENT _CHANGE , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _KEY _DOWN , function ( v ) { self . fireEvent ( BI . ShelterEditor . EVENT _KEY _DOWN , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _VALID , function ( ) { self . fireEvent ( BI . ShelterEditor . EVENT _VALID , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _CONFIRM , function ( ) { self . _showHint ( ) , self . _checkText ( ) , self . fireEvent ( BI . ShelterEditor . EVENT _CONFIRM , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _CHANGE _CONFIRM , function ( ) { self . _showHint ( ) , self . _checkText ( ) , self . fireEvent ( BI . ShelterEditor . EVENT _CHANGE _CONFIRM , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _START , function ( ) { self . fireEvent ( BI . ShelterEditor . EVENT _START , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _PAUSE , function ( ) { self . fireEvent ( BI . ShelterEditor . EVENT _PAUSE , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _STOP , function ( ) { self . fireEvent ( BI . ShelterEditor . EVENT _STOP , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _SPACE , function ( ) { self . fireEvent ( BI . ShelterEditor . EVENT _SPACE , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _ERROR , function ( ) { self . _checkText ( ) , self . fireEvent ( BI . ShelterEditor . EVENT _ERROR , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _ENTER , function ( ) { self . fireEvent ( BI . ShelterEditor . EVENT _ENTER , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _RESTRICT , function ( ) { self . fireEvent ( BI . ShelterEditor . EVENT _RESTRICT , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _EMPTY , function ( ) { self . fireEvent ( BI . ShelterEditor . EVENT _EMPTY , arguments ) } ) , BI . createWidget ( { type : "bi.vertical" , scrolly : ! 1 , element : this , items : [ this . editor ] } ) , this . _showHint ( ) , self . _checkText ( ) } , _checkText : function ( ) { var o = this . options ; "" === this . editor . getValue ( ) ? ( this . text . setValue ( o . watermark || "" ) , this . text . element . addClass ( "bi-water-mark" ) ) : ( this . text . setValue ( this . editor . getValue ( ) ) , this . text . element . removeClass ( "bi-water-mark" ) ) , BI . isKey ( o . keyword ) && this . text . doRedMark ( o . keyword ) } , _showInput : function ( ) { this . editor . visible ( ) , this . text . invisible ( ) } , _showHint : function ( ) { this . editor . invisible ( ) , this . text . visible ( ) } , setWaterMark : function ( v ) { this . options . watermark = v , this . editor . setWaterMark ( v ) } , setTitle : function ( title ) { this . text . setTitle ( title ) } , setWarningTitle : function ( title ) { this . text . setWarningTitle ( title ) } , focus : function ( ) { this . _showInput ( ) , this . editor . focus ( ) } , blur : function ( ) { this . editor . blur ( ) , this . _showHint ( ) , this . _checkText ( ) } , doRedMark : function ( ) { "" === this . editor . getValue ( ) && BI . isKey ( this . options . watermark ) || this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . appl
} , setText : function ( text ) { this . text . setText ( text ) } } ) , BI . shortcut ( "bi.linear_segment_button" , BI . LinearSegmentButton ) , BI . LinearSegment = BI . inherit ( BI . Widget , { props : { baseCls : "bi-linear-segment bi-split-bottom" , items : [ ] , height : 29 } , render : function ( ) { var self = this , o = this . options ; return { type : "bi.button_group" , items : BI . createItems ( o . items , { type : "bi.linear_segment_button" , height : o . height - 1 } ) , layout : [ { type : "bi.center" } ] , listeners : [ { eventName : "__EVENT_CHANGE__" , action : function ( ) { self . fireEvent ( "__EVENT_CHANGE__" , arguments ) } } , { eventName : "EVENT_CHANGE" , action : function ( ) { self . fireEvent ( "EVENT_CHANGE" ) } } ] , ref : function ( ) { self . buttonGroup = this } } } , setValue : function ( v ) { this . buttonGroup . setValue ( v ) } , setEnabledValue : function ( v ) { this . buttonGroup . setEnabledValue ( v ) } , getValue : function ( ) { return this . buttonGroup . getValue ( ) } } ) , BI . shortcut ( "bi.linear_segment" , BI . LinearSegment ) , BI . SelectList = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . SelectList . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-select-list" , direction : BI . Direction . Top , logic : { dynamic : ! 0 } , items : [ ] , itemsCreator : BI . emptyFn , hasNext : BI . emptyFn , onLoaded : BI . emptyFn , toolbar : { type : "bi.multi_select_bar" , iconWrapperWidth : 36 } , el : { type : "bi.list_pane" } } ) } , _init : function ( ) { BI . SelectList . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options ; this . toolbar = BI . createWidget ( o . toolbar ) , this . allSelected = ! 1 , this . toolbar . on ( BI . Controller . EVENT _CHANGE , function ( type , value , obj ) { self . allSelected = this . isSelected ( ) , type === BI . Events . CLICK && ( self . setAllSelected ( self . allSelected ) , self . fireEvent ( BI . SelectList . EVENT _CHANGE , value , obj ) ) , self . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . list = BI . createWidget ( o . el , { type : "bi.list_pane" , items : o . items , itemsCreator : function ( op , callback ) { 1 === op . times && self . toolbar . setVisible ( ! 1 ) , o . itemsCreator ( op , function ( items ) { callback . apply ( self , arguments ) , 1 === op . times && ( self . toolbar . setVisible ( items && items . length > 0 ) , self . toolbar . setEnable ( self . isEnabled ( ) && items && items . length > 0 ) ) , self . _checkAllSelected ( ) } ) } , onLoaded : o . onLoaded , hasNext : o . hasNext } ) , this . list . on ( BI . Controller . EVENT _CHANGE , function ( type , value , obj ) { type === BI . Events . CLICK && ( self . _checkAllSelected ( ) , self . fireEvent ( BI . SelectList . EVENT _CHANGE , value , obj ) ) , self . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( BI . LogicFactory . createLogicTypeByDirection ( o . direction ) , BI . extend ( { scrolly : ! 0 } , o . logic , { items : BI . LogicFactory . createLogicItemsByDirection ( o . direction , this . toolbar , this . list ) } ) ) ) ) , o . items . length <= 0 && ( this . toolbar . setVisible ( ! 1 ) , this . toolbar . setEnable ( ! 1 ) ) , BI . isNotNull ( o . value ) && this . setValue ( o . value ) } , _checkAllSelected : function ( ) { var selectLength = this . list . getValue ( ) . length , notSelectLength = this . getAllLeaves ( ) . length - selectLength , hasNext = this . list . hasNext ( ) , isAlreadyAllSelected = this . toolbar . isSelected ( ) , isHalf = selectLength > 0 && ( notSelectLength > 0 || ! isAlreadyAllSelected && hasNext ) ; isHalf = isHalf || notSelectLength > 0 && hasNext && isAlreadyAllSelected , this . toolbar . setHalfSelected ( isHalf ) , ! isHalf && this . toolbar . setSelected ( selectLength > 0 && notSelectLength <= 0 && ( ! hasNext || isAlreadyAllSelected ) ) } , setAllSelected : function ( v ) { BI . each ( this . getAllButtons ( ) , function ( i , btn ) { ( btn . setSelected || btn . setAllSelected ) . apply ( btn , [ v ] ) } ) , this . allSelected = ! ! v , this . toolbar . setSelected ( v ) , this . toolbar . setHalfSelected ( ! 1 ) } , setToolBarVisible : function ( b ) { this . toolbar . setVisible ( b ) } , isAllSelected : function ( ) { return this . allSelected } , hasPrev : function ( ) { return this . list . hasPrev ( ) } , hasNext : function ( ) { return this . list . hasNext ( ) } , prependItems : function ( items ) { this . list . prependItems . apply ( this . list , arguments ) } , addItems : function ( items ) { this . list . addItems . apply ( this . list , arguments ) } , setValue : function ( data ) { var selectAll = data . type === BI . ButtonGroup . CHOOSE _TYPE _ALL ; this . setAllSelected ( selectAll ) , this . list [ selectAll ? "setNotSelectedValue" : "setValue" ] ( data . value ) , this . _checkAllSelected ( ) } , getValue : function ( ) { return this . isAllSelected ( ) === ! 1 ? { type : BI . ButtonGroup . CHOOSE _TYPE _MULTI , value : this . list . getValue ( ) , assist : this . list . getNotSelectedValue ( ) } : { type : BI . ButtonGroup
BI . shortcut ( "bi.multi_select_bar" , BI . MultiSelectBar ) , BI . LevelTree = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . LevelTree . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-level-tree" , el : { chooseType : 0 } , expander : { } , items : [ ] , value : "" } ) } , _init : function ( ) { BI . LevelTree . superclass . _init . apply ( this , arguments ) , this . initTree ( this . options . items ) } , _formatItems : function ( nodes , layer , pNode ) { var self = this ; return BI . each ( nodes , function ( i , node ) { var extend = { layer : layer } ; BI . isKey ( node . id ) || ( node . id = BI . UUID ( ) ) , extend . pNode = pNode , node . isParent === ! 0 || node . parent === ! 0 || BI . isNotEmptyArray ( node . children ) ? ( extend . type = "bi.mid_plus_group_node" , i === nodes . length - 1 && ( extend . type = "bi.last_plus_group_node" , extend . isLastNode = ! 0 ) , 0 !== i || pNode || ( extend . type = "bi.first_plus_group_node" ) , 0 === i && i === nodes . length - 1 && ( extend . type = "bi.plus_group_node" ) , BI . defaults ( node , extend ) , self . _formatItems ( node . children , layer + 1 , node ) ) : ( extend . type = "bi.mid_tree_leaf_item" , 0 !== i || pNode || ( extend . type = "bi.first_tree_leaf_item" ) , i === nodes . length - 1 && ( extend . type = "bi.last_tree_leaf_item" ) , BI . defaults ( node , extend ) ) } ) , nodes } , _assertId : function ( sNodes ) { BI . each ( sNodes , function ( i , node ) { BI . isKey ( node . id ) || ( node . id = BI . UUID ( ) ) } ) } , initTree : function ( nodes ) { var self = this , o = this . options ; this . empty ( ) , this . _assertId ( nodes ) , this . tree = BI . createWidget ( { type : "bi.custom_tree" , element : this , expander : BI . extend ( { el : { } , popup : { type : "bi.custom_tree" } } , o . expander ) , items : this . _formatItems ( BI . Tree . transformToTreeFormat ( nodes ) , 0 ) , value : o . value , el : BI . extend ( { type : "bi.button_tree" , chooseType : 0 , layouts : [ { type : "bi.vertical" } ] } , o . el ) } ) , this . tree . on ( BI . Controller . EVENT _CHANGE , function ( type , value , ob ) { self . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) , type === BI . Events . CLICK && self . fireEvent ( BI . LevelTree . EVENT _CHANGE , value , ob ) } ) } , stroke : function ( nodes ) { this . tree . stroke . apply ( this . tree , arguments ) } , populate : function ( items , keyword ) { items = this . _formatItems ( BI . Tree . transformToTreeFormat ( items ) , 0 ) , this . tree . populate ( items , keyword ) } , setValue : function ( v ) { this . tree . setValue ( v ) } , getValue : function ( ) { return this . tree . getValue ( ) } , getAllLeaves : function ( ) { return this . tree . getAllLeaves ( ) } , getNodeById : function ( id ) { return this . tree . getNodeById ( id ) } , getNodeByValue : function ( id ) { return this . tree . getNodeByValue ( id ) } } ) , BI . LevelTree . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.level_tree" , BI . LevelTree ) , BI . DisplayTree = BI . inherit ( BI . TreeView , { _defaultConfig : function ( ) { return BI . extend ( BI . DisplayTree . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "bi-display-tree" } ) } , _init : function ( ) { BI . DisplayTree . superclass . _init . apply ( this , arguments ) } , _configSetting : function ( ) { function beforeCollapse ( treeId , treeNode ) { return ! 1 } var setting = { view : { selectedMulti : ! 1 , dblClickExpand : ! 1 , showIcon : ! 1 , nameIsHTML : ! 0 , showTitle : ! 1 } , data : { key : { title : "title" , name : "text" } , simpleData : { enable : ! 0 } } , callback : { beforeCollapse : beforeCollapse } } ; return setting } , _dealWidthNodes : function ( nodes ) { nodes = BI . DisplayTree . superclass . _dealWidthNodes . apply ( this , arguments ) ; var self = this , o = this . options ; return BI . each ( nodes , function ( i , node ) { node . isParent = node . isParent || node . parent , null == node . text && node . count > 0 && ( node . text = node . value + "(" + BI . i18nText ( "BI-Basic_Altogether" ) + node . count + BI . i18nText ( "BI-Basic_Count" ) + ")" ) } ) , nodes } , initTree : function ( nodes , setting ) { var setting = setting || this . _configSetting ( ) ; this . nodes = BI . $ . fn . zTree . init ( this . tree . element , setting , nodes ) } , destroy : function ( ) { BI . DisplayTree . superclass . destroy . apply ( this , arguments ) } } ) , BI . DisplayTree . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.display_tree" , BI . DisplayTree ) , BI . ListDisplayTree = BI . inherit ( BI . ListTreeView , { _defaultConfig : function ( ) { return BI . extend ( BI . ListDisplayTree . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "bi-list-display-tree" } ) } , _init : function ( ) { BI . ListDisplayTree . superclass . _init . apply ( this , arguments ) } , _configSetting : function ( ) { function beforeCollapse ( treeId , treeNode ) { return ! 1 } function getFont ( treeId , node ) { return node . isLeaf ? { } : { color : "#999999" } } var setting = { view : { selectedMulti : ! 1 , dblClickExpand : ! 1 , showIcon : ! 1 , nameIsHTML : ! 0 , showTitle : ! 1 , fontCss : getFont } , data : { key : { ti
var o = this . options , c = this . _const ; this . text = BI . createWidget ( { type : "bi.label" , cls : "list-item-text" , textAlign : "right" , text : o . text , value : o . value , height : c . height } ) , BI . createWidget ( { type : "bi.vertical_adapt" , element : this , items : [ { el : this . text , rgap : 5 } , { type : "bi.icon_label" , width : 16 } ] } ) } , setValue : function ( v ) { this . text . setValue ( v ) } , getValue : function ( ) { return this . text . getValue ( ) } , setText : function ( v ) { this . text . setText ( v ) } , getText : function ( ) { return this . item . getText ( ) } , getKey : function ( ) { } } ) , BI . shortcut ( "bi.date_triangle_trigger" , BI . DateTriangleTrigger ) , BI . StaticDatePaneCard = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { var conf = BI . StaticDatePaneCard . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( conf , { baseCls : "bi-date-pane" , min : "1900-01-01" , max : "2099-12-31" , selectedTime : null } ) } , _init : function ( ) { BI . StaticDatePaneCard . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options ; this . today = BI . getDate ( ) , this . _year = this . today . getFullYear ( ) , this . _month = this . today . getMonth ( ) + 1 , this . selectedTime = o . selectedTime || { year : this . _year , month : this . _month } , this . datePicker = BI . createWidget ( { type : "bi.date_picker" , behaviors : o . behaviors , min : o . min , max : o . max } ) , this . datePicker . on ( BI . DatePicker . EVENT _CHANGE , function ( ) { var value = self . datePicker . getValue ( ) , monthDay = BI . getMonthDays ( BI . getDate ( value . year , value . month - 1 , 1 ) ) , day = self . selectedTime . day || 0 ; day > monthDay && ( day = monthDay ) , self . selectedTime = { year : value . year , month : value . month } , 0 !== day && ( self . selectedTime . day = day ) , self . calendar . setSelect ( BI . Calendar . getPageByDateJSON ( self . selectedTime ) ) , self . calendar . setValue ( self . selectedTime ) , 0 !== day && self . fireEvent ( BI . DateCalendarPopup . EVENT _CHANGE ) } ) , this . calendar = BI . createWidget ( { direction : "custom" , type : "bi.navigation" , tab : this . datePicker , cardCreator : BI . bind ( this . _createNav , this ) } ) , this . calendar . on ( BI . Navigation . EVENT _CHANGE , function ( ) { self . selectedTime = self . calendar . getValue ( ) , self . calendar . empty ( ) , self . setValue ( self . selectedTime ) , self . fireEvent ( BI . DateCalendarPopup . EVENT _CHANGE ) } ) , this . setValue ( o . selectedTime ) , BI . createWidget ( { type : "bi.vtape" , element : this , items : [ { el : this . datePicker , height : 40 } , this . calendar ] , hgap : 10 } ) , BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : { type : "bi.layout" , cls : "bi-split-top" } , height : 1 , top : 40 , left : 0 , right : 0 } ] } ) } , _createNav : function ( v ) { var date = BI . Calendar . getDateJSONByPage ( v ) , calendar = BI . createWidget ( { type : "bi.calendar" , logic : { dynamic : ! 1 } , min : this . options . min , max : this . options . max , year : date . year , month : date . month , day : this . selectedTime . day } ) ; return calendar } , _getNewCurrentDate : function ( ) { var today = BI . getDate ( ) ; return { year : today . getFullYear ( ) , month : today . getMonth ( ) + 1 } } , _setCalenderValue : function ( date ) { this . calendar . setSelect ( BI . Calendar . getPageByDateJSON ( date ) ) , this . calendar . setValue ( date ) , this . selectedTime = date } , _setDatePicker : function ( timeOb ) { BI . isNull ( timeOb ) || BI . isNull ( timeOb . year ) || BI . isNull ( timeOb . month ) ? this . datePicker . setValue ( this . _getNewCurrentDate ( ) ) : this . datePicker . setValue ( timeOb ) } , _setCalendar : function ( timeOb ) { BI . isNull ( timeOb ) || BI . isNull ( timeOb . day ) ? ( this . calendar . empty ( ) , this . _setCalenderValue ( this . _getNewCurrentDate ( ) ) ) : this . _setCalenderValue ( timeOb ) } , setValue : function ( timeOb ) { this . _setDatePicker ( timeOb ) , this . _setCalendar ( timeOb ) } , getValue : function ( ) { return this . selectedTime } } ) , BI . shortcut ( "bi.static_date_pane_card" , BI . StaticDatePaneCard ) , BI . DynamicDatePane = BI . inherit ( BI . Widget , { props : { baseCls : "bi-dynamic-date-pane" } , render : function ( ) { var self = this , o = this . options ; return { type : "bi.vtape" , items : [ { el : { type : "bi.linear_segment" , cls : "bi-split-bottom" , height : 30 , items : BI . createItems ( [ { text : BI . i18nText ( "BI-Multi_Date_YMD" ) , value : BI . DynamicDatePane . Static } , { text : BI . i18nText ( "BI-Basic_Dynamic_Title" ) , value : BI . DynamicDatePane . Dynamic } ] , { textAlign : "center" } ) , listeners : [ { eventName : BI . ButtonGroup . EVENT _CHANGE , action : function ( ) { var value = this . getValue ( ) [ 0 ] ; switch ( self . dateTab . setSelect ( value ) , value ) { case BI . DynamicDatePane . Static : var date = BI . DynamicDateHelper . getCalculation ( self . dynamicPane . getValue ( ) ) ; self . ymd . setValue ( { year : date . getFullYear ( ) , month : date . getMonth ( ) + 1 , day : date . getDate ( ) } ) ; break ; case BI . Dynamic
items : BI . createItems ( [ { text : BI . i18nText ( "BI-Basic_Year" ) , value : BI . DynamicDateCard . TYPE . YEAR } , { text : BI . i18nText ( "BI-Basic_Single_Quarter" ) , value : BI . DynamicDateCard . TYPE . QUARTER } , { text : BI . i18nText ( "BI-Basic_Month" ) , value : BI . DynamicDateCard . TYPE . MONTH } , { text : BI . i18nText ( "BI-Basic_Week" ) , value : BI . DynamicDateCard . TYPE . WEEK } , { text : BI . i18nText ( "BI-Basic_Day" ) , value : BI . DynamicDateCard . TYPE . DAY } ] , { type : "bi.multi_select_item" , logic : { dynamic : ! 0 } } ) , layouts : [ { type : "bi.left" , rgap : 4 } ] , listeners : [ { eventName : BI . ButtonGroup . EVENT _CHANGE , action : function ( ) { var value = self . checkgroup . getValue ( ) ; 0 !== value . length && self . workDayBox . setSelected ( ! 1 ) ; var plainValue = { } ; BI . each ( self . resultPane . getAllButtons ( ) , function ( idx , button ) { var value = button . getValue ( ) ; BI . isNotNull ( value . dateType ) && ( plainValue [ value . dateType ] = { value : value . value , offset : value . offset } ) } ) , self . resultPane . populate ( self . _getParamJson ( BI . map ( self . checkgroup . getValue ( ) , function ( idx , v ) { var obj = { dateType : v } ; return BI . has ( plainValue , v ) && ( obj . value = plainValue [ v ] . value , obj . offset = plainValue [ v ] . offset ) , obj } ) ) ) , self . position = BI . DynamicDateCard . OFFSET . CURRENT , self . fireEvent ( "EVENT_CHANGE" ) } } ] } , { type : "bi.vertical_adapt" , lgap : 2 , items : [ { el : { type : "bi.multi_select_item" , ref : function ( ) { self . workDayBox = this } , logic : { dynamic : ! 0 } , text : BI . i18nText ( "BI-Basic_Work_Day" ) , value : BI . DynamicDateCard . TYPE . WORK _DAY , listeners : [ { eventName : BI . MultiSelectItem . EVENT _CHANGE , action : function ( ) { this . isSelected ( ) && self . checkgroup . setValue ( ) , self . resultPane . populate ( this . isSelected ( ) ? self . _getParamJson ( [ { dateType : BI . DynamicDateCard . TYPE . WORK _DAY } ] ) : [ ] ) , self . position = BI . DynamicDateCard . OFFSET . CURRENT , self . fireEvent ( "EVENT_CHANGE" ) } } ] } } ] , ref : function ( ) { self . workDay = this } } , { type : "bi.button_group" , items : this . _getParamJson ( [ { dateType : BI . DynamicDateCard . TYPE . YEAR } ] ) , ref : function ( ) { self . resultPane = this } , layouts : [ { type : "bi.vertical" , bgap : 10 , hgap : 10 } ] } ] } } , _getParamJson : function ( values , positionValue ) { var self = this , items = BI . map ( values , function ( idx , value ) { return { el : { type : "bi.dynamic_date_param_item" , dateType : value . dateType , value : value . value , offset : value . offset , listeners : [ { eventName : "EVENT_CHANGE" , action : function ( ) { self . fireEvent ( "EVENT_CHANGE" ) } } ] } , tgap : 0 === idx ? 5 : 0 } } ) ; if ( 1 === values . length && values [ 0 ] . dateType === BI . DynamicDateCard . TYPE . DAY ) { var comboItems = this . _getText ( BI . DynamicDateCard . TYPE . MONTH ) ; comboItems [ 0 ] . text = BI . i18nText ( "BI-Basic_Empty" ) , items . push ( { type : "bi.text_value_combo" , height : 24 , items : comboItems , container : null , value : positionValue || BI . DynamicDateCard . OFFSET . CURRENT , listeners : [ { eventName : "EVENT_CHANGE" , action : function ( ) { self . position = this . getValue ( ) [ 0 ] , self . fireEvent ( "EVENT_CHANGE" ) } } ] } ) } else 0 !== values . length && BI . last ( values ) . dateType !== BI . DynamicDateCard . TYPE . DAY && BI . last ( values ) . dateType !== BI . DynamicDateCard . TYPE . WORK _DAY && items . push ( { type : "bi.text_value_combo" , height : 24 , container : null , items : this . _getText ( BI . last ( values ) . dateType ) , value : positionValue || BI . DynamicDateCard . OFFSET . CURRENT , listeners : [ { eventName : "EVENT_CHANGE" , action : function ( ) { self . position = this . getValue ( ) [ 0 ] , self . fireEvent ( "EVENT_CHANGE" ) } } ] } ) ; return items } , _getText : function ( lastValue ) { switch ( lastValue ) { case BI . DynamicDateCard . TYPE . YEAR : return [ { text : BI . i18nText ( "BI-Basic_Current_Day" ) , value : BI . DynamicDateCard . OFFSET . CURRENT } , { text : BI . i18nText ( "BI-Basic_Year_Begin" ) , value : BI . DynamicDateCard . OFFSET . BEGIN } , { text : BI . i18nText ( "BI-Basic_Year_End" ) , value : BI . DynamicDateCard . OFFSET . END } ] ; case BI . DynamicDateCard . TYPE . QUARTER : return [ { text : BI . i18nText ( "BI-Basic_Current_Day" ) , value : BI . DynamicDateCard . OFFSET . CURRENT } , { text : BI . i18nText ( "BI-Basic_Quarter_Begin" ) , value : BI . DynamicDateCard . OFFSET . BEGIN } , { text : BI . i18nText ( "BI-Basic_Quarter_End" ) , value : BI . DynamicDateCard . OFFSET . END } ] ; case BI . DynamicDateCard . TYPE . MONTH : return [ { text : BI . i18nText ( "BI-Basic_Current_Day" ) , value : BI . DynamicDateCard . OFFSET . CURRENT } , { text : BI . i18nText ( "BI-Basic_Month_Begin" ) , value : BI . DynamicDateCard . OFFSET . BEGIN } , { text : BI . i18nText ( "BI-Basic_Month_End" ) , value : BI . DynamicDateCard . OFFSET . END } ] ; case BI . DynamicDateCard . TYPE . WEEK : default : return [ { text : BI . i18nText ( "BI-Basic_Current_Day" ) , value : BI . DynamicDateCard . OF
self . popup . setMinDate ( opts . minDate ) , self . popup . setMaxDate ( opts . maxDate ) , self . fireEvent ( BI . DynamicDateTimeCombo . EVENT _BEFORE _POPUPVIEW ) } } ] , hideChecker : function ( e ) { return 0 === self . triggerBtn . element . find ( e . target ) . length } } , top : 0 , left : 0 , right : 0 , bottom : 0 } , { el : { type : "bi.icon_button" , cls : "bi-trigger-icon-button date-font" , width : opts . height , height : opts . height , listeners : [ { eventName : BI . IconButton . EVENT _CHANGE , action : function ( ) { self . combo . isViewVisible ( ) || self . combo . showView ( ) } } ] , ref : function ( ) { self . triggerBtn = this } } , top : 0 , right : 0 } ] } ] , ref : function ( _ref ) { self . comboWrapper = _ref } } } , mounted : function ( ) { this . _checkDynamicValue ( this . storeValue ) } , _checkDynamicValue : function ( v ) { var o = this . options , type = null ; switch ( BI . isNotNull ( v ) && ( type = v . type ) , type ) { case BI . DynamicDateTimeCombo . Dynamic : this . changeIcon . setVisible ( ! 0 ) , this . comboWrapper . attr ( "items" ) [ 0 ] . width = o . height , this . comboWrapper . resize ( ) ; break ; default : this . comboWrapper . attr ( "items" ) [ 0 ] . width = 0 , this . comboWrapper . resize ( ) , this . changeIcon . setVisible ( ! 1 ) } } , _checkValue : function ( v ) { switch ( v . type ) { case BI . DynamicDateCombo . Dynamic : return BI . isNotEmptyObject ( v . value ) ; case BI . DynamicDateCombo . Static : default : return ! 0 } } , setMinDate : function ( minDate ) { var o = this . options ; o . minDate = minDate , this . trigger . setMinDate ( minDate ) , this . popup && this . popup . setMinDate ( minDate ) } , setMaxDate : function ( maxDate ) { var o = this . options ; o . maxDate = maxDate , this . trigger . setMaxDate ( maxDate ) , this . popup && this . popup . setMaxDate ( maxDate ) } , setValue : function ( v ) { this . storeValue = v , this . trigger . setValue ( v ) , this . _checkDynamicValue ( v ) } , getValue : function ( ) { return this . storeValue } , getKey : function ( ) { return this . trigger . getKey ( ) } , hidePopupView : function ( ) { this . combo . hideView ( ) } , isValid : function ( ) { return this . trigger . isValid ( ) } } ) , BI . DynamicDateTimeCombo . EVENT _KEY _DOWN = "EVENT_KEY_DOWN" , BI . DynamicDateTimeCombo . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . DynamicDateTimeCombo . EVENT _FOCUS = "EVENT_FOCUS" , BI . DynamicDateTimeCombo . EVENT _BLUR = "EVENT_BLUR" , BI . DynamicDateTimeCombo . EVENT _CHANGE = "EVENT_CHANGE" , BI . DynamicDateTimeCombo . EVENT _VALID = "EVENT_VALID" , BI . DynamicDateTimeCombo . EVENT _ERROR = "EVENT_ERROR" , BI . DynamicDateTimeCombo . EVENT _BEFORE _POPUPVIEW = "EVENT_BEFORE_POPUPVIEW" , BI . shortcut ( "bi.dynamic_date_time_combo" , BI . DynamicDateTimeCombo ) , BI . extend ( BI . DynamicDateTimeCombo , { Static : 1 , Dynamic : 2 } ) , BI . DynamicDateTimePopup = BI . inherit ( BI . Widget , { constants : { tabHeight : 30 , buttonHeight : 24 } , props : { baseCls : "bi-dynamic-date-time-popup" , width : 248 , height : 385 } , _init : function ( ) { BI . DynamicDateTimePopup . superclass . _init . apply ( this , arguments ) ; var self = this , opts = this . options , c = this . constants ; this . storeValue = { type : BI . DynamicDateCombo . Static } , BI . createWidget ( { element : this , type : "bi.vtape" , items : [ { el : this . _getTabJson ( ) } , { el : { type : "bi.grid" , items : [ [ { type : "bi.text_button" , cls : "bi-high-light bi-split-top" , textHeight : c . buttonHeight - 1 , shadow : ! 0 , text : BI . i18nText ( "BI-Basic_Clear" ) , listeners : [ { eventName : BI . TextButton . EVENT _CHANGE , action : function ( ) { self . fireEvent ( BI . DynamicDateTimePopup . BUTTON _CLEAR _EVENT _CHANGE ) } } ] } , { type : "bi.text_button" , cls : "bi-split-left bi-split-right bi-high-light bi-split-top" , textHeight : c . buttonHeight - 1 , shadow : ! 0 , text : BI . i18nText ( "BI-Multi_Date_Today" ) , ref : function ( ) { self . textButton = this } , listeners : [ { eventName : BI . TextButton . EVENT _CHANGE , action : function ( ) { self . fireEvent ( BI . DynamicDateTimePopup . BUTTON _lABEL _EVENT _CHANGE ) } } ] } , { type : "bi.text_button" , cls : "bi-high-light bi-split-top" , textHeight : c . buttonHeight - 1 , shadow : ! 0 , text : BI . i18nText ( "BI-Basic_OK" ) , listeners : [ { eventName : BI . TextButton . EVENT _CHANGE , action : function ( ) { self . fireEvent ( BI . DynamicDateTimePopup . BUTTON _OK _EVENT _CHANGE ) } } ] } ] ] } , height : 24 } ] } ) , this . setValue ( opts . value ) } , _getTabJson : function ( ) { var self = this , o = this . options ; return { type : "bi.tab" , ref : function ( ) { self . dateTab = this } , tab : { type : "bi.linear_segment" , cls : "bi-split-bottom" , height : this . constants . tabHeight , items : BI . createItems ( [ { text : BI . i18nText ( "BI-Multi_Date_YMD" ) , value : BI . DynamicDateCombo . Static } , { text : BI . i18nText ( "BI-Basic_Dynamic_Title" ) , value : BI . DynamicDateCombo . Dynamic } ] , { textAlign : "center" } ) } , cardCreator : function ( v ) { switch ( v ) { case BI . DynamicDateCombo . Dynamic : return { ty
self . labelTwo . element . removeClass ( "bi-border" ) } ) , this . labelTwo . on ( BI . Editor . EVENT _CONFIRM , function ( ) { var oldValueTwo = self . valueTwo , v = BI . parseFloat ( this . getValue ( ) ) ; self . valueTwo = v ; var percent = self . _getPercentByValue ( v ) , significantPercent = BI . parseFloat ( percent . toFixed ( 1 ) ) ; self . _setSliderTwoPosition ( significantPercent ) , self . _setBlueTrack ( ) , self . _checkLabelPosition ( self . valueOne , oldValueTwo , self . valueOne , self . valueTwo ) , self . fireEvent ( BI . IntervalSlider . EVENT _CHANGE ) } ) , this . sliderOne = BI . createWidget ( { type : "bi.single_slider_button" } ) , this . sliderTwo = BI . createWidget ( { type : "bi.single_slider_button" } ) , this . _draggable ( this . sliderOne , ! 0 ) , this . _draggable ( this . sliderTwo , ! 1 ) , this . _setVisible ( ! 1 ) , { type : "bi.absolute" , element : this , items : [ { el : { type : "bi.vertical" , items : [ { type : "bi.absolute" , items : [ { el : this . track , width : "100%" , height : c . TRACK _HEIGHT } ] } ] , hgap : 7 , height : c . TRACK _HEIGHT } , top : 23 , left : 0 , width : "100%" } , this . _createLabelWrapper ( ) , this . _createSliderWrapper ( ) ] } } , _rePosBySizeAfterMove : function ( size , isLeft ) { var o = this . options , percent = 100 * size / this . _getGrayTrackLength ( ) , significantPercent = BI . parseFloat ( percent . toFixed ( 1 ) ) , v = this . _getValueByPercent ( significantPercent ) ; v = this . _assertValue ( v ) , v = o . digit === ! 1 ? v : v . toFixed ( o . digit ) ; var oldValueOne = this . valueOne , oldValueTwo = this . valueTwo ; isLeft ? ( this . _setSliderOnePosition ( significantPercent ) , this . labelOne . setValue ( v ) , this . valueOne = v , this . _checkLabelPosition ( oldValueOne , oldValueTwo , v , this . valueTwo ) ) : ( this . _setSliderTwoPosition ( significantPercent ) , this . labelTwo . setValue ( v ) , this . valueTwo = v , this . _checkLabelPosition ( oldValueOne , oldValueTwo , this . valueOne , v ) ) , this . _setBlueTrack ( ) } , _rePosBySizeAfterStop : function ( size , isLeft ) { var percent = 100 * size / this . _getGrayTrackLength ( ) , significantPercent = BI . parseFloat ( percent . toFixed ( 1 ) ) ; isLeft ? this . _setSliderOnePosition ( significantPercent ) : this . _setSliderTwoPosition ( significantPercent ) } , _draggable : function ( widget , isLeft ) { function optimizeSize ( s ) { return BI . clamp ( s , 0 , self . _getGrayTrackLength ( ) ) } var self = this , o = this . options , startDrag = ! 1 , size = 0 , offset = 0 , defaultSize = 0 , mouseMoveTracker = new BI . MouseMoveTracker ( function ( deltaX ) { mouseMoveTracker . isDragging ( ) && ( startDrag = ! 0 , offset += deltaX , size = optimizeSize ( defaultSize + offset ) , widget . element . addClass ( "dragging" ) , self . _rePosBySizeAfterMove ( size , isLeft ) ) } , function ( ) { startDrag === ! 0 && ( size = optimizeSize ( size ) , self . _rePosBySizeAfterStop ( size , isLeft ) , size = 0 , offset = 0 , defaultSize = size , startDrag = ! 1 ) , widget . element . removeClass ( "dragging" ) , mouseMoveTracker . releaseMouseMoves ( ) , self . fireEvent ( BI . IntervalSlider . EVENT _CHANGE ) } , window ) ; widget . element . on ( "mousedown" , function ( event ) { widget . isEnabled ( ) && ( defaultSize = this . offsetLeft , optimizeSize ( defaultSize ) , mouseMoveTracker . captureMouseMoves ( event ) ) } ) } , _createLabelWrapper : function ( ) { var c = this . _constant ; return { el : { type : "bi.vertical" , items : [ { type : "bi.absolute" , items : [ { el : this . labelOne , top : 0 , left : "0%" } ] } , { type : "bi.absolute" , items : [ { el : this . labelTwo , top : 0 , left : "100%" } ] } ] , rgap : c . EDITOR _R _GAP , height : c . SLIDER _HEIGHT } , top : 0 , left : 0 , width : "100%" } } , _createSliderWrapper : function ( ) { var c = this . _constant ; return { el : { type : "bi.vertical" , items : [ { type : "bi.absolute" , items : [ { el : this . sliderOne , top : 0 , left : "0%" } ] } , { type : "bi.absolute" , items : [ { el : this . sliderTwo , top : 0 , left : "100%" } ] } ] , hgap : c . SLIDER _WIDTH _HALF , height : c . SLIDER _HEIGHT } , top : 20 , left : 0 , width : "100%" } } , _createTrackWrapper : function ( ) { return BI . createWidget ( { type : "bi.absolute" , items : [ { el : { type : "bi.vertical" , items : [ { type : "bi.absolute" , items : [ { el : this . grayTrack , top : 0 , left : 0 , width : "100%" } , { el : this . blueTrack , top : 0 , left : 0 , width : "0%" } ] } ] , hgap : 8 , height : 8 } , top : 8 , left : 0 , width : "100%" } ] } ) } , _checkValidation : function ( v ) { var o = this . options , valid = ! 1 , dotText = ( v + "" ) . split ( "." ) [ 1 ] ; return BI . isEmptyString ( dotText ) || BI . isNumeric ( v ) && ! ( BI . isNull ( v ) || v < this . min || v > this . max ) && ( o . digit === ! 1 || BI . isInteger ( v ) ? valid = ! 0 : ( dotText = dotText || "" , valid = dotText . length === o . digit ) ) , valid } , _checkOverlap : function ( ) { var labelOneLeft = this . labelOne . element [ 0 ] . offsetLeft , labelTwoLeft = this . labelTwo . element [ 0 ] . offsetLeft ; labelOneLeft <= labelTwoLeft ? labelTwoLeft - labelOneLeft < 90 ? this . labelTwo . element . css ( { top : 40 } ) : thi
self . loaded ( ) } ) } ) } , value : o . value , el : { type : "bi.loader" , isDefaultInit : o . itemsCreator !== BI . emptyFn , el : { type : "bi.button_tree" , chooseType : o . chooseType , behaviors : o . behaviors , layouts : [ { type : "bi.vertical" } ] } , hasNext : function ( ) { return hasNext } } } ) , this . tree . on ( BI . Controller . EVENT _CHANGE , function ( type , value ) { self . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) , type === BI . Events . CLICK && ( self . setValue ( value ) , self . fireEvent ( BI . MultiLayerSelectLevelTree . EVENT _CHANGE , arguments ) ) } ) , BI . createWidget ( { type : "bi.adaptive" , element : this , scrollable : o . scrollable , items : [ this . tree ] } ) } , _populate : function ( ) { BI . MultiLayerSelectLevelTree . superclass . populate . apply ( this , arguments ) } , populate : function ( nodes ) { this . _populate ( nodes ) , BI . isNull ( nodes ) ? this . tree . populate ( ) : this . tree . populate ( this . _formatItems ( BI . Tree . transformToTreeFormat ( nodes ) , 0 ) ) } , setValue : function ( v ) { this . options . chooseType === BI . Selection . None || ( this . storeValue = v , this . tree . setValue ( v ) ) } , getValue : function ( ) { return BI . isArray ( this . storeValue ) ? this . storeValue : BI . isNull ( this . storeValue ) ? [ ] : [ this . storeValue ] } , getAllLeaves : function ( ) { return this . tree . getAllLeaves ( ) } , getNodeById : function ( id ) { return this . tree . getNodeById ( id ) } , getNodeByValue : function ( id ) { return this . tree . getNodeByValue ( id ) } } ) , BI . MultiLayerSelectLevelTree . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.multilayer_select_level_tree" , BI . MultiLayerSelectLevelTree ) , BI . MultiLayerSelectTreePopup = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . MultiLayerSelectTreePopup . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multilayer-select-tree-popup" , tipText : BI . i18nText ( "BI-No_Selected_Item" ) , isDefaultInit : ! 1 , itemsCreator : BI . emptyFn , items : [ ] , value : "" , onLoaded : BI . emptyFn } ) } , _init : function ( ) { BI . MultiLayerSelectTreePopup . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options ; this . tree = BI . createWidget ( { type : "bi.multilayer_select_level_tree" , isDefaultInit : o . isDefaultInit , items : o . items , itemsCreator : o . itemsCreator , keywordGetter : o . keywordGetter , value : o . value , scrollable : null , onLoaded : function ( ) { self . tree . check ( ) , o . onLoaded ( ) } } ) , BI . createWidget ( { type : "bi.vertical" , scrolly : ! 1 , scrollable : ! 0 , element : this , vgap : 5 , items : [ this . tree ] } ) , this . tree . on ( BI . Controller . EVENT _CHANGE , function ( ) { self . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . tree . on ( BI . MultiLayerSelectLevelTree . EVENT _CHANGE , function ( ) { self . fireEvent ( BI . MultiLayerSelectTreePopup . EVENT _CHANGE ) } ) } , getValue : function ( ) { return this . tree . getValue ( ) } , setValue : function ( v ) { v = BI . isArray ( v ) ? v : [ v ] , this . tree . setValue ( v ) } , populate : function ( items ) { this . tree . populate ( items ) } } ) , BI . MultiLayerSelectTreePopup . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.multilayer_select_tree_popup" , BI . MultiLayerSelectTreePopup ) , BI . MultiLayerSelectTreeTrigger = BI . inherit ( BI . Trigger , { props : function ( ) { return { extraCls : "bi-multi-layer-select-tree-trigger bi-border bi-focus-shadow bi-border-radius" , height : 24 , valueFormatter : function ( v ) { return v } , itemsCreator : BI . emptyFn , watermark : BI . i18nText ( "BI-Basic_Search" ) , allowSearchValue : ! 1 } } , render : function ( ) { var self = this , o = this . options ; o . itemsCreator === BI . emptyFn && this . _initData ( ) ; var content = { type : "bi.htape" , items : [ { el : { type : "bi.searcher" , ref : function ( ) { self . searcher = this } , masker : BI . isNotNull ( o . container ) ? { offset : { } , container : o . container } : { offset : { } } , isAutoSearch : ! 1 , el : { type : "bi.state_editor" , ref : function ( ) { self . editor = this } , defaultText : o . text , text : this . _digest ( o . value ) , value : o . value , height : o . height , tipText : "" , watermark : o . watermark , listeners : [ { eventName : BI . StateEditor . EVENT _FOCUS , action : function ( ) { self . fireEvent ( BI . MultiLayerSelectTreeTrigger . EVENT _FOCUS ) } } , { eventName : BI . StateEditor . EVENT _BLUR , action : function ( ) { self . fireEvent ( BI . MultiLayerSelectTreeTrigger . EVENT _BLUR ) } } , { eventName : BI . StateEditor . EVENT _CHANGE , action : function ( ) { self . fireEvent ( BI . MultiLayerSelectTreeTrigger . EVENT _SEARCHING ) } } ] } , popup : { type : o . allowInsertValue ? "bi.multilayer_select_tree_insert_search_pane" : "bi.multilayer_select_tree_popup" , itemsCreator : o . itemsCreator === BI . emptyFn ? BI . emptyFn : function ( op , callback ) { op . keyword = self . editor . getValue ( ) , o . itemsCreator ( op , callback ) } , keywordGetter : functi
cls : "bi-list-item-none" , logic : { dynamic : ! 0 } , id : o . id , pId : o . pId , open : o . open , isLastNode : o . isLastNode , height : o . height , hgap : o . hgap , text : o . text , value : o . value , py : o . py , keyword : o . keyword , listeners : [ { eventName : BI . Controller . EVENT _CHANGE , action : function ( type ) { type !== BI . Events . CLICK && self . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } } ] } ) } } ) , BI . shortcut ( "bi.multilayer_single_tree_first_plus_group_node" , BI . MultiLayerSingleTreeFirstPlusGroupNode ) , BI . MultiLayerSingleTreeLastPlusGroupNode = BI . inherit ( BI . NodeButton , { _defaultConfig : function ( ) { var conf = BI . MultiLayerSingleTreeLastPlusGroupNode . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( conf , { extraCls : "bi-multilayer-single-tree-last-plus-group-node bi-list-item" , layer : 0 , id : "" , pId : "" , open : ! 1 , height : 24 } ) } , _init : function ( ) { BI . MultiLayerSingleTreeLastPlusGroupNode . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options ; this . node = this . _createNode ( ) ; for ( var needBlankLayers = [ ] , pNode = o . pNode ; pNode ; ) pNode . isLastNode && needBlankLayers . push ( pNode . layer ) , pNode = pNode . pNode ; var items = [ ] ; BI . count ( 0 , o . layer , function ( index ) { items . push ( { type : "bi.layout" , cls : BI . contains ( needBlankLayers , index ) ? "" : "base-line-conn-background" , width : 12 , height : o . height } ) } ) , items . push ( this . node ) , BI . createWidget ( { type : "bi.td" , element : this , columnSize : BI . makeArray ( o . layer , 12 ) , items : [ items ] } ) } , doRedMark : function ( ) { this . node . doRedMark . apply ( this . node , arguments ) } , unRedMark : function ( ) { this . node . unRedMark . apply ( this . node , arguments ) } , doClick : function ( ) { BI . MultiLayerSingleTreeLastPlusGroupNode . superclass . doClick . apply ( this , arguments ) , this . node . setSelected ( this . isSelected ( ) ) } , setOpened : function ( v ) { BI . MultiLayerSingleTreeLastPlusGroupNode . superclass . setOpened . apply ( this , arguments ) , BI . isNotNull ( this . node ) && this . node . setOpened ( v ) } , _createNode : function ( ) { var self = this , o = this . options ; return BI . createWidget ( { type : "bi.last_plus_group_node" , cls : "bi-list-item-none" , logic : { dynamic : ! 0 } , id : o . id , pId : o . pId , open : o . open , height : o . height , hgap : o . hgap , text : o . text , value : o . value , py : o . py , keyword : o . keyword , listeners : [ { eventName : BI . Controller . EVENT _CHANGE , action : function ( type ) { type !== BI . Events . CLICK && self . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } } ] } ) } } ) , BI . shortcut ( "bi.multilayer_single_tree_last_plus_group_node" , BI . MultiLayerSingleTreeLastPlusGroupNode ) , BI . MultiLayerSingleTreeMidPlusGroupNode = BI . inherit ( BI . NodeButton , { _defaultConfig : function ( ) { var conf = BI . MultiLayerSingleTreeMidPlusGroupNode . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( conf , { extraCls : "bi-multilayer-single-tree-mid-plus-group-node bi-list-item" , layer : 0 , id : "" , pId : "" , open : ! 1 , height : 24 } ) } , _init : function ( ) { BI . MultiLayerSingleTreeMidPlusGroupNode . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options ; this . node = this . _createNode ( ) ; for ( var needBlankLayers = [ ] , pNode = o . pNode ; pNode ; ) pNode . isLastNode && needBlankLayers . push ( pNode . layer ) , pNode = pNode . pNode ; var items = [ ] ; BI . count ( 0 , o . layer , function ( index ) { items . push ( { type : "bi.layout" , cls : BI . contains ( needBlankLayers , index ) ? "" : "base-line-conn-background" , width : 12 , height : o . height } ) } ) , items . push ( this . node ) , BI . createWidget ( { type : "bi.td" , element : this , columnSize : BI . makeArray ( o . layer , 12 ) , items : [ items ] } ) } , doRedMark : function ( ) { this . node . doRedMark . apply ( this . node , arguments ) } , unRedMark : function ( ) { this . node . unRedMark . apply ( this . node , arguments ) } , doClick : function ( ) { BI . MultiLayerSingleTreeMidPlusGroupNode . superclass . doClick . apply ( this , arguments ) , this . node . setSelected ( this . isSelected ( ) ) } , setOpened : function ( v ) { BI . MultiLayerSingleTreeMidPlusGroupNode . superclass . setOpened . apply ( this , arguments ) , BI . isNotNull ( this . node ) && this . node . setOpened ( v ) } , _createNode : function ( ) { var self = this , o = this . options ; return BI . createWidget ( { type : "bi.mid_plus_group_node" , cls : "bi-list-item-none" , logic : { dynamic : ! 0 } , id : o . id , pId : o . pId , open : o . open , height : o . height , hgap : o . hgap , text : o . text , value : o . value , py : o . py , keyword : o . keyword , listeners : [ { eventName : BI . Controller . EVENT _CHANGE , action : function ( type ) { type !== BI . Events . CLICK && self . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } } ] } ) } } ) , BI . shortcut ( "bi.multilayer_single_tree_mid_plus_group_node" , BI . MultiL
} , setValue : function ( v ) { this . storeValue = { type : BI . Selection . Multi , value : v || [ ] } , this . combo . setValue ( this . storeValue ) , this . numberCounter . setValue ( this . storeValue ) } , getValue : function ( ) { return BI . deepClone ( this . storeValue . value ) } , populate : function ( ) { this . combo . populate . apply ( this . combo , arguments ) , this . numberCounter . populateSwitcher . apply ( this . numberCounter , arguments ) } } ) , BI . extend ( BI . MultiSelectNoBarCombo , { REQ _GET _DATA _LENGTH : 1 , REQ _GET _ALL _DATA : - 1 } ) , BI . MultiSelectNoBarCombo . EVENT _BLUR = "EVENT_BLUR" , BI . MultiSelectNoBarCombo . EVENT _FOCUS = "EVENT_FOCUS" , BI . MultiSelectNoBarCombo . EVENT _STOP = "EVENT_STOP" , BI . MultiSelectNoBarCombo . EVENT _SEARCHING = "EVENT_SEARCHING" , BI . MultiSelectNoBarCombo . EVENT _CLICK _ITEM = "EVENT_CLICK_ITEM" , BI . MultiSelectNoBarCombo . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . shortcut ( "bi.multi_select_no_bar_combo" , BI . MultiSelectNoBarCombo ) , BI . MultiSelectInsertCombo = BI . inherit ( BI . Single , { _defaultConfig : function ( ) { return BI . extend ( BI . MultiSelectInsertCombo . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multi-select-insert-combo" , itemsCreator : BI . emptyFn , valueFormatter : BI . emptyFn , height : 24 , attributes : { tabIndex : 0 } , allowEdit : ! 0 } ) } , _init : function ( ) { BI . MultiSelectInsertCombo . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options , assertShowValue = function ( ) { BI . isKey ( self . _startValue ) && ( self . storeValue . type === BI . Selection . All ? BI . remove ( self . storeValue . value , self . _startValue ) : BI . pushDistinct ( self . storeValue . value , self . _startValue ) ) , self . trigger . getSearcher ( ) . setState ( self . storeValue ) , self . numberCounter . setButtonChecked ( self . storeValue ) } ; this . storeValue = o . value || { } , this . requesting = ! 1 , this . trigger = BI . createWidget ( { type : "bi.multi_select_insert_trigger" , allowEdit : o . allowEdit , height : o . height , text : o . text , watermark : o . watermark , masker : { offset : { left : 0 , top : 0 , right : 0 , bottom : 25 } } , valueFormatter : o . valueFormatter , itemsCreator : BI . bind ( this . _itemsCreator4Trigger , this ) , value : o . value } ) , this . trigger . on ( BI . MultiSelectInsertTrigger . EVENT _FOCUS , function ( ) { self . fireEvent ( BI . MultiSelectInsertCombo . EVENT _FOCUS ) } ) , this . trigger . on ( BI . MultiSelectInsertTrigger . EVENT _BLUR , function ( ) { self . fireEvent ( BI . MultiSelectInsertCombo . EVENT _BLUR ) } ) , this . trigger . on ( BI . MultiSelectInsertTrigger . EVENT _START , function ( ) { self . _setStartValue ( "" ) , this . getSearcher ( ) . setValue ( self . storeValue ) } ) , this . trigger . on ( BI . MultiSelectInsertTrigger . EVENT _STOP , function ( ) { self . _setStartValue ( "" ) , self . fireEvent ( BI . MultiSelectInsertCombo . EVENT _STOP ) } ) , this . trigger . on ( BI . MultiSelectInsertTrigger . EVENT _PAUSE , function ( ) { this . getSearcher ( ) . hasMatched ( ) && self . _addItem ( assertShowValue ) } ) , this . trigger . on ( BI . MultiSelectInsertTrigger . EVENT _ADD _ITEM , function ( ) { this . getSearcher ( ) . hasMatched ( ) || ( self . _addItem ( assertShowValue ) , self . _stopEditing ( ) ) } ) , this . trigger . on ( BI . MultiSelectInsertTrigger . EVENT _SEARCHING , function ( keywords ) { var last = BI . last ( keywords ) ; keywords = BI . initial ( keywords || [ ] ) , keywords . length > 0 && self . _joinKeywords ( keywords , function ( ) { BI . isEndWithBlank ( last ) ? ( self . combo . setValue ( self . storeValue ) , assertShowValue ( ) , self . combo . populate ( ) , self . _setStartValue ( "" ) ) : ( self . combo . setValue ( self . storeValue ) , assertShowValue ( ) ) } ) , self . fireEvent ( BI . MultiSelectInsertCombo . EVENT _SEARCHING ) } ) , this . trigger . on ( BI . MultiSelectInsertTrigger . EVENT _CHANGE , function ( value , obj ) { obj instanceof BI . MultiSelectBar ? self . _joinAll ( this . getValue ( ) , function ( ) { assertShowValue ( ) } ) : self . _join ( this . getValue ( ) , function ( ) { assertShowValue ( ) } ) , self . fireEvent ( BI . MultiSelectInsertCombo . EVENT _CLICK _ITEM ) } ) , this . trigger . on ( BI . MultiSelectInsertTrigger . EVENT _BEFORE _COUNTER _POPUPVIEW , function ( ) { self . numberCounter . updateSelectedValue ( self . storeValue ) } ) , this . trigger . on ( BI . MultiSelectInsertTrigger . EVENT _COUNTER _CLICK , function ( ) { self . combo . isViewVisible ( ) || self . combo . showView ( ) } ) , this . combo = BI . createWidget ( { type : "bi.combo" , toggle : ! o . allowEdit , el : this . trigger , adjustLength : 1 , container : o . container , popup : { type : "bi.multi_select_popup_view" , ref : function ( ) { self . popup = this , self . trigger . setAdapter ( this ) , self . numberCounter . setAdapter ( this ) } , listeners : [ { eventName : BI . MultiSelectPopupView . EVENT _CHANGE , action : function ( ) { self . storeValue = this . getValue ( ) , sel
BI . MultiSelectPopupView . EVENT _CLICK _CLEAR = "EVENT_CLICK_CLEAR" , BI . shortcut ( "bi.multi_select_popup_view" , BI . MultiSelectPopupView ) , BI . MultiSelectNoBarPopupView = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . MultiSelectNoBarPopupView . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multi-select-popup-view" , maxWidth : "auto" , minWidth : 135 , maxHeight : 400 , valueFormatter : BI . emptyFn , itemsCreator : BI . emptyFn , onLoaded : BI . emptyFn } ) } , _init : function ( ) { BI . MultiSelectNoBarPopupView . superclass . _init . apply ( this , arguments ) ; var self = this , opts = this . options ; this . loader = BI . createWidget ( { type : "bi.multi_select_no_bar_loader" , itemsCreator : opts . itemsCreator , valueFormatter : opts . valueFormatter , onLoaded : opts . onLoaded , value : opts . value } ) , this . popupView = BI . createWidget ( { type : "bi.multi_popup_view" , stopPropagation : ! 1 , maxWidth : opts . maxWidth , minWidth : opts . minWidth , maxHeight : opts . maxHeight , element : this , buttons : [ BI . i18nText ( "BI-Basic_Clears" ) , BI . i18nText ( "BI-Basic_Sure" ) ] , el : this . loader , value : opts . value } ) , this . popupView . on ( BI . MultiPopupView . EVENT _CHANGE , function ( ) { self . fireEvent ( BI . MultiSelectNoBarPopupView . EVENT _CHANGE ) } ) , this . popupView . on ( BI . MultiPopupView . EVENT _CLICK _TOOLBAR _BUTTON , function ( index ) { switch ( index ) { case 0 : self . fireEvent ( BI . MultiSelectNoBarPopupView . EVENT _CLICK _CLEAR ) ; break ; case 1 : self . fireEvent ( BI . MultiSelectNoBarPopupView . EVENT _CLICK _CONFIRM ) } } ) } , setStartValue : function ( v ) { this . loader . setStartValue ( v ) } , setValue : function ( v ) { this . popupView . setValue ( v ) } , getValue : function ( ) { return this . popupView . getValue ( ) } , populate : function ( items ) { this . popupView . populate . apply ( this . popupView , arguments ) } , resetHeight : function ( h ) { this . popupView . resetHeight ( h ) } , resetWidth : function ( w ) { this . popupView . resetWidth ( w ) } } ) , BI . MultiSelectNoBarPopupView . EVENT _CHANGE = "EVENT_CHANGE" , BI . MultiSelectNoBarPopupView . EVENT _CLICK _CONFIRM = "EVENT_CLICK_CONFIRM" , BI . MultiSelectNoBarPopupView . EVENT _CLICK _CLEAR = "EVENT_CLICK_CLEAR" , BI . shortcut ( "bi.multi_select_no_bar_popup_view" , BI . MultiSelectNoBarPopupView ) , BI . MultiSelectTrigger = BI . inherit ( BI . Trigger , { constants : { height : 14 , rgap : 4 , lgap : 4 } , _defaultConfig : function ( ) { return BI . extend ( BI . MultiSelectTrigger . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multi-select-trigger bi-border bi-border-radius" , itemsCreator : BI . emptyFn , valueFormatter : BI . emptyFn , searcher : { } , switcher : { } , adapter : null , masker : { } , allowEdit : ! 0 } ) } , _init : function ( ) { BI . MultiSelectTrigger . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options ; o . height && this . setHeight ( o . height - 2 ) , this . searcher = BI . createWidget ( o . searcher , { type : "bi.multi_select_searcher" , height : o . height , text : o . text , itemsCreator : o . itemsCreator , valueFormatter : o . valueFormatter , watermark : o . watermark , popup : { } , adapter : o . adapter , masker : o . masker , value : o . value } ) , this . searcher . on ( BI . MultiSelectSearcher . EVENT _START , function ( ) { self . fireEvent ( BI . MultiSelectTrigger . EVENT _START ) } ) , this . searcher . on ( BI . MultiSelectSearcher . EVENT _PAUSE , function ( ) { self . fireEvent ( BI . MultiSelectTrigger . EVENT _PAUSE ) } ) , this . searcher . on ( BI . MultiSelectSearcher . EVENT _SEARCHING , function ( ) { self . fireEvent ( BI . MultiSelectTrigger . EVENT _SEARCHING , arguments ) } ) , this . searcher . on ( BI . MultiSelectSearcher . EVENT _STOP , function ( ) { self . fireEvent ( BI . MultiSelectTrigger . EVENT _STOP ) } ) , this . searcher . on ( BI . MultiSelectSearcher . EVENT _CHANGE , function ( ) { self . fireEvent ( BI . MultiSelectTrigger . EVENT _CHANGE , arguments ) } ) , this . searcher . on ( BI . MultiSelectSearcher . EVENT _BLUR , function ( ) { self . fireEvent ( BI . MultiSelectTrigger . EVENT _BLUR ) } ) , this . searcher . on ( BI . MultiSelectSearcher . EVENT _FOCUS , function ( ) { self . fireEvent ( BI . MultiSelectTrigger . EVENT _FOCUS ) } ) , this . wrapNumberCounter = BI . createWidget ( { type : "bi.layout" } ) , this . wrapper = BI . createWidget ( { type : "bi.htape" , element : this , items : [ { el : this . searcher , width : "fill" } , { el : this . wrapNumberCounter , width : 0 } , { el : BI . createWidget ( ) , width : 24 } ] } ) , ! o . allowEdit && BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : { type : "bi.layout" } , left : 0 , right : 24 , top : 0 , bottom : 0 } ] } ) } , refreshPlaceHolderWidth : function ( width ) { this . wrapper . attr ( "items" ) [ 1 ] . width = width , this . wrapper . resize ( ) } , getSearcher : function ( ) { return this . searcher } , st
this . _startValue = value , this . adapter . setStartValue ( value ) } , isAllSelected : function ( ) { return this . adapter . isAllSelected ( ) } , resize : function ( ) { } , setValue : function ( v ) { this . storeValue = v || { } , this . _assertValue ( this . storeValue ) , this . adapter . setValue ( this . storeValue ) , this . trigger . setValue ( this . storeValue ) } , getValue : function ( ) { return BI . deepClone ( this . storeValue ) } , populate : function ( ) { this . adapter . populate . apply ( this . adapter , arguments ) , this . trigger . populate . apply ( this . trigger , arguments ) } } ) , BI . extend ( BI . MultiSelectInsertList , { REQ _GET _DATA _LENGTH : 1 , REQ _GET _ALL _DATA : - 1 } ) , BI . MultiSelectInsertList . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.multi_select_insert_list" , BI . MultiSelectInsertList ) , BI . MultiSelectInsertNoBarList = BI . inherit ( BI . Single , { _defaultConfig : function ( ) { return BI . extend ( BI . MultiSelectInsertNoBarList . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multi-select-insert-list" , itemsCreator : BI . emptyFn , valueFormatter : BI . emptyFn } ) } , _init : function ( ) { BI . MultiSelectInsertNoBarList . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options ; this . storeValue = { type : BI . Selection . Multi , value : o . value || [ ] } ; var assertShowValue = function ( ) { BI . isKey ( self . _startValue ) && ( self . storeValue . type === BI . Selection . All ? BI . remove ( self . storeValue . value , self . _startValue ) : BI . pushDistinct ( self . storeValue . value , self . _startValue ) ) } ; this . adapter = BI . createWidget ( { type : "bi.multi_select_no_bar_loader" , cls : "popup-multi-select-list bi-border-left bi-border-right bi-border-bottom" , itemsCreator : o . itemsCreator , valueFormatter : o . valueFormatter , logic : { dynamic : ! 1 } , el : { } , value : { type : BI . Selection . Multi , value : o . value || [ ] } } ) , this . adapter . on ( BI . MultiSelectLoader . EVENT _CHANGE , function ( ) { self . storeValue = this . getValue ( ) , assertShowValue ( ) , self . fireEvent ( BI . MultiSelectInsertNoBarList . EVENT _CHANGE ) } ) , this . searcherPane = BI . createWidget ( { type : "bi.multi_select_search_insert_pane" , cls : "bi-border-left bi-border-right bi-border-bottom" , valueFormatter : o . valueFormatter , keywordGetter : function ( ) { return self . trigger . getKeyword ( ) } , itemsCreator : function ( op , callback ) { op . keywords = [ self . trigger . getKeyword ( ) ] , this . setKeyword ( op . keywords [ 0 ] ) , o . itemsCreator ( op , callback ) } , listeners : [ { eventName : BI . MultiSelectSearchInsertPane . EVENT _ADD _ITEM , action : function ( ) { var keyword = self . trigger . getKeyword ( ) ; self . trigger . hasMatched ( ) || ( self . storeValue . type === BI . Selection . Multi && BI . pushDistinct ( self . storeValue . value , keyword ) , self . _showAdapter ( ) , self . adapter . setValue ( self . storeValue ) , self . adapter . populate ( ) , self . storeValue . type === BI . Selection . Multi && self . fireEvent ( BI . MultiSelectInsertNoBarList . EVENT _CHANGE ) ) } } ] } ) , this . searcherPane . setVisible ( ! 1 ) , this . trigger = BI . createWidget ( { type : "bi.searcher" , isAutoSearch : ! 1 , isAutoSync : ! 1 , onSearch : function ( op , callback ) { callback ( ) } , adapter : this . adapter , popup : this . searcherPane , height : 200 , masker : ! 1 , listeners : [ { eventName : BI . Searcher . EVENT _START , action : function ( ) { self . _showSearcherPane ( ) , self . _setStartValue ( "" ) , this . setValue ( BI . deepClone ( self . storeValue ) ) } } , { eventName : BI . Searcher . EVENT _STOP , action : function ( ) { self . _showAdapter ( ) , self . _setStartValue ( "" ) , self . adapter . setValue ( self . storeValue ) , self . adapter . populate ( ) } } , { eventName : BI . Searcher . EVENT _PAUSE , action : function ( ) { var keyword = this . getKeyword ( ) ; this . hasMatched ( ) && self . _join ( { type : BI . Selection . Multi , value : [ keyword ] } , function ( ) { self . storeValue . type === BI . Selection . Multi && BI . pushDistinct ( self . storeValue . value , keyword ) , self . _showAdapter ( ) , self . adapter . setValue ( self . storeValue ) , self . _setStartValue ( keyword ) , assertShowValue ( ) , self . adapter . populate ( ) , self . _setStartValue ( "" ) , self . fireEvent ( BI . MultiSelectInsertNoBarList . EVENT _CHANGE ) } ) } } , { eventName : BI . Searcher . EVENT _SEARCHING , action : function ( ) { var keywords = this . getKeywords ( ) , last = BI . last ( keywords ) ; keywords = BI . initial ( keywords || [ ] ) , keywords . length > 0 && self . _joinKeywords ( keywords , function ( ) { BI . isEndWithBlank ( last ) ? ( self . adapter . setValue ( self . storeValue ) , assertShowValue ( ) , self . adapter . populate ( ) , self . _setStartValue ( "" ) ) : ( self . adapter . setValue ( self . storeValue ) , assertShowValue ( ) ) , self . fireEvent ( BI . MultiSelectInsertNoBarList . EVENT _CHANGE ) } ) } } , { eventName : BI . Searcher . EVENT _CHANGE , action : func
masker : { offset : this . constants . offset } , valueFormatter : o . valueFormatter , value : o . value } ) , this . numberCounter . on ( BI . MultiSelectCheckSelectedSwitcher . EVENT _TRIGGER _CHANGE , function ( ) { self . combo . isViewVisible ( ) || self . combo . showView ( ) } ) , this . numberCounter . on ( BI . MultiSelectCheckSelectedSwitcher . EVENT _BEFORE _POPUPVIEW , function ( ) { want2showCounter === ! 1 && ( want2showCounter = ! 0 ) , isInit === ! 0 && ( want2showCounter = null , showCounter ( ) ) } ) , this . numberCounter . on ( BI . Events . VIEW , function ( b ) { BI . nextTick ( function ( ) { self . trigger . refreshPlaceHolderWidth ( b === ! 0 ? self . numberCounter . element . outerWidth ( ) + 8 : 0 ) } ) } ) , this . trigger . element . click ( function ( e ) { self . trigger . element . find ( e . target ) . length > 0 && self . numberCounter . hideView ( ) } ) , BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : this . combo , left : 0 , right : 0 , top : 0 , bottom : 0 } , { el : triggerBtn , right : 0 , top : 0 , bottom : 0 } , { el : { type : "bi.vertical_adapt" , items : [ this . numberCounter ] } , right : o . height , top : 0 , height : o . height } ] } ) } , _assertShowValue : function ( ) { this . trigger . getSearcher ( ) . setState ( this . storeValue ) , this . numberCounter . setButtonChecked ( this . storeValue ) } , _stopEditing : function ( ) { this . trigger . stopEditing ( ) , this . numberCounter . hideView ( ) } , _defaultState : function ( ) { this . _stopEditing ( ) , this . combo . hideView ( ) } , setValue : function ( v ) { this . storeValue . value = v || { } , this . combo . setValue ( { value : v || { } } ) , this . numberCounter . setValue ( { value : v || { } } ) } , getValue : function ( ) { return BI . deepClone ( this . storeValue . value ) } , populate : function ( ) { this . combo . populate . apply ( this . combo , arguments ) } } ) , BI . MultiTreeInsertCombo . EVENT _FOCUS = "EVENT_FOCUS" , BI . MultiTreeInsertCombo . EVENT _BLUR = "EVENT_BLUR" , BI . MultiTreeInsertCombo . EVENT _STOP = "EVENT_STOP" , BI . MultiTreeInsertCombo . EVENT _CLICK _ITEM = "EVENT_CLICK_ITEM" , BI . MultiTreeInsertCombo . EVENT _SEARCHING = "EVENT_SEARCHING" , BI . MultiTreeInsertCombo . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . shortcut ( "bi.multi_tree_insert_combo" , BI . MultiTreeInsertCombo ) , BI . MultiTreeListCombo = BI . inherit ( BI . Single , { constants : { offset : { top : 0 , left : 0 , right : 0 , bottom : 25 } } , _defaultConfig : function ( ) { return BI . extend ( BI . MultiTreeListCombo . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multi-tree-list-combo" , itemsCreator : BI . emptyFn , valueFormatter : BI . emptyFn , height : 24 , allowEdit : ! 0 , allowInsertValue : ! 0 } ) } , _init : function ( ) { function showCounter ( ) { isSearching ( ) ? self . storeValue = { value : self . trigger . getValue ( ) } : isPopupView ( ) && ( self . storeValue = { value : self . combo . getValue ( ) } ) , self . trigger . setValue ( self . storeValue ) , self . numberCounter . setValue ( self . storeValue ) } BI . MultiTreeListCombo . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options , isInit = ! 1 , want2showCounter = ! 1 ; this . storeValue = { value : o . value || [ ] } , this . trigger = BI . createWidget ( { type : "bi.multi_select_trigger" , allowEdit : o . allowEdit , text : o . text , watermark : o . watermark , height : o . height , valueFormatter : o . valueFormatter , masker : { offset : this . constants . offset } , searcher : { type : "bi.multi_list_tree_searcher" , itemsCreator : o . itemsCreator , popup : { type : o . allowInsertValue ? "bi.multi_tree_search_insert_pane" : "bi.multi_tree_search_pane" , el : { type : "bi.list_part_tree" } , listeners : [ { eventName : BI . MultiTreeSearchInsertPane . EVENT _ADD _ITEM , action : function ( ) { self . storeValue . value . unshift ( [ self . trigger . getSearcher ( ) . getKeyword ( ) ] ) , self . _assertShowValue ( ) , self . combo . setValue ( self . storeValue ) , self . numberCounter . setValue ( self . storeValue ) , self . _stopEditing ( ) } } ] } } , switcher : { el : { type : "bi.multi_tree_check_selected_button" } , popup : { type : "bi.multi_tree_check_pane" , el : { type : "bi.list_display_tree" } , itemsCreator : o . itemsCreator } } , value : { value : o . value || { } } } ) , this . combo = BI . createWidget ( { type : "bi.combo" , toggle : ! o . allowEdit , container : o . container , el : this . trigger , adjustLength : 1 , popup : { type : "bi.multi_tree_popup_view" , ref : function ( ) { self . popup = this , self . trigger . setAdapter ( this ) , self . numberCounter . setAdapter ( this ) } , el : { type : "bi.list_async_tree" } , listeners : [ { eventName : BI . MultiTreePopup . EVENT _AFTERINIT , action : function ( ) { self . numberCounter . adjustView ( ) , isInit = ! 0 , want2showCounter === ! 0 && showCounter ( ) } } , { eventName : BI . MultiTreePopup . EVENT _CHANGE , action : function ( ) { change = ! 0 ; var val = { type : BI . Selection . Multi , value : this . hasChecked ( ) ? this . getValue ( ) : [ ] } ; self . trigger .
BI . Bubbles . show ( c . numberError , BI . i18nText ( "BI-Numerical_Interval_Number_Value" ) , self , { offsetStyle : "left" , adjustYOffset : c . adjustYOffset } ) , self . fireEvent ( BI . NumberInterval . EVENT _ERROR ) ; break ; case c . signalError : BI . Bubbles . show ( c . signalError , BI . i18nText ( "BI-Numerical_Interval_Signal_Value" ) , self , { offsetStyle : "left" , adjustYOffset : c . adjustYOffset } ) , self . fireEvent ( BI . NumberInterval . EVENT _ERROR ) ; break ; default : self . fireEvent ( BI . NumberInterval . EVENT _VALID ) } } ) } , _setEditorValueChangedEvent : function ( w ) { var self = this , c = this . constants ; w . on ( BI . NumberIntervalSingleEidtor . EVENT _CHANGE , function ( ) { switch ( self . _checkValidation ( ) ) { case c . typeError : BI . Bubbles . show ( c . typeError , BI . i18nText ( "BI-Numerical_Interval_Input_Data" ) , self , { offsetStyle : "left" , adjustYOffset : c . adjustYOffset } ) ; break ; case c . numberError : BI . Bubbles . show ( c . numberError , BI . i18nText ( "BI-Numerical_Interval_Number_Value" ) , self , { offsetStyle : "left" , adjustYOffset : c . adjustYOffset } ) ; break ; case c . signalError : BI . Bubbles . show ( c . signalError , BI . i18nText ( "BI-Numerical_Interval_Signal_Value" ) , self , { offsetStyle : "left" , adjustYOffset : c . adjustYOffset } ) } self . fireEvent ( BI . NumberInterval . EVENT _CHANGE ) } ) , w . on ( BI . NumberIntervalSingleEidtor . EVENT _CONFIRM , function ( ) { self . fireEvent ( BI . NumberInterval . EVENT _CONFIRM ) } ) } , _setComboValueChangedEvent : function ( w ) { var self = this , c = this . constants ; w . on ( BI . IconCombo . EVENT _CHANGE , function ( ) { switch ( self . _checkValidation ( ) ) { case c . typeError : self . _setTitle ( BI . i18nText ( "BI-Numerical_Interval_Input_Data" ) ) , self . fireEvent ( BI . NumberInterval . EVENT _ERROR ) ; break ; case c . numberError : self . _setTitle ( BI . i18nText ( "BI-Numerical_Interval_Number_Value" ) ) , self . fireEvent ( BI . NumberInterval . EVENT _ERROR ) ; break ; case c . signalError : self . _setTitle ( BI . i18nText ( "BI-Numerical_Interval_Signal_Value" ) ) , self . fireEvent ( BI . NumberInterval . EVENT _ERROR ) ; break ; default : self . fireEvent ( BI . NumberInterval . EVENT _CHANGE ) , self . fireEvent ( BI . NumberInterval . EVENT _CONFIRM ) , self . fireEvent ( BI . NumberInterval . EVENT _VALID ) } } ) } , isStateValid : function ( ) { return "valid" === this . options . validation } , setMinEnable : function ( b ) { this . smallEditor . setEnable ( b ) } , setCloseMinEnable : function ( b ) { this . smallCombo . setEnable ( b ) } , setMaxEnable : function ( b ) { this . bigEditor . setEnable ( b ) } , setCloseMaxEnable : function ( b ) { this . bigCombo . setEnable ( b ) } , showNumTip : function ( ) { this . smallTip . setVisible ( ! 0 ) , this . bigTip . setVisible ( ! 0 ) } , hideNumTip : function ( ) { this . smallTip . setVisible ( ! 1 ) , this . bigTip . setVisible ( ! 1 ) } , setNumTip : function ( numTip ) { this . smallTip . setText ( numTip ) , this . bigTip . setText ( numTip ) } , getNumTip : function ( ) { return this . smallTip . getText ( ) } , setValue : function ( data ) { data = data || { } ; var self = this , combo _value ; ( BI . isNumeric ( data . min ) || BI . isEmptyString ( data . min ) ) && self . smallEditor . setValue ( data . min ) , BI . isNotNull ( data . min ) || self . smallEditor . setValue ( "" ) , ( BI . isNumeric ( data . max ) || BI . isEmptyString ( data . max ) ) && self . bigEditor . setValue ( data . max ) , BI . isNotNull ( data . max ) || self . bigEditor . setValue ( "" ) , BI . isNull ( data . closeMin ) || ( combo _value = data . closeMin === ! 0 ? 1 : 0 , self . smallCombo . setValue ( combo _value ) ) , BI . isNull ( data . closeMax ) || ( combo _value = data . closeMax === ! 0 ? 1 : 0 , self . bigCombo . setValue ( combo _value ) ) , this . _checkValidation ( ) } , getValue : function ( ) { var self = this , value = { } , minComboValue = self . smallCombo . getValue ( ) , maxComboValue = self . bigCombo . getValue ( ) ; return value . min = self . smallEditor . getValue ( ) , value . max = self . bigEditor . getValue ( ) , 0 === minComboValue [ 0 ] ? value . closeMin = ! 1 : value . closeMin = ! 0 , 0 === maxComboValue [ 0 ] ? value . closeMax = ! 1 : value . closeMax = ! 0 , value } , destroyed : function ( ) { var c = this . constants ; BI . Bubbles . remove ( c . typeError ) , BI . Bubbles . remove ( c . numberError ) , BI . Bubbles . remove ( c . signalError ) } } ) , BI . NumberInterval . EVENT _CHANGE = "EVENT_CHANGE" , BI . NumberInterval . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . NumberInterval . EVENT _VALID = "EVENT_VALID" , BI . NumberInterval . EVENT _ERROR = "EVENT_ERROR" , BI . shortcut ( "bi.number_interval" , BI . NumberInterval ) , BI . NumberIntervalSingleEidtor = BI . inherit ( BI . Single , { props : { baseCls : "bi-number-interval-single-editor" , tipType : "success" , title : "" } , render : function ( ) { var self = this , o = this . options ; return { type : "bi.vertical" , items : [ { type : "bi.editor" , ref : function ( _ref ) { self . editor = _ref } , height : o . he
logic : { dynamic : ! 1 } , id : "" , pId : "" , readonly : ! 0 , open : ! 1 , height : 24 } ) } , _init : function ( ) { BI . SelectTreeMidPlusGroupNode . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options ; this . checkbox = BI . createWidget ( { type : "bi.mid_tree_node_checkbox" , stopPropagation : ! 0 } ) , this . text = BI . createWidget ( { type : "bi.label" , textAlign : "left" , whiteSpace : "nowrap" , textHeight : o . height , height : o . height , hgap : o . hgap , text : o . text , value : o . value , keyword : o . keyword , py : o . py } ) , this . checkbox . on ( BI . Controller . EVENT _CHANGE , function ( type ) { type === BI . Events . CLICK && ( this . isSelected ( ) ? self . triggerExpand ( ) : self . triggerCollapse ( ) ) } ) ; var type = BI . LogicFactory . createLogicTypeByDirection ( BI . Direction . Left ) , items = BI . LogicFactory . createLogicItemsByDirection ( BI . Direction . Left , { width : 24 , el : this . checkbox } , this . text ) ; BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( type , BI . extend ( o . logic , { items : items } ) ) ) ) } , isOnce : function ( ) { return ! 0 } , doRedMark : function ( ) { this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } , doClick : function ( ) { BI . NodeButton . superclass . doClick . apply ( this , arguments ) } , setOpened : function ( v ) { BI . SelectTreeMidPlusGroupNode . superclass . setOpened . apply ( this , arguments ) , BI . isNotNull ( this . checkbox ) && this . checkbox . setSelected ( v ) } } ) , BI . shortcut ( "bi.select_tree_mid_plus_group_node" , BI . SelectTreeMidPlusGroupNode ) , BI . SelectTreePlusGroupNode = BI . inherit ( BI . NodeButton , { _defaultConfig : function ( ) { var conf = BI . SelectTreePlusGroupNode . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( conf , { baseCls : ( conf . baseCls || "" ) + " bi-select-tree-plus-group-node bi-list-item-active" , logic : { dynamic : ! 1 } , id : "" , pId : "" , readonly : ! 0 , open : ! 1 , height : 24 } ) } , _init : function ( ) { BI . SelectTreePlusGroupNode . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options ; this . checkbox = BI . createWidget ( { type : "bi.tree_node_checkbox" , stopPropagation : ! 0 } ) , this . text = BI . createWidget ( { type : "bi.label" , textAlign : "left" , whiteSpace : "nowrap" , textHeight : o . height , height : o . height , hgap : o . hgap , text : o . text , value : o . value , keyword : o . keyword , py : o . py } ) , this . checkbox . on ( BI . Controller . EVENT _CHANGE , function ( type ) { type === BI . Events . CLICK && ( this . isSelected ( ) ? self . triggerExpand ( ) : self . triggerCollapse ( ) ) } ) ; var type = BI . LogicFactory . createLogicTypeByDirection ( BI . Direction . Left ) , items = BI . LogicFactory . createLogicItemsByDirection ( BI . Direction . Left , { width : 24 , el : this . checkbox } , this . text ) ; BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( type , BI . extend ( o . logic , { items : items } ) ) ) ) } , isOnce : function ( ) { return ! 0 } , doRedMark : function ( ) { this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } , doClick : function ( ) { BI . NodeButton . superclass . doClick . apply ( this , arguments ) } , setOpened : function ( v ) { BI . SelectTreePlusGroupNode . superclass . setOpened . apply ( this , arguments ) , BI . isNotNull ( this . checkbox ) && this . checkbox . setSelected ( v ) } } ) , BI . shortcut ( "bi.select_tree_plus_group_node" , BI . SelectTreePlusGroupNode ) , BI . SelectTreeCombo = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . SelectTreeCombo . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-select-tree-combo" , height : 24 , text : "" , items : [ ] , value : "" , attributes : { tabIndex : 0 } } ) } , _init : function ( ) { BI . SelectTreeCombo . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options ; this . trigger = BI . createWidget ( { type : "bi.single_tree_trigger" , text : o . text , height : o . height , items : o . items , value : o . value } ) , this . popup = BI . createWidget ( { type : "bi.select_level_tree" , items : o . items , value : o . value } ) , this . combo = BI . createWidget ( { type : "bi.combo" , container : o . container , element : this , adjustLength : 2 , el : this . trigger , popup : { el : this . popup } } ) , this . combo . on ( BI . Controller . EVENT _CHANGE , function ( ) { self . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . popup . on ( BI . SingleTreePopup . EVENT _CHANGE , function ( ) { self . setValue ( self . popup . getValue ( ) ) , self . combo . hideView ( ) } ) } , setValue : function ( v ) { v = BI . isArray ( v ) ? v : [ v ] , this . trigger . setValue ( v ) , this . popup . setValue ( v ) } , getValue : function ( ) { return this . popup . getValue ( ) } , populate : function ( items ) { this . combo . populate ( items ) } } ) , BI . shortcu
1 === op . times && self . storeValue && ( BI . isKey ( startValue ) && ( self . storeValue = startValue ) , self . setValue ( self . storeValue ) ) , 1 === op . times && self . _scrollToTop ( ) } ) } , hasNext : function ( ) { return hasNext } , value : this . storeValue } ) , BI . createWidget ( { type : "bi.vertical" , element : this , items : [ this . button _group ] , vgap : 5 } ) , this . button _group . on ( BI . Controller . EVENT _CHANGE , function ( ) { self . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . button _group . on ( BI . SingleSelectList . EVENT _CHANGE , function ( ) { self . fireEvent ( BI . SingleSelectLoader . EVENT _CHANGE , arguments ) } ) } , _createItems : function ( items ) { return BI . createItems ( items , { type : this . options . allowNoSelect ? "bi.single_select_item" : "bi.single_select_combo_item" , logic : this . options . logic , cls : "bi-list-item-active" , height : 24 , selected : ! 1 } ) } , _scrollToTop : function ( ) { var self = this ; BI . delay ( function ( ) { self . button _group . element . scrollTop ( 0 ) } , 30 ) } , _assertValue : function ( val ) { } , setStartValue : function ( v ) { this . _startValue = v } , setValue : function ( v ) { this . storeValue = v , this . _assertValue ( this . storeValue ) , this . button _group . setValue ( this . storeValue ) } , getValue : function ( ) { return this . button _group . getValue ( ) } , getAllButtons : function ( ) { return this . button _group . getAllButtons ( ) } , empty : function ( ) { this . button _group . empty ( ) } , populate : function ( items ) { this . button _group . populate . apply ( this . button _group , arguments ) } , resetHeight : function ( h ) { this . button _group . resetHeight ( h ) } , resetWidth : function ( w ) { this . button _group . resetWidth ( w ) } } ) , BI . SingleSelectLoader . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.single_select_loader" , BI . SingleSelectLoader ) , BI . SingleSelectPopupView = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . SingleSelectPopupView . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-single-select-popup-view" , allowNoSelect : ! 1 , maxWidth : "auto" , minWidth : 135 , maxHeight : 400 , valueFormatter : BI . emptyFn , itemsCreator : BI . emptyFn , onLoaded : BI . emptyFn } ) } , _init : function ( ) { BI . SingleSelectPopupView . superclass . _init . apply ( this , arguments ) ; var self = this , opts = this . options ; this . loader = BI . createWidget ( { type : "bi.single_select_loader" , allowNoSelect : opts . allowNoSelect , itemsCreator : opts . itemsCreator , valueFormatter : opts . valueFormatter , onLoaded : opts . onLoaded , value : opts . value } ) , this . popupView = BI . createWidget ( { type : "bi.popup_view" , stopPropagation : ! 1 , maxWidth : opts . maxWidth , minWidth : opts . minWidth , maxHeight : opts . maxHeight , element : this , el : this . loader , value : opts . value } ) , this . popupView . on ( BI . MultiPopupView . EVENT _CHANGE , function ( ) { self . fireEvent ( BI . SingleSelectPopupView . EVENT _CHANGE ) } ) } , setStartValue : function ( v ) { this . loader . setStartValue ( v ) } , setValue : function ( v ) { this . popupView . setValue ( v ) } , getValue : function ( ) { return this . popupView . getValue ( ) } , populate : function ( items ) { this . popupView . populate . apply ( this . popupView , arguments ) } , resetHeight : function ( h ) { this . popupView . resetHeight ( h ) } , resetWidth : function ( w ) { this . popupView . resetWidth ( w ) } } ) , BI . SingleSelectPopupView . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.single_select_popup_view" , BI . SingleSelectPopupView ) , BI . SingleSelectTrigger = BI . inherit ( BI . Trigger , { constants : { height : 14 , rgap : 4 , lgap : 4 } , _defaultConfig : function ( ) { return BI . extend ( BI . SingleSelectTrigger . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-single-select-trigger bi-border bi-border-radius" , allowNoSelect : ! 1 , itemsCreator : BI . emptyFn , valueFormatter : BI . emptyFn , searcher : { } , switcher : { } , adapter : null , masker : { } , allowEdit : ! 0 } ) } , _init : function ( ) { BI . SingleSelectTrigger . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options ; o . height && this . setHeight ( o . height - 2 ) , this . searcher = BI . createWidget ( o . searcher , { type : "bi.single_select_searcher" , allowNoSelect : o . allowNoSelect , text : o . text , height : o . height , itemsCreator : o . itemsCreator , valueFormatter : o . valueFormatter , popup : { } , adapter : o . adapter , masker : o . masker , value : o . value } ) , this . searcher . on ( BI . SingleSelectSearcher . EVENT _START , function ( ) { self . fireEvent ( BI . SingleSelectTrigger . EVENT _START ) } ) , this . searcher . on ( BI . SingleSelectSearcher . EVENT _PAUSE , function ( ) { self . fireEvent ( BI . SingleSelectTrigger . EVENT _PAUSE ) } ) , this . searcher . on ( BI . SingleSelectSearcher . EVENT _SEARCHING , function ( ) { self . fireEvent ( BI . SingleSelectTrigger . EVE
if ( self . enable && self . isEnabled ( ) && sliderVertical . element [ 0 ] === e . originalEvent . target ) { var offset = e . clientX - self . element . offset ( ) . left - c . SLIDER _WIDTH _HALF , trackLength = self . track . element [ 0 ] . scrollWidth - c . TRACK _GAP , percent = 0 ; offset < 0 && ( percent = 0 ) , offset > 0 && offset < trackLength && ( percent = 100 * offset / self . _getGrayTrackLength ( ) ) , offset >= trackLength && ( percent = 100 ) ; var significantPercent = BI . parseFloat ( percent . toFixed ( 1 ) ) ; self . _setAllPosition ( significantPercent ) ; var v = self . _getValueByPercent ( significantPercent ) ; self . value = v , self . fireEvent ( BI . SingleSlider . EVENT _CHANGE ) } } ) , { type : "bi.absolute" , element : this , items : [ { el : { type : "bi.vertical" , items : [ { type : "bi.absolute" , items : [ { el : track , width : "100%" , height : c . TRACK _HEIGHT } ] } ] , hgap : c . TRACK _GAP _HALF , height : c . TRACK _HEIGHT } , top : 3 , left : 0 , width : "100%" } , { el : sliderVertical , top : 0 , left : 0 , width : "100%" } ] } } , _draggable : function ( widget ) { function optimizeSize ( s ) { return BI . clamp ( s , 0 , self . _getGrayTrackLength ( ) ) } var self = this , o = this . options , startDrag = ! 1 , size = 0 , offset = 0 , defaultSize = 0 , mouseMoveTracker = new BI . MouseMoveTracker ( function ( deltaX ) { if ( mouseMoveTracker . isDragging ( ) ) { startDrag = ! 0 , offset += deltaX , size = optimizeSize ( defaultSize + offset ) , widget . element . addClass ( "dragging" ) ; var percent = 100 * size / self . _getGrayTrackLength ( ) , significantPercent = BI . parseFloat ( percent . toFixed ( 1 ) ) ; self . _setBlueTrack ( significantPercent ) , self . _setSliderPosition ( significantPercent ) ; var v = self . _getValueByPercent ( significantPercent ) ; v = o . digit === ! 1 ? v : v . toFixed ( o . digit ) , self . value = v , self . fireEvent ( BI . SingleSliderNormal . EVENT _DRAG , v ) } } , function ( ) { if ( startDrag === ! 0 ) { size = optimizeSize ( size ) ; var percent = 100 * size / self . _getGrayTrackLength ( ) , significantPercent = BI . parseFloat ( percent . toFixed ( 1 ) ) ; self . _setSliderPosition ( significantPercent ) , size = 0 , offset = 0 , defaultSize = size , startDrag = ! 1 } widget . element . removeClass ( "dragging" ) , mouseMoveTracker . releaseMouseMoves ( ) , self . fireEvent ( BI . SingleSlider . EVENT _CHANGE ) } , window ) ; widget . element . on ( "mousedown" , function ( event ) { widget . isEnabled ( ) && ( defaultSize = this . offsetLeft , optimizeSize ( defaultSize ) , mouseMoveTracker . captureMouseMoves ( event ) ) } ) } , _createTrack : function ( ) { var self = this , c = this . _constant ; return this . grayTrack = BI . createWidget ( { type : "bi.layout" , cls : "gray-track" , height : 6 } ) , this . blueTrack = BI . createWidget ( { type : "bi.layout" , cls : "blue-track bi-high-light-background" , height : 6 } ) , this . options . color && this . blueTrack . element . css ( { "background-color" : this . options . color } ) , { type : "bi.absolute" , items : [ { el : { type : "bi.vertical" , items : [ { type : "bi.absolute" , items : [ { el : this . grayTrack , top : 0 , left : 0 , width : "100%" } , { el : this . blueTrack , top : 0 , left : 0 , width : "0%" } ] } ] , hgap : 8 , height : 8 } , top : 8 , left : 0 , width : "100%" } ] , ref : function ( ref ) { self . track = ref } } } , _checkValidation : function ( v ) { return ! ( BI . isNull ( v ) || v < this . min || v > this . max ) } , _setBlueTrack : function ( percent ) { this . blueTrack . element . css ( { width : percent + "%" } ) } , _setSliderPosition : function ( percent ) { this . slider . element . css ( { left : percent + "%" } ) } , _setAllPosition : function ( percent ) { this . _setSliderPosition ( percent ) , this . _setBlueTrack ( percent ) } , _setVisible : function ( visible ) { this . slider . setVisible ( visible ) } , _getGrayTrackLength : function ( ) { return this . grayTrack . element [ 0 ] . scrollWidth } , _getValueByPercent : function ( percent ) { var thousandth = BI . parseInt ( 10 * percent ) ; return ( this . max - this . min ) * thousandth / 1e3 + this . min } , _getPercentByValue : function ( v ) { return 100 * ( v - this . min ) / ( this . max - this . min ) } , _setEnable : function ( b ) { BI . SingleSliderNormal . superclass . _setEnable . apply ( this , [ b ] ) , b ? this . blueTrack . element . removeClass ( "disabled-blue-track" ) . addClass ( "blue-track" ) : this . blueTrack . element . removeClass ( "blue-track" ) . addClass ( "disabled-blue-track" ) } , getValue : function ( ) { return this . value } , setValue : function ( v ) { var value = BI . parseFloat ( v ) ; isNaN ( value ) || ( this . _checkValidation ( value ) && ( this . value = value ) , value > this . max && ( this . value = this . max ) , value < this . min && ( this . value = this . min ) ) } , setMinAndMax : function ( v ) { var minNumber = BI . parseFloat ( v . min ) , maxNumber = BI . parseFloat ( v . max ) ; ! isNaN ( minNumber ) && ! isNaN ( maxNumber ) && maxNumber > minNumber && ( this . min = minNumber , this . max = maxNumber ) } , reset : function ( ) { this . _setVisible ( ! 1 ) , this . enable = ! 1 , this . value = "" , this . min = 0 , this
listeners : [ { eventName : BI . IconButton . EVENT _CHANGE , action : function ( ) { self . navigation . setSelect ( self . navigation . getSelect ( ) - 1 ) , self . _checkLeftValid ( ) , self . _checkRightValid ( ) } } ] } ) , this . preBtn = BI . createWidget ( { type : "bi.icon_button" , cls : "next-page-h-font" , width : 25 , height : 25 , value : 1 , listeners : [ { eventName : BI . IconButton . EVENT _CHANGE , action : function ( ) { self . navigation . setSelect ( self . navigation . getSelect ( ) + 1 ) , self . _checkLeftValid ( ) , self . _checkRightValid ( ) } } ] } ) , this . navigation = BI . createWidget ( { type : "bi.navigation" , direction : "top" , element : this , single : ! 0 , logic : { dynamic : ! 0 } , tab : { type : "bi.htape" , cls : "bi-split-top bi-split-bottom" , height : 30 , items : [ { el : { type : "bi.center_adapt" , items : [ self . backBtn ] } , width : 25 } , { type : "bi.layout" } , { el : { type : "bi.center_adapt" , items : [ self . preBtn ] } , width : 25 } ] } , cardCreator : BI . bind ( this . _createYearCalendar , this ) , afterCardShow : function ( ) { this . setValue ( self . selectedYear ) ; var calendar = this . getSelectedCard ( ) ; self . backBtn . setEnable ( ! calendar . isFrontYear ( ) ) , self . preBtn . setEnable ( ! calendar . isFinalYear ( ) ) } } ) , this . navigation . on ( BI . Navigation . EVENT _CHANGE , function ( ) { self . selectedYear = this . getValue ( ) , self . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) , self . fireEvent ( BI . StaticYearCard . EVENT _CHANGE , self . selectedYear ) } ) , BI . isKey ( o . value ) && this . setValue ( o . value ) } , _checkLeftValid : function ( ) { var o = this . options , valid = ! 0 ; return this . backBtn . setEnable ( valid ) , valid } , _checkRightValid : function ( ) { var o = this . options , valid = ! 0 ; return this . preBtn . setEnable ( valid ) , valid } , getValue : function ( ) { return { year : this . selectedYear } } , setValue : function ( obj ) { var o = this . options ; obj = obj || { } ; var v = obj . year ; BI . checkDateVoid ( v , 1 , 1 , o . min , o . max ) [ 0 ] ? ( v = BI . getDate ( ) . getFullYear ( ) , this . selectedYear = "" , this . navigation . setSelect ( BI . YearCalendar . getPageByYear ( v ) ) , this . navigation . setValue ( "" ) ) : ( this . selectedYear = BI . parseInt ( v ) , this . navigation . setSelect ( BI . YearCalendar . getPageByYear ( v ) ) , this . navigation . setValue ( this . selectedYear ) ) , this . _checkLeftValid ( ) , this . _checkRightValid ( ) } } ) , BI . StaticYearCard . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.static_year_card" , BI . StaticYearCard ) , BI . DynamicYearCombo = BI . inherit ( BI . Widget , { props : { baseCls : "bi-year-combo bi-border bi-focus-shadow" , behaviors : { } , min : "1900-01-01" , max : "2099-12-31" , height : 22 } , _init : function ( ) { BI . DynamicYearCombo . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options ; this . storeValue = o . value , this . trigger = BI . createWidget ( { type : "bi.dynamic_year_trigger" , min : o . min , max : o . max , height : o . height , value : o . value || "" } ) , this . trigger . on ( BI . DynamicYearTrigger . EVENT _KEY _DOWN , function ( ) { self . combo . isViewVisible ( ) && self . combo . hideView ( ) } ) , this . trigger . on ( BI . DynamicYearTrigger . EVENT _FOCUS , function ( ) { self . storeTriggerValue = this . getKey ( ) } ) , this . trigger . on ( BI . DynamicYearTrigger . EVENT _START , function ( ) { self . combo . isViewVisible ( ) && self . combo . hideView ( ) } ) , this . trigger . on ( BI . DynamicYearTrigger . EVENT _STOP , function ( ) { self . combo . showView ( ) } ) , this . trigger . on ( BI . DynamicYearTrigger . EVENT _ERROR , function ( ) { self . combo . isViewVisible ( ) && self . combo . hideView ( ) } ) , this . trigger . on ( BI . DynamicYearTrigger . EVENT _CONFIRM , function ( ) { self . combo . isViewVisible ( ) || ( this . getKey ( ) && this . getKey ( ) !== self . storeTriggerValue ? ( self . storeValue = self . trigger . getValue ( ) , self . setValue ( self . storeValue ) ) : this . getKey ( ) || ( self . storeValue = null , self . setValue ( ) ) , self . _checkDynamicValue ( self . storeValue ) , self . fireEvent ( BI . DynamicYearCombo . EVENT _CONFIRM ) ) } ) , this . combo = BI . createWidget ( { type : "bi.combo" , container : o . container , isNeedAdjustHeight : ! 1 , isNeedAdjustWidth : ! 1 , el : this . trigger , popup : { minWidth : 85 , stopPropagation : ! 1 , el : { type : "bi.dynamic_year_popup" , ref : function ( ) { self . popup = this } , listeners : [ { eventName : BI . DynamicYearPopup . EVENT _CHANGE , action : function ( ) { self . setValue ( self . popup . getValue ( ) ) , self . combo . hideView ( ) , self . fireEvent ( BI . DynamicYearCombo . EVENT _CONFIRM ) } } , { eventName : BI . DynamicYearPopup . BUTTON _CLEAR _EVENT _CHANGE , action : function ( ) { self . setValue ( ) , self . combo . hideView ( ) , self . fireEvent ( BI . DynamicYearCombo . EVENT _CONFIRM ) } } , { eventName : BI . DynamicYearPopup . BUTTON _lABEL _EVENT _CHANGE , action : function ( ) { var date = BI . getDate ( ) ; self . setValue ( { type : BI . DynamicYearCombo . Static , value : { year : date
BI . YearMonthInterval = BI . inherit ( BI . Single , { constants : { height : 24 , width : 25 , lgap : 15 , offset : - 15 , timeErrorCls : "time-error" } , props : { extraCls : "bi-year-month-interval" , minDate : "1900-01-01" , maxDate : "2099-12-31" } , _init : function ( ) { var self = this , o = this . options ; BI . YearMonthInterval . superclass . _init . apply ( this , arguments ) , o . value = o . value || { } , this . left = this . _createCombo ( o . value . start ) , this . right = this . _createCombo ( o . value . end ) , this . label = BI . createWidget ( { type : "bi.label" , height : this . constants . height , width : this . constants . width , text : "-" } ) , BI . createWidget ( { element : self , type : "bi.center" , hgap : 15 , height : this . constants . height , items : [ { type : "bi.absolute" , items : [ { el : self . left , left : this . constants . offset , right : 0 , top : 0 , bottom : 0 } ] } , { type : "bi.absolute" , items : [ { el : self . right , left : 0 , right : this . constants . offset , top : 0 , bottom : 0 } ] } ] } ) , BI . createWidget ( { type : "bi.horizontal_auto" , element : this , items : [ self . label ] } ) } , _createCombo : function ( v ) { var self = this , o = this . options , combo = BI . createWidget ( { type : "bi.dynamic_year_month_combo" , behaviors : o . behaviors , value : v , listeners : [ { eventName : BI . DynamicYearMonthCombo . EVENT _BEFORE _POPUPVIEW , action : function ( ) { self . fireEvent ( BI . YearMonthInterval . EVENT _BEFORE _POPUPVIEW ) } } ] } ) ; return combo . on ( BI . DynamicYearMonthCombo . EVENT _ERROR , function ( ) { self . _clearTitle ( ) , BI . Bubbles . hide ( "error" ) , self . element . removeClass ( self . constants . timeErrorCls ) , self . fireEvent ( BI . YearMonthInterval . EVENT _ERROR ) } ) , combo . on ( BI . DynamicYearMonthCombo . EVENT _VALID , function ( ) { self . _checkValid ( ) } ) , combo . on ( BI . DynamicYearMonthCombo . EVENT _FOCUS , function ( ) { self . _checkValid ( ) } ) , combo . on ( BI . DynamicYearMonthCombo . EVENT _BEFORE _POPUPVIEW , function ( ) { self . left . hideView ( ) , self . right . hideView ( ) } ) , combo . on ( BI . DynamicYearMonthCombo . EVENT _CONFIRM , function ( ) { BI . Bubbles . hide ( "error" ) ; var smallDate = self . left . getKey ( ) , bigDate = self . right . getKey ( ) ; self . left . isValid ( ) && self . right . isValid ( ) && self . _check ( smallDate , bigDate ) && self . _compare ( smallDate , bigDate ) ? ( self . _setTitle ( BI . i18nText ( "BI-Time_Interval_Error_Text" ) ) , self . element . addClass ( self . constants . timeErrorCls ) , self . fireEvent ( BI . YearMonthInterval . EVENT _ERROR ) ) : ( self . _clearTitle ( ) , self . element . removeClass ( self . constants . timeErrorCls ) , self . fireEvent ( BI . YearMonthInterval . EVENT _CHANGE ) ) } ) , combo } , _dateCheck : function ( date ) { return BI . print ( BI . parseDateTime ( date , "%Y-%x" ) , "%Y-%x" ) === date || BI . print ( BI . parseDateTime ( date , "%Y-%X" ) , "%Y-%X" ) === date } , _checkVoid : function ( obj ) { var o = this . options ; return ! BI . checkDateVoid ( obj . year , obj . month , 1 , o . minDate , o . maxDate ) [ 0 ] } , _check : function ( smallDate , bigDate ) { var smallObj = smallDate . match ( /\d+/g ) , bigObj = bigDate . match ( /\d+/g ) , smallDate4Check = "" ; BI . isNotNull ( smallObj ) && ( smallDate4Check = ( smallObj [ 0 ] || "" ) + "-" + ( smallObj [ 1 ] || 1 ) ) ; var bigDate4Check = "" ; return BI . isNotNull ( bigObj ) && ( bigDate4Check = ( bigObj [ 0 ] || "" ) + "-" + ( bigObj [ 1 ] || 1 ) ) , this . _dateCheck ( smallDate4Check ) && BI . checkDateLegal ( smallDate ) && this . _checkVoid ( { year : smallObj [ 0 ] , month : smallObj [ 1 ] , day : 1 } ) && this . _dateCheck ( bigDate4Check ) && BI . checkDateLegal ( bigDate ) && this . _checkVoid ( { year : bigObj [ 0 ] , month : bigObj [ 1 ] , day : 1 } ) } , _compare : function ( smallDate , bigDate ) { return smallDate = BI . print ( BI . parseDateTime ( smallDate , "%Y-%X" ) , "%Y-%X" ) , bigDate = BI . print ( BI . parseDateTime ( bigDate , "%Y-%X" ) , "%Y-%X" ) , BI . isNotNull ( smallDate ) && BI . isNotNull ( bigDate ) && smallDate > bigDate } , _setTitle : function ( v ) { this . setTitle ( v ) } , _clearTitle : function ( ) { this . setTitle ( "" ) } , _checkValid : function ( ) { var self = this ; BI . Bubbles . hide ( "error" ) ; var smallDate = self . left . getKey ( ) , bigDate = self . right . getKey ( ) ; self . left . isValid ( ) && self . right . isValid ( ) && self . _check ( smallDate , bigDate ) && self . _compare ( smallDate , bigDate ) ? ( self . _setTitle ( BI . i18nText ( "BI-Time_Interval_Error_Text" ) ) , self . element . addClass ( self . constants . timeErrorCls ) , BI . Bubbles . show ( "error" , BI . i18nText ( "BI-Time_Interval_Error_Text" ) , self , { offsetStyle : "center" } ) , self . fireEvent ( BI . YearMonthInterval . EVENT _ERROR ) ) : ( self . _clearTitle ( ) , self . element . removeClass ( self . constants . timeErrorCls ) ) } , setValue : function ( date ) { date = date || { } , this . left . setValue ( date . start ) , this . right . setValue ( date . end ) , this . _checkValid ( ) } , getValue : function ( ) { return { start : this . left . getValue ( ) , end : this . right . getValue ( )
} if ( 1 === op . times ) { var nodes = self . _getAddedValueNode ( [ ] , selectedValues ) ; result = BI . concat ( BI . filter ( nodes , function ( idx , node ) { var find = BI . Func . getSearchResult ( [ node . text || node . value ] , keyword ) ; return find . find . length > 0 || find . match . length > 0 } ) , result ) } return output } function nodeSearch ( deep , parentValues , current , isAllSelect , result ) { if ( self . _isMatch ( parentValues , current , keyword ) ) { var checked = isAllSelect || isSelected ( parentValues , current ) ; return createOneJson ( parentValues , current , ! 1 , checked , ! isAllSelect && isHalf ( parentValues , current ) , ! 0 , result ) , [ ! 0 , checked ] } var newParents = BI . clone ( parentValues ) ; newParents . push ( current ) ; var children = self . _getChildren ( newParents ) , can = ! 1 , checked = ! 1 , isCurAllSelected = isAllSelect || isAllSelected ( parentValues , current ) ; return BI . each ( children , function ( i , child ) { var state = nodeSearch ( deep + 1 , newParents , child . value , isCurAllSelected , result ) ; state [ 1 ] === ! 0 && ( checked = ! 0 ) , state [ 0 ] === ! 0 && ( can = ! 0 ) } ) , can === ! 0 && ( checked = isCurAllSelected || isSelected ( parentValues , current ) && checked , createOneJson ( parentValues , current , ! 0 , checked , ! 1 , ! 1 , result ) ) , [ can , checked ] } function createOneJson ( parentValues , value , isOpen , checked , half , flag , result ) { var node = self . _getTreeNode ( parentValues , value ) ; result . push ( { id : node . id , pId : node . pId , text : node . text , value : node . value , title : node . title , isParent : node . getChildrenLength ( ) > 0 , open : isOpen , checked : checked , halfCheck : half , flag : flag } ) } function isHalf ( parentValues , value ) { var find = findSelectedObj ( parentValues ) ; return null == find ? null : BI . any ( find , function ( v , ob ) { if ( v === value && null != ob && ! BI . isEmpty ( ob ) ) return ! 0 } ) } function isAllSelected ( parentValues , value ) { var find = findSelectedObj ( parentValues ) ; return null == find ? null : BI . any ( find , function ( v , ob ) { if ( v === value && null != ob && BI . isEmpty ( ob ) ) return ! 0 } ) } function isSelected ( parentValues , value ) { var find = findSelectedObj ( parentValues ) ; return null != find && BI . any ( find , function ( v ) { if ( v === value ) return ! 0 } ) } function findSelectedObj ( parentValues ) { var find = selectedValues ; return null == find ? null : ( BI . every ( parentValues , function ( i , v ) { return find = find [ v ] , null != find } ) , find ) } var self = this , result = [ ] , keyword = op . keyword || "" , selectedValues = op . selectedValues , lastSearchValue = op . lastSearchValue || "" , output = search ( ) ; BI . nextTick ( function ( ) { callback ( { hasNext : output . length > self . _const . perPage , items : result , lastSearchValue : BI . last ( output ) } ) } ) } , _reqTreeNode : function ( op , callback ) { function judgeState ( parentValues , selected _value , checkState ) { var checked = checkState . checked , half = checkState . half ; return ! ( parentValues . length > 0 && ! checked ) && ( 0 === parentValues . length || checked && half && ! BI . isEmpty ( selected _value ) ) } function dealWithSelectedValue ( parentValues , selectedValues ) { var valueMap = { } ; return BI . each ( parentValues , function ( i , v ) { selectedValues = selectedValues [ v ] || { } } ) , BI . each ( selectedValues , function ( value , obj ) { if ( BI . isNull ( obj ) ) return void ( valueMap [ value ] = [ 0 , 0 ] ) ; if ( BI . isEmpty ( obj ) ) return void ( valueMap [ value ] = [ 2 , 0 ] ) ; var nextNames = { } ; BI . each ( obj , function ( t , o ) { ( BI . isNull ( o ) || BI . isEmpty ( o ) ) && ( nextNames [ t ] = ! 0 ) } ) , valueMap [ value ] = [ 1 , BI . size ( nextNames ) ] } ) , valueMap } function getCheckState ( current , parentValues , valueMap , checkState ) { var checked = checkState . checked , half = checkState . half , tempCheck = ! 1 , halfCheck = ! 1 ; if ( BI . has ( valueMap , current ) ) if ( 1 === valueMap [ current ] [ 0 ] ) { var values = BI . clone ( parentValues ) ; values . push ( current ) ; var childCount = self . _getChildCount ( values ) ; childCount > 0 && childCount !== valueMap [ current ] [ 1 ] && ( halfCheck = ! 0 ) } else 2 === valueMap [ current ] [ 0 ] && ( tempCheck = ! 0 ) ; var check ; return check = checked || halfCheck || tempCheck ? ( tempCheck || checked ) && ! half || BI . has ( valueMap , current ) : BI . has ( valueMap , current ) , [ check , halfCheck ] } var self = this , o = this . options , result = [ ] , times = op . times , checkState = op . checkState || { } , parentValues = op . parentValues || [ ] , selectedValues = op . selectedValues || { } , valueMap = { } ; valueMap = dealWithSelectedValue ( parentValues , selectedValues ) ; for ( var nodes = this . _getChildren ( parentValues ) , i = ( times - 1 ) * this . _const . perPage ; nodes [ i ] && i < times * this . _const . perPage ; i ++ ) { var state = getCheckState ( nodes [ i ] . value , parentValues , valueMap , checkState ) ; result . push ( { id : nodes [ i ] . id , pId : nodes [ i ] . pId , value : nodes [ i ] . value , text : nodes [ i ] . text , times : 1 , isParent : nodes [ i ] . getC
} , _extractParameters : function ( route , fragment ) { var params = route . exec ( fragment ) . slice ( 1 ) ; return _ . map ( params , function ( param , i ) { return i === params . length - 1 ? param || null : param ? decodeURIComponent ( param ) : null } ) } } ) ; var History = function ( ) { this . handlers = [ ] , this . checkUrl = _ . bind ( this . checkUrl , this ) , "undefined" != typeof window && ( this . location = _global . location , this . history = _global . history ) } , routeStripper = /^[#\/]|\s+$/g , rootStripper = /^\/+|\/+$/g , pathStripper = /#.*$/ ; History . started = ! 1 , _ . extend ( History . prototype , Events , { interval : 50 , atRoot : function ( ) { var path = this . location . pathname . replace ( /[^\/]$/ , "$&/" ) ; return path === this . root && ! this . getSearch ( ) } , getSearch : function ( ) { var match = this . location . href . replace ( /#.*/ , "" ) . match ( /\?.+/ ) ; return match ? match [ 0 ] : "" } , getHash : function ( window ) { var match = ( window || this ) . location . href . match ( /#(.*)$/ ) ; return match ? match [ 1 ] : "" } , getPath : function ( ) { var path = decodeURI ( this . location . pathname + this . getSearch ( ) ) , root = this . root . slice ( 0 , - 1 ) ; return path . indexOf ( root ) || ( path = path . slice ( root . length ) ) , "/" === path . charAt ( 0 ) ? path . slice ( 1 ) : path } , getFragment : function ( fragment ) { return null == fragment && ( fragment = this . _hasPushState || ! this . _wantsHashChange ? this . getPath ( ) : this . getHash ( ) ) , fragment . replace ( routeStripper , "" ) } , start : function ( options ) { if ( History . started ) throw new Error ( "BI.history has already been started" ) ; if ( History . started = ! 0 , this . options = _ . extend ( { root : "/" } , this . options , options ) , this . root = this . options . root , this . _wantsHashChange = this . options . hashChange !== ! 1 , this . _hasHashChange = "onhashchange" in window , this . _wantsPushState = ! ! this . options . pushState , this . _hasPushState = ! ! ( this . options . pushState && this . history && this . history . pushState ) , this . fragment = this . getFragment ( ) , this . root = ( "/" + this . root + "/" ) . replace ( rootStripper , "/" ) , this . _wantsHashChange && this . _wantsPushState ) { if ( ! this . _hasPushState && ! this . atRoot ( ) ) { var root = this . root . slice ( 0 , - 1 ) || "/" ; return this . location . replace ( root + "#" + this . getPath ( ) ) , ! 0 } this . _hasPushState && this . atRoot ( ) && this . navigate ( this . getHash ( ) , { replace : ! 0 } ) } if ( ! this . _hasHashChange && this . _wantsHashChange && ( ! this . _wantsPushState || ! this . _hasPushState ) ) { var iframe = document . createElement ( "iframe" ) ; iframe . src = "javascript:0" , iframe . style . display = "none" , iframe . tabIndex = - 1 ; var body = document . body ; this . iframe = body . insertBefore ( iframe , body . firstChild ) . contentWindow , this . iframe . document . open ( ) . close ( ) , this . iframe . location . hash = "#" + this . fragment } var addEventListener = _global . addEventListener || function ( eventName , listener ) { return attachEvent ( "on" + eventName , listener ) } ; if ( this . _hasPushState ? addEventListener ( "popstate" , this . checkUrl , ! 1 ) : this . _wantsHashChange && this . _hasHashChange && ! this . iframe ? addEventListener ( "hashchange" , this . checkUrl , ! 1 ) : this . _wantsHashChange && ( this . _checkUrlInterval = setInterval ( this . checkUrl , this . interval ) ) , ! this . options . silent ) return this . loadUrl ( ) } , stop : function ( ) { var removeEventListener = _global . removeEventListener || function ( eventName , listener ) { return detachEvent ( "on" + eventName , listener ) } ; this . _hasPushState ? removeEventListener ( "popstate" , this . checkUrl , ! 1 ) : this . _wantsHashChange && this . _hasHashChange && ! this . iframe && removeEventListener ( "hashchange" , this . checkUrl , ! 1 ) , this . iframe && ( document . body . removeChild ( this . iframe . frameElement ) , this . iframe = null ) , this . _checkUrlInterval && clearInterval ( this . _checkUrlInterval ) , History . started = ! 1 } , route : function ( route , callback ) { this . handlers . unshift ( { route : route , callback : callback } ) } , checkUrl : function ( e ) { var current = this . getFragment ( ) ; return current === this . fragment && this . iframe && ( current = this . getHash ( this . iframe ) ) , current !== this . fragment && ( this . iframe && this . navigate ( current ) , void this . loadUrl ( ) ) } , loadUrl : function ( fragment ) { return fragment = this . fragment = this . getFragment ( fragment ) , _ . some ( this . handlers , function ( handler ) { if ( handler . route . test ( fragment ) ) return handler . callback ( fragment ) , ! 0 } ) } , navigate : function ( fragment , options ) { if ( ! History . started ) return ! 1 ; options && options !== ! 0 || ( options = { trigger : ! ! options } ) , fragment = this . getFragment ( fragment || "" ) ; var root = this . root ; "" !== fragment && "?" !== fragment . charAt ( 0 ) || ( root = root . slice ( 0 , - 1 ) || "/" ) ; var url = root + fragment ; if ( fragment = decodeURI ( fragmen
! function ( r ) { var n = { } ; function o ( e ) { if ( n [ e ] ) return n [ e ] . exports ; var t = n [ e ] = { i : e , l : ! 1 , exports : { } } ; return r [ e ] . call ( t . exports , t , t . exports , o ) , t . l = ! 0 , t . exports } o . m = r , o . c = n , o . d = function ( e , t , r ) { o . o ( e , t ) || Object . defineProperty ( e , t , { enumerable : ! 0 , get : r } ) } , o . r = function ( e ) { "undefined" != typeof Symbol && Symbol . toStringTag && Object . defineProperty ( e , Symbol . toStringTag , { value : "Module" } ) , Object . defineProperty ( e , "__esModule" , { value : ! 0 } ) } , o . t = function ( t , e ) { if ( 1 & e && ( t = o ( t ) ) , 8 & e ) return t ; if ( 4 & e && "object" == typeof t && t && t . _ _esModule ) return t ; var r = Object . create ( null ) ; if ( o . r ( r ) , Object . defineProperty ( r , "default" , { enumerable : ! 0 , value : t } ) , 2 & e && "string" != typeof t ) for ( var n in t ) o . d ( r , n , function ( e ) { return t [ e ] } . bind ( null , n ) ) ; return r } , o . n = function ( e ) { var t = e && e . _ _esModule ? function ( ) { return e [ "default" ] } : function ( ) { return e } ; return o . d ( t , "a" , t ) , t } , o . o = function ( e , t ) { return Object . prototype . hasOwnProperty . call ( e , t ) } , o . p = "" , o ( o . s = 141 ) } ( { 141 : function ( e , t , r ) { e . exports = r ( 142 ) } , 142 : function ( e , t , r ) { "use strict" ; var n = function o ( e ) { return e && e . _ _esModule ? e : { "default" : e } } ( r ( 143 ) ) ; BI . extend ( BI , n [ "default" ] ) } , 143 : function ( e , t , r ) { "use strict" ; function i ( ) { if ( "function" != typeof WeakMap ) return null ; var e = new WeakMap ; return i = function ( ) { return e } , e } Object . defineProperty ( t , "__esModule" , { value : ! 0 } ) , t [ "default" ] = void 0 ; var n = { Decorators : function c ( e ) { if ( e && e . _ _esModule ) return e ; var t = i ( ) ; if ( t && t . has ( e ) ) return t . get ( e ) ; var r = { } ; if ( null != e ) { var n = Object . defineProperty && Object . getOwnPropertyDescriptor ; for ( var o in e ) if ( Object . prototype . hasOwnProperty . call ( e , o ) ) { var u = n ? Object . getOwnPropertyDescriptor ( e , o ) : null ; u && ( u . get || u . set ) ? Object . defineProperty ( r , o , u ) : r [ o ] = e [ o ] } } r [ "default" ] = e , t && t . set ( e , r ) ; return r } ( r ( 144 ) ) } ; t [ "default" ] = n } , 144 : function ( e , t , r ) { "use strict" ; function u ( e ) { if ( void 0 === e ) throw new ReferenceError ( "this hasn't been initialised - super() hasn't been called" ) ; return e } function i ( e , t , r ) { return t in e ? Object . defineProperty ( e , t , { value : r , enumerable : ! 0 , configurable : ! 0 , writable : ! 0 } ) : e [ t ] = r , e } function c ( e , t ) { e . prototype = Object . create ( t . prototype ) , function i ( e , t ) { for ( var r = Object . getOwnPropertyNames ( t ) , n = 0 ; n < r . length ; n ++ ) { var o = r [ n ] , u = Object . getOwnPropertyDescriptor ( t , o ) ; u && u . configurable && e [ o ] === undefined && Object . defineProperty ( e , o , u ) } return e } ( e . prototype . constructor = e , t ) } Object . defineProperty ( t , "__esModule" , { value : ! 0 } ) , t . shortcut = function o ( ) { return function ( e ) { BI . shortcut ( e . xtype , e ) } } , t . model = function f ( ) { return function ( e ) { BI . model ( e . xtype , e ) } } , t . store = function l ( r ) { var n = 1 < arguments . length && arguments [ 1 ] !== undefined ? arguments [ 1 ] : { } ; return function ( e ) { return function ( e ) { function t ( ) { return e . apply ( this , arguments ) || this } return c ( t , e ) , t . prototype . _store = function ( ) { var e = n . props ? n . props . apply ( this ) : undefined ; return BI . Models . getModel ( r . xtype , e ) } , t } ( e ) } } , t . Model = void 0 ; var n = function ( o ) { function e ( ) { for ( var e , t = arguments . length , r = new Array ( t ) , n = 0 ; n < t ; n ++ ) r [ n ] = arguments [ n ] ; return i ( u ( e = o . call . apply ( o , [ this ] . concat ( r ) ) || this ) , "model" , void 0 ) , i ( u ( e ) , "store" , void 0 ) , i ( u ( e ) , "context" , void 0 ) , i ( u ( e ) , "actions" , void 0 ) , i ( u ( e ) , "childContext" , void 0 ) , i ( u ( e ) , "TYPE" , void 0 ) , i ( u ( e ) , "computed" , void 0 ) , e } return c ( e , o ) , e . prototype . state = function ( ) { return { } } , e } ( Fix . Model ) ; t . Model = n } } ) ;