diff --git a/.babelrc b/.babelrc new file mode 100644 index 000000000..32beabad5 --- /dev/null +++ b/.babelrc @@ -0,0 +1,12 @@ +{ + "plugins": ["lodash", "angularjs-annotate"], + "presets": [ + [ + "@babel/preset-env", + { + "modules": false, + "useBuiltIns": "usage" + } + ] + ] +} diff --git a/.codeclimate.yml b/.codeclimate.yml index 845dacc08..07eb34e8b 100644 --- a/.codeclimate.yml +++ b/.codeclimate.yml @@ -53,6 +53,7 @@ plugins: mass_threshold: 80 eslint: enabled: true + channel: "eslint-5" config: config: .eslintrc.yml fixme: diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 000000000..3e98e7f99 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,3 @@ +node_modules/ +dist/ +test/ \ No newline at end of file diff --git a/.eslintrc.yml b/.eslintrc.yml index bc803c2e5..eb1b1779a 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -1,287 +1,292 @@ env: browser: true jquery: true + node: true + es6: true + +globals: + angular: true + __CONFIG_GA_ID: true -# globals: -# angular: true -# $: true -# _: true -# moment: true -# filesize: true -# splitargs: true extends: - 'eslint:recommended' -# http://eslint.org/docs/rules/ +parserOptions: + ecmaVersion: 2018 + sourceType: module + ecmaFeatures: + modules: true + +# # http://eslint.org/docs/rules/ rules: - # Possible Errors - no-await-in-loop: off - no-cond-assign: error - no-console: off - no-constant-condition: error - no-control-regex: error - no-debugger: error - no-dupe-args: error - no-dupe-keys: error - no-duplicate-case: error - no-empty-character-class: error - no-empty: error - no-ex-assign: error - no-extra-boolean-cast: error - no-extra-parens: off - no-extra-semi: error - no-func-assign: error - no-inner-declarations: - - error - - functions - no-invalid-regexp: error - no-irregular-whitespace: error - no-negated-in-lhs: error - no-obj-calls: error - no-prototype-builtins: off - no-regex-spaces: error - no-sparse-arrays: error - no-template-curly-in-string: off - no-unexpected-multiline: error - no-unreachable: error - no-unsafe-finally: off - no-unsafe-negation: off - use-isnan: error - valid-jsdoc: off - valid-typeof: error +# # Possible Errors +# no-await-in-loop: off +# no-cond-assign: error +# no-console: off +# no-constant-condition: error +# no-control-regex: error +# no-debugger: error +# no-dupe-args: error +# no-dupe-keys: error +# no-duplicate-case: error +# no-empty-character-class: error + no-empty: warn +# no-ex-assign: error +# no-extra-boolean-cast: error +# no-extra-parens: off +# no-extra-semi: error +# no-func-assign: error +# no-inner-declarations: +# - error +# - functions +# no-invalid-regexp: error +# no-irregular-whitespace: error +# no-negated-in-lhs: error +# no-obj-calls: error +# no-prototype-builtins: off +# no-regex-spaces: error +# no-sparse-arrays: error +# no-template-curly-in-string: off +# no-unexpected-multiline: error +# no-unreachable: error +# no-unsafe-finally: off +# no-unsafe-negation: off +# use-isnan: error +# valid-jsdoc: off +# valid-typeof: error - # Best Practices - accessor-pairs: error - array-callback-return: off - block-scoped-var: off - class-methods-use-this: off - complexity: - - error - - 6 - consistent-return: off - curly: off - default-case: off - dot-location: off - dot-notation: off - eqeqeq: error - guard-for-in: error - no-alert: error - no-caller: error - no-case-declarations: error - no-div-regex: error - no-else-return: off - no-empty-function: off - no-empty-pattern: error - no-eq-null: error - no-eval: error - no-extend-native: error - no-extra-bind: error - no-extra-label: off - no-fallthrough: error - no-floating-decimal: off - no-global-assign: off - no-implicit-coercion: off - no-implied-eval: error - no-invalid-this: off - no-iterator: error - no-labels: - - error - - allowLoop: true - allowSwitch: true - no-lone-blocks: error - no-loop-func: error - no-magic-number: off - no-multi-spaces: off - no-multi-str: off - no-native-reassign: error - no-new-func: error - no-new-wrappers: error - no-new: error - no-octal-escape: error - no-octal: error - no-param-reassign: off - no-proto: error - no-redeclare: error - no-restricted-properties: off - no-return-assign: error - no-return-await: off - no-script-url: error - no-self-assign: off - no-self-compare: error - no-sequences: off - no-throw-literal: off - no-unmodified-loop-condition: off - no-unused-expressions: error - no-unused-labels: off - no-useless-call: error - no-useless-concat: error +# # Best Practices +# accessor-pairs: error +# array-callback-return: off +# block-scoped-var: off +# class-methods-use-this: off +# complexity: +# - error +# - 6 +# consistent-return: off +# curly: off +# default-case: off +# dot-location: off +# dot-notation: off +# eqeqeq: error +# guard-for-in: error +# no-alert: error +# no-caller: error +# no-case-declarations: error +# no-div-regex: error +# no-else-return: off + no-empty-function: warn +# no-empty-pattern: error +# no-eq-null: error +# no-eval: error +# no-extend-native: error +# no-extra-bind: error +# no-extra-label: off +# no-fallthrough: error +# no-floating-decimal: off +# no-global-assign: off +# no-implicit-coercion: off +# no-implied-eval: error +# no-invalid-this: off +# no-iterator: error +# no-labels: +# - error +# - allowLoop: true +# allowSwitch: true +# no-lone-blocks: error +# no-loop-func: error +# no-magic-number: off +# no-multi-spaces: off +# no-multi-str: off +# no-native-reassign: error +# no-new-func: error +# no-new-wrappers: error +# no-new: error +# no-octal-escape: error +# no-octal: error +# no-param-reassign: off +# no-proto: error +# no-redeclare: error +# no-restricted-properties: off +# no-return-assign: error +# no-return-await: off +# no-script-url: error +# no-self-assign: off +# no-self-compare: error +# no-sequences: off +# no-throw-literal: off +# no-unmodified-loop-condition: off +# no-unused-expressions: error +# no-unused-labels: off +# no-useless-call: error +# no-useless-concat: error no-useless-escape: off - no-useless-return: off - no-void: error - no-warning-comments: off - no-with: error - prefer-promise-reject-errors: off - radix: error - require-await: off - vars-on-top: off - wrap-iife: error - yoda: off +# no-useless-return: off +# no-void: error +# no-warning-comments: off +# no-with: error +# prefer-promise-reject-errors: off +# radix: error +# require-await: off +# vars-on-top: off +# wrap-iife: error +# yoda: off - # Strict - strict: off +# # Strict +# strict: off - # Variables - init-declarations: off - no-catch-shadow: error - no-delete-var: error - no-label-var: error - no-restricted-globals: off - no-shadow-restricted-names: error - no-shadow: off - no-undef-init: error - no-undef: off - no-undefined: off - no-unused-vars: - - warn - - - vars: local - no-use-before-define: off +# # Variables +# init-declarations: off +# no-catch-shadow: error +# no-delete-var: error +# no-label-var: error +# no-restricted-globals: off +# no-shadow-restricted-names: error +# no-shadow: off +# no-undef-init: error +# no-undef: off +# no-undefined: off +# no-unused-vars: +# - warn +# - +# vars: local +# no-use-before-define: off - # Node.js and CommonJS - callback-return: error - global-require: error - handle-callback-err: error - no-mixed-requires: off - no-new-require: off - no-path-concat: error - no-process-env: off - no-process-exit: error - no-restricted-modules: off - no-sync: off +# # Node.js and CommonJS +# callback-return: error +# global-require: error +# handle-callback-err: error +# no-mixed-requires: off +# no-new-require: off +# no-path-concat: error +# no-process-env: off +# no-process-exit: error +# no-restricted-modules: off +# no-sync: off - # Stylistic Issues - array-bracket-spacing: off - block-spacing: off - brace-style: off - camelcase: off - capitalized-comments: off - comma-dangle: - - error - - never - comma-spacing: off - comma-style: off - computed-property-spacing: off - consistent-this: off - eol-last: off - func-call-spacing: off - func-name-matching: off - func-names: off - func-style: off - id-length: off - id-match: off - indent: off - jsx-quotes: off - key-spacing: off - keyword-spacing: off - line-comment-position: off - linebreak-style: - - error - - unix - lines-around-comment: off - lines-around-directive: off - max-depth: off - max-len: off - max-nested-callbacks: off - max-params: off - max-statements-per-line: off - max-statements: - - error - - 30 - multiline-ternary: off - new-cap: off - new-parens: off - newline-after-var: off - newline-before-return: off - newline-per-chained-call: off - no-array-constructor: off - no-bitwise: off - no-continue: off - no-inline-comments: off - no-lonely-if: off - no-mixed-operators: off - no-mixed-spaces-and-tabs: off - no-multi-assign: off - no-multiple-empty-lines: off - no-negated-condition: off - no-nested-ternary: off - no-new-object: off - no-plusplus: off - no-restricted-syntax: off - no-spaced-func: off - no-tabs: off - no-ternary: off - no-trailing-spaces: off - no-underscore-dangle: off - no-unneeded-ternary: off - object-curly-newline: off - object-curly-spacing: off - object-property-newline: off - one-var-declaration-per-line: off - one-var: off - operator-assignment: off - operator-linebreak: off - padded-blocks: off - quote-props: off - quotes: - - error - - single - require-jsdoc: off - semi-spacing: off - semi: - - error - - always - sort-keys: off - sort-vars: off - space-before-blocks: off - space-before-function-paren: off - space-in-parens: off - space-infix-ops: off - space-unary-ops: off - spaced-comment: off - template-tag-spacing: off - unicode-bom: off - wrap-regex: off +# # Stylistic Issues +# array-bracket-spacing: off +# block-spacing: off +# brace-style: off +# camelcase: off +# capitalized-comments: off +# comma-dangle: +# - error +# - never +# comma-spacing: off +# comma-style: off +# computed-property-spacing: off +# consistent-this: off +# eol-last: off +# func-call-spacing: off +# func-name-matching: off +# func-names: off +# func-style: off +# id-length: off +# id-match: off +# indent: off +# jsx-quotes: off +# key-spacing: off +# keyword-spacing: off +# line-comment-position: off +# linebreak-style: +# - error +# - unix +# lines-around-comment: off +# lines-around-directive: off +# max-depth: off +# max-len: off +# max-nested-callbacks: off +# max-params: off +# max-statements-per-line: off +# max-statements: +# - error +# - 30 +# multiline-ternary: off +# new-cap: off +# new-parens: off +# newline-after-var: off +# newline-before-return: off +# newline-per-chained-call: off +# no-array-constructor: off +# no-bitwise: off +# no-continue: off +# no-inline-comments: off +# no-lonely-if: off +# no-mixed-operators: off +# no-mixed-spaces-and-tabs: off +# no-multi-assign: off +# no-multiple-empty-lines: off +# no-negated-condition: off +# no-nested-ternary: off +# no-new-object: off +# no-plusplus: off +# no-restricted-syntax: off +# no-spaced-func: off +# no-tabs: off +# no-ternary: off +# no-trailing-spaces: off +# no-underscore-dangle: off +# no-unneeded-ternary: off +# object-curly-newline: off +# object-curly-spacing: off +# object-property-newline: off +# one-var-declaration-per-line: off +# one-var: off +# operator-assignment: off +# operator-linebreak: off +# padded-blocks: off +# quote-props: off +# quotes: +# - error +# - single +# require-jsdoc: off +# semi-spacing: off +# semi: +# - error +# - always +# sort-keys: off +# sort-vars: off +# space-before-blocks: off +# space-before-function-paren: off +# space-in-parens: off +# space-infix-ops: off +# space-unary-ops: off +# spaced-comment: off +# template-tag-spacing: off +# unicode-bom: off +# wrap-regex: off - # ECMAScript 6 - arrow-body-style: off - arrow-parens: off - arrow-spacing: off - constructor-super: off - generator-star-spacing: off - no-class-assign: off - no-confusing-arrow: off - no-const-assign: off - no-dupe-class-members: off - no-duplicate-imports: off - no-new-symbol: off - no-restricted-imports: off - no-this-before-super: off - no-useless-computed-key: off - no-useless-constructor: off - no-useless-rename: off - no-var: off - object-shorthand: off - prefer-arrow-callback: off - prefer-const: off - prefer-destructuring: off - prefer-numeric-literals: off - prefer-rest-params: off - prefer-reflect: off - prefer-spread: off - prefer-template: off - require-yield: off - rest-spread-spacing: off - sort-imports: off - symbol-description: off - template-curly-spacing: off - yield-star-spacing: off +# # ECMAScript 6 +# arrow-body-style: off +# arrow-parens: off +# arrow-spacing: off +# constructor-super: off +# generator-star-spacing: off +# no-class-assign: off +# no-confusing-arrow: off +# no-const-assign: off +# no-dupe-class-members: off +# no-duplicate-imports: off +# no-new-symbol: off +# no-restricted-imports: off +# no-this-before-super: off +# no-useless-computed-key: off +# no-useless-constructor: off +# no-useless-rename: off +# no-var: off +# object-shorthand: off +# prefer-arrow-callback: off +# prefer-const: off +# prefer-destructuring: off +# prefer-numeric-literals: off +# prefer-rest-params: off +# prefer-reflect: off +# prefer-spread: off +# prefer-template: off +# require-yield: off +# rest-spread-spacing: off +# sort-imports: off +# symbol-description: off +# template-curly-spacing: off +# yield-star-spacing: off diff --git a/.github/ISSUE_TEMPLATE/Bug_report.md b/.github/ISSUE_TEMPLATE/Bug_report.md index 986b47357..4da716c9a 100644 --- a/.github/ISSUE_TEMPLATE/Bug_report.md +++ b/.github/ISSUE_TEMPLATE/Bug_report.md @@ -8,7 +8,9 @@ about: Create a bug report Thanks for reporting a bug for Portainer ! -Do you need help or have a question? Come chat with us on Slack http://portainer.io/slack/ or gitter https://gitter.im/portainer/Lobby. +You can find more information about Portainer support framework policy here: https://www.portainer.io/2019/04/portainer-support-policy/ + +Do you need help or have a question? Come chat with us on Slack http://portainer.io/slack/. Before opening a new issue, make sure that we do not have any duplicates already open. You can ensure this by searching the issue list for this diff --git a/.github/ISSUE_TEMPLATE/Custom.md b/.github/ISSUE_TEMPLATE/Custom.md index e43b1e6f7..b4d55f559 100644 --- a/.github/ISSUE_TEMPLATE/Custom.md +++ b/.github/ISSUE_TEMPLATE/Custom.md @@ -6,7 +6,9 @@ about: Ask us a question about Portainer usage or deployment diff --git a/.github/ISSUE_TEMPLATE/Feature_request.md b/.github/ISSUE_TEMPLATE/Feature_request.md index 76a157fe0..6da5f4265 100644 --- a/.github/ISSUE_TEMPLATE/Feature_request.md +++ b/.github/ISSUE_TEMPLATE/Feature_request.md @@ -8,7 +8,7 @@ about: Suggest a feature/enhancement that should be added in Portainer Thanks for opening a feature request for Portainer ! -Do you need help or have a question? Come chat with us on Slack http://portainer.io/slack/ or gitter https://gitter.im/portainer/Lobby. +Do you need help or have a question? Come chat with us on Slack http://portainer.io/slack/ Before opening a new issue, make sure that we do not have any duplicates already open. You can ensure this by searching the issue list for this diff --git a/README.md b/README.md index 6a6a41c22..e1297a611 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,3 @@ -
{{ item.Tasks | runningtaskscount }}
/ {{ item.Mode === 'replicated' ? item.Replicas : ($ctrl.nodes | availablenodecount:item) }}
-
+
Scale
diff --git a/app/docker/components/datatables/services-datatable/servicesDatatable.js b/app/docker/components/datatables/services-datatable/servicesDatatable.js
index ebd81487e..a7491a861 100644
--- a/app/docker/components/datatables/services-datatable/servicesDatatable.js
+++ b/app/docker/components/datatables/services-datatable/servicesDatatable.js
@@ -1,5 +1,5 @@
angular.module('portainer.docker').component('servicesDatatable', {
- templateUrl: 'app/docker/components/datatables/services-datatable/servicesDatatable.html',
+ templateUrl: './servicesDatatable.html',
controller: 'ServicesDatatableController',
bindings: {
titleText: '@',
diff --git a/app/docker/components/datatables/services-datatable/servicesDatatableController.js b/app/docker/components/datatables/services-datatable/servicesDatatableController.js
index b265863b4..adee53500 100644
--- a/app/docker/components/datatables/services-datatable/servicesDatatableController.js
+++ b/app/docker/components/datatables/services-datatable/servicesDatatableController.js
@@ -1,3 +1,5 @@
+import _ from 'lodash-es';
+
angular.module('portainer.docker')
.controller('ServicesDatatableController', ['PaginationService', 'DatatableService', 'EndpointProvider',
function (PaginationService, DatatableService, EndpointProvider) {
diff --git a/app/docker/components/datatables/tasks-datatable/tasksDatatable.js b/app/docker/components/datatables/tasks-datatable/tasksDatatable.js
index f24e14446..d5c1318f3 100644
--- a/app/docker/components/datatables/tasks-datatable/tasksDatatable.js
+++ b/app/docker/components/datatables/tasks-datatable/tasksDatatable.js
@@ -1,5 +1,5 @@
angular.module('portainer.docker').component('tasksDatatable', {
- templateUrl: 'app/docker/components/datatables/tasks-datatable/tasksDatatable.html',
+ templateUrl: './tasksDatatable.html',
controller: 'TasksDatatableController',
bindings: {
titleText: '@',
diff --git a/app/docker/components/datatables/tasks-datatable/tasksDatatableController.js b/app/docker/components/datatables/tasks-datatable/tasksDatatableController.js
index 368fa76d2..eabf6202b 100644
--- a/app/docker/components/datatables/tasks-datatable/tasksDatatableController.js
+++ b/app/docker/components/datatables/tasks-datatable/tasksDatatableController.js
@@ -4,8 +4,9 @@ function (PaginationService, DatatableService) {
this.state = {
showQuickActionStats: true,
showQuickActionLogs: true,
- showQuickActionConsole: true,
+ showQuickActionExec: true,
showQuickActionInspect: true,
+ showQuickActionAttach: false,
selectAll: false,
orderBy: this.orderBy,
paginatedItemLimit: PaginationService.getPaginationLimit(this.tableKey),
diff --git a/app/docker/components/datatables/volumes-datatable/volumesDatatable.html b/app/docker/components/datatables/volumes-datatable/volumesDatatable.html
index 475290f84..211759c46 100644
--- a/app/docker/components/datatables/volumes-datatable/volumesDatatable.html
+++ b/app/docker/components/datatables/volumes-datatable/volumesDatatable.html
@@ -6,12 +6,12 @@
{{ $ctrl.titleText }}
- + + The interactive-flag is not set. You might not be able to use the console properly. +
++ + The TTY-flag is not set. You might not be able to use the console properly. +
++ + The container is not running. +
+