/*! fineui 2020-05-13 18:04:40 */
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 = t . target , c = t . global , f = t . stat , a = c ? s : f ? s [ u ] || d ( u , { } ) : ( s [ u ] || { } ) . prototype ; if ( a ) for ( e in n ) { if ( o = n [ e ] , r = t . noTargetGet ? ( i = l ( a , e ) ) && i . value : a [ e ] , ! y ( c ? e : u + ( f ? "." : "#" ) + e , t . forced ) && void 0 !== r ) { if ( typeof o == typeof r ) continue ; h ( o , r ) } ( t . sham || r && r . sham ) && p ( o , "sham" , ! 0 ) , v ( a , e , o , 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 , c , f , a , s , l = e ( 76 ) , p = e ( 0 ) , v = e ( 7 ) , d = e ( 6 ) , h = e ( 8 ) , y = e ( 26 ) , g = e ( 27 ) , x = p . WeakMap ; a = l ? ( r = new x , o = r . get , i = r . has , u = r . set , c = function ( t , n ) { return u . call ( r , t , n ) , n } , f = function ( t ) { return o . call ( r , t ) || { } } , function ( t ) { return i . call ( r , t ) } ) : ( g [ s = y ( "state" ) ] = ! 0 , c = function ( t , n ) { return d ( t , s , n ) , n } , f = function ( t ) { return h ( t , s ) ? t [ s ] : { } } , function ( t ) { return h ( t , s ) } ) , t . exports = { set : c , get : f , has : a , enforce : function ( t ) { return a ( t ) ? f ( t ) : c ( t , { } ) } , getterFor : functi
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 = void 0 === ( t = p ( this ) . name ) ? "AggregateError" : String ( t ) , 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 , c = r . global ; c && ( u = r . unicode , r . lastIndex = 0 ) ; for ( var f = [ ] ; ; ) { var a = T ( r , o ) ; if ( null === a ) break ; if ( f . push ( a ) , ! c ) break ; "" === String ( a [ 0 ] ) && ( r . lastIndex = A ( o , P ( r . lastIndex ) , u ) ) } 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 , m = a . groups , b = i ? ( x = [ d ] . concat ( y , h , o ) , void 0 !== m && x . push ( m ) , String ( n . apply ( void 0 , x ) ) ) : j ( d , o , h , y , m , 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 = ! v ( function ( ) { var t = / .
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 = castPath ( path , object ) , object = parent ( object , path ) , null == object || delete object [ toKey ( last ( path ) ) ] } function baseWrappe
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 } function flush ( ) { return timerId === undefined ? result : trailingEdge ( now ( ) ) } function debounced ( ) { var time = now ( ) , isInvoking = shoul
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 = /^(?:push|sort|unshift)$/ . test ( methodName ) ? "tap" : "thru" , retUnwrapped = /^(?:pop|shift)$/ . test ( methodName ) ; lodash . protot
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 widget = BI . createWidget . apply ( this , arguments ) ; return widget . element } } ( ) , ! function ( ) { BI . CRYPT _TYPE = BI . C
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 . getTotalSize ( ) , safeTotalSize = this . getTotalSize ( ) ; if ( totalSize === safeTotalSize ) return offset ; var offsetPercentage = this . _getOffsetPercentage
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 [ parentIndex ] ; if ( this . _comparator ( parentElt , elt ) ) return ; this . _items [ parentIndex ] = elt , this . _items [ index ] = parentElt , index = parentIndex }
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 ) ) , magnitude < 0 && ( magnitudeNeg = "-" , magnitude *= - 1 ) ; var precision = getPrecision ( format ) , isValueCarry = isValueCarried ( num ) ; return num *= Math . pow ( 10
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 != year % 4 || 0 == year % 100 && 0 != year % 400 || 1 != month ? BI . Date . _MD [ month ] : 29 } , getLastDateOfMonth : function ( date ) { return BI . getDate ( date . getFullYear ( ) , date . getMonth ( ) , BI . getMonthDays (
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 ! ! color && "rgb" === color . substr ( 0 , 3 ) } , isHexColor : function ( color ) { return ! !
} 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 . isFunction ( animation . opts . start ) && animation . opts . start . call ( elem , animation ) ,
} ) : 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 !== nType ) return notxml = 1 !== nType || ! jQuery . isXMLDoc ( elem ) , notxml && ( name = jQuery . prop
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 . appendChild ( doc . createComment ( "" ) ) , ! div . getElementsByTagName ( "*" ) . length } ) , support . a
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
return setting } , _getParentValues : function ( treeNode ) { 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
self . popupView && ( self . popupView . element . on ( "mouseenter." + self . getName ( ) , function ( e ) { enterPopup = ! 0 , self . popupView . element . on ( "mouseleave." + self . getName ( ) , function ( e ) { hide ( ) } ) , self . popupView . element . off ( "mouseenter." + self . getName ( ) ) } ) , BI . defer ( function ( ) { enterPopup || hide ( ) } , 50 ) ) } ) } } ) } , _initCombo : function ( ) { this . combo = BI . createWidget ( this . options . el , { value : this . options . value } ) } , _assertPopupView : function ( ) { var self = this , o = this . options ; null == this . popupView && ( this . popupView = BI . createWidget ( this . options . popup , { type : "bi.popup_view" , value : o . value } , this ) , this . popupView . on ( BI . Controller . EVENT _CHANGE , function ( type , value , obj ) { type === BI . Events . CLICK && ( self . combo . setValue ( self . getValue ( ) ) , self . fireEvent ( BI . Combo . EVENT _CHANGE , value , obj ) ) , self . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . popupView . setVisible ( ! 1 ) , 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"
toggle : ! 0 , el : { } , popup : { } , adapter : null , masker : { } , switcherClass : "bi-switcher-popup" , hoverClass : "bi-switcher-hover" } ) } , _init : function ( ) { BI . Switcher . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options ; this . _initSwitcher ( ) , this . _initPullDownAction ( ) , this . switcher . on ( BI . Controller . EVENT _CHANGE , function ( type , value , obj ) { self . isEnabled ( ) && self . isValid ( ) && ( type === BI . Events . EXPAND && self . _popupView ( ) , type === BI . Events . COLLAPSE && self . _hideView ( ) , type === BI . Events . EXPAND && ( self . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) , self . fireEvent ( BI . Switcher . EVENT _EXPAND ) ) , type === BI . Events . COLLAPSE && ( self . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) , self . isViewVisible ( ) && self . fireEvent ( BI . Switcher . EVENT _COLLAPSE ) ) , type === BI . Events . CLICK && self . fireEvent ( BI . Switcher . EVENT _TRIGGER _CHANGE , value , obj ) ) } ) , this . element . hover ( function ( ) { self . isEnabled ( ) && self . switcher . isEnabled ( ) && self . element . addClass ( o . hoverClass ) } , 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
} , empty : function ( ) { this . searcher . empty ( ) , this . matcher . empty ( ) } , hasMatched : function ( ) { return this . matcher . getAllButtons ( ) . length > 0 } } ) , BI . SearcherView . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.searcher_view" , BI . SearcherView ) , BI . ListView = BI . inherit ( BI . Widget , { props : function ( ) { return { baseCls : "bi-list-view" , overscanHeight : 100 , blockSize : 10 , scrollTop : 0 , el : { } , items : [ ] } } , init : function ( ) { var self = this ; this . renderedIndex = - 1 , this . cache = { } } , render : function ( ) { var self = this , o = this . options ; return { type : "bi.vertical" , items : [ BI . extend ( { type : "bi.vertical" , scrolly : ! 1 , ref : function ( ) { self . container = this } } , o . el ) ] , element : this } } , mounted : function ( ) { var self = this , o = this . options ; this . _populate ( ) , this . element . scroll ( function ( e ) { o . scrollTop = self . element . scrollTop ( ) , self . _calculateBlocksToRender ( ) } ) ; var lastWidth = this . element . width ( ) , lastHeight = this . element . height ( ) ; BI . ResizeDetector . addResizeListener ( this , function ( ) { var width = self . element . width ( ) , height = self . element . height ( ) ; width === lastWidth && height === lastHeight || ( lastWidth = width , lastHeight = height , 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
} , unHighLight : function ( ) { this . text . unHighLight . 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 . TextItem . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.text_item" , BI . TextItem ) , BI . IconTextIconNode = BI . inherit ( BI . NodeButton , { _defaultConfig : function ( ) { var conf = BI . IconTextIconNode . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( conf , { baseCls : ( conf . baseCls || "" ) + " bi-icon-text-icon-node" , logic : { dynamic : ! 1 } , iconCls1 : "close-ha-font" , iconCls2 : "close-ha-font" , iconHeight : null , iconWidth : null , textHgap : 0 , textVgap : 0 , textLgap : 0 , textRgap : 0 } ) } , _init : function ( ) { BI . IconTextIconNode . superclass . _init . apply ( this , arguments ) ; var o = this . options , c = this . _const ; this . text = BI . createWidget ( { type : "bi.label" , 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 } ) ; 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 . baseCl
baseCls : ( conf . baseCls || "" ) + " bi-file display-block" , tagName : "input" , attributes : { type : "file" } , name : "" , url : "" , multiple : ! 0 , accept : "" , maxSize : - 1 } ) } , _init : function ( ) { var self = this , o = this . options ; BI . File . superclass . _init . apply ( this , arguments ) , o . multiple === ! 0 && this . element . attr ( "multiple" , "multiple" ) , this . element . attr ( "name" , o . name || this . getName ( ) ) , this . element . attr ( "title" , o . title || "" ) } , created : function ( ) { var self = this , o = this . options , _wrap = this . wrap = this . _wrap ( this . element [ 0 ] , o . maxSize ) ; _wrap . onloadstart = function ( rpe , xhr ) { self . fireEvent ( BI . File . EVENT _UPLOADSTART , arguments ) } , _wrap . onprogress = function ( rpe , xhr ) { this . file . fileSize !== - 1 && rpe . simulation , self . fireEvent ( BI . File . EVENT _PROGRESS , { file : this . file , total : rpe . total , loaded : rpe . loaded , simulation : rpe . simulation } ) } , _wrap . onerror = function ( ) { self . fireEvent ( BI . File . EVENT _ERROR ) } , _wrap . onload = function ( rpe , xhr ) { var self _ = this ; setTimeout ( function ( ) { if ( self _ . clean ( ) , self _ . hide ( ) , 200 > xhr . status || xhr . status > 399 ) return BI . Msg . toast ( BI . i18nText ( "BI-Upload_File_Error" ) , { level : "error" } ) , void self . fireEvent ( BI . File . EVENT _ERROR ) ; var error = BI . some ( _wrap . attach _array , function ( index , attach ) { 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 over
case "mousedown" : treeEventCallback = handler . onZTreeMousedown ; break ; case "mouseup" : treeEventCallback = handler . onZTreeMouseup ; break ; case "dblclick" : treeEventCallback = handler . onZTreeDblclick ; break ; case "contextmenu" : treeEventCallback = handler . onZTreeContextmenu } var proxyResult = { stop : ! 1 , node : node , nodeEventType : nodeEventType , nodeEventCallback : nodeEventCallback , treeEventType : treeEventType , treeEventCallback : treeEventCallback } ; return proxyResult } , _initNode = function ( setting , level , n , parentNode , isFirstNode , isLastNode , openFlag ) { if ( n ) { var r = data . getRoot ( setting ) , childKey = setting . data . key . children ; n . level = level , n . tId = setting . treeId + "_" + ++ r . zId , n . parentTId = parentNode ? parentNode . tId : null , n . open = "string" == typeof n . open ? tools . eqs ( n . open , "true" ) : ! ! n . open , n [ childKey ] && n [ childKey ] . length > 0 ? ( n . isParent = ! 0 , n . zAsync = ! 0 ) : ( n . isParent = "string" == typeof n . isParent ? tools . eqs ( n . isParent , "true" ) : ! ! n . isParent , n . open = ! ( ! n . isParent || setting . async . enable ) && n . open , n . zAsync = ! n . isParent ) , n . isFirstNode = isFirstNode , n . isLastNode = isLastNode , n . getParentNode = function ( ) { return data . getNodeCache ( setting , n . parentTId ) } , n . getPreNode = function ( ) { return data . getPreNode ( setting , n ) } , n . getNextNode = function ( ) { 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 ;
if ( ! view . asyncNode ( setting , node ) ) return void view . expandCollapseNode ( setting , node , ! node . open ) } else node && view . expandCollapseNode ( setting , node , ! node . open ) } } ; $ . fn . zTree = { consts : _consts , _z : { tools : tools , view : view , event : event , data : data } , getZTreeObj : function ( treeId ) { var o = data . getZTreeTools ( treeId ) ; return o ? o : null } , destroy : function ( treeId ) { if ( treeId && treeId . length > 0 ) view . destroy ( data . getSetting ( treeId ) ) ; else for ( var s in settings ) view . destroy ( settings [ s ] ) } , init : function ( obj , zSetting , zNodes ) { var setting = tools . clone ( _setting ) ; $ . extend ( ! 0 , setting , zSetting ) , setting . treeId = obj . attr ( "id" ) , setting . treeObj = obj , setting . treeObj . empty ( ) , settings [ setting . treeId ] = setting , "undefined" == typeof document . body . style . maxHeight && ( setting . view . expandSpeed = "" ) , data . initRoot ( setting ) ; var root = data . getRoot ( setting ) , childKey = setting . data . key . children ; zNodes = zNodes ? tools . clone ( tools . isArray ( zNodes ) ? zNodes : [ zNodes ] ) : [ ] , setting . data . simpleData . enable ? root [ childKey ] = data . transformTozTreeFormat ( setting , zNodes ) : root [ childKey ] = zNodes , data . initCache ( setting ) , event . unbindTree ( setting ) , event . bindTree ( setting ) , event . unbindEvent ( setting ) , 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 ( li
height : o . height , hgap : o . hgap , text : o . text , keyword : o . keyword , value : o . value , title : o . title || o . text , warningTitle : o . warningTitle , py : o . py } ) } , doRedMark : function ( ) { this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } , doClick : function ( ) { BI . SingleSelectItem . superclass . doClick . apply ( this , arguments ) , this . isValid ( ) && this . fireEvent ( BI . SingleSelectItem . EVENT _CHANGE , this . isSelected ( ) , this ) } , setSelected : function ( v ) { BI . SingleSelectItem . superclass . setSelected . apply ( this , arguments ) } } ) , BI . SingleSelectItem . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.single_select_item" , BI . SingleSelectItem ) , BI . SingleSelectRadioItem = BI . inherit ( BI . BasicButton , { _defaultConfig : function ( ) { return BI . extend ( BI . SingleSelectRadioItem . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "bi-single-select-radio-item" , logic : { dynamic : ! 1 } , hgap : 10 , height : 24 } ) } , _init : function ( ) { BI . SingleSelectRadioItem . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options ; this . radio = BI . createWidget ( { type : "bi.radio" , once : o . once } ) , this . text = BI . createWidget ( { type : "bi.label" , cls : "list-item-text" , textAlign : "left" , whiteSpace : "nowrap" , textHeight : o . height , height : o . height , hgap : o . hgap , text : o . text , keyword : o . keyword , value : o . value , py : o . py } ) , BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( "horizontal" , BI . extend ( o . logic , { items : BI . LogicFactory . createLogicItemsByDirection ( "left" , { type : "bi.center_adapt" , items : [ this . radio ] , width : 16 } , this . text ) } ) ) ) ) } , doRedMark : function ( ) { this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } , doClick : function ( ) { BI . SingleSelectRadioItem . superclass . doClick . apply ( this , arguments ) , this . radio . setSelected ( this . isSelected ( ) ) , this . isValid ( ) && this . fireEvent ( BI . SingleSelectRadioItem . EVENT _CHANGE , this . isSelected ( ) , this ) } , setSelected : function ( v ) { BI . SingleSelectRadioItem . superclass . setSelected . apply ( this , arguments ) , this . radio . setSelected ( v ) } } ) , BI . SingleSelectRadioItem . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.single_select_radio_item" , BI . SingleSelectRadioItem ) , BI . ArrowNode = BI . inherit ( BI . NodeButton , { _defaultConfig : function ( ) { var conf = BI . ArrowNode . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( conf , { baseCls : ( conf . baseCls || "" ) + " bi-arrow-group-node bi-list-item" , logic : { dynamic : ! 1 } , id : "" , pId : "" , open : ! 1 , height : 24 , iconWrapperWidth : 16 } ) } , _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 : o . iconWrapperWidth , 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 ,
} } ) , BI . shortcut ( "bi.checking_mark_node" , BI . CheckingMarkNode ) , BI . FirstTreeNodeCheckbox = BI . inherit ( BI . IconButton , { _defaultConfig : function ( ) { return BI . extend ( BI . FirstTreeNodeCheckbox . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "tree-collapse-icon-type2" , iconWidth : 24 , iconHeight : 24 } ) } , setSelected : function ( v ) { BI . FirstTreeNodeCheckbox . superclass . setSelected . apply ( this , arguments ) , v === ! 0 ? this . element . addClass ( "tree-expand-icon-type2" ) : this . element . removeClass ( "tree-expand-icon-type2" ) } } ) , BI . shortcut ( "bi.first_tree_node_checkbox" , BI . FirstTreeNodeCheckbox ) , BI . LastTreeNodeCheckbox = BI . inherit ( BI . IconButton , { _defaultConfig : function ( ) { return BI . extend ( BI . LastTreeNodeCheckbox . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "tree-collapse-icon-type4" , iconWidth : 24 , iconHeight : 24 } ) } , setSelected : function ( v ) { 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 )
type : "bi.center_adapt" , cls : "button-combo-triangle-wrapper" , items : [ { type : "bi.layout" , cls : "bubble-combo-triangle-" + direction } ] } ) , pos . el = this . triangle , BI . createWidget ( { type : "bi.absolute" , element : this , items : [ pos ] } ) } , _createLeftTriangle : function ( ) { this . _createTriangle ( "left" ) } , _createRightTriangle : function ( ) { this . _createTriangle ( "right" ) } , _createTopTriangle : function ( ) { this . _createTriangle ( "top" ) } , _createBottomTriangle : function ( ) { this . _createTriangle ( "bottom" ) } , _showTriangle : function ( ) { var pos = this . combo . getPopupPosition ( ) ; switch ( pos . dir ) { case "left,top" : case "left,bottom" : this . _createLeftTriangle ( ) ; break ; case "right,top" : case "right,bottom" : this . _createRightTriangle ( ) ; break ; case "top,left" : case "top,right" : this . _createTopTriangle ( ) ; break ; case "bottom,left" : case "bottom,right" : this . _createBottomTriangle ( ) } } , _hideTriangle : function ( ) { 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 . TextBu
BI . ClearEditor . EVENT _KEY _DOWN = "EVENT_KEY_DOWN" , BI . ClearEditor . EVENT _SPACE = "EVENT_SPACE" , BI . ClearEditor . EVENT _BACKSPACE = "EVENT_BACKSPACE" , BI . ClearEditor . EVENT _CLEAR = "EVENT_CLEAR" , BI . ClearEditor . EVENT _START = "EVENT_START" , BI . ClearEditor . EVENT _PAUSE = "EVENT_PAUSE" , BI . ClearEditor . EVENT _STOP = "EVENT_STOP" , BI . ClearEditor . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . ClearEditor . EVENT _CHANGE _CONFIRM = "EVENT_CHANGE_CONFIRM" , BI . ClearEditor . EVENT _VALID = "EVENT_VALID" , BI . ClearEditor . EVENT _ERROR = "EVENT_ERROR" , BI . ClearEditor . EVENT _ENTER = "EVENT_ENTER" , BI . ClearEditor . EVENT _RESTRICT = "EVENT_RESTRICT" , BI . ClearEditor . EVENT _REMOVE = "EVENT_REMOVE" , BI . ClearEditor . EVENT _EMPTY = "EVENT_EMPTY" , BI . shortcut ( "bi.clear_editor" , BI . ClearEditor ) , BI . ShelterEditor = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { var conf = BI . ShelterEditor . superclass . _defaultConfig . apply ( this , arguments ) ; 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
self . fireEvent ( BI . Panel . EVENT _CHANGE , value , obj ) } ) , { el : { type : "bi.left_right_vertical_adapt" , cls : "panel-title bi-header-background bi-border-bottom" , height : 29 , items : { left : [ this . text ] , right : [ this . button _group ] } , lhgap : 10 , rhgap : 10 } , height : 29 } } , setTitle : function ( title ) { this . text . setValue ( title ) } } ) , BI . Panel . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.panel" , BI . Panel ) , BI . LinearSegmentButton = BI . inherit ( BI . BasicButton , { props : { extraCls : "bi-line-segment-button bi-list-item-effect" , once : ! 0 , readonly : ! 0 , hgap : 10 , height : 25 } , render : function ( ) { var self = this , o = this . options ; return [ { type : "bi.label" , text : o . text , height : o . height , value : o . value , hgap : o . hgap , ref : function ( ) { self . text = this } } , { type : "bi.absolute" , items : [ { el : { type : "bi.layout" , cls : "line-segment-button-line" , height : 2 , ref : function ( ) { self . line = this } } , left : 0 , right : 0 , bottom : 0 } ] } ] } , setSelected : function ( v ) { BI . LinearSegmentButton . superclass . setSelected . apply ( this , arguments ) , v ? this . line . element . addClass ( "bi-high-light-background" ) : this . line . element . removeClass ( "bi-high-light-background" ) } , 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 . setS
var isHalf = this . isHalfSelected ( ) , isSelected = this . isSelected ( ) ; isHalf === ! 0 ? this . setSelected ( ! 0 ) : this . setSelected ( ! isSelected ) } , setSelected : function ( v ) { this . checkbox . setSelected ( v ) , this . setHalfSelected ( ! 1 ) } , setHalfSelected : function ( b ) { this . halfSelected = ! ! b , b === ! 0 ? ( this . checkbox . setSelected ( ! 1 ) , this . half . visible ( ) , this . checkbox . invisible ( ) ) : ( this . half . invisible ( ) , this . checkbox . visible ( ) ) } , isHalfSelected : function ( ) { return ! this . isSelected ( ) && ! ! this . halfSelected } , isSelected : function ( ) { return this . checkbox . isSelected ( ) } , setValue : function ( selectedValues ) { BI . MultiSelectBar . superclass . setValue . apply ( this , arguments ) ; var isAllChecked = this . options . isAllCheckedBySelectedValue . apply ( this , arguments ) ; this . _setSelected ( isAllChecked ) , ! isAllChecked && this . setHalfSelected ( this . options . isHalfCheckedBySelectedValue . apply ( this , arguments ) ) } , doClick : function ( ) { BI . MultiSelectBar . superclass . doClick . apply ( this , arguments ) , this . isValid ( ) && this . fireEvent ( BI . MultiSelectBar . EVENT _CHANGE , this . isSelected ( ) , this ) } } ) , BI . MultiSelectBar . EVENT _CHANGE = "EVENT_CHANGE" , 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
return this . selectedYear } , setValue : function ( v ) { var o = this . options ; v = BI . parseInt ( v ) ; var startDate = BI . parseDateTime ( o . min , "%Y-%X-%d" ) , endDate = BI . parseDateTime ( o . max , "%Y-%X-%d" ) ; BI . checkDateVoid ( v , 1 , 1 , BI . print ( BI . getDate ( startDate . getFullYear ( ) , 0 , 1 ) , "%Y-%X-%d" ) , BI . print ( BI . getDate ( endDate . getFullYear ( ) , 0 , 1 ) , "%Y-%X-%d" ) ) [ 0 ] ? ( v = BI . getDate ( ) . getFullYear ( ) , this . selectedYear = "" , this . navigation . setSelect ( BI . YearCalendar . getPageByYear ( v ) ) , this . navigation . setValue ( "" ) ) : ( this . selectedYear = v , this . navigation . setSelect ( BI . YearCalendar . getPageByYear ( v ) ) , this . navigation . setValue ( v ) ) } } ) , BI . YearPopup . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.year_popup" , BI . YearPopup ) , BI . DateTriangleTrigger = BI . inherit ( BI . Trigger , { _const : { height : 24 , iconWidth : 12 , iconHeight : 12 } , _defaultConfig : function ( ) { return BI . extend ( BI . DateTriangleTrigger . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-date-triangle-trigger pull-down-ha-font cursor-pointer" , height : 24 } ) } , _init : function ( ) { BI . DateTriangleTrigger . superclass . _init . apply ( this , arguments ) ; 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 . _setCalender
} } ) } ( ) , BI . DynamicDateCard = BI . inherit ( BI . Widget , { props : { baseCls : "bi-dynamic-date-card" } , render : function ( ) { var self = this ; return this . position = BI . DynamicDateCard . OFFSET . CURRENT , { type : "bi.vertical" , items : [ { el : { type : "bi.label" , text : BI . i18nText ( "BI-Multi_Date_Relative_Current_Time" ) , textAlign : "left" , height : 12 , lgap : 10 } , tgap : 10 , bgap : 5 } , { type : "bi.button_group" , ref : function ( ) { self . checkgroup = this } , chooseType : BI . ButtonGroup . CHOOSE _TYPE _MULTI , lgap : 4 , value : [ BI . DynamicDateCard . TYPE . YEAR ] , 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 } , { te
action : function ( ) { var value = self . popup . getValue ( ) ; self . _checkValue ( value ) && self . setValue ( value ) , self . combo . hideView ( ) , self . fireEvent ( BI . DynamicDateTimeCombo . EVENT _CONFIRM ) } } , { eventName : BI . DynamicDateTimePopup . EVENT _CHANGE , action : function ( ) { self . setValue ( self . popup . getValue ( ) ) , self . combo . hideView ( ) , self . fireEvent ( BI . DynamicDateTimeCombo . EVENT _CONFIRM ) } } ] } , stopPropagation : ! 1 } , listeners : [ { eventName : BI . Combo . EVENT _BEFORE _POPUPVIEW , action : function ( ) { self . popup . setValue ( self . storeValue ) , 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 . s
self . _setBlueTrack ( ) , self . _checkLabelPosition ( oldValueOne , self . valueTwo , self . valueOne , self . valueTwo ) , self . fireEvent ( BI . IntervalSlider . EVENT _CHANGE ) } ) , this . labelTwo = BI . createWidget ( { type : "bi.sign_text_editor" , cls : "slider-editor-button" , text : this . options . unit , allowBlank : ! 1 , width : c . EDITOR _WIDTH , validationChecker : function ( v ) { return self . _checkValidation ( v ) } } ) , this . labelTwo . element . hover ( function ( ) { self . labelTwo . element . removeClass ( "bi-border" ) . addClass ( "bi-border" ) } , function ( ) { 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 : functi
BI . defaults ( node , extend ) ) } ) , nodes } , _assertId : function ( sNodes ) { BI . each ( sNodes , function ( i , node ) { node . id = node . id || BI . UUID ( ) } ) } , initTree : function ( nodes ) { var self = this , o = this . options , hasNext = ! 1 ; this . empty ( ) , this . _assertId ( nodes ) , this . tree = BI . createWidget ( { type : "bi.custom_tree" , cls : "tree-view display-table" , expander : { type : "bi.select_tree_expander" , isDefaultInit : o . isDefaultInit , el : { } , popup : { type : "bi.custom_tree" } } , items : this . _formatItems ( BI . Tree . transformToTreeFormat ( nodes ) , 0 ) , itemsCreator : function ( op , callback ) { 1 === op . times && ! op . node && BI . nextTick ( function ( ) { self . loading ( ) } ) , o . itemsCreator ( op , function ( ob ) { hasNext = ob . hasNext , 1 === op . times && ! op . node && self . _populate ( ob . items ) , callback ( self . _formatItems ( BI . Tree . transformToTreeFormat ( ob . items ) , op . node ? op . node . layer + 1 : 0 , op . node ) ) , self . setValue ( self . storeValue ) , 1 === op . times && ! op . node && BI . nextTick ( function ( ) { 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 , title : BI . bind ( this . _getShowText , this ) } } , 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 : B
_defaultConfig : function ( ) { var conf = BI . MultiLayerSingleTreeFirstPlusGroupNode . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( conf , { extraCls : "bi-multilayer-single-tree-first-plus-group-node bi-list-item" , layer : 0 , id : "" , pId : "" , open : ! 1 , height : 24 } ) } , _init : function ( ) { BI . MultiLayerSingleTreeFirstPlusGroupNode . 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 . MultiLayerSingleTreeFirstPlusGroupNode . superclass . doClick . apply ( this , arguments ) , this . node . setSelected ( this . isSelected ( ) ) } , setOpened : function ( v ) { BI . MultiLayerSingleTreeFirstPlusGroupNode . 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.first_plus_group_node" , 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 = thi
var items = BI . map ( ob . items , "value" ) ; if ( self . storeValue . type === res . type ) { var change = ! 1 , map = self . _makeMap ( self . storeValue . value ) ; return BI . each ( items , function ( i , v ) { BI . isNotNull ( map [ v ] ) && ( change = ! 0 , self . storeValue . assist && self . storeValue . assist . push ( map [ v ] ) , delete map [ v ] ) } ) , change && ( self . storeValue . value = BI . values ( map ) ) , void self . _adjust ( callback ) } var selectedMap = self . _makeMap ( self . storeValue . value ) , notSelectedMap = self . _makeMap ( res . value ) , newItems = [ ] ; BI . each ( items , function ( i , item ) { BI . isNotNull ( selectedMap [ items [ i ] ] ) && ( self . storeValue . assist && self . storeValue . assist . push ( selectedMap [ items [ i ] ] ) , delete selectedMap [ items [ i ] ] ) , BI . isNull ( notSelectedMap [ items [ i ] ] ) && ( BI . remove ( self . storeValue . assist , item ) , newItems . push ( item ) ) } ) , self . storeValue . value = newItems . concat ( BI . values ( selectedMap ) ) , self . _adjust ( callback ) } ) } , _adjust : function ( callback ) { function adjust ( ) { self . wants2Quit === ! 0 && ( self . fireEvent ( BI . MultiSelectNoBarCombo . EVENT _CONFIRM ) , self . wants2Quit = ! 1 ) , self . requesting = ! 1 } var self = this , o = this . options ; adjust ( ) , callback ( ) } , _join : function ( res , callback ) { var self = this , o = this . options ; if ( this . _assertValue ( res ) , this . _assertValue ( this . storeValue ) , this . storeValue . type === res . type ) { var map = this . _makeMap ( this . storeValue . value ) ; BI . each ( res . value , function ( i , v ) { map [ v ] || ( self . storeValue . value . push ( v ) , BI . remove ( self . storeValue . assist , v ) , map [ v ] = v ) } ) ; var change = ! 1 ; return BI . each ( res . assist , function ( i , v ) { BI . isNotNull ( map [ v ] ) && ( change = ! 0 , self . storeValue . assist && self . storeValue . assist . push ( map [ v ] ) , delete map [ v ] ) } ) , change && ( this . storeValue . value = BI . values ( map ) ) , void self . _adjust ( callback ) } this . _joinAll ( res , callback ) } , _setStartValue : function ( value ) { this . _startValue = value , this . popup . setStartValue ( value ) } , 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 ) , self . storeValue . assist = self . storeValue . assist || [ ] , self . storeValue . assist . pushDistinct ( self . _startValue ) ) : ( BI . pushDistinct ( self . storeValue . value , self . _startValue ) , BI . remove ( self . storeValue . assist , 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 ( "" ) , thi
} , setStartValue : function ( v ) { this . _startValue = v } , setValue : function ( v ) { this . storeValue = v || { } , this . _assertValue ( this . storeValue ) , this . button _group . setValue ( this . storeValue . value ) } , getValue : function ( ) { return { type : BI . Selection . Multi , value : this . button _group . getValue ( ) } } , getAllButtons : function ( ) { return this . button _group . getAllButtons ( ) } , empty : function ( ) { this . button _group . empty ( ) } , populate : function ( items ) { arguments [ 0 ] = this . _createItems ( items ) , this . button _group . populate . apply ( this . button _group , arguments ) } , resetHeight : function ( h ) { this . button _group . element . css ( { "max-height" : h + "px" } ) } , resetWidth : function ( ) { } } ) , BI . MultiSelectNoBarLoader . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.multi_select_no_bar_loader" , BI . MultiSelectNoBarLoader ) , BI . MultiSelectPopupView = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . MultiSelectPopupView . 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 . MultiSelectPopupView . superclass . _init . apply ( this , arguments ) ; var self = this , opts = this . options ; this . loader = BI . createWidget ( { type : "bi.multi_select_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 . MultiSelectPopupView . EVENT _CHANGE ) } ) , this . popupView . on ( BI . MultiPopupView . EVENT _CLICK _TOOLBAR _BUTTON , function ( index ) { switch ( index ) { case 0 : self . fireEvent ( BI . MultiSelectPopupView . EVENT _CLICK _CLEAR ) ; break ; case 1 : self . fireEvent ( BI . MultiSelectPopupView . EVENT _CLICK _CONFIRM ) } } ) } , isAllSelected : function ( ) { return this . loader . isAllSelected ( ) } , 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 . MultiSelectPopupView . EVENT _CHANGE = "EVENT_CHANGE" , BI . MultiSelectPopupView . EVENT _CLICK _CONFIRM = "EVENT_CLICK_CONFIRM" , 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 ) } , resetHei
} ) } } , { eventName : BI . Searcher . EVENT _CHANGE , action : function ( value , obj ) { obj instanceof BI . MultiSelectBar ? self . _joinAll ( this . getValue ( ) , function ( ) { assertShowValue ( ) , self . fireEvent ( BI . MultiSelectInsertList . EVENT _CHANGE ) } ) : self . _join ( this . getValue ( ) , function ( ) { assertShowValue ( ) , self . fireEvent ( BI . MultiSelectInsertList . EVENT _CHANGE ) } ) } } ] , value : o . value } ) , BI . createWidget ( { type : "bi.vtape" , element : this , items : [ { el : this . trigger , height : 24 } , { el : this . adapter , height : "fill" } ] } ) , BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : this . searcherPane , top : 30 , bottom : 0 , left : 0 , right : 0 } ] } ) } , _showAdapter : function ( ) { this . adapter . setVisible ( ! 0 ) , this . searcherPane . setVisible ( ! 1 ) } , _showSearcherPane : function ( ) { this . searcherPane . setVisible ( ! 0 ) , this . adapter . setVisible ( ! 1 ) } , _defaultState : function ( ) { this . trigger . stopEditing ( ) } , _assertValue : function ( val ) { val || ( val = { } ) , val . type || ( val . type = BI . Selection . Multi ) , val . value || ( val . value = [ ] ) } , _makeMap : function ( values ) { return BI . makeObject ( values || [ ] ) } , _joinKeywords : function ( keywords , callback ) { function digest ( items ) { var selectedMap = self . _makeMap ( items ) ; BI . each ( keywords , function ( i , val ) { BI . isNotNull ( selectedMap [ val ] ) && ( self . storeValue . type === BI . Selection . Multi ? BI . pushDistinct ( self . storeValue . value , val ) : BI . remove ( self . storeValue . value , val ) ) } ) , callback ( ) } var self = this , o = this . options ; this . _assertValue ( this . storeValue ) , o . itemsCreator ( { type : BI . MultiSelectInsertList . REQ _GET _ALL _DATA , keywords : keywords } , function ( ob ) { var values = BI . map ( ob . items , "value" ) ; digest ( values ) } ) } , _joinAll : function ( res , callback ) { var self = this , o = this . options ; this . _assertValue ( res ) , o . itemsCreator ( { type : BI . MultiSelectInsertList . REQ _GET _ALL _DATA , keywords : [ self . trigger . getKeyword ( ) ] } , function ( ob ) { var items = BI . map ( ob . items , "value" ) ; if ( self . storeValue . type === res . type ) { var change = ! 1 , map = self . _makeMap ( self . storeValue . value ) ; return BI . each ( items , function ( i , v ) { BI . isNotNull ( map [ v ] ) && ( change = ! 0 , delete map [ v ] ) } ) , change && ( self . storeValue . value = BI . values ( map ) ) , void callback ( ) } var selectedMap = self . _makeMap ( self . storeValue . value ) , notSelectedMap = self . _makeMap ( res . value ) , newItems = [ ] ; BI . each ( items , function ( i , item ) { BI . isNotNull ( selectedMap [ items [ i ] ] ) && delete selectedMap [ items [ i ] ] , BI . isNull ( notSelectedMap [ items [ i ] ] ) && newItems . push ( item ) } ) , self . storeValue . value = newItems . concat ( BI . values ( selectedMap ) ) , callback ( ) } ) } , _join : function ( res , callback ) { var self = this , o = this . options ; if ( this . _assertValue ( res ) , this . _assertValue ( this . storeValue ) , this . storeValue . type === res . type ) { var map = this . _makeMap ( this . storeValue . value ) ; BI . each ( res . value , function ( i , v ) { map [ v ] || ( self . storeValue . value . push ( v ) , map [ v ] = v ) } ) ; var change = ! 1 ; return BI . each ( res . assist , function ( i , v ) { BI . isNotNull ( map [ v ] ) && ( change = ! 0 , delete map [ v ] ) } ) , change && ( this . storeValue . value = BI . values ( map ) ) , void callback ( ) } this . _joinAll ( res , callback ) } , _setStartValue : function ( value ) { 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 . pushDistinc
self . numberCounter . setButtonChecked ( val ) , self . fireEvent ( BI . MultiTreeInsertCombo . EVENT _CLICK _ITEM , self . combo . getValue ( ) ) } } , { eventName : BI . MultiTreePopup . EVENT _CLICK _CONFIRM , action : function ( ) { self . combo . hideView ( ) } } , { eventName : BI . MultiTreePopup . EVENT _CLICK _CLEAR , action : function ( ) { clear = ! 0 , self . setValue ( ) , self . _defaultState ( ) } } ] , itemsCreator : o . itemsCreator , onLoaded : function ( ) { BI . nextTick ( function ( ) { self . numberCounter . adjustView ( ) , self . trigger . getSearcher ( ) . adjustView ( ) } ) } } , value : { value : o . value || { } } , hideChecker : function ( e ) { return 0 === triggerBtn . element . find ( e . target ) . length && 0 === self . numberCounter . element . find ( e . target ) . length } } ) ; var change = ! 1 , clear = ! 1 , isSearching = function ( ) { return self . trigger . getSearcher ( ) . isSearching ( ) } , isPopupView = function ( ) { return self . combo . isViewVisible ( ) } ; this . trigger . on ( BI . MultiSelectTrigger . EVENT _FOCUS , function ( ) { self . fireEvent ( BI . MultiTreeInsertCombo . EVENT _FOCUS ) } ) , this . trigger . on ( BI . MultiSelectTrigger . EVENT _BLUR , function ( ) { self . fireEvent ( BI . MultiTreeInsertCombo . EVENT _BLUR ) } ) , this . trigger . on ( BI . MultiSelectTrigger . EVENT _START , function ( ) { self . storeValue = { value : self . combo . getValue ( ) } , this . setValue ( self . storeValue ) , self . numberCounter . setValue ( self . storeValue ) } ) , this . trigger . on ( BI . MultiSelectTrigger . EVENT _STOP , function ( ) { self . storeValue = { value : this . getValue ( ) } , self . combo . setValue ( self . storeValue ) , self . numberCounter . setValue ( self . storeValue ) , BI . nextTick ( function ( ) { isPopupView ( ) && self . combo . populate ( ) } ) , self . fireEvent ( BI . MultiTreeInsertCombo . EVENT _STOP ) } ) , this . trigger . on ( BI . MultiSelectTrigger . EVENT _SEARCHING , function ( ) { self . fireEvent ( BI . MultiTreeInsertCombo . EVENT _SEARCHING ) } ) , this . trigger . on ( BI . MultiSelectTrigger . EVENT _TRIGGER _CLICK , function ( ) { self . combo . toggle ( ) } ) , this . trigger . on ( BI . MultiSelectTrigger . EVENT _CHANGE , function ( ) { var checked = this . getSearcher ( ) . hasChecked ( ) , val = { type : BI . Selection . Multi , value : checked ? { 1 : 1 } : { } } ; this . getSearcher ( ) . setState ( checked ? BI . Selection . Multi : BI . Selection . None ) , self . numberCounter . setButtonChecked ( val ) , self . fireEvent ( BI . MultiTreeInsertCombo . EVENT _CLICK _ITEM , self . combo . getValue ( ) ) } ) , this . combo . on ( BI . Combo . EVENT _BEFORE _POPUPVIEW , function ( ) { isSearching ( ) || ( change === ! 0 && ( self . storeValue = { value : self . combo . getValue ( ) } , change = ! 1 ) , self . combo . setValue ( self . storeValue ) , self . numberCounter . setValue ( self . storeValue ) , self . populate ( ) , self . fireEvent ( BI . MultiTreeInsertCombo . EVENT _BEFORE _POPUPVIEW ) ) } ) , this . combo . on ( BI . Combo . EVENT _BEFORE _HIDEVIEW , function ( ) { isSearching ( ) ? ( self . _stopEditing ( ) , self . fireEvent ( BI . MultiTreeInsertCombo . EVENT _CONFIRM ) ) : isPopupView ( ) && ( self . _stopEditing ( ) , self . storeValue = { value : self . combo . getValue ( ) } , clear === ! 0 && ( self . storeValue = { value : { } } ) , self . fireEvent ( BI . MultiTreeInsertCombo . EVENT _CONFIRM ) ) , clear = ! 1 , change = ! 1 } ) ; var triggerBtn = BI . createWidget ( { type : "bi.trigger_icon_button" , width : o . height , height : o . height , cls : "multi-select-trigger-icon-button" } ) ; triggerBtn . on ( BI . TriggerIconButton . EVENT _CHANGE , function ( ) { self . numberCounter . hideView ( ) , self . combo . isViewVisible ( ) ? self . combo . hideView ( ) : self . combo . showView ( ) } ) , this . numberCounter = BI . createWidget ( { type : "bi.multi_select_check_selected_switcher" , el : { type : "bi.multi_tree_check_selected_button" } , popup : { type : "bi.multi_tree_check_pane" } , itemsCreator : o . itemsCreator , 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
items : [ self . label ] } ) , self . _setValidEvent ( self . bigEditor , c . bigEditor ) , self . _setValidEvent ( self . smallEditor , c . smallEditor ) , self . _setErrorEvent ( self . bigEditor , c . bigEditor ) , self . _setErrorEvent ( self . smallEditor , c . smallEditor ) , self . _setBlurEvent ( self . bigEditor ) , self . _setBlurEvent ( self . smallEditor ) , self . _setFocusEvent ( self . bigEditor ) , self . _setFocusEvent ( self . smallEditor ) , self . _setComboValueChangedEvent ( self . bigCombo ) , self . _setComboValueChangedEvent ( self . smallCombo ) , self . _setEditorValueChangedEvent ( self . bigEditor ) , self . _setEditorValueChangedEvent ( self . smallEditor ) , self . _checkValidation ( ) } , _checkValidation : function ( ) { var self = this , c = this . constants , o = this . options ; if ( self . _setTitle ( "" ) , BI . Bubbles . hide ( c . typeError ) , BI . Bubbles . hide ( c . numberError ) , BI . Bubbles . hide ( c . signalError ) , ! self . smallEditor . isValid ( ) || ! self . bigEditor . isValid ( ) ) return self . element . removeClass ( "number-error" ) , o . validation = "invalid" , c . typeError ; if ( BI . isEmptyString ( self . smallEditor . getValue ( ) ) || BI . isEmptyString ( self . bigEditor . getValue ( ) ) ) return self . element . removeClass ( "number-error" ) , o . validation = "valid" , "" ; var smallValue = parseFloat ( self . smallEditor . getValue ( ) ) , bigValue = parseFloat ( self . bigEditor . getValue ( ) ) , bigComboValue = self . bigCombo . getValue ( ) , smallComboValue = self . smallCombo . getValue ( ) ; return bigComboValue [ 0 ] === c . less _equal && smallComboValue [ 0 ] === c . less _equal ? smallValue > bigValue ? ( self . element . addClass ( "number-error" ) , o . validation = "invalid" , c . numberError ) : ( self . element . removeClass ( "number-error" ) , o . validation = "valid" , "" ) : smallValue > bigValue ? ( self . element . addClass ( "number-error" ) , o . validation = "invalid" , c . numberError ) : smallValue === bigValue ? ( self . element . addClass ( "number-error" ) , o . validation = "invalid" , c . signalError ) : ( self . element . removeClass ( "number-error" ) , o . validation = "valid" , "" ) } , _setTitle : function ( v ) { this . label . setTitle ( v ) } , _setFocusEvent : function ( w ) { var self = this , c = this . constants ; w . on ( BI . NumberIntervalSingleEidtor . EVENT _FOCUS , function ( ) { switch ( self . _setTitle ( "" ) , 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 } ) ; break ; default : return } } ) } , _setBlurEvent : function ( w ) { var c = this . constants , self = this ; w . on ( BI . NumberIntervalSingleEidtor . EVENT _BLUR , function ( ) { switch ( BI . Bubbles . hide ( c . typeError ) , BI . Bubbles . hide ( c . numberError ) , BI . Bubbles . hide ( c . signalError ) , self . _checkValidation ( ) ) { case c . typeError : self . _setTitle ( BI . i18nText ( "BI-Numerical_Interval_Input_Data" ) ) ; break ; case c . numberError : self . _setTitle ( BI . i18nText ( "BI-Numerical_Interval_Number_Value" ) ) ; break ; case c . signalError : self . _setTitle ( BI . i18nText ( "BI-Numerical_Interval_Signal_Value" ) ) ; break ; default : self . _setTitle ( "" ) } } ) } , _setErrorEvent : function ( w ) { var c = this . constants , self = this ; w . on ( BI . NumberIntervalSingleEidtor . EVENT _ERROR , function ( ) { self . _checkValidation ( ) , BI . Bubbles . show ( c . typeError , BI . i18nText ( "BI-Numerical_Interval_Input_Data" ) , self , { offsetStyle : "left" , adjustYOffset : c . adjustYOffset } ) , self . fireEvent ( BI . NumberInterval . EVENT _ERROR ) } ) } , _setValidEvent : function ( w ) { var self = this , c = this . constants ; w . on ( BI . NumberIntervalSingleEidtor . EVENT _VALID , function ( ) { switch ( self . _checkValidation ( ) ) { case c . numberError : 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 (
_defaultConfig : function ( ) { var conf = BI . SelectTreeFirstPlusGroupNode . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( conf , { baseCls : ( conf . baseCls || "" ) + " bi-select-tree-first-plus-group-node bi-list-item-active" , logic : { dynamic : ! 1 } , id : "" , pId : "" , readonly : ! 0 , open : ! 1 , height : 24 } ) } , _init : function ( ) { BI . SelectTreeFirstPlusGroupNode . 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 , 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 . SelectTreeFirstPlusGroupNode . superclass . setOpened . apply ( this , arguments ) , BI . isNotNull ( this . checkbox ) && this . checkbox . setSelected ( v ) } } ) , BI . shortcut ( "bi.select_tree_first_plus_group_node" , BI . SelectTreeFirstPlusGroupNode ) , BI . SelectTreeLastPlusGroupNode = BI . inherit ( BI . NodeButton , { _defaultConfig : function ( ) { var conf = BI . SelectTreeLastPlusGroupNode . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( conf , { baseCls : ( conf . baseCls || "" ) + " bi-select-tree-last-plus-group-node bi-list-item-active" , logic : { dynamic : ! 1 } , id : "" , pId : "" , readonly : ! 0 , open : ! 1 , height : 24 } ) } , _init : function ( ) { BI . SelectTreeLastPlusGroupNode . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options ; this . checkbox = BI . createWidget ( { type : "bi.last_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 . SelectTreeLastPlusGroupNode . superclass . setOpened . apply ( this , arguments ) , BI . isNotNull ( this . checkbox ) && this . checkbox . setSelected ( v ) } } ) , BI . shortcut ( "bi.select_tree_last_plus_group_node" , BI . SelectTreeLastPlusGroupNode ) , BI . SelectTreeMidPlusGroupNode = BI . inherit ( BI . NodeButton , { _defaultConfig : function ( ) { var conf = BI . SelectTreeMidPlusGroupNode . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( conf , { baseCls : ( conf . baseCls || "" ) + " bi-select-tree-mid-plus-group-node bi-list-item-active" , 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
} ) } , onLoaded : o . onLoaded , hasNext : o . hasNext , value : o . value } ) , this . list . on ( BI . Controller . EVENT _CHANGE , function ( type , value , obj ) { type === BI . Events . CLICK && self . fireEvent ( BI . SingleSelectList . 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 : o . allowNoSelect ? BI . LogicFactory . createLogicItemsByDirection ( o . direction , { type : "bi.single_select_item" , cls : "bi-list-item-active" , height : 24 , forceNotSelected : ! 0 , text : BI . i18nText ( "BI-Basic_No_Select" ) , ref : function ( _ref ) { self . toolbar = _ref } , listeners : [ { eventName : BI . Controller . EVENT _CHANGE , action : function ( type ) { type === BI . Events . CLICK && ( self . list . setValue ( ) , self . fireEvent ( BI . SingleSelectList . EVENT _CHANGE ) ) , self . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } } ] } , this . list ) : BI . LogicFactory . createLogicItemsByDirection ( o . direction , this . list ) } ) ) ) ) } , 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 ( v ) { this . list . setValue ( [ v ] ) } , getValue : function ( ) { return this . list . getValue ( ) [ 0 ] } , empty : function ( ) { this . list . empty ( ) } , populate : function ( items ) { this . list . populate . apply ( this . list , arguments ) } , resetHeight : function ( h ) { this . list . resetHeight ? this . list . resetHeight ( h ) : this . list . element . css ( { "max-height" : h + "px" } ) } , setNotSelectedValue : function ( ) { this . list . setNotSelectedValue . apply ( this . list , arguments ) } , getNotSelectedValue : function ( ) { return this . list . getNotSelectedValue ( ) } , getAllButtons : function ( ) { return this . list . getAllButtons ( ) } , getAllLeaves : function ( ) { return this . list . getAllLeaves ( ) } , getSelectedButtons : function ( ) { return this . list . getSelectedButtons ( ) } , getNotSelectedButtons : function ( ) { return this . list . getNotSelectedButtons ( ) } , getIndexByValue : function ( value ) { return this . list . getIndexByValue ( value ) } , getNodeById : function ( id ) { return this . list . getNodeById ( id ) } , getNodeByValue : function ( value ) { return this . list . getNodeByValue ( value ) } } ) , BI . SingleSelectList . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.single_select_list" , BI . SingleSelectList ) , BI . SingleSelectLoader = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . SingleSelectLoader . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-single-select-loader" , logic : { dynamic : ! 0 } , el : { height : 400 } , allowNoSelect : ! 1 , valueFormatter : BI . emptyFn , itemsCreator : BI . emptyFn , onLoaded : BI . emptyFn } ) } , _init : function ( ) { BI . SingleSelectLoader . superclass . _init . apply ( this , arguments ) ; var self = this , opts = this . options , hasNext = ! 1 ; this . storeValue = opts . value , this . button _group = BI . createWidget ( { type : "bi.single_select_list" , allowNoSelect : opts . allowNoSelect , logic : opts . logic , el : BI . extend ( { onLoaded : opts . onLoaded , el : { type : "bi.loader" , isDefaultInit : ! 1 , logic : { dynamic : ! 0 , scrolly : ! 0 } , el : { chooseType : BI . ButtonGroup . CHOOSE _TYPE _SINGLE , behaviors : { redmark : function ( ) { return ! 0 } } , layouts : [ { type : "bi.vertical" } ] } } } , opts . el ) , itemsCreator : function ( op , callback ) { var startValue = self . _startValue ; BI . isNotNull ( self . storeValue ) && ( op = BI . extend ( op || { } , { selectedValues : [ self . storeValue ] } ) ) , opts . itemsCreator ( op , function ( ob ) { hasNext = ob . hasNext ; var firstItems = [ ] ; if ( 1 === op . times && BI . isNotNull ( self . storeValue ) ) { var json = BI . map ( [ self . storeValue ] , function ( i , v ) { var txt = opts . valueFormatter ( v ) || v ; return { text : txt , value : v , title : txt , selected : ! 0 } } ) ; firstItems = self . _createItems ( json ) } callback ( firstItems . concat ( self . _createItems ( ob . items ) ) , ob . keyword || "" ) , 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 . SingleS
self . _setSliderPosition ( significantPercent ) ; var v = self . _getValueByPercent ( significantPercent ) ; v = o . digit === ! 1 ? v : v . toFixed ( o . digit ) , self . label . setValue ( v + o . unit ) , self . value = v , self . fireEvent ( BI . SingleSliderLabel . EVENT _CHANGE ) } } , 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 . SingleSliderLabel . EVENT _CHANGE ) } , window ) ; widget . element . on ( "mousedown" , function ( event ) { widget . isEnabled ( ) && ( defaultSize = this . offsetLeft , optimizeSize ( defaultSize ) , mouseMoveTracker . captureMouseMoves ( event ) ) } ) } , _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 ) { return BI . isNumeric ( v ) && ! ( BI . isNull ( v ) || v < this . min || v > this . max ) } , _setBlueTrack : function ( percent ) { this . blueTrack . element . css ( { width : percent + "%" } ) } , _setLabelPosition : function ( percent ) { } , _setSliderPosition : function ( percent ) { this . slider . element . css ( { left : percent + "%" } ) } , _setAllPosition : function ( percent ) { this . _setSliderPosition ( percent ) , this . _setLabelPosition ( percent ) , this . _setBlueTrack ( percent ) } , _setVisible : function ( visible ) { this . slider . setVisible ( visible ) , this . label . 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 . SingleSliderLabel . 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 o = this . options ; v = BI . parseFloat ( v ) , v = o . digit === ! 1 ? v : v . toFixed ( o . digit ) , isNaN ( v ) || ( this . _checkValidation ( v ) && ( this . value = v ) , v > this . max && ( this . value = this . max ) , v < 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 . max = 0 , this . _setBlueTrack ( 0 ) } , populate : function ( ) { var o = this . options ; isNaN ( this . min ) || isNaN ( this . max ) || ( this . _setVisible ( ! 0 ) , this . enable = ! 0 , BI . isNumeric ( this . value ) || BI . isNotEmptyString ( this . value ) ? ( this . label . setValue ( this . value + o . unit ) , this . _setAllPosition ( this . _getPercentByValue ( this . value ) ) ) : ( this . label . setValue ( this . max + o . unit ) , this . _setAllPosition ( 100 ) ) ) } } ) , BI . SingleSliderLabel . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.single_slider_label" , BI . SingleSliderLabel ) , BI . SingleSliderNormal = BI . inherit ( BI . Single , { _constant : { HEIGHT : 28 , SLIDER _WIDTH _HALF : 15 , SLIDER _WIDTH : 30 , SLIDER _HEIGHT : 30 , TRACK _HEIGHT : 24 , TRACK _GAP _HALF : 7 , TRACK _GAP : 14 } , props : { baseCls : "bi-single-slider-normal bi-slider-track" , minMax : { min : 0 , max : 100 } } , render : function ( ) { var self = this , c = this . _constant , track = this . _createTrack ( ) ; this . slider = BI . createWidget ( { type : "bi.single_slider_button" } ) , this . _draggable ( this . slider ) ; var sliderVertical = BI . createWidget ( { type : "bi.vertical" , items : [ { type : "bi.absolute" , items : [ this . slider ] } ] , hgap : c . SLIDER _WIDTH _HALF , height : c . SLIDER _HEIGHT } ) ; return sliderVertical . element . click ( function ( e ) { 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 = B
bigDate = BI . print ( BI . parseDateTime ( bigDate , "%Y-%X-%d %H:%M:%S" ) , "%Y-%X-%d %H:%M:%S" ) , BI . isNotNull ( smallDate ) && BI . isNotNull ( bigDate ) && smallDate > bigDate } , _setTitle : function ( v ) { this . left . setTitle ( v ) , this . right . setTitle ( v ) , this . label . setTitle ( v ) } , _clearTitle : function ( ) { this . left . setTitle ( "" ) , this . right . setTitle ( "" ) , this . label . setTitle ( "" ) } , setValue : function ( date ) { date = date || { } , this . left . setValue ( date . start ) , this . right . setValue ( date . end ) } , getValue : function ( ) { return { start : this . left . getValue ( ) , end : this . right . getValue ( ) } } } ) , BI . TimeInterval . EVENT _VALID = "EVENT_VALID" , BI . TimeInterval . EVENT _ERROR = "EVENT_ERROR" , BI . TimeInterval . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.time_interval" , BI . TimeInterval ) , ! function ( ) { BI . TimePeriods = BI . inherit ( BI . Single , { constants : { height : 24 , width : 24 , lgap : 15 , offset : 0 } , props : { extraCls : "bi-time-interval" , value : { } } , render : function ( ) { var self = this , o = this . options ; return { type : "bi.absolute" , height : this . constants . height , items : [ { el : { type : "bi.horizontal_auto" , items : [ { type : "bi.label" , height : this . constants . height , width : this . constants . width , text : "-" , ref : function ( _ref ) { self . label = _ref } } ] } , top : 0 , left : 0 , right : 0 , bottom : 0 } , { el : { type : "bi.center" , height : this . constants . height , items : [ { type : "bi.absolute" , items : [ { el : BI . extend ( { ref : function ( _ref ) { self . left = _ref } } , this . _createCombo ( o . value . start ) ) , left : this . constants . offset , right : this . constants . width / 2 , top : 0 , bottom : 0 } ] } , { type : "bi.absolute" , items : [ { el : BI . extend ( { ref : function ( _ref ) { self . right = _ref } } , this . _createCombo ( o . value . end ) ) , left : this . constants . width / 2 , right : this . constants . offset , top : 0 , bottom : 0 } ] } ] } , top : 0 , left : 0 , right : 0 , bottom : 0 } ] } } , _createCombo : function ( v ) { var self = this ; return { type : "bi.time_combo" , value : v , listeners : [ { eventName : BI . TimeCombo . EVENT _BEFORE _POPUPVIEW , action : function ( ) { self . left . hidePopupView ( ) , self . right . hidePopupView ( ) } } , { eventName : BI . TimeCombo . EVENT _CHANGE , action : function ( ) { self . fireEvent ( BI . TimePeriods . EVENT _CHANGE ) } } , { eventName : BI . TimeCombo . EVENT _CONFIRM , action : function ( ) { self . fireEvent ( BI . TimePeriods . EVENT _CONFIRM ) } } ] } } , setValue : function ( date ) { date = date || { } , this . left . setValue ( date . start ) , this . right . setValue ( date . end ) } , getValue : function ( ) { return { start : this . left . getValue ( ) , end : this . right . getValue ( ) } } } ) , BI . TimePeriods . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . TimePeriods . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.time_periods" , BI . TimePeriods ) } ( ) , BI . DynamicYearCard = BI . inherit ( BI . Widget , { props : { baseCls : "bi-year-card" } , render : function ( ) { var self = this ; return { type : "bi.vertical" , items : [ { type : "bi.label" , text : BI . i18nText ( "BI-Multi_Date_Relative_Current_Time" ) , textAlign : "left" , height : 24 } , { type : "bi.dynamic_date_param_item" , ref : function ( ) { self . item = this } , listeners : [ { eventName : "EVENT_CHANGE" , action : function ( ) { self . fireEvent ( "EVENT_CHANGE" ) } } ] } ] , vgap : 10 , hgap : 10 } } , _createValue : function ( type , v ) { return { dateType : type , value : Math . abs ( v ) , offset : v > 0 ? 1 : 0 } } , setValue : function ( v ) { v = v || { year : 0 } , this . item . setValue ( this . _createValue ( BI . DynamicDateCard . TYPE . YEAR , v . year ) ) } , getValue : function ( ) { var value = this . item . getValue ( ) ; return { year : 0 === value . offset ? - value . value : value . value } } } ) , BI . DynamicYearCard . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.dynamic_year_card" , BI . DynamicYearCard ) , BI . StaticYearCard = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . StaticYearCard . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-year-card" , behaviors : { } , min : "1900-01-01" , max : "2099-12-31" } ) } , _createYearCalendar : function ( v ) { var o = this . options , y = this . _year , calendar = BI . createWidget ( { type : "bi.year_calendar" , behaviors : o . behaviors , min : o . min , max : o . max , logic : { dynamic : ! 0 } , year : y + 12 * v } ) ; return calendar . setValue ( this . _year ) , calendar } , _init : function ( ) { BI . StaticYearCard . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options ; this . selectedYear = this . _year = BI . getDate ( ) . getFullYear ( ) , this . backBtn = BI . createWidget ( { type : "bi.icon_button" , cls : "pre-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 . preBtn = BI . createWidget ( { type : " bi . ico
self . fireEvent ( BI . DynamicYearMonthTrigger . EVENT _START ) } ) , editor . on ( BI . SignEditor . EVENT _ERROR , function ( ) { self . fireEvent ( BI . DynamicYearMonthTrigger . EVENT _ERROR ) } ) , editor . on ( BI . SignEditor . EVENT _VALID , function ( ) { var year = self . yearEditor . getValue ( ) , month = self . monthEditor . getValue ( ) ; BI . isNotEmptyString ( year ) && BI . isNotEmptyString ( month ) && BI . isPositiveInteger ( year ) && month >= 1 && month <= 12 && ! BI . checkDateVoid ( year , month , 1 , o . min , o . max ) [ 0 ] && self . fireEvent ( BI . DynamicYearMonthTrigger . EVENT _VALID ) } ) , editor . on ( BI . SignEditor . EVENT _CHANGE , function ( ) { isYear && self . _autoSwitch ( editor ) } ) , editor } , _titleCreator : function ( ) { var storeValue = this . storeValue || { } , type = storeValue . type || BI . DynamicDateCombo . Static , value = storeValue . value ; if ( ! this . monthEditor . isValid ( ) || ! this . yearEditor . isValid ( ) ) return "" ; switch ( type ) { case BI . DynamicDateCombo . Dynamic : var text = this . _getText ( value ) , date = BI . getDate ( ) ; date = BI . DynamicDateHelper . getCalculation ( value ) ; var dateStr = BI . print ( date , "%Y-%x" ) ; return BI . isEmptyString ( text ) ? dateStr : text + ":" + dateStr ; case BI . DynamicDateCombo . Static : default : return value = value || { } , this . _getStaticTitle ( value ) } } , _doEditorConfirm : function ( editor ) { var value = editor . getValue ( ) ; BI . isNotNull ( value ) && editor . setValue ( value ) ; var monthValue = this . monthEditor . getValue ( ) ; this . storeValue = { type : BI . DynamicDateCombo . Static , value : { year : this . yearEditor . getValue ( ) , month : BI . isEmptyString ( this . monthEditor . getValue ( ) ) ? "" : monthValue } } } , _yearCheck : function ( v ) { var date = BI . print ( BI . parseDateTime ( v , "%Y-%X-%d" ) , "%Y-%X-%d" ) ; return BI . print ( BI . parseDateTime ( v , "%Y" ) , "%Y" ) === v && date >= this . options . min && date <= this . options . max } , _autoSwitch : function ( editor ) { var v = editor . getValue ( ) ; BI . isNotEmptyString ( v ) && BI . checkDateLegal ( v ) && 4 === v . length && this . _yearCheck ( v ) && ( this . _doEditorConfirm ( editor ) , this . fireEvent ( BI . DynamicYearMonthTrigger . EVENT _CONFIRM ) , this . monthEditor . focus ( ) ) } , _getText : function ( obj ) { var value = "" ; return BI . isNotNull ( obj . year ) && 0 !== BI . parseInt ( obj . year ) && ( value += Math . abs ( obj . year ) + BI . i18nText ( "BI-Basic_Year" ) + ( obj . year < 0 ? BI . i18nText ( "BI-Basic_Front" ) : BI . i18nText ( "BI-Basic_Behind" ) ) ) , BI . isNotNull ( obj . month ) && 0 !== BI . parseInt ( obj . month ) && ( value += Math . abs ( obj . month ) + BI . i18nText ( "BI-Basic_Month" ) + ( obj . month < 0 ? BI . i18nText ( "BI-Basic_Front" ) : BI . i18nText ( "BI-Basic_Behind" ) ) ) , value } , _setInnerValue : function ( date , text ) { this . yearEditor . setValue ( date . getFullYear ( ) ) , this . monthEditor . setValue ( date . getMonth ( ) + 1 ) } , _getStaticTitle : function ( value ) { value = value || { } ; var hasYear = ! ( BI . isNull ( value . year ) || BI . isEmptyString ( value . year ) ) , hasMonth = ! ( BI . isNull ( value . month ) || BI . isEmptyString ( value . month ) ) ; switch ( hasYear << 1 | hasMonth ) { case 0 : return "" ; case 1 : return value . month ; case 2 : return value . year ; case 3 : default : return value . year + "-" + value . month } } , setValue : function ( v ) { var type , value , date = BI . getDate ( ) ; switch ( this . storeValue = v , BI . isNotNull ( v ) && ( type = v . type || BI . DynamicDateCombo . Static , value = v . value || v ) , type ) { case BI . DynamicDateCombo . Dynamic : var text = this . _getText ( value ) ; date = BI . DynamicDateHelper . getCalculation ( value ) , this . _setInnerValue ( date , text ) ; break ; case BI . DynamicDateCombo . Static : default : value = value || { } ; var month = BI . isNull ( value . month ) ? null : value . month ; this . yearEditor . setValue ( value . year ) , this . monthEditor . setValue ( month ) } } , getValue : function ( ) { return this . storeValue } , getKey : function ( ) { return this . yearEditor . getValue ( ) + "-" + this . monthEditor . getValue ( ) } , isValid : function ( ) { return this . yearEditor . isValid ( ) && this . monthEditor . isValid ( ) } } ) , BI . DynamicYearMonthTrigger . EVENT _VALID = "EVENT_VALID" , BI . DynamicYearMonthTrigger . EVENT _FOCUS = "EVENT_FOCUS" , BI . DynamicYearMonthTrigger . EVENT _ERROR = "EVENT_ERROR" , BI . DynamicYearMonthTrigger . EVENT _START = "EVENT_START" , BI . DynamicYearMonthTrigger . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . DynamicYearMonthTrigger . EVENT _STOP = "EVENT_STOP" , BI . DynamicYearMonthTrigger . EVENT _KEY _DOWN = "EVENT_KEY_DOWN" , BI . shortcut ( "bi.dynamic_year_month_trigger" , BI . DynamicYearMonthTrigger ) , 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 = thi
find && BI . isNotEmptyArray ( searched ) && BI . each ( searched , function ( i , arr ) { var node = self . _getNode ( selectedValues , arr ) ; node ? self . _deleteNode ( selectedValues , arr ) : expandSelectedValue ( selectedValues , arr , BI . last ( arr ) ) } ) } if ( isChild ( selectedValues , p ) ) { var result = [ ] , find = ! 1 ; isSearchValueInParent ( p ) ? find = ! 0 : ( find = search ( parentValues , notSelectedValue , result ) , p = parentValues ) , find === ! 0 && ( expandSelectedValue ( selectedValues , p , notSelectedValue ) , result . length > 0 && BI . each ( result , function ( i , strs ) { self . _buildTree ( selectedValues , strs ) } ) ) } } function expandSelectedValue ( selectedValues , parents , notSelectedValue ) { var next = selectedValues , childrenCount = [ ] , path = [ ] ; BI . some ( parents , function ( i , v ) { var t = next [ v ] ; if ( null == t ) { if ( 0 === i ) return ! 0 ; if ( ! BI . isEmpty ( next ) ) return ! 0 ; var split = parents . slice ( 0 , i ) , expanded = self . _getChildren ( split ) ; if ( path . push ( split ) , childrenCount . push ( expanded . length ) , i === parents . length - 1 && 1 === expanded . length && expanded [ 0 ] . value === notSelectedValue ) for ( var j = childrenCount . length - 1 ; j >= 0 && 1 === childrenCount [ j ] ; j -- ) self . _deleteNode ( selectedValues , path [ j ] ) ; else BI . each ( expanded , function ( m , child ) { return i === parents . length - 1 && child . value === notSelectedValue || void ( next [ child . value ] = { } ) } ) ; next = next [ v ] } else next = t } ) } function search ( parents , current , result , searched ) { var newParents = BI . clone ( parents ) ; if ( newParents . push ( current ) , self . _isMatch ( parents , current , keyword ) ) return searched && searched . push ( newParents ) , ! 0 ; var children = self . _getChildren ( newParents ) , notSearch = [ ] , can = ! 1 ; return BI . each ( children , function ( i , child ) { search ( newParents , child . value , result , searched ) ? can = ! 0 : notSearch . push ( child . value ) } ) , can === ! 0 && BI . each ( notSearch , function ( i , v ) { var next = BI . clone ( newParents ) ; next . push ( v ) , result . push ( next ) } ) , can } function isSearchValueInParent ( parentValues ) { for ( var i = 0 , len = parentValues . length ; i < len ; i ++ ) if ( self . _isMatch ( parentValues . slice ( 0 , i ) , parentValues [ i ] , keyword ) ) return ! 0 ; return ! 1 } function canFindKey ( selectedValues , parents ) { for ( var t = selectedValues , i = 0 ; i < parents . length ; i ++ ) { var v = parents [ i ] ; if ( t = t [ v ] , null == t ) return ! 1 } return ! 0 } function isChild ( selectedValues , parents ) { for ( var t = selectedValues , i = 0 ; i < parents . length ; i ++ ) { var v = parents [ i ] ; if ( ! BI . has ( t , v ) ) return ! 1 ; if ( t = t [ v ] , BI . isEmpty ( t ) ) return ! 0 } return ! 1 } var self = this , selectedValues = BI . deepClone ( op . selectedValues ) , notSelectedValue = op . notSelectedValue || { } , keyword = op . keyword || "" , parentValues = op . parentValues || [ ] ; return null == selectedValues || BI . isEmpty ( selectedValues ) ? void callback ( { } ) : ( dealWithSelectedValues ( selectedValues ) , void callback ( selectedValues ) ) } , _reqAdjustTreeNode : function ( op , callback ) { function dealWithSelectedValues ( selected , parents ) { if ( null == selected || BI . isEmpty ( selected ) ) return ! 0 ; var can = ! 0 ; return BI . each ( selected , function ( k , v ) { var p = BI . clone ( parents ) ; p . push ( k ) , dealWithSelectedValues ( selected [ k ] , p ) || ( BI . each ( selected [ k ] , function ( nk , nv ) { var t = BI . clone ( p ) ; t . push ( nk ) , result . push ( t ) } ) , can = ! 1 ) } ) , can && isAllSelected ( selected , parents ) } function isAllSelected ( selected , parents ) { return BI . isEmpty ( selected ) || self . _getChildCount ( parents ) === BI . size ( selected ) } var self = this , result = [ ] , selectedValues = op . selectedValues ; if ( null == selectedValues || BI . isEmpty ( selectedValues ) ) return void callback ( { } ) ; BI . each ( selectedValues , function ( k , v ) { result . push ( [ k ] ) } ) , dealWithSelectedValues ( selectedValues , [ ] ) ; var jo = { } ; BI . each ( result , function ( i , strs ) { self . _buildTree ( jo , strs ) } ) , callback ( jo ) } , _reqInitTreeNode : function ( op , callback ) { function search ( ) { var children = self . _getChildren ( [ ] ) , start = children . length ; if ( "" !== lastSearchValue ) { for ( var j = 0 , len = start ; j < len ; j ++ ) if ( children [ j ] . value === lastSearchValue ) { start = j + 1 ; break } } else start = 0 ; for ( var output = [ ] , i = start , len = children . length ; i < len ; i ++ ) { if ( output . length < self . _const . perPage ) var find = nodeSearch ( 1 , [ ] , children [ i ] . value , ! 1 , result ) ; else if ( output . length === self . _const . perPage ) var find = nodeSearch ( 1 , [ ] , children [ i ] . value , ! 1 , [ ] ) ; if ( find [ 0 ] === ! 0 && output . push ( children [ i ] . value ) , output . length > self . _const . perPage ) break } 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 .
if ( ! eventsApi ( this , "once" , name , [ callback , context ] ) || ! callback ) return this ; var self = this , once = _ . once ( function ( ) { self . off ( name , once ) , callback . apply ( this , arguments ) } ) ; return once . _callback = callback , this . on ( name , once , context ) } , off : function ( name , callback , context ) { if ( ! this . _events || ! eventsApi ( this , "off" , name , [ callback , context ] ) ) return this ; if ( ! name && ! callback && ! context ) return this . _events = void 0 , this ; for ( var names = name ? [ name ] : _ . keys ( this . _events ) , i = 0 , length = names . length ; i < length ; i ++ ) { name = names [ i ] ; var events = this . _events [ name ] ; if ( events ) if ( callback || context ) { for ( var remaining = [ ] , j = 0 , k = events . length ; j < k ; j ++ ) { var event = events [ j ] ; ( callback && callback !== event . callback && callback !== event . callback . _callback || context && context !== event . context ) && remaining . push ( event ) } remaining . length ? this . _events [ name ] = remaining : delete this . _events [ name ] } else delete this . _events [ name ] } return this } , un : function ( ) { this . off . apply ( this , arguments ) } , trigger : function ( name ) { if ( ! this . _events ) return this ; var args = slice . call ( arguments , 1 ) ; if ( ! eventsApi ( this , "trigger" , name , args ) ) return this ; var events = this . _events [ name ] , allEvents = this . _events . all ; return events && triggerEvents ( events , args ) , allEvents && triggerEvents ( allEvents , arguments ) , this } , fireEvent : function ( ) { this . trigger . apply ( this , arguments ) } , listenTo : function ( obj , name , callback ) { var listeningTo = this . _listeningTo || ( this . _listeningTo = { } ) , id = obj . _listenId || ( obj . _listenId = _ . uniqueId ( "l" ) ) ; return listeningTo [ id ] = obj , callback || "object" != typeof name || ( callback = this ) , obj . on ( name , callback , this ) , this } , listenToOnce : function ( obj , name , callback ) { if ( "object" == typeof name ) { for ( var event in name ) this . listenToOnce ( obj , event , name [ event ] ) ; return this } if ( eventSplitter . test ( name ) ) { for ( var names = name . split ( eventSplitter ) , i = 0 , length = names . length ; i < length ; i ++ ) this . listenToOnce ( obj , names [ i ] , callback ) ; return this } if ( ! callback ) return this ; var once = _ . once ( function ( ) { this . stopListening ( obj , name , once ) , callback . apply ( this , arguments ) } ) ; return once . _callback = callback , this . listenTo ( obj , name , once ) } , stopListening : function ( obj , name , callback ) { var listeningTo = this . _listeningTo ; if ( ! listeningTo ) return this ; var remove = ! name && ! callback ; callback || "object" != typeof name || ( callback = this ) , obj && ( ( listeningTo = { } ) [ obj . _listenId ] = obj ) ; for ( var id in listeningTo ) obj = listeningTo [ id ] , obj . off ( name , callback , this ) , ( remove || _ . isEmpty ( obj . _events ) ) && delete this . _listeningTo [ id ] ; return this } } , eventSplitter = /\s+/ , eventsApi = function ( obj , action , name , rest ) { if ( ! name ) return ! 0 ; if ( "object" == typeof name ) { for ( var key in name ) obj [ action ] . apply ( obj , [ key , name [ key ] ] . concat ( rest ) ) ; return ! 1 } if ( eventSplitter . test ( name ) ) { for ( var names = name . split ( eventSplitter ) , i = 0 , length = names . length ; i < length ; i ++ ) obj [ action ] . apply ( obj , [ names [ i ] ] . concat ( rest ) ) ; return ! 1 } return ! 0 } , triggerEvents = function ( events , args ) { var ev , i = - 1 , l = events . length , a1 = args [ 0 ] , a2 = args [ 1 ] , a3 = args [ 2 ] ; switch ( args . length ) { case 0 : for ( ; ++ i < l ; ) ( ev = events [ i ] ) . callback . call ( ev . ctx ) ; return ; case 1 : for ( ; ++ i < l ; ) ( ev = events [ i ] ) . callback . call ( ev . ctx , a1 ) ; return ; case 2 : for ( ; ++ i < l ; ) ( ev = events [ i ] ) . callback . call ( ev . ctx , a1 , a2 ) ; return ; case 3 : for ( ; ++ i < l ; ) ( ev = events [ i ] ) . callback . call ( ev . ctx , a1 , a2 , a3 ) ; return ; default : for ( ; ++ i < l ; ) ( ev = events [ i ] ) . callback . apply ( ev . ctx , args ) ; return } } , Router = BI . Router = function ( options ) { options || ( options = { } ) , options . routes && ( this . routes = options . routes ) , this . _bindRoutes ( ) , this . _init . apply ( this , arguments ) } , optionalParam = /\((.*?)\)/g , namedParam = /(\(\?)?:\w+/g , splatParam = /\*\w+/g , escapeRegExp = /[\-{}\[\]+?.,\\\^$|#\s]/g ; _ . extend ( Router . prototype , Events , { _init : function ( ) { } , route : function ( route , name , callback ) { _ . isRegExp ( route ) || ( route = this . _routeToRegExp ( route ) ) , _ . isFunction ( name ) && ( callback = name , name = "" ) , callback || ( callback = this [ name ] ) ; var router = this ; return BI . history . route ( route , function ( fragment ) { var args = router . _extractParameters ( route , fragment ) ; router . execute ( callback , args , name ) !== ! 1 && ( router . trigger . apply ( router , [ "route:" + name ] . concat ( args ) ) , router . trigger ( "route" , name , args ) , BI . history . trigger ( "route" , router , name , args ) ) } ) , this } , execute : function ( callback , args , name ) { callback && callback . apply ( this , args ) } , navigate : function ( fragment , options )
! 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 ( e ) { return ( i = "function" == typeof Symbol && "symbol" == typeof Symbol . iterator ? function ( e ) { return typeof e } : function ( e ) { return e && "function" == typeof Symbol && e . constructor === Symbol && e !== Symbol . prototype ? "symbol" : typeof e } ) ( e ) } function c ( ) { if ( "function" != typeof WeakMap ) return null ; var e = new WeakMap ; return c = function ( ) { return e } , e } Object . defineProperty ( t , "__esModule" , { value : ! 0 } ) , t [ "default" ] = void 0 ; var n = { Decorators : function f ( e ) { if ( e && e . _ _esModule ) return e ; if ( null === e || "object" !== i ( e ) && "function" != typeof e ) return { "default" : e } ; var t = c ( ) ; if ( t && t . has ( e ) ) return t . get ( e ) ; var r = { } , n = Object . defineProperty && Object . getOwnPropertyDescriptor ; for ( var o in e ) { var u ; Object . prototype . hasOwnProperty . call ( e , o ) && ( ( u = n ? Object . getOwnPropertyDescriptor ( e , o ) : null ) && ( 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 ) { 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 } } , 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 } } ) ;