{"version":3,"file":"tikops-ux-utils.mjs","sources":["../../../projects/tikops-ux/utils/dv-array-list.ts","../../../projects/tikops-ux/utils/dv-constants.ts","../../../projects/tikops-ux/utils/dv-utils.ts","../../../projects/tikops-ux/utils/entities/dv-column.info.ts","../../../projects/tikops-ux/utils/entities/dv-date.info.ts","../../../projects/tikops-ux/utils/entities/dv-table.info.ts","../../../projects/tikops-ux/utils/enums/dv-modal-width.enum.ts","../../../projects/tikops-ux/utils/common/dv-overlaypanel-table-controller.ts","../../../projects/tikops-ux/utils/tikops-ux-utils.ts"],"sourcesContent":["\r\nexport class DistinctEnt {\r\n    public code: string = null;\r\n    public label: any = null;\r\n    public selected: boolean = false;\r\n    public count: number = 0;\r\n    public items: any[] = [];\r\n    public constructor() {\r\n        // 생성자\r\n    }\r\n}\r\nexport class  DvArrayList<T>  implements Iterable<T> {\r\n    private list: T[] = [];\r\n    public constructor() {\r\n        // 생성자\r\n    }\r\n    public [Symbol.iterator]() {\r\n        let nextIndex = 0;\r\n\r\n        return {\r\n            next: () => {\r\n                return {\r\n                    value: this.list[nextIndex++],\r\n                    done: nextIndex > this.list.length\r\n                };\r\n            }\r\n        };\r\n    }\r\n\r\n    /*\r\n        리스트 초기화\r\n    */\r\n    public clear(): void {\r\n        try {\r\n            this.list = [];\r\n        } catch (error) {\r\n            console.error(error);\r\n        }\r\n    }\r\n    public count(): number {\r\n        return this.list.length;\r\n    }\r\n    public getItem(index: number): T {\r\n        if (index < 0) {\r\n            return null;\r\n        }\r\n        if (this.list.length === 0) {\r\n            return null;\r\n        }\r\n        if (index > this.list.length - 1) {\r\n            return null;\r\n        }\r\n        return this.list[index];\r\n    }\r\n    public getItems(): T[] {\r\n        return this.list;\r\n    }\r\n    public getPropertyList(): string[] {\r\n        const list: string[] = [];\r\n        if (this.list.length === 0) {\r\n            return list;\r\n        }\r\n        const ent: T = this.list[0];\r\n        // tslint:disable-next-line:forin\r\n        for (const property  in ent) {\r\n            list.push(property);\r\n        }\r\n        return list;\r\n    }\r\n    public add(item: T): void {\r\n        this.list.push(item);\r\n    }\r\n\r\n    public insert(index: number, item: T): void {\r\n        try {\r\n            if (index < 0) {\r\n                return;\r\n            }\r\n            if (this.list.length === 0) {\r\n                return;\r\n            }\r\n            if (index > this.list.length - 1) {\r\n                return;\r\n            }\r\n            this.list.splice(index, 0, item);\r\n        } catch (error) {\r\n            console.error(error);\r\n        }\r\n    }\r\n    public remove(item: T): void {\r\n        try {\r\n            if (!!item === false) {\r\n                return;\r\n            }\r\n            this.list.splice(this.list.indexOf(item), 1);\r\n        } catch (error) {\r\n            console.log(error);\r\n        }\r\n    }\r\n    public removeAt(index: number): void {\r\n        try {\r\n            if (index < 0) {\r\n                return;\r\n            }\r\n            if (this.list.length === 0) {\r\n                return;\r\n            }\r\n            if (index > this.list.length - 1) {\r\n                return;\r\n            }\r\n            this.list.splice(index, 1);\r\n        } catch (error) {\r\n            console.error(error);\r\n        }\r\n    }\r\n    /*\r\n        두개의 배열 합치기\r\n    */\r\n    public concat(arrEnt: DvArrayList<T>) {\r\n        this.list = this.list.concat(arrEnt.getItems());\r\n    }\r\n    /*\r\n        인스턴스가 같은지 확인한다.\r\n    */\r\n    public equalsInstance(item: T): boolean {\r\n        if (!!(this.list) === false) {\r\n            return false;\r\n        }\r\n        for (const ent of this.list) {\r\n            if (ent === item) {\r\n                return true;\r\n            }\r\n        }\r\n        return false;\r\n    }\r\n    /*\r\n        컬럼명에 해당하는 값이 같은지 확인한다.\r\n    */\r\n    public equalsValue(columnName: string , value: any): boolean {\r\n        if (!!(this.list) === false) {\r\n            return false;\r\n        }\r\n        for (const ent of this.list) {\r\n            // tslint:disable-next-line: forin\r\n            for (const col in ent) {\r\n                if (columnName === col) {\r\n                    if (ent[columnName] === value) {\r\n                        return true;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        return false;\r\n    }\r\n    /*\r\n        리스트를 소팅한다..\r\n    */\r\n    public sort(columnName: string, mode: string = \"ASC\"): void {\r\n        if (!!(this.list) === false) {\r\n            return null;\r\n        }\r\n\r\n        if (mode === \"ASC\") {\r\n            this.list.sort( (a, b) => {\r\n                return a[columnName] < b[columnName] ? -1 : a[columnName] > b[columnName] ? 1 : 0;\r\n            });\r\n        } else if (mode === \"DESC\") {\r\n            this.list.sort( (a, b) => {\r\n                return a[columnName] > b[columnName] ? -1 : a[columnName] < b[columnName] ? 1 : 0;\r\n            });\r\n        }\r\n    }\r\n    /*\r\n        컬럼에 해당하는 값이 유일한 문자열 리스트를 리턴한다.\r\n    */\r\n    public distinctList(columnCD: string, columnLabel: string, sorting: string = \"code\"): DistinctEnt[] {\r\n        if (!!(this.list) === false) {\r\n            return null;\r\n        }\r\n        const tempList: DvArrayList<T> = new DvArrayList();\r\n        for (const ent of this.list) {\r\n            // tslint:disable-next-line: forin\r\n            for (const col in ent) {\r\n                if (columnCD === col) {\r\n                    if (tempList.equalsValue(columnCD, ent[columnCD]) === false) {\r\n                        tempList.add(ent);\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        const strList: DistinctEnt[] = [];\r\n        for (const temp of tempList) {\r\n            const ent: DistinctEnt = new DistinctEnt();\r\n            ent.code = temp[columnCD];\r\n            ent.label = temp[columnLabel];\r\n            strList.push(ent);\r\n        }\r\n        if (sorting === \"code\") {\r\n            strList.sort( (a, b) => {\r\n                return a.code < b.code ? -1 : a.code > b.code ? 1 : 0;\r\n            });\r\n        } else if (sorting === \"label\") {\r\n            strList.sort( (a, b) => {\r\n                return a.label < b.label ? -1 : a.label > b.label ? 1 : 0;\r\n            });\r\n        }\r\n        return strList;\r\n    }\r\n\r\n    public copy(arrEnt: DvArrayList<T>): void {\r\n        this.list = [];\r\n        for (const ent of arrEnt) {\r\n            const newObj: T = {...ent};\r\n            this.add(newObj);\r\n        }\r\n    }\r\n\r\n    public getIndex(ent: T): number {\r\n        return this.list.indexOf(ent);\r\n    }\r\n}\r\n","export class DvConstants {\r\n    public static TOOLTIP_SHOW_DELAY = 300 as const;\r\n    public static TOOLTIP_HIDE_DELAY = 500 as const;\r\n\r\n    public static NECESSORY_SUCCESS_STYLE_CLASS: string = \"dv-input-necessary-success\" as const;\r\n    public static NECESSORY_FAIL_STYLE_CLASS: string = \"dv-input-necessary-fail\" as const;\r\n}\r\n","declare let window: any;\r\ndeclare let $: any;\r\n\r\nexport class DvUtils {\r\n\r\n    public specialChar(event: any) {\r\n        // 특수문자 입력방지\r\n        if ((event.keyCode > 32 && event.keyCode < 45) || (event.keyCode > 45 && event.keyCode < 48) || (event.keyCode > 57 && event.keyCode < 65) || (event.keyCode > 90 && event.keyCode < 97)) {\r\n            event.returnValue = false;\r\n        }\r\n        // 따옴표, 홑따옴표\r\n        if (event.keyCode === 34 || event.keyCode === 39) {\r\n            event.returnValue = false;\r\n        }\r\n    }\r\n\r\n    public isNumber(o: any): boolean {\r\n        return (typeof o === \"number\");\r\n    }\r\n\r\n    public getMobileOperatingSystem(): boolean {\r\n        const userAgent = navigator.userAgent || navigator.vendor || window.opera;\r\n        // Windows Phone must come first because its UA also contains \"Android\"\r\n        // iOS detection from: http://stackoverflow.com/a/9039885/177710\r\n        if (/windows phone/i.test(userAgent)) {\r\n            return true;\r\n        } else if (/android/i.test(userAgent)) {\r\n            return true;\r\n        } else if (this.iOS()) {\r\n            // !window.MSStream && /iPad|iPhone|iPod/.test(navigator.userAgent)\r\n            return true;\r\n        } else {\r\n            return false;\r\n        }\r\n    }\r\n\r\n    public isEqualObject(value1: any, value2: any): boolean {\r\n        if (!value1 || !value2) {\r\n            return false;\r\n        }\r\n        if (Object.keys(value1).length !== Object.keys(value2).length) {\r\n            return false;\r\n        }\r\n        return Object.keys(value1).reduce((isEqual, paramKey) => {\r\n            if (!isEqual) { return isEqual; }\r\n\r\n            return value1[paramKey] === value2[paramKey];\r\n        }, true);\r\n    }\r\n\r\n    public getPageTableHeight() {\r\n        return ($(\"footer\").position().top - $(\".page-body\").offset().top - 36).toFixed() + \"px\";\r\n    }\r\n\r\n    private iOS() {\r\n        return [\r\n            \"iPad Simulator\",\r\n            \"iPhone Simulator\",\r\n            \"iPod Simulator\",\r\n            \"iPad\",\r\n            \"iPhone\",\r\n            \"iPod\"\r\n        ].includes(navigator.platform)\r\n        // iPad on iOS 13 detection\r\n        || (navigator.userAgent.includes(\"Mac\") && \"ontouchend\" in document);\r\n    }\r\n}\r\n","/**\r\n * Table  UI 클래스\r\n */\r\nexport class DvColumnInfo {\r\n    public index: number = 0;\r\n    public horiAlign: string = null;\r\n    public vertAlign: string = null;\r\n    public dataType: string = null;\r\n    public rowspan: number = 1;\r\n    public colspan: number = 1;\r\n    public width: string = null;\r\n    public height: string = null;\r\n    public filterColWidth: string = \"80;\";\r\n    public className: string = null;\r\n    public style: string = null;\r\n    public sizeable: boolean = false;\r\n    public selected: boolean = false;\r\n    public field: string  = null;\r\n    public header: string = null;\r\n    public isHeader: boolean = false;\r\n    public isHidden: boolean = false;\r\n    public isFrozen: boolean = false;\r\n    public alignFrozen: string = \"left\";\r\n    public isLink: boolean = false;\r\n    public rowClass: string = \"text-center ui-resizable-column\";\r\n    public gridClass: string = \"\";\r\n    public headerClass: string = \"text-center \";\r\n    public rowCelClass: string = \"td-padding-0\";\r\n    public rowStyle: string = \"font-size:9pt;\";\r\n    public showRowClass: string = \"\";\r\n    public editable: boolean = false;\r\n    public type: string = \"text\";\r\n    public keypress: (row: any, event: KeyboardEvent) => void;\r\n    public placeholder: string = \"입력\";\r\n\r\n    constructor(index: number, field: string, header: string, width: string) {\r\n        this.index = index;\r\n        this.field = field;\r\n        this.header = header;\r\n        this.width = width;\r\n    }\r\n\r\n    public getNgStyle(): void {\r\n        let style = null;\r\n        if (!!(this.width) === true) {\r\n            style = \" 'width': \" + this.width ;\r\n        }\r\n        return style;\r\n    }\r\n}\r\n","export class DvDateInfo {\r\n    public year: number = null;\r\n    public month: number = null;\r\n    public day: number = null;\r\n    public hours: number = null;\r\n    public minutes: number = null;\r\n    public seconds: number = null;\r\n    public constructor() {\r\n        const date: Date = new Date();\r\n        this.year = date.getFullYear();\r\n        this.month = date.getMonth() + 1;\r\n        this.day = date.getDate();\r\n        this.hours = date.getHours();\r\n        this.minutes = date.getMinutes();\r\n        this.seconds = date.getSeconds();\r\n    }\r\n\r\n    public setToday() {\r\n        const date: Date = new Date();\r\n        this.year = date.getFullYear();\r\n        this.month = date.getMonth() + 1;\r\n        this.day = date.getDate();\r\n    }\r\n\r\n    public setData(date: Date) {\r\n        this.year = date.getFullYear();\r\n        this.month = date.getMonth() + 1;\r\n        this.day = date.getDate();\r\n    }\r\n\r\n    public setDateObjToString(date8: string) {\r\n        if (date8 === null || date8.length < 8) {\r\n            this.year = null;\r\n            this.month = null;\r\n            this.day = null;\r\n        } else {\r\n            this.year = Number(date8.substring(0, 4));\r\n            this.month = Number(date8.substring(4, 6));\r\n            this.day = Number(date8.substring(6, 8));\r\n        }\r\n    }\r\n\r\n    public getDate8(): string {\r\n        if (this.year === null || this.month === null || this.day === null) {\r\n            return null;\r\n        }\r\n        let date8: string = \"\";\r\n        date8 = (String)(this.year)\r\n            + ((this.month >= 10) ? (String)(this.month) : \"0\" + (String)(this.month))\r\n            + ((this.day >= 10) ? (String)(this.day) : \"0\" + (String)(this.day));\r\n        return date8;\r\n    }\r\n\r\n    public getDate6(): string {\r\n        let date8: string = \"\";\r\n        date8 = (String)(this.year).substring(2, 4)\r\n            + ((this.month >= 10) ? (String)(this.month) : \"0\" + (String)(this.month))\r\n            + ((this.day >= 10) ? (String)(this.day) : \"0\" + (String)(this.day));\r\n        return date8;\r\n    }\r\n\r\n    public getDate4(): string {\r\n        let date8: string = \"\";\r\n        date8 = ((this.month >= 10) ? (String)(this.month) : \"0\" + (String)(this.month))\r\n            + ((this.day >= 10) ? (String)(this.day) : \"0\" + (String)(this.day));\r\n        return date8;\r\n    }\r\n\r\n    public getHours(): number {\r\n        return this.hours;\r\n    }\r\n    public getMinutes(): number {\r\n        return this.minutes;\r\n    }\r\n    public getSeconds(): number {\r\n        return this.seconds;\r\n    }\r\n\r\n    public clone(data: any) {\r\n        this.year = data.year;\r\n        this.month = data.month;\r\n        this.day = data.day;\r\n    }\r\n\r\n    public getDate() {\r\n        return new Date(this.year, this.month - 1, this.day);\r\n    }\r\n}\r\n","/**\r\n * Table  UI 클래스\r\n */\r\n\r\nimport { DvArrayList } from \"../dv-array-list\";\r\nimport { DvColumnInfo } from \"./dv-column.info\";\r\n\r\nexport enum COLUMN_MODE {\r\n    MAIN_TABLE,\r\n    POPUP_TABLE1,\r\n    POPUP_TABLE2\r\n}\r\nexport class DvTableInfo {\r\n    public name: string;\r\n    public columns: DvArrayList<DvColumnInfo> = new DvArrayList();\r\n    public popupColumns1: DvArrayList<DvColumnInfo> = new DvArrayList();\r\n    public popupColumns2: DvArrayList<DvColumnInfo> = new DvArrayList();\r\n    public frozenColumns: DvArrayList<DvColumnInfo> = new DvArrayList();\r\n    public rowStyle: DvArrayList<DvColumnInfo> = new DvArrayList();\r\n\r\n    public addColumn(column: DvColumnInfo, columnMode: COLUMN_MODE = COLUMN_MODE.MAIN_TABLE): void {\r\n        switch (columnMode) {\r\n            case COLUMN_MODE.MAIN_TABLE:\r\n                this.columns.add(column);\r\n                break;\r\n            case COLUMN_MODE.POPUP_TABLE1:\r\n                this.popupColumns1.add(column);\r\n                break;\r\n            case COLUMN_MODE.POPUP_TABLE2:\r\n                this.popupColumns2.add(column);\r\n                break;\r\n            default:\r\n                this.columns.add(column);\r\n                break;\r\n        }\r\n    }\r\n    public addFrozenColumn(column: DvColumnInfo): void {\r\n        column.isFrozen = true;\r\n        this.frozenColumns.add(column);\r\n    }\r\n\r\n    public getColumn(index: number, columnMode: COLUMN_MODE = COLUMN_MODE.MAIN_TABLE): DvColumnInfo {\r\n        let tempColumns: DvArrayList<DvColumnInfo> = null;\r\n        switch (columnMode) {\r\n            case COLUMN_MODE.MAIN_TABLE:\r\n                tempColumns = this.columns;\r\n                break;\r\n            case COLUMN_MODE.POPUP_TABLE1:\r\n                tempColumns = this.popupColumns1;\r\n                break;\r\n            case COLUMN_MODE.POPUP_TABLE2:\r\n                tempColumns = this.popupColumns2;\r\n                break;\r\n            default:\r\n                tempColumns = this.columns;\r\n                break;\r\n        }\r\n        if (!!(tempColumns) === false) {\r\n            return null;\r\n        }\r\n        for (const column of tempColumns) {\r\n            if (column.index === index) {\r\n                return column;\r\n            }\r\n        }\r\n        return null;\r\n    }\r\n\r\n    public getFrozenWidth(plus: number): string {\r\n        let fWidth: number = 0;\r\n        if (!!plus === true) {\r\n            fWidth += plus;\r\n        }\r\n        for (const fCol of this.frozenColumns) {\r\n            fWidth += Number(fCol.width.replace(\"px\", \"\"));\r\n        }\r\n        // fWidth += 1;\r\n        return fWidth + \"px\";\r\n    }\r\n}\r\n","export enum DvModalWidth {\r\n    XLARGE = \"1140px\",\r\n    LARGE = \"800px\",\r\n    MEDIUM = \"500px\",\r\n    SMALL = \"300px\"\r\n}\r\n","import { DvOverlayPanelComponent } from \"tikops-ux/dv-standalone/dv-overlaypanel\";\r\nimport { Directive } from \"@angular/core\";\r\nimport { DvArrayList, DvTableInfo } from \"../public-api\";\r\n// import { DvArrayList, DvTableInfo } from \"tikops-ux/utils\";\r\n\r\n@Directive()\r\nexport abstract class DvOverlaypanelTableController<T> {\r\n    abstract op: DvOverlayPanelComponent;\r\n    protected viewDatas: DvArrayList<T> = new DvArrayList();\r\n    protected mainTableInfo = new DvTableInfo();\r\n    protected event: any = null;\r\n\r\n    public release() {\r\n        this.viewDatas.clear();\r\n    }\r\n\r\n    public showDetailPanel(ent: T) {\r\n        if (this.viewDatas.count() > 0) {\r\n            this.op.hide();\r\n            setTimeout(() => {\r\n                this.getViewDatas(ent);\r\n            }, 200);\r\n        } else {\r\n            this.getViewDatas(ent);\r\n        }\r\n    }\r\n\r\n    public setEvents(event: any) {\r\n        this.event = event;\r\n    }\r\n\r\n    public showOverlay() {\r\n        try {\r\n            this.op.show(this.event, this.event.target);\r\n        } catch (e) {\r\n            //\r\n        }\r\n    }\r\n\r\n    /**\r\n     * 데이터 리스트 정의 (DvArrayList<T>)\r\n     * @param ent search object\r\n     */\r\n    protected abstract getViewDatas(ent: T);\r\n\r\n    /**\r\n     * 테이블 컬럼 정의 (DvTableInfo)\r\n     */\r\n    protected abstract initTable();\r\n\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}