Merge pull request #76 from microsoft/dev

Dev to master
This commit is contained in:
mkslalom 2022-04-07 18:22:00 -07:00 коммит произвёл GitHub
Родитель 6f5b54479b ded1651bcf
Коммит 76f7e80ce1
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
7 изменённых файлов: 143 добавлений и 183 удалений

203
package-lock.json сгенерированный
Просмотреть файл

@ -524,12 +524,6 @@
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
"dev": true
},
"minimist": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
"dev": true
},
"require-main-filename": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
@ -2773,12 +2767,6 @@
"emojis-list": "^3.0.0",
"json5": "^1.0.1"
}
},
"minimist": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
"dev": true
}
}
},
@ -3050,11 +3038,11 @@
"integrity": "sha512-Jui+Zn28pQw/3EayPKaN4c/PqTvqNbIPjHkgIIFnxne1FdwNjfHtAIsZIBMKlquQNrrMjFzCrlF2gPs3xckqaA=="
},
"@types/d3-sankey": {
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/@types/d3-sankey/-/d3-sankey-0.11.0.tgz",
"integrity": "sha512-qRSxb23bebIudr4+ewdkG6T+vlvBdzWMjB4X915LD4bplq8FxrGTakCZ0OolSZKJjym8WrnIeHRVuoPOw+Nq+g==",
"version": "0.11.2",
"resolved": "https://registry.npmjs.org/@types/d3-sankey/-/d3-sankey-0.11.2.tgz",
"integrity": "sha512-U6SrTWUERSlOhnpSrgvMX64WblX1AxX6nEjI2t3mLK2USpQrnbwYYK+AS9SwiE7wgYmOsSSKoSdr8aoKBH0HgQ==",
"requires": {
"@types/d3-shape": "*"
"@types/d3-shape": "^1"
}
},
"@types/d3-scale": {
@ -3085,11 +3073,11 @@
}
},
"@types/d3-shape": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-1.3.2.tgz",
"integrity": "sha512-LtD8EaNYCaBRzHzaAiIPrfcL3DdIysc81dkGlQvv7WQP3+YXV7b0JJTtR1U3bzeRieS603KF4wUo+ZkJVenh8w==",
"version": "1.3.8",
"resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-1.3.8.tgz",
"integrity": "sha512-gqfnMz6Fd5H6GOLYixOZP/xlrMtJms9BaS+6oWxTKHNqPGZ93BkWWupQSCYm6YHqx6h9wjRupuJb90bun6ZaYg==",
"requires": {
"@types/d3-path": "*"
"@types/d3-path": "^1"
}
},
"@types/d3-time": {
@ -3179,9 +3167,9 @@
"dev": true
},
"@types/node": {
"version": "12.12.27",
"resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.27.tgz",
"integrity": "sha512-odQFl/+B9idbdS0e8IxDl2ia/LP8KZLXhV3BUeI98TrZp0uoIzQPhGd+5EtzHmT0SMOIaPd7jfz6pOHLWTtl7A==",
"version": "17.0.21",
"resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.21.tgz",
"integrity": "sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ==",
"dev": true
},
"@types/q": {
@ -3514,25 +3502,18 @@
"dev": true
},
"angular-tree-component": {
"version": "8.5.2",
"resolved": "https://registry.npmjs.org/angular-tree-component/-/angular-tree-component-8.5.2.tgz",
"integrity": "sha512-3NwMB+vLq1+WHz2UVgsZA73E1LmIIWJlrrasCKXbLJ3S7NmY9O/wKcolji3Vp2W//5KQ33RXu1jiPXCOQdRzVA==",
"version": "8.5.6",
"resolved": "https://registry.npmjs.org/angular-tree-component/-/angular-tree-component-8.5.6.tgz",
"integrity": "sha512-cxNem6872diZz9kIGqrjSJbKt0P3WSq9wTqZIeVJ8zsddI4Y6ShAVZlZNXUMRyJq246c9pJ6JJEAOzKVLk9xgA==",
"requires": {
"lodash": "^4.17.11",
"mobx": "^5.14.2",
"mobx-angular": "3.0.3",
"opencollective-postinstall": "^2.0.2"
"mobx": "^4.15.1"
},
"dependencies": {
"mobx": {
"version": "5.15.4",
"resolved": "https://registry.npmjs.org/mobx/-/mobx-5.15.4.tgz",
"integrity": "sha512-xRFJxSU2Im3nrGCdjSuOTFmxVDGeqOHL+TyADCGbT0k4HHqGmx5u2yaHNryvoORpI4DfbzjJ5jPmuv+d7sioFw=="
},
"mobx-angular": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/mobx-angular/-/mobx-angular-3.0.3.tgz",
"integrity": "sha512-mZuuose70V+Sd0hMWDElpRe3mA6GhYjSQN3mHzqk2XWXRJ+eWQa/f3Lqhw+Me/Xd2etWsGR1hnRa1BfQ2ZDtpw=="
"version": "4.15.7",
"resolved": "https://registry.npmjs.org/mobx/-/mobx-4.15.7.tgz",
"integrity": "sha512-X4uQvuf2zYKHVO5kRT5Utmr+J9fDnRgxWWnSqJ4oiccPTQU38YG+/O3nPmOhUy4jeHexl7XJJpWDBgEnEfp+8w=="
}
}
},
@ -3950,12 +3931,6 @@
"emojis-list": "^3.0.0",
"json5": "^1.0.1"
}
},
"minimist": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
"dev": true
}
}
},
@ -4105,14 +4080,6 @@
"dev": true,
"requires": {
"minimist": "^1.2.0"
},
"dependencies": {
"minimist": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
"dev": true
}
}
},
"bluebird": {
@ -5176,12 +5143,6 @@
"json5": "^1.0.1"
}
},
"minimist": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
"dev": true
},
"schema-utils": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
@ -5432,12 +5393,6 @@
"emojis-list": "^3.0.0",
"json5": "^1.0.1"
}
},
"minimist": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
"dev": true
}
}
},
@ -7643,9 +7598,9 @@
"dev": true
},
"fuse.js": {
"version": "3.4.6",
"resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-3.4.6.tgz",
"integrity": "sha512-H6aJY4UpLFwxj1+5nAvufom5b2BT2v45P1MkPvdGIK8fWjQx/7o6tTT1+ALV0yawQvbmvCF0ufl2et8eJ7v7Cg=="
"version": "6.5.3",
"resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-6.5.3.tgz",
"integrity": "sha512-sA5etGE7yD/pOqivZRBvUBd/NaL2sjAu6QuSaFoe1H2BrJSkH/T/UXAJ8CdXdw7DvY3Hs8CXKYkDWX7RiP5KOg=="
},
"genfun": {
"version": "5.0.0",
@ -8940,14 +8895,6 @@
"dev": true,
"requires": {
"minimist": "^1.2.5"
},
"dependencies": {
"minimist": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
"dev": true
}
}
},
"jsonfile": {
@ -9263,12 +9210,20 @@
}
},
"karma-jasmine": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-2.0.1.tgz",
"integrity": "sha512-iuC0hmr9b+SNn1DaUD2QEYtUxkS1J+bSJSn7ejdEexs7P8EYvA1CWkEdrDQ+8jVH3AgWlCNwjYsT1chjcNW9lA==",
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-4.0.2.tgz",
"integrity": "sha512-ggi84RMNQffSDmWSyyt4zxzh2CQGwsxvYYsprgyR1j8ikzIduEdOlcLvXjZGwXG/0j41KUXOWsUCBfbEHPWP9g==",
"dev": true,
"requires": {
"jasmine-core": "^3.3"
"jasmine-core": "^3.6.0"
},
"dependencies": {
"jasmine-core": {
"version": "3.99.1",
"resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.99.1.tgz",
"integrity": "sha512-Hu1dmuoGcZ7AfyynN3LsfruwMbxMALMka+YtZeGoLuDEySVmVAPaonkNoBRIw/ectu8b9tVQCJNgp4a4knp+tg==",
"dev": true
}
}
},
"karma-jasmine-html-reporter": {
@ -9388,12 +9343,6 @@
"emojis-list": "^3.0.0",
"json5": "^1.0.1"
}
},
"minimist": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
"dev": true
}
}
},
@ -10008,12 +9957,6 @@
"json5": "^1.0.1"
}
},
"minimist": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
"dev": true
},
"normalize-url": {
"version": "1.9.1",
"resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz",
@ -10059,6 +10002,11 @@
"brace-expansion": "^1.1.7"
}
},
"minimist": {
"version": "1.2.6",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
"integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q=="
},
"minipass": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz",
@ -10167,13 +10115,6 @@
"integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
"requires": {
"minimist": "^1.2.5"
},
"dependencies": {
"minimist": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
}
}
},
"mobx": {
@ -10182,9 +10123,9 @@
"integrity": "sha1-5KlnnNr74hWyDjLvk6cDGEWz8a8="
},
"mobx-angular": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/mobx-angular/-/mobx-angular-2.2.0.tgz",
"integrity": "sha512-wQdRuKFWpjWSxUWon1dSBRw5VnuIkAGI3hBx1IgKxuMgQWUb08Et6h55utdgRmAua+xhaUUTD8dKuki1ezf/yA=="
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/mobx-angular/-/mobx-angular-3.1.1.tgz",
"integrity": "sha512-qP7pYjEG6OZox0ZSSbFvXgFo0mSV1KnrFcwkgd6+0e4CKkcHERMR00knEiiF61HuebFG/R1JfVUEzwPhigLucA=="
},
"moment": {
"version": "2.29.1",
@ -10726,11 +10667,6 @@
"is-wsl": "^2.1.0"
}
},
"opencollective-postinstall": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz",
"integrity": "sha512-pVOEP16TrAO2/fjej1IdOyupJY8KDUM1CvsaScRbw6oddvpQoOfGk4ywha0HKKVAD6RkW4x6Q+tNBwhf3Bgpuw=="
},
"opn": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz",
@ -11392,12 +11328,6 @@
"json5": "^1.0.1"
}
},
"minimist": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
"dev": true
},
"schema-utils": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
@ -11931,7 +11861,8 @@
},
"ansi-regex": {
"version": "5.0.0",
"resolved": "",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
"integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
"dev": true
},
"ansi-styles": {
@ -12061,12 +11992,6 @@
"p-locate": "^4.1.0"
}
},
"minimist": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
"dev": true
},
"p-locate": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
@ -12436,12 +12361,6 @@
"emojis-list": "^3.0.0",
"json5": "^1.0.1"
}
},
"minimist": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
"dev": true
}
}
},
@ -12863,12 +12782,6 @@
"emojis-list": "^3.0.0",
"json5": "^1.0.1"
}
},
"minimist": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
"dev": true
}
}
},
@ -13544,12 +13457,6 @@
"emojis-list": "^3.0.0",
"json5": "^1.0.1"
}
},
"minimist": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
"dev": true
}
}
},
@ -13972,12 +13879,6 @@
"emojis-list": "^3.0.0",
"json5": "^1.0.1"
}
},
"minimist": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
"dev": true
}
}
},
@ -14068,12 +13969,6 @@
"emojis-list": "^3.0.0",
"json5": "^1.0.1"
}
},
"minimist": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
"dev": true
}
}
},
@ -15246,12 +15141,6 @@
"readable-stream": "^2.0.1"
}
},
"minimist": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
"dev": true
},
"readable-stream": {
"version": "2.3.7",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
@ -15717,12 +15606,6 @@
"emojis-list": "^3.0.0",
"json5": "^1.0.1"
}
},
"minimist": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
"dev": true
}
}
},

Просмотреть файл

@ -7,7 +7,7 @@
"lint": "tslint ./src/**/*.ts -t verbose",
"start": "npm run import && ng serve",
"test": "ng test",
"build": "npm run import && ng build --prod=true",
"build": "npm run import && ng build --prod=true --outputPath=docs",
"e2e": "ng e2e",
"ng": "ng",
"import": "node utils/importer.js",
@ -29,8 +29,8 @@
"@angular/platform-browser": "~9.0.0",
"@angular/platform-browser-dynamic": "~9.0.0",
"@angular/router": "~9.0.0",
"@types/d3-sankey": "^0.11.0",
"angular-tree-component": "^8.3.0",
"@types/d3-sankey": "^0.11.2",
"angular-tree-component": "^8.5.6",
"color-convert": "^2.0.0",
"core-js": "^2.5.4",
"d3": "^5.9.2",
@ -38,10 +38,10 @@
"d3-sankey": "^0.12.1",
"d3-selection-multi": "^1.0.1",
"exceljs": "^1.11.0",
"fuse.js": "^3.4.5",
"fuse.js": "^6.5.3",
"mammoth": "^1.4.19",
"mobx": "4.1.0",
"mobx-angular": "^2.1.1",
"mobx-angular": "^3.1.1",
"moment": "^2.29.1",
"ngx-cookie-service": "^2.3.0",
"rxjs": "~6.5.4",
@ -54,14 +54,14 @@
"@angular/language-service": "~9.0.0",
"@types/jasmine": "~3.5.0",
"@types/jasminewd2": "~2.0.3",
"@types/node": "^12.11.1",
"@types/node": "^17.0.21",
"codelyzer": "^5.1.2",
"jasmine-core": "~3.5.0",
"jasmine-spec-reporter": "~4.2.1",
"karma": "^6.3.16",
"karma-chrome-launcher": "~3.1.0",
"karma-coverage-istanbul-reporter": "~2.1.0",
"karma-jasmine": "~2.0.1",
"karma-jasmine": "~4.0.2",
"karma-jasmine-html-reporter": "^1.4.2",
"lodash": "^4.17.21",
"protractor": "^7.0.0",

Просмотреть файл

@ -9,6 +9,7 @@ export class GraphFilter {
static Unmapped = 3;
static ChildrenUnmapped = 4;
static Filtered = 5;
static NoConnections = 6; // No connections visible, different than unmapped.
static visualTraits = [
{ color: 'unset', icon: '', alt: '' },
@ -17,6 +18,7 @@ export class GraphFilter {
{ color: '#ff6969', icon: 'error', alt: 'This node is not mapped.' },
{ color: '#ffc0cb', icon: 'warning', alt: 'This node has children that are not mapped.' },
{ color: '#ffff00', icon: 'done', alt: 'This node is selected in the filter.' },
{ color: '#f18f01', icon: 'error', alt: 'This node has no connections based on the active filter.' },
];
public static runFilter(tab: GraphTab) {

Просмотреть файл

@ -4,7 +4,7 @@
<mat-toolbar-row>
<span>{{title}}</span>
<span class="example-spacer"></span>
<button mat-button (click)="sidenav.toggle()"><mat-icon>menu</mat-icon><span class="visuallyhidden">Open/Close Menu</span></button>
<button mat-button (click)="sidenav.toggle()" class="dontprint"><mat-icon>menu</mat-icon><span class="visuallyhidden">Open/Close Menu</span></button>
</mat-toolbar-row>
</mat-toolbar>
<mat-sidenav-container hasBackdrop="true">

Просмотреть файл

@ -9,7 +9,7 @@
</div>-->
<div fxLayout="column" fxFlexFill>
<div fxLayout="row" fxLayoutGap="32px" fxLayoutAlign="flex-start" class="container">
<div fxFlex="0 0 300px" [class.hide-filter]="hideFilter">
<div fxFlex="0 0 300px" [class.hide-filter]="hideFilter" class="dontprint">
<mat-card class="graph-categories">
<div class="title-container">
<mat-card-title class="filter-title">Filter</mat-card-title>
@ -75,8 +75,8 @@
[class.node-content-wrapper-active]="node.isActive"
[class.node-content-wrapper-focused]="node.isFocused"
(click)="node.mouseAction('click', $event)"
[style.background-color]="node|getNodeColor:t.column" id="{{t.id + '.lbl.' + node.data.node.id}}" >
<div class="node-content-icon"><mat-icon class="node-content-icon" aria-hidden="false" title="{{node|getNodeIconAlt:t.column}}" attr.aria-label="{{node|getNodeIconAlt:t.column}}">{{node|getNodeIcon:t.column}}</mat-icon></div>
[style.background-color]="t.displayLinks|getNodeColor:t:node" id="{{t.id + '.lbl.' + node.data.node.id}}" >
<div class="node-content-icon"><mat-icon class="node-content-icon" aria-hidden="false" title="{{node|getNodeIconAlt:t}}" attr.aria-label="{{node|getNodeIconAlt:t}}">{{t.displayLinks|getNodeIcon:t:node}}</mat-icon></div>
<span [lang]="t.viewSettings.selectedLang">
<span *ngIf="!node.data.node.hyperlink" [innerHTML]="t.viewSettings|injectHighlightSection:node.data"></span>
<a *ngIf="node.data.node.hyperlink" (mousedown)="openTab(node.data.node.hyperlink)" class="fake-link" target="_blank" href="{{node.data.node.hyperlink}}" [innerHTML]="t.viewSettings|injectHighlightSection:node.data"></a>
@ -94,7 +94,7 @@
</div>
<div class="graph-columns" margin-right="0px">
<mat-card class="fill-graph">
<div class="settings-row">
<div class="settings-row dontprint">
<div class="settings-row" fxFlex="1 0 auto" fxLayout="row" fxFlexFill>
<span class="example-spacer"></span>
<div class="setting">
@ -139,9 +139,9 @@
[class.node-content-wrapper-active]="node.isActive"
[class.node-content-wrapper-focused]="node.isFocused"
(click)="node.mouseAction('click', $event)"
[style.background-color]="node|getNodeColor:t.column"
[style.background-color]="t.column.displayLinks|getNodeColor:t.column:node"
[attr.aria-expanded]="node.visibleChildren.length ? (node.isExpanded?'true':'false') : null">
<div class="node-content-icon"><mat-icon aria-hidden="false" title="{{node|getNodeIconAlt:t.column}}" attr.aria-label="{{node|getNodeIconAlt:t.column}}">{{node|getNodeIcon:t.column}}</mat-icon></div>
<div class="node-content-icon"><mat-icon aria-hidden="false" title="{{node|getNodeIconAlt:t.column}}" attr.aria-label="{{node|getNodeIconAlt:t.column}}">{{t.column.displayLinks|getNodeIcon:t.column:node}}</mat-icon></div>
<span [lang]="t.viewSettings.selectedLang">
<span *ngIf="!node.data.node.hyperlink">{{node|getSection:t.viewSettings}}</span>
<a *ngIf="node.data.node.hyperlink" (mousedown)="openTab(node.data.node.hyperlink)" class="fake-link" target="_blank" href="{{node.data.node.hyperlink}}">{{node|getSection:t.viewSettings}}</a>
@ -195,7 +195,7 @@
</div>
</mat-card>
</div>
<button mat-button class="filter-pin" [class.filter-hidden]="hideFilter" (click)="toggleShowFilter()"><mat-icon>push_pin</mat-icon><span class="visuallyhidden">Open/Close Filter</span></button>
<button mat-button class="filter-pin dontprint" [class.filter-hidden]="hideFilter" (click)="toggleShowFilter()"><mat-icon>push_pin</mat-icon><span class="visuallyhidden">Open/Close Filter</span></button>
<button mat-button class="error-icon" [class.error-hidden]="!graphService.anyErrors" (click)="dialogService.openDialog('errors')"><mat-icon>error</mat-icon><span class="visuallyhidden">Show Errors</span></button>
</div>
</div>

Просмотреть файл

@ -22,6 +22,14 @@ function getNodeStatus(tab: GraphTab, node: TreeNode)
// if we're a tree in the right side view, highlight active nodes
var status = GraphFilter.None;
if (tab.isAll && !tab.column) {
// We're on the right side all tab, We want dynamic connection coloring.
// Show red if there are no visible connections. This is different than how we
// normally show red if there are missing ISO connections.
var any = tab.displayLinks.filter(v => v.fromNode.id.startsWith(node.id)).length;
return any ? GraphFilter.None : GraphFilter.NoConnections;
}
if (tab.parent && node.data.filterColor)
{
if (!tab.isIso && node.data.isUnmapped)
@ -50,11 +58,7 @@ function getNodeStatus(tab: GraphTab, node: TreeNode)
}
function getNodeColor(tab: GraphTab, node: TreeNode)
{
var coloringOnAllTab = true; // at one point it was desired to turn this off.
if (!coloringOnAllTab && tab.isAll)
return "unset"; // skip coloring on ALL tab
{
var color = GraphFilter.visualTraits[getNodeStatus(tab, node)].color;
// if we're a tree in the right side view
@ -83,26 +87,40 @@ function getNodeIconAlt(tab: GraphTab, node: TreeNode)
return alt;
}
/*
* These pipes are "pure". They're only calculated once and the value is cached.
* The value is recalculated when the first parameter changes.
* We use the 'displayLinks' as the cache key so that when the display links change
* (in response to a filter or expansion operation), then we recalculate these pipes.
*
* The displayLinks cache key is unused in the actual computation of the pipe.
*/
@Pipe({ name: 'getNodeColor' })
export class getNodeColorPipe implements PipeTransform {
constructor() {
}
transform(node: TreeNode, tab: GraphTab): string {
transform(displayLinks: any, tab: GraphTab, node: TreeNode): string {
return getNodeColor(tab, node);
}
}
/*
* Same comment as above.
*/
@Pipe({ name: 'getNodeIcon' })
export class getNodeIconPipe implements PipeTransform {
constructor() {
}
transform(node: TreeNode, tab: GraphTab): string {
transform(displayLinks: any, tab: GraphTab, node: TreeNode): string {
return getNodeIcon(tab, node);
}
}
/*
* Same comment as above.
*/
@Pipe({ name: 'getNodeIconAlt' })
export class getNodeIconAltPipe implements PipeTransform {
constructor() {

Просмотреть файл

@ -26,3 +26,60 @@ body {
position: absolute;
width: 1px;
}
/*
Custom print style overrides.
In Chrome, you must use "Save as PDF" on the print dialog, not "Microsoft Print as PDF".
Microsoft Print as PDF has known issues https://stackoverflow.com/a/66017274
*/
@media print {
/* put this class on stuff that should not be printed */
.dontprint {
display: none !important;
}
body {
zoom: 60%; /* zoom to fit 3 columns across 1 page */
-webkit-print-color-adjust: exact; /* this is needed to reproduce background/font colors in the pdf */
}
/* disable all the vertical overflow/height locking from the graph */
.zoom-viewport {
height: unset !important;
}
.scroll-parent {
overflow-x: unset !important;
height: unset !important;
}
.mat-drawer-content {
position: unset !important;
height: unset !important;
padding: unset !important; /* this padding is redundant to page margin in a print */
}
.mat-drawer-container {
position: unset !important;
height: unset !important;
}
.graph-columns {
overflow: unset !important;
}
/*
These are attempts to fix the page cutting off text during "save as pdf".
None of them are effective yet for some reason.
.node-wrapper {
position: relative !important;
page-break-inside: avoid !important;
}
.node-content-wrapper {
position: relative !important;
page-break-inside: avoid !important;
display: inline-block !important;
}*/
}