]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/dashboard: Use htmllint 30998/head
authorTiago Melo <tmelo@suse.com>
Fri, 18 Oct 2019 16:23:53 +0000 (16:23 +0000)
committerTiago Melo <tmelo@suse.com>
Wed, 6 Nov 2019 12:37:58 +0000 (11:37 -0100)
This package will replace htmlhint.

Some rules from the previous installed packages were not working that well.
This new package has more rules and seems to work better.

Signed-off-by: Tiago Melo <tmelo@suse.com>
40 files changed:
src/pybind/mgr/dashboard/frontend/.htmllintrc [new file with mode: 0644]
src/pybind/mgr/dashboard/frontend/package-lock.json
src/pybind/mgr/dashboard/frontend/package.json
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/iscsi-target-form/iscsi-target-form.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/mirroring/image-list/image-list.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-configuration-form/rbd-configuration-form.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-configuration-list/rbd-configuration-list.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-details/rbd-details.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/cephfs/cephfs-directories/cephfs-directories.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/configuration/configuration.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/configuration/configuration.component.scss
src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/hosts/host-form/host-form.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/hosts/hosts.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/mgr-modules/mgr-module-details/mgr-module-details.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/monitor/monitor.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/osd/osd-list/osd-list.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/osd/osd-performance-histogram/osd-performance-histogram.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/osd/osd-performance-histogram/osd-performance-histogram.component.scss
src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/osd/osd-reweight-modal/osd-reweight-modal.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/osd/osd-smart-list/osd-smart-list.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/prometheus/alert-list/alert-list.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/prometheus/silence-form/silence-form.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/prometheus/silence-list/silence-list.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/nfs/nfs-501/nfs-501.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/nfs/nfs-form/nfs-form.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/performance-counter/table-performance-counter/table-performance-counter.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/pool/pool-list/pool-list.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-501/rgw-501.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-bucket-form/rgw-bucket-form.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-daemon-list/rgw-daemon-list.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-user-form/rgw-user-form.component.html
src/pybind/mgr/dashboard/frontend/src/app/core/auth/role-details/role-details.component.html
src/pybind/mgr/dashboard/frontend/src/app/core/auth/sso/sso-not-found/sso-not-found.component.html
src/pybind/mgr/dashboard/frontend/src/app/core/auth/user-form/user-form.component.html
src/pybind/mgr/dashboard/frontend/src/app/core/auth/user-password-form/user-password-form.component.html
src/pybind/mgr/dashboard/frontend/src/app/shared/components/alert-panel/alert-panel.component.html
src/pybind/mgr/dashboard/frontend/src/app/shared/components/language-selector/language-selector.component.html
src/pybind/mgr/dashboard/frontend/src/app/shared/components/select/select.component.html
src/pybind/mgr/dashboard/frontend/src/app/shared/components/sparkline/sparkline.component.html
src/pybind/mgr/dashboard/frontend/src/app/shared/datatable/table-actions/table-actions.component.html

diff --git a/src/pybind/mgr/dashboard/frontend/.htmllintrc b/src/pybind/mgr/dashboard/frontend/.htmllintrc
new file mode 100644 (file)
index 0000000..b06d7e7
--- /dev/null
@@ -0,0 +1,70 @@
+{
+    "plugins": [],  // npm modules to load
+
+    "maxerr": false,
+    "raw-ignore-regex": false,
+    "attr-bans": [
+        "align",
+        "background",
+        "bgcolor",
+        "border",
+        "longdesc",
+        "marginwidth",
+        "marginheight",
+        "style",
+        "width"
+    ],
+    "indent-delta": false,
+    "indent-style": "spaces",
+    "indent-width": 2,
+    "indent-width-cont": true,
+    "spec-char-escape": false,
+    "text-ignore-regex": false,
+    "tag-bans": [
+        "style"
+    ],
+    "tag-close": true,
+    "tag-name-lowercase": true,
+    "tag-name-match": true,
+    "tag-self-close": false,
+    "doctype-first": false,
+    "doctype-html5": false,
+    "attr-name-style": false,
+    "attr-name-ignore-regex": false,
+    "attr-no-dup": true,
+    "attr-no-unsafe-char": true,
+    "attr-order": false,
+    "attr-quote-style": "double",
+    "attr-req-value": false,
+    "attr-new-line": 1,
+    "attr-validate": true,
+    "id-no-dup": false,
+    "id-class-no-ad": true,
+    "id-class-style": false,
+    "class-no-dup": true,
+    "class-style": "none",
+    "id-class-ignore-regex": "{{.*?}}",
+    "img-req-alt": false,
+    "img-req-src": true,
+    "html-valid-content-model": true,
+    "head-valid-content-model": true,
+    "href-style": false,
+    "link-req-noopener": false,
+    "label-req-for": false,
+    "line-end-style": "lf",
+    "line-no-trailing-whitespace": true,
+    "line-max-len": false,
+    "line-max-len-ignore-regex": false,
+    "head-req-title": true,
+    "title-no-dup": true,
+    "title-max-len": 60,
+    "html-req-lang": false,
+    "lang-style": "case",
+    "fig-req-figcaption": false,
+    "focusable-tabindex-style": false,
+    "input-radio-req-name": false,
+    "input-req-label": false,
+    "table-req-caption": false,
+    "table-req-header": false,
+    "tag-req-attr": false
+}
index 5a0932f6505c9339a0d3e249fae3e91ec8cbf069..2d04e0e4d882fcc2774b38c449a332d1c9926a3b 100644 (file)
       "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=",
       "dev": true
     },
+    "array-each": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz",
+      "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=",
+      "dev": true
+    },
     "array-equal": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz",
       "integrity": "sha1-z+nYwmYoudxa7MYqn12PHzUsEZU=",
       "dev": true
     },
+    "array-slice": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz",
+      "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==",
+      "dev": true
+    },
     "array-union": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
       "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=",
       "dev": true
     },
+    "bulk-require": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/bulk-require/-/bulk-require-1.0.1.tgz",
+      "integrity": "sha1-yz0DnmmBOaRE/FdLJh1rOyz0TIk=",
+      "dev": true,
+      "requires": {
+        "glob": "^7.1.1"
+      }
+    },
     "bytes": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
       "integrity": "sha512-4ivwqHpIFJZBuhN3g/pEcdbnGUywkBblloGbkglyloVjjR3uT6tieI89MVOfbP2tHX5sgb01FuLgAOzebNlJNQ==",
       "dev": true
     },
+    "cjson": {
+      "version": "0.5.0",
+      "resolved": "https://registry.npmjs.org/cjson/-/cjson-0.5.0.tgz",
+      "integrity": "sha1-oPSGAeAWFk37LG2JHjgMlsramDk=",
+      "dev": true,
+      "requires": {
+        "json-parse-helpfulerror": "^1.0.3"
+      }
+    },
     "class-utils": {
       "version": "0.3.6",
       "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
         }
       }
     },
-    "cli": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/cli/-/cli-1.0.1.tgz",
-      "integrity": "sha1-IoF1NPJL+klQw01TLUjsvGIbjBQ=",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "exit": "0.1.2",
-        "glob": "^7.1.1"
-      }
-    },
     "cli-cursor": {
       "version": "3.1.0",
       "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
       "integrity": "sha1-9AIvyPlwDGgCnVQghK+69CWj8+M=",
       "dev": true
     },
-    "csslint": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/csslint/-/csslint-1.0.5.tgz",
-      "integrity": "sha1-Gcw+2jIhYP0/cjKvHLKjYOiYouk=",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "clone": "~2.1.0",
-        "parserlib": "~1.1.1"
-      }
-    },
     "cssom": {
       "version": "0.3.8",
       "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz",
       "resolved": "https://registry.npmjs.org/detect-browser/-/detect-browser-4.7.0.tgz",
       "integrity": "sha512-x+7zkRxwEiQ8qLKKfln9pTa4n87fbPHVpHyImmpEQn5lAmKurWBVbg0tb99ruAHqSA0ejrXMp0MahKEulE7LqA=="
     },
+    "detect-file": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz",
+      "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=",
+      "dev": true
+    },
     "detect-indent": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz",
         }
       }
     },
+    "expand-tilde": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
+      "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=",
+      "dev": true,
+      "requires": {
+        "homedir-polyfill": "^1.0.1"
+      }
+    },
     "expect": {
       "version": "24.9.0",
       "resolved": "https://registry.npmjs.org/expect/-/expect-24.9.0.tgz",
       "integrity": "sha1-WKRmaX34piBc39vzlVNri9d3pfY=",
       "dev": true
     },
+    "findup-sync": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz",
+      "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=",
+      "dev": true,
+      "requires": {
+        "detect-file": "^1.0.0",
+        "is-glob": "^3.1.0",
+        "micromatch": "^3.0.4",
+        "resolve-dir": "^1.0.1"
+      },
+      "dependencies": {
+        "is-glob": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+          "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+          "dev": true,
+          "requires": {
+            "is-extglob": "^2.1.0"
+          }
+        }
+      }
+    },
+    "fined": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz",
+      "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==",
+      "dev": true,
+      "requires": {
+        "expand-tilde": "^2.0.2",
+        "is-plain-object": "^2.0.3",
+        "object.defaults": "^1.1.0",
+        "object.pick": "^1.2.0",
+        "parse-filepath": "^1.0.1"
+      }
+    },
+    "flagged-respawn": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz",
+      "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==",
+      "dev": true
+    },
     "flush-write-stream": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz",
       "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
       "dev": true
     },
+    "for-own": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz",
+      "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=",
+      "dev": true,
+      "requires": {
+        "for-in": "^1.0.1"
+      }
+    },
     "foreach": {
       "version": "2.0.5",
       "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz",
         "path-is-absolute": "^1.0.0"
       }
     },
-    "glob-base": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz",
-      "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
-      "dev": true,
-      "requires": {
-        "glob-parent": "^2.0.0",
-        "is-glob": "^2.0.0"
-      },
-      "dependencies": {
-        "glob-parent": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz",
-          "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
-          "dev": true,
-          "requires": {
-            "is-glob": "^2.0.0"
-          }
-        },
-        "is-extglob": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
-          "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
-          "dev": true
-        },
-        "is-glob": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
-          "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
-          "dev": true,
-          "requires": {
-            "is-extglob": "^1.0.0"
-          }
-        }
-      }
-    },
     "glob-parent": {
       "version": "3.1.0",
       "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
       "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=",
       "dev": true
     },
+    "global-modules": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz",
+      "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==",
+      "dev": true,
+      "requires": {
+        "global-prefix": "^1.0.1",
+        "is-windows": "^1.0.1",
+        "resolve-dir": "^1.0.0"
+      }
+    },
+    "global-prefix": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz",
+      "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=",
+      "dev": true,
+      "requires": {
+        "expand-tilde": "^2.0.2",
+        "homedir-polyfill": "^1.0.1",
+        "ini": "^1.3.4",
+        "is-windows": "^1.0.1",
+        "which": "^1.2.14"
+      }
+    },
     "globals": {
       "version": "11.12.0",
       "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
         "minimalistic-crypto-utils": "^1.0.1"
       }
     },
+    "homedir-polyfill": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz",
+      "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==",
+      "dev": true,
+      "requires": {
+        "parse-passwd": "^1.0.0"
+      }
+    },
     "hosted-git-info": {
       "version": "2.8.4",
       "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.4.tgz",
         "glob": "^7.1.2"
       }
     },
-    "htmlhint": {
-      "version": "0.11.0",
-      "resolved": "https://registry.npmjs.org/htmlhint/-/htmlhint-0.11.0.tgz",
-      "integrity": "sha512-uXuRyVhQa0HlNmZg5LJ1BRJvRq5f7IJL/34tItHhZr9re15pwaqAuLUAIcqtwd1bLUCE++7HVPtR+NSReFW0iA==",
-      "dev": true,
-      "requires": {
-        "async": "2.6.1",
-        "colors": "1.3.2",
-        "commander": "2.17.1",
-        "csslint": "^1.0.5",
-        "glob": "7.1.3",
-        "jshint": "^2.9.6",
-        "parse-glob": "3.0.4",
-        "path-parse": "1.0.6",
-        "request": "2.88.0",
-        "strip-json-comments": "2.0.1",
-        "xml": "1.0.1"
+    "htmllint-cli": {
+      "version": "0.0.7",
+      "resolved": "https://registry.npmjs.org/htmllint-cli/-/htmllint-cli-0.0.7.tgz",
+      "integrity": "sha1-E0yKPZOaLuArQL0FTUv43tAHNYY=",
+      "dev": true,
+      "requires": {
+        "bluebird": "^3.5.1",
+        "chalk": "^2.4.0",
+        "cjson": "^0.5.0",
+        "glob": "^7.1.2",
+        "htmllint": "^0.7.2",
+        "liftoff": "^2.5.0",
+        "semver": "^5.5.0",
+        "yargs": "^11.0.0"
       },
       "dependencies": {
-        "async": {
-          "version": "2.6.1",
-          "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz",
-          "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==",
+        "ansi-regex": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+          "dev": true
+        },
+        "cliui": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
+          "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
           "dev": true,
           "requires": {
-            "lodash": "^4.17.10"
+            "string-width": "^2.1.1",
+            "strip-ansi": "^4.0.0",
+            "wrap-ansi": "^2.0.0"
           }
         },
-        "colors": {
-          "version": "1.3.2",
-          "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.2.tgz",
-          "integrity": "sha512-rhP0JSBGYvpcNQj4s5AdShMeE5ahMop96cTeDl/v9qQQm2fYClE2QXZRi8wLzc+GmXSxdIqqbOIAhyObEXDbfQ==",
+        "cross-spawn": {
+          "version": "6.0.5",
+          "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+          "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+          "dev": true,
+          "requires": {
+            "nice-try": "^1.0.4",
+            "path-key": "^2.0.1",
+            "semver": "^5.5.0",
+            "shebang-command": "^1.2.0",
+            "which": "^1.2.9"
+          }
+        },
+        "execa": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
+          "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
+          "dev": true,
+          "requires": {
+            "cross-spawn": "^6.0.0",
+            "get-stream": "^4.0.0",
+            "is-stream": "^1.1.0",
+            "npm-run-path": "^2.0.0",
+            "p-finally": "^1.0.0",
+            "signal-exit": "^3.0.0",
+            "strip-eof": "^1.0.0"
+          }
+        },
+        "get-stream": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
+          "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+          "dev": true,
+          "requires": {
+            "pump": "^3.0.0"
+          }
+        },
+        "htmllint": {
+          "version": "0.7.3",
+          "resolved": "https://registry.npmjs.org/htmllint/-/htmllint-0.7.3.tgz",
+          "integrity": "sha512-h8wfCu0CC0FVo18Jkygv7xqj0fa23Xlv4QsR2n34LDr8eqpf4glfbNg1HTbiCqpT3ONioMOfk8EkFUbZgrO1KA==",
+          "dev": true,
+          "requires": {
+            "bulk-require": "^1.0.1",
+            "htmlparser2": "^3.10.0",
+            "lodash": "^4.17.11",
+            "promise": "^8.0.2"
+          }
+        },
+        "invert-kv": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
+          "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==",
+          "dev": true
+        },
+        "lcid": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
+          "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
+          "dev": true,
+          "requires": {
+            "invert-kv": "^2.0.0"
+          }
+        },
+        "mem": {
+          "version": "4.3.0",
+          "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz",
+          "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==",
+          "dev": true,
+          "requires": {
+            "map-age-cleaner": "^0.1.1",
+            "mimic-fn": "^2.0.0",
+            "p-is-promise": "^2.0.0"
+          }
+        },
+        "mimic-fn": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+          "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
           "dev": true
         },
-        "commander": {
-          "version": "2.17.1",
-          "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz",
-          "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==",
+        "os-locale": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz",
+          "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==",
+          "dev": true,
+          "requires": {
+            "execa": "^1.0.0",
+            "lcid": "^2.0.0",
+            "mem": "^4.0.0"
+          }
+        },
+        "promise": {
+          "version": "8.0.3",
+          "resolved": "https://registry.npmjs.org/promise/-/promise-8.0.3.tgz",
+          "integrity": "sha512-HeRDUL1RJiLhyA0/grn+PTShlBAcLuh/1BJGtrvjwbvRDCTLLMEz9rOGCV+R3vHY4MixIuoMEd9Yq/XvsTPcjw==",
+          "dev": true,
+          "requires": {
+            "asap": "~2.0.6"
+          }
+        },
+        "semver": {
+          "version": "5.7.1",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+          "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
           "dev": true
         },
-        "glob": {
-          "version": "7.1.3",
-          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
-          "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
+        "strip-ansi": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+          "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
           "dev": true,
           "requires": {
-            "fs.realpath": "^1.0.0",
-            "inflight": "^1.0.4",
-            "inherits": "2",
-            "minimatch": "^3.0.4",
-            "once": "^1.3.0",
-            "path-is-absolute": "^1.0.0"
+            "ansi-regex": "^3.0.0"
+          }
+        },
+        "yargs": {
+          "version": "11.1.1",
+          "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.1.tgz",
+          "integrity": "sha512-PRU7gJrJaXv3q3yQZ/+/X6KBswZiaQ+zOmdprZcouPYtQgvNU35i+68M4b1ZHLZtYFT5QObFLV+ZkmJYcwKdiw==",
+          "dev": true,
+          "requires": {
+            "cliui": "^4.0.0",
+            "decamelize": "^1.1.1",
+            "find-up": "^2.1.0",
+            "get-caller-file": "^1.0.1",
+            "os-locale": "^3.1.0",
+            "require-directory": "^2.1.1",
+            "require-main-filename": "^1.0.1",
+            "set-blocking": "^2.0.0",
+            "string-width": "^2.0.0",
+            "which-module": "^2.0.0",
+            "y18n": "^3.2.1",
+            "yargs-parser": "^9.0.2"
+          }
+        },
+        "yargs-parser": {
+          "version": "9.0.2",
+          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz",
+          "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=",
+          "dev": true,
+          "requires": {
+            "camelcase": "^4.1.0"
           }
         }
       }
       "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=",
       "dev": true
     },
-    "is-dotfile": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz",
-      "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=",
-      "dev": true
-    },
     "is-extendable": {
       "version": "0.1.1",
       "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
         }
       }
     },
+    "jju": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz",
+      "integrity": "sha1-o6vicYryQaKykE+EpiWXDzia4yo=",
+      "dev": true
+    },
     "js-levenshtein": {
       "version": "1.1.6",
       "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz",
       "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
       "dev": true
     },
-    "jshint": {
-      "version": "2.10.2",
-      "resolved": "https://registry.npmjs.org/jshint/-/jshint-2.10.2.tgz",
-      "integrity": "sha512-e7KZgCSXMJxznE/4WULzybCMNXNAd/bf5TSrvVEq78Q/K8ZwFpmBqQeDtNiHc3l49nV4E/+YeHU/JZjSUIrLAA==",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "cli": "~1.0.0",
-        "console-browserify": "1.1.x",
-        "exit": "0.1.x",
-        "htmlparser2": "3.8.x",
-        "lodash": "~4.17.11",
-        "minimatch": "~3.0.2",
-        "shelljs": "0.3.x",
-        "strip-json-comments": "1.0.x"
-      },
-      "dependencies": {
-        "domhandler": {
-          "version": "2.3.0",
-          "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz",
-          "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "domelementtype": "1"
-          }
-        },
-        "entities": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz",
-          "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=",
-          "dev": true,
-          "optional": true
-        },
-        "htmlparser2": {
-          "version": "3.8.3",
-          "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz",
-          "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "domelementtype": "1",
-            "domhandler": "2.3",
-            "domutils": "1.5",
-            "entities": "1.0",
-            "readable-stream": "1.1"
-          }
-        },
-        "isarray": {
-          "version": "0.0.1",
-          "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
-          "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
-          "dev": true,
-          "optional": true
-        },
-        "readable-stream": {
-          "version": "1.1.14",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
-          "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "core-util-is": "~1.0.0",
-            "inherits": "~2.0.1",
-            "isarray": "0.0.1",
-            "string_decoder": "~0.10.x"
-          }
-        },
-        "string_decoder": {
-          "version": "0.10.31",
-          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
-          "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
-          "dev": true,
-          "optional": true
-        },
-        "strip-json-comments": {
-          "version": "1.0.4",
-          "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz",
-          "integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=",
-          "dev": true,
-          "optional": true
-        }
-      }
-    },
     "json-parse-better-errors": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
       "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
       "dev": true
     },
+    "json-parse-helpfulerror": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/json-parse-helpfulerror/-/json-parse-helpfulerror-1.0.3.tgz",
+      "integrity": "sha1-E/FM4C7tTpgSl7ZOueO5MuLdE9w=",
+      "dev": true,
+      "requires": {
+        "jju": "^1.1.0"
+      }
+    },
     "json-schema": {
       "version": "0.2.3",
       "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
         "immediate": "~3.0.5"
       }
     },
+    "liftoff": {
+      "version": "2.5.0",
+      "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.5.0.tgz",
+      "integrity": "sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=",
+      "dev": true,
+      "requires": {
+        "extend": "^3.0.0",
+        "findup-sync": "^2.0.0",
+        "fined": "^1.0.1",
+        "flagged-respawn": "^1.0.0",
+        "is-plain-object": "^2.0.4",
+        "object.map": "^1.0.0",
+        "rechoir": "^0.6.2",
+        "resolve": "^1.1.7"
+      }
+    },
     "linebreak": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/linebreak/-/linebreak-1.0.2.tgz",
         }
       }
     },
+    "make-iterator": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz",
+      "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==",
+      "dev": true,
+      "requires": {
+        "kind-of": "^6.0.2"
+      }
+    },
     "makeerror": {
       "version": "1.0.11",
       "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz",
         "object-keys": "^1.0.11"
       }
     },
+    "object.defaults": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz",
+      "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=",
+      "dev": true,
+      "requires": {
+        "array-each": "^1.0.1",
+        "array-slice": "^1.0.0",
+        "for-own": "^1.0.0",
+        "isobject": "^3.0.0"
+      }
+    },
     "object.getownpropertydescriptors": {
       "version": "2.0.3",
       "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz",
         "es-abstract": "^1.5.1"
       }
     },
+    "object.map": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz",
+      "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=",
+      "dev": true,
+      "requires": {
+        "for-own": "^1.0.0",
+        "make-iterator": "^1.0.0"
+      }
+    },
     "object.pick": {
       "version": "1.3.0",
       "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
         "color-convert": "~0.5.0"
       }
     },
-    "parse-glob": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz",
-      "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
+    "parse-filepath": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz",
+      "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=",
       "dev": true,
       "requires": {
-        "glob-base": "^0.3.0",
-        "is-dotfile": "^1.0.0",
-        "is-extglob": "^1.0.0",
-        "is-glob": "^2.0.0"
-      },
-      "dependencies": {
-        "is-extglob": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
-          "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
-          "dev": true
-        },
-        "is-glob": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
-          "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
-          "dev": true,
-          "requires": {
-            "is-extglob": "^1.0.0"
-          }
-        }
+        "is-absolute": "^1.0.0",
+        "map-cache": "^0.2.0",
+        "path-root": "^0.1.1"
       }
     },
     "parse-json": {
       "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==",
       "dev": true
     },
+    "parse-passwd": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
+      "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=",
+      "dev": true
+    },
     "parse5": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz",
       "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==",
       "dev": true
     },
-    "parserlib": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/parserlib/-/parserlib-1.1.1.tgz",
-      "integrity": "sha1-pkz6ckBiQ0/fw1HJpOwtkrlMBvQ=",
-      "dev": true,
-      "optional": true
-    },
     "parseurl": {
       "version": "1.3.3",
       "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
       "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
       "dev": true
     },
+    "path-root": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz",
+      "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=",
+      "dev": true,
+      "requires": {
+        "path-root-regex": "^0.1.0"
+      }
+    },
+    "path-root-regex": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz",
+      "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=",
+      "dev": true
+    },
     "path-to-regexp": {
       "version": "0.1.7",
       "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
         "util.promisify": "^1.0.0"
       }
     },
+    "rechoir": {
+      "version": "0.6.2",
+      "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
+      "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=",
+      "dev": true,
+      "requires": {
+        "resolve": "^1.1.6"
+      }
+    },
     "reflect-metadata": {
       "version": "0.1.13",
       "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz",
         "resolve-from": "^3.0.0"
       }
     },
+    "resolve-dir": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz",
+      "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=",
+      "dev": true,
+      "requires": {
+        "expand-tilde": "^2.0.0",
+        "global-modules": "^1.0.0"
+      }
+    },
     "resolve-from": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
       "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==",
       "dev": true
     },
-    "shelljs": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz",
-      "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=",
-      "dev": true,
-      "optional": true
-    },
     "shellwords": {
       "version": "0.1.1",
       "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz",
       "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
       "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8="
     },
-    "strip-json-comments": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
-      "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
-      "dev": true
-    },
     "style-loader": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.0.0.tgz",
         "xml-js": "1.6.11"
       }
     },
-    "xml": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz",
-      "integrity": "sha1-eLpyAgApxbyHuKgaPPzXS0ovweU=",
-      "dev": true
-    },
     "xml-js": {
       "version": "1.6.11",
       "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz",
index 6560a25c7f30a297356eb6ebeaff917368028d16..3b5d262ffe8f8a88509f0d7554f89915e2709a2c 100644 (file)
     "e2e:update": "npx webdriver-manager update --gecko=false --versions.chrome=$(google-chrome --version | awk '{ print $3 }')",
     "lint:tslint": "ng lint",
     "lint:prettier": "prettier --list-different \"{src,e2e}/**/*.{ts,scss}\"",
-    "lint:html": "html-linter --config html-linter.config.json",
-    "lint:htmlhint": "htmlhint -r tag-pair src/app",
+    "lint:html": "htmllint src/app/**/*.html && html-linter --config html-linter.config.json",
     "lint:tsc": "npm run test:config && tsc -p src/tsconfig.app.json --noEmit --noUnusedLocals --noUnusedParameters && tsc -p src/tsconfig.spec.json --noEmit --noUnusedLocals --noUnusedParameters && tsc -p e2e/tsconfig.e2e.json --noEmit --noUnusedLocals --noUnusedParameters",
-    "lint": "npm run lint:tsc && npm run lint:tslint && npm run lint:prettier && npm run lint:html && npm run lint:htmlhint",
+    "lint": "npm run lint:tsc && npm run lint:tslint && npm run lint:prettier && npm run lint:html",
     "fix:prettier": "prettier --write \"{src,e2e}/**/*.{ts,scss}\"",
     "fix:tslint": "npm run lint:tslint -- --fix",
     "fixmod": "pretty-quick --pattern \"{src,e2e}/**/*.{ts,scss}\" --branch HEAD",
     "@types/node": "12.7.8",
     "codelyzer": "5.1.2",
     "html-linter": "1.1.1",
-    "htmlhint": "0.11.0",
+    "htmllint-cli": "0.0.7",
     "jasmine-core": "3.5.0",
     "jasmine-spec-reporter": "4.2.1",
     "jest": "24.9.0",
index c3be8b02a64ce04004c55d865f4927c48edab324..c66ea2018a77cc60a727c3543ad235b753c57c76 100644 (file)
         </div>
 
         <!-- Target level authentication was introduced in ceph-iscsi config v11 -->
-        <div formGroupName="auth" *ngIf="cephIscsiConfigVersion > 10 && !targetForm.getValue('acl_enabled')">
+        <div formGroupName="auth"
+             *ngIf="cephIscsiConfigVersion > 10 && !targetForm.getValue('acl_enabled')">
 
           <!-- Target user -->
           <div class="form-group row">
index 41be217998cae83e7877bf1ff26470a4967931e0..d3d862fd86fc8c7fd12f2766b6af4e60efcc3e48 100644 (file)
@@ -35,7 +35,8 @@
 </ng-template>
 
 <ng-template #syncTmpl>
-  <span class="badge badge-info" i18n>Syncing</span>
+  <span class="badge badge-info"
+        i18n>Syncing</span>
 </ng-template>
 
 <ng-template #progressTmpl
@@ -44,4 +45,3 @@
                [value]="value">
   </progressbar>
 </ng-template>
-
index b79f30947f6fa6aa7154ead5ea4817248378c4b5..c2905342230a1af675cf1253e6761c50bcfd6105 100644 (file)
@@ -6,7 +6,10 @@
        class="col-12">
     <h3 class="cd-header">
       <span (click)="toggleSectionVisibility(section.class)"
-        class="collapsible">{{ section.heading }} <i [ngClass]="!sectionVisibility[section.class] ? icons.addCircle : icons.minusCircle" aria-hidden="true"></i></span>
+            class="collapsible">
+        {{ section.heading }} <i [ngClass]="!sectionVisibility[section.class] ? icons.addCircle : icons.minusCircle"
+                                 aria-hidden="true"></i>
+      </span>
     </h3>
     <div class="{{ section.class }}"
          [hidden]="!sectionVisibility[section.class]">
index 12d61d86e558e681800110624a508e67b6ddf045..87ca55c20fbe25f79c5e3f01768686689fb26472 100644 (file)
@@ -1,8 +1,7 @@
-<cd-table
-  #poolConfTable
-  [data]="data"
-  [columns]="poolConfigurationColumns"
-  identifier="name">
+<cd-table #poolConfTable
+          [data]="data"
+          [columns]="poolConfigurationColumns"
+          identifier="name">
 </cd-table>
 
 <ng-template #configurationSourceTpl
@@ -10,9 +9,12 @@
              let-value="value">
 
   <div [ngSwitch]="value">
-    <span *ngSwitchCase="'global'" i18n>{{ value | titlecase }}</span>
-    <strong *ngSwitchCase="'image'" i18n>{{ value | titlecase }}</strong>
-    <strong *ngSwitchCase="'pool'" i18n>{{ value | titlecase }}</strong>
+    <span *ngSwitchCase="'global'"
+          i18n>{{ value | titlecase }}</span>
+    <strong *ngSwitchCase="'image'"
+            i18n>{{ value | titlecase }}</strong>
+    <strong *ngSwitchCase="'pool'"
+            i18n>{{ value | titlecase }}</strong>
   </div>
 </ng-template>
 
index fa42aa8edb5f7f3203d05e37215d16ff6e3d1eb5..aeed1654a9578f32479ec2fca8216b65b9749ee0 100644 (file)
   let-row="row"
   let-value="value">
   <ng-container *ngIf="+value; else global">
-    <strong i18n i18n-tooltip tooltip="This setting overrides the global value">Image</strong>
+    <strong i18n
+            i18n-tooltip
+            tooltip="This setting overrides the global value">Image</strong>
   </ng-container>
-  <ng-template #global><span i18n i18n-tooltip tooltip="This is the global value. No value for this option has been set for this image.">Global</span></ng-template>
+  <ng-template #global>
+    <span i18n
+          i18n-tooltip
+          tooltip="This is the global value. No value for this option has been set for this image.">Global</span>
+  </ng-template>
 </ng-template>
 
index a8acd26c51c27801013adcad136634ee15f1b1f5..e5954761dc35c4a263ff6048b67bdd9a7895571e 100644 (file)
@@ -37,5 +37,6 @@
 <ng-template #origin
              let-row="row"
              let-value="value">
-  <span class="quota-origin" (click)="selectOrigin(value)">{{value}}</span>
+  <span class="quota-origin"
+        (click)="selectOrigin(value)">{{value}}</span>
 </ng-template>
index d01ebcdefe9569c397dbd6e217ddab53059c70ab..36e65bd619bbb62c9bffe2355637a00c380ee02d 100644 (file)
@@ -26,8 +26,7 @@
               (click)="resetFilter()">
         <span [ngClass]="[icons.stack]">
           <i [ngClass]="[icons.filter, icons.stack2x]"></i>
-          <i [ngClass]="[icons.destroy, icons.stack1x]"
-             style="margin-left: 8px; margin-top: 5px;"></i>
+          <i [ngClass]="[icons.destroy, icons.stack1x]"></i>
         </span>
       </button>
     </div>
index 8fcf2fe99e09f77d9fba171a4bfb470dec6ee371..edf636b28503c34bc205720c91fe7322a2c716fb 100644 (file)
@@ -4,6 +4,11 @@
 
 .fa-stack {
   font-size: 0.79rem;
+
+  .fa-stack-1x {
+    margin-left: 8px;
+    margin-top: 5px;
+  }
 }
 
 ::ng-deep datatable-body-cell.wrap {
index f4ecf6477af1bdc1660b88c7b9a9cb1625988144..ab63cc90b51388fc19a8c7a05676ab2594f1b6b0 100644 (file)
@@ -15,7 +15,8 @@
                           [tableActions]="tableActions">
         </cd-table-actions>
       </div>
-      <ng-template #servicesTpl let-value="value">
+      <ng-template #servicesTpl
+                   let-value="value">
         <span *ngFor="let service of value; last as isLast">
           <a class="service-link"
              [routerLink]="[service.cdLink]"
index f1a54892a600c4381552ab4686a82e81a1558206..7913fd40745178057c5bb74def36bef117199e9f 100644 (file)
@@ -1,5 +1,6 @@
 <tabset *ngIf="selection.hasSingleSelection">
-  <tab i18n-heading heading="Details">
+  <tab i18n-heading
+       heading="Details">
     <cd-table-key-value [data]="module_config">
     </cd-table-key-value>
   </tab>
index 531fa3a46da2b725e82ae4baf7c18a2c931889cc..70d8dc5befe97419abc364eb723212694e9901ac 100644 (file)
@@ -1,7 +1,8 @@
 <div class="row">
   <div class="col-lg-4">
     <fieldset>
-      <legend class="cd-header" i18n>Status</legend>
+      <legend class="cd-header"
+              i18n>Status</legend>
       <table class="table table-striped"
              *ngIf="mon_status">
         <tr>
index 1bada27a7252f92d8ed874d275e1767230ec4ba7..2d5d8c426d7c8964d131eca7bd0128cf9300f566 100644 (file)
@@ -68,7 +68,8 @@
              let-actionDescription="actionDescription">
   <div *ngIf="!safeToDestroyResult['is_safe_to_destroy']"
        class="danger">
-    <cd-alert-panel type="warning" i18n>The {selection.hasSingleSelection, select, 1 {OSD is} 0 {OSDs are}} not safe to destroy!</cd-alert-panel>
+    <cd-alert-panel type="warning"
+                    i18n>The {selection.hasSingleSelection, select, 1 {OSD is} 0 {OSDs are}} not safe to destroy!</cd-alert-panel>
   </div>
   <ng-container i18n><strong>OSD {{ getSelectedOsdIds() | list }}</strong> will be
 <strong>{{ actionDescription }}</strong> if you proceed.</ng-container>
index 080f121f3bf5ac96821743378b643ac63c0c50ee..091cb47f516948d8ed07e3aa6f2d7ee63df0725d 100644 (file)
@@ -1,8 +1,6 @@
 <table>
-  <tr style="height: 10px;"
-      *ngFor="let row of valuesStyle">
-    <td style="width: 10px; height: 10px;"
-        *ngFor="let col of row"
+  <tr *ngFor="let row of valuesStyle">
+    <td *ngFor="let col of row"
         [ngStyle]="col">
     </td>
   </tr>
index ecdbc5c012d2ecefa606ccff81c45af2ce1ded12..7760dd09680caddf7ed04f99d4a304e929376cb5 100644 (file)
@@ -6,10 +6,16 @@
     <form [formGroup]="reweightForm">
       <div class="modal-body">
         <div class="row">
-          <label for="weight" class="col-sm-2 col-form-label">Weight</label>
+          <label for="weight"
+                 class="col-sm-2 col-form-label">Weight</label>
           <div class="col-sm-10">
-            <input id="weight" class="form-control" type="number"
-                   step="0.1" formControlName="weight" min="0" max="1"
+            <input id="weight"
+                   class="form-control"
+                   type="number"
+                   step="0.1"
+                   formControlName="weight"
+                   min="0"
+                   max="1"
                    [value]="currentWeight">
             <span class="invalid-feedback"
                   *ngIf="weight.errors">
index 31a7bb8374c8ba37957d8a8b670db10afd01b650..588eb0fbd92aca6b338a31a7f87f762305b57365 100644 (file)
@@ -1,6 +1,7 @@
 <ng-container *ngIf="!loading; else isLoading">
   <ng-container *ngIf="incompatible; else isCompatible">
-    <cd-alert-panel type="warning" i18n>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</cd-alert-panel>
+    <cd-alert-panel type="warning"
+                    i18n>The data received has the JSON format version 2.x and is currently incompatible with the dashboard.</cd-alert-panel>
   </ng-container>
   <ng-template #isCompatible>
     <tabset *ngFor="let device of data | keyvalue">
index 98de28431a99fb8b2bee4708e97c7cbd4a75d2f4..59c409d12416f84cf39ed67815b1c6e8faae1d93 100644 (file)
@@ -12,7 +12,8 @@
                     [selection]="selection"
                     [tableActions]="tableActions">
   </cd-table-actions>
-  <tabset cdTableDetail *ngIf="selection.hasSingleSelection">
+  <tabset cdTableDetail
+          *ngIf="selection.hasSingleSelection">
     <tab i18n-heading
          heading="Details">
       <cd-table-key-value [renderObjects]="true"
@@ -29,5 +30,6 @@
 <ng-template #externalLinkTpl
              let-row="row"
              let-value="value">
-  <a [href]="value" target="_blank"><i [ngClass]="[icons.lineChart]"></i> Source</a>
+  <a [href]="value"
+     target="_blank"><i [ngClass]="[icons.lineChart]"></i> Source</a>
 </ng-template>
index e48f2bbef5b7f8bf65305e59e3bcdf993bdf80ea..52dac6807d21362988938084cdcbc60be6a67222 100644 (file)
@@ -5,7 +5,7 @@
     <ng-container *ngFor="let config of matcherConfig">
       <div class="input-group-prepend">
         <span class="input-group-text"
-              [tooltip]=config.tooltip>
+              [tooltip]="config.tooltip">
           <i [ngClass]="[config.icon]"></i>
         </span>
       </div>
index f67f127cd03cf29fc4fa41c899dc6c33d038a5bd..4d4f4d7b54373d9a4e3e4f061a8eabf934afa274 100644 (file)
@@ -13,7 +13,8 @@
                     [selection]="selection"
                     [tableActions]="tableActions">
   </cd-table-actions>
-  <tabset cdTableDetail *ngIf="selection.hasSingleSelection">
+  <tabset cdTableDetail
+          *ngIf="selection.hasSingleSelection">
     <tab i18n-heading
          heading="Details">
       <cd-table-key-value [renderObjects]="true"
@@ -26,4 +27,3 @@
     </tab>
   </tabset>
 </cd-table>
-
index fad7d9e470f9efcd4b103aeb6606e2a27bb83dda..dae183db0d6ccbe383cd298618bbdb5a07e8fad6 100644 (file)
@@ -1,5 +1,6 @@
 <cd-alert-panel type="info">
   {{ message }}<br>
-  <ng-container i18n>Please consult the <a href="{{docsUrl}}" target="_blank">documentation</a>
+  <ng-container i18n>Please consult the <a href="{{docsUrl}}"
+                                           target="_blank">documentation</a>
   on how to configure and enable the NFS Ganesha management functionality.</ng-container>
 </cd-alert-panel>
index bd159a45423b54190c15d628d91e7db65ff71f17..588b1edeacac80f9637eef68e77a00443d197877 100644 (file)
                   i18n>Required field</span>
             <span class="invalid-feedback"
                   *ngIf="nfsForm.showError('pseudo', formDir, 'pattern')"
-                  i18n>Pseudo needs to start with a '/' and can't contain any of the following: >, <, |, &, ( or ).</span>
+                  i18n>Pseudo needs to start with a '/' and can't contain any of the following: &gt;, &lt;, |, &, ( or ).</span>
           </div>
         </div>
 
index 2d6c16b7f7def2d5a093791022d04dc2b70215d9..17c757356490502656d64fbb07891205d2df5ec4 100644 (file)
@@ -4,10 +4,12 @@
           columnMode="flex"
           [autoSave]="false"
           (fetchData)="getCounters($event)">
-  <ng-template #valueTpl let-row="row">
+  <ng-template #valueTpl
+               let-row="row">
     {{ row.value | dimless }} {{ row.unit }}
   </ng-template>
 </cd-table>
 <ng-template #warning>
-  <cd-alert-panel type="warning" i18n>Performance counters not available</cd-alert-panel>
+  <cd-alert-panel type="warning"
+                  i18n>Performance counters not available</cd-alert-panel>
 </ng-template>
index cdcf248522a3e8f4ab826eef4873caaca5b08d0b..b2c31564acb0e24352fbca155c8ec11274866d42 100644 (file)
@@ -1,5 +1,6 @@
 <tabset>
-  <tab i18n-heading heading="Pools List">
+  <tab i18n-heading
+       heading="Pools List">
     <cd-view-cache *ngFor="let viewCacheStatus of viewCacheStatusList"
                    [status]="viewCacheStatus.status"
                    [statusFor]="viewCacheStatus.statusFor"></cd-view-cache>
index 88b93a22bf61192d16e019fdad5b844fe6d7baa5..bfec49ceadbe8711651e3848faf8a5fccf29a82c 100644 (file)
@@ -1,5 +1,6 @@
 <cd-alert-panel type="info">
   {{ message }}<br>
-  <ng-container i18n>Please consult the <a href="{{docsUrl}}" target="_blank">documentation</a>
+  <ng-container i18n>Please consult the <a href="{{docsUrl}}"
+                                           target="_blank">documentation</a>
   on how to configure and enable the Object Gateway management functionality.</ng-container>
 </cd-alert-panel>
index 0df2208a1538d816218d5343e858bf7503f26291..b5a0c3638e22f7f64213f0bfdaab4f505f34caf1 100644 (file)
         <!-- Versioning -->
         <div class="form-group row"
              *ngIf="editing">
-          <legend class="cd-header ml-5 mr-5" i18n>Versioning</legend>
+          <legend class="cd-header ml-5 mr-5"
+                  i18n>Versioning</legend>
           <div class="col-sm-9 offset-sm-3">
             <input type="radio"
                    id="enabled"
             <label class="align-text-top"
                    for="enabled">
               <span i18n>Enabled</span>
-              <div class="text-muted" i18n>Enables versioning for the objects in the bucket.</div>
+              <div class="text-muted"
+                   i18n>Enables versioning for the objects in the bucket.</div>
             </label>
           </div>
           <div class="col-sm-9 offset-sm-3">
             <label class="align-text-top"
                    for="suspended">
               <span i18n>Suspended</span>
-              <div class="text-muted" i18n>Disables versioning for the objects in the bucket.</div>
+              <div class="text-muted"
+                   i18n>Disables versioning for the objects in the bucket.</div>
             </label>
           <span class="invalid-feedback"
                 *ngIf="bucketForm.showError('versioning', frm, 'required')"
index 7efc3c11594f838fdbc40a32a88392468a18685e..cb485c6a648ad2bd3259818667488edf77e132e7 100644 (file)
@@ -1,12 +1,14 @@
 <tabset>
-  <tab i18n-heading heading="Daemons List">
+  <tab i18n-heading
+       heading="Daemons List">
     <cd-table [data]="daemons"
               [columns]="columns"
               columnMode="flex"
               selectionType="single"
               (updateSelection)="updateSelection($event)"
               (fetchData)="getDaemonList($event)">
-      <cd-rgw-daemon-details cdTableDetail [selection]="selection">
+      <cd-rgw-daemon-details cdTableDetail
+                             [selection]="selection">
       </cd-rgw-daemon-details>
     </cd-table>
   </tab>
index 9aeba78fac730805ce343f2c923a9cc521d8a14b..f676c677dbd88ecadd0ac2ea0111ae52e3cdbc2f 100644 (file)
                          class="cd-form-control"
                          value="{{ subuser.id }}"
                          readonly>
-                  <div class="input-group-prepend"
-                       style="border-left: 0; border-right: 0;">
+                  <div class="input-group-prepend border-left-0 border-right-0">
                     <span class="input-group-text">
                       <i class="{{ icons.share }}"></i>
                     </span>
index 7389a48f83088ab090af3aa702ada0feb35e11e0..9a4cb7436a7795a46655aa69f7d4a1c01f375d1f 100644 (file)
@@ -1,5 +1,6 @@
-<tabset  *ngIf="selection?.hasSingleSelection">
-  <tab heading="Details" i18n-heading>
+<tabset *ngIf="selection?.hasSingleSelection">
+  <tab heading="Details"
+       i18n-heading>
     <cd-table [data]="scopes_permissions"
               [columns]="columns"
               columnMode="flex"
index e0811fa41a4bc7d50db57f26ef61ee25e21fca40..6c94c2e7841cc7a1e99ceb731ba206dd9cf7a37c 100644 (file)
@@ -1,7 +1,8 @@
 <div class="row">
   <div class="col-md-12 text-center">
     <h1 i18n>Sorry, the user does not exist in Ceph.</h1>
-    <h4 i18n>Return to <a class="sso-logout" [href]="logoutUrl">Login Page</a>. You'll be logged out from the Identity Provider when you retry logging in.</h4>
+    <h4 i18n>Return to <a class="sso-logout"
+                          [href]="logoutUrl">Login Page</a>. You'll be logged out from the Identity Provider when you retry logging in.</h4>
 
     <img class="img-fluid mx-auto rounded"
          src="assets/1280px-Nautilus_Octopus.jpg">
index 2139e702442f5369abdb72b59135f88ce826a69e..48660e2ab1e6ef3e4cd9b27da39b04464f12d1f8 100644 (file)
           <label class="col-form-label col-sm-3"
                  for="password">
           <ng-container i18n>Password</ng-container>
-          <cd-helper class="text-pre"
-                     html="{{ requiredPasswordRulesMessage }}">
-          </cd-helper>
-          </label>     
+        <cd-helper class="text-pre"
+                   html="{{ requiredPasswordRulesMessage }}">
+        </cd-helper>
+          </label>
           <div class="col-sm-9">
             <div class="input-group">
               <input class="form-control"
         </div>
 
         <!-- Enabled -->
-        <div class="form-group row" *ngIf="!isCurrentUser()">
+        <div class="form-group row"
+             *ngIf="!isCurrentUser()">
           <div class="offset-sm-3 col-sm-9">
             <div class="custom-control custom-checkbox">
               <input type="checkbox"
index 502ece1f260f4fc23d84cde603581360f1f8d1fe..c11565c1b1fef8ea340552f34c25af5d96f6b930 100644 (file)
@@ -42,7 +42,7 @@
         <div class="form-group row">
           <label class="col-form-label col-sm-3"
                  for="newpassword">
-            <ng-container i18n>New password</ng-container>         
+            <ng-container i18n>New password</ng-container>
             <cd-helper class="text-pre"
                        html="{{ requiredPasswordRulesMessage }}">
             </cd-helper>
index 490164b22e1612b48891b697faec9584c3b2bbbc..8fbc05ed1a2b5478721bddd7e277fc5a7df68534 100644 (file)
@@ -3,8 +3,10 @@
     <ng-container *ngIf="size === 'normal'; else slim">
       <tr>
         <td *ngIf="showIcon"
-            rowspan="2" class="alert-panel-icon">
-          <i [ngClass]="[icons.large3x]" class="alert-{{ bootstrapClass }} {{ typeIcon }}"
+            rowspan="2"
+            class="alert-panel-icon">
+          <i [ngClass]="[icons.large3x]"
+             class="alert-{{ bootstrapClass }} {{ typeIcon }}"
              aria-hidden="true"></i>
         </td>
         <td class="alert-panel-title">{{ title }}</td>
@@ -17,7 +19,8 @@
     </ng-container>
     <ng-template #slim>
       <tr>
-        <td *ngIf="showIcon" class="alert-panel-icon">
+        <td *ngIf="showIcon"
+            class="alert-panel-icon">
           <i class="alert-{{ bootstrapClass }} {{ typeIcon }}"
              aria-hidden="true"></i>
         </td>
index dd7c666726af43b66832728d9399b141fb220160..8b00718bf4f6f89a54a92deee95dbe3d538499ed 100644 (file)
@@ -1,26 +1,26 @@
-<div dropdown\r
-     class="btn-group"\r
-     *ngIf="isDropdown">\r
-  <a dropdownToggle\r
-     class="dropdown-toggle"\r
-     data-toggle="dropdown"\r
-     i18n-title\r
-     title="Select a Language">\r
-    {{ supportedLanguages[selectedLanguage] }}\r
-  </a>\r
-  <ul *dropdownMenu\r
-      class="dropdown-menu dropdown-menu-right">\r
-    <li *ngFor="let lang of supportedLanguages | keyvalue">\r
-      <a class="dropdown-item"\r
-         (click)="changeLanguage(lang.key)">{{ lang.value }}</a>\r
-    </li>\r
-  </ul>\r
-</div>\r
-\r
-<select *ngIf="!isDropdown"\r
-        (change)="changeLanguage($event.target.value)"\r
-        [(ngModel)]="selectedLanguage"\r
-        class="form-control custom-select">\r
-  <option *ngFor="let lang of supportedLanguages | keyvalue"\r
-          [value]="lang.key">{{ lang.value }}</option>\r
-</select>\r
+<div dropdown
+     class="btn-group"
+     *ngIf="isDropdown">
+  <a dropdownToggle
+     class="dropdown-toggle"
+     data-toggle="dropdown"
+     i18n-title
+     title="Select a Language">
+    {{ supportedLanguages[selectedLanguage] }}
+  </a>
+  <ul *dropdownMenu
+      class="dropdown-menu dropdown-menu-right">
+    <li *ngFor="let lang of supportedLanguages | keyvalue">
+      <a class="dropdown-item"
+         (click)="changeLanguage(lang.key)">{{ lang.value }}</a>
+    </li>
+  </ul>
+</div>
+
+<select *ngIf="!isDropdown"
+        (change)="changeLanguage($event.target.value)"
+        [(ngModel)]="selectedLanguage"
+        class="form-control custom-select">
+  <option *ngFor="let lang of supportedLanguages | keyvalue"
+          [value]="lang.key">{{ lang.value }}</option>
+</select>
index 7da0e9c4ca7b072f2574014003a2ff4416f98dae..23478817f74872c15d7b6cb6a214373db4ae99ae 100644 (file)
   </div>
 </ng-template>
 
-<a class="select-menu-edit"
+<a class="select-menu-edit float-left"
    [ngClass]="elemClass"
    [popover]="popTemplate"
    placement="bottom"
    container="body"
    outsideClick="true"
-   *ngIf="options.length > 0"
-   class="float-left">
+   *ngIf="options.length > 0">
   <ng-content></ng-content>
 </a>
 
index 4b7a1b872239363cf1b66da57f0bb7693a9de886..c823605d12a9da9910a8245f04af8979f5308f5b 100644 (file)
@@ -1,13 +1,15 @@
 <div class="chart-container"
      [ngStyle]="style">
-  <canvas baseChart #sparkCanvas
+  <canvas baseChart
+          #sparkCanvas
           [labels]="labels"
           [datasets]="datasets"
           [options]="options"
           [colors]="colors"
           [chartType]="'line'">
   </canvas>
-  <div class="chartjs-tooltip" #sparkTooltip>
+  <div class="chartjs-tooltip"
+       #sparkTooltip>
     <table></table>
   </div>
 </div>
index dddbe4f6acc08fe61f19b0fc46c085fa3f5b8e5e..28992932f5264511dfeb7bb4020aea3658f12156 100644 (file)
@@ -23,7 +23,8 @@
     <ng-container *ngFor="let action of dropDownActions">
       <li role="menuitem"
           class="{{ toClassName(action['name']) }}"
-          data-toggle="tooltip" title="{{ useDisableDesc(action) }}">
+          data-toggle="tooltip"
+          title="{{ useDisableDesc(action) }}">
         <a class="dropdown-item"
            (click)="useClickAction(action)"
            [routerLink]="useRouterLink(action)"