커밋
This commit is contained in:
parent
4403cada93
commit
6c279e5754
83
documents/업무/2월/2째주/phone-fomatter.txt
Normal file
83
documents/업무/2월/2째주/phone-fomatter.txt
Normal file
|
@ -0,0 +1,83 @@
|
||||||
|
libphonenumber-js ^0.4.19
|
||||||
|
default_country: "KR"
|
||||||
|
metadata:
|
||||||
|
KR: Array(6)
|
||||||
|
0: "82"
|
||||||
|
1: "00(?:3\d{8,9}|7\d{9,11})|[1-7]\d{4,9}|8\d{8}"
|
||||||
|
2:
|
||||||
|
0: (3) ["(\d{2})(\d{3,4})", "$1-$2", Array(1)]
|
||||||
|
1: (4) ["(\d{4})(\d{4})", "$1-$2", Array(2), "$1"]
|
||||||
|
2: (3) ["(\d{5})", "$1", Array(3)]
|
||||||
|
3: (3) ["(\d)(\d{3,4})(\d{4})", "$1-$2-$3", Array(1)]
|
||||||
|
4: (3) ["(\d{2})(\d{3})(\d{4})", "$1-$2-$3", Array(1)]
|
||||||
|
5: (3) ["(\d{2})(\d{3,4})(\d{4})", "$1-$2-$3", Array(1)]
|
||||||
|
6: (3) ["(\d{2})(\d{4})(\d{4})", "$1-$2-$3", Array(1)]
|
||||||
|
3: "0"
|
||||||
|
4: "0$1"
|
||||||
|
5: "0(8[1-46-8]|85\d{2})?"
|
||||||
|
length: 6
|
||||||
|
parsed_input: "01040"
|
||||||
|
current_output: ""
|
||||||
|
national_prefix: "0"
|
||||||
|
national_number: "1040"
|
||||||
|
country: "KR"
|
||||||
|
country_metadata: (6) ["82", "00(?:3\d{8,9}|7\d{9,11})|[1-7]\d{4,9}|8\d{8}", Array(7), "0", "0$1", "0(8[1-46-8]|85\d{2})?"]
|
||||||
|
country_phone_code: "82"
|
||||||
|
available_formats: (7) [Array(3), Array(4), Array(3), Array(3), Array(3), Array(3), Array(3)]
|
||||||
|
matching_formats: [Array(3)]
|
||||||
|
chosen_format: (3) ["(\d{2})(\d{3,4})(\d{4})", "$1-$2-$3", Array(1)]
|
||||||
|
template: "xxx-xxxx-xxxx"
|
||||||
|
partially_populated_template: "010-40xx-xxxx"
|
||||||
|
last_match_position: 5
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
latest
|
||||||
|
options: {}
|
||||||
|
metadata: Metadata {metadata: {…}, v1: false, v2: false, v3: false, v4: true, …}
|
||||||
|
defaultCountry: "KR"
|
||||||
|
formattedOutput: "01031"
|
||||||
|
international: undefined
|
||||||
|
countryCallingCode: undefined
|
||||||
|
digits: "01031"
|
||||||
|
nationalNumberDigits: "1031"
|
||||||
|
nationalPrefix: "0"
|
||||||
|
carrierCode: ""
|
||||||
|
country: "KR"
|
||||||
|
matchingFormats: (2) [Format, Format]
|
||||||
|
chosenFormat: Format {_format: Array(3), metadata: NumberingPlan}
|
||||||
|
template: "xxxxx-xxxx"
|
||||||
|
populatedNationalNumberTemplate: "01031-xxxx"
|
||||||
|
populatedNationalNumberTemplatePosition: 4
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
altKey: false
|
||||||
|
bubbles: true
|
||||||
|
cancelBubble: false
|
||||||
|
cancelable: true
|
||||||
|
charCode: 0
|
||||||
|
code: "Digit1"
|
||||||
|
composed: true
|
||||||
|
ctrlKey: false
|
||||||
|
currentTarget: input#mat-input-4.mat-input-element.mat-form-field-autofill-control.cdk-text-field-autofill-monitored
|
||||||
|
defaultPrevented: false
|
||||||
|
detail: 0
|
||||||
|
eventPhase: 2
|
||||||
|
isComposing: false
|
||||||
|
isTrusted: true
|
||||||
|
key: "1"
|
||||||
|
keyCode: 49
|
||||||
|
location: 0
|
||||||
|
metaKey: false
|
||||||
|
path: (11) [input#mat-input-4.mat-input-element.mat-form-field-autofill-control.cdk-text-field-autofill-monitor…, div.expired-text, ucap-call-dial-pad.ng-star-inserted, mat-dialog-container#mat-dialog-0.mat-dialog-container.ng-tns-c48-33.ng-trigger.ng-trigger-dialogCo…, div#cdk-overlay-0.cdk-overlay-pane, div.cdk-global-overlay-wrapper, div.cdk-overlay-container, body.theme-default.ng-tns-0-0, html, document, global]
|
||||||
|
repeat: false
|
||||||
|
returnValue: true
|
||||||
|
shiftKey: false
|
||||||
|
sourceCapabilities: InputDeviceCapabilities {firesTouchEvents: false}
|
||||||
|
srcElement: input#mat-input-4.mat-input-element.mat-form-field-autofill-control.cdk-text-field-autofill-monitored
|
||||||
|
target: input#mat-input-4.mat-input-element.mat-form-field-autofill-control.cdk-text-field-autofill-monitored
|
||||||
|
timeStamp: 141697.48999999138
|
||||||
|
type: "keydown"
|
||||||
|
view: global {parent: global, postMessage: ƒ, blur: ƒ, focus: ƒ, close: ƒ, …}
|
||||||
|
which: 49
|
|
@ -68,6 +68,9 @@ export class AlbumBoxComponent implements OnInit, OnDestroy {
|
||||||
|
|
||||||
playable = true;
|
playable = true;
|
||||||
|
|
||||||
|
urlList: string[];
|
||||||
|
currentIndex = 0;
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
private store: Store<any>,
|
private store: Store<any>,
|
||||||
private sessionStorageService: SessionStorageService,
|
private sessionStorageService: SessionStorageService,
|
||||||
|
@ -147,6 +150,9 @@ export class AlbumBoxComponent implements OnInit, OnDestroy {
|
||||||
}
|
}
|
||||||
|
|
||||||
getImageUrl(fileInfo: FileInfoTotal): string {
|
getImageUrl(fileInfo: FileInfoTotal): string {
|
||||||
|
if(FileType.Bundle === fileInfo.info.type && !!this.urlList) {
|
||||||
|
return this.urlList[this.currentIndex];
|
||||||
|
}
|
||||||
return this.commonApiService.urlForFileTalkDownload(
|
return this.commonApiService.urlForFileTalkDownload(
|
||||||
{
|
{
|
||||||
userSeq: this.loginRes.userSeq,
|
userSeq: this.loginRes.userSeq,
|
||||||
|
@ -158,6 +164,10 @@ export class AlbumBoxComponent implements OnInit, OnDestroy {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getThumbnailForBundle(info: Info<BundleImageEventJson>, index: number) {
|
||||||
|
return `${info.sentMessageJson.baseUrl}${info.sentMessageJson.thumbUrls[index]}`;
|
||||||
|
}
|
||||||
|
|
||||||
onErrorThumbnail(el: HTMLElement, fileInfo: FileInfoTotal): void {
|
onErrorThumbnail(el: HTMLElement, fileInfo: FileInfoTotal): void {
|
||||||
const iconEl = document.createElement('div');
|
const iconEl = document.createElement('div');
|
||||||
iconEl.setAttribute(
|
iconEl.setAttribute(
|
||||||
|
@ -174,7 +184,9 @@ export class AlbumBoxComponent implements OnInit, OnDestroy {
|
||||||
if (this.currentTabIndex === 0) {
|
if (this.currentTabIndex === 0) {
|
||||||
// Image
|
// Image
|
||||||
this.filteredList = this.fileInfoTotal.filter(
|
this.filteredList = this.fileInfoTotal.filter(
|
||||||
fileInfo => fileInfo.info.type === FileType.Image
|
fileInfo =>
|
||||||
|
fileInfo.info.type === FileType.Image ||
|
||||||
|
fileInfo.info.type === FileType.Bundle
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
// Video
|
// Video
|
||||||
|
@ -192,6 +204,22 @@ export class AlbumBoxComponent implements OnInit, OnDestroy {
|
||||||
|
|
||||||
this.playable = true;
|
this.playable = true;
|
||||||
this.selectedFile = fileInfo;
|
this.selectedFile = fileInfo;
|
||||||
|
|
||||||
|
if (FileType.Bundle === fileInfo.info.type) {
|
||||||
|
this.urlList = [];
|
||||||
|
const bundleJson = fileInfo.info.sentMessageJson as BundleImageEventJson;
|
||||||
|
bundleJson.thumbUrls.forEach((thumb, index) => {
|
||||||
|
this.urlList.push(
|
||||||
|
`${bundleJson.baseUrl}${bundleJson.thumbUrls[index]}`
|
||||||
|
.replace('WebFile', 'AttFile')
|
||||||
|
.replace('.thumb.jpg','')
|
||||||
|
);
|
||||||
|
});
|
||||||
|
this.currentIndex = 0;
|
||||||
|
} else {
|
||||||
|
this.urlList = undefined;
|
||||||
|
this.currentIndex = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
getCheckItem(fileInfo: FileInfoTotal) {
|
getCheckItem(fileInfo: FileInfoTotal) {
|
||||||
|
@ -261,4 +289,22 @@ export class AlbumBoxComponent implements OnInit, OnDestroy {
|
||||||
this.playable = false;
|
this.playable = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onclickBundleImagePrev() {
|
||||||
|
if (!this.urlList || 0 === this.urlList.length || 0 === this.currentIndex) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.currentIndex--;
|
||||||
|
}
|
||||||
|
|
||||||
|
onClickBundleImageNext() {
|
||||||
|
if (
|
||||||
|
!this.urlList ||
|
||||||
|
0 === this.urlList.length ||
|
||||||
|
this.urlList.length - 1 <= this.currentIndex
|
||||||
|
) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.currentIndex++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,6 @@ export interface BundleImageEventJson {
|
||||||
fileCount?: number;
|
fileCount?: number;
|
||||||
baseUrl?: string;
|
baseUrl?: string;
|
||||||
thumbUrls?: string[];
|
thumbUrls?: string[];
|
||||||
fileType?: FileType;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export const decodeBundleImageEventJson: EventJsonDecoder<BundleImageEventJson> = (
|
export const decodeBundleImageEventJson: EventJsonDecoder<BundleImageEventJson> = (
|
||||||
|
|
|
@ -177,45 +177,6 @@ export class CommonApiService {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public fileTalkSaveMulti(
|
|
||||||
req: FileTalkSaveMultiRequest,
|
|
||||||
fileTalkSaveMultiUrl?: string
|
|
||||||
): Observable<FileTalkSaveMultiResponse> {
|
|
||||||
const httpReq = new HttpRequest(
|
|
||||||
'POST',
|
|
||||||
!!fileTalkSaveMultiUrl
|
|
||||||
? fileTalkSaveMultiUrl
|
|
||||||
: this.urls.fileTalkSaveMulti,
|
|
||||||
encodeFileTalkSaveMulti(req),
|
|
||||||
{ reportProgress: true, responseType: 'text' as 'json' }
|
|
||||||
);
|
|
||||||
|
|
||||||
const progressList: Subject<number>[] = [];
|
|
||||||
for (const p of req.fileUploadItems) {
|
|
||||||
progressList.push(p.uploadStart());
|
|
||||||
}
|
|
||||||
|
|
||||||
return this.httpClient.request(httpReq).pipe(
|
|
||||||
filter(event => {
|
|
||||||
if (event instanceof HttpResponse) {
|
|
||||||
return true;
|
|
||||||
} else if (HttpEventType.UploadProgress === event.type) {
|
|
||||||
// progress.next(Math.round((100 * event.loaded) / event.total));
|
|
||||||
for (const progress of progressList) {
|
|
||||||
progress.next(Math.round((100 * event.loaded) / event.total));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}),
|
|
||||||
map((event: HttpResponse<any>) => {
|
|
||||||
for (const p of req.fileUploadItems) {
|
|
||||||
p.uploadComplete();
|
|
||||||
}
|
|
||||||
return decodeFileTalkSaveMulti(event.body);
|
|
||||||
})
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public fileTalkSave(
|
public fileTalkSave(
|
||||||
req: FileTalkSaveRequest,
|
req: FileTalkSaveRequest,
|
||||||
fileTalkSaveUrl?: string
|
fileTalkSaveUrl?: string
|
||||||
|
@ -245,6 +206,37 @@ export class CommonApiService {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public fileTalkSaveMulti(
|
||||||
|
req: FileTalkSaveMultiRequest,
|
||||||
|
fileTalkSaveMultiUrl?: string
|
||||||
|
): Observable<FileTalkSaveMultiResponse> {
|
||||||
|
const httpReq = new HttpRequest(
|
||||||
|
'POST',
|
||||||
|
!!fileTalkSaveMultiUrl
|
||||||
|
? fileTalkSaveMultiUrl
|
||||||
|
: this.urls.fileTalkSaveMulti,
|
||||||
|
encodeFileTalkSaveMulti(req),
|
||||||
|
{ reportProgress: true, responseType: 'text' as 'json' }
|
||||||
|
);
|
||||||
|
|
||||||
|
const progress = req.fileUploadItem.uploadStart();
|
||||||
|
|
||||||
|
return this.httpClient.request(httpReq).pipe(
|
||||||
|
filter(event => {
|
||||||
|
if (event instanceof HttpResponse) {
|
||||||
|
return true;
|
||||||
|
} else if (HttpEventType.UploadProgress === event.type) {
|
||||||
|
progress.next(Math.round((100 * event.loaded) /event.total));
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}),
|
||||||
|
map((event: HttpResponse<any) => {
|
||||||
|
req.fileUploadItem.uploadComplete();
|
||||||
|
return decodeFileTalkSaveMulti(event.body);
|
||||||
|
})
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
public acceptableExtensionForFileTalk(
|
public acceptableExtensionForFileTalk(
|
||||||
extensions: string[]
|
extensions: string[]
|
||||||
): { accept: boolean; reject: string[] } {
|
): { accept: boolean; reject: string[] } {
|
||||||
|
|
|
@ -16,9 +16,8 @@ export interface FileTalkSaveMultiRequest extends APIRequest {
|
||||||
deviceType: DeviceType;
|
deviceType: DeviceType;
|
||||||
token: string;
|
token: string;
|
||||||
files: File[];
|
files: File[];
|
||||||
fileUploadItems: FileUploadItem[];
|
fileUploadItems: FileUploadItem;
|
||||||
roomSeq?: string;
|
roomSeq?: string;
|
||||||
type?: string;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface FileTalkSaveMultiResponse extends APIResponse {
|
export interface FileTalkSaveMultiResponse extends APIResponse {
|
||||||
|
@ -36,7 +35,7 @@ const fileTalkSaveEncodeMapTemp = {
|
||||||
deviceType: 'p_device_type',
|
deviceType: 'p_device_type',
|
||||||
token: 'p_token',
|
token: 'p_token',
|
||||||
roomSeq: 'p_room_id',
|
roomSeq: 'p_room_id',
|
||||||
files: 'file[]',
|
files: 'file',
|
||||||
type: 'p_type'
|
type: 'p_type'
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user