ngx-edu-sharing-metaqs2 0.9.28 → 0.9.29
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/esm2022/lib/tree-search-counts/inline-worker.mjs +7 -8
- package/esm2022/lib/tree-search-counts/tree-search-counts.component.mjs +14 -6
- package/fesm2022/ngx-edu-sharing-metaqs2.mjs +18 -12
- package/fesm2022/ngx-edu-sharing-metaqs2.mjs.map +1 -1
- package/lib/tree-search-counts/tree-search-counts.component.d.ts +2 -1
- package/package.json +1 -1
|
@@ -20,7 +20,7 @@ export class InlineWorker {
|
|
|
20
20
|
// Perform the fetch request
|
|
21
21
|
const { basePath, collectionId, searchTerm, oerOnly } = data;
|
|
22
22
|
searchForTypeAndCollection(basePath, searchTerm, oerOnly)
|
|
23
|
-
.then((response) => (response.ok ? response : Promise.reject(response)))
|
|
23
|
+
.then((response) => (response.ok ? response : Promise.reject(response)), (error) => Promise.reject(error))
|
|
24
24
|
.then((response) => response.json())
|
|
25
25
|
.then((data) => {
|
|
26
26
|
resolve({ collectionId, data });
|
|
@@ -46,12 +46,11 @@ export class InlineWorker {
|
|
|
46
46
|
});
|
|
47
47
|
}
|
|
48
48
|
const searchForTypeAndCollection = (basePath, searchTerm, oerOnly = false) => {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
return fetch(url, { credentials: 'include' });
|
|
49
|
+
//strip trailing slash from basePath, if present
|
|
50
|
+
const searchUrl = new URL(basePath.replace(/\/$/, '') + '/collections/v2/material/search');
|
|
51
|
+
searchUrl.searchParams.set('term', searchTerm);
|
|
52
|
+
searchUrl.searchParams.set('oerOnly', oerOnly ? 'true' : 'false');
|
|
53
|
+
return fetch(searchUrl, { credentials: 'include' });
|
|
55
54
|
};
|
|
56
55
|
self.onmessage = (evt) => {
|
|
57
56
|
enqueueRequest(evt)
|
|
@@ -100,4 +99,4 @@ export class InlineWorker {
|
|
|
100
99
|
}
|
|
101
100
|
}
|
|
102
101
|
}
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5saW5lLXdvcmtlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLW1ldGEtd2lkZ2V0cy1saWIvc3JjL2xpYi90cmVlLXNlYXJjaC1jb3VudHMvaW5saW5lLXdvcmtlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBUTNDLE1BQU0sT0FBTyxZQUFZO0lBeUV2QixZQUFZLEVBQUUsUUFBUSxFQUF3QjtRQXZFdEMsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFnQixDQUFDO1FBQ3hDLFlBQU8sR0FBRyxJQUFJLE9BQU8sRUFBYyxDQUFDO1FBRXBDLFNBQUksR0FBRyxHQUFHLEVBQUU7WUFDbEIsOEJBQThCO1lBQzlCLE9BQU8sQ0FBQyxLQUFLLENBQUMsNkNBQTZDLENBQUMsQ0FBQztZQUU3RCxNQUFNLHFCQUFxQixHQUFHLEVBQUUsQ0FBQyxDQUFDLGdEQUFnRDtZQUNsRixJQUFJLGNBQWMsR0FBRyxDQUFDLENBQUM7WUFDdkIsSUFBSSxZQUFZLEdBQXVELEVBQUUsQ0FBQztZQUUxRSxvREFBb0Q7WUFDcEQsU0FBUyxZQUFZO2dCQUNuQixJQUFJLGNBQWMsSUFBSSxxQkFBcUIsSUFBSSxZQUFZLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUN6RSxPQUFPLENBQUMsb0RBQW9EO2dCQUM5RCxDQUFDO2dCQUNELGFBQWE7Z0JBQ2IsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUN2RCxjQUFjLEVBQUUsQ0FBQztnQkFFakIsNEJBQTRCO2dCQUM1QixNQUFNLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDO2dCQUM3RCwwQkFBMEIsQ0FBQyxRQUFRLEVBQUUsVUFBVSxFQUFF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LFNBQVMsRUFBRSxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5leHBvcnQgaW50ZXJmYWNlIFJlcXVlc3REYXRhIHtcbiAgYmFzZVBhdGg6IHN0cmluZztcbiAgY29sbGVjdGlvbklkOiBzdHJpbmc7XG4gIHNlYXJjaFRlcm06IHN0cmluZztcbiAgb2VyT25seTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIElubGluZVdvcmtlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgd29ya2VyOiBXb3JrZXI7XG4gIHByaXZhdGUgb25NZXNzYWdlID0gbmV3IFN1YmplY3Q8TWVzc2FnZUV2ZW50PigpO1xuICBwcml2YXRlIG9uRXJyb3IgPSBuZXcgU3ViamVjdDxFcnJvckV2ZW50PigpO1xuXG4gIHByaXZhdGUgZnVuYyA9ICgpID0+IHtcbiAgICAvLyBTVEFSVCBPRiBXT1JLRVIgVEhSRUFEIENPREVcbiAgICBjb25zb2xlLmRlYnVnKCdTdGFydCB3b3JrZXIgdGhyZWFkLCB3YWl0IGZvciBwb3N0TWVzc2FnZTogJyk7XG5cbiAgICBjb25zdCBtYXhDb25jdXJyZW50UmVxdWVzdHMgPSAxMDsgLy8gTGltaXQgdGhlIG51bWJlciBvZiBjb25jdXJyZW50IGZldGNoIHJlcXVlc3RzXG4gICAgbGV0IGFjdGl2ZVJlcXVlc3RzID0gMDtcbiAgICBsZXQgcmVxdWVzdFF1ZXVlOiB7IGRhdGE6IFJlcXVlc3REYXRhOyByZXNvbHZlOiBhbnk7IHJlamVjdDogYW55IH1bXSA9IFtdO1xuXG4gICAgLy8gRnVuY3Rpb24gdG8gcHJvY2VzcyB0aGUgbmV4dCByZXF1ZXN0IGluIHRoZSBxdWV1ZVxuICAgIGZ1bmN0aW9uIHByb2Nlc3NRdWV1ZSgpIHtcbiAgICAgIGlmIChhY3RpdmVSZXF1ZXN0cyA+PSBtYXhDb25jdXJyZW50UmVxdWVzdHMgfHwgcmVxdWVzdFF1ZXVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm47IC8vIEV4aXQgaWYgbWF4IHJlcXVlc3RzIGFyZSBhY3RpdmUgb3IgcXVldWUgaXMgZW1wdHlcbiAgICAgIH1cbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvbnN0IHsgZGF0YSwgcmVzb2x2ZSwgcmVqZWN0IH0gPSByZXF1ZXN0UXVldWUuc2hpZnQoKTtcbiAgICAgIGFjdGl2ZVJlcXVlc3RzKys7XG5cbiAgICAgIC8vIFBlcmZvcm0gdGhlIGZldGNoIHJlcXVlc3RcbiAgICAgIGNvbnN0IHsgYmFzZVBhdGgsIGNvbGxlY3Rpb25JZCwgc2VhcmNoVGVybSwgb2VyT25seSB9ID0gZGF0YTtcbiAgICAgIHNlYXJjaEZvclR5cGVBbmRDb2xsZWN0aW9uKGJhc2VQYXRoLCBzZWFyY2hUZXJtLCBvZXJPbmx5KVxuICAgICAgICAudGhlbigocmVzcG9uc2UpID0+IChyZXNwb25zZS5vayA/IHJlc3BvbnNlIDogUHJvbWlzZS5yZWplY3QocmVzcG9uc2UpKSlcbiAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiByZXNwb25zZS5qc29uKCkpXG4gICAgICAgIC50aGVuKChkYXRhKSA9PiB7XG4gICAgICAgICAgcmVzb2x2ZSh7IGNvbGxlY3Rpb25JZCwgZGF0YSB9KTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgIHJlamVjdChlcnJvcik7IC8vIEhhbmRsZSB0aGUgZXJyb3JcbiAgICAgICAgfSlcbiAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgIGFjdGl2ZVJlcXVlc3RzLS07IC8vIERlY3JlbWVudCBhY3RpdmUgcmVxdWVzdCBjb3VudFxuICAgICAgICAgIHByb2Nlc3NRdWV1ZSgpOyAvLyBQcm9jZXNzIHRoZSBuZXh0IHJlcXVlc3QgaW4gdGhlIHF1ZXVlXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIEFkZCBhIG5ldyBmZXRjaCByZXF1ZXN0IHRvIHRoZSBxdWV1ZVxuICAgIGZ1bmN0aW9uIGVucXVldWVSZXF1ZXN0KGV2ZW50OiBNZXNzYWdlRXZlbnQpIHtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmVxdWVzdFF1ZXVlLnB1c2goeyBkYXRhOiBldmVudC5kYXRhLCByZXNvbHZlLCByZWplY3QgfSk7XG4gICAgICAgICAgcHJvY2Vzc1F1ZXVlKCk7IC8vIFN0YXJ0IHByb2Nlc3NpbmcgdGhlIHF1ZXVlXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZW5xdWV1aW5nIHJlcXVlc3Q6JywgZXJyb3IpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBzZWFyY2hGb3JUeXBlQW5kQ29sbGVjdGlvbiA9IChiYXNlUGF0aDogc3RyaW5nLCBzZWFyY2hUZXJtOiBzdHJpbmcsIG9lck9ubHk6IGJvb2xlYW4gPSBmYWxzZSkgPT4ge1xuICAgICAgY29uc3QgdXJsUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh7XG4gICAgICAgIHRlcm06IHNlYXJjaFRlcm0sXG4gICAgICAgIG9lck9ubHk6IG9lck9ubHkgPyAndHJ1ZScgOiAnZmFsc2UnLFxuICAgICAgfSk7XG4gICAgICBjb25zdCB1cmwgPSBiYXNlUGF0aCArICcvY29sbGVjdGlvbnMvdjIvbWF0ZXJpYWwvc2VhcmNoPycgKyB1cmxQYXJhbXM7XG4gICAgICByZXR1cm4gZmV0Y2godXJsLCB7IGNyZWRlbnRpYWxzOiAnaW5jbHVkZScgfSk7XG4gICAgfTtcblxuICAgIHNlbGYub25tZXNzYWdlID0gKGV2dDogTWVzc2FnZUV2ZW50KSA9PiB7XG4gICAgICBlbnF1ZXVlUmVxdWVzdChldnQpXG4gICAgICAgIC50aGVuKChkYXRhKSA9PiB7XG4gICAgICAgICAgcG9zdE1lc3NhZ2UoZGF0YSk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICBwb3N0TWVzc2FnZSh7IHN1Y2Nlc3M6IGZhbHNlLCBlcnJvcjogZXJyb3IubWVzc2FnZSB9KTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICAvLyBFTkQgT0YgV09SS0VSIFRIUkVBRCBDT0RFXG4gIH07XG4gIHByaXZhdGUgYmFzZVBhdGg6IGFueTtcblxuICBjb25zdHJ1Y3Rvcih7IGJhc2VQYXRoIH06IHsgYmFzZVBhdGg6IHN0cmluZyB9KSB7XG4gICAgdGhpcy5iYXNlUGF0aCA9IGJhc2VQYXRoO1xuICAgIGNvbnN0IFdPUktFUl9FTkFCTEVEID0gISFXb3JrZXI7XG5cbiAgICBpZiAoV09SS0VSX0VOQUJMRUQpIHtcbiAgICAgIGNvbnN0IGZ1bmN0aW9uQm9keSA9IHRoaXMuZnVuY1xuICAgICAgICAudG9TdHJpbmcoKVxuICAgICAgICAucmVwbGFjZSgvXltee10qe1xccyovLCAnJylcbiAgICAgICAgLnJlcGxhY2UoL1xccyp9W159XSokLywgJycpO1xuXG4gICAgICB0aGlzLndvcmtlciA9IG5ldyBXb3JrZXIoVVJMLmNyZWF0ZU9iamVjdFVSTChuZXcgQmxvYihbZnVuY3Rpb25Cb2R5XSwgeyB0eXBlOiAndGV4dC9qYXZhc2NyaXB0JyB9KSkpO1xuXG4gICAgICB0aGlzLndvcmtlci5vbm1lc3NhZ2UgPSAoZGF0YSkgPT4ge1xuICAgICAgICB0aGlzLm9uTWVzc2FnZS5uZXh0KGRhdGEpO1xuICAgICAgfTtcblxuICAgICAgdGhpcy53b3JrZXIub25lcnJvciA9IChkYXRhKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ3dvcmtlcnMgZXJyb3I6ICcsIGRhdGEpO1xuICAgICAgICB0aGlzLm9uRXJyb3IubmV4dChkYXRhKTtcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignV2ViV29ya2VyIGlzIG5vdCBlbmFibGVkJyk7XG4gICAgfVxuICB9XG5cbiAgcG9zdE1lc3NhZ2UoZGF0YTogUGFydGlhbDxSZXF1ZXN0RGF0YT4pIHtcbiAgICB0aGlzLndvcmtlci5wb3N0TWVzc2FnZSh7IGJhc2VQYXRoOiB0aGlzLmJhc2VQYXRoLCAuLi5kYXRhIH0pO1xuICB9XG5cbiAgb25tZXNzYWdlKCk6IE9ic2VydmFibGU8TWVzc2FnZUV2ZW50PiB7XG4gICAgcmV0dXJuIHRoaXMub25NZXNzYWdlLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgb25lcnJvcigpOiBPYnNlcnZhYmxlPEVycm9yRXZlbnQ+IHtcbiAgICByZXR1cm4gdGhpcy5vbkVycm9yLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG4gIC8vVE9ETzogaW1wbGVtZW50IGdyYWNlZnVsIHNodXRkb3duIGFuZCBhYm9ydCBvdXRzdGFuZGluZyByZXF1ZXN0c1xuICB0ZXJtaW5hdGUoKSB7XG4gICAgaWYgKHRoaXMud29ya2VyKSB7XG4gICAgICB0aGlzLndvcmtlci50ZXJtaW5hdGUoKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5saW5lLXdvcmtlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLW1ldGEtd2lkZ2V0cy1saWIvc3JjL2xpYi90cmVlLXNlYXJjaC1jb3VudHMvaW5saW5lLXdvcmtlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBUTNDLE1BQU0sT0FBTyxZQUFZO0lBMkV2QixZQUFZLEVBQUUsUUFBUSxFQUF3QjtRQXpFdEMsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFnQixDQUFDO1FBQ3hDLFlBQU8sR0FBRyxJQUFJLE9BQU8sRUFBYyxDQUFDO1FBRXBDLFNBQUksR0FBRyxHQUFHLEVBQUU7WUFDbEIsOEJBQThCO1lBQzlCLE9BQU8sQ0FBQyxLQUFLLENBQUMsNkNBQTZDLENBQUMsQ0FBQztZQUU3RCxNQUFNLHFCQUFxQixHQUFHLEVBQUUsQ0FBQyxDQUFDLGdEQUFnRDtZQUNsRixJQUFJLGNBQWMsR0FBRyxDQUFDLENBQUM7WUFDdkIsSUFBSSxZQUFZLEdBQXVELEVBQUUsQ0FBQztZQUUxRSxvREFBb0Q7WUFDcEQsU0FBUyxZQUFZO2dCQUNuQixJQUFJLGNBQWMsSUFBSSxxQkFBcUIsSUFBSSxZQUFZLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUN6RSxPQUFPLENBQUMsb0RBQW9EO2dCQUM5RCxDQUFDO2dCQUNELGFBQWE7Z0JBQ2IsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUN2RCxjQUFjLEVBQUUsQ0FBQztnQkFFakIsNEJBQTRCO2dCQUM1QixNQUFNLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDO2dCQUM3RCwwQkFBMEIsQ0FBQyxRQUFRLEVBQUUsVUFBVSxFQUFF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RUQsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBQ0Qsa0VBQWtFO0lBQ2xFLFNBQVM7UUFDUCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5leHBvcnQgaW50ZXJmYWNlIFJlcXVlc3REYXRhIHtcbiAgYmFzZVBhdGg6IHN0cmluZztcbiAgY29sbGVjdGlvbklkOiBzdHJpbmc7XG4gIHNlYXJjaFRlcm06IHN0cmluZztcbiAgb2VyT25seTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIElubGluZVdvcmtlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgd29ya2VyOiBXb3JrZXI7XG4gIHByaXZhdGUgb25NZXNzYWdlID0gbmV3IFN1YmplY3Q8TWVzc2FnZUV2ZW50PigpO1xuICBwcml2YXRlIG9uRXJyb3IgPSBuZXcgU3ViamVjdDxFcnJvckV2ZW50PigpO1xuXG4gIHByaXZhdGUgZnVuYyA9ICgpID0+IHtcbiAgICAvLyBTVEFSVCBPRiBXT1JLRVIgVEhSRUFEIENPREVcbiAgICBjb25zb2xlLmRlYnVnKCdTdGFydCB3b3JrZXIgdGhyZWFkLCB3YWl0IGZvciBwb3N0TWVzc2FnZTogJyk7XG5cbiAgICBjb25zdCBtYXhDb25jdXJyZW50UmVxdWVzdHMgPSAxMDsgLy8gTGltaXQgdGhlIG51bWJlciBvZiBjb25jdXJyZW50IGZldGNoIHJlcXVlc3RzXG4gICAgbGV0IGFjdGl2ZVJlcXVlc3RzID0gMDtcbiAgICBsZXQgcmVxdWVzdFF1ZXVlOiB7IGRhdGE6IFJlcXVlc3REYXRhOyByZXNvbHZlOiBhbnk7IHJlamVjdDogYW55IH1bXSA9IFtdO1xuXG4gICAgLy8gRnVuY3Rpb24gdG8gcHJvY2VzcyB0aGUgbmV4dCByZXF1ZXN0IGluIHRoZSBxdWV1ZVxuICAgIGZ1bmN0aW9uIHByb2Nlc3NRdWV1ZSgpIHtcbiAgICAgIGlmIChhY3RpdmVSZXF1ZXN0cyA+PSBtYXhDb25jdXJyZW50UmVxdWVzdHMgfHwgcmVxdWVzdFF1ZXVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm47IC8vIEV4aXQgaWYgbWF4IHJlcXVlc3RzIGFyZSBhY3RpdmUgb3IgcXVldWUgaXMgZW1wdHlcbiAgICAgIH1cbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvbnN0IHsgZGF0YSwgcmVzb2x2ZSwgcmVqZWN0IH0gPSByZXF1ZXN0UXVldWUuc2hpZnQoKTtcbiAgICAgIGFjdGl2ZVJlcXVlc3RzKys7XG5cbiAgICAgIC8vIFBlcmZvcm0gdGhlIGZldGNoIHJlcXVlc3RcbiAgICAgIGNvbnN0IHsgYmFzZVBhdGgsIGNvbGxlY3Rpb25JZCwgc2VhcmNoVGVybSwgb2VyT25seSB9ID0gZGF0YTtcbiAgICAgIHNlYXJjaEZvclR5cGVBbmRDb2xsZWN0aW9uKGJhc2VQYXRoLCBzZWFyY2hUZXJtLCBvZXJPbmx5KVxuICAgICAgICAudGhlbihcbiAgICAgICAgICAocmVzcG9uc2UpID0+IChyZXNwb25zZS5vayA/IHJlc3BvbnNlIDogUHJvbWlzZS5yZWplY3QocmVzcG9uc2UpKSxcbiAgICAgICAgICAoZXJyb3IpID0+IFByb21pc2UucmVqZWN0KGVycm9yKVxuICAgICAgICApXG4gICAgICAgIC50aGVuKChyZXNwb25zZSkgPT4gcmVzcG9uc2UuanNvbigpKVxuICAgICAgICAudGhlbigoZGF0YSkgPT4ge1xuICAgICAgICAgIHJlc29sdmUoeyBjb2xsZWN0aW9uSWQsIGRhdGEgfSk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICByZWplY3QoZXJyb3IpOyAvLyBIYW5kbGUgdGhlIGVycm9yXG4gICAgICAgIH0pXG4gICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICBhY3RpdmVSZXF1ZXN0cy0tOyAvLyBEZWNyZW1lbnQgYWN0aXZlIHJlcXVlc3QgY291bnRcbiAgICAgICAgICBwcm9jZXNzUXVldWUoKTsgLy8gUHJvY2VzcyB0aGUgbmV4dCByZXF1ZXN0IGluIHRoZSBxdWV1ZVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBBZGQgYSBuZXcgZmV0Y2ggcmVxdWVzdCB0byB0aGUgcXVldWVcbiAgICBmdW5jdGlvbiBlbnF1ZXVlUmVxdWVzdChldmVudDogTWVzc2FnZUV2ZW50KSB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJlcXVlc3RRdWV1ZS5wdXNoKHsgZGF0YTogZXZlbnQuZGF0YSwgcmVzb2x2ZSwgcmVqZWN0IH0pO1xuICAgICAgICAgIHByb2Nlc3NRdWV1ZSgpOyAvLyBTdGFydCBwcm9jZXNzaW5nIHRoZSBxdWV1ZVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGVucXVldWluZyByZXF1ZXN0OicsIGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2VhcmNoRm9yVHlwZUFuZENvbGxlY3Rpb24gPSAoYmFzZVBhdGg6IHN0cmluZywgc2VhcmNoVGVybTogc3RyaW5nLCBvZXJPbmx5OiBib29sZWFuID0gZmFsc2UpID0+IHtcbiAgICAgIC8vc3RyaXAgdHJhaWxpbmcgc2xhc2ggZnJvbSBiYXNlUGF0aCwgaWYgcHJlc2VudFxuICAgICAgY29uc3Qgc2VhcmNoVXJsID0gbmV3IFVSTChiYXNlUGF0aC5yZXBsYWNlKC9cXC8kLywgJycpICsgJy9jb2xsZWN0aW9ucy92Mi9tYXRlcmlhbC9zZWFyY2gnKTtcbiAgICAgIHNlYXJjaFVybC5zZWFyY2hQYXJhbXMuc2V0KCd0ZXJtJywgc2VhcmNoVGVybSk7XG4gICAgICBzZWFyY2hVcmwuc2VhcmNoUGFyYW1zLnNldCgnb2VyT25seScsIG9lck9ubHkgPyAndHJ1ZScgOiAnZmFsc2UnKTtcbiAgICAgIHJldHVybiBmZXRjaChzZWFyY2hVcmwsIHsgY3JlZGVudGlhbHM6ICdpbmNsdWRlJyB9KTtcbiAgICB9O1xuXG4gICAgc2VsZi5vbm1lc3NhZ2UgPSAoZXZ0OiBNZXNzYWdlRXZlbnQpID0+IHtcbiAgICAgIGVucXVldWVSZXF1ZXN0KGV2dClcbiAgICAgICAgLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgICAgICBwb3N0TWVzc2FnZShkYXRhKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgIHBvc3RNZXNzYWdlKHsgc3VjY2VzczogZmFsc2UsIGVycm9yOiBlcnJvci5tZXNzYWdlIH0pO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIC8vIEVORCBPRiBXT1JLRVIgVEhSRUFEIENPREVcbiAgfTtcbiAgcHJpdmF0ZSBiYXNlUGF0aDogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHsgYmFzZVBhdGggfTogeyBiYXNlUGF0aDogc3RyaW5nIH0pIHtcbiAgICB0aGlzLmJhc2VQYXRoID0gYmFzZVBhdGg7XG4gICAgY29uc3QgV09SS0VSX0VOQUJMRUQgPSAhIVdvcmtlcjtcblxuICAgIGlmIChXT1JLRVJfRU5BQkxFRCkge1xuICAgICAgY29uc3QgZnVuY3Rpb25Cb2R5ID0gdGhpcy5mdW5jXG4gICAgICAgIC50b1N0cmluZygpXG4gICAgICAgIC5yZXBsYWNlKC9eW157XSp7XFxzKi8sICcnKVxuICAgICAgICAucmVwbGFjZSgvXFxzKn1bXn1dKiQvLCAnJyk7XG5cbiAgICAgIHRoaXMud29ya2VyID0gbmV3IFdvcmtlcihVUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9iKFtmdW5jdGlvbkJvZHldLCB7IHR5cGU6ICd0ZXh0L2phdmFzY3JpcHQnIH0pKSk7XG5cbiAgICAgIHRoaXMud29ya2VyLm9ubWVzc2FnZSA9IChkYXRhKSA9PiB7XG4gICAgICAgIHRoaXMub25NZXNzYWdlLm5leHQoZGF0YSk7XG4gICAgICB9O1xuXG4gICAgICB0aGlzLndvcmtlci5vbmVycm9yID0gKGRhdGEpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignd29ya2VycyBlcnJvcjogJywgZGF0YSk7XG4gICAgICAgIHRoaXMub25FcnJvci5uZXh0KGRhdGEpO1xuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdXZWJXb3JrZXIgaXMgbm90IGVuYWJsZWQnKTtcbiAgICB9XG4gIH1cblxuICBwb3N0TWVzc2FnZShkYXRhOiBQYXJ0aWFsPFJlcXVlc3REYXRhPikge1xuICAgIHRoaXMud29ya2VyLnBvc3RNZXNzYWdlKHsgYmFzZVBhdGg6IHRoaXMuYmFzZVBhdGgsIC4uLmRhdGEgfSk7XG4gIH1cblxuICBvbm1lc3NhZ2UoKTogT2JzZXJ2YWJsZTxNZXNzYWdlRXZlbnQ+IHtcbiAgICByZXR1cm4gdGhpcy5vbk1lc3NhZ2UuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBvbmVycm9yKCk6IE9ic2VydmFibGU8RXJyb3JFdmVudD4ge1xuICAgIHJldHVybiB0aGlzLm9uRXJyb3IuYXNPYnNlcnZhYmxlKCk7XG4gIH1cbiAgLy9UT0RPOiBpbXBsZW1lbnQgZ3JhY2VmdWwgc2h1dGRvd24gYW5kIGFib3J0IG91dHN0YW5kaW5nIHJlcXVlc3RzXG4gIHRlcm1pbmF0ZSgpIHtcbiAgICBpZiAodGhpcy53b3JrZXIpIHtcbiAgICAgIHRoaXMud29ya2VyLnRlcm1pbmF0ZSgpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, Input, signal } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Inject, Input, signal, } from '@angular/core';
|
|
2
2
|
import { BehaviorSubject } from 'rxjs';
|
|
3
3
|
import { take } from 'rxjs/operators';
|
|
4
4
|
import { FormControl } from '@angular/forms';
|
|
5
5
|
import { InlineWorker } from './inline-worker';
|
|
6
|
+
import { DOCUMENT } from '@angular/common';
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
7
8
|
import * as i1 from "../meta-api.service";
|
|
8
9
|
import * as i2 from "../config-helper.service";
|
|
@@ -15,10 +16,11 @@ import * as i8 from "@angular/forms";
|
|
|
15
16
|
import * as i9 from "@angular/material/tooltip";
|
|
16
17
|
import * as i10 from "../components/filter/quality-matrix-filter.component";
|
|
17
18
|
export class TreeSearchCountsComponent {
|
|
18
|
-
constructor(metaApi, env, changeDetector) {
|
|
19
|
+
constructor(metaApi, env, changeDetector, document) {
|
|
19
20
|
this.metaApi = metaApi;
|
|
20
21
|
this.env = env;
|
|
21
22
|
this.changeDetector = changeDetector;
|
|
23
|
+
this.document = document;
|
|
22
24
|
/**
|
|
23
25
|
* default max count of columns that should be shown
|
|
24
26
|
*/
|
|
@@ -48,7 +50,10 @@ export class TreeSearchCountsComponent {
|
|
|
48
50
|
if (this.worker) {
|
|
49
51
|
this.worker.terminate();
|
|
50
52
|
}
|
|
51
|
-
|
|
53
|
+
// applications that use us, may provide a relative URL for apiPath.
|
|
54
|
+
// because the Worker runs under a ::blob url, we have to rebase the URL to the search API to the Document, we run in.
|
|
55
|
+
const workerUrl = new URL(this.env.apiPath, this.document.baseURI).toString();
|
|
56
|
+
this.worker = new InlineWorker({ basePath: workerUrl });
|
|
52
57
|
this.worker.onmessage().subscribe((event) => {
|
|
53
58
|
// one message per row
|
|
54
59
|
let total = 0;
|
|
@@ -186,13 +191,16 @@ export class TreeSearchCountsComponent {
|
|
|
186
191
|
get alternatingDataColumns() {
|
|
187
192
|
return this.collectionColumns.flatMap((e, i) => [e, this.searchColumns[i]]);
|
|
188
193
|
}
|
|
189
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TreeSearchCountsComponent, deps: [{ token: i1.MetaApiService }, { token: i2.ConfigHelperService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
194
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TreeSearchCountsComponent, deps: [{ token: i1.MetaApiService }, { token: i2.ConfigHelperService }, { token: i0.ChangeDetectorRef }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
190
195
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TreeSearchCountsComponent, selector: "metaqs2-tree-search-counts", inputs: { pageTitle: "pageTitle" }, ngImport: i0, template: "<mat-card appearance=\"raised\">\n<mat-card-header *ngIf=\"pageTitle\">\n <mat-card-title>\n Material in Sammlungen{{isLoading() ? \": Lade neue Daten.\" : \"\"}}</mat-card-title\n >\n</mat-card-header>\n<mat-card-content>\n<!-- consider to put the filter in the table header to avoid that it is scrolled out of view-->\n <metaqs2-qm-filter\n aria-disabled=\"true\"\n [label]=\"'Sammlung'\"\n [options]=\"collections$ | async\"\n [multiple]=\"false\"\n [inputFormControl]=\"selectedCollection\"\n >\n </metaqs2-qm-filter>\n\n</mat-card-content>\n</mat-card>\n<mat-card>\n <table [ngClass]=\"{'while-loading': isLoading()}\" mat-table [dataSource]=\"materialCounts.rows\" *ngIf=\"columns\" class=\"quality-matrix\">\n <!-- Define columns of table -->\n <!-- Label Column -->\n <ng-container matColumnDef=\"label-col\" sticky>\n <th rowspan=\"2\" mat-header-cell *matHeaderCellDef>Sammlung\n <div >\n <mat-slide-toggle labelPosition=\"before\" class=\"toggle\" [formControl]=\"showOERonly\" >\n zeige nur OER\n </mat-slide-toggle>\n </div>\n <div>\n <mat-slide-toggle labelPosition=\"before\" class=\"toggle\" [formControl]=\"showAllColumns\" >\n zeige alle Typen\n </mat-slide-toggle>\n </div>\n </th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n matTooltip=\"{{row.meta.alt_label}}\"\n class=\"label-col {{'mat-cell-level-' + (row.meta.level+1)}}\"\n >\n <a (click)=\"openCollection(row.meta.id)\">\n <mat-icon [svgIcon]=\"row.meta.level<=1?'layers':'child'\" />\n {{ row.meta.label }}\n </a>\n </td>\n </ng-container>\n <!-- one column for the MaterialType spanning the collection and search columns-->\n <ng-container *ngFor=\"let col of filteredColumns; trackBy:columnIdent\" [matColumnDef]=\"col.id + '_type'\">\n <th [attr.colspan]=\"2\" mat-header-cell *matHeaderCellDef class='mat-cell-level-\"{{col.level}}\"' matTooltip=\"{{col.label}}\" >{{col.label}}</th>\n </ng-container>\n <!-- /source -->\n <!-- collection Data Columns -->\n <ng-container *ngFor=\"let column of filteredColumns; trackBy:columnIdent\" [matColumnDef]=\"column.id + COLLECTION_POSTFIX\">\n <th mat-header-cell *matHeaderCellDef matTooltip=\"{{column.label}}\" >in Sammlung</th>\n <td [class.noMaterial]=\"!row.counts[column.id]?.sufficient || row.counts[column.id]?.sufficient <= 1\"\n [class.fewMaterials]=\"1 < row.counts[column.id]?.sufficient && row.counts[column.id]?.sufficient <= 3\"\n class=\"collection-data-cell\"\n mat-cell *matCellDef=\"let row\">\n <a (click)=\"showCollectionItems(row.meta.id, row.meta.label, column.id)\">\n {{ row.counts[column.id]?.sufficient || '0' }}\n </a>\n </td>\n </ng-container>\n <!-- /collection Data Columns -->\n <!-- search Data Columns -->\n <ng-container *ngFor=\"let column of filteredColumns let index = index; trackBy:columnIdent\" [matColumnDef]=\"column.id + SEARCH_POSTFIX\">\n <th mat-header-cell *matHeaderCellDef>Suche</th>\n <td class=\"search-data-cell\" mat-cell *matCellDef=\"let row\">\n <a (click)=\"searchInEditor(column.id, row.meta.label)\">\n <ng-container *ngIf=\"(( searchCounts | async)?.has(column.id + '_' + row.meta.id) ) else zeroOrLoading\">\n {{ (searchCounts | async)?.get(column.id + '_' + row.meta.id) }}\n </ng-container>\n <ng-template #zeroOrLoading>\n <ng-container *ngIf=\"rowsLoaded.has(row.meta.id) else loadingBlock\"> 0 </ng-container>\n </ng-template>\n <ng-template #loadingBlock>\n loading\u2026\n </ng-template>\n </a>\n </td>\n </ng-container>\n <!-- /search Data Columns -->\n <!-- Generate actual table -->\n <tr mat-header-row *matHeaderRowDef=\"['label-col'].concat( typeColumns ); sticky: true;\"></tr>\n <tr mat-header-row *matHeaderRowDef=\"alternatingDataColumns; sticky: true;\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: ['label-col'].concat(alternatingDataColumns)\"></tr>\n </table>\n</mat-card>", styles: ["tr:nth-child(2n){background-color:#e4e4e4}tr:nth-child(2n)>.mat-column-label-col,tr:nth-child(2n) .search-data-cell{border-right-color:#fff}.search-data-cell,.mat-mdc-header-cell,.mat-column-label-col{border-right:1px solid #e4e4e4}.search-data-cell mat-icon,.mat-mdc-header-cell mat-icon,.mat-column-label-col mat-icon{color:var(--mat-table-row-item-label-text-color);height:16px;padding-right:5px;font-size:16px}.mat-mdc-header-cell,.mat-mdc-cell{padding-left:5px;text-align:center}.mat-mdc-header-cell a,.mat-mdc-cell a{cursor:pointer;text-decoration:underline}.mat-mdc-header-cell a:hover,.mat-mdc-cell a:hover{text-decoration:underline}.label-col a{text-decoration:none;align-items:center;display:flex}.mat-column-totals_collection.noMaterial{background-color:#fad6da}.mat-column-totals_collection.fewMaterials{background-color:#fff1d6}.mat-cell-level-1{padding-left:20px!important;text-align:left}.mat-cell-level-2{padding-left:40px!important;text-align:left}.mat-cell-level-3{padding-left:60px!important;text-align:left}.mat-cell-level-4{padding-left:80px!important;text-align:left}.mat-cell-level-5{padding-left:100px!important;text-align:left}.mat-cell-level-6{padding-left:120px!important;text-align:left}.mat-cell-level-7{padding-left:140px!important;text-align:left}.mat-cell-level-8{padding-left:160px!important;text-align:left}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i4.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i4.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i4.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "component", type: i7.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i7.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i7.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i7.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i7.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i7.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i7.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i7.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i7.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i7.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i10.QualityMatrixFilterComponent, selector: "metaqs2-qm-filter", inputs: ["options", "inputFormControl", "label", "multiple"], outputs: ["changedFilters"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
191
196
|
}
|
|
192
197
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TreeSearchCountsComponent, decorators: [{
|
|
193
198
|
type: Component,
|
|
194
199
|
args: [{ selector: 'metaqs2-tree-search-counts', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-card appearance=\"raised\">\n<mat-card-header *ngIf=\"pageTitle\">\n <mat-card-title>\n Material in Sammlungen{{isLoading() ? \": Lade neue Daten.\" : \"\"}}</mat-card-title\n >\n</mat-card-header>\n<mat-card-content>\n<!-- consider to put the filter in the table header to avoid that it is scrolled out of view-->\n <metaqs2-qm-filter\n aria-disabled=\"true\"\n [label]=\"'Sammlung'\"\n [options]=\"collections$ | async\"\n [multiple]=\"false\"\n [inputFormControl]=\"selectedCollection\"\n >\n </metaqs2-qm-filter>\n\n</mat-card-content>\n</mat-card>\n<mat-card>\n <table [ngClass]=\"{'while-loading': isLoading()}\" mat-table [dataSource]=\"materialCounts.rows\" *ngIf=\"columns\" class=\"quality-matrix\">\n <!-- Define columns of table -->\n <!-- Label Column -->\n <ng-container matColumnDef=\"label-col\" sticky>\n <th rowspan=\"2\" mat-header-cell *matHeaderCellDef>Sammlung\n <div >\n <mat-slide-toggle labelPosition=\"before\" class=\"toggle\" [formControl]=\"showOERonly\" >\n zeige nur OER\n </mat-slide-toggle>\n </div>\n <div>\n <mat-slide-toggle labelPosition=\"before\" class=\"toggle\" [formControl]=\"showAllColumns\" >\n zeige alle Typen\n </mat-slide-toggle>\n </div>\n </th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n matTooltip=\"{{row.meta.alt_label}}\"\n class=\"label-col {{'mat-cell-level-' + (row.meta.level+1)}}\"\n >\n <a (click)=\"openCollection(row.meta.id)\">\n <mat-icon [svgIcon]=\"row.meta.level<=1?'layers':'child'\" />\n {{ row.meta.label }}\n </a>\n </td>\n </ng-container>\n <!-- one column for the MaterialType spanning the collection and search columns-->\n <ng-container *ngFor=\"let col of filteredColumns; trackBy:columnIdent\" [matColumnDef]=\"col.id + '_type'\">\n <th [attr.colspan]=\"2\" mat-header-cell *matHeaderCellDef class='mat-cell-level-\"{{col.level}}\"' matTooltip=\"{{col.label}}\" >{{col.label}}</th>\n </ng-container>\n <!-- /source -->\n <!-- collection Data Columns -->\n <ng-container *ngFor=\"let column of filteredColumns; trackBy:columnIdent\" [matColumnDef]=\"column.id + COLLECTION_POSTFIX\">\n <th mat-header-cell *matHeaderCellDef matTooltip=\"{{column.label}}\" >in Sammlung</th>\n <td [class.noMaterial]=\"!row.counts[column.id]?.sufficient || row.counts[column.id]?.sufficient <= 1\"\n [class.fewMaterials]=\"1 < row.counts[column.id]?.sufficient && row.counts[column.id]?.sufficient <= 3\"\n class=\"collection-data-cell\"\n mat-cell *matCellDef=\"let row\">\n <a (click)=\"showCollectionItems(row.meta.id, row.meta.label, column.id)\">\n {{ row.counts[column.id]?.sufficient || '0' }}\n </a>\n </td>\n </ng-container>\n <!-- /collection Data Columns -->\n <!-- search Data Columns -->\n <ng-container *ngFor=\"let column of filteredColumns let index = index; trackBy:columnIdent\" [matColumnDef]=\"column.id + SEARCH_POSTFIX\">\n <th mat-header-cell *matHeaderCellDef>Suche</th>\n <td class=\"search-data-cell\" mat-cell *matCellDef=\"let row\">\n <a (click)=\"searchInEditor(column.id, row.meta.label)\">\n <ng-container *ngIf=\"(( searchCounts | async)?.has(column.id + '_' + row.meta.id) ) else zeroOrLoading\">\n {{ (searchCounts | async)?.get(column.id + '_' + row.meta.id) }}\n </ng-container>\n <ng-template #zeroOrLoading>\n <ng-container *ngIf=\"rowsLoaded.has(row.meta.id) else loadingBlock\"> 0 </ng-container>\n </ng-template>\n <ng-template #loadingBlock>\n loading\u2026\n </ng-template>\n </a>\n </td>\n </ng-container>\n <!-- /search Data Columns -->\n <!-- Generate actual table -->\n <tr mat-header-row *matHeaderRowDef=\"['label-col'].concat( typeColumns ); sticky: true;\"></tr>\n <tr mat-header-row *matHeaderRowDef=\"alternatingDataColumns; sticky: true;\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: ['label-col'].concat(alternatingDataColumns)\"></tr>\n </table>\n</mat-card>", styles: ["tr:nth-child(2n){background-color:#e4e4e4}tr:nth-child(2n)>.mat-column-label-col,tr:nth-child(2n) .search-data-cell{border-right-color:#fff}.search-data-cell,.mat-mdc-header-cell,.mat-column-label-col{border-right:1px solid #e4e4e4}.search-data-cell mat-icon,.mat-mdc-header-cell mat-icon,.mat-column-label-col mat-icon{color:var(--mat-table-row-item-label-text-color);height:16px;padding-right:5px;font-size:16px}.mat-mdc-header-cell,.mat-mdc-cell{padding-left:5px;text-align:center}.mat-mdc-header-cell a,.mat-mdc-cell a{cursor:pointer;text-decoration:underline}.mat-mdc-header-cell a:hover,.mat-mdc-cell a:hover{text-decoration:underline}.label-col a{text-decoration:none;align-items:center;display:flex}.mat-column-totals_collection.noMaterial{background-color:#fad6da}.mat-column-totals_collection.fewMaterials{background-color:#fff1d6}.mat-cell-level-1{padding-left:20px!important;text-align:left}.mat-cell-level-2{padding-left:40px!important;text-align:left}.mat-cell-level-3{padding-left:60px!important;text-align:left}.mat-cell-level-4{padding-left:80px!important;text-align:left}.mat-cell-level-5{padding-left:100px!important;text-align:left}.mat-cell-level-6{padding-left:120px!important;text-align:left}.mat-cell-level-7{padding-left:140px!important;text-align:left}.mat-cell-level-8{padding-left:160px!important;text-align:left}\n"] }]
|
|
195
|
-
}], ctorParameters: () => [{ type: i1.MetaApiService }, { type: i2.ConfigHelperService }, { type: i0.ChangeDetectorRef }
|
|
200
|
+
}], ctorParameters: () => [{ type: i1.MetaApiService }, { type: i2.ConfigHelperService }, { type: i0.ChangeDetectorRef }, { type: Document, decorators: [{
|
|
201
|
+
type: Inject,
|
|
202
|
+
args: [DOCUMENT]
|
|
203
|
+
}] }], propDecorators: { pageTitle: [{
|
|
196
204
|
type: Input
|
|
197
205
|
}] } });
|
|
198
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1zZWFyY2gtY291bnRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLW1ldGEtd2lkZ2V0cy1saWIvc3JjL2xpYi90cmVlLXNlYXJjaC1jb3VudHMvdHJlZS1zZWFyY2gtY291bnRzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLW1ldGEtd2lkZ2V0cy1saWIvc3JjL2xpYi90cmVlLXNlYXJjaC1jb3VudHMvdHJlZS1zZWFyY2gtY291bnRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsU0FBUyxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hILE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSXRDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7Ozs7OztBQWUvQyxNQUFNLE9BQU8seUJBQXlCO0lBd0JwQyxZQUNtQixPQUF1QixFQUNoQyxHQUF3QixFQUNmLGNBQWlDO1FBRmpDLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ2hDLFFBQUcsR0FBSCxHQUFHLENBQXFCO1FBQ2YsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBMUJwRDs7V0FFRztRQUNNLHlCQUFvQixHQUFHLENBQUMsQ0FBQztRQUN6Qix1QkFBa0IsR0FBRyxhQUFhLENBQUM7UUFDbkMsbUJBQWMsR0FBRyxTQUFTLENBQUM7UUFDM0IsaUJBQVksR0FBbUMsSUFBSSxlQUFlLENBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBQ3RGLGlCQUFZLEdBQUcsSUFBSSxlQUFlLENBQXNCLElBQUks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VztRQUNiLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsSUFBSSxpQkFBaUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxJQUFJLHNCQUFzQjtRQUN4QixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5RSxDQUFDOytHQWpOVSx5QkFBeUI7bUdBQXpCLHlCQUF5QixzR0N0QnRDLHNwSUF5Rlc7OzRGRG5FRSx5QkFBeUI7a0JBTnJDLFNBQVM7K0JBQ0UsNEJBQTRCLG1CQUdyQix1QkFBdUIsQ0FBQyxNQUFNO3FKQXdCckMsU0FBUztzQkFEbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTWV0YUFwaVNlcnZpY2UgfSBmcm9tICcuLi9tZXRhLWFwaS5zZXJ2aWNlJztcbmltcG9ydCB7IENvbmZpZ0hlbHBlclNlcnZpY2UgfSBmcm9tICcuLi9jb25maWctaGVscGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmlsdGVyVmFsdWUsIFF1YWxpdHlNYXRyaXggfSBmcm9tICcuLi9qYXZhLWFwaSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElubGluZVdvcmtlciB9IGZyb20gJy4vaW5saW5lLXdvcmtlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YUNvbHVtbiB7XG4gIGlkOiBzdHJpbmc7XG4gIGljb246IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgbGV2ZWw/OiBudW1iZXI7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21ldGFxczItdHJlZS1zZWFyY2gtY291bnRzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RyZWUtc2VhcmNoLWNvdW50cy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RyZWUtc2VhcmNoLWNvdW50cy5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgVHJlZVNlYXJjaENvdW50c0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIGRlZmF1bHQgbWF4IGNvdW50IG9mIGNvbHVtbnMgdGhhdCBzaG91bGQgYmUgc2hvd25cbiAgICovXG4gIHJlYWRvbmx5IERFRkFVTFRfQ09MVU1OX0xJTUlUID0gNjtcbiAgcmVhZG9ubHkgQ09MTEVDVElPTl9QT1NURklYID0gJ19jb2xsZWN0aW9uJztcbiAgcmVhZG9ubHkgU0VBUkNIX1BPU1RGSVggPSAnX3NlYXJjaCc7XG4gIHJlYWRvbmx5IGNvbGxlY3Rpb25zJDogQmVoYXZpb3JTdWJqZWN0PEZpbHRlclZhbHVlW10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGaWx0ZXJWYWx1ZVtdPihbXSk7XG4gIHJlYWRvbmx5IHNlYXJjaENvdW50cyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWFwPHN0cmluZywgbnVtYmVyPj4obmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKSk7XG4gIHJlYWRvbmx5IHNob3dPRVJvbmx5ID0gbmV3IEZvcm1Db250cm9sKHsgdmFsdWU6IHRydWUsIGRpc2FibGVkOiBmYWxzZSB9LCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pO1xuICByZWFkb25seSBzaG93QWxsQ29sdW1ucyA9IG5ldyBGb3JtQ29udHJvbCh7IHZhbHVlOiBmYWxzZSwgZGlzYWJsZWQ6IGZhbHNlIH0sIHsgbm9uTnVsbGFibGU6IHRydWUgfSk7XG4gIHJlYWRvbmx5IHNlbGVjdGVkQ29sbGVjdGlvbiA9IG5ldyBGb3JtQ29udHJvbDxzdHJpbmc+KCcnLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pO1xuXG4gIC8vIGNvbnZlcnQgdGhpcyBpbiBhbiBPYmVzZXJ2YWJsZVxuICBwcm90ZWN0ZWQgbWF0ZXJpYWxDb3VudHM6IFF1YWxpdHlNYXRyaXg7XG4gIHB1YmxpYyBjb2x1bW5zOiBEYXRhQ29sdW1uW107XG4gIHByb3RlY3RlZCByb3dzTG9hZGVkOiBNYXA8c3RyaW5nLCBib29sZWFuPiA9IG5ldyBNYXA8c3RyaW5nLCBib29sZWFuPigpO1xuXG4gIGlzTG9hZGluZyA9IHNpZ25hbCh0cnVlKTtcbiAgcHJpdmF0ZSB3b3JrZXI6IElubGluZVdvcmtlcjtcblxuICBASW5wdXQoKVxuICBwcm90ZWN0ZWQgcGFnZVRpdGxlOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBtZXRhQXBpOiBNZXRhQXBpU2VydmljZSxcbiAgICBwcml2YXRlIGVudjogQ29uZmlnSGVscGVyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0Q29sbGVjdGlvbnNGaWx0ZXIoKTtcbiAgICB0aGlzLmluaXRPZXJGaWx0ZXIoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLndvcmtlcikge1xuICAgICAgdGhpcy53b3JrZXIudGVybWluYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBsZXRUaGVXb3JrZXJTZWFyY2goKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hDb3VudHMubmV4dChuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpKTtcbiAgICB0aGlzLnJvd3NMb2FkZWQuY2xlYXIoKTtcbiAgICBpZiAodGhpcy53b3JrZXIpIHtcbiAgICAgIHRoaXMud29ya2VyLnRlcm1pbmF0ZSgpO1xuICAgIH1cbiAgICB0aGlzLndvcmtlciA9IG5ldyBJbmxpbmVXb3JrZXIoeyBiYXNlUGF0aDogdGhpcy5lbnYuYXBpUGF0aCB9KTtcbiAgICB0aGlzLndvcmtlci5vbm1lc3NhZ2UoKS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAvLyBvbmUgbWVzc2FnZSBwZXIgcm93XG4gICAgICBsZXQgdG90YWwgPSAwO1xuXG4gICAgICBPYmplY3QuZW50cmllcyhldmVudC5kYXRhLmRhdGEpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAvLyBrZXkgaXMgdGhlIG1hdGVyaWFsIHR5cGUsIHZhbHVlIGlzIHRoZSBjb3VudFxuICAgICAgICBjb25zdCBjb2x1bW5LZXkgPSBrZXkgKyAnXycgKyBldmVudC5kYXRhLmNvbGxlY3Rpb25JZDtcbiAgICAgICAgdG90YWwgKz0gdmFsdWUgYXMgbnVtYmVyO1xuICAgICAgICB0aGlzLnNlYXJjaENvdW50cy52YWx1ZS5zZXQoY29sdW1uS2V5LCB2YWx1ZSBhcyBudW1iZXIpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLnNlYXJjaENvdW50cy52YWx1ZS5zZXQoJ3RvdGFsc18nICsgZXZlbnQuZGF0YS5jb2xsZWN0aW9uSWQsIHRvdGFsKTtcbiAgICAgIHRoaXMuc2VhcmNoQ291bnRzLm5leHQodGhpcy5zZWFyY2hDb3VudHMudmFsdWUpO1xuICAgICAgdGhpcy5yb3dzTG9hZGVkLnNldChldmVudC5kYXRhLmNvbGxlY3Rpb25JZCwgdHJ1ZSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLndvcmtlci5vbmVycm9yKCkuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICBjb25zb2xlLmVycm9yKCdpbiBtYWluIHRocmVhZCcsIGRhdGEpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5tYXRlcmlhbENvdW50cy5yb3dzLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgdGhpcy53b3JrZXIucG9zdE1lc3NhZ2Uoe1xuICAgICAgICBjb2xsZWN0aW9uSWQ6IHJvdy5tZXRhLmlkLFxuICAgICAgICBzZWFyY2hUZXJtOiByb3cubWV0YS5sYWJlbCxcbiAgICAgICAgb2VyT25seTogdGhpcy5zaG93T0VSb25seS52YWx1ZSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0T2VyRmlsdGVyKCk6IHZvaWQge1xuICAgIHRoaXMuc2hvd09FUm9ubHkudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBjb25zdCBjb2xsZWN0aW9uSWQgPSB0aGlzLmV4dHJhY3RDb2xsZWN0aW9uSWRGcm9tVm9jYWJVcmwodGhpcy5zZWxlY3RlZENvbGxlY3Rpb24udmFsdWUpO1xuICAgICAgdGhpcy5sb2FkRGF0YUZvckNvbGxlY3Rpb24oY29sbGVjdGlvbklkKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdENvbGxlY3Rpb25zRmlsdGVyKCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRDb2xsZWN0aW9uLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKGNvbGxlY3Rpb25JZFZhbHVlKSA9PiB7XG4gICAgICBjb25zdCBpZCA9IHRoaXMuZXh0cmFjdENvbGxlY3Rpb25JZEZyb21Wb2NhYlVybChjb2xsZWN0aW9uSWRWYWx1ZSk7XG4gICAgICB0aGlzLmxvYWREYXRhRm9yQ29sbGVjdGlvbihpZCk7XG4gICAgfSk7XG4gICAgdGhpcy5tZXRhQXBpXG4gICAgICAuZ2V0Q29sbGVjdGlvbnNGaWx0ZXIoKVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoKGNvbGxlY3Rpb25zKSA9PiB7XG4gICAgICAgIGNvbnN0IHNvcnRlZENvbGxlY3Rpb25zID0gY29sbGVjdGlvbnMuc29ydCgoYSwgYikgPT4gYS5sYWJlbC5sb2NhbGVDb21wYXJlKGIubGFiZWwpKTtcbiAgICAgICAgdGhpcy5jb2xsZWN0aW9ucyQubmV4dChzb3J0ZWRDb2xsZWN0aW9ucyk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb2xsZWN0aW9uLnNldFZhbHVlKHNvcnRlZENvbGxlY3Rpb25zWzBdLmlkKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkRGF0YUZvckNvbGxlY3Rpb24oY29sbGVjdGlvbklkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmlzTG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy5tYXRlcmlhbENvdW50cyA9IGF3YWl0IHRoaXMubWV0YUFwaVxuICAgICAgLmdldE1hdGVyaWFsQ291bnRNYXRyaXhQZXJDb2xsZWN0aW9uKGNvbGxlY3Rpb25JZCwgdGhpcy5zaG93T0VSb25seS52YWx1ZSlcbiAgICAgIC50b1Byb21pc2UoKTtcbiAgICAvL1RPRE86IHRyeSB0byBhdm9pZCB0byByZWNhbGN1bGF0ZSB0aGUgY29sdW1ucyBvbiBldmVyeSBjaGFuZ2VcbiAgICB0aGlzLmNvbHVtbnMgPSB0aGlzLm1hdGVyaWFsQ291bnRzLmNvbHVtbnMubWFwKChjKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogYy5pZCxcbiAgICAgICAgaWNvbjogJ3RvdGFsJyxcbiAgICAgICAgbGFiZWw6IGMubGFiZWwsXG4gICAgICAgIGxldmVsOiBjLmxldmVsLFxuICAgICAgfTtcbiAgICB9KTtcblxuICAgIHRoaXMubGV0VGhlV29ya2VyU2VhcmNoKCk7XG5cbiAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBleHRyYWN0Q29sbGVjdGlvbklkRnJvbVZvY2FiVXJsKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdXJsLnN1YnN0cmluZyh1cmwubGFzdEluZGV4T2YoJy8nKSArIDEpO1xuICB9XG5cbiAgb3BlbkNvbGxlY3Rpb24oaWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGNvbGxlY3Rpb25JZCA9IHRoaXMuZXh0cmFjdENvbGxlY3Rpb25JZEZyb21Wb2NhYlVybChpZCk7XG4gICAgd2luZG93Lm9wZW4oXG4gICAgICB0aGlzLmVudi5lZHVTaGFyaW5nUGF0aCArXG4gICAgICAgICcvY29tcG9uZW50cy9lZGl0b3JpYWwtZGVzay8/bW9kZT1yZW5kZXImdmlld1R5cGU9c2luZ2xlJmlkcz0nICtcbiAgICAgICAgZW5jb2RlVVJJQ29tcG9uZW50KGNvbGxlY3Rpb25JZClcbiAgICApO1xuICB9XG5cbiAgc2VhcmNoSW5FZGl0b3IobWF0ZXJpYWxUeXBlOiBzdHJpbmcsIHNlYXJjaFRlcm06IHN0cmluZykge1xuICAgIGNvbnN0IGZpbHRlcnM6IGFueSA9IHt9O1xuICAgIGlmIChtYXRlcmlhbFR5cGUgIT09ICd0b3RhbHMnKSB7XG4gICAgICBmaWx0ZXJzWydjY206b2VoX2xydF9hZ2dyZWdhdGVkJ10gPSBbbWF0ZXJpYWxUeXBlXTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2hvd09FUm9ubHkudmFsdWUpIHtcbiAgICAgIGZpbHRlcnNbJ3ZpcnR1YWw6ZWRpdG9yaWFsX2xpY2Vuc2UnXSA9IFsnb2VyJ107XG4gICAgfVxuICAgIGNvbnN0IHVybCA9XG4gICAgICB0aGlzLmVudi5lZHVTaGFyaW5nUGF0aCArXG4gICAgICAnL2NvbXBvbmVudHMvZWRpdG9yaWFsLWRlc2s/bW9kZT1hdWRpdF9tZXRhcXMmJyArXG4gICAgICAncT0nICtcbiAgICAgIGVuY29kZVVSSUNvbXBvbmVudChzZWFyY2hUZXJtKSArXG4gICAgICAnJicgK1xuICAgICAgJ3RpdGxlPScgK1xuICAgICAgZW5jb2RlVVJJQ29tcG9uZW50KCdNZXRhUVMgLSBTdWNoZXJnZWJuaXNzZSBmw7xyIFwiJyArIHNlYXJjaFRlcm0gKyAnXCInKSArXG4gICAgICAnJicgK1xuICAgICAgJ2ZpbHRlcnM9JyArXG4gICAgICBlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoZmlsdGVycykpICtcbiAgICAgICcmJyArXG4gICAgICAncGFuZWw9Y29udGVudHMmdGFiPTQmJztcblxuICAgIGNvbnN0IHJlZiA9IHdpbmRvdy5vcGVuKHVybCk7XG4gIH1cblxuICBzaG93Q29sbGVjdGlvbkl0ZW1zKGNvbGxlY3Rpb25JZDogc3RyaW5nLCBjb2xsZWN0aW9uTmFtZTogc3RyaW5nLCBtYXRlcmlhbFR5cGU6IHN0cmluZykge1xuICAgIGNvbnN0IGlkID0gdGhpcy5leHRyYWN0Q29sbGVjdGlvbklkRnJvbVZvY2FiVXJsKGNvbGxlY3Rpb25JZCk7XG4gICAgY29uc3QgZmlsdGVyczogYW55ID0ge1xuICAgICAgLy9cInZpcnR1YWw6Y29sbGVjdGlvbl9pZF9wcmltYXJ5XCI6IFtpZF0sIC8vd29ya3Mgb2Z0ZW4sIGJ1dCBub3QgYWx3YXlzXG4gICAgICAndmlydHVhbDptZXRhcXNfY29sbGVjdGlvbl9pZCc6IFtpZF0sXG4gICAgfTtcbiAgICBpZiAobWF0ZXJpYWxUeXBlICE9PSAndG90YWxzJykge1xuICAgICAgZmlsdGVyc1snY2NtOm9laF9scnRfYWdncmVnYXRlZCddID0gW21hdGVyaWFsVHlwZV07XG4gICAgfVxuICAgIGlmICh0aGlzLnNob3dPRVJvbmx5LnZhbHVlKSB7XG4gICAgICBmaWx0ZXJzWyd2aXJ0dWFsOmVkaXRvcmlhbF9saWNlbnNlJ10gPSBbJ29lciddO1xuICAgIH1cbiAgICB3aW5kb3cub3BlbihcbiAgICAgIHRoaXMuZW52LmVkdVNoYXJpbmdQYXRoICtcbiAgICAgICAgJy9jb21wb25lbnRzL2VkaXRvcmlhbC1kZXNrP21vZGU9YXVkaXRfbWV0YXFzJicgK1xuICAgICAgICAndGl0bGU9JyArXG4gICAgICAgIGVuY29kZVVSSUNvbXBvbmVudCgnTWV0YVFTIC0gU2FtbWx1bmdzaW5oYWx0ZSBmw7xyIFwiJyArIGNvbGxlY3Rpb25OYW1lICsgJ1wiJykgK1xuICAgICAgICAnJicgK1xuICAgICAgICAnZmlsdGVycz0nICtcbiAgICAgICAgZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KGZpbHRlcnMpKSArXG4gICAgICAgICcmJyArXG4gICAgICAgICdwYW5lbD1jb250ZW50cyZ0YWI9NCYnXG4gICAgKTtcbiAgfVxuXG4gIGNvbHVtbklkZW50KF9pbmRleDogbnVtYmVyLCBjb2w6IHsgaWQ6IHN0cmluZyB9KSB7XG4gICAgcmV0dXJuIGNvbC5pZDtcbiAgfVxuXG4gIGdldCBmaWx0ZXJlZENvbHVtbnMoKSB7XG4gICAgLy8gcmV0dXJuIGVpdGhlciBhbGwgb3IganVzdCBhIGdpdmVuIGFtb3VudCBvZiBjb2x1bW5zXG4gICAgcmV0dXJuIHRoaXMuc2hvd0FsbENvbHVtbnMudmFsdWUgPyB0aGlzLmNvbHVtbnMgOiB0aGlzLmNvbHVtbnMuc2xpY2UoMCwgdGhpcy5ERUZBVUxUX0NPTFVNTl9MSU1JVCk7XG4gIH1cblxuICBnZXQgY29sdW1uTmFtZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyZWRDb2x1bW5zLm1hcCgoYykgPT4gYy5pZCk7XG4gIH1cblxuICBnZXQgdHlwZUNvbHVtbnMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbk5hbWVzLm1hcCgoYykgPT4gYyArICdfdHlwZScpO1xuICB9XG5cbiAgZ2V0IGNvbGxlY3Rpb25Db2x1bW5zKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5OYW1lcy5tYXAoKGMpID0+IGMgKyB0aGlzLkNPTExFQ1RJT05fUE9TVEZJWCk7XG4gIH1cblxuICBnZXQgc2VhcmNoQ29sdW1ucygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1uTmFtZXMubWFwKChjKSA9PiBjICsgdGhpcy5TRUFSQ0hfUE9TVEZJWCk7XG4gIH1cblxuICBnZXQgYWx0ZXJuYXRpbmdEYXRhQ29sdW1ucygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuY29sbGVjdGlvbkNvbHVtbnMuZmxhdE1hcCgoZSwgaSkgPT4gW2UsIHRoaXMuc2VhcmNoQ29sdW1uc1tpXV0pO1xuICB9XG59XG4iLCI8bWF0LWNhcmQgYXBwZWFyYW5jZT1cInJhaXNlZFwiPlxuPG1hdC1jYXJkLWhlYWRlciAqbmdJZj1cInBhZ2VUaXRsZVwiPlxuICA8bWF0LWNhcmQtdGl0bGU+XG4gICAgTWF0ZXJpYWwgaW4gU2FtbWx1bmdlbnt7aXNMb2FkaW5nKCkgPyBcIjogTGFkZSBuZXVlIERhdGVuLlwiIDogXCJcIn19PC9tYXQtY2FyZC10aXRsZVxuICA+XG48L21hdC1jYXJkLWhlYWRlcj5cbjxtYXQtY2FyZC1jb250ZW50PlxuPCEtLSBjb25zaWRlciB0byBwdXQgdGhlIGZpbHRlciBpbiB0aGUgdGFibGUgaGVhZGVyIHRvIGF2b2lkIHRoYXQgaXQgaXMgc2Nyb2xsZWQgb3V0IG9mIHZpZXctLT5cbiAgICA8bWV0YXFzMi1xbS1maWx0ZXJcbiAgICAgIGFyaWEtZGlzYWJsZWQ9XCJ0cnVlXCJcbiAgICAgIFtsYWJlbF09XCInU2FtbWx1bmcnXCJcbiAgICAgIFtvcHRpb25zXT1cImNvbGxlY3Rpb25zJCB8IGFzeW5jXCJcbiAgICAgIFttdWx0aXBsZV09XCJmYWxzZVwiXG4gICAgICBbaW5wdXRGb3JtQ29udHJvbF09XCJzZWxlY3RlZENvbGxlY3Rpb25cIlxuICAgID5cbiAgICA8L21ldGFxczItcW0tZmlsdGVyPlxuXG48L21hdC1jYXJkLWNvbnRlbnQ+XG48L21hdC1jYXJkPlxuPG1hdC1jYXJkPlxuICA8dGFibGUgW25nQ2xhc3NdPVwieyd3aGlsZS1sb2FkaW5nJzogaXNMb2FkaW5nKCl9XCIgbWF0LXRhYmxlIFtkYXRhU291cmNlXT1cIm1hdGVyaWFsQ291bnRzLnJvd3NcIiAqbmdJZj1cImNvbHVtbnNcIiBjbGFzcz1cInF1YWxpdHktbWF0cml4XCI+XG4gICAgPCEtLSBEZWZpbmUgY29sdW1ucyBvZiB0YWJsZSAtLT5cbiAgICA8IS0tIExhYmVsIENvbHVtbiAtLT5cbiAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImxhYmVsLWNvbFwiIHN0aWNreT5cbiAgICAgIDx0aCByb3dzcGFuPVwiMlwiIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5TYW1tbHVuZ1xuICAgICAgPGRpdiA+XG4gICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIGxhYmVsUG9zaXRpb249XCJiZWZvcmVcIiBjbGFzcz1cInRvZ2dsZVwiIFtmb3JtQ29udHJvbF09XCJzaG93T0VSb25seVwiID5cbiAgICAgICAgICB6ZWlnZSBudXIgT0VSXG4gICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cbiAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2PlxuICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBsYWJlbFBvc2l0aW9uPVwiYmVmb3JlXCIgY2xhc3M9XCJ0b2dnbGVcIiBbZm9ybUNvbnRyb2xdPVwic2hvd0FsbENvbHVtbnNcIiA+XG4gICAgICAgICAgemVpZ2UgYWxsZSBUeXBlblxuICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC90aD5cbiAgICAgIDx0ZFxuICAgICAgICBtYXQtY2VsbFxuICAgICAgICAqbWF0Q2VsbERlZj1cImxldCByb3dcIlxuICAgICAgICBtYXRUb29sdGlwPVwie3tyb3cubWV0YS5hbHRfbGFiZWx9fVwiXG4gICAgICAgIGNsYXNzPVwibGFiZWwtY29sIHt7J21hdC1jZWxsLWxldmVsLScgKyAocm93Lm1ldGEubGV2ZWwrMSl9fVwiXG4gICAgICA+XG4gICAgICAgIDxhIChjbGljayk9XCJvcGVuQ29sbGVjdGlvbihyb3cubWV0YS5pZClcIj5cbiAgICAgICAgICA8bWF0LWljb24gW3N2Z0ljb25dPVwicm93Lm1ldGEubGV2ZWw8PTE/J2xheWVycyc6J2NoaWxkJ1wiIC8+XG4gICAgICAgICAge3sgcm93Lm1ldGEubGFiZWwgfX1cbiAgICAgICAgPC9hPlxuICAgICAgPC90ZD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8IS0tIG9uZSBjb2x1bW4gZm9yIHRoZSBNYXRlcmlhbFR5cGUgc3Bhbm5pbmcgdGhlIGNvbGxlY3Rpb24gYW5kIHNlYXJjaCBjb2x1bW5zLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sIG9mIGZpbHRlcmVkQ29sdW1uczsgdHJhY2tCeTpjb2x1bW5JZGVudFwiIFttYXRDb2x1bW5EZWZdPVwiY29sLmlkICsgJ190eXBlJ1wiPlxuICAgICAgPHRoIFthdHRyLmNvbHNwYW5dPVwiMlwiIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBjbGFzcz0nbWF0LWNlbGwtbGV2ZWwtXCJ7e2NvbC5sZXZlbH19XCInIG1hdFRvb2x0aXA9XCJ7e2NvbC5sYWJlbH19XCIgPnt7Y29sLmxhYmVsfX08L3RoPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwhLS0gL3NvdXJjZSAtLT5cbiAgICA8IS0tIGNvbGxlY3Rpb24gRGF0YSBDb2x1bW5zIC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBmaWx0ZXJlZENvbHVtbnM7IHRyYWNrQnk6Y29sdW1uSWRlbnRcIiBbbWF0Q29sdW1uRGVmXT1cImNvbHVtbi5pZCArIENPTExFQ1RJT05fUE9TVEZJWFwiPlxuICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXRUb29sdGlwPVwie3tjb2x1bW4ubGFiZWx9fVwiID5pbiBTYW1tbHVuZzwvdGg+XG4gICAgICA8dGQgW2NsYXNzLm5vTWF0ZXJpYWxdPVwiIXJvdy5jb3VudHNbY29sdW1uLmlkXT8uc3VmZmljaWVudCB8fCByb3cuY291bnRzW2NvbHVtbi5pZF0/LnN1ZmZpY2llbnQgPD0gMVwiXG4gICAgICAgICAgW2NsYXNzLmZld01hdGVyaWFsc109XCIxIDwgcm93LmNvdW50c1tjb2x1bW4uaWRdPy5zdWZmaWNpZW50ICYmIHJvdy5jb3VudHNbY29sdW1uLmlkXT8uc3VmZmljaWVudCA8PSAzXCJcbiAgICAgICAgICBjbGFzcz1cImNvbGxlY3Rpb24tZGF0YS1jZWxsXCJcbiAgICAgICAgICBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIj5cbiAgICAgICAgICAgIDxhIChjbGljayk9XCJzaG93Q29sbGVjdGlvbkl0ZW1zKHJvdy5tZXRhLmlkLCByb3cubWV0YS5sYWJlbCwgY29sdW1uLmlkKVwiPlxuICAgICAgICAgICAgICB7eyByb3cuY291bnRzW2NvbHVtbi5pZF0/LnN1ZmZpY2llbnQgfHwgJzAnIH19XG4gICAgICAgICAgICA8L2E+XG4gICAgICA8L3RkPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwhLS0gL2NvbGxlY3Rpb24gRGF0YSBDb2x1bW5zIC0tPlxuICAgIDwhLS0gc2VhcmNoIERhdGEgQ29sdW1ucyAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgZmlsdGVyZWRDb2x1bW5zIGxldCBpbmRleCA9IGluZGV4OyB0cmFja0J5OmNvbHVtbklkZW50XCIgW21hdENvbHVtbkRlZl09XCJjb2x1bW4uaWQgKyBTRUFSQ0hfUE9TVEZJWFwiPlxuICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5TdWNoZTwvdGg+XG4gICAgICA8dGQgY2xhc3M9XCJzZWFyY2gtZGF0YS1jZWxsXCIgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCI+XG4gICAgICAgIDxhIChjbGljayk9XCJzZWFyY2hJbkVkaXRvcihjb2x1bW4uaWQsIHJvdy5tZXRhLmxhYmVsKVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoKCBzZWFyY2hDb3VudHMgfCBhc3luYyk/Lmhhcyhjb2x1bW4uaWQgKyAnXycgKyByb3cubWV0YS5pZCkgKSBlbHNlIHplcm9PckxvYWRpbmdcIj5cbiAgICAgICAgICAgIHt7IChzZWFyY2hDb3VudHMgfCBhc3luYyk/LmdldChjb2x1bW4uaWQgKyAnXycgKyByb3cubWV0YS5pZCkgfX1cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI3plcm9PckxvYWRpbmc+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicm93c0xvYWRlZC5oYXMocm93Lm1ldGEuaWQpIGVsc2UgbG9hZGluZ0Jsb2NrXCI+IDAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2xvYWRpbmdCbG9jaz5cbiAgICAgICAgICAgIGxvYWRpbmfigKZcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2E+XG4gICAgICA8L3RkPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwhLS0gL3NlYXJjaCBEYXRhIENvbHVtbnMgLS0+XG4gICAgICA8IS0tIEdlbmVyYXRlIGFjdHVhbCB0YWJsZSAtLT5cbiAgICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cIlsnbGFiZWwtY29sJ10uY29uY2F0KCB0eXBlQ29sdW1ucyApOyBzdGlja3k6IHRydWU7XCI+PC90cj5cbiAgICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImFsdGVybmF0aW5nRGF0YUNvbHVtbnM7IHN0aWNreTogdHJ1ZTtcIj48L3RyPlxuICAgIDx0ciBtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBbJ2xhYmVsLWNvbCddLmNvbmNhdChhbHRlcm5hdGluZ0RhdGFDb2x1bW5zKVwiPjwvdHI+XG4gIDwvdGFibGU+XG48L21hdC1jYXJkPiJdfQ==
|
|
206
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1zZWFyY2gtY291bnRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLW1ldGEtd2lkZ2V0cy1saWIvc3JjL2xpYi90cmVlLXNlYXJjaC1jb3VudHMvdHJlZS1zZWFyY2gtY291bnRzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLW1ldGEtd2lkZ2V0cy1saWIvc3JjL2xpYi90cmVlLXNlYXJjaC1jb3VudHMvdHJlZS1zZWFyY2gtY291bnRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEVBR0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSXRDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7Ozs7Ozs7QUFlM0MsTUFBTSxPQUFPLHlCQUF5QjtJQXdCcEMsWUFDbUIsT0FBdUIsRUFDaEMsR0FBd0IsRUFDZixjQUFpQyxFQUVqQyxRQUFrQjtRQUpsQixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUNoQyxRQUFHLEdBQUgsR0FBRyxDQUFxQjtRQUNmLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUVqQyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBNUJyQzs7V0FFRztRQUNNLHlCQUFvQixHQUFHLENBQUMsQ0FBQztRQUN6Qix1QkFBa0IsR0FBRyxhQUFhLENBQUM7UUFDbkMsbUJBQWMsR0FBRyxTQUFTLENBQUM7UUFDM0IsaUJBQVksR0FBbUMsSUFBSSxlQUFlLENBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBQ3RGLGlCQUFZLEdBQUcsSUFBSSxlQUFlLENBQXNCLElBQUksR0FBRyxFQUFrQixDQUFDLENBQUM7UUFDbkYsZ0JBQVcsR0FBRyxJQUFJLFdBQVcsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdkYsbUJBQWMsR0FBRyxJQUFJLFdBQVcsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDM0YsdUJBQWtCLEdBQUcsSUFBSSxXQUFXLENBQVMsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFLdkUsZUFBVSxHQUF5QixJQUFJLEdBQUcsRUFBbUIsQ0FBQztRQUV4RSxjQUFTLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBWXRCLENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQztJQUVPLGtCQUFrQjtRQUN4QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBa0IsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDeEIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUMxQixDQUFDO1FBQ0Qsb0VBQW9FO1FBQ3BFLHNIQUFzSDtRQUN0SCxNQUFNLFNBQVMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzlFLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxZQUFZLENBQUMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQzFDLHNCQUFzQjtZQUN0QixJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7WUFFZCxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtnQkFDdkQsK0NBQStDO2dCQUMvQyxNQUFNLFNBQVMsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO2dCQUN0RCxLQUFLLElBQUksS0FBZSxDQUFDO2dCQUN6QixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLEtBQWUsQ0FBQyxDQUFDO1lBQzFELENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN4RSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hELElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3JELENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN2QyxPQUFPLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3hDLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDdkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUM7Z0JBQ3RCLFlBQVksRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3pCLFVBQVUsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUs7Z0JBQzFCLE9BQU8sRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUs7YUFDaEMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sYUFBYTtRQUNuQixJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQzNDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekYsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzNDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLHFCQUFxQjtRQUMzQixJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLEVBQUU7WUFDbkUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLCtCQUErQixDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDbkUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLE9BQU87YUFDVCxvQkFBb0IsRUFBRTthQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2IsU0FBUyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFDekIsTUFBTSxpQkFBaUIsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDckYsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUMxQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxZQUFvQjtRQUN0RCxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU87YUFDckMsbUNBQW1DLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO2FBQ3pFLFNBQVMsRUFBRSxDQUFDO1FBQ2YsK0RBQStEO1FBQy9ELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDbkQsT0FBTztnQkFDTCxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUU7Z0JBQ1IsSUFBSSxFQUFFLE9BQU87Z0JBQ2IsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLO2dCQUNkLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSzthQUNmLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBRTFCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVPLCtCQUErQixDQUFDLEdBQVc7UUFDakQsT0FBTyxHQUFHLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELGNBQWMsQ0FBQyxFQUFVO1FBQ3ZCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM5RCxNQUFNLENBQUMsSUFBSSxDQUNULElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYztZQUNyQiw4REFBOEQ7WUFDOUQsa0JBQWtCLENBQUMsWUFBWSxDQUFDLENBQ25DLENBQUM7SUFDSixDQUFDO0lBRUQsY0FBYyxDQUFDLFlBQW9CLEVBQUUsVUFBa0I7UUFDckQsTUFBTSxPQUFPLEdBQVEsRUFBRSxDQUFDO1FBQ3hCLElBQUksWUFBWSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzlCLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDckQsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMzQixPQUFPLENBQUMsMkJBQTJCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFDRCxNQUFNLEdBQUcsR0FDUCxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWM7WUFDdkIsK0NBQStDO1lBQy9DLElBQUk7WUFDSixrQkFBa0IsQ0FBQyxVQUFVLENBQUM7WUFDOUIsR0FBRztZQUNILFFBQVE7WUFDUixrQkFBa0IsQ0FBQywrQkFBK0IsR0FBRyxVQUFVLEdBQUcsR0FBRyxDQUFDO1lBQ3RFLEdBQUc7WUFDSCxVQUFVO1lBQ1Ysa0JBQWtCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMzQyxHQUFHO1lBQ0gsdUJBQXVCLENBQUM7UUFFMUIsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsbUJBQW1CLENBQUMsWUFBb0IsRUFBRSxjQUFzQixFQUFFLFlBQW9CO1FBQ3BGLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM5RCxNQUFNLE9BQU8sR0FBUTtZQUNuQixzRUFBc0U7WUFDdEUsOEJBQThCLEVBQUUsQ0FBQyxFQUFFLENBQUM7U0FDckMsQ0FBQztRQUNGLElBQUksWUFBWSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzlCLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDckQsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMzQixPQUFPLENBQUMsMkJBQTJCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFDRCxNQUFNLENBQUMsSUFBSSxDQUNULElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYztZQUNyQiwrQ0FBK0M7WUFDL0MsUUFBUTtZQUNSLGtCQUFrQixDQUFDLGlDQUFpQyxHQUFHLGNBQWMsR0FBRyxHQUFHLENBQUM7WUFDNUUsR0FBRztZQUNILFVBQVU7WUFDVixrQkFBa0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzNDLEdBQUc7WUFDSCx1QkFBdUIsQ0FDMUIsQ0FBQztJQUNKLENBQUM7SUFFRCxXQUFXLENBQUMsTUFBYyxFQUFFLEdBQW1CO1FBQzdDLE9BQU8sR0FBRyxDQUFDLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLHNEQUFzRDtRQUN0RCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDckcsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxJQUFJLGlCQUFpQjtRQUNuQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELElBQUksc0JBQXNCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlFLENBQUM7K0dBdE5VLHlCQUF5QixvSEE0QjFCLFFBQVE7bUdBNUJQLHlCQUF5QixzR0NoQ3RDLHNwSUF5Rlc7OzRGRHpERSx5QkFBeUI7a0JBTnJDLFNBQVM7K0JBQ0UsNEJBQTRCLG1CQUdyQix1QkFBdUIsQ0FBQyxNQUFNOzswQkE4QjVDLE1BQU07MkJBQUMsUUFBUTt5Q0FOUixTQUFTO3NCQURsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTWV0YUFwaVNlcnZpY2UgfSBmcm9tICcuLi9tZXRhLWFwaS5zZXJ2aWNlJztcbmltcG9ydCB7IENvbmZpZ0hlbHBlclNlcnZpY2UgfSBmcm9tICcuLi9jb25maWctaGVscGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmlsdGVyVmFsdWUsIFF1YWxpdHlNYXRyaXggfSBmcm9tICcuLi9qYXZhLWFwaSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElubGluZVdvcmtlciB9IGZyb20gJy4vaW5saW5lLXdvcmtlcic7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YUNvbHVtbiB7XG4gIGlkOiBzdHJpbmc7XG4gIGljb246IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgbGV2ZWw/OiBudW1iZXI7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21ldGFxczItdHJlZS1zZWFyY2gtY291bnRzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RyZWUtc2VhcmNoLWNvdW50cy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RyZWUtc2VhcmNoLWNvdW50cy5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgVHJlZVNlYXJjaENvdW50c0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIGRlZmF1bHQgbWF4IGNvdW50IG9mIGNvbHVtbnMgdGhhdCBzaG91bGQgYmUgc2hvd25cbiAgICovXG4gIHJlYWRvbmx5IERFRkFVTFRfQ09MVU1OX0xJTUlUID0gNjtcbiAgcmVhZG9ubHkgQ09MTEVDVElPTl9QT1NURklYID0gJ19jb2xsZWN0aW9uJztcbiAgcmVhZG9ubHkgU0VBUkNIX1BPU1RGSVggPSAnX3NlYXJjaCc7XG4gIHJlYWRvbmx5IGNvbGxlY3Rpb25zJDogQmVoYXZpb3JTdWJqZWN0PEZpbHRlclZhbHVlW10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGaWx0ZXJWYWx1ZVtdPihbXSk7XG4gIHJlYWRvbmx5IHNlYXJjaENvdW50cyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWFwPHN0cmluZywgbnVtYmVyPj4obmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKSk7XG4gIHJlYWRvbmx5IHNob3dPRVJvbmx5ID0gbmV3IEZvcm1Db250cm9sKHsgdmFsdWU6IHRydWUsIGRpc2FibGVkOiBmYWxzZSB9LCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pO1xuICByZWFkb25seSBzaG93QWxsQ29sdW1ucyA9IG5ldyBGb3JtQ29udHJvbCh7IHZhbHVlOiBmYWxzZSwgZGlzYWJsZWQ6IGZhbHNlIH0sIHsgbm9uTnVsbGFibGU6IHRydWUgfSk7XG4gIHJlYWRvbmx5IHNlbGVjdGVkQ29sbGVjdGlvbiA9IG5ldyBGb3JtQ29udHJvbDxzdHJpbmc+KCcnLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pO1xuXG4gIC8vIGNvbnZlcnQgdGhpcyBpbiBhbiBPYmVzZXJ2YWJsZVxuICBwcm90ZWN0ZWQgbWF0ZXJpYWxDb3VudHM6IFF1YWxpdHlNYXRyaXg7XG4gIHB1YmxpYyBjb2x1bW5zOiBEYXRhQ29sdW1uW107XG4gIHByb3RlY3RlZCByb3dzTG9hZGVkOiBNYXA8c3RyaW5nLCBib29sZWFuPiA9IG5ldyBNYXA8c3RyaW5nLCBib29sZWFuPigpO1xuXG4gIGlzTG9hZGluZyA9IHNpZ25hbCh0cnVlKTtcbiAgcHJpdmF0ZSB3b3JrZXI6IElubGluZVdvcmtlcjtcblxuICBASW5wdXQoKVxuICBwcm90ZWN0ZWQgcGFnZVRpdGxlOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBtZXRhQXBpOiBNZXRhQXBpU2VydmljZSxcbiAgICBwcml2YXRlIGVudjogQ29uZmlnSGVscGVyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBASW5qZWN0KERPQ1VNRU5UKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnQ6IERvY3VtZW50XG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRDb2xsZWN0aW9uc0ZpbHRlcigpO1xuICAgIHRoaXMuaW5pdE9lckZpbHRlcigpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMud29ya2VyKSB7XG4gICAgICB0aGlzLndvcmtlci50ZXJtaW5hdGUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGxldFRoZVdvcmtlclNlYXJjaCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaENvdW50cy5uZXh0KG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCkpO1xuICAgIHRoaXMucm93c0xvYWRlZC5jbGVhcigpO1xuICAgIGlmICh0aGlzLndvcmtlcikge1xuICAgICAgdGhpcy53b3JrZXIudGVybWluYXRlKCk7XG4gICAgfVxuICAgIC8vIGFwcGxpY2F0aW9ucyB0aGF0IHVzZSB1cywgbWF5IHByb3ZpZGUgYSByZWxhdGl2ZSBVUkwgZm9yIGFwaVBhdGguXG4gICAgLy8gYmVjYXVzZSB0aGUgV29ya2VyIHJ1bnMgdW5kZXIgYSA6OmJsb2IgdXJsLCB3ZSBoYXZlIHRvIHJlYmFzZSB0aGUgVVJMIHRvIHRoZSBzZWFyY2ggQVBJIHRvIHRoZSBEb2N1bWVudCwgd2UgcnVuIGluLlxuICAgIGNvbnN0IHdvcmtlclVybCA9IG5ldyBVUkwodGhpcy5lbnYuYXBpUGF0aCwgdGhpcy5kb2N1bWVudC5iYXNlVVJJKS50b1N0cmluZygpO1xuICAgIHRoaXMud29ya2VyID0gbmV3IElubGluZVdvcmtlcih7IGJhc2VQYXRoOiB3b3JrZXJVcmwgfSk7XG4gICAgdGhpcy53b3JrZXIub25tZXNzYWdlKCkuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgLy8gb25lIG1lc3NhZ2UgcGVyIHJvd1xuICAgICAgbGV0IHRvdGFsID0gMDtcblxuICAgICAgT2JqZWN0LmVudHJpZXMoZXZlbnQuZGF0YS5kYXRhKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgLy8ga2V5IGlzIHRoZSBtYXRlcmlhbCB0eXBlLCB2YWx1ZSBpcyB0aGUgY291bnRcbiAgICAgICAgY29uc3QgY29sdW1uS2V5ID0ga2V5ICsgJ18nICsgZXZlbnQuZGF0YS5jb2xsZWN0aW9uSWQ7XG4gICAgICAgIHRvdGFsICs9IHZhbHVlIGFzIG51bWJlcjtcbiAgICAgICAgdGhpcy5zZWFyY2hDb3VudHMudmFsdWUuc2V0KGNvbHVtbktleSwgdmFsdWUgYXMgbnVtYmVyKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5zZWFyY2hDb3VudHMudmFsdWUuc2V0KCd0b3RhbHNfJyArIGV2ZW50LmRhdGEuY29sbGVjdGlvbklkLCB0b3RhbCk7XG4gICAgICB0aGlzLnNlYXJjaENvdW50cy5uZXh0KHRoaXMuc2VhcmNoQ291bnRzLnZhbHVlKTtcbiAgICAgIHRoaXMucm93c0xvYWRlZC5zZXQoZXZlbnQuZGF0YS5jb2xsZWN0aW9uSWQsIHRydWUpO1xuICAgIH0pO1xuXG4gICAgdGhpcy53b3JrZXIub25lcnJvcigpLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgY29uc29sZS5lcnJvcignaW4gbWFpbiB0aHJlYWQnLCBkYXRhKTtcbiAgICB9KTtcblxuICAgIHRoaXMubWF0ZXJpYWxDb3VudHMucm93cy5mb3JFYWNoKChyb3cpID0+IHtcbiAgICAgIHRoaXMud29ya2VyLnBvc3RNZXNzYWdlKHtcbiAgICAgICAgY29sbGVjdGlvbklkOiByb3cubWV0YS5pZCxcbiAgICAgICAgc2VhcmNoVGVybTogcm93Lm1ldGEubGFiZWwsXG4gICAgICAgIG9lck9ubHk6IHRoaXMuc2hvd09FUm9ubHkudmFsdWUsXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdE9lckZpbHRlcigpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dPRVJvbmx5LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgY29uc3QgY29sbGVjdGlvbklkID0gdGhpcy5leHRyYWN0Q29sbGVjdGlvbklkRnJvbVZvY2FiVXJsKHRoaXMuc2VsZWN0ZWRDb2xsZWN0aW9uLnZhbHVlKTtcbiAgICAgIHRoaXMubG9hZERhdGFGb3JDb2xsZWN0aW9uKGNvbGxlY3Rpb25JZCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGluaXRDb2xsZWN0aW9uc0ZpbHRlcigpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkQ29sbGVjdGlvbi52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKChjb2xsZWN0aW9uSWRWYWx1ZSkgPT4ge1xuICAgICAgY29uc3QgaWQgPSB0aGlzLmV4dHJhY3RDb2xsZWN0aW9uSWRGcm9tVm9jYWJVcmwoY29sbGVjdGlvbklkVmFsdWUpO1xuICAgICAgdGhpcy5sb2FkRGF0YUZvckNvbGxlY3Rpb24oaWQpO1xuICAgIH0pO1xuICAgIHRoaXMubWV0YUFwaVxuICAgICAgLmdldENvbGxlY3Rpb25zRmlsdGVyKClcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKChjb2xsZWN0aW9ucykgPT4ge1xuICAgICAgICBjb25zdCBzb3J0ZWRDb2xsZWN0aW9ucyA9IGNvbGxlY3Rpb25zLnNvcnQoKGEsIGIpID0+IGEubGFiZWwubG9jYWxlQ29tcGFyZShiLmxhYmVsKSk7XG4gICAgICAgIHRoaXMuY29sbGVjdGlvbnMkLm5leHQoc29ydGVkQ29sbGVjdGlvbnMpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkQ29sbGVjdGlvbi5zZXRWYWx1ZShzb3J0ZWRDb2xsZWN0aW9uc1swXS5pZCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZERhdGFGb3JDb2xsZWN0aW9uKGNvbGxlY3Rpb25JZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5pc0xvYWRpbmcuc2V0KHRydWUpO1xuICAgIHRoaXMubWF0ZXJpYWxDb3VudHMgPSBhd2FpdCB0aGlzLm1ldGFBcGlcbiAgICAgIC5nZXRNYXRlcmlhbENvdW50TWF0cml4UGVyQ29sbGVjdGlvbihjb2xsZWN0aW9uSWQsIHRoaXMuc2hvd09FUm9ubHkudmFsdWUpXG4gICAgICAudG9Qcm9taXNlKCk7XG4gICAgLy9UT0RPOiB0cnkgdG8gYXZvaWQgdG8gcmVjYWxjdWxhdGUgdGhlIGNvbHVtbnMgb24gZXZlcnkgY2hhbmdlXG4gICAgdGhpcy5jb2x1bW5zID0gdGhpcy5tYXRlcmlhbENvdW50cy5jb2x1bW5zLm1hcCgoYykgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IGMuaWQsXG4gICAgICAgIGljb246ICd0b3RhbCcsXG4gICAgICAgIGxhYmVsOiBjLmxhYmVsLFxuICAgICAgICBsZXZlbDogYy5sZXZlbCxcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICB0aGlzLmxldFRoZVdvcmtlclNlYXJjaCgpO1xuXG4gICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgZXh0cmFjdENvbGxlY3Rpb25JZEZyb21Wb2NhYlVybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHVybC5zdWJzdHJpbmcodXJsLmxhc3RJbmRleE9mKCcvJykgKyAxKTtcbiAgfVxuXG4gIG9wZW5Db2xsZWN0aW9uKGlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBjb2xsZWN0aW9uSWQgPSB0aGlzLmV4dHJhY3RDb2xsZWN0aW9uSWRGcm9tVm9jYWJVcmwoaWQpO1xuICAgIHdpbmRvdy5vcGVuKFxuICAgICAgdGhpcy5lbnYuZWR1U2hhcmluZ1BhdGggK1xuICAgICAgICAnL2NvbXBvbmVudHMvZWRpdG9yaWFsLWRlc2svP21vZGU9cmVuZGVyJnZpZXdUeXBlPXNpbmdsZSZpZHM9JyArXG4gICAgICAgIGVuY29kZVVSSUNvbXBvbmVudChjb2xsZWN0aW9uSWQpXG4gICAgKTtcbiAgfVxuXG4gIHNlYXJjaEluRWRpdG9yKG1hdGVyaWFsVHlwZTogc3RyaW5nLCBzZWFyY2hUZXJtOiBzdHJpbmcpIHtcbiAgICBjb25zdCBmaWx0ZXJzOiBhbnkgPSB7fTtcbiAgICBpZiAobWF0ZXJpYWxUeXBlICE9PSAndG90YWxzJykge1xuICAgICAgZmlsdGVyc1snY2NtOm9laF9scnRfYWdncmVnYXRlZCddID0gW21hdGVyaWFsVHlwZV07XG4gICAgfVxuICAgIGlmICh0aGlzLnNob3dPRVJvbmx5LnZhbHVlKSB7XG4gICAgICBmaWx0ZXJzWyd2aXJ0dWFsOmVkaXRvcmlhbF9saWNlbnNlJ10gPSBbJ29lciddO1xuICAgIH1cbiAgICBjb25zdCB1cmwgPVxuICAgICAgdGhpcy5lbnYuZWR1U2hhcmluZ1BhdGggK1xuICAgICAgJy9jb21wb25lbnRzL2VkaXRvcmlhbC1kZXNrP21vZGU9YXVkaXRfbWV0YXFzJicgK1xuICAgICAgJ3E9JyArXG4gICAgICBlbmNvZGVVUklDb21wb25lbnQoc2VhcmNoVGVybSkgK1xuICAgICAgJyYnICtcbiAgICAgICd0aXRsZT0nICtcbiAgICAgIGVuY29kZVVSSUNvbXBvbmVudCgnTWV0YVFTIC0gU3VjaGVyZ2Vibmlzc2UgZsO8ciBcIicgKyBzZWFyY2hUZXJtICsgJ1wiJykgK1xuICAgICAgJyYnICtcbiAgICAgICdmaWx0ZXJzPScgK1xuICAgICAgZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KGZpbHRlcnMpKSArXG4gICAgICAnJicgK1xuICAgICAgJ3BhbmVsPWNvbnRlbnRzJnRhYj00Jic7XG5cbiAgICBjb25zdCByZWYgPSB3aW5kb3cub3Blbih1cmwpO1xuICB9XG5cbiAgc2hvd0NvbGxlY3Rpb25JdGVtcyhjb2xsZWN0aW9uSWQ6IHN0cmluZywgY29sbGVjdGlvbk5hbWU6IHN0cmluZywgbWF0ZXJpYWxUeXBlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBpZCA9IHRoaXMuZXh0cmFjdENvbGxlY3Rpb25JZEZyb21Wb2NhYlVybChjb2xsZWN0aW9uSWQpO1xuICAgIGNvbnN0IGZpbHRlcnM6IGFueSA9IHtcbiAgICAgIC8vXCJ2aXJ0dWFsOmNvbGxlY3Rpb25faWRfcHJpbWFyeVwiOiBbaWRdLCAvL3dvcmtzIG9mdGVuLCBidXQgbm90IGFsd2F5c1xuICAgICAgJ3ZpcnR1YWw6bWV0YXFzX2NvbGxlY3Rpb25faWQnOiBbaWRdLFxuICAgIH07XG4gICAgaWYgKG1hdGVyaWFsVHlwZSAhPT0gJ3RvdGFscycpIHtcbiAgICAgIGZpbHRlcnNbJ2NjbTpvZWhfbHJ0X2FnZ3JlZ2F0ZWQnXSA9IFttYXRlcmlhbFR5cGVdO1xuICAgIH1cbiAgICBpZiAodGhpcy5zaG93T0VSb25seS52YWx1ZSkge1xuICAgICAgZmlsdGVyc1sndmlydHVhbDplZGl0b3JpYWxfbGljZW5zZSddID0gWydvZXInXTtcbiAgICB9XG4gICAgd2luZG93Lm9wZW4oXG4gICAgICB0aGlzLmVudi5lZHVTaGFyaW5nUGF0aCArXG4gICAgICAgICcvY29tcG9uZW50cy9lZGl0b3JpYWwtZGVzaz9tb2RlPWF1ZGl0X21ldGFxcyYnICtcbiAgICAgICAgJ3RpdGxlPScgK1xuICAgICAgICBlbmNvZGVVUklDb21wb25lbnQoJ01ldGFRUyAtIFNhbW1sdW5nc2luaGFsdGUgZsO8ciBcIicgKyBjb2xsZWN0aW9uTmFtZSArICdcIicpICtcbiAgICAgICAgJyYnICtcbiAgICAgICAgJ2ZpbHRlcnM9JyArXG4gICAgICAgIGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShmaWx0ZXJzKSkgK1xuICAgICAgICAnJicgK1xuICAgICAgICAncGFuZWw9Y29udGVudHMmdGFiPTQmJ1xuICAgICk7XG4gIH1cblxuICBjb2x1bW5JZGVudChfaW5kZXg6IG51bWJlciwgY29sOiB7IGlkOiBzdHJpbmcgfSkge1xuICAgIHJldHVybiBjb2wuaWQ7XG4gIH1cblxuICBnZXQgZmlsdGVyZWRDb2x1bW5zKCkge1xuICAgIC8vIHJldHVybiBlaXRoZXIgYWxsIG9yIGp1c3QgYSBnaXZlbiBhbW91bnQgb2YgY29sdW1uc1xuICAgIHJldHVybiB0aGlzLnNob3dBbGxDb2x1bW5zLnZhbHVlID8gdGhpcy5jb2x1bW5zIDogdGhpcy5jb2x1bW5zLnNsaWNlKDAsIHRoaXMuREVGQVVMVF9DT0xVTU5fTElNSVQpO1xuICB9XG5cbiAgZ2V0IGNvbHVtbk5hbWVzKCkge1xuICAgIHJldHVybiB0aGlzLmZpbHRlcmVkQ29sdW1ucy5tYXAoKGMpID0+IGMuaWQpO1xuICB9XG5cbiAgZ2V0IHR5cGVDb2x1bW5zKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5OYW1lcy5tYXAoKGMpID0+IGMgKyAnX3R5cGUnKTtcbiAgfVxuXG4gIGdldCBjb2xsZWN0aW9uQ29sdW1ucygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1uTmFtZXMubWFwKChjKSA9PiBjICsgdGhpcy5DT0xMRUNUSU9OX1BPU1RGSVgpO1xuICB9XG5cbiAgZ2V0IHNlYXJjaENvbHVtbnMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbk5hbWVzLm1hcCgoYykgPT4gYyArIHRoaXMuU0VBUkNIX1BPU1RGSVgpO1xuICB9XG5cbiAgZ2V0IGFsdGVybmF0aW5nRGF0YUNvbHVtbnMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmNvbGxlY3Rpb25Db2x1bW5zLmZsYXRNYXAoKGUsIGkpID0+IFtlLCB0aGlzLnNlYXJjaENvbHVtbnNbaV1dKTtcbiAgfVxufVxuIiwiPG1hdC1jYXJkIGFwcGVhcmFuY2U9XCJyYWlzZWRcIj5cbjxtYXQtY2FyZC1oZWFkZXIgKm5nSWY9XCJwYWdlVGl0bGVcIj5cbiAgPG1hdC1jYXJkLXRpdGxlPlxuICAgIE1hdGVyaWFsIGluIFNhbW1sdW5nZW57e2lzTG9hZGluZygpID8gXCI6IExhZGUgbmV1ZSBEYXRlbi5cIiA6IFwiXCJ9fTwvbWF0LWNhcmQtdGl0bGVcbiAgPlxuPC9tYXQtY2FyZC1oZWFkZXI+XG48bWF0LWNhcmQtY29udGVudD5cbjwhLS0gY29uc2lkZXIgdG8gcHV0IHRoZSBmaWx0ZXIgaW4gdGhlIHRhYmxlIGhlYWRlciB0byBhdm9pZCB0aGF0IGl0IGlzIHNjcm9sbGVkIG91dCBvZiB2aWV3LS0+XG4gICAgPG1ldGFxczItcW0tZmlsdGVyXG4gICAgICBhcmlhLWRpc2FibGVkPVwidHJ1ZVwiXG4gICAgICBbbGFiZWxdPVwiJ1NhbW1sdW5nJ1wiXG4gICAgICBbb3B0aW9uc109XCJjb2xsZWN0aW9ucyQgfCBhc3luY1wiXG4gICAgICBbbXVsdGlwbGVdPVwiZmFsc2VcIlxuICAgICAgW2lucHV0Rm9ybUNvbnRyb2xdPVwic2VsZWN0ZWRDb2xsZWN0aW9uXCJcbiAgICA+XG4gICAgPC9tZXRhcXMyLXFtLWZpbHRlcj5cblxuPC9tYXQtY2FyZC1jb250ZW50PlxuPC9tYXQtY2FyZD5cbjxtYXQtY2FyZD5cbiAgPHRhYmxlIFtuZ0NsYXNzXT1cInsnd2hpbGUtbG9hZGluZyc6IGlzTG9hZGluZygpfVwiIG1hdC10YWJsZSBbZGF0YVNvdXJjZV09XCJtYXRlcmlhbENvdW50cy5yb3dzXCIgKm5nSWY9XCJjb2x1bW5zXCIgY2xhc3M9XCJxdWFsaXR5LW1hdHJpeFwiPlxuICAgIDwhLS0gRGVmaW5lIGNvbHVtbnMgb2YgdGFibGUgLS0+XG4gICAgPCEtLSBMYWJlbCBDb2x1bW4gLS0+XG4gICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJsYWJlbC1jb2xcIiBzdGlja3k+XG4gICAgICA8dGggcm93c3Bhbj1cIjJcIiBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+U2FtbWx1bmdcbiAgICAgIDxkaXYgPlxuICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBsYWJlbFBvc2l0aW9uPVwiYmVmb3JlXCIgY2xhc3M9XCJ0b2dnbGVcIiBbZm9ybUNvbnRyb2xdPVwic2hvd09FUm9ubHlcIiA+XG4gICAgICAgICAgemVpZ2UgbnVyIE9FUlxuICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XG4gICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgbGFiZWxQb3NpdGlvbj1cImJlZm9yZVwiIGNsYXNzPVwidG9nZ2xlXCIgW2Zvcm1Db250cm9sXT1cInNob3dBbGxDb2x1bW5zXCIgPlxuICAgICAgICAgIHplaWdlIGFsbGUgVHlwZW5cbiAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvdGg+XG4gICAgICA8dGRcbiAgICAgICAgbWF0LWNlbGxcbiAgICAgICAgKm1hdENlbGxEZWY9XCJsZXQgcm93XCJcbiAgICAgICAgbWF0VG9vbHRpcD1cInt7cm93Lm1ldGEuYWx0X2xhYmVsfX1cIlxuICAgICAgICBjbGFzcz1cImxhYmVsLWNvbCB7eydtYXQtY2VsbC1sZXZlbC0nICsgKHJvdy5tZXRhLmxldmVsKzEpfX1cIlxuICAgICAgPlxuICAgICAgICA8YSAoY2xpY2spPVwib3BlbkNvbGxlY3Rpb24ocm93Lm1ldGEuaWQpXCI+XG4gICAgICAgICAgPG1hdC1pY29uIFtzdmdJY29uXT1cInJvdy5tZXRhLmxldmVsPD0xPydsYXllcnMnOidjaGlsZCdcIiAvPlxuICAgICAgICAgIHt7IHJvdy5tZXRhLmxhYmVsIH19XG4gICAgICAgIDwvYT5cbiAgICAgIDwvdGQ+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPCEtLSBvbmUgY29sdW1uIGZvciB0aGUgTWF0ZXJpYWxUeXBlIHNwYW5uaW5nIHRoZSBjb2xsZWN0aW9uIGFuZCBzZWFyY2ggY29sdW1ucy0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbCBvZiBmaWx0ZXJlZENvbHVtbnM7IHRyYWNrQnk6Y29sdW1uSWRlbnRcIiBbbWF0Q29sdW1uRGVmXT1cImNvbC5pZCArICdfdHlwZSdcIj5cbiAgICAgIDx0aCBbYXR0ci5jb2xzcGFuXT1cIjJcIiBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgY2xhc3M9J21hdC1jZWxsLWxldmVsLVwie3tjb2wubGV2ZWx9fVwiJyBtYXRUb29sdGlwPVwie3tjb2wubGFiZWx9fVwiID57e2NvbC5sYWJlbH19PC90aD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8IS0tIC9zb3VyY2UgLS0+XG4gICAgPCEtLSBjb2xsZWN0aW9uIERhdGEgQ29sdW1ucyAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgZmlsdGVyZWRDb2x1bW5zOyB0cmFja0J5OmNvbHVtbklkZW50XCIgW21hdENvbHVtbkRlZl09XCJjb2x1bW4uaWQgKyBDT0xMRUNUSU9OX1BPU1RGSVhcIj5cbiAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0VG9vbHRpcD1cInt7Y29sdW1uLmxhYmVsfX1cIiA+aW4gU2FtbWx1bmc8L3RoPlxuICAgICAgPHRkIFtjbGFzcy5ub01hdGVyaWFsXT1cIiFyb3cuY291bnRzW2NvbHVtbi5pZF0/LnN1ZmZpY2llbnQgfHwgcm93LmNvdW50c1tjb2x1bW4uaWRdPy5zdWZmaWNpZW50IDw9IDFcIlxuICAgICAgICAgIFtjbGFzcy5mZXdNYXRlcmlhbHNdPVwiMSA8IHJvdy5jb3VudHNbY29sdW1uLmlkXT8uc3VmZmljaWVudCAmJiByb3cuY291bnRzW2NvbHVtbi5pZF0/LnN1ZmZpY2llbnQgPD0gM1wiXG4gICAgICAgICAgY2xhc3M9XCJjb2xsZWN0aW9uLWRhdGEtY2VsbFwiXG4gICAgICAgICAgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCI+XG4gICAgICAgICAgICA8YSAoY2xpY2spPVwic2hvd0NvbGxlY3Rpb25JdGVtcyhyb3cubWV0YS5pZCwgcm93Lm1ldGEubGFiZWwsIGNvbHVtbi5pZClcIj5cbiAgICAgICAgICAgICAge3sgcm93LmNvdW50c1tjb2x1bW4uaWRdPy5zdWZmaWNpZW50IHx8ICcwJyB9fVxuICAgICAgICAgICAgPC9hPlxuICAgICAgPC90ZD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8IS0tIC9jb2xsZWN0aW9uIERhdGEgQ29sdW1ucyAtLT5cbiAgICA8IS0tIHNlYXJjaCBEYXRhIENvbHVtbnMgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGZpbHRlcmVkQ29sdW1ucyBsZXQgaW5kZXggPSBpbmRleDsgdHJhY2tCeTpjb2x1bW5JZGVudFwiIFttYXRDb2x1bW5EZWZdPVwiY29sdW1uLmlkICsgU0VBUkNIX1BPU1RGSVhcIj5cbiAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+U3VjaGU8L3RoPlxuICAgICAgPHRkIGNsYXNzPVwic2VhcmNoLWRhdGEtY2VsbFwiIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiPlxuICAgICAgICA8YSAoY2xpY2spPVwic2VhcmNoSW5FZGl0b3IoY29sdW1uLmlkLCByb3cubWV0YS5sYWJlbClcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKCggc2VhcmNoQ291bnRzIHwgYXN5bmMpPy5oYXMoY29sdW1uLmlkICsgJ18nICsgcm93Lm1ldGEuaWQpICkgZWxzZSB6ZXJvT3JMb2FkaW5nXCI+XG4gICAgICAgICAgICB7eyAoc2VhcmNoQ291bnRzIHwgYXN5bmMpPy5nZXQoY29sdW1uLmlkICsgJ18nICsgcm93Lm1ldGEuaWQpIH19XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICN6ZXJvT3JMb2FkaW5nPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJvd3NMb2FkZWQuaGFzKHJvdy5tZXRhLmlkKSBlbHNlIGxvYWRpbmdCbG9ja1wiPiAwIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNsb2FkaW5nQmxvY2s+XG4gICAgICAgICAgICBsb2FkaW5n4oCmXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9hPlxuICAgICAgPC90ZD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8IS0tIC9zZWFyY2ggRGF0YSBDb2x1bW5zIC0tPlxuICAgICAgPCEtLSBHZW5lcmF0ZSBhY3R1YWwgdGFibGUgLS0+XG4gICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJbJ2xhYmVsLWNvbCddLmNvbmNhdCggdHlwZUNvbHVtbnMgKTsgc3RpY2t5OiB0cnVlO1wiPjwvdHI+XG4gICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJhbHRlcm5hdGluZ0RhdGFDb2x1bW5zOyBzdGlja3k6IHRydWU7XCI+PC90cj5cbiAgICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogWydsYWJlbC1jb2wnXS5jb25jYXQoYWx0ZXJuYXRpbmdEYXRhQ29sdW1ucylcIj48L3RyPlxuICA8L3RhYmxlPlxuPC9tYXQtY2FyZD4iXX0=
|
|
@@ -32,7 +32,7 @@ import { HttpHeaders, HttpContext, HttpParams, provideHttpClient, withIntercepto
|
|
|
32
32
|
import { Subject, BehaviorSubject, of, forkJoin, pipe } from 'rxjs';
|
|
33
33
|
import { take, map, finalize, tap, catchError, startWith, filter, takeUntil, shareReplay, distinctUntilChanged } from 'rxjs/operators';
|
|
34
34
|
import * as i3$1 from '@angular/common';
|
|
35
|
-
import { NgForOf, AsyncPipe, NgClass, NgIf } from '@angular/common';
|
|
35
|
+
import { NgForOf, DOCUMENT, AsyncPipe, NgClass, NgIf } from '@angular/common';
|
|
36
36
|
import * as i3 from '@angular/material/core';
|
|
37
37
|
import { DateAdapter, MAT_DATE_LOCALE, MAT_DATE_FORMATS } from '@angular/material/core';
|
|
38
38
|
import * as i2$1 from '@ngx-translate/core';
|
|
@@ -1785,7 +1785,7 @@ class InlineWorker {
|
|
|
1785
1785
|
// Perform the fetch request
|
|
1786
1786
|
const { basePath, collectionId, searchTerm, oerOnly } = data;
|
|
1787
1787
|
searchForTypeAndCollection(basePath, searchTerm, oerOnly)
|
|
1788
|
-
.then((response) => (response.ok ? response : Promise.reject(response)))
|
|
1788
|
+
.then((response) => (response.ok ? response : Promise.reject(response)), (error) => Promise.reject(error))
|
|
1789
1789
|
.then((response) => response.json())
|
|
1790
1790
|
.then((data) => {
|
|
1791
1791
|
resolve({ collectionId, data });
|
|
@@ -1811,12 +1811,11 @@ class InlineWorker {
|
|
|
1811
1811
|
});
|
|
1812
1812
|
}
|
|
1813
1813
|
const searchForTypeAndCollection = (basePath, searchTerm, oerOnly = false) => {
|
|
1814
|
-
|
|
1815
|
-
|
|
1816
|
-
|
|
1817
|
-
|
|
1818
|
-
|
|
1819
|
-
return fetch(url, { credentials: 'include' });
|
|
1814
|
+
//strip trailing slash from basePath, if present
|
|
1815
|
+
const searchUrl = new URL(basePath.replace(/\/$/, '') + '/collections/v2/material/search');
|
|
1816
|
+
searchUrl.searchParams.set('term', searchTerm);
|
|
1817
|
+
searchUrl.searchParams.set('oerOnly', oerOnly ? 'true' : 'false');
|
|
1818
|
+
return fetch(searchUrl, { credentials: 'include' });
|
|
1820
1819
|
};
|
|
1821
1820
|
self.onmessage = (evt) => {
|
|
1822
1821
|
enqueueRequest(evt)
|
|
@@ -2000,10 +1999,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
2000
1999
|
}] } });
|
|
2001
2000
|
|
|
2002
2001
|
class TreeSearchCountsComponent {
|
|
2003
|
-
constructor(metaApi, env, changeDetector) {
|
|
2002
|
+
constructor(metaApi, env, changeDetector, document) {
|
|
2004
2003
|
this.metaApi = metaApi;
|
|
2005
2004
|
this.env = env;
|
|
2006
2005
|
this.changeDetector = changeDetector;
|
|
2006
|
+
this.document = document;
|
|
2007
2007
|
/**
|
|
2008
2008
|
* default max count of columns that should be shown
|
|
2009
2009
|
*/
|
|
@@ -2033,7 +2033,10 @@ class TreeSearchCountsComponent {
|
|
|
2033
2033
|
if (this.worker) {
|
|
2034
2034
|
this.worker.terminate();
|
|
2035
2035
|
}
|
|
2036
|
-
|
|
2036
|
+
// applications that use us, may provide a relative URL for apiPath.
|
|
2037
|
+
// because the Worker runs under a ::blob url, we have to rebase the URL to the search API to the Document, we run in.
|
|
2038
|
+
const workerUrl = new URL(this.env.apiPath, this.document.baseURI).toString();
|
|
2039
|
+
this.worker = new InlineWorker({ basePath: workerUrl });
|
|
2037
2040
|
this.worker.onmessage().subscribe((event) => {
|
|
2038
2041
|
// one message per row
|
|
2039
2042
|
let total = 0;
|
|
@@ -2171,13 +2174,16 @@ class TreeSearchCountsComponent {
|
|
|
2171
2174
|
get alternatingDataColumns() {
|
|
2172
2175
|
return this.collectionColumns.flatMap((e, i) => [e, this.searchColumns[i]]);
|
|
2173
2176
|
}
|
|
2174
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TreeSearchCountsComponent, deps: [{ token: MetaApiService }, { token: ConfigHelperService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2177
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TreeSearchCountsComponent, deps: [{ token: MetaApiService }, { token: ConfigHelperService }, { token: i0.ChangeDetectorRef }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2175
2178
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TreeSearchCountsComponent, selector: "metaqs2-tree-search-counts", inputs: { pageTitle: "pageTitle" }, ngImport: i0, template: "<mat-card appearance=\"raised\">\n<mat-card-header *ngIf=\"pageTitle\">\n <mat-card-title>\n Material in Sammlungen{{isLoading() ? \": Lade neue Daten.\" : \"\"}}</mat-card-title\n >\n</mat-card-header>\n<mat-card-content>\n<!-- consider to put the filter in the table header to avoid that it is scrolled out of view-->\n <metaqs2-qm-filter\n aria-disabled=\"true\"\n [label]=\"'Sammlung'\"\n [options]=\"collections$ | async\"\n [multiple]=\"false\"\n [inputFormControl]=\"selectedCollection\"\n >\n </metaqs2-qm-filter>\n\n</mat-card-content>\n</mat-card>\n<mat-card>\n <table [ngClass]=\"{'while-loading': isLoading()}\" mat-table [dataSource]=\"materialCounts.rows\" *ngIf=\"columns\" class=\"quality-matrix\">\n <!-- Define columns of table -->\n <!-- Label Column -->\n <ng-container matColumnDef=\"label-col\" sticky>\n <th rowspan=\"2\" mat-header-cell *matHeaderCellDef>Sammlung\n <div >\n <mat-slide-toggle labelPosition=\"before\" class=\"toggle\" [formControl]=\"showOERonly\" >\n zeige nur OER\n </mat-slide-toggle>\n </div>\n <div>\n <mat-slide-toggle labelPosition=\"before\" class=\"toggle\" [formControl]=\"showAllColumns\" >\n zeige alle Typen\n </mat-slide-toggle>\n </div>\n </th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n matTooltip=\"{{row.meta.alt_label}}\"\n class=\"label-col {{'mat-cell-level-' + (row.meta.level+1)}}\"\n >\n <a (click)=\"openCollection(row.meta.id)\">\n <mat-icon [svgIcon]=\"row.meta.level<=1?'layers':'child'\" />\n {{ row.meta.label }}\n </a>\n </td>\n </ng-container>\n <!-- one column for the MaterialType spanning the collection and search columns-->\n <ng-container *ngFor=\"let col of filteredColumns; trackBy:columnIdent\" [matColumnDef]=\"col.id + '_type'\">\n <th [attr.colspan]=\"2\" mat-header-cell *matHeaderCellDef class='mat-cell-level-\"{{col.level}}\"' matTooltip=\"{{col.label}}\" >{{col.label}}</th>\n </ng-container>\n <!-- /source -->\n <!-- collection Data Columns -->\n <ng-container *ngFor=\"let column of filteredColumns; trackBy:columnIdent\" [matColumnDef]=\"column.id + COLLECTION_POSTFIX\">\n <th mat-header-cell *matHeaderCellDef matTooltip=\"{{column.label}}\" >in Sammlung</th>\n <td [class.noMaterial]=\"!row.counts[column.id]?.sufficient || row.counts[column.id]?.sufficient <= 1\"\n [class.fewMaterials]=\"1 < row.counts[column.id]?.sufficient && row.counts[column.id]?.sufficient <= 3\"\n class=\"collection-data-cell\"\n mat-cell *matCellDef=\"let row\">\n <a (click)=\"showCollectionItems(row.meta.id, row.meta.label, column.id)\">\n {{ row.counts[column.id]?.sufficient || '0' }}\n </a>\n </td>\n </ng-container>\n <!-- /collection Data Columns -->\n <!-- search Data Columns -->\n <ng-container *ngFor=\"let column of filteredColumns let index = index; trackBy:columnIdent\" [matColumnDef]=\"column.id + SEARCH_POSTFIX\">\n <th mat-header-cell *matHeaderCellDef>Suche</th>\n <td class=\"search-data-cell\" mat-cell *matCellDef=\"let row\">\n <a (click)=\"searchInEditor(column.id, row.meta.label)\">\n <ng-container *ngIf=\"(( searchCounts | async)?.has(column.id + '_' + row.meta.id) ) else zeroOrLoading\">\n {{ (searchCounts | async)?.get(column.id + '_' + row.meta.id) }}\n </ng-container>\n <ng-template #zeroOrLoading>\n <ng-container *ngIf=\"rowsLoaded.has(row.meta.id) else loadingBlock\"> 0 </ng-container>\n </ng-template>\n <ng-template #loadingBlock>\n loading\u2026\n </ng-template>\n </a>\n </td>\n </ng-container>\n <!-- /search Data Columns -->\n <!-- Generate actual table -->\n <tr mat-header-row *matHeaderRowDef=\"['label-col'].concat( typeColumns ); sticky: true;\"></tr>\n <tr mat-header-row *matHeaderRowDef=\"alternatingDataColumns; sticky: true;\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: ['label-col'].concat(alternatingDataColumns)\"></tr>\n </table>\n</mat-card>", styles: ["tr:nth-child(2n){background-color:#e4e4e4}tr:nth-child(2n)>.mat-column-label-col,tr:nth-child(2n) .search-data-cell{border-right-color:#fff}.search-data-cell,.mat-mdc-header-cell,.mat-column-label-col{border-right:1px solid #e4e4e4}.search-data-cell mat-icon,.mat-mdc-header-cell mat-icon,.mat-column-label-col mat-icon{color:var(--mat-table-row-item-label-text-color);height:16px;padding-right:5px;font-size:16px}.mat-mdc-header-cell,.mat-mdc-cell{padding-left:5px;text-align:center}.mat-mdc-header-cell a,.mat-mdc-cell a{cursor:pointer;text-decoration:underline}.mat-mdc-header-cell a:hover,.mat-mdc-cell a:hover{text-decoration:underline}.label-col a{text-decoration:none;align-items:center;display:flex}.mat-column-totals_collection.noMaterial{background-color:#fad6da}.mat-column-totals_collection.fewMaterials{background-color:#fff1d6}.mat-cell-level-1{padding-left:20px!important;text-align:left}.mat-cell-level-2{padding-left:40px!important;text-align:left}.mat-cell-level-3{padding-left:60px!important;text-align:left}.mat-cell-level-4{padding-left:80px!important;text-align:left}.mat-cell-level-5{padding-left:100px!important;text-align:left}.mat-cell-level-6{padding-left:120px!important;text-align:left}.mat-cell-level-7{padding-left:140px!important;text-align:left}.mat-cell-level-8{padding-left:160px!important;text-align:left}\n"], dependencies: [{ kind: "directive", type: i3$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i4.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i4.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i4.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "component", type: i7.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i7.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i7.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i7.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i7.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i7.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i7.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i7.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i7.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i7.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: QualityMatrixFilterComponent, selector: "metaqs2-qm-filter", inputs: ["options", "inputFormControl", "label", "multiple"], outputs: ["changedFilters"] }, { kind: "pipe", type: i3$1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2176
2179
|
}
|
|
2177
2180
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TreeSearchCountsComponent, decorators: [{
|
|
2178
2181
|
type: Component,
|
|
2179
2182
|
args: [{ selector: 'metaqs2-tree-search-counts', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-card appearance=\"raised\">\n<mat-card-header *ngIf=\"pageTitle\">\n <mat-card-title>\n Material in Sammlungen{{isLoading() ? \": Lade neue Daten.\" : \"\"}}</mat-card-title\n >\n</mat-card-header>\n<mat-card-content>\n<!-- consider to put the filter in the table header to avoid that it is scrolled out of view-->\n <metaqs2-qm-filter\n aria-disabled=\"true\"\n [label]=\"'Sammlung'\"\n [options]=\"collections$ | async\"\n [multiple]=\"false\"\n [inputFormControl]=\"selectedCollection\"\n >\n </metaqs2-qm-filter>\n\n</mat-card-content>\n</mat-card>\n<mat-card>\n <table [ngClass]=\"{'while-loading': isLoading()}\" mat-table [dataSource]=\"materialCounts.rows\" *ngIf=\"columns\" class=\"quality-matrix\">\n <!-- Define columns of table -->\n <!-- Label Column -->\n <ng-container matColumnDef=\"label-col\" sticky>\n <th rowspan=\"2\" mat-header-cell *matHeaderCellDef>Sammlung\n <div >\n <mat-slide-toggle labelPosition=\"before\" class=\"toggle\" [formControl]=\"showOERonly\" >\n zeige nur OER\n </mat-slide-toggle>\n </div>\n <div>\n <mat-slide-toggle labelPosition=\"before\" class=\"toggle\" [formControl]=\"showAllColumns\" >\n zeige alle Typen\n </mat-slide-toggle>\n </div>\n </th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n matTooltip=\"{{row.meta.alt_label}}\"\n class=\"label-col {{'mat-cell-level-' + (row.meta.level+1)}}\"\n >\n <a (click)=\"openCollection(row.meta.id)\">\n <mat-icon [svgIcon]=\"row.meta.level<=1?'layers':'child'\" />\n {{ row.meta.label }}\n </a>\n </td>\n </ng-container>\n <!-- one column for the MaterialType spanning the collection and search columns-->\n <ng-container *ngFor=\"let col of filteredColumns; trackBy:columnIdent\" [matColumnDef]=\"col.id + '_type'\">\n <th [attr.colspan]=\"2\" mat-header-cell *matHeaderCellDef class='mat-cell-level-\"{{col.level}}\"' matTooltip=\"{{col.label}}\" >{{col.label}}</th>\n </ng-container>\n <!-- /source -->\n <!-- collection Data Columns -->\n <ng-container *ngFor=\"let column of filteredColumns; trackBy:columnIdent\" [matColumnDef]=\"column.id + COLLECTION_POSTFIX\">\n <th mat-header-cell *matHeaderCellDef matTooltip=\"{{column.label}}\" >in Sammlung</th>\n <td [class.noMaterial]=\"!row.counts[column.id]?.sufficient || row.counts[column.id]?.sufficient <= 1\"\n [class.fewMaterials]=\"1 < row.counts[column.id]?.sufficient && row.counts[column.id]?.sufficient <= 3\"\n class=\"collection-data-cell\"\n mat-cell *matCellDef=\"let row\">\n <a (click)=\"showCollectionItems(row.meta.id, row.meta.label, column.id)\">\n {{ row.counts[column.id]?.sufficient || '0' }}\n </a>\n </td>\n </ng-container>\n <!-- /collection Data Columns -->\n <!-- search Data Columns -->\n <ng-container *ngFor=\"let column of filteredColumns let index = index; trackBy:columnIdent\" [matColumnDef]=\"column.id + SEARCH_POSTFIX\">\n <th mat-header-cell *matHeaderCellDef>Suche</th>\n <td class=\"search-data-cell\" mat-cell *matCellDef=\"let row\">\n <a (click)=\"searchInEditor(column.id, row.meta.label)\">\n <ng-container *ngIf=\"(( searchCounts | async)?.has(column.id + '_' + row.meta.id) ) else zeroOrLoading\">\n {{ (searchCounts | async)?.get(column.id + '_' + row.meta.id) }}\n </ng-container>\n <ng-template #zeroOrLoading>\n <ng-container *ngIf=\"rowsLoaded.has(row.meta.id) else loadingBlock\"> 0 </ng-container>\n </ng-template>\n <ng-template #loadingBlock>\n loading\u2026\n </ng-template>\n </a>\n </td>\n </ng-container>\n <!-- /search Data Columns -->\n <!-- Generate actual table -->\n <tr mat-header-row *matHeaderRowDef=\"['label-col'].concat( typeColumns ); sticky: true;\"></tr>\n <tr mat-header-row *matHeaderRowDef=\"alternatingDataColumns; sticky: true;\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: ['label-col'].concat(alternatingDataColumns)\"></tr>\n </table>\n</mat-card>", styles: ["tr:nth-child(2n){background-color:#e4e4e4}tr:nth-child(2n)>.mat-column-label-col,tr:nth-child(2n) .search-data-cell{border-right-color:#fff}.search-data-cell,.mat-mdc-header-cell,.mat-column-label-col{border-right:1px solid #e4e4e4}.search-data-cell mat-icon,.mat-mdc-header-cell mat-icon,.mat-column-label-col mat-icon{color:var(--mat-table-row-item-label-text-color);height:16px;padding-right:5px;font-size:16px}.mat-mdc-header-cell,.mat-mdc-cell{padding-left:5px;text-align:center}.mat-mdc-header-cell a,.mat-mdc-cell a{cursor:pointer;text-decoration:underline}.mat-mdc-header-cell a:hover,.mat-mdc-cell a:hover{text-decoration:underline}.label-col a{text-decoration:none;align-items:center;display:flex}.mat-column-totals_collection.noMaterial{background-color:#fad6da}.mat-column-totals_collection.fewMaterials{background-color:#fff1d6}.mat-cell-level-1{padding-left:20px!important;text-align:left}.mat-cell-level-2{padding-left:40px!important;text-align:left}.mat-cell-level-3{padding-left:60px!important;text-align:left}.mat-cell-level-4{padding-left:80px!important;text-align:left}.mat-cell-level-5{padding-left:100px!important;text-align:left}.mat-cell-level-6{padding-left:120px!important;text-align:left}.mat-cell-level-7{padding-left:140px!important;text-align:left}.mat-cell-level-8{padding-left:160px!important;text-align:left}\n"] }]
|
|
2180
|
-
}], ctorParameters: () => [{ type: MetaApiService }, { type: ConfigHelperService }, { type: i0.ChangeDetectorRef }
|
|
2183
|
+
}], ctorParameters: () => [{ type: MetaApiService }, { type: ConfigHelperService }, { type: i0.ChangeDetectorRef }, { type: Document, decorators: [{
|
|
2184
|
+
type: Inject,
|
|
2185
|
+
args: [DOCUMENT]
|
|
2186
|
+
}] }], propDecorators: { pageTitle: [{
|
|
2181
2187
|
type: Input
|
|
2182
2188
|
}] } });
|
|
2183
2189
|
|