sion-data-import 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/index.mjs +5 -0
- package/esm2020/lib/domain/ImportsColumn.mjs +6 -0
- package/esm2020/lib/domain/ImportsTable.mjs +3 -0
- package/esm2020/lib/domain/TableDto.mjs +8 -0
- package/esm2020/lib/service/http.service.mjs +70 -0
- package/esm2020/lib/sion-data-import.module.mjs +253 -0
- package/esm2020/lib/utils/urlutil.mjs +18 -0
- package/esm2020/lib/utils/util.mjs +129 -0
- package/esm2020/lib/views/import-table-list/import-table-data/import-table-data.component.mjs +145 -0
- package/esm2020/lib/views/import-table-list/import-table-detail/import-table-detail.component.mjs +469 -0
- package/esm2020/lib/views/import-table-list/import-table-list.component.mjs +245 -0
- package/esm2020/sion-data-import.mjs +5 -0
- package/index.d.ts +5 -0
- package/index.d.ts.map +1 -0
- package/lib/domain/ImportsColumn.d.ts +12 -0
- package/lib/domain/ImportsColumn.d.ts.map +1 -0
- package/lib/domain/ImportsTable.d.ts +11 -0
- package/lib/domain/ImportsTable.d.ts.map +1 -0
- package/lib/domain/TableDto.d.ts +7 -0
- package/lib/domain/TableDto.d.ts.map +1 -0
- package/lib/service/http.service.d.ts +22 -0
- package/lib/service/http.service.d.ts.map +1 -0
- package/lib/sion-data-import.module.d.ts +57 -0
- package/lib/sion-data-import.module.d.ts.map +1 -0
- package/lib/utils/urlutil.d.ts +18 -0
- package/lib/utils/urlutil.d.ts.map +1 -0
- package/lib/utils/util.d.ts +11 -0
- package/lib/utils/util.d.ts.map +1 -0
- package/lib/views/import-table-list/import-table-data/import-table-data.component.d.ts +39 -0
- package/lib/views/import-table-list/import-table-data/import-table-data.component.d.ts.map +1 -0
- package/lib/views/import-table-list/import-table-detail/import-table-detail.component.d.ts +51 -0
- package/lib/views/import-table-list/import-table-detail/import-table-detail.component.d.ts.map +1 -0
- package/lib/views/import-table-list/import-table-list.component.d.ts +57 -0
- package/lib/views/import-table-list/import-table-list.component.d.ts.map +1 -0
- package/package.json +39 -0
- package/sion-data-import.d.ts.map +1 -0
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export * from './lib/sion-data-import.module';
|
|
2
|
+
export { ImportTableListComponent } from "./lib/views/import-table-list/import-table-list.component";
|
|
3
|
+
export { ImportTableDetailComponent } from "./lib/views/import-table-list/import-table-detail/import-table-detail.component";
|
|
4
|
+
export { ImportTableDataComponent } from "./lib/views/import-table-list/import-table-data/import-table-data.component";
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL3Npb24tZGF0YS1pbXBvcnQvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsK0JBQStCLENBQUM7QUFFOUMsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sMkRBQTJELENBQUM7QUFDbkcsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0saUZBQWlGLENBQUM7QUFDM0gsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sNkVBQTZFLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYi9zaW9uLWRhdGEtaW1wb3J0Lm1vZHVsZSc7XHJcblxyXG5leHBvcnQge0ltcG9ydFRhYmxlTGlzdENvbXBvbmVudH0gZnJvbSBcIi4vbGliL3ZpZXdzL2ltcG9ydC10YWJsZS1saXN0L2ltcG9ydC10YWJsZS1saXN0LmNvbXBvbmVudFwiO1xyXG5leHBvcnQge0ltcG9ydFRhYmxlRGV0YWlsQ29tcG9uZW50fSBmcm9tIFwiLi9saWIvdmlld3MvaW1wb3J0LXRhYmxlLWxpc3QvaW1wb3J0LXRhYmxlLWRldGFpbC9pbXBvcnQtdGFibGUtZGV0YWlsLmNvbXBvbmVudFwiO1xyXG5leHBvcnQge0ltcG9ydFRhYmxlRGF0YUNvbXBvbmVudH0gZnJvbSBcIi4vbGliL3ZpZXdzL2ltcG9ydC10YWJsZS1saXN0L2ltcG9ydC10YWJsZS1kYXRhL2ltcG9ydC10YWJsZS1kYXRhLmNvbXBvbmVudFwiXHJcbiJdfQ==
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export class ImportsColumn {
|
|
2
|
+
constructor() {
|
|
3
|
+
this.data_format = '';
|
|
4
|
+
}
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW1wb3J0c0NvbHVtbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2lvbi1kYXRhLWltcG9ydC9zcmMvbGliL2RvbWFpbi9JbXBvcnRzQ29sdW1uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxhQUFhO0lBQTFCO1FBS0UsZ0JBQVcsR0FBWSxFQUFFLENBQUM7SUFLNUIsQ0FBQztDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIEltcG9ydHNDb2x1bW57XHJcbiAgbmFtZT86IHN0cmluZztcclxuICB0aXRsZT86IHN0cmluZztcclxuICBjb2x1bW5fdHlwZT86IHN0cmluZztcclxuICBkZWZhdWx0X3ZhbHVlPzpvYmplY3Q7XHJcbiAgZGF0YV9mb3JtYXQ/OiBzdHJpbmcgPSAnJztcclxuICB0YWJsZV9pZD86b2JqZWN0O1xyXG4gIHNlcT86IG51bWJlcjtcclxuICBwcmltYXJ5X2tleT86IG51bWJlcjtcclxuICBtYXhfbGVuZ3RoPzogbnVtYmVyO1xyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export class ImportsTable {
|
|
2
|
+
}
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW1wb3J0c1RhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zaW9uLWRhdGEtaW1wb3J0L3NyYy9saWIvZG9tYWluL0ltcG9ydHNUYWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sWUFBWTtDQVN4QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBJbXBvcnRzVGFibGV7XHJcbiAgaWQ/Om9iamVjdDtcclxuICBuYW1lPzogc3RyaW5nO1xyXG4gIHRpdGxlPzogc3RyaW5nO1xyXG4gIGNyZWF0ZV9kYXRlX3RpbWU/OiBzdHJpbmc7XHJcbiAgdXBkYXRlX2RhdGVfdGltZT86IHN0cmluZztcclxuICBpbXBvcnRzX3R5cGU/OiBzdHJpbmc7XHJcbiAgZmlsZV9wYXRoPzogc3RyaW5nO1xyXG4gIGRiX3R5cGU/OiBzdHJpbmc7XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ImportsTable } from "./ImportsTable";
|
|
2
|
+
export class TableDto {
|
|
3
|
+
constructor() {
|
|
4
|
+
this.table = new ImportsTable();
|
|
5
|
+
this.columnList = [];
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFibGVEdG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Npb24tZGF0YS1pbXBvcnQvc3JjL2xpYi9kb21haW4vVGFibGVEdG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRzVDLE1BQU0sT0FBTyxRQUFRO0lBQXJCO1FBQ0UsVUFBSyxHQUFnQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3hDLGVBQVUsR0FBbUIsRUFBRSxDQUFDO0lBQ2xDLENBQUM7Q0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW1wb3J0c1RhYmxlfSBmcm9tIFwiLi9JbXBvcnRzVGFibGVcIjtcclxuaW1wb3J0IHtJbXBvcnRzQ29sdW1ufSBmcm9tIFwiLi9JbXBvcnRzQ29sdW1uXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgVGFibGVEdG97XHJcbiAgdGFibGU6SW1wb3J0c1RhYmxlID0gbmV3IEltcG9ydHNUYWJsZSgpO1xyXG4gIGNvbHVtbkxpc3Q6SW1wb3J0c0NvbHVtbltdID0gW107XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { HttpClient } from "@angular/common/http";
|
|
3
|
+
import { UrlUtil } from "../utils/urlutil";
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/common/http";
|
|
6
|
+
export class HttpService {
|
|
7
|
+
constructor(http) {
|
|
8
|
+
this.http = http;
|
|
9
|
+
}
|
|
10
|
+
//
|
|
11
|
+
// post(url: any, body:any, params: any,nextFunc?: ((value: any) => void) | null, errorFunc?: ((error: any) => void) | null): void {
|
|
12
|
+
// const me = this;
|
|
13
|
+
// const observer = {
|
|
14
|
+
// nextFunc,
|
|
15
|
+
// errorFunc,
|
|
16
|
+
// complete(){
|
|
17
|
+
// }
|
|
18
|
+
// };
|
|
19
|
+
// me.http.post(url, body, {params: params}).subscribe(observer);
|
|
20
|
+
// }
|
|
21
|
+
//
|
|
22
|
+
// get(url: any, params: any,nextFunc?: ((value: any) => void) | null, errorFunc?: ((error: any) => void) | null): void {
|
|
23
|
+
// const me = this;
|
|
24
|
+
// const observer = {
|
|
25
|
+
// nextFunc,
|
|
26
|
+
// errorFunc,
|
|
27
|
+
// complete(){
|
|
28
|
+
// }
|
|
29
|
+
// };
|
|
30
|
+
// me.http.get(url, {params: params}).subscribe(observer);
|
|
31
|
+
// }
|
|
32
|
+
//
|
|
33
|
+
post(url, body, params, callback) {
|
|
34
|
+
this.http.post(url, body, { params: params }).subscribe(res => {
|
|
35
|
+
callback.call(callback, res, true);
|
|
36
|
+
}, err => {
|
|
37
|
+
callback.call(callback, err, false);
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
get(url, params, callback) {
|
|
41
|
+
this.http.get(url, { params: params }).subscribe(res => {
|
|
42
|
+
callback.call(callback, res, true);
|
|
43
|
+
}, err => {
|
|
44
|
+
callback.call(callback, err, false);
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
//条件查询
|
|
48
|
+
listTable(query, callback) { this.post(UrlUtil.listTable, query, {}, callback); }
|
|
49
|
+
//创建和修改
|
|
50
|
+
importSave(data, callback) { this.post(UrlUtil.importSave, data, {}, callback); }
|
|
51
|
+
//获取当前默认的数据库类型
|
|
52
|
+
getDbType(callback) { this.post(UrlUtil.getDbType, {}, {}, callback); }
|
|
53
|
+
// 参数 数据库类型
|
|
54
|
+
listColumnType(dbType, callback) { this.post(UrlUtil.listColumnType, { db_type: dbType }, {}, callback); }
|
|
55
|
+
//
|
|
56
|
+
regFields(filePath, type, dbType, callback) { this.post(UrlUtil.regFields, {}, { filePath: filePath, type: type, db_type: dbType }, callback); }
|
|
57
|
+
findColumnById(id, callback) { this.get(UrlUtil.findColumnById + "?tableId=" + id, {}, callback); }
|
|
58
|
+
updateTable(data, callback) { this.post(UrlUtil.updateTable, data, {}, callback); }
|
|
59
|
+
removeTable(data, callback) { this.post(UrlUtil.removeTable, data, {}, callback); }
|
|
60
|
+
listData(tableId, body, callback) { this.post(UrlUtil.listData + "?tableId=" + tableId, body, {}, callback); }
|
|
61
|
+
}
|
|
62
|
+
HttpService.ɵfac = function HttpService_Factory(t) { return new (t || HttpService)(i0.ɵɵinject(i1.HttpClient)); };
|
|
63
|
+
HttpService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: HttpService, factory: HttpService.ɵfac, providedIn: 'root' });
|
|
64
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(HttpService, [{
|
|
65
|
+
type: Injectable,
|
|
66
|
+
args: [{
|
|
67
|
+
providedIn: 'root'
|
|
68
|
+
}]
|
|
69
|
+
}], function () { return [{ type: i1.HttpClient }]; }, null); })();
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zaW9uLWRhdGEtaW1wb3J0L3NyYy9saWIvc2VydmljZS9odHRwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDaEQsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLGtCQUFrQixDQUFDOzs7QUFPekMsTUFBTSxPQUFPLFdBQVc7SUFFdEIsWUFBb0IsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtJQUFJLENBQUM7SUFDekMsRUFBRTtJQUNGLG9JQUFvSTtJQUNwSSxxQkFBcUI7SUFDckIsdUJBQXVCO0lBQ3ZCLGdCQUFnQjtJQUNoQixpQkFBaUI7SUFDakIsa0JBQWtCO0lBQ2xCLFFBQVE7SUFDUixPQUFPO0lBQ1AsbUVBQW1FO0lBQ25FLElBQUk7SUFDSixFQUFFO0lBQ0YseUhBQXlIO0lBQ3pILHFCQUFxQjtJQUNyQix1QkFBdUI7SUFDdkIsZ0JBQWdCO0lBQ2hCLGlCQUFpQjtJQUNqQixrQkFBa0I7SUFDbEIsUUFBUTtJQUNSLE9BQU87SUFDUCw0REFBNEQ7SUFDNUQsSUFBSTtJQUNKLEVBQUU7SUFDRixJQUFJLENBQUMsR0FBUSxFQUFFLElBQVMsRUFBRSxNQUFXLEVBQUUsUUFBYTtRQUNsRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUMsTUFBTSxFQUFFLE1BQU0sRUFBQyxDQUFDLENBQUMsU0FBUyxDQUNuRCxHQUFHLENBQUMsRUFBRTtZQUNKLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBQyxJQUFJLENBQUMsQ0FBQztRQUNwQyxDQUFDLEVBQ0QsR0FBRyxDQUFDLEVBQUU7WUFDSixRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUMsS0FBSyxDQUFDLENBQUM7UUFDckMsQ0FBQyxDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsR0FBRyxDQUFDLEdBQVEsRUFBRSxNQUFXLEVBQUUsUUFBYTtRQUN0QyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBQyxNQUFNLEVBQUUsTUFBTSxFQUFDLENBQUMsQ0FBQyxTQUFTLENBQzVDLEdBQUcsQ0FBQyxFQUFFO1lBQ0osUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BDLENBQUMsRUFDRCxHQUFHLENBQUMsRUFBRTtZQUNKLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBQyxLQUFLLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNO0lBQ04sU0FBUyxDQUFDLEtBQVMsRUFBRSxRQUFhLElBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQSxDQUFDO0lBQ3RGLE9BQU87SUFDUCxVQUFVLENBQUMsSUFBYSxFQUFFLFFBQWEsSUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFBLENBQUM7SUFDM0YsY0FBYztJQUNkLFNBQVMsQ0FBRSxRQUFhLElBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBQyxFQUFFLEVBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQSxDQUFDO0lBQ3hFLFlBQVk7SUFDWixjQUFjLENBQUMsTUFBYSxFQUFDLFFBQWEsSUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsRUFBQyxPQUFPLEVBQUMsTUFBTSxFQUFDLEVBQUMsRUFBRSxFQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUEsQ0FBQztJQUM3RyxFQUFFO0lBQ0YsU0FBUyxDQUFDLFFBQWUsRUFBQyxJQUFXLEVBQUMsTUFBYSxFQUFDLFFBQWEsSUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFDLEVBQUMsUUFBUSxFQUFDLFFBQVEsRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLE9BQU8sRUFBQyxNQUFNLEVBQUMsRUFBQyxRQUFRLENBQUMsQ0FBQyxDQUFBLENBQUM7SUFFM0osY0FBYyxDQUFDLEVBQVMsRUFBQyxRQUFhLElBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsY0FBYyxHQUFDLFdBQVcsR0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUEsQ0FBQztJQUV0RyxXQUFXLENBQUMsSUFBYSxFQUFFLFFBQWEsSUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFBLENBQUM7SUFDN0YsV0FBVyxDQUFDLElBQWlCLEVBQUUsUUFBYSxJQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUEsQ0FBQztJQUNqRyxRQUFRLENBQUMsT0FBYyxFQUFDLElBQVEsRUFBQyxRQUFhLElBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxHQUFDLFdBQVcsR0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFDLEVBQUUsRUFBQyxRQUFRLENBQUMsQ0FBQyxDQUFBLENBQUM7O3NFQS9EeEcsV0FBVztpRUFBWCxXQUFXLFdBQVgsV0FBVyxtQkFGVixNQUFNO3VGQUVQLFdBQVc7Y0FIdkIsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0h0dHBDbGllbnR9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQge1VybFV0aWx9IGZyb20gXCIuLi91dGlscy91cmx1dGlsXCI7XHJcbmltcG9ydCB7SW1wb3J0c1RhYmxlfSBmcm9tIFwiLi4vZG9tYWluL0ltcG9ydHNUYWJsZVwiO1xyXG5pbXBvcnQge1RhYmxlRHRvfSBmcm9tIFwiLi4vZG9tYWluL1RhYmxlRHRvXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIdHRwU2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkgeyB9XHJcbiAgLy9cclxuICAvLyBwb3N0KHVybDogYW55LCBib2R5OmFueSwgcGFyYW1zOiBhbnksbmV4dEZ1bmM/OiAoKHZhbHVlOiBhbnkpID0+IHZvaWQpIHwgbnVsbCwgZXJyb3JGdW5jPzogKChlcnJvcjogYW55KSA9PiB2b2lkKSB8IG51bGwpOiB2b2lkIHtcclxuICAvLyAgIGNvbnN0IG1lID0gdGhpcztcclxuICAvLyAgIGNvbnN0IG9ic2VydmVyID0ge1xyXG4gIC8vICAgICBuZXh0RnVuYyxcclxuICAvLyAgICAgZXJyb3JGdW5jLFxyXG4gIC8vICAgICBjb21wbGV0ZSgpe1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9O1xyXG4gIC8vICAgbWUuaHR0cC5wb3N0KHVybCwgYm9keSwge3BhcmFtczogcGFyYW1zfSkuc3Vic2NyaWJlKG9ic2VydmVyKTtcclxuICAvLyB9XHJcbiAgLy9cclxuICAvLyBnZXQodXJsOiBhbnksIHBhcmFtczogYW55LG5leHRGdW5jPzogKCh2YWx1ZTogYW55KSA9PiB2b2lkKSB8IG51bGwsIGVycm9yRnVuYz86ICgoZXJyb3I6IGFueSkgPT4gdm9pZCkgfCBudWxsKTogdm9pZCB7XHJcbiAgLy8gICBjb25zdCBtZSA9IHRoaXM7XHJcbiAgLy8gICBjb25zdCBvYnNlcnZlciA9IHtcclxuICAvLyAgICAgbmV4dEZ1bmMsXHJcbiAgLy8gICAgIGVycm9yRnVuYyxcclxuICAvLyAgICAgY29tcGxldGUoKXtcclxuICAvLyAgICAgfVxyXG4gIC8vICAgfTtcclxuICAvLyAgIG1lLmh0dHAuZ2V0KHVybCwge3BhcmFtczogcGFyYW1zfSkuc3Vic2NyaWJlKG9ic2VydmVyKTtcclxuICAvLyB9XHJcbiAgLy9cclxuICBwb3N0KHVybDogYW55LCBib2R5OiBhbnksIHBhcmFtczogYW55LCBjYWxsYmFjazogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLmh0dHAucG9zdCh1cmwsIGJvZHksIHtwYXJhbXM6IHBhcmFtc30pLnN1YnNjcmliZShcclxuICAgICAgcmVzID0+IHtcclxuICAgICAgICBjYWxsYmFjay5jYWxsKGNhbGxiYWNrLCByZXMsdHJ1ZSk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVyciA9PiB7XHJcbiAgICAgICAgY2FsbGJhY2suY2FsbChjYWxsYmFjaywgZXJyLGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldCh1cmw6IGFueSwgcGFyYW1zOiBhbnksIGNhbGxiYWNrOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuaHR0cC5nZXQodXJsLCB7cGFyYW1zOiBwYXJhbXN9KS5zdWJzY3JpYmUoXHJcbiAgICAgIHJlcyA9PiB7XHJcbiAgICAgICAgY2FsbGJhY2suY2FsbChjYWxsYmFjaywgcmVzLHRydWUpO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnIgPT4ge1xyXG4gICAgICAgIGNhbGxiYWNrLmNhbGwoY2FsbGJhY2ssIGVycixmYWxzZSk7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvL+adoeS7tuafpeivolxyXG4gIGxpc3RUYWJsZShxdWVyeTphbnksIGNhbGxiYWNrOiBhbnkpe3RoaXMucG9zdChVcmxVdGlsLmxpc3RUYWJsZSwgcXVlcnkgLHt9LGNhbGxiYWNrKTt9XHJcbiAgLy/liJvlu7rlkozkv67mlLlcclxuICBpbXBvcnRTYXZlKGRhdGE6VGFibGVEdG8sIGNhbGxiYWNrOiBhbnkpe3RoaXMucG9zdChVcmxVdGlsLmltcG9ydFNhdmUsIGRhdGEse30sIGNhbGxiYWNrKTt9XHJcbiAgLy/ojrflj5blvZPliY3pu5jorqTnmoTmlbDmja7lupPnsbvlnotcclxuICBnZXREYlR5cGUoIGNhbGxiYWNrOiBhbnkpe3RoaXMucG9zdChVcmxVdGlsLmdldERiVHlwZSwge30se30sY2FsbGJhY2spO31cclxuICAvLyDlj4LmlbAgIOaVsOaNruW6k+exu+Wei1xyXG4gIGxpc3RDb2x1bW5UeXBlKGRiVHlwZTpzdHJpbmcsY2FsbGJhY2s6IGFueSl7dGhpcy5wb3N0KFVybFV0aWwubGlzdENvbHVtblR5cGUsIHtkYl90eXBlOmRiVHlwZX0se30sY2FsbGJhY2spO31cclxuICAvL1xyXG4gIHJlZ0ZpZWxkcyhmaWxlUGF0aDpzdHJpbmcsdHlwZTpzdHJpbmcsZGJUeXBlOnN0cmluZyxjYWxsYmFjazogYW55KXt0aGlzLnBvc3QoVXJsVXRpbC5yZWdGaWVsZHMsIHt9LHtmaWxlUGF0aDpmaWxlUGF0aCx0eXBlOnR5cGUsZGJfdHlwZTpkYlR5cGV9LGNhbGxiYWNrKTt9XHJcblxyXG4gIGZpbmRDb2x1bW5CeUlkKGlkOnN0cmluZyxjYWxsYmFjazogYW55KXt0aGlzLmdldChVcmxVdGlsLmZpbmRDb2x1bW5CeUlkK1wiP3RhYmxlSWQ9XCIraWQsIHt9LGNhbGxiYWNrKTt9XHJcblxyXG4gIHVwZGF0ZVRhYmxlKGRhdGE6VGFibGVEdG8sIGNhbGxiYWNrOiBhbnkpe3RoaXMucG9zdChVcmxVdGlsLnVwZGF0ZVRhYmxlLCBkYXRhLHt9LCBjYWxsYmFjayk7fVxyXG4gIHJlbW92ZVRhYmxlKGRhdGE6SW1wb3J0c1RhYmxlLCBjYWxsYmFjazogYW55KXt0aGlzLnBvc3QoVXJsVXRpbC5yZW1vdmVUYWJsZSwgZGF0YSx7fSwgY2FsbGJhY2spO31cclxuICBsaXN0RGF0YSh0YWJsZUlkOnN0cmluZyxib2R5OmFueSxjYWxsYmFjazogYW55KXt0aGlzLnBvc3QoVXJsVXRpbC5saXN0RGF0YStcIj90YWJsZUlkPVwiK3RhYmxlSWQsIGJvZHkse30sY2FsbGJhY2spO31cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { registerLocaleData } from '@angular/common';
|
|
3
|
+
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
4
|
+
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
|
|
5
|
+
import { HttpClientModule } from '@angular/common/http';
|
|
6
|
+
import { NzCardModule } from 'ng-zorro-antd/card';
|
|
7
|
+
import { NzAvatarModule } from 'ng-zorro-antd/avatar';
|
|
8
|
+
import { NzListModule } from 'ng-zorro-antd/list';
|
|
9
|
+
import { NzGridModule } from 'ng-zorro-antd/grid';
|
|
10
|
+
import { NzTransferModule } from 'ng-zorro-antd/transfer';
|
|
11
|
+
import { NzButtonModule } from 'ng-zorro-antd/button';
|
|
12
|
+
import { NzModalModule } from 'ng-zorro-antd/modal';
|
|
13
|
+
import { NzTableModule } from 'ng-zorro-antd/table';
|
|
14
|
+
import { NzLayoutModule } from 'ng-zorro-antd/layout';
|
|
15
|
+
import { NzIconModule } from 'ng-zorro-antd/icon';
|
|
16
|
+
import { NzEmptyModule } from 'ng-zorro-antd/empty';
|
|
17
|
+
import { NzTreeSelectModule } from 'ng-zorro-antd/tree-select';
|
|
18
|
+
import { NzSpinModule } from 'ng-zorro-antd/spin';
|
|
19
|
+
import { NzInputNumberModule } from 'ng-zorro-antd/input-number';
|
|
20
|
+
import { NzDividerModule } from 'ng-zorro-antd/divider';
|
|
21
|
+
import { NzStepsModule } from 'ng-zorro-antd/steps';
|
|
22
|
+
import { NzSkeletonModule } from 'ng-zorro-antd/skeleton';
|
|
23
|
+
import { NzSpaceModule } from 'ng-zorro-antd/space';
|
|
24
|
+
import { NzSelectModule } from 'ng-zorro-antd/select';
|
|
25
|
+
import { NzInputModule } from 'ng-zorro-antd/input';
|
|
26
|
+
import { NzFormModule } from 'ng-zorro-antd/form';
|
|
27
|
+
import { NzPaginationModule } from 'ng-zorro-antd/pagination';
|
|
28
|
+
import { NzAffixModule } from 'ng-zorro-antd/affix';
|
|
29
|
+
import { NzMessageServiceModule } from 'ng-zorro-antd/message';
|
|
30
|
+
import { NzRadioModule } from 'ng-zorro-antd/radio';
|
|
31
|
+
import { NzDatePickerModule } from 'ng-zorro-antd/date-picker';
|
|
32
|
+
import { NzTreeViewModule } from 'ng-zorro-antd/tree-view';
|
|
33
|
+
import { NzDrawerModule } from 'ng-zorro-antd/drawer';
|
|
34
|
+
import { NzTreeModule } from 'ng-zorro-antd/tree';
|
|
35
|
+
import { NzSwitchModule } from 'ng-zorro-antd/switch';
|
|
36
|
+
import { NzCheckboxModule } from 'ng-zorro-antd/checkbox';
|
|
37
|
+
import { NzTimePickerModule } from 'ng-zorro-antd/time-picker';
|
|
38
|
+
import { NzUploadModule } from 'ng-zorro-antd/upload';
|
|
39
|
+
import { NzDropDownModule } from 'ng-zorro-antd/dropdown';
|
|
40
|
+
import { NzTabsModule } from 'ng-zorro-antd/tabs';
|
|
41
|
+
import { NzTypographyModule } from 'ng-zorro-antd/typography';
|
|
42
|
+
import { NzPopconfirmModule } from 'ng-zorro-antd/popconfirm';
|
|
43
|
+
import { NzStatisticModule } from 'ng-zorro-antd/statistic';
|
|
44
|
+
import { NzPageHeaderModule } from 'ng-zorro-antd/page-header';
|
|
45
|
+
import { NzSliderModule } from 'ng-zorro-antd/slider';
|
|
46
|
+
import { NzResizableModule } from 'ng-zorro-antd/resizable';
|
|
47
|
+
import { NzProgressModule } from 'ng-zorro-antd/progress';
|
|
48
|
+
import zh from '@angular/common/locales/zh';
|
|
49
|
+
// 引入你需要的图标
|
|
50
|
+
import { HddTwoTone, DollarTwoTone, DashboardTwoTone, ApartmentOutline, FontColorsOutline, SearchOutline, ArrowUpOutline, ArrowDownOutline, CheckCircleTwoTone, UploadOutline, CaretDownOutline, PlusCircleOutline, DatabaseOutline, FileOutline, TableOutline, EyeInvisibleFill, EyeInvisibleOutline, MoreOutline, } from '@ant-design/icons-angular/icons';
|
|
51
|
+
import { NzBreadCrumbModule } from 'ng-zorro-antd/breadcrumb';
|
|
52
|
+
import { NzPopoverModule } from 'ng-zorro-antd/popover';
|
|
53
|
+
import { ImportTableListComponent } from "./views/import-table-list/import-table-list.component";
|
|
54
|
+
import { ImportTableDetailComponent } from "./views/import-table-list/import-table-detail/import-table-detail.component";
|
|
55
|
+
import { ImportTableDataComponent } from "./views/import-table-list/import-table-data/import-table-data.component";
|
|
56
|
+
import * as i0 from "@angular/core";
|
|
57
|
+
import * as i1 from "ng-zorro-antd/icon";
|
|
58
|
+
// import "node_modules/ng-zorro-antd/resizable/style/entry.less"
|
|
59
|
+
registerLocaleData(zh);
|
|
60
|
+
const icons = [
|
|
61
|
+
HddTwoTone,
|
|
62
|
+
DollarTwoTone,
|
|
63
|
+
DashboardTwoTone,
|
|
64
|
+
ApartmentOutline,
|
|
65
|
+
FontColorsOutline,
|
|
66
|
+
SearchOutline,
|
|
67
|
+
ArrowUpOutline,
|
|
68
|
+
ArrowDownOutline,
|
|
69
|
+
CheckCircleTwoTone,
|
|
70
|
+
UploadOutline,
|
|
71
|
+
CaretDownOutline,
|
|
72
|
+
PlusCircleOutline,
|
|
73
|
+
DatabaseOutline,
|
|
74
|
+
FileOutline,
|
|
75
|
+
TableOutline,
|
|
76
|
+
EyeInvisibleFill,
|
|
77
|
+
EyeInvisibleOutline,
|
|
78
|
+
MoreOutline,
|
|
79
|
+
];
|
|
80
|
+
export class SionDataImportModule {
|
|
81
|
+
}
|
|
82
|
+
SionDataImportModule.ɵfac = function SionDataImportModule_Factory(t) { return new (t || SionDataImportModule)(); };
|
|
83
|
+
SionDataImportModule.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: SionDataImportModule });
|
|
84
|
+
SionDataImportModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [FormsModule,
|
|
85
|
+
ReactiveFormsModule,
|
|
86
|
+
BrowserAnimationsModule,
|
|
87
|
+
HttpClientModule,
|
|
88
|
+
NzCardModule,
|
|
89
|
+
NzAvatarModule,
|
|
90
|
+
NzListModule,
|
|
91
|
+
NzGridModule,
|
|
92
|
+
NzButtonModule,
|
|
93
|
+
NzModalModule,
|
|
94
|
+
NzTableModule,
|
|
95
|
+
NzLayoutModule,
|
|
96
|
+
NzIconModule,
|
|
97
|
+
NzEmptyModule,
|
|
98
|
+
NzTreeSelectModule,
|
|
99
|
+
NzSpinModule,
|
|
100
|
+
NzInputNumberModule,
|
|
101
|
+
NzSelectModule,
|
|
102
|
+
NzInputModule,
|
|
103
|
+
NzFormModule,
|
|
104
|
+
NzPaginationModule,
|
|
105
|
+
NzRadioModule,
|
|
106
|
+
NzMessageServiceModule,
|
|
107
|
+
NzAffixModule,
|
|
108
|
+
NzTimePickerModule,
|
|
109
|
+
NzDatePickerModule,
|
|
110
|
+
NzSpaceModule,
|
|
111
|
+
NzTreeViewModule,
|
|
112
|
+
NzTreeViewModule,
|
|
113
|
+
NzDrawerModule,
|
|
114
|
+
NzTreeModule,
|
|
115
|
+
NzSkeletonModule,
|
|
116
|
+
NzSwitchModule,
|
|
117
|
+
NzStepsModule,
|
|
118
|
+
NzDividerModule,
|
|
119
|
+
NzTransferModule,
|
|
120
|
+
NzCheckboxModule,
|
|
121
|
+
NzUploadModule,
|
|
122
|
+
NzDropDownModule,
|
|
123
|
+
NzTabsModule,
|
|
124
|
+
NzTypographyModule,
|
|
125
|
+
NzPopconfirmModule,
|
|
126
|
+
NzStatisticModule,
|
|
127
|
+
NzPageHeaderModule,
|
|
128
|
+
NzSliderModule,
|
|
129
|
+
NzIconModule.forRoot(icons),
|
|
130
|
+
NzBreadCrumbModule,
|
|
131
|
+
NzResizableModule,
|
|
132
|
+
NzPopoverModule,
|
|
133
|
+
NzProgressModule] });
|
|
134
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SionDataImportModule, [{
|
|
135
|
+
type: NgModule,
|
|
136
|
+
args: [{
|
|
137
|
+
declarations: [
|
|
138
|
+
ImportTableDetailComponent,
|
|
139
|
+
ImportTableListComponent,
|
|
140
|
+
ImportTableDataComponent,
|
|
141
|
+
],
|
|
142
|
+
imports: [
|
|
143
|
+
FormsModule,
|
|
144
|
+
ReactiveFormsModule,
|
|
145
|
+
BrowserAnimationsModule,
|
|
146
|
+
HttpClientModule,
|
|
147
|
+
NzCardModule,
|
|
148
|
+
NzAvatarModule,
|
|
149
|
+
NzListModule,
|
|
150
|
+
NzGridModule,
|
|
151
|
+
NzButtonModule,
|
|
152
|
+
NzModalModule,
|
|
153
|
+
NzTableModule,
|
|
154
|
+
NzLayoutModule,
|
|
155
|
+
NzIconModule,
|
|
156
|
+
NzEmptyModule,
|
|
157
|
+
NzTreeSelectModule,
|
|
158
|
+
NzSpinModule,
|
|
159
|
+
NzInputNumberModule,
|
|
160
|
+
NzSelectModule,
|
|
161
|
+
NzInputModule,
|
|
162
|
+
NzFormModule,
|
|
163
|
+
NzPaginationModule,
|
|
164
|
+
NzRadioModule,
|
|
165
|
+
NzMessageServiceModule,
|
|
166
|
+
NzAffixModule,
|
|
167
|
+
NzTimePickerModule,
|
|
168
|
+
NzDatePickerModule,
|
|
169
|
+
NzSpaceModule,
|
|
170
|
+
NzTreeViewModule,
|
|
171
|
+
NzTreeViewModule,
|
|
172
|
+
NzDrawerModule,
|
|
173
|
+
NzTreeModule,
|
|
174
|
+
NzSkeletonModule,
|
|
175
|
+
NzSwitchModule,
|
|
176
|
+
NzStepsModule,
|
|
177
|
+
NzDividerModule,
|
|
178
|
+
NzTransferModule,
|
|
179
|
+
NzCheckboxModule,
|
|
180
|
+
NzUploadModule,
|
|
181
|
+
NzDropDownModule,
|
|
182
|
+
NzTabsModule,
|
|
183
|
+
NzTypographyModule,
|
|
184
|
+
NzPopconfirmModule,
|
|
185
|
+
NzStatisticModule,
|
|
186
|
+
NzPageHeaderModule,
|
|
187
|
+
NzSliderModule,
|
|
188
|
+
NzIconModule.forRoot(icons),
|
|
189
|
+
NzBreadCrumbModule,
|
|
190
|
+
NzResizableModule,
|
|
191
|
+
NzPopoverModule,
|
|
192
|
+
NzProgressModule,
|
|
193
|
+
],
|
|
194
|
+
exports: [
|
|
195
|
+
ImportTableDetailComponent,
|
|
196
|
+
ImportTableListComponent,
|
|
197
|
+
ImportTableDataComponent
|
|
198
|
+
],
|
|
199
|
+
}]
|
|
200
|
+
}], null, null); })();
|
|
201
|
+
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(SionDataImportModule, { declarations: [ImportTableDetailComponent,
|
|
202
|
+
ImportTableListComponent,
|
|
203
|
+
ImportTableDataComponent], imports: [FormsModule,
|
|
204
|
+
ReactiveFormsModule,
|
|
205
|
+
BrowserAnimationsModule,
|
|
206
|
+
HttpClientModule,
|
|
207
|
+
NzCardModule,
|
|
208
|
+
NzAvatarModule,
|
|
209
|
+
NzListModule,
|
|
210
|
+
NzGridModule,
|
|
211
|
+
NzButtonModule,
|
|
212
|
+
NzModalModule,
|
|
213
|
+
NzTableModule,
|
|
214
|
+
NzLayoutModule,
|
|
215
|
+
NzIconModule,
|
|
216
|
+
NzEmptyModule,
|
|
217
|
+
NzTreeSelectModule,
|
|
218
|
+
NzSpinModule,
|
|
219
|
+
NzInputNumberModule,
|
|
220
|
+
NzSelectModule,
|
|
221
|
+
NzInputModule,
|
|
222
|
+
NzFormModule,
|
|
223
|
+
NzPaginationModule,
|
|
224
|
+
NzRadioModule,
|
|
225
|
+
NzMessageServiceModule,
|
|
226
|
+
NzAffixModule,
|
|
227
|
+
NzTimePickerModule,
|
|
228
|
+
NzDatePickerModule,
|
|
229
|
+
NzSpaceModule,
|
|
230
|
+
NzTreeViewModule,
|
|
231
|
+
NzTreeViewModule,
|
|
232
|
+
NzDrawerModule,
|
|
233
|
+
NzTreeModule,
|
|
234
|
+
NzSkeletonModule,
|
|
235
|
+
NzSwitchModule,
|
|
236
|
+
NzStepsModule,
|
|
237
|
+
NzDividerModule,
|
|
238
|
+
NzTransferModule,
|
|
239
|
+
NzCheckboxModule,
|
|
240
|
+
NzUploadModule,
|
|
241
|
+
NzDropDownModule,
|
|
242
|
+
NzTabsModule,
|
|
243
|
+
NzTypographyModule,
|
|
244
|
+
NzPopconfirmModule,
|
|
245
|
+
NzStatisticModule,
|
|
246
|
+
NzPageHeaderModule,
|
|
247
|
+
NzSliderModule, i1.NzIconModule, NzBreadCrumbModule,
|
|
248
|
+
NzResizableModule,
|
|
249
|
+
NzPopoverModule,
|
|
250
|
+
NzProgressModule], exports: [ImportTableDetailComponent,
|
|
251
|
+
ImportTableListComponent,
|
|
252
|
+
ImportTableDataComponent] }); })();
|
|
253
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lvbi1kYXRhLWltcG9ydC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3Npb24tZGF0YS1pbXBvcnQvc3JjL2xpYi9zaW9uLWRhdGEtaW1wb3J0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBZ0Isa0JBQWtCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxrQkFB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QjtpQkFDekI7YUFDRjs7d0ZBQ1ksb0JBQW9CLG1CQTlEN0IsMEJBQTBCO1FBQzFCLHdCQUF3QjtRQUN4Qix3QkFBd0IsYUFHeEIsV0FBVztRQUNYLG1CQUFtQjtRQUNuQix1QkFBdUI7UUFDdkIsZ0JBQWdCO1FBQ2hCLFlBQVk7UUFDWixjQUFjO1FBQ2QsWUFBWTtRQUNaLFlBQVk7UUFDWixjQUFjO1FBQ2QsYUFBYTtRQUNiLGFBQWE7UUFDYixjQUFjO1FBQ2QsWUFBWTtRQUNaLGFBQWE7UUFDYixrQkFBa0I7UUFDbEIsWUFBWTtRQUNaLG1CQUFtQjtRQUNuQixjQUFjO1FBQ2QsYUFBYTtRQUNiLFlBQVk7UUFDWixrQkFBa0I7UUFDbEIsYUFBYTtRQUNiLHNCQUFzQjtRQUN0QixhQUFhO1FBQ2Isa0JBQWtCO1FBQ2xCLGtCQUFrQjtRQUNsQixhQUFhO1FBQ2IsZ0JBQWdCO1FBQ2hCLGdCQUFnQjtRQUNoQixjQUFjO1FBQ2QsWUFBWTtRQUNaLGdCQUFnQjtRQUNoQixjQUFjO1FBQ2QsYUFBYTtRQUNiLGVBQWU7UUFDZixnQkFBZ0I7UUFDaEIsZ0JBQWdCO1FBQ2hCLGNBQWM7UUFDZCxnQkFBZ0I7UUFDaEIsWUFBWTtRQUNaLGtCQUFrQjtRQUNsQixrQkFBa0I7UUFDbEIsaUJBQWlCO1FBQ2pCLGtCQUFrQjtRQUNsQixjQUFjLG1CQUVkLGtCQUFrQjtRQUNsQixpQkFBaUI7UUFDakIsZUFBZTtRQUNmLGdCQUFnQixhQUdoQiwwQkFBMEI7UUFDMUIsd0JBQXdCO1FBQ3hCLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgcmVnaXN0ZXJMb2NhbGVEYXRhIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEJyb3dzZXJBbmltYXRpb25zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlci9hbmltYXRpb25zJztcclxuaW1wb3J0IHsgSHR0cENsaWVudE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgTnpDYXJkTW9kdWxlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9jYXJkJztcclxuaW1wb3J0IHsgTnpBdmF0YXJNb2R1bGUgfSBmcm9tICduZy16b3Jyby1hbnRkL2F2YXRhcic7XHJcbmltcG9ydCB7IE56TGlzdE1vZHVsZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvbGlzdCc7XHJcbmltcG9ydCB7IE56R3JpZE1vZHVsZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvZ3JpZCc7XHJcbmltcG9ydCB7IE56VHJhbnNmZXJNb2R1bGUgfSBmcm9tICduZy16b3Jyby1hbnRkL3RyYW5zZmVyJztcclxuaW1wb3J0IHsgTnpCdXR0b25Nb2R1bGUgfSBmcm9tICduZy16b3Jyby1hbnRkL2J1dHRvbic7XHJcbmltcG9ydCB7IE56TW9kYWxNb2R1bGUgfSBmcm9tICduZy16b3Jyby1hbnRkL21vZGFsJztcclxuaW1wb3J0IHsgTnpUYWJsZU1vZHVsZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvdGFibGUnO1xyXG5pbXBvcnQgeyBOekxheW91dE1vZHVsZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvbGF5b3V0JztcclxuaW1wb3J0IHsgTnpJY29uTW9kdWxlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9pY29uJztcclxuaW1wb3J0IHsgTnpFbXB0eU1vZHVsZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvZW1wdHknO1xyXG5pbXBvcnQgeyBOelRyZWVTZWxlY3RNb2R1bGUgfSBmcm9tICduZy16b3Jyby1hbnRkL3RyZWUtc2VsZWN0JztcclxuaW1wb3J0IHsgTnpTcGluTW9kdWxlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9zcGluJztcclxuaW1wb3J0IHsgTnpJbnB1dE51bWJlck1vZHVsZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvaW5wdXQtbnVtYmVyJztcclxuaW1wb3J0IHsgTnpEaXZpZGVyTW9kdWxlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9kaXZpZGVyJztcclxuaW1wb3J0IHsgTnpTdGVwc01vZHVsZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvc3RlcHMnO1xyXG5pbXBvcnQgeyBOelNrZWxldG9uTW9kdWxlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9za2VsZXRvbic7XHJcbmltcG9ydCB7IE56U3BhY2VNb2R1bGUgfSBmcm9tICduZy16b3Jyby1hbnRkL3NwYWNlJztcclxuaW1wb3J0IHsgTnpTZWxlY3RNb2R1bGUgfSBmcm9tICduZy16b3Jyby1hbnRkL3NlbGVjdCc7XHJcbmltcG9ydCB7IE56SW5wdXRNb2R1bGUgfSBmcm9tICduZy16b3Jyby1hbnRkL2lucHV0JztcclxuaW1wb3J0IHsgTnpGb3JtTW9kdWxlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9mb3JtJztcclxuaW1wb3J0IHsgTnpQYWdpbmF0aW9uTW9kdWxlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9wYWdpbmF0aW9uJztcclxuaW1wb3J0IHsgTnpBZmZpeE1vZHVsZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvYWZmaXgnO1xyXG5pbXBvcnQgeyBOek1lc3NhZ2VTZXJ2aWNlTW9kdWxlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9tZXNzYWdlJztcclxuaW1wb3J0IHsgTnpSYWRpb01vZHVsZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvcmFkaW8nO1xyXG5pbXBvcnQgeyBOekRhdGVQaWNrZXJNb2R1bGUgfSBmcm9tICduZy16b3Jyby1hbnRkL2RhdGUtcGlja2VyJztcclxuaW1wb3J0IHsgTnpUcmVlVmlld01vZHVsZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvdHJlZS12aWV3JztcclxuaW1wb3J0IHsgTnpEcmF3ZXJNb2R1bGUgfSBmcm9tICduZy16b3Jyby1hbnRkL2RyYXdlcic7XHJcbmltcG9ydCB7IE56VHJlZU1vZHVsZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvdHJlZSc7XHJcbmltcG9ydCB7IE56U3dpdGNoTW9kdWxlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9zd2l0Y2gnO1xyXG5pbXBvcnQgeyBOekNoZWNrYm94TW9kdWxlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9jaGVja2JveCc7XHJcbmltcG9ydCB7IE56VGltZVBpY2tlck1vZHVsZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvdGltZS1waWNrZXInO1xyXG5pbXBvcnQgeyBOelVwbG9hZE1vZHVsZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvdXBsb2FkJztcclxuaW1wb3J0IHsgTnpEcm9wRG93bk1vZHVsZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvZHJvcGRvd24nO1xyXG5pbXBvcnQgeyBOelRhYnNNb2R1bGUgfSBmcm9tICduZy16b3Jyby1hbnRkL3RhYnMnO1xyXG5pbXBvcnQgeyBOelR5cG9ncmFwaHlNb2R1bGUgfSBmcm9tICduZy16b3Jyby1hbnRkL3R5cG9ncmFwaHknO1xyXG5pbXBvcnQgeyBOelBvcGNvbmZpcm1Nb2R1bGUgfSBmcm9tICduZy16b3Jyby1hbnRkL3BvcGNvbmZpcm0nO1xyXG5pbXBvcnQgeyBOelN0YXRpc3RpY01vZHVsZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvc3RhdGlzdGljJztcclxuaW1wb3J0IHsgTnpQYWdlSGVhZGVyTW9kdWxlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9wYWdlLWhlYWRlcic7XHJcbmltcG9ydCB7IE56U2xpZGVyTW9kdWxlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9zbGlkZXInO1xyXG5pbXBvcnQgeyBOelJlc2l6YWJsZU1vZHVsZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvcmVzaXphYmxlJztcclxuaW1wb3J0IHsgTnpQcm9ncmVzc01vZHVsZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvcHJvZ3Jlc3MnO1xyXG5cclxuaW1wb3J0IHpoIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL3poJztcclxuLy8gaW1wb3J0IFwibm9kZV9tb2R1bGVzL25nLXpvcnJvLWFudGQvcmVzaXphYmxlL3N0eWxlL2VudHJ5Lmxlc3NcIlxyXG5yZWdpc3RlckxvY2FsZURhdGEoemgpO1xyXG5cclxuLy8g5byV5YWl5L2g6ZyA6KaB55qE5Zu+5qCHXHJcbmltcG9ydCB7XHJcbiAgSGRkVHdvVG9uZSxcclxuICBEb2xsYXJUd29Ub25lLFxyXG4gIERhc2hib2FyZFR3b1RvbmUsXHJcbiAgQXBhcnRtZW50T3V0bGluZSxcclxuICBGb250Q29sb3JzT3V0bGluZSxcclxuICBTZWFyY2hPdXRsaW5lLFxyXG4gIEFycm93VXBPdXRsaW5lLFxyXG4gIEFycm93RG93bk91dGxpbmUsXHJcbiAgQ2hlY2tDaXJjbGVUd29Ub25lLFxyXG4gIFVwbG9hZE91dGxpbmUsXHJcbiAgQ2FyZXREb3duT3V0bGluZSxcclxuICBQbHVzQ2lyY2xlT3V0bGluZSxcclxuICBEYXRhYmFzZU91dGxpbmUsXHJcbiAgRmlsZU91dGxpbmUsXHJcbiAgVGFibGVPdXRsaW5lLFxyXG4gIEV5ZUludmlzaWJsZUZpbGwsXHJcbiAgRXllSW52aXNpYmxlT3V0bGluZSxcclxuICBNb3JlT3V0bGluZSxcclxufSBmcm9tICdAYW50LWRlc2lnbi9pY29ucy1hbmd1bGFyL2ljb25zJztcclxuaW1wb3J0IHsgSWNvbkRlZmluaXRpb24gfSBmcm9tICdAYW50LWRlc2lnbi9pY29ucy1hbmd1bGFyJztcclxuXHJcbmltcG9ydCB7IE56QnJlYWRDcnVtYk1vZHVsZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvYnJlYWRjcnVtYic7XHJcbmltcG9ydCB7IE56UG9wb3Zlck1vZHVsZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvcG9wb3Zlcic7XHJcbmltcG9ydCB7SW1wb3J0VGFibGVMaXN0Q29tcG9uZW50fSBmcm9tIFwiLi92aWV3cy9pbXBvcnQtdGFibGUtbGlzdC9pbXBvcnQtdGFibGUtbGlzdC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtJbXBvcnRUYWJsZURldGFpbENvbXBvbmVudH0gZnJvbSBcIi4vdmlld3MvaW1wb3J0LXRhYmxlLWxpc3QvaW1wb3J0LXRhYmxlLWRldGFpbC9pbXBvcnQtdGFibGUtZGV0YWlsLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge0ltcG9ydFRhYmxlRGF0YUNvbXBvbmVudH0gZnJvbSBcIi4vdmlld3MvaW1wb3J0LXRhYmxlLWxpc3QvaW1wb3J0LXRhYmxlLWRhdGEvaW1wb3J0LXRhYmxlLWRhdGEuY29tcG9uZW50XCI7XHJcblxyXG5jb25zdCBpY29uczogSWNvbkRlZmluaXRpb25bXSA9IFtcclxuICBIZGRUd29Ub25lLFxyXG4gIERvbGxhclR3b1RvbmUsXHJcbiAgRGFzaGJvYXJkVHdvVG9uZSxcclxuICBBcGFydG1lbnRPdXRsaW5lLFxyXG4gIEZvbnRDb2xvcnNPdXRsaW5lLFxyXG4gIFNlYXJjaE91dGxpbmUsXHJcbiAgQXJyb3dVcE91dGxpbmUsXHJcbiAgQXJyb3dEb3duT3V0bGluZSxcclxuICBDaGVja0NpcmNsZVR3b1RvbmUsXHJcbiAgVXBsb2FkT3V0bGluZSxcclxuICBDYXJldERvd25PdXRsaW5lLFxyXG4gIFBsdXNDaXJjbGVPdXRsaW5lLFxyXG4gIERhdGFiYXNlT3V0bGluZSxcclxuICBGaWxlT3V0bGluZSxcclxuICBUYWJsZU91dGxpbmUsXHJcbiAgRXllSW52aXNpYmxlRmlsbCxcclxuICBFeWVJbnZpc2libGVPdXRsaW5lLFxyXG4gIE1vcmVPdXRsaW5lLFxyXG5dO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIEltcG9ydFRhYmxlRGV0YWlsQ29tcG9uZW50LFxyXG4gICAgSW1wb3J0VGFibGVMaXN0Q29tcG9uZW50LFxyXG4gICAgSW1wb3J0VGFibGVEYXRhQ29tcG9uZW50LFxyXG4gIF0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgQnJvd3NlckFuaW1hdGlvbnNNb2R1bGUsXHJcbiAgICBIdHRwQ2xpZW50TW9kdWxlLFxyXG4gICAgTnpDYXJkTW9kdWxlLFxyXG4gICAgTnpBdmF0YXJNb2R1bGUsXHJcbiAgICBOekxpc3RNb2R1bGUsXHJcbiAgICBOekdyaWRNb2R1bGUsXHJcbiAgICBOekJ1dHRvbk1vZHVsZSxcclxuICAgIE56TW9kYWxNb2R1bGUsXHJcbiAgICBOelRhYmxlTW9kdWxlLFxyXG4gICAgTnpMYXlvdXRNb2R1bGUsXHJcbiAgICBOekljb25Nb2R1bGUsXHJcbiAgICBOekVtcHR5TW9kdWxlLFxyXG4gICAgTnpUcmVlU2VsZWN0TW9kdWxlLFxyXG4gICAgTnpTcGluTW9kdWxlLFxyXG4gICAgTnpJbnB1dE51bWJlck1vZHVsZSxcclxuICAgIE56U2VsZWN0TW9kdWxlLFxyXG4gICAgTnpJbnB1dE1vZHVsZSxcclxuICAgIE56Rm9ybU1vZHVsZSxcclxuICAgIE56UGFnaW5hdGlvbk1vZHVsZSxcclxuICAgIE56UmFkaW9Nb2R1bGUsXHJcbiAgICBOek1lc3NhZ2VTZXJ2aWNlTW9kdWxlLFxyXG4gICAgTnpBZmZpeE1vZHVsZSxcclxuICAgIE56VGltZVBpY2tlck1vZHVsZSxcclxuICAgIE56RGF0ZVBpY2tlck1vZHVsZSxcclxuICAgIE56U3BhY2VNb2R1bGUsXHJcbiAgICBOelRyZWVWaWV3TW9kdWxlLFxyXG4gICAgTnpUcmVlVmlld01vZHVsZSxcclxuICAgIE56RHJhd2VyTW9kdWxlLFxyXG4gICAgTnpUcmVlTW9kdWxlLFxyXG4gICAgTnpTa2VsZXRvbk1vZHVsZSxcclxuICAgIE56U3dpdGNoTW9kdWxlLFxyXG4gICAgTnpTdGVwc01vZHVsZSxcclxuICAgIE56RGl2aWRlck1vZHVsZSxcclxuICAgIE56VHJhbnNmZXJNb2R1bGUsXHJcbiAgICBOekNoZWNrYm94TW9kdWxlLFxyXG4gICAgTnpVcGxvYWRNb2R1bGUsXHJcbiAgICBOekRyb3BEb3duTW9kdWxlLFxyXG4gICAgTnpUYWJzTW9kdWxlLFxyXG4gICAgTnpUeXBvZ3JhcGh5TW9kdWxlLFxyXG4gICAgTnpQb3Bjb25maXJtTW9kdWxlLFxyXG4gICAgTnpTdGF0aXN0aWNNb2R1bGUsXHJcbiAgICBOelBhZ2VIZWFkZXJNb2R1bGUsXHJcbiAgICBOelNsaWRlck1vZHVsZSxcclxuICAgIE56SWNvbk1vZHVsZS5mb3JSb290KGljb25zKSxcclxuICAgIE56QnJlYWRDcnVtYk1vZHVsZSxcclxuICAgIE56UmVzaXphYmxlTW9kdWxlLFxyXG4gICAgTnpQb3BvdmVyTW9kdWxlLFxyXG4gICAgTnpQcm9ncmVzc01vZHVsZSxcclxuICBdLFxyXG4gIGV4cG9ydHM6IFtcclxuICAgIEltcG9ydFRhYmxlRGV0YWlsQ29tcG9uZW50LFxyXG4gICAgSW1wb3J0VGFibGVMaXN0Q29tcG9uZW50LFxyXG4gICAgSW1wb3J0VGFibGVEYXRhQ29tcG9uZW50XHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNpb25EYXRhSW1wb3J0TW9kdWxlIHt9XHJcbiJdfQ==
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export class UrlUtil {
|
|
2
|
+
}
|
|
3
|
+
UrlUtil.baseUrl = "../";
|
|
4
|
+
/**
|
|
5
|
+
*
|
|
6
|
+
*/
|
|
7
|
+
UrlUtil.importSave = UrlUtil.baseUrl + "dataImports/addTable";
|
|
8
|
+
UrlUtil.getDbType = UrlUtil.baseUrl + "dataImports/getDbType"; //获取当前数据库类型
|
|
9
|
+
UrlUtil.listColumnType = UrlUtil.baseUrl + "dataImports/listColumnType"; // 参数 数据库类型
|
|
10
|
+
UrlUtil.uploadFile = UrlUtil.baseUrl + "dataImports/uploadFile";
|
|
11
|
+
UrlUtil.downLoadFile = UrlUtil.baseUrl + "dataImports/downLoadFile";
|
|
12
|
+
UrlUtil.regFields = UrlUtil.baseUrl + "dataImports/regFields"; //根据文件,和 文件类型, 数据库类型 getDbType, 识别列头
|
|
13
|
+
UrlUtil.findColumnById = UrlUtil.baseUrl + "dataImports/findColumnById";
|
|
14
|
+
UrlUtil.listData = UrlUtil.baseUrl + "dataImports/listData"; //根据tableID 查询 数据
|
|
15
|
+
UrlUtil.listTable = UrlUtil.baseUrl + "dataImports/listTable";
|
|
16
|
+
UrlUtil.updateTable = UrlUtil.baseUrl + "dataImports/updateTable";
|
|
17
|
+
UrlUtil.removeTable = UrlUtil.baseUrl + "dataImports/removeTable";
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJsdXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2lvbi1kYXRhLWltcG9ydC9zcmMvbGliL3V0aWxzL3VybHV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLE9BQU87O0FBQ1gsZUFBTyxHQUFHLEtBQUssQ0FBQztBQUV2Qjs7R0FFRztBQUNJLGtCQUFVLEdBQUksT0FBTyxDQUFDLE9BQU8sR0FBRyxzQkFBc0IsQ0FBQTtBQUN0RCxpQkFBUyxHQUFHLE9BQU8sQ0FBQyxPQUFPLEdBQUcsdUJBQXVCLENBQUEsQ0FBQSxXQUFXO0FBQ2hFLHNCQUFjLEdBQUcsT0FBTyxDQUFDLE9BQU8sR0FBRyw0QkFBNEIsQ0FBQSxDQUFBLFlBQVk7QUFDM0Usa0JBQVUsR0FBRyxPQUFPLENBQUMsT0FBTyxHQUFHLHdCQUF3QixDQUFBO0FBQ3ZELG9CQUFZLEdBQUcsT0FBTyxDQUFDLE9BQU8sR0FBRywwQkFBMEIsQ0FBQTtBQUMzRCxpQkFBUyxHQUFHLE9BQU8sQ0FBQyxPQUFPLEdBQUcsdUJBQXVCLENBQUEsQ0FBQSxvQ0FBb0M7QUFDekYsc0JBQWMsR0FBRyxPQUFPLENBQUMsT0FBTyxHQUFHLDRCQUE0QixDQUFBO0FBQy9ELGdCQUFRLEdBQUcsT0FBTyxDQUFDLE9BQU8sR0FBRyxzQkFBc0IsQ0FBQSxDQUFBLGlCQUFpQjtBQUNwRSxpQkFBUyxHQUFHLE9BQU8sQ0FBQyxPQUFPLEdBQUcsdUJBQXVCLENBQUE7QUFDckQsbUJBQVcsR0FBRyxPQUFPLENBQUMsT0FBTyxHQUFHLHlCQUF5QixDQUFBO0FBQ3pELG1CQUFXLEdBQUcsT0FBTyxDQUFDLE9BQU8sR0FBRyx5QkFBeUIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBVcmxVdGlsIHtcclxuICBzdGF0aWMgYmFzZVVybCA9IFwiLi4vXCI7XHJcblxyXG4gIC8qKlxyXG4gICAqXHJcbiAgICovXHJcbiAgc3RhdGljIGltcG9ydFNhdmUgID0gVXJsVXRpbC5iYXNlVXJsICsgXCJkYXRhSW1wb3J0cy9hZGRUYWJsZVwiXHJcbiAgc3RhdGljIGdldERiVHlwZSA9IFVybFV0aWwuYmFzZVVybCArIFwiZGF0YUltcG9ydHMvZ2V0RGJUeXBlXCIvL+iOt+WPluW9k+WJjeaVsOaNruW6k+exu+Wei1xyXG4gIHN0YXRpYyBsaXN0Q29sdW1uVHlwZSA9IFVybFV0aWwuYmFzZVVybCArIFwiZGF0YUltcG9ydHMvbGlzdENvbHVtblR5cGVcIi8vIOWPguaVsCAg5pWw5o2u5bqT57G75Z6LXHJcbiAgc3RhdGljIHVwbG9hZEZpbGUgPSBVcmxVdGlsLmJhc2VVcmwgKyBcImRhdGFJbXBvcnRzL3VwbG9hZEZpbGVcIlxyXG4gIHN0YXRpYyBkb3duTG9hZEZpbGUgPSBVcmxVdGlsLmJhc2VVcmwgKyBcImRhdGFJbXBvcnRzL2Rvd25Mb2FkRmlsZVwiXHJcbiAgc3RhdGljIHJlZ0ZpZWxkcyA9IFVybFV0aWwuYmFzZVVybCArIFwiZGF0YUltcG9ydHMvcmVnRmllbGRzXCIvL+agueaNruaWh+S7tu+8jOWSjCDmlofku7bnsbvlnovvvIwg5pWw5o2u5bqT57G75Z6LIGdldERiVHlwZe+8jCDor4bliKvliJflpLRcclxuICBzdGF0aWMgZmluZENvbHVtbkJ5SWQgPSBVcmxVdGlsLmJhc2VVcmwgKyBcImRhdGFJbXBvcnRzL2ZpbmRDb2x1bW5CeUlkXCJcclxuICBzdGF0aWMgbGlzdERhdGEgPSBVcmxVdGlsLmJhc2VVcmwgKyBcImRhdGFJbXBvcnRzL2xpc3REYXRhXCIvL+agueaNrnRhYmxlSUQg5p+l6K+iIOaVsOaNrlxyXG4gIHN0YXRpYyBsaXN0VGFibGUgPSBVcmxVdGlsLmJhc2VVcmwgKyBcImRhdGFJbXBvcnRzL2xpc3RUYWJsZVwiXHJcbiAgc3RhdGljIHVwZGF0ZVRhYmxlID0gVXJsVXRpbC5iYXNlVXJsICsgXCJkYXRhSW1wb3J0cy91cGRhdGVUYWJsZVwiXHJcbiAgc3RhdGljIHJlbW92ZVRhYmxlID0gVXJsVXRpbC5iYXNlVXJsICsgXCJkYXRhSW1wb3J0cy9yZW1vdmVUYWJsZVwiXHJcblxyXG5cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { formatDate } from "@angular/common";
|
|
2
|
+
export class Utils {
|
|
3
|
+
static getId() {
|
|
4
|
+
let left = Math.round(Math.random() * 10000000000);
|
|
5
|
+
const length = left.toString().length;
|
|
6
|
+
for (let i = length; i < 10; i++) {
|
|
7
|
+
left = left * 10;
|
|
8
|
+
}
|
|
9
|
+
let idStr = Date.now().toString(12);
|
|
10
|
+
idStr += left.toString(36).substr(3);
|
|
11
|
+
return idStr;
|
|
12
|
+
}
|
|
13
|
+
// // 生成mongodb id字符串
|
|
14
|
+
// public static getObjectId(){
|
|
15
|
+
// // 生成ObjectId
|
|
16
|
+
// const objectId:any = new ObjectId();
|
|
17
|
+
// let idStr:string = objectId.toString();
|
|
18
|
+
// return idStr;
|
|
19
|
+
// }
|
|
20
|
+
static copy(from, to) {
|
|
21
|
+
return Object.assign(to, from);
|
|
22
|
+
}
|
|
23
|
+
static deepCopyArr(obj) {
|
|
24
|
+
// 只拷贝对象
|
|
25
|
+
if (typeof obj !== 'object')
|
|
26
|
+
return;
|
|
27
|
+
// 根据obj的类型判断是新建一个数组还是一个对象
|
|
28
|
+
const newObj = obj instanceof Array ? [] : {};
|
|
29
|
+
for (const key in obj) {
|
|
30
|
+
// 遍历obj,并且判断是obj的属性才拷贝
|
|
31
|
+
if (obj.hasOwnProperty(key)) {
|
|
32
|
+
// 判断属性值的类型,如果是对象递归调用深拷贝
|
|
33
|
+
// newObj[key] = typeof obj[key] === 'object' ? me.deepCopyArr(obj[key]) : obj[key];
|
|
34
|
+
newObj[key] = ((obj[key] != null) && (typeof obj[key] === 'object')) ? this.deepCopyArr(obj[key]) : obj[key];
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return newObj;
|
|
38
|
+
}
|
|
39
|
+
static StrToDate(str, dateType) {
|
|
40
|
+
let res = undefined;
|
|
41
|
+
if (str && dateType === 'Date') {
|
|
42
|
+
if (str.length === 10) {
|
|
43
|
+
const sdate = str.split('-');
|
|
44
|
+
if (sdate.length === 3) {
|
|
45
|
+
res = new Date(parseInt(sdate[0]), parseInt(sdate[1]) - 1, parseInt(sdate[2]));
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
else if (str && dateType === 'Time') {
|
|
50
|
+
if (str.length === 8) {
|
|
51
|
+
const sdate = str.split(':');
|
|
52
|
+
if (sdate.length === 3) {
|
|
53
|
+
res = new Date();
|
|
54
|
+
res.setHours(parseInt(sdate[0]));
|
|
55
|
+
res.setMinutes(parseInt(sdate[1]));
|
|
56
|
+
res.setSeconds(parseInt(sdate[2]));
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
else if (str && dateType === 'DateTime') {
|
|
61
|
+
if (str.length === 19) {
|
|
62
|
+
const sdate = str.split(' ');
|
|
63
|
+
if (sdate.length === 2) {
|
|
64
|
+
const sdateD = sdate[0].split('-');
|
|
65
|
+
const sdateT = sdate[1].split(':');
|
|
66
|
+
if (sdateD.length === 3 && sdateT.length === 3) {
|
|
67
|
+
res = new Date(parseInt(sdateD[0]), parseInt(sdateD[1]) - 1, parseInt(sdateD[2]), parseInt(sdateT[0]), parseInt(sdateT[1]), parseInt(sdateT[2]));
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return res;
|
|
73
|
+
}
|
|
74
|
+
//local是在组件中注入的字段
|
|
75
|
+
//@Inject(LOCALE_ID) private locale: string
|
|
76
|
+
static DateToStr(date, dateType, locale) {
|
|
77
|
+
let res = undefined;
|
|
78
|
+
if (date && dateType === 'Date') {
|
|
79
|
+
res = formatDate(date, 'yyyy-MM-dd', locale);
|
|
80
|
+
}
|
|
81
|
+
else if (date && dateType === 'Time') {
|
|
82
|
+
res = formatDate(date, 'HH:mm:ss', locale);
|
|
83
|
+
}
|
|
84
|
+
else if (date && dateType === 'DateTime') {
|
|
85
|
+
res = formatDate(date, 'yyyy-MM-dd HH:mm:ss', locale);
|
|
86
|
+
}
|
|
87
|
+
return res;
|
|
88
|
+
}
|
|
89
|
+
// 计算页面的实际高度,iframe自适应会用到
|
|
90
|
+
static calcPageHeight(doc) {
|
|
91
|
+
// let cHeight = Math.max(doc.body.clientHeight, doc.documentElement.clientHeight);
|
|
92
|
+
// let sHeight = Math.max(doc.body.scrollHeight, doc.documentElement.scrollHeight);
|
|
93
|
+
// let height = Math.max(cHeight, sHeight);
|
|
94
|
+
const height = Math.max(doc.body.clientHeight, doc.body.scrollHeight);
|
|
95
|
+
return height;
|
|
96
|
+
}
|
|
97
|
+
//计算gateway的表达式是否为真,rec为包含gateway的对象
|
|
98
|
+
static validateModel(values, rec) {
|
|
99
|
+
if (!rec.gateway) {
|
|
100
|
+
return true;
|
|
101
|
+
}
|
|
102
|
+
const formula = rec.gateway.formula;
|
|
103
|
+
if (!formula || formula === "") {
|
|
104
|
+
return true;
|
|
105
|
+
}
|
|
106
|
+
for (const i in values) {
|
|
107
|
+
eval("var " + i + " = '" + values[i] + "';");
|
|
108
|
+
}
|
|
109
|
+
const valid = eval(formula);
|
|
110
|
+
return valid;
|
|
111
|
+
}
|
|
112
|
+
//计算gateway的表达式是否为真,rec为包含gateway的对象
|
|
113
|
+
static validateModelPassFalse(values, rec) {
|
|
114
|
+
if (!rec.gateway) {
|
|
115
|
+
return true;
|
|
116
|
+
}
|
|
117
|
+
const formula = rec.gateway.formula;
|
|
118
|
+
if (!formula || formula === "") {
|
|
119
|
+
return true;
|
|
120
|
+
}
|
|
121
|
+
const newformula = formula.replace("(false)", "(true)");
|
|
122
|
+
for (const i in values) {
|
|
123
|
+
eval("var " + i + " = '" + values[i] + "';");
|
|
124
|
+
}
|
|
125
|
+
const valid = eval(newformula);
|
|
126
|
+
return valid;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2lvbi1kYXRhLWltcG9ydC9zcmMvbGliL3V0aWxzL3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRzdDLE1BQU0sT0FBTyxLQUFLO0lBQ1QsTUFBTSxDQUFDLEtBQUs7UUFDakIsSUFBSSxJQUFJLEdBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUMsV0FBVyxDQUFDLENBQUM7UUFDbEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sQ0FBQztRQUN0QyxLQUFJLElBQUksQ0FBQyxHQUFHLE1BQU0sRUFBRyxDQUFDLEdBQUMsRUFBRSxFQUFHLENBQUMsRUFBRSxFQUFDO1lBQzlCLElBQUksR0FBRyxJQUFJLEdBQUUsRUFBRSxDQUFDO1NBQ2pCO1FBQ0QsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNwQyxLQUFLLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckMsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQscUJBQXFCO0lBQ3JCLCtCQUErQjtJQUMvQixrQkFBa0I7SUFDbEIseUNBQXlDO0lBQ3pDLDRDQUE0QztJQUM1QyxrQkFBa0I7SUFDbEIsSUFBSTtJQUVHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBVSxFQUFFLEVBQU07UUFDbkMsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRU0sTUFBTSxDQUFDLFdBQVcsQ0FBRSxHQUFRO1FBQ2pDLFFBQVE7UUFDUixJQUFJ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QUU7WUFDdkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztTQUM5QztRQUNELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMvQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZvcm1hdERhdGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCBtb25nb29zZSBmcm9tICdtb25nb29zZSdcclxuXHJcbmV4cG9ydCBjbGFzcyBVdGlscyB7XHJcbiAgcHVibGljIHN0YXRpYyBnZXRJZCgpe1xyXG4gICAgbGV0IGxlZnQgID0gTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpKjEwMDAwMDAwMDAwKTtcclxuICAgIGNvbnN0IGxlbmd0aCA9IGxlZnQudG9TdHJpbmcoKS5sZW5ndGg7XHJcbiAgICBmb3IobGV0IGkgPSBsZW5ndGggOyBpPDEwIDsgaSsrKXtcclxuICAgICAgbGVmdCA9IGxlZnQgKjEwO1xyXG4gICAgfVxyXG4gICAgbGV0IGlkU3RyID0gRGF0ZS5ub3coKS50b1N0cmluZygxMik7XHJcbiAgICBpZFN0ciArPSBsZWZ0LnRvU3RyaW5nKDM2KS5zdWJzdHIoMyk7XHJcbiAgICByZXR1cm4gaWRTdHI7XHJcbiAgfVxyXG5cclxuICAvLyAvLyDnlJ/miJBtb25nb2RiIGlk5a2X56ym5LiyXHJcbiAgLy8gcHVibGljIHN0YXRpYyBnZXRPYmplY3RJZCgpe1xyXG4gIC8vICAgLy8g55Sf5oiQT2JqZWN0SWRcclxuICAvLyAgIGNvbnN0IG9iamVjdElkOmFueSA9IG5ldyBPYmplY3RJZCgpO1xyXG4gIC8vICAgbGV0IGlkU3RyOnN0cmluZyA9IG9iamVjdElkLnRvU3RyaW5nKCk7XHJcbiAgLy8gICByZXR1cm4gaWRTdHI7XHJcbiAgLy8gfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGNvcHkoZnJvbSA6IGFueSAsdG86YW55KXtcclxuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHRvLGZyb20pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBkZWVwQ29weUFyciAob2JqIDphbnkpIHtcclxuICAgIC8vIOWPquaLt+i0neWvueixoVxyXG4gICAgaWYgKHR5cGVvZiBvYmogIT09ICdvYmplY3QnKSByZXR1cm47XHJcbiAgICAvLyDmoLnmja5vYmrnmoTnsbvlnovliKTmlq3mmK/mlrDlu7rkuIDkuKrmlbDnu4Tov5jmmK/kuIDkuKrlr7nosaFcclxuICAgIGNvbnN0IG5ld09iajphbnkgPSBvYmogaW5zdGFuY2VvZiBBcnJheSA/IFtdIDoge307XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBvYmopIHtcclxuICAgICAgLy8g6YGN5Y6Gb2JqLOW5tuS4lOWIpOaWreaYr29iaueahOWxnuaAp+aJjeaLt+i0nVxyXG4gICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICAvLyDliKTmlq3lsZ7mgKflgLznmoTnsbvlnovvvIzlpoLmnpzmmK/lr7nosaHpgJLlvZLosIPnlKjmt7Hmi7fotJ1cclxuICAgICAgICAvLyBuZXdPYmpba2V5XSA9IHR5cGVvZiBvYmpba2V5XSA9PT0gJ29iamVjdCcgPyBtZS5kZWVwQ29weUFycihvYmpba2V5XSkgOiBvYmpba2V5XTtcclxuICAgICAgICBuZXdPYmpba2V5XSA9ICgob2JqW2tleV0hPW51bGwpJiYodHlwZW9mIG9ialtrZXldID09PSAnb2JqZWN0JykpID8gdGhpcy5kZWVwQ29weUFycihvYmpba2V5XSkgOiBvYmpba2V5XTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ld09iajtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgU3RyVG9EYXRlKHN0cjpzdHJpbmcsIGRhdGVUeXBlOnN0cmluZyl7XHJcbiAgICBsZXQgcmVzID0gdW5kZWZpbmVkO1xyXG5cclxuICAgIGlmKHN0ciAmJiBkYXRlVHlwZSA9PT0gJ0RhdGUnKXtcclxuICAgICAgaWYoc3RyLmxlbmd0aCA9PT0gMTApe1xyXG4gICAgICAgIGNvbnN0IHNkYXRlID0gc3RyLnNwbGl0KCctJyk7XHJcbiAgICAgICAgaWYoc2RhdGUubGVuZ3RoID09PSAzKXtcclxuICAgICAgICAgIHJlcyA9IG5ldyBEYXRlKHBhcnNlSW50KHNkYXRlWzBdKSwgcGFyc2VJbnQoc2RhdGVbMV0pLTEsIHBhcnNlSW50KHNkYXRlWzJdKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmKHN0ciAmJiBkYXRlVHlwZSA9PT0gJ1RpbWUnKXtcclxuICAgICAgaWYoc3RyLmxlbmd0aCA9PT0gOCl7XHJcbiAgICAgICAgY29uc3Qgc2RhdGUgPSBzdHIuc3BsaXQoJzonKTtcclxuICAgICAgICBpZihzZGF0ZS5sZW5ndGggPT09IDMpe1xyXG4gICAgICAgICAgcmVzID0gbmV3IERhdGUoKTtcclxuICAgICAgICAgIHJlcy5zZXRIb3VycyhwYXJzZUludChzZGF0ZVswXSkpO1xyXG4gICAgICAgICAgcmVzLnNldE1pbnV0ZXMocGFyc2VJbnQoc2RhdGVbMV0pKTtcclxuICAgICAgICAgIHJlcy5zZXRTZWNvbmRzKHBhcnNlSW50KHNkYXRlWzJdKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmKHN0ciAmJiBkYXRlVHlwZSA9PT0gJ0RhdGVUaW1lJyl7XHJcbiAgICAgIGlmKHN0ci5sZW5ndGggPT09IDE5KXtcclxuICAgICAgICBjb25zdCBzZGF0ZSA9IHN0ci5zcGxpdCgnICcpO1xyXG4gICAgICAgIGlmKHNkYXRlLmxlbmd0aCA9PT0gMil7XHJcbiAgICAgICAgICBjb25zdCBzZGF0ZUQgPSBzZGF0ZVswXS5zcGxpdCgnLScpO1xyXG4gICAgICAgICAgY29uc3Qgc2RhdGVUID0gc2RhdGVbMV0uc3BsaXQoJzonKTtcclxuICAgICAgICAgIGlmKHNkYXRlRC5sZW5ndGggPT09IDMgJiYgc2RhdGVULmxlbmd0aCA9PT0gMyl7XHJcbiAgICAgICAgICAgIHJlcyA9IG5ldyBEYXRlKHBhcnNlSW50KHNkYXRlRFswXSksIHBhcnNlSW50KHNkYXRlRFsxXSktMSwgcGFyc2VJbnQoc2RhdGVEWzJdKSwgcGFyc2VJbnQoc2RhdGVUWzBdKSwgcGFyc2VJbnQoc2RhdGVUWzFdKSwgcGFyc2VJbnQoc2RhdGVUWzJdKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJlcztcclxuICB9XHJcblxyXG4gIC8vbG9jYWzmmK/lnKjnu4Tku7bkuK3ms6jlhaXnmoTlrZfmrrVcclxuICAvL0BJbmplY3QoTE9DQUxFX0lEKSBwcml2YXRlIGxvY2FsZTogc3RyaW5nXHJcbiAgcHVibGljIHN0YXRpYyBEYXRlVG9TdHIoZGF0ZTpEYXRlLCBkYXRlVHlwZTpzdHJpbmcsbG9jYWxlOiBzdHJpbmcpe1xyXG4gICAgbGV0IHJlcyA9IHVuZGVmaW5lZDtcclxuXHJcbiAgICBpZihkYXRlICYmIGRhdGVUeXBlID09PSAnRGF0ZScpe1xyXG4gICAgICByZXMgPSBmb3JtYXREYXRlKGRhdGUsICd5eXl5LU1NLWRkJywgbG9jYWxlKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYoZGF0ZSAmJiBkYXRlVHlwZSA9PT0gJ1RpbWUnKXtcclxuICAgICAgcmVzID0gZm9ybWF0RGF0ZShkYXRlLCAnSEg6bW06c3MnLCBsb2NhbGUpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZihkYXRlICYmIGRhdGVUeXBlID09PSAnRGF0ZVRpbWUnKXtcclxuICAgICAgcmVzID0gZm9ybWF0RGF0ZShkYXRlLCAneXl5eS1NTS1kZCBISDptbTpzcycsIGxvY2FsZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJlcztcclxuICB9XHJcblxyXG4gIC8vIOiuoeeul+mhtemdoueahOWunumZhemrmOW6pu+8jGlmcmFtZeiHqumAguW6lOS8mueUqOWIsFxyXG4gIHB1YmxpYyBzdGF0aWMgY2FsY1BhZ2VIZWlnaHQoZG9jIDogYW55KSB7XHJcbiAgICAvLyBsZXQgY0hlaWdodCA9IE1hdGgubWF4KGRvYy5ib2R5LmNsaWVudEhlaWdodCwgZG9jLmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQpO1xyXG4gICAgLy8gbGV0IHNIZWlnaHQgPSBNYXRoLm1heChkb2MuYm9keS5zY3JvbGxIZWlnaHQsIGRvYy5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsSGVpZ2h0KTtcclxuICAgIC8vIGxldCBoZWlnaHQgID0gTWF0aC5tYXgoY0hlaWdodCwgc0hlaWdodCk7XHJcbiAgICBjb25zdCBoZWlnaHQgID0gTWF0aC5tYXgoZG9jLmJvZHkuY2xpZW50SGVpZ2h0LCBkb2MuYm9keS5zY3JvbGxIZWlnaHQpO1xyXG4gICAgcmV0dXJuIGhlaWdodDtcclxuICB9XHJcblxyXG4gIC8v6K6h566XZ2F0ZXdheeeahOihqOi+vuW8j+aYr+WQpuS4uuecn++8jHJlY+S4uuWMheWQq2dhdGV3YXnnmoTlr7nosaFcclxuICBwdWJsaWMgc3RhdGljIHZhbGlkYXRlTW9kZWwodmFsdWVzOmFueSwgcmVjOmFueSkge1xyXG4gICAgaWYoIXJlYy5nYXRld2F5KXtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBjb25zdCBmb3JtdWxhID0gcmVjLmdhdGV3YXkuZm9ybXVsYTtcclxuICAgIGlmICghZm9ybXVsYSB8fCBmb3JtdWxhID09PSBcIlwiKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgZm9yICggY29uc3QgaSBpbiB2YWx1ZXMpIHtcclxuICAgICAgZXZhbChcInZhciBcIiArIGkgKyBcIiA9ICdcIiArIHZhbHVlc1tpXSArIFwiJztcIik7XHJcbiAgICB9XHJcbiAgICBjb25zdCB2YWxpZCA9IGV2YWwoZm9ybXVsYSk7XHJcbiAgICByZXR1cm4gdmFsaWQ7XHJcbiAgfVxyXG5cclxuICAvL+iuoeeul2dhdGV3YXnnmoTooajovr7lvI/mmK/lkKbkuLrnnJ/vvIxyZWPkuLrljIXlkKtnYXRld2F555qE5a+56LGhXHJcbiAgcHVibGljIHN0YXRpYyB2YWxpZGF0ZU1vZGVsUGFzc0ZhbHNlKHZhbHVlczphbnksIHJlYzphbnkpIHtcclxuICAgIGlmKCFyZWMuZ2F0ZXdheSl7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZm9ybXVsYSA9IHJlYy5nYXRld2F5LmZvcm11bGE7XHJcbiAgICBpZiAoIWZvcm11bGEgfHwgZm9ybXVsYSA9PT0gXCJcIikge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIGNvbnN0IG5ld2Zvcm11bGEgPSBmb3JtdWxhLnJlcGxhY2UoXCIoZmFsc2UpXCIsXCIodHJ1ZSlcIik7XHJcbiAgICBmb3IgKCBjb25zdCBpIGluIHZhbHVlcykge1xyXG4gICAgICBldmFsKFwidmFyIFwiICsgaSArIFwiID0gJ1wiICsgdmFsdWVzW2ldICsgXCInO1wiKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHZhbGlkID0gZXZhbChuZXdmb3JtdWxhKTtcclxuICAgIHJldHVybiB2YWxpZDtcclxuICB9XHJcbn1cclxuIl19
|