GNUI Start your next web project with GNUI.
Gn.util

Gn.util

문자열

  • hyphenate(str: string): string
  • camelize(str: string): string
  • parseBundle(text: string, locale: string): string (locale 에 맞는 표시 라벨 리턴)
  • textToMultiLangs(text: string): { [key: string]: string } (언어와 표시 라벨을 객체화, Start Date{/default}{ko}사용시작{/ko} -> {default: 'Start Date', ko: '사용시작'})
  • formatString(str: string, args: string[]): string ({0},{1},, 포함한 문자열 포맷팅)
  • getByteSize(str: string): number (문자열의 바이트 사이즈 리턴)
  • highlight(str: string, target: any = document.body): void (target 영역에 표시되는 컨텐츠 중, str에 해당하는 텍스트 강조처리)
  • base64.base64UrlEncode(str: string): string
  • base64.base64UrlDecode(str: string): string
Gn.util.hyphenate('someString') //=> some-string
Gn.util.hyphenate('some-string') //=> someString

객체 판별

파라메터로 전달된 값의 속성또는 상태를 판별한다.

  • isFunction(obj: any): boolean
  • isObject(obj: any): boolean
  • isArray(obj: any): boolean
  • isPlainObject(obj: any): boolean
  • isWindow(obj: any): boolean
  • isDocument(obj: any): boolean
  • isNode(obj: any): boolean
  • isElement(obj: any): boolean
  • isNodeCollection(obj: any): boolean
  • isString(value: any): boolean
  • isBoolean(value: any): boolean
  • isNumber(value: any): boolean
  • isNumeric(value: any): boolean
  • isEmpty(obj: any): boolean
  • isUndefined(value: any): boolean
  • isDate(value: any): boolean
  • isHtml(str: string): boolean
  • isVoidElement(element: any): boolean (void elements: area,base,br,col,embed,hr,img,input,keygen,link,menuitem,meta,param,source,track,wbr)
  • isVisible(element: any): boolean
  • isTouch(e: any): boolean (touch 속성이 있는지 판단)
  • isInput(element: any): boolean (input elements: input,select,textarea,button)
  • isEqual(value: any, other: any): boolean
  • isMAC(macStr: string, sep = ':'): boolean
  • isNetworkAndBroadcastAddr(ipStr: string): boolean (IP가 0.0.0.0 혹은 255.255.255.255인지 확인)
  • isIP(ipStr: string, version?: string, ipPattern?: string): boolean (버전과 패턴을 받아서 IP 주소인지 검증)
  • isIPv4Pattern(ipPattern: string, ipPattern?: string, isSubnetMask?: boolean): boolean (특정 패턴의 IP 주소인지 확인, ipPattern값이 없으면 모두 체크 (ipstr|cidr|range|longRange))
  • isIPv6Pattern(ipPattern: string, ipPattern?: string): boolean (특정 패턴의 IP 주소인지 확인, ipPattern값이 없으면 모두 체크 (ipstr|cidr|range|longRange))
  • isIPv4(ipStr: string): boolean (IP V4 주소인지 확인)
  • isIPv4Exclusive(ipStr: string): boolean (IP의 마지막 자리가 0 또는 255 가 아닌 V4 주소인지 확인)
  • isIPv6(ipStr: string): boolean
  • isCidrIPv4(ipStr: string): boolean (cidr 표기법의 IP 주소인지 확인, 1.1.1.1/7 )
  • isCidrIPv6(ipStr: string): boolean
  • isRangeIPv4(ipStr: string): boolean (축약한 IP의 범위인지 확인, 1.1.1.1-2)
  • isRangeIPv6(ipStr: string): boolean
  • isLongRangeIPv4(ipStr: string): boolean (IP의 범위인지 확인, 1.1.1.1-1.1.1.2)
  • isLongRangeIPv6(ipStr: string): boolean
  • isHexPattern(color: string): boolean (헥사 코드인지 검사, #123 #27290e)
  • startsWith(str: string, search: string): boolean
  • endsWith(str: string, search: string): boolean
  • includes(obj: any, search: any): boolean
Gn.util.isFunction(()=>{}) //=> true
Gn.util.isArray([]) //=> true

객체전환

파라메터로 전달된 값을 특정 타입으로 변환하여 리턴한다.

  • toBoolean(value: any): boolean|any
  • toNumber(value: any): number
  • getNumber(value: any): number ( 10px => 10 )
  • toFloat(value: any): number
  • toNode(element: any): HTMLElement
  • toNodes(element: any): any[]
  • toWindow(element: any): any
  • toList(value: any): any[]
  • toMs(time: number): number (ms 단위로 환산한다)
  • toDate(value: any): Date
  • toJson(str: string): any (JSON 문자열을 JavaScript 객체로 변환)
  • toArray(str: string): string[] (문자열을 Array로 변환)

객체속성

  • offset(element: any, coordinates?: any): any
  • position(element: any, parent?: any): any
  • attr(element: any, name: any): any|void (element의 속성값을 가져온다) (get)
  • attr(element: any, name: any, value: any): any|void (element의 속성값을 설정한다) (set)
  • hasAttr(element: any, name: string): boolean
  • removeAttr(element: any, name: string): void
  • data(element: any, dataString: string): any (data-[attribute] 속성 값을 가져온다) (get)
Gn.util.offset($0) //=> { top: 1244, left: 300, height: 25, width: 838, bottom: 124, right: 32 }
Gn.util.position($0) //=> { top: 1244, left: 300 }
GN.util.attr($0, 'id')
GN.util.attr($0, 'id', 'newID')
Gn.util.hasAttr($0, 'id)
Gn.util.removeAttr($0, 'id')

객체 스타일

  • css(element: any, property: any): any (get)
  • css(element: any, property: any, value: any): void (set)
  • css(element: any, property: {[key:string]: value} ): void (set)
GN.util.css($0, 'width')
GN.util.css($0, 'width', '100px')
GN.util.css($0, { width: '100px', height: '100px'})

클래스

  • addClass(element: any, ...args: any[]): void
  • removeClass(element: any, ...args: any[]): void
  • removeClasses(element: any, cls: string): void
  • replaceClass(element: any, ...args: any[]): void
  • hasClass(element: any, cls: string): boolean
  • toggleClass(element: any, ...args: any[]): void

DOM & Selector

  • $(selector: any, context?: any): HTMLElement
  • $$(selector: any, context?: any): Array
  • fragment(html: string): any
  • empty(element: any): any (해당 element 내부의 html을 삭제한다)
  • html(parent: any): string (get)
  • html(parent: any, html: string): void (set)
  • text(parent: any): string (get)
  • text(parent: any, text: string): void (set)
  • val(parent: any): string (get)
  • val(parent: any, text: string): void (set)
  • prepend(parent: any, element: any): any
  • append(parent: any, element: any): any
  • before(ref: any, element: any): any
  • after(ref: any, element: any): any
  • remove(element: any): void
  • find(selector: any, context: any): HTMLElement
  • findAll(selector: any, context: any = document): Array
  • matches(element: any, selector: any): Array
  • parent(element: any): HTMLElement
  • parents(element: any, selector?: any): HTMLElement
  • children(element: any, selector?: any): HTMLElement
  • next(element: any): HTMLElement
  • prev(element: any): HTMLElement
  • nextUntil(element: any, selector?: any): any
  • siblings(element: any, selector?: any): Array
  • escape(css: any): string (window.CSS.escape)
  • isEquals(compareFrom: any, compareTo: any): boolean

이벤트

  • on(targets: Array|any, eventName: string, listener: Function, delegator:? string , useCapture?: boolean): off
  • off(target: Array|any, eventName: string, listener: Function): void
  • once(element, type, selector, listener, useCapture, condition): off
  • trigger(targets: any[]|Node, event: string|Event, detail?: any)
  • getEventPos(e: any, prop = 'client')
  • dragLayout(element: HTMLElement, boundary: Array, events: { drag?: Function, dragStart?: Function, dragEnd?: Function} = {}): Function (드래그 영역을 가로 또는 세로로 제한할 경우 사용, 리턴객체를 통해 이벤트를 해제할 수 있다.)

Viewport

  • scrollTop(element: any, top: number): void
  • scrollIntoView(element: any, offsetBy = 0): void
  • scrollParents(element: any, overflowRe?: RegExp = /auto|scroll/): HTMLElement[]
  • getViewport(scrollElement: any): window|HTMLElement
  • getCenterX(): number
  • getCenterY(): number
  • getPositionX(element: HTMLElement): number
  • getPositionY(element: HTMLElement): number

Number

  • random(min: number, max: number): number
  • clamp(number: number, min: number, max: number): number (number의 min ~ max 값을 제한한다)
  • byteSize(orgValue: number): string|number
  • commaNum(num: number): string

Array

  • last(array: Array): any (배열의 마지막 항목)
  • sortBy(array: Array, prop: string): Array : 오브젝트로 구성된 배열을 특정 prop값으로 정렬한다.(update)
  • removeBy((array: Array, predicate: Function): Array : predicate 결과가 true인 항목을 삭제한 배열을 리턴한다.(update)
  • uniqBy(array: Array, prop: string): Array : 오브젝트로 구성된 배열을 특정 prop값 기준으로 중복되지 않는 데이터를 리턴한다.(new array)
  • sumBy(array: Array, prop?: string): Number : 숫자 또는 오브젝트로 구성된 배열의 특정항목에 대한 합계를 구한다.
  • arrClone(array: Array): array: Array (array 복제)

Object

  • each(obj: any, cb: any): boolean
  • assign(target: any, ...args: Array): any (object.assign)
  • hasOwn(obj: any, key: any): boolean (object의 own property 인지 확인한다.)
  • extend(default: any, options: any): any ( object 얕은 병합 )
  • objExtends(...args: any[]): any
  • objClone(obj: any): any (object 복제)
  • findPath(obj: any, key: string): string
  • findValue(obj: any, pathString: string | Array): any
  • findProperty(obj: any, predicate: (value, key) => {//return true/false}): Array : predicate 결과가 true인 항목 배열을 리턴한다.
  • merge(target: any, source: any): any (deepmerge)

Date

  • dayOfMonth(year: number, month: number) : number (해당하는 월의 일자수 확인)
  • dateDiff(date1: string|number|Date, date2: string|number|Date): number (날짜 비교)
  • dateTimeDiff(date1: string|number|Date, date2: string|number|Date): number (초단위 비교)
  • tempDateByTime(timeStr: string, datestr = dateFormat(new Date(), 'yyyy-MM-dd')): Date (전달된 시간에 해당하는 임의의 Date 객체 생성)
  • dateFormat(date: Date, format: string): string (날짜를 설정된 포멧으로 변경)

기타

  • isIE: boolean (접속한 브라우저가 IE인지 아닌지 확인한다)
  • getBrowser: string (접속한 브라우저를 확인한다)
  • getOS: string (접속한 장비의 OS를 추측한다)
  • toPlainText(content: string): string (html을 escape한 문자열을 반환한다)
  • copyToClipboard(text: string): string (전달받은 텍스트를 클립보드에 저장한다)
  • generateUUID(): string (uuid 를 생성한다)
  • getQuery(key: string): string (url에 포함된 get parameter의 key에 해당하는 값을 반환한다)