Compare commits

...

140 Commits

Author SHA1 Message Date
baron_l
fdb44a0cc8 wip containers es9 refactor 2019-03-20 16:40:35 +01:00
baron_l
b3bf6b6115 refactor(configs): es9 2019-03-20 16:39:49 +01:00
baron_l
aaf533df8e fix(configs): refactor broke configs creation and list views 2019-03-20 16:29:44 +01:00
Steven Kang
f5edc1f54e Fix Windows CI with Webpack (#2782) 2019-03-18 17:18:55 +13:00
baron_l
76ff555c1e Merge branch 'develop' into webpack 2019-03-15 15:44:35 +01:00
baron_l
efd421bff8 fix(webpack): fix ng-include not loading templates with webpack 2019-03-14 19:47:43 +01:00
baron_l
9e9843db9b fix(app): fix several issues introduced by webpack migration 2019-03-14 18:19:17 +01:00
Anthony Lapenna
18feb4ee95 Merge branch 'develop' into webpack 2019-03-13 15:28:06 +13:00
Anthony Lapenna
26a6f3c237 style(extensions): use develop version of the view 2019-03-13 15:17:22 +13:00
baron_l
0037a6699a Merge branch 'develop' into webpack 2019-03-11 22:00:17 +01:00
baron_l
83d32cdc0f refactor(app): webpack aliases for imports + async / await dep + start refactor 2019-03-11 19:58:37 +01:00
baron_l
cdf880a397 Merge branch 'develop' into webpack 2019-03-11 16:15:55 +01:00
baron_l
d1f7e17ee6 dep(build-system): add angularjs-annotate to webpack + fix on imports 2019-02-04 19:08:40 +01:00
Steven Kang
bb8857bddc fix(build-system): allow DevOps pipeline to leverage webpack (#2670)
* Update devopsbuild task to use webpack & remove AppVeyor environment var

* Added -Force to replace the existing dist folder

* Removed Test-Path
2019-02-01 12:35:21 +13:00
baron_l
ce13167c98 Merge branch 'develop' of into webpack 2019-01-31 17:18:10 +01:00
Chaim Lev Ari
4cecde7f96 Merge branch 'develop' into webpack 2019-01-06 14:57:11 +02:00
Chaim Lev-Ari
a8e90e881d style(app): remove whitespaces 2018-12-16 15:24:46 +02:00
Chaim Lev-Ari
cb42525c18 refactor(css): move vendor css to js import 2018-12-16 15:21:06 +02:00
Chaim Lev-Ari
3dfac3599a fix(extensions): set image path 2018-12-16 14:38:55 +02:00
Chaim Lev-Ari
5f4c42393d Merge branch 'develop' into webpack 2018-12-12 12:02:24 +02:00
Chaim Lev-Ari
4148e7140d feat(webpack): set NODE_ENV on production builds 2018-12-12 10:32:55 +02:00
Chaim Lev-Ari
035d71edb2 chore(webpack): set env NODE_ENV 2018-12-11 18:16:28 +02:00
Chaim Lev-Ari
df30246595 fix(build): copy templates on release 2018-12-09 14:39:54 +02:00
Chaim Lev-Ari
eed11e33f3 Merge branch 'develop' into webpack 2018-12-09 14:25:52 +02:00
Chaim Lev-Ari
816a963308 chore(webpack): add node env 2018-12-03 13:26:57 +02:00
Chaim Lev-Ari
119391bb52 chore(webpack): optimize images 2018-12-03 13:21:30 +02:00
Chaim Lev-Ari
bd0fd358ce fix(webpack): fix css output name 2018-12-03 13:20:49 +02:00
Chaim Lev-Ari
692ab5e983 feat(webpack): add dev server 2018-11-29 15:47:14 +02:00
Chaim Lev-Ari
ea496c1acb chore(build): add a way to check times of webpack build 2018-11-29 15:38:42 +02:00
Chaim Lev-Ari
b44b1202b0 refactor(webpack): seperate builds of img files 2018-11-29 15:37:53 +02:00
Chaim Lev-Ari
aa14a8ba35 fix(webpack): fix missing jsyaml reference 2018-11-29 13:02:58 +02:00
Chaim Lev-Ari
2fce3c110b chore(build): add build client script 2018-11-29 13:02:36 +02:00
Chaim Lev-Ari
f538e4e626 fix(webpack): fix bug with lodash 2018-11-29 09:54:26 +02:00
Chaim Lev-Ari
4accf4a4c7 feat(deps): upgrade from lodash to lodash-es 2018-11-29 09:54:13 +02:00
Chaim Lev-Ari
8fd6891cd6 Merge branch 'develop' into webpack 2018-11-29 09:42:10 +02:00
Chaim Lev-Ari
9d8bf5df63 chore(codeclimate): use eslint-5 channel 2018-11-26 16:49:40 +02:00
Chaim Lev-Ari
3c66fa8084 Merge branch 'develop' into webpack 2018-11-26 16:32:07 +02:00
Chaim Lev-Ari
515e2ec337 feat(webpack): add postcss 2018-11-26 16:25:00 +02:00
Chaim Lev-Ari
27c179df93 feat(webpack): config grunt to use webpack 2018-11-26 15:17:06 +02:00
Chaim Lev-Ari
558036ee53 feat(webpack): reduce lodash size 2018-11-12 21:56:51 +02:00
Chaim Lev-Ari
1b57b657bd fix(webpack): import missing htmls 2018-11-11 10:23:57 +02:00
Chaim Lev-Ari
a9e00b89fa fix(webpack): import lodash 2018-11-08 12:45:13 +02:00
Chaim Lev-Ari
dd571a792f Merge branch 'develop' into webpack 2018-11-08 12:44:35 +02:00
Chaim Lev-Ari
a5dd408048 fix(hosts): remove browse button 2018-11-06 15:04:32 +02:00
Chaim Lev-Ari
04a7944b32 Merge branch 'develop' into webpack 2018-11-06 14:57:13 +02:00
Chaim Lev-Ari
1267bbcd5e style(webpack): remove comments from config 2018-11-06 14:56:26 +02:00
Chaim Lev-Ari
59c2353c50 refactor(webpack): return angular to entry file 2018-11-06 14:55:11 +02:00
Chaim Lev-Ari
f6e1782632 refactor(webpack): remove more angular imports 2018-11-06 14:45:16 +02:00
Chaim Lev-Ari
ae7fff3fe9 refactor(webpack): remove angular imports 2018-11-06 14:42:46 +02:00
Chaim Lev-Ari
f60fc1cd69 fix(webpack): fix html templates url 2018-11-04 18:01:07 +02:00
Chaim Lev-Ari
ac090129aa Merge branch 'develop' into webpack 2018-11-04 17:54:55 +02:00
Chaim Lev-Ari
7661b55920 fix(webpack): fix production config 2018-11-01 10:35:09 +02:00
Chaim Lev-Ari
c52eb28b79 feat(webpack): create basic production and dev config 2018-11-01 10:29:51 +02:00
Chaim Lev-Ari
bedeb3e354 refactor(toastr): update toastr 2018-10-31 18:31:45 +02:00
Chaim Lev-Ari
62b14bf9aa refactor(webpack): optimize lodash 2018-10-29 15:45:18 +02:00
Chaim Lev-Ari
652b73390a feat(webpack): add babel 2018-10-29 15:40:40 +02:00
Chaim Lev-Ari
5001de43fc refactor(webpack): add bundle analyzer 2018-10-29 15:32:24 +02:00
Chaim Lev-Ari
661e207a4b refactor(webpack): optimize moment 2018-10-29 15:31:16 +02:00
Chaim Lev-Ari
2ce830eb16 refactor(webpack): remove empty controllers 2018-10-28 10:16:02 +02:00
Chaim Lev-Ari
86bb816cf1 feat(webpack): fix styling issues 2018-10-28 10:06:43 +02:00
Chaim Lev-Ari
61d33383b3 feat(webpack): add webpack clean dist 2018-10-28 09:48:49 +02:00
Chaim Lev-Ari
bc45470eeb feat(webpack): remove eslint global config 2018-10-28 09:48:30 +02:00
Chaim Lev-Ari
fbf24c88af feat(webpack): import angular in all files 2018-10-28 09:21:31 +02:00
Chaim Lev-Ari
71447e2cc0 Merge remote-tracking branch 'origin/develop' into webpack 2018-10-28 08:11:18 +02:00
Chaim Lev-Ari
6e85d1d9b8 feat(webpack): split vendors css and js to a different bundle 2018-10-17 08:57:38 +03:00
Chaim Lev-Ari
ea9d4d6818 feat(build): load css before script 2018-10-16 16:21:35 +03:00
Chaim Lev-Ari
0370a3b7f6 Merge branch 'develop' into webpack 2018-10-14 20:13:33 +03:00
Chaim Lev-Ari
34bc20dfed feat(build): load favicons 2018-10-14 20:04:30 +03:00
Chaim Lev-Ari
40fe596e11 feat(build): fix styles 2018-10-14 19:45:54 +03:00
Chaim Lev-Ari
6a13b8a677 feat(build): add angular import 2018-10-14 19:02:36 +03:00
Chaim Lev-Ari
dde82f3d96 feat(build): import all globals 2018-10-14 13:27:48 +03:00
Chaim Lev-Ari
2565d4ed62 feat(build): clean terminal on build 2018-10-14 13:12:15 +03:00
Chaim Lev-Ari
6a119254ad feat(build): add webpack notifier 2018-10-14 13:06:25 +03:00
Chaim Lev-Ari
49eb5b54ed feat(build): enable eslint on build 2018-10-14 08:21:10 +03:00
Chaim Lev-Ari
3cb053250b feat(webpack): add missing imports 2018-10-11 17:55:43 +03:00
Chaim Lev-Ari
f5ccfabb2b feat(build): add missing imports 2018-10-11 17:03:25 +03:00
Chaim Lev-Ari
fd3e96735c feat(build): add webpack build config 2018-10-10 11:06:23 +03:00
Chaim Lev-Ari
fb6752c143 feat(agent): browse files relative to root 2018-10-08 11:14:14 +03:00
Chaim Lev-Ari
c50c5bed81 Merge branch 'develop' into feat2182-upload-files-host 2018-10-08 08:13:03 +03:00
Chaim Lev-Ari
e6d4e802dc feat(node-browser): add upload spinner 2018-10-07 11:37:27 +03:00
Chaim Lev-Ari
e171624fbd feat(node-browser): moved uploader into browser 2018-10-07 11:30:22 +03:00
Chaim Lev-Ari
c856e73397 Merge branch 'fix-volume-browsing' into feat2182-upload-files-host 2018-10-07 09:57:59 +03:00
Chaim Lev-Ari
9215d0f3f0 fix(volume-browser): move volume id to query params 2018-10-07 09:55:18 +03:00
Chaim Lev-Ari
c4d647887f Merge branch 'develop' into feat2182-upload-files-host 2018-10-07 09:31:56 +03:00
Chaim Lev-Ari
0abfca7554 feat(agent): add basic file upload 2018-10-02 10:46:18 +03:00
Chaim Lev-Ari
d6e9e5c31d feat(agent): basic file uploader 2018-09-30 12:00:08 +03:00
Chaim Lev-Ari
dc424f61a7 fix(agent): fix link on node browser 2018-09-30 11:59:58 +03:00
Chaim Lev-Ari
3629749653 style(agent): remove whitespaces 2018-09-30 11:51:48 +03:00
Chaim Lev-Ari
9b02ceaab7 feat(agent): delete file 2018-09-30 11:51:02 +03:00
Chaim Lev-Ari
b564395e50 fix(agent): download file from root 2018-09-30 11:45:51 +03:00
Chaim Lev-Ari
a515acb6f5 feat(agent): download file 2018-09-30 11:44:35 +03:00
Chaim Lev-Ari
dc38715cf8 feat(agent): enable rename 2018-09-30 11:24:01 +03:00
Chaim Lev-Ari
0b8665f148 feat(agent): browse files 2018-09-30 11:16:10 +03:00
Chaim Lev-Ari
5956c4db40 Merge branch 'feat2240-host-view' into feat2182-upload-files-host 2018-09-30 10:11:16 +03:00
Chaim Lev-Ari
70f025c50e feat(agent): fix browse volume 2018-09-30 10:08:57 +03:00
Chaim Lev-Ari
e9496affa2 Merge branch 'develop' into feat2182-upload-files-host 2018-09-30 09:55:36 +03:00
Chaim Lev-Ari
86591cf1a6 feat(host-details): add loading indicator to disks panel 2018-09-30 09:31:24 +03:00
Chaim Lev-Ari
e684cdad8c feat(host-view): add loading indicator to devices-panel 2018-09-30 09:28:45 +03:00
Chaim Lev-Ari
fabaae66c2 Merge branch 'develop' into feat2240-host-view 2018-09-30 09:12:01 +03:00
Chaim Lev-Ari
c780d52bcf Merge branch 'develop' into feat2240-host-view 2018-09-27 09:50:30 +03:00
Chaim Lev-Ari
fe73fe616d feat(host-details): show disk/devices info for agent 2018-09-25 10:39:55 +03:00
Chaim Lev-Ari
db0fc1382d feat(host-info): add different urls for refresh 2018-09-23 05:02:08 +03:00
Chaim Lando
e09f653155 feat(node-details): move labels table and save button 2018-09-16 15:25:59 +03:00
Chaim Lando
21fece80da feat(host-details): hide engine labels when empty 2018-09-16 13:18:38 +03:00
Chaim Lando
50e6991745 feat(host-details): get info from agent 2018-09-16 12:38:38 +03:00
Chaim Lando
dc1ab3ffc3 style(host-details): fix spelling mistake in filter's name 2018-09-13 11:49:24 +03:00
Chaim Lando
6751fab987 feat(host-details): create mock call to server for agent host info 2018-09-13 11:48:30 +03:00
Chaim Lando
aa3f7397d8 Merge branch 'develop' into feat2240-host-view 2018-09-12 14:48:23 +03:00
Chaim Lando
e791e0a9c8 feat(host-details): remove flags for hiding data 2018-09-12 13:55:23 +03:00
Chaim Lando
4b4ba3f942 feat(host-details): fix labels not sending 2018-09-12 13:52:47 +03:00
Chaim Lando
e75be92c37 style(host-details): remove obsolete event object 2018-09-12 12:36:44 +03:00
Chaim Lando
b03a3cb36b Merge branch 'feat2240-host-view' of github.com:portainer/portainer into feat2240-host-view 2018-09-12 12:35:45 +03:00
Chaim Lando
10b904a13b feat(host-details): update node availability 2018-09-12 12:32:39 +03:00
Chaim Lando
42497ab60c feat(host-details): hide missing info 2018-09-12 10:16:28 +03:00
Anthony Lapenna
ce4a4f0d4f Merge branch 'develop' into feat2240-host-view 2018-09-07 09:28:59 +02:00
Chaim Lando
6a9e389b7c feat(engine-details): pass is agent to host details 2018-09-06 17:02:13 +03:00
Chaim Lando
cf6be6f596 feat(engine-details): remove old node page 2018-09-06 16:41:33 +03:00
Chaim Lando
7436ac508b style(engine-details): remove whitespaces 2018-09-06 16:39:20 +03:00
Chaim Lando
50ef742c63 feat(engine-details): add update label functionality 2018-09-06 16:38:28 +03:00
Chaim Lando
79878cfb85 feat(engine-details): add update node service 2018-09-06 16:35:22 +03:00
Chaim Lando
2f4b68e043 feat(engine-details): add labels-table component 2018-09-06 11:41:54 +03:00
Chaim Lando
67c020db9b feat(engine-details): remove node-details and include in parent 2018-09-06 11:41:20 +03:00
Chaim Lando
c349aac7d2 feat(engine-details): remove isSwarm binding 2018-09-05 18:34:49 +03:00
Chaim Lando
28deb2237f feat(engine-details): add swarm-node-details component 2018-09-05 18:34:13 +03:00
Chaim Lando
08afe4d084 feat(engine-details): replace old node view with a new component 2018-09-05 18:08:06 +03:00
Chaim Lando
d8d4b38384 feat(engine-details): pass is-agent from view 2018-09-05 18:07:47 +03:00
Chaim Lando
6cbcb9f358 feat(engine-details): get details for one node 2018-09-05 18:07:19 +03:00
Chaim Lando
871547b118 feat(engine-details): format engine version 2018-09-05 17:18:09 +03:00
Chaim Lando
c15ee9af7e feat(engine-details): build host details object 2018-09-05 12:30:40 +03:00
Chaim Lando
1f16eb446b feat(engine-details): add host-details component 2018-09-05 12:23:53 +03:00
Chaim Lando
d612ec9cee feat(engine-details): add host-view container component 2018-09-05 12:23:30 +03:00
Chaim Lando
65f542f722 feat(engine-details): add commaseperated filter 2018-09-05 12:22:25 +03:00
Chaim Lando
47f49b1e5d feat(engine-details): replace host-view with host-overview 2018-09-05 11:40:51 +03:00
Chaim Lando
f1f798b7eb feat(engine-details): pass details to the different components 2018-09-05 11:38:26 +03:00
Chaim Lando
483c8641d8 feat(engine-details): add basic engine-details-panel component 2018-09-05 11:27:21 +03:00
Chaim Lando
96b7169125 feat(engine-details): remove old panels 2018-09-05 10:16:33 +03:00
Chaim Lando
2113da56fa feat(engine-details): replace engine view with host view 2018-09-05 10:13:33 +03:00
Chaim Lando
0b26165a68 fix(agent): browse folders in file-datatable 2018-08-23 11:54:10 +03:00
Chaim Lando
a7fab5809b feat(agent): convert volume-browser to files-datatable 2018-08-23 11:49:03 +03:00
Chaim Lando
25c5d1ab07 feat(agent): add new host page 2018-08-23 10:32:29 +03:00
318 changed files with 10452 additions and 2036 deletions

12
.babelrc Normal file
View File

@@ -0,0 +1,12 @@
{
"plugins": ["lodash", "angularjs-annotate"],
"presets": [
[
"@babel/preset-env",
{
"modules": false,
"useBuiltIns": "usage"
}
]
]
}

View File

@@ -53,6 +53,7 @@ plugins:
mass_threshold: 80
eslint:
enabled: true
channel: "eslint-5"
config:
config: .eslintrc.yml
fixme:

3
.eslintignore Normal file
View File

@@ -0,0 +1,3 @@
node_modules/
dist/
test/

View File

@@ -1,287 +1,291 @@
env:
browser: true
jquery: true
node: true
es6: true
globals:
angular: 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
# # 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
# 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

View File

@@ -1,3 +1,12 @@
import '../assets/css/app.css';
import angular from 'angular';
import './agent/_module';
import './azure/_module';
import './docker/__module';
import './extensions/storidge/__module';
import './portainer/__module';
angular.module('portainer', [
'ui.bootstrap',
'ui.router',
@@ -17,7 +26,6 @@ angular.module('portainer', [
'angular-clipboard',
'ngFileSaver',
'luegg.directives',
'portainer.templates',
'portainer.app',
'portainer.agent',
'portainer.azure',
@@ -26,4 +34,11 @@ angular.module('portainer', [
'extension.storidge',
'rzModule',
'moment-picker'
]);
]);
if (require) {
var req = require.context('./', true, /^(.*\.(js$))[^.]*$/im);
req.keys().forEach(function(key) {
req(key);
});
}

View File

@@ -1,5 +1,5 @@
angular.module('portainer.agent').component('fileUploader', {
templateUrl: 'app/agent/components/file-uploader/file-uploader.html',
templateUrl: './file-uploader.html',
controller: 'FileUploaderController',
bindings: {
uploadFile: '<onFileSelected'

View File

@@ -1,5 +1,5 @@
angular.module('portainer.agent').component('filesDatatable', {
templateUrl: 'app/agent/components/files-datatable/files-datatable.html',
templateUrl: './files-datatable.html',
controller: 'GenericDatatableController',
bindings: {
titleText: '@',

View File

@@ -1,3 +1,5 @@
import _ from 'lodash-es';
angular.module('portainer.agent').controller('HostBrowserController', [
'HostBrowserService', 'Notifications', 'FileSaver', 'ModalService',
function HostBrowserController(HostBrowserService, Notifications, FileSaver, ModalService) {

View File

@@ -1,5 +1,5 @@
angular.module('portainer.agent').component('hostBrowser', {
controller: 'HostBrowserController',
templateUrl: 'app/agent/components/host-browser/host-browser.html',
templateUrl: './host-browser.html',
bindings: {}
});

View File

@@ -1,5 +1,5 @@
angular.module('portainer.agent').component('nodeSelector', {
templateUrl: 'app/agent/components/node-selector/nodeSelector.html',
templateUrl: './nodeSelector.html',
controller: 'NodeSelectorController',
bindings: {
model: '='

View File

@@ -1,5 +1,5 @@
angular.module('portainer.agent').component('volumeBrowser', {
templateUrl: 'app/agent/components/volume-browser/volumeBrowser.html',
templateUrl: './volumeBrowser.html',
controller: 'VolumeBrowserController',
bindings: {
volumeId: '<',

View File

@@ -1,3 +1,5 @@
import _ from 'lodash-es';
angular.module('portainer.agent')
.controller('VolumeBrowserController', ['HttpRequestHelper', 'VolumeBrowserService', 'FileSaver', 'Blob', 'ModalService', 'Notifications',
function (HttpRequestHelper, VolumeBrowserService, FileSaver, Blob, ModalService, Notifications) {

View File

@@ -1,4 +1,4 @@
function AgentViewModel(data) {
export function AgentViewModel(data) {
this.IPAddress = data.IPAddress;
this.NodeName = data.NodeName;
this.NodeRole = data.NodeRole;

View File

@@ -1,3 +1,5 @@
import { browseGetResponse } from './response/browse';
angular.module('portainer.agent')
.factory('Browse', ['$resource', 'API_ENDPOINT_ENDPOINTS', 'EndpointProvider', 'StateManager',
function BrowseFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider, StateManager) {

View File

@@ -2,7 +2,7 @@
// ngResource will transform it as an array of chars.
// This functions simply creates a response object and assign
// the data to a field.
function browseGetResponse(data) {
export function browseGetResponse(data) {
var response = {};
response.file = data;
return response;

View File

@@ -1,3 +1,5 @@
import { browseGetResponse } from '../response/browse';
angular.module('portainer.agent')
.factory('BrowseVersion1', ['$resource', 'API_ENDPOINT_ENDPOINTS', 'EndpointProvider', function BrowseFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {
'use strict';

View File

@@ -1,3 +1,5 @@
import { AgentViewModel } from '../models/agent';
angular.module('portainer.agent').factory('AgentService', [
'$q', 'Agent', 'AgentVersion1', 'HttpRequestHelper', 'Host', 'StateManager',
function AgentServiceFactory($q, Agent, AgentVersion1, HttpRequestHelper, Host, StateManager) {

View File

@@ -1,3 +1,5 @@
import _ from 'lodash-es';
angular.module('portainer')
.run(['$rootScope', '$state', 'Authentication', 'authManager', 'StateManager', 'EndpointProvider', 'Notifications', 'Analytics', 'cfpLoadingBar', '$transitions', 'HttpRequestHelper',
function ($rootScope, $state, Authentication, authManager, StateManager, EndpointProvider, Notifications, Analytics, cfpLoadingBar, $transitions, HttpRequestHelper) {

View File

@@ -14,7 +14,7 @@ angular.module('portainer.azure', ['portainer.app'])
url: '/containerinstances',
views: {
'content@': {
templateUrl: 'app/azure/views/containerinstances/containerinstances.html',
templateUrl: './views/containerinstances/containerinstances.html',
controller: 'AzureContainerInstancesController'
}
}
@@ -25,7 +25,7 @@ angular.module('portainer.azure', ['portainer.app'])
url: '/new/',
views: {
'content@': {
templateUrl: 'app/azure/views/containerinstances/create/createcontainerinstance.html',
templateUrl: './views/containerinstances/create/createcontainerinstance.html',
controller: 'AzureCreateContainerInstanceController'
}
}
@@ -36,7 +36,7 @@ angular.module('portainer.azure', ['portainer.app'])
url: '/dashboard',
views: {
'content@': {
templateUrl: 'app/azure/views/dashboard/dashboard.html',
templateUrl: './views/dashboard/dashboard.html',
controller: 'AzureDashboardController'
}
}

View File

@@ -4,5 +4,5 @@ angular.module('portainer.azure').component('azureEndpointConfig', {
tenantId: '=',
authenticationKey: '='
},
templateUrl: 'app/azure/components/azure-endpoint-config/azureEndpointConfig.html'
templateUrl: './azureEndpointConfig.html'
});

View File

@@ -1,3 +1,3 @@
angular.module('portainer.azure').component('azureSidebarContent', {
templateUrl: 'app/azure/components/azure-sidebar-content/azureSidebarContent.html'
templateUrl: './azureSidebarContent.html'
});

View File

@@ -1,5 +1,5 @@
angular.module('portainer.azure').component('containergroupsDatatable', {
templateUrl: 'app/azure/components/datatables/containergroups-datatable/containerGroupsDatatable.html',
templateUrl: './containerGroupsDatatable.html',
controller: 'GenericDatatableController',
bindings: {
title: '@',

View File

@@ -1,4 +1,4 @@
function ContainerGroupDefaultModel() {
export function ContainerGroupDefaultModel() {
this.Location = '';
this.OSType = 'Linux';
this.Name = '';
@@ -15,7 +15,7 @@ function ContainerGroupDefaultModel() {
this.Memory = 1;
}
function ContainerGroupViewModel(data) {
export function ContainerGroupViewModel(data) {
this.Id = data.id;
this.Name = data.name;
this.Location = data.location;
@@ -23,7 +23,7 @@ function ContainerGroupViewModel(data) {
this.Ports = data.properties.ipAddress.ports;
}
function CreateContainerGroupRequest(model) {
export function CreateContainerGroupRequest(model) {
this.location = model.Location;
var containerPorts = [];

View File

@@ -1,4 +1,4 @@
function LocationViewModel(data) {
export function LocationViewModel(data) {
this.Id = data.id;
this.SubscriptionId = data.subscriptionId;
this.DisplayName = data.displayName;

View File

@@ -1,4 +1,6 @@
function ContainerInstanceProviderViewModel(data) {
import _ from 'lodash-es';
export function ContainerInstanceProviderViewModel(data) {
this.Id = data.id;
this.Namespace = data.namespace;

View File

@@ -1,4 +1,4 @@
function ResourceGroupViewModel(data, subscriptionId) {
export function ResourceGroupViewModel(data, subscriptionId) {
this.Id = data.id;
this.SubscriptionId = subscriptionId;
this.Name = data.name;

View File

@@ -1,4 +1,4 @@
function SubscriptionViewModel(data) {
export function SubscriptionViewModel(data) {
this.Id = data.subscriptionId;
this.Name = data.displayName;
}

View File

@@ -1,3 +1,5 @@
import { ContainerGroupViewModel, CreateContainerGroupRequest } from '../models/container_group';
angular.module('portainer.azure')
.factory('ContainerGroupService', ['$q', 'ContainerGroup', function ContainerGroupServiceFactory($q, ContainerGroup) {
'use strict';

View File

@@ -1,3 +1,5 @@
import { LocationViewModel } from '../models/location';
angular.module('portainer.azure')
.factory('LocationService', ['$q', 'Location', function LocationServiceFactory($q, Location) {
'use strict';

View File

@@ -1,3 +1,5 @@
import { ContainerInstanceProviderViewModel } from '../models/provider';
angular.module('portainer.azure')
.factory('ProviderService', ['$q', 'Provider', function ProviderServiceFactory($q, Provider) {
'use strict';

View File

@@ -1,3 +1,5 @@
import { ResourceGroupViewModel } from '../models/resource_group';
angular.module('portainer.azure')
.factory('ResourceGroupService', ['$q', 'ResourceGroup', function ResourceGroupServiceFactory($q, ResourceGroup) {
'use strict';

View File

@@ -1,3 +1,5 @@
import { SubscriptionViewModel } from '../models/subscription';
angular.module('portainer.azure')
.factory('SubscriptionService', ['$q', 'Subscription', function SubscriptionServiceFactory($q, Subscription) {
'use strict';

View File

@@ -1,3 +1,5 @@
import { ContainerGroupDefaultModel } from '../../../models/container_group';
angular.module('portainer.azure')
.controller('AzureCreateContainerInstanceController', ['$q', '$scope', '$state', 'AzureService', 'Notifications',
function ($q, $scope, $state, AzureService, Notifications) {

View File

@@ -1,3 +1,7 @@
import toastr from 'toastr';
import { Terminal } from 'xterm';
import * as fit from 'xterm/lib/addons/fit/fit';
angular.module('portainer')
.config(['$urlRouterProvider', '$httpProvider', 'localStorageServiceProvider', 'jwtOptionsProvider', 'AnalyticsProvider', '$uibTooltipProvider', '$compileProvider', 'cfpLoadingBarProvider',
function ($urlRouterProvider, $httpProvider, localStorageServiceProvider, jwtOptionsProvider, AnalyticsProvider, $uibTooltipProvider, $compileProvider, cfpLoadingBarProvider) {

View File

@@ -23,8 +23,9 @@ angular.module('portainer.docker', ['portainer.app'])
url: '/configs',
views: {
'content@': {
templateUrl: 'app/docker/views/configs/configs.html',
controller: 'ConfigsController'
templateUrl: './views/configs/configs.html',
controller: 'ConfigsController',
controllerAs: 'ctrl',
}
}
};
@@ -34,8 +35,9 @@ angular.module('portainer.docker', ['portainer.app'])
url: '/:id',
views: {
'content@': {
templateUrl: 'app/docker/views/configs/edit/config.html',
controller: 'ConfigController'
templateUrl: './views/configs/edit/config.html',
controller: 'ConfigController',
controllerAs: 'ctrl',
}
}
};
@@ -45,8 +47,9 @@ angular.module('portainer.docker', ['portainer.app'])
url: '/new?id',
views: {
'content@': {
templateUrl: 'app/docker/views/configs/create/createconfig.html',
controller: 'CreateConfigController'
templateUrl: './views/configs/create/createconfig.html',
controller: 'CreateConfigController',
controllerAs: 'ctrl',
}
}
};
@@ -56,8 +59,9 @@ angular.module('portainer.docker', ['portainer.app'])
url: '/containers',
views: {
'content@': {
templateUrl: 'app/docker/views/containers/containers.html',
controller: 'ContainersController'
templateUrl: './views/containers/containers.html',
controller: 'ContainersController',
controllerAs: 'ctrl',
}
}
};
@@ -67,7 +71,7 @@ angular.module('portainer.docker', ['portainer.app'])
url: '/:id?nodeName',
views: {
'content@': {
templateUrl: 'app/docker/views/containers/edit/container.html',
templateUrl: './views/containers/edit/container.html',
controller: 'ContainerController'
}
}
@@ -78,7 +82,7 @@ angular.module('portainer.docker', ['portainer.app'])
url: '/console',
views: {
'content@': {
templateUrl: 'app/docker/views/containers/console/containerconsole.html',
templateUrl: './views/containers/console/containerconsole.html',
controller: 'ContainerConsoleController'
}
}
@@ -89,8 +93,9 @@ angular.module('portainer.docker', ['portainer.app'])
url: '/new?nodeName&from',
views: {
'content@': {
templateUrl: 'app/docker/views/containers/create/createcontainer.html',
controller: 'CreateContainerController'
templateUrl: './views/containers/create/createContainer.html',
controller: 'CreateContainerController',
controllerAs: 'ctrl',
}
}
};
@@ -100,7 +105,7 @@ angular.module('portainer.docker', ['portainer.app'])
url: '/inspect',
views: {
'content@': {
templateUrl: 'app/docker/views/containers/inspect/containerinspect.html',
templateUrl: './views/containers/inspect/containerinspect.html',
controller: 'ContainerInspectController'
}
}
@@ -111,7 +116,7 @@ angular.module('portainer.docker', ['portainer.app'])
url: '/logs',
views: {
'content@': {
templateUrl: 'app/docker/views/containers/logs/containerlogs.html',
templateUrl: './views/containers/logs/containerlogs.html',
controller: 'ContainerLogsController'
}
}
@@ -122,7 +127,7 @@ angular.module('portainer.docker', ['portainer.app'])
url: '/stats',
views: {
'content@': {
templateUrl: 'app/docker/views/containers/stats/containerstats.html',
templateUrl: './views/containers/stats/containerstats.html',
controller: 'ContainerStatsController'
}
}
@@ -133,7 +138,7 @@ angular.module('portainer.docker', ['portainer.app'])
url: '/dashboard',
views: {
'content@': {
templateUrl: 'app/docker/views/dashboard/dashboard.html',
templateUrl: './views/dashboard/dashboard.html',
controller: 'DashboardController'
}
}
@@ -174,7 +179,7 @@ angular.module('portainer.docker', ['portainer.app'])
url: '/events',
views: {
'content@': {
templateUrl: 'app/docker/views/events/events.html',
templateUrl: './views/events/events.html',
controller: 'EventsController'
}
}
@@ -185,7 +190,7 @@ angular.module('portainer.docker', ['portainer.app'])
url: '/images',
views: {
'content@': {
templateUrl: 'app/docker/views/images/images.html',
templateUrl: './views/images/images.html',
controller: 'ImagesController'
}
}
@@ -196,7 +201,7 @@ angular.module('portainer.docker', ['portainer.app'])
url: '/:id?nodeName',
views: {
'content@': {
templateUrl: 'app/docker/views/images/edit/image.html',
templateUrl: './views/images/edit/image.html',
controller: 'ImageController'
}
}
@@ -207,7 +212,7 @@ angular.module('portainer.docker', ['portainer.app'])
url: '/build',
views: {
'content@': {
templateUrl: 'app/docker/views/images/build/buildimage.html',
templateUrl: './views/images/build/buildimage.html',
controller: 'BuildImageController'
}
}
@@ -218,7 +223,7 @@ angular.module('portainer.docker', ['portainer.app'])
url: '/import',
views: {
'content@': {
templateUrl: 'app/docker/views/images/import/importimage.html',
templateUrl: './views/images/import/importimage.html',
controller: 'ImportImageController'
}
}
@@ -229,7 +234,7 @@ angular.module('portainer.docker', ['portainer.app'])
url: '/networks',
views: {
'content@': {
templateUrl: 'app/docker/views/networks/networks.html',
templateUrl: './views/networks/networks.html',
controller: 'NetworksController'
}
}
@@ -240,7 +245,7 @@ angular.module('portainer.docker', ['portainer.app'])
url: '/:id?nodeName',
views: {
'content@': {
templateUrl: 'app/docker/views/networks/edit/network.html',
templateUrl: './views/networks/edit/network.html',
controller: 'NetworkController'
}
}
@@ -251,7 +256,7 @@ angular.module('portainer.docker', ['portainer.app'])
url: '/new',
views: {
'content@': {
templateUrl: 'app/docker/views/networks/create/createnetwork.html',
templateUrl: './views/networks/create/createnetwork.html',
controller: 'CreateNetworkController'
}
}
@@ -298,7 +303,7 @@ angular.module('portainer.docker', ['portainer.app'])
url: '/secrets',
views: {
'content@': {
templateUrl: 'app/docker/views/secrets/secrets.html',
templateUrl: './views/secrets/secrets.html',
controller: 'SecretsController'
}
}
@@ -309,7 +314,7 @@ angular.module('portainer.docker', ['portainer.app'])
url: '/:id',
views: {
'content@': {
templateUrl: 'app/docker/views/secrets/edit/secret.html',
templateUrl: './views/secrets/edit/secret.html',
controller: 'SecretController'
}
}
@@ -320,7 +325,7 @@ angular.module('portainer.docker', ['portainer.app'])
url: '/new',
views: {
'content@': {
templateUrl: 'app/docker/views/secrets/create/createsecret.html',
templateUrl: './views/secrets/create/createsecret.html',
controller: 'CreateSecretController'
}
}
@@ -331,7 +336,7 @@ angular.module('portainer.docker', ['portainer.app'])
url: '/services',
views: {
'content@': {
templateUrl: 'app/docker/views/services/services.html',
templateUrl: './views/services/services.html',
controller: 'ServicesController'
}
}
@@ -342,7 +347,7 @@ angular.module('portainer.docker', ['portainer.app'])
url: '/:id',
views: {
'content@': {
templateUrl: 'app/docker/views/services/edit/service.html',
templateUrl: './views/services/edit/service.html',
controller: 'ServiceController'
}
}
@@ -353,7 +358,7 @@ angular.module('portainer.docker', ['portainer.app'])
url: '/new',
views: {
'content@': {
templateUrl: 'app/docker/views/services/create/createservice.html',
templateUrl: './views/services/create/createservice.html',
controller: 'CreateServiceController'
}
}
@@ -364,7 +369,7 @@ angular.module('portainer.docker', ['portainer.app'])
url: '/logs',
views: {
'content@': {
templateUrl: 'app/docker/views/services/logs/servicelogs.html',
templateUrl: './views/services/logs/servicelogs.html',
controller: 'ServiceLogsController'
}
}
@@ -375,7 +380,7 @@ angular.module('portainer.docker', ['portainer.app'])
url: '/swarm',
views: {
'content@': {
templateUrl: 'app/docker/views/swarm/swarm.html',
templateUrl: './views/swarm/swarm.html',
controller: 'SwarmController'
}
}
@@ -386,7 +391,7 @@ angular.module('portainer.docker', ['portainer.app'])
url: '/visualizer',
views: {
'content@': {
templateUrl: 'app/docker/views/swarm/visualizer/swarmvisualizer.html',
templateUrl: './views/swarm/visualizer/swarmvisualizer.html',
controller: 'SwarmVisualizerController'
}
}
@@ -403,7 +408,7 @@ angular.module('portainer.docker', ['portainer.app'])
url: '/:id',
views: {
'content@': {
templateUrl: 'app/docker/views/tasks/edit/task.html',
templateUrl: './views/tasks/edit/task.html',
controller: 'TaskController'
}
}
@@ -414,7 +419,7 @@ angular.module('portainer.docker', ['portainer.app'])
url: '/logs',
views: {
'content@': {
templateUrl: 'app/docker/views/tasks/logs/tasklogs.html',
templateUrl: './views/tasks/logs/tasklogs.html',
controller: 'TaskLogsController'
}
}
@@ -425,7 +430,7 @@ angular.module('portainer.docker', ['portainer.app'])
url: '/volumes',
views: {
'content@': {
templateUrl: 'app/docker/views/volumes/volumes.html',
templateUrl: './views/volumes/volumes.html',
controller: 'VolumesController'
}
}
@@ -436,7 +441,7 @@ angular.module('portainer.docker', ['portainer.app'])
url: '/:id?nodeName',
views: {
'content@': {
templateUrl: 'app/docker/views/volumes/edit/volume.html',
templateUrl: './views/volumes/edit/volume.html',
controller: 'VolumeController'
}
}
@@ -447,7 +452,7 @@ angular.module('portainer.docker', ['portainer.app'])
url: '/browse',
views: {
'content@': {
templateUrl: 'app/docker/views/volumes/browse/browsevolume.html',
templateUrl: './views/volumes/browse/browsevolume.html',
controller: 'BrowseVolumeController'
}
}
@@ -458,7 +463,7 @@ angular.module('portainer.docker', ['portainer.app'])
url: '/new',
views: {
'content@': {
templateUrl: 'app/docker/views/volumes/create/createvolume.html',
templateUrl: './views/volumes/create/createvolume.html',
controller: 'CreateVolumeController'
}
}

View File

@@ -1,5 +1,5 @@
angular.module('portainer.docker').component('containerCapabilities', {
templateUrl: 'app/docker/components/container-capabilities/containerCapabilities.html',
templateUrl: './containerCapabilities.html',
bindings: {
capabilities: '='
}

View File

@@ -1,5 +1,5 @@
angular.module('portainer.docker').component('containerQuickActions', {
templateUrl: 'app/docker/components/container-quick-actions/containerQuickActions.html',
templateUrl: './containerQuickActions.html',
bindings: {
containerId: '<',
nodeName: '<',

View File

@@ -1,6 +1,6 @@
angular.module('portainer.docker')
.component('containerRestartPolicy', {
templateUrl: 'app/docker/components/container-restart-policy/container-restart-policy.html',
templateUrl: './container-restart-policy.html',
controller: 'ContainerRestartPolicyController',
bindings: {
'name': '<',

View File

@@ -1,4 +1,4 @@
angular.module('portainer.docker').component('dashboardClusterAgentInfo', {
templateUrl: 'app/docker/components/dashboard-cluster-agent-info/dashboardClusterAgentInfo.html',
templateUrl: './dashboardClusterAgentInfo.html',
controller: 'DashboardClusterAgentInfoController'
});

View File

@@ -1,5 +1,5 @@
angular.module('portainer.docker').component('configsDatatable', {
templateUrl: 'app/docker/components/datatables/configs-datatable/configsDatatable.html',
templateUrl: './configsDatatable.html',
controller: 'GenericDatatableController',
bindings: {
titleText: '@',

View File

@@ -1,5 +1,5 @@
angular.module('portainer.docker').component('containerNetworksDatatable', {
templateUrl: 'app/docker/components/datatables/container-networks-datatable/containerNetworksDatatable.html',
templateUrl: './containerNetworksDatatable.html',
controller: 'GenericDatatableController',
bindings: {
titleText: '@',

View File

@@ -1,5 +1,5 @@
angular.module('portainer.docker').component('containerProcessesDatatable', {
templateUrl: 'app/docker/components/datatables/container-processes-datatable/containerProcessesDatatable.html',
templateUrl: './containerProcessesDatatable.html',
controller: 'GenericDatatableController',
bindings: {
titleText: '@',

View File

@@ -1,5 +1,5 @@
angular.module('portainer.docker').component('containersDatatableActions', {
templateUrl: 'app/docker/components/datatables/containers-datatable/actions/containersDatatableActions.html',
templateUrl: './containersDatatableActions.html',
controller: 'ContainersDatatableActionsController',
bindings: {
selectedItems: '=',

View File

@@ -1,5 +1,5 @@
angular.module('portainer.docker').component('containersDatatable', {
templateUrl: 'app/docker/components/datatables/containers-datatable/containersDatatable.html',
templateUrl: './containersDatatable.html',
controller: 'ContainersDatatableController',
bindings: {
titleText: '@',

View File

@@ -1,3 +1,5 @@
import _ from 'lodash-es';
angular.module('portainer.docker')
.controller('ContainersDatatableController', ['PaginationService', 'DatatableService', 'EndpointProvider',
function (PaginationService, DatatableService, EndpointProvider) {
@@ -197,7 +199,7 @@ function (PaginationService, DatatableService, EndpointProvider) {
for (var i = 0; i < datasetFilters.length; i++) {
var filter = datasetFilters[i];
existingFilter = _.find(storedFilters, ['label', filter.label]);
var existingFilter = _.find(storedFilters, ['label', filter.label]);
if (existingFilter && !existingFilter.display) {
filter.display = existingFilter.display;
this.filters.state.enabled = true;

View File

@@ -1,5 +1,5 @@
angular.module('portainer.docker').component('eventsDatatable', {
templateUrl: 'app/docker/components/datatables/events-datatable/eventsDatatable.html',
templateUrl: './eventsDatatable.html',
controller: 'GenericDatatableController',
bindings: {
titleText: '@',

View File

@@ -1,5 +1,5 @@
angular.module('portainer.docker').component('jobsDatatable', {
templateUrl: 'app/docker/components/datatables/host-jobs-datatable/jobsDatatable.html',
templateUrl: './jobsDatatable.html',
controller: 'JobsDatatableController',
bindings: {
titleText: '@',

View File

@@ -1,3 +1,5 @@
import _ from 'lodash-es';
angular.module('portainer.docker')
.controller('JobsDatatableController', ['$q', '$state', 'PaginationService', 'DatatableService', 'ContainerService', 'ModalService', 'Notifications',
function ($q, $state, PaginationService, DatatableService, ContainerService, ModalService, Notifications) {
@@ -73,7 +75,7 @@ angular.module('portainer.docker')
for (var i = 0; i < datasetFilters.length; i++) {
var filter = datasetFilters[i];
existingFilter = _.find(storedFilters, ['label', filter.label]);
var existingFilter = _.find(storedFilters, ['label', filter.label]);
if (existingFilter && !existingFilter.display) {
filter.display = existingFilter.display;
this.filters.state.enabled = true;

View File

@@ -1,5 +1,5 @@
angular.module('portainer.docker').component('imagesDatatable', {
templateUrl: 'app/docker/components/datatables/images-datatable/imagesDatatable.html',
templateUrl: './imagesDatatable.html',
controller: 'ImagesDatatableController',
bindings: {
titleText: '@',

View File

@@ -1,5 +1,5 @@
angular.module('portainer.docker').component('macvlanNodesDatatable', {
templateUrl: 'app/docker/components/datatables/macvlan-nodes-datatable/macvlanNodesDatatable.html',
templateUrl: './macvlanNodesDatatable.html',
controller: 'GenericDatatableController',
bindings: {
titleText: '@',

View File

@@ -1,5 +1,5 @@
angular.module('portainer.docker').component('networksDatatable', {
templateUrl: 'app/docker/components/datatables/networks-datatable/networksDatatable.html',
templateUrl: './networksDatatable.html',
controller: 'NetworksDatatableController',
bindings: {
titleText: '@',

View File

@@ -1,5 +1,5 @@
angular.module('portainer.docker').component('nodeTasksDatatable', {
templateUrl: 'app/docker/components/datatables/node-tasks-datatable/nodeTasksDatatable.html',
templateUrl: './nodeTasksDatatable.html',
controller: 'GenericDatatableController',
bindings: {
titleText: '@',

View File

@@ -1,5 +1,5 @@
angular.module('portainer.docker').component('nodesDatatable', {
templateUrl: 'app/docker/components/datatables/nodes-datatable/nodesDatatable.html',
templateUrl: './nodesDatatable.html',
controller: 'GenericDatatableController',
bindings: {
titleText: '@',

View File

@@ -1,5 +1,5 @@
angular.module('portainer.docker').component('secretsDatatable', {
templateUrl: 'app/docker/components/datatables/secrets-datatable/secretsDatatable.html',
templateUrl: './secretsDatatable.html',
controller: 'GenericDatatableController',
bindings: {
titleText: '@',

View File

@@ -1,5 +1,5 @@
angular.module('portainer.docker').component('serviceTasksDatatable', {
templateUrl: 'app/docker/components/datatables/service-tasks-datatable/serviceTasksDatatable.html',
templateUrl: './serviceTasksDatatable.html',
controller: 'ServiceTasksDatatableController',
bindings: {
dataset: '<',

View File

@@ -1,3 +1,5 @@
import _ from 'lodash-es';
angular.module('portainer.docker')
.controller('ServiceTasksDatatableController', ['DatatableService',
function (DatatableService) {

View File

@@ -1,5 +1,5 @@
angular.module('portainer.docker').component('servicesDatatableActions', {
templateUrl: 'app/docker/components/datatables/services-datatable/actions/servicesDatatableActions.html',
templateUrl: './servicesDatatableActions.html',
controller: 'ServicesDatatableActionsController',
bindings: {
selectedItems: '=',

View File

@@ -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: '@',

View File

@@ -1,3 +1,5 @@
import _ from 'lodash-es';
angular.module('portainer.docker')
.controller('ServicesDatatableController', ['PaginationService', 'DatatableService', 'EndpointProvider',
function (PaginationService, DatatableService, EndpointProvider) {

View File

@@ -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: '@',

View File

@@ -1,5 +1,5 @@
angular.module('portainer.docker').component('volumesDatatable', {
templateUrl: 'app/docker/components/datatables/volumes-datatable/volumesDatatable.html',
templateUrl: './volumesDatatable.html',
controller: 'VolumesDatatableController',
bindings: {
titleText: '@',

View File

@@ -1,5 +1,5 @@
angular.module('portainer.docker').component('dockerSidebarContent', {
templateUrl: 'app/docker/components/dockerSidebarContent/dockerSidebarContent.html',
templateUrl: './dockerSidebarContent.html',
bindings: {
endpointApiVersion: '<',
swarmManagement: '<',

View File

@@ -1,5 +1,5 @@
angular.module('portainer.docker').component('hostOverview', {
templateUrl: 'app/docker/components/host-overview/host-overview.html',
templateUrl: './host-overview.html',
bindings: {
hostDetails: '<',
engineDetails: '<',

View File

@@ -1,6 +1,5 @@
angular.module('portainer.docker').component('devicesPanel', {
templateUrl:
'app/docker/components/host-view-panels/devices-panel/devices-panel.html',
templateUrl: './devices-panel.html',
bindings: {
devices: '<'
}

View File

@@ -1,6 +1,5 @@
angular.module('portainer.docker').component('disksPanel', {
templateUrl:
'app/docker/components/host-view-panels/disks-panel/disks-panel.html',
templateUrl: './disks-panel.html',
bindings: {
disks: '<'
}

View File

@@ -1,6 +1,5 @@
angular.module('portainer.docker').component('engineDetailsPanel', {
templateUrl:
'app/docker/components/host-view-panels/engine-details-panel/engine-details-panel.html',
templateUrl: './engine-details-panel.html',
bindings: {
engine: '<'
}

View File

@@ -1,5 +1,5 @@
angular.module('portainer.docker').component('hostDetailsPanel', {
templateUrl: 'app/docker/components/host-view-panels/host-details-panel/host-details-panel.html',
templateUrl: './host-details-panel.html',
bindings: {
host: '<',
isJobEnabled: '<',

View File

@@ -1,6 +1,5 @@
angular.module('portainer.docker').component('nodeAvailabilitySelect', {
templateUrl:
'app/docker/components/host-view-panels/node-availability-select/node-availability-select.html',
templateUrl: './node-availability-select.html',
controller: 'NodeAvailabilitySelectController',
bindings: {
availability: '<',

View File

@@ -1,6 +1,5 @@
angular.module('portainer.docker').component('nodeLabelsTable', {
templateUrl:
'app/docker/components/host-view-panels/node-labels-table/node-labels-table.html',
templateUrl: './node-labels-table.html',
controller: 'NodeLabelsTableController',
bindings: {
labels: '<',

View File

@@ -1,6 +1,5 @@
angular.module('portainer.docker').component('swarmNodeDetailsPanel', {
templateUrl:
'app/docker/components/host-view-panels/swarm-node-details-panel/swarm-node-details-panel.html',
templateUrl: './swarm-node-details-panel.html',
controller: 'SwarmNodeDetailsPanelController',
bindings: {
details: '<',

View File

@@ -1,5 +1,5 @@
angular.module('portainer.docker').component('porImageRegistry', {
templateUrl: 'app/docker/components/imageRegistry/porImageRegistry.html',
templateUrl: './porImageRegistry.html',
controller: 'porImageRegistryController',
bindings: {
'image': '=',

View File

@@ -1,3 +1,5 @@
import _ from 'lodash-es';
angular.module('portainer.docker')
.controller('porImageRegistryController', ['$q', 'RegistryService', 'DockerHubService', 'ImageService', 'Notifications',
function ($q, RegistryService, DockerHubService, ImageService, Notifications) {

View File

@@ -1,5 +1,5 @@
angular.module('portainer.docker').component('logViewer', {
templateUrl: 'app/docker/components/log-viewer/logViewer.html',
templateUrl: './logViewer.html',
controller: 'LogViewerController',
bindings: {
data: '=',

View File

@@ -1,3 +1,5 @@
import moment from 'moment';
angular.module('portainer.docker')
.controller('LogViewerController', ['clipboard',
function (clipboard) {

View File

@@ -1,5 +1,5 @@
angular.module('portainer.docker').component('networkMacvlanForm', {
templateUrl: 'app/docker/components/network-macvlan-form/networkMacvlanForm.html',
templateUrl: './networkMacvlanForm.html',
controller: 'NetworkMacvlanFormController',
bindings: {
data: '=',

View File

@@ -1,4 +1,4 @@
function MacvlanFormData() {
export function MacvlanFormData() {
this.Scope = 'local';
this.SelectedNetworkConfig = '';
this.DatatableState = {

View File

@@ -1,5 +1,5 @@
angular.module('portainer.docker').component('volumesNfsForm', {
templateUrl: 'app/docker/components/volumesNFSForm/volumesnfsForm.html',
templateUrl: './volumesnfsForm.html',
bindings: {
data: '='
}

View File

@@ -1,4 +1,4 @@
function VolumesNFSFormData() {
export function VolumesNFSFormData() {
this.useNFS = false;
this.serverAddress = '';
this.mountPoint = '';

View File

@@ -1,3 +1,5 @@
import _ from 'lodash-es';
function includeString(text, values) {
return values.some(function(val){
return text.indexOf(val) !== -1;
@@ -258,7 +260,7 @@ angular.module('portainer.docker')
.filter('imagelayercommand', function () {
'use strict';
return function (createdBy) {
return createdBy.replace('/bin/sh -c #(nop) ', '').replace('/bin/sh -c ', 'RUN ');
return createdBy.replace('/bin/sh -c #(nop) ', '').replace('/bin/sh -c ', 'RUN ');
};
})
.filter('trimshasum', function () {

View File

@@ -1,3 +1,5 @@
import _ from 'lodash-es';
function ConstraintModel(op, key, value) {
this.op = op;
this.value = value;

View File

@@ -1,4 +1,7 @@
angular.module('portainer.docker').factory('ContainerHelper', [function ContainerHelperFactory() {
import splitargs from 'splitargs/src/splitargs'
angular.module('portainer.docker')
.factory('ContainerHelper', [function ContainerHelperFactory() {
'use strict';
var helper = {};

View File

@@ -1,3 +1,5 @@
import _ from 'lodash-es';
angular.module('portainer.docker')
.factory('ImageHelper', [function ImageHelperFactory() {
'use strict';

View File

@@ -1,3 +1,5 @@
import _ from 'lodash-es';
angular.module('portainer.docker')
.factory('InfoHelper', [function InfoHelperFactory() {
'use strict';

View File

@@ -1,3 +1,5 @@
import moment from 'moment';
angular.module('portainer.docker')
.factory('ServiceHelper', [function ServiceHelperFactory() {
'use strict';

View File

@@ -1,4 +1,6 @@
function ConfigViewModel(data) {
import { ResourceControlViewModel } from '../../portainer/models/resourceControl';
export function ConfigViewModel(data) {
this.Id = data.ID;
this.CreatedAt = data.CreatedAt;
this.UpdatedAt = data.UpdatedAt;

View File

@@ -1,4 +1,7 @@
function createStatus(statusText) {
import _ from 'lodash-es';
import { ResourceControlViewModel } from '../../portainer/models/resourceControl';
export function createStatus(statusText) {
var status = _.toLower(statusText);
if (status.indexOf('paused') > -1) {
@@ -19,7 +22,7 @@ function createStatus(statusText) {
return 'running';
}
function ContainerViewModel(data) {
export function ContainerViewModel(data) {
this.Id = data.Id;
this.Status = createStatus(data.Status);
this.State = data.State;
@@ -62,7 +65,7 @@ function ContainerViewModel(data) {
}
}
function ContainerStatsViewModel(data) {
export function ContainerStatsViewModel(data) {
this.read = data.read;
this.preread = data.preread;
if(data.memory_stats.privateworkingset !== undefined) { // Windows
@@ -88,7 +91,7 @@ function ContainerStatsViewModel(data) {
this.Networks = _.values(data.networks);
}
function ContainerDetailsViewModel(data) {
export function ContainerDetailsViewModel(data) {
this.Model = data;
this.Id = data.Id;
this.State = data.State;

View File

@@ -38,7 +38,7 @@ var capDesc = {
'BLOCK_SUSPEND': 'Employ features that can block system suspend.'
};
function ContainerCapabilities() {
export function ContainerCapabilities() {
// all capabilities can be found at https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities
return [
new ContainerCapability('SETPCAP', true),
@@ -83,7 +83,7 @@ function ContainerCapabilities() {
});
}
function ContainerCapability(cap, allowed) {
export function ContainerCapability(cap, allowed) {
this.capability = cap;
this.allowed = allowed;
this.description = capDesc[cap];

View File

@@ -149,7 +149,7 @@ function createEventDetails(event) {
return details;
}
function EventViewModel(data) {
export function EventViewModel(data) {
// Type, Action, Actor unavailable in Docker < 1.10
this.Time = data.time;
if (data.Type) {

View File

@@ -1,4 +1,4 @@
function ImageViewModel(data) {
export function ImageViewModel(data) {
this.Id = data.Id;
this.Tag = data.Tag;
this.Repository = data.Repository;
@@ -23,7 +23,7 @@ function ImageViewModel(data) {
}
}
function ImageBuildModel(data) {
export function ImageBuildModel(data) {
this.hasError = false;
var buildLogs = [];

View File

@@ -1,4 +1,4 @@
function ImageDetailsViewModel(data) {
export function ImageDetailsViewModel(data) {
this.Id = data.Id;
this.Tag = data.Tag;
this.Parent = data.Parent;

View File

@@ -1,4 +1,4 @@
function ImageLayerViewModel(order, data) {
export function ImageLayerViewModel(order, data) {
this.Order = order;
this.Id = data.Id;
this.Created = data.Created;

View File

@@ -1,4 +1,6 @@
function NetworkViewModel(data) {
import { ResourceControlViewModel } from "../../portainer/models/resourceControl";
export function NetworkViewModel(data) {
this.Id = data.Id;
this.Name = data.Name;
this.Scope = data.Scope;

View File

@@ -1,4 +1,4 @@
function NodeViewModel(data) {
export function NodeViewModel(data) {
this.Model = data;
this.Id = data.ID;
this.Version = data.Version.Index;

View File

@@ -1,7 +1,7 @@
// This model is based on https://github.com/moby/moby/blob/0ac25dfc751fa4304ab45afd5cd8705c2235d101/api/types/plugin.go#L8-L31
// instead of the official documentation.
// See: https://github.com/moby/moby/issues/34241
function PluginViewModel(data) {
export function PluginViewModel(data) {
this.Id = data.Id;
this.Name = data.Name;
this.Enabled = data.Enabled;

View File

@@ -1,4 +1,6 @@
function SecretViewModel(data) {
import { ResourceControlViewModel } from '../../portainer/models/resourceControl'
export function SecretViewModel(data) {
this.Id = data.ID;
this.CreatedAt = data.CreatedAt;
this.UpdatedAt = data.UpdatedAt;

View File

@@ -1,4 +1,6 @@
function ServiceViewModel(data, runningTasks, allTasks) {
import { ResourceControlViewModel } from '../../portainer/models/resourceControl';
export function ServiceViewModel(data, runningTasks, allTasks) {
this.Model = data;
this.Id = data.ID;
this.Tasks = [];

View File

@@ -1,3 +1,3 @@
function SwarmViewModel(data) {
export function SwarmViewModel(data) {
this.Id = data.ID;
}

View File

@@ -1,4 +1,4 @@
function TaskViewModel(data) {
export function TaskViewModel(data) {
this.Id = data.ID;
this.Created = data.CreatedAt;
this.Updated = data.UpdatedAt;

View File

@@ -1,4 +1,6 @@
function VolumeViewModel(data) {
import { ResourceControlViewModel } from "../../portainer/models/resourceControl";
export function VolumeViewModel(data) {
this.Id = data.Name;
this.CreatedAt = data.CreatedAt;
this.Driver = data.Driver;

View File

@@ -1,3 +1,5 @@
import { jsonObjectsToArrayHandler } from './response/handlers';
angular.module('portainer.docker')
.factory('Build', ['$resource', 'API_ENDPOINT_ENDPOINTS', 'EndpointProvider', function BuildFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {
'use strict';

Some files were not shown because too many files have changed in this diff Show More