커밋
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;
 | 
			
		||||
 | 
			
		||||
  urlList: string[];
 | 
			
		||||
  currentIndex = 0;
 | 
			
		||||
 | 
			
		||||
  constructor(
 | 
			
		||||
    private store: Store<any>,
 | 
			
		||||
    private sessionStorageService: SessionStorageService,
 | 
			
		||||
@ -147,6 +150,9 @@ export class AlbumBoxComponent implements OnInit, OnDestroy {
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  getImageUrl(fileInfo: FileInfoTotal): string {
 | 
			
		||||
    if(FileType.Bundle === fileInfo.info.type && !!this.urlList) {
 | 
			
		||||
      return this.urlList[this.currentIndex];
 | 
			
		||||
    }
 | 
			
		||||
    return this.commonApiService.urlForFileTalkDownload(
 | 
			
		||||
      {
 | 
			
		||||
        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 {
 | 
			
		||||
    const iconEl = document.createElement('div');
 | 
			
		||||
    iconEl.setAttribute(
 | 
			
		||||
@ -174,7 +184,9 @@ export class AlbumBoxComponent implements OnInit, OnDestroy {
 | 
			
		||||
    if (this.currentTabIndex === 0) {
 | 
			
		||||
      // Image
 | 
			
		||||
      this.filteredList = this.fileInfoTotal.filter(
 | 
			
		||||
        fileInfo => fileInfo.info.type === FileType.Image
 | 
			
		||||
        fileInfo => 
 | 
			
		||||
          fileInfo.info.type === FileType.Image ||
 | 
			
		||||
          fileInfo.info.type === FileType.Bundle
 | 
			
		||||
      );
 | 
			
		||||
    } else {
 | 
			
		||||
      // Video
 | 
			
		||||
@ -192,6 +204,22 @@ export class AlbumBoxComponent implements OnInit, OnDestroy {
 | 
			
		||||
 | 
			
		||||
    this.playable = true;
 | 
			
		||||
    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) {
 | 
			
		||||
@ -261,4 +289,22 @@ export class AlbumBoxComponent implements OnInit, OnDestroy {
 | 
			
		||||
      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;
 | 
			
		||||
  baseUrl?: string;
 | 
			
		||||
  thumbUrls?: string[];
 | 
			
		||||
  fileType?: FileType;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
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(
 | 
			
		||||
    req: FileTalkSaveRequest,
 | 
			
		||||
    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(
 | 
			
		||||
    extensions: string[]
 | 
			
		||||
  ): { accept: boolean; reject: string[] } {
 | 
			
		||||
 | 
			
		||||
@ -16,9 +16,8 @@ export interface FileTalkSaveMultiRequest extends APIRequest {
 | 
			
		||||
  deviceType: DeviceType;
 | 
			
		||||
  token: string;
 | 
			
		||||
  files: File[];
 | 
			
		||||
  fileUploadItems: FileUploadItem[];
 | 
			
		||||
  fileUploadItems: FileUploadItem;
 | 
			
		||||
  roomSeq?: string;
 | 
			
		||||
  type?: string;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export interface FileTalkSaveMultiResponse extends APIResponse {
 | 
			
		||||
@ -36,7 +35,7 @@ const fileTalkSaveEncodeMapTemp = {
 | 
			
		||||
  deviceType: 'p_device_type',
 | 
			
		||||
  token: 'p_token',
 | 
			
		||||
  roomSeq: 'p_room_id',
 | 
			
		||||
  files: 'file[]',
 | 
			
		||||
  files: 'file',
 | 
			
		||||
  type: 'p_type'
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user