import { EventEmitter, Injectable, Output } from '@angular/core';
import { FormArray, FormGroup } from '@angular/forms';
import { Router } from '@angular/router';
-import { CONSTANTNUMBER, ERRORDATA, GETAPIURLHEADER, PACKAGEINFO, PAGERSMARTTABLE, SMARTTABLECLASS, TARSETTINGS } from 'CommonModel';
+import { TranslateService } from '@ngx-translate/core';
+import { CONSTANTNUMBER, ERRORDATA, FILESETTINGS, GETAPIURLHEADER, PACKAGEINFO, PAGERSMARTTABLE, SMARTTABLECLASS, TARSETTINGS } from 'CommonModel';
import { environment } from 'environment';
import * as HttpStatus from 'http-status-codes';
import * as untar from 'js-untar';
// tslint:disable-next-line: max-line-length
public REGX_PASSWORD_PATTERN: RegExp = new RegExp(/^.*(?=.{8,})((?=.*[!@#$%^&*()\-_=+{};:,<.>]){1})(?=.*\d)((?=.*[a-z]){1})((?=.*[A-Z]){1}).*$/);
+ /** Variables to hold maxlength for the description @public */
+ public MAX_LENGTH_DESCRIPTION: number = 500;
+
+ /** Variables to hold maxlength for the name @public */
+ public MAX_LENGTH_NAME: number = 50;
+
/** FormGroup instance added to the form @ html @public */
public formGroup: FormGroup;
/** Check for the root directory @private */
private directoryCount: number = 2;
- constructor(restService: RestService, router: Router) {
+ /** Contains tranlsate instance @private */
+ private translateService: TranslateService;
+
+ constructor(restService: RestService, router: Router, translateService: TranslateService) {
this.restService = restService;
this.router = router;
+ this.translateService = translateService;
}
/** convert epoch time function @public */
public convertEpochTime(unixtimestamp: number): string {
- const monthsArr: string[] = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
- 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
- const date: Date = new Date(unixtimestamp * this.epochTime1000);
- const year: number = date.getFullYear();
- const month: string = monthsArr[date.getMonth()];
- const day: number = date.getDate();
- const hours: number = date.getHours();
- const minutes: string = '0' + date.getMinutes();
- const seconds: string = '0' + date.getSeconds();
- return month + '-' + day + '-' + year + ' ' + hours + ':' + minutes.substr(this.epochTimeMinus2) + ':'
- + seconds.substr(this.epochTimeMinus2);
+ if (!isNullOrUndefined(unixtimestamp)) {
+ const monthsArr: string[] = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
+ 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
+ const date: Date = new Date(unixtimestamp * this.epochTime1000);
+ const year: number = date.getFullYear();
+ const month: string = monthsArr[date.getMonth()];
+ const day: number = date.getDate();
+ const hours: number = date.getHours();
+ const minutes: string = '0' + date.getMinutes();
+ const seconds: string = '0' + date.getSeconds();
+ return month + '-' + day + '-' + year + ' ' + hours + ':' + minutes.substr(this.epochTimeMinus2) + ':'
+ + seconds.substr(this.epochTimeMinus2);
+ }
+ return this.translateService.instant('NODATE');
}
/** Download Files function @public */
- public downloadFiles(shortName: string, binaryData: Blob[], filetype: string): void {
+ public downloadFiles(name: string, binaryData: Blob[], filetype: string): void {
const downloadLink: HTMLAnchorElement = document.createElement('a');
downloadLink.href = window.URL.createObjectURL(new Blob(binaryData, { type: filetype }));
- if (shortName !== undefined) {
+ if (name !== undefined) {
if (window.navigator.msSaveOrOpenBlob) {
- window.navigator.msSaveBlob(new Blob(binaryData, { type: filetype }), 'OSM_Export_' + shortName + '.tar.gz');
+ window.navigator.msSaveBlob(new Blob(binaryData, { type: filetype }), 'OSM_Export_' + name + '.tar.gz');
} else {
- downloadLink.setAttribute('download', 'OSM_Export_' + shortName + '.tar.gz');
+ downloadLink.setAttribute('download', 'OSM_Export_' + name + '.tar.gz');
document.body.appendChild(downloadLink);
downloadLink.click();
}
const getFoldersFiles: {}[] = extractedFiles;
const folderNameStr: string = extractedFiles[0].name;
getFoldersFiles.forEach((value: TARSETTINGS) => {
+ const fileValueObj: FILESETTINGS = this.createFileValueObject(value);
const getRootFolder: string[] = value.name.split('/');
if (value.name.startsWith(folderNameStr) &&
(value.name.endsWith('.yaml') || value.name.endsWith('.yml')) &&
getRootFolder.length === this.directoryCount) {
- tar.append(value.name, packageInfo.descriptor, { type: value.type });
+ tar.append(value.name, packageInfo.descriptor, fileValueObj);
} else {
if (value.type !== 'L') {
- tar.append(value.name, new Uint8Array(value.buffer), { type: value.type });
+ tar.append(value.name, new Uint8Array(value.buffer), fileValueObj);
}
}
});
});
});
}
+ /** Method to return the file information @public */
+ public createFileValueObject(value: TARSETTINGS): FILESETTINGS {
+ return {
+ type: value.type,
+ linkname: value.linkname,
+ owner: value.uname,
+ group: value.gname
+ };
+ }
/** Method to check given string is JSON or not @public */
public checkJson(jsonString: string): boolean {
jsonString = jsonString.replace(/'/g, '"');
return true;
}
/** Clean the form before submit @public */
- public cleanForm(formGroup: FormGroup): void {
+ public cleanForm(formGroup: FormGroup, formName?: String): void {
Object.keys(formGroup.controls).forEach((key: string) => {
- if ((!isNullOrUndefined((formGroup.get(key) as FormArray | FormGroup).controls)) && key !== 'vimconfig') {
+ if ((!isNullOrUndefined((formGroup.get(key) as FormArray | FormGroup).controls)) && key !== 'config') {
// tslint:disable-next-line: no-shadowed-variable
for (const { item, index } of (formGroup.get(key).value).map((item: {}, index: number) => ({ item, index }))) {
const newFormGroup: FormGroup = (formGroup.get(key) as FormArray).controls[index] as FormGroup;
this.cleanForm(newFormGroup);
}
- } else if (formGroup.get(key).value !== undefined && formGroup.get(key).value !== null && key !== 'vimconfig') {
+ } else if (formGroup.get(key).value !== undefined && formGroup.get(key).value !== null && key !== 'config') {
if (!Array.isArray(formGroup.get(key).value)) {
if (typeof formGroup.get(key).value === 'string') {
formGroup.get(key).setValue(formGroup.get(key).value.trim());
}
}
- } else if (key === 'vimconfig') {
+ } else if (key === 'config' && formName === 'vim') {
const newFormGroup: FormGroup = formGroup.get(key) as FormGroup;
this.cleanForm(newFormGroup);
}
const z: number = Math.floor(Math.random() * this.colorStringLength);
return 'rgb(' + x + ',' + y + ',' + z + ')';
}
+
+ /** Add custom name/tag to the dropdown @public */
+ public addCustomTag(tag: string): string {
+ return tag;
+ }
+
+ /** Fetch file extension @public */
+ public fetchFileExtension(fileInfo: FileList): string {
+ return fileInfo[0].name.substring(fileInfo[0].name.lastIndexOf('.') + 1);
+ }
+
/** Method to validate file extension and size @private */
private vaildataFileInfo(fileInfo: File, fileType: string): boolean {
const extension: string = fileInfo.name.substring(fileInfo.name.lastIndexOf('.') + 1);
const packageSize: number = CONSTANTNUMBER.oneMB * environment.packageSize;
- if (extension.toLowerCase() === fileType && fileInfo.size <= packageSize) {
+ if (fileType === 'yaml' && (extension.toLowerCase() === 'yaml' || extension.toLowerCase() === 'yml')
+ && fileInfo.size <= packageSize) {
+ return true;
+ } else if (extension.toLowerCase() === fileType && fileInfo.size <= packageSize) {
return true;
}
return false;