refactor(app): introduce webpack and babel (#2407)
* feat(agent): add new host page * feat(agent): convert volume-browser to files-datatable * fix(agent): browse folders in file-datatable * feat(engine-details): replace engine view with host view * feat(engine-details): remove old panels * feat(engine-details): add basic engine-details-panel component * feat(engine-details): pass details to the different components * feat(engine-details): replace host-view with host-overview * feat(engine-details): add commaseperated filter * feat(engine-details): add host-view container component * feat(engine-details): add host-details component * feat(engine-details): build host details object * feat(engine-details): format engine version * feat(engine-details): get details for one node * feat(engine-details): pass is-agent from view * feat(engine-details): replace old node view with a new component * feat(engine-details): add swarm-node-details component * feat(engine-details): remove isSwarm binding * feat(engine-details): remove node-details and include in parent * feat(engine-details): add labels-table component * feat(engine-details): add update node service * feat(engine-details): add update label functionality * style(engine-details): remove whitespaces * feat(engine-details): remove old node page * feat(engine-details): pass is agent to host details * feat(host-details): hide missing info * feat(host-details): update node availability * style(host-details): remove obsolete event object * feat(host-details): fix labels not sending * feat(host-details): remove flags for hiding data * feat(host-details): create mock call to server for agent host info * style(host-details): fix spelling mistake in filter's name * feat(host-details): get info from agent * feat(host-details): hide engine labels when empty * feat(node-details): move labels table and save button * feat(host-info): add different urls for refresh * feat(host-details): show disk/devices info for agent * feat(host-view): add loading indicator to devices-panel * feat(host-details): add loading indicator to disks panel * feat(agent): fix browse volume * feat(agent): browse files * feat(agent): enable rename * feat(agent): download file * fix(agent): download file from root * feat(agent): delete file * style(agent): remove whitespaces * fix(agent): fix link on node browser * feat(agent): basic file uploader * feat(agent): add basic file upload * fix(volume-browser): move volume id to query params * feat(node-browser): moved uploader into browser * feat(node-browser): add upload spinner * feat(agent): browse files relative to root * feat(build): add webpack build config * feat(build): add missing imports * feat(webpack): add missing imports * feat(build): enable eslint on build * feat(build): add webpack notifier * feat(build): clean terminal on build * feat(build): import all globals * feat(build): add angular import * feat(build): fix styles * feat(build): load favicons * feat(build): load css before script * feat(webpack): split vendors css and js to a different bundle * feat(webpack): import angular in all files * feat(webpack): remove eslint global config * feat(webpack): add webpack clean dist * feat(webpack): fix styling issues * refactor(webpack): remove empty controllers * refactor(webpack): optimize moment * refactor(webpack): add bundle analyzer * feat(webpack): add babel * refactor(webpack): optimize lodash * refactor(toastr): update toastr * feat(webpack): create basic production and dev config * fix(webpack): fix production config * fix(webpack): fix html templates url * refactor(webpack): remove angular imports * refactor(webpack): remove more angular imports * refactor(webpack): return angular to entry file * style(webpack): remove comments from config * fix(hosts): remove browse button * fix(webpack): import lodash * fix(webpack): import missing htmls * feat(webpack): reduce lodash size * feat(webpack): config grunt to use webpack * feat(webpack): add postcss * chore(codeclimate): use eslint-5 channel * feat(deps): upgrade from lodash to lodash-es * fix(webpack): fix bug with lodash * chore(build): add build client script * fix(webpack): fix missing jsyaml reference * refactor(webpack): seperate builds of img files * chore(build): add a way to check times of webpack build * feat(webpack): add dev server * fix(webpack): fix css output name * chore(webpack): optimize images * chore(webpack): add node env * fix(build): copy templates on release * chore(webpack): set env NODE_ENV * feat(webpack): set NODE_ENV on production builds * fix(extensions): set image path * refactor(css): move vendor css to js import * style(app): remove whitespaces * 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 * dep(build-system): add angularjs-annotate to webpack + fix on imports * Merge branch 'develop' into webpack * refactor(app): webpack aliases for imports + async / await dep + start refactor * style(extensions): use develop version of the view * fix(app): fix several issues introduced by webpack migration * fix(webpack): fix ng-include not loading templates with webpack * Fix Windows CI with Webpack (#2782) * fix(configs): refactor broke configs creation and list views * fix(build-system): update build_binary_devops for Windowspull/2811/head
parent
14845a4a53
commit
45113a7ff4
|
@ -0,0 +1,12 @@
|
||||||
|
{
|
||||||
|
"plugins": ["lodash", "angularjs-annotate"],
|
||||||
|
"presets": [
|
||||||
|
[
|
||||||
|
"@babel/preset-env",
|
||||||
|
{
|
||||||
|
"modules": false,
|
||||||
|
"useBuiltIns": "usage"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -53,6 +53,7 @@ plugins:
|
||||||
mass_threshold: 80
|
mass_threshold: 80
|
||||||
eslint:
|
eslint:
|
||||||
enabled: true
|
enabled: true
|
||||||
|
channel: "eslint-5"
|
||||||
config:
|
config:
|
||||||
config: .eslintrc.yml
|
config: .eslintrc.yml
|
||||||
fixme:
|
fixme:
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
node_modules/
|
||||||
|
dist/
|
||||||
|
test/
|
547
.eslintrc.yml
547
.eslintrc.yml
|
@ -1,287 +1,290 @@
|
||||||
env:
|
env:
|
||||||
browser: true
|
browser: true
|
||||||
jquery: true
|
jquery: true
|
||||||
|
node: true
|
||||||
|
|
||||||
|
globals:
|
||||||
|
angular: true
|
||||||
|
|
||||||
# globals:
|
|
||||||
# angular: true
|
|
||||||
# $: true
|
|
||||||
# _: true
|
|
||||||
# moment: true
|
|
||||||
# filesize: true
|
|
||||||
# splitargs: true
|
|
||||||
extends:
|
extends:
|
||||||
- 'eslint:recommended'
|
- 'eslint:recommended'
|
||||||
|
|
||||||
# http://eslint.org/docs/rules/
|
parserOptions:
|
||||||
|
ecmaVersion: 2018
|
||||||
|
sourceType: module
|
||||||
|
ecmaFeatures:
|
||||||
|
modules: true
|
||||||
|
|
||||||
|
# # http://eslint.org/docs/rules/
|
||||||
rules:
|
rules:
|
||||||
# Possible Errors
|
# # Possible Errors
|
||||||
no-await-in-loop: off
|
# no-await-in-loop: off
|
||||||
no-cond-assign: error
|
# no-cond-assign: error
|
||||||
no-console: off
|
# no-console: off
|
||||||
no-constant-condition: error
|
# no-constant-condition: error
|
||||||
no-control-regex: error
|
# no-control-regex: error
|
||||||
no-debugger: error
|
# no-debugger: error
|
||||||
no-dupe-args: error
|
# no-dupe-args: error
|
||||||
no-dupe-keys: error
|
# no-dupe-keys: error
|
||||||
no-duplicate-case: error
|
# no-duplicate-case: error
|
||||||
no-empty-character-class: error
|
# no-empty-character-class: error
|
||||||
no-empty: error
|
no-empty: warn
|
||||||
no-ex-assign: error
|
# no-ex-assign: error
|
||||||
no-extra-boolean-cast: error
|
# no-extra-boolean-cast: error
|
||||||
no-extra-parens: off
|
# no-extra-parens: off
|
||||||
no-extra-semi: error
|
# no-extra-semi: error
|
||||||
no-func-assign: error
|
# no-func-assign: error
|
||||||
no-inner-declarations:
|
# no-inner-declarations:
|
||||||
- error
|
# - error
|
||||||
- functions
|
# - functions
|
||||||
no-invalid-regexp: error
|
# no-invalid-regexp: error
|
||||||
no-irregular-whitespace: error
|
# no-irregular-whitespace: error
|
||||||
no-negated-in-lhs: error
|
# no-negated-in-lhs: error
|
||||||
no-obj-calls: error
|
# no-obj-calls: error
|
||||||
no-prototype-builtins: off
|
# no-prototype-builtins: off
|
||||||
no-regex-spaces: error
|
# no-regex-spaces: error
|
||||||
no-sparse-arrays: error
|
# no-sparse-arrays: error
|
||||||
no-template-curly-in-string: off
|
# no-template-curly-in-string: off
|
||||||
no-unexpected-multiline: error
|
# no-unexpected-multiline: error
|
||||||
no-unreachable: error
|
# no-unreachable: error
|
||||||
no-unsafe-finally: off
|
# no-unsafe-finally: off
|
||||||
no-unsafe-negation: off
|
# no-unsafe-negation: off
|
||||||
use-isnan: error
|
# use-isnan: error
|
||||||
valid-jsdoc: off
|
# valid-jsdoc: off
|
||||||
valid-typeof: error
|
# valid-typeof: error
|
||||||
|
|
||||||
# Best Practices
|
# # Best Practices
|
||||||
accessor-pairs: error
|
# accessor-pairs: error
|
||||||
array-callback-return: off
|
# array-callback-return: off
|
||||||
block-scoped-var: off
|
# block-scoped-var: off
|
||||||
class-methods-use-this: off
|
# class-methods-use-this: off
|
||||||
complexity:
|
# complexity:
|
||||||
- error
|
# - error
|
||||||
- 6
|
# - 6
|
||||||
consistent-return: off
|
# consistent-return: off
|
||||||
curly: off
|
# curly: off
|
||||||
default-case: off
|
# default-case: off
|
||||||
dot-location: off
|
# dot-location: off
|
||||||
dot-notation: off
|
# dot-notation: off
|
||||||
eqeqeq: error
|
# eqeqeq: error
|
||||||
guard-for-in: error
|
# guard-for-in: error
|
||||||
no-alert: error
|
# no-alert: error
|
||||||
no-caller: error
|
# no-caller: error
|
||||||
no-case-declarations: error
|
# no-case-declarations: error
|
||||||
no-div-regex: error
|
# no-div-regex: error
|
||||||
no-else-return: off
|
# no-else-return: off
|
||||||
no-empty-function: off
|
no-empty-function: warn
|
||||||
no-empty-pattern: error
|
# no-empty-pattern: error
|
||||||
no-eq-null: error
|
# no-eq-null: error
|
||||||
no-eval: error
|
# no-eval: error
|
||||||
no-extend-native: error
|
# no-extend-native: error
|
||||||
no-extra-bind: error
|
# no-extra-bind: error
|
||||||
no-extra-label: off
|
# no-extra-label: off
|
||||||
no-fallthrough: error
|
# no-fallthrough: error
|
||||||
no-floating-decimal: off
|
# no-floating-decimal: off
|
||||||
no-global-assign: off
|
# no-global-assign: off
|
||||||
no-implicit-coercion: off
|
# no-implicit-coercion: off
|
||||||
no-implied-eval: error
|
# no-implied-eval: error
|
||||||
no-invalid-this: off
|
# no-invalid-this: off
|
||||||
no-iterator: error
|
# no-iterator: error
|
||||||
no-labels:
|
# no-labels:
|
||||||
- error
|
# - error
|
||||||
- allowLoop: true
|
# - allowLoop: true
|
||||||
allowSwitch: true
|
# allowSwitch: true
|
||||||
no-lone-blocks: error
|
# no-lone-blocks: error
|
||||||
no-loop-func: error
|
# no-loop-func: error
|
||||||
no-magic-number: off
|
# no-magic-number: off
|
||||||
no-multi-spaces: off
|
# no-multi-spaces: off
|
||||||
no-multi-str: off
|
# no-multi-str: off
|
||||||
no-native-reassign: error
|
# no-native-reassign: error
|
||||||
no-new-func: error
|
# no-new-func: error
|
||||||
no-new-wrappers: error
|
# no-new-wrappers: error
|
||||||
no-new: error
|
# no-new: error
|
||||||
no-octal-escape: error
|
# no-octal-escape: error
|
||||||
no-octal: error
|
# no-octal: error
|
||||||
no-param-reassign: off
|
# no-param-reassign: off
|
||||||
no-proto: error
|
# no-proto: error
|
||||||
no-redeclare: error
|
# no-redeclare: error
|
||||||
no-restricted-properties: off
|
# no-restricted-properties: off
|
||||||
no-return-assign: error
|
# no-return-assign: error
|
||||||
no-return-await: off
|
# no-return-await: off
|
||||||
no-script-url: error
|
# no-script-url: error
|
||||||
no-self-assign: off
|
# no-self-assign: off
|
||||||
no-self-compare: error
|
# no-self-compare: error
|
||||||
no-sequences: off
|
# no-sequences: off
|
||||||
no-throw-literal: off
|
# no-throw-literal: off
|
||||||
no-unmodified-loop-condition: off
|
# no-unmodified-loop-condition: off
|
||||||
no-unused-expressions: error
|
# no-unused-expressions: error
|
||||||
no-unused-labels: off
|
# no-unused-labels: off
|
||||||
no-useless-call: error
|
# no-useless-call: error
|
||||||
no-useless-concat: error
|
# no-useless-concat: error
|
||||||
no-useless-escape: off
|
no-useless-escape: off
|
||||||
no-useless-return: off
|
# no-useless-return: off
|
||||||
no-void: error
|
# no-void: error
|
||||||
no-warning-comments: off
|
# no-warning-comments: off
|
||||||
no-with: error
|
# no-with: error
|
||||||
prefer-promise-reject-errors: off
|
# prefer-promise-reject-errors: off
|
||||||
radix: error
|
# radix: error
|
||||||
require-await: off
|
# require-await: off
|
||||||
vars-on-top: off
|
# vars-on-top: off
|
||||||
wrap-iife: error
|
# wrap-iife: error
|
||||||
yoda: off
|
# yoda: off
|
||||||
|
|
||||||
# Strict
|
# # Strict
|
||||||
strict: off
|
# strict: off
|
||||||
|
|
||||||
# Variables
|
# # Variables
|
||||||
init-declarations: off
|
# init-declarations: off
|
||||||
no-catch-shadow: error
|
# no-catch-shadow: error
|
||||||
no-delete-var: error
|
# no-delete-var: error
|
||||||
no-label-var: error
|
# no-label-var: error
|
||||||
no-restricted-globals: off
|
# no-restricted-globals: off
|
||||||
no-shadow-restricted-names: error
|
# no-shadow-restricted-names: error
|
||||||
no-shadow: off
|
# no-shadow: off
|
||||||
no-undef-init: error
|
# no-undef-init: error
|
||||||
no-undef: off
|
# no-undef: off
|
||||||
no-undefined: off
|
# no-undefined: off
|
||||||
no-unused-vars:
|
# no-unused-vars:
|
||||||
- warn
|
# - warn
|
||||||
-
|
# -
|
||||||
vars: local
|
# vars: local
|
||||||
no-use-before-define: off
|
# no-use-before-define: off
|
||||||
|
|
||||||
# Node.js and CommonJS
|
# # Node.js and CommonJS
|
||||||
callback-return: error
|
# callback-return: error
|
||||||
global-require: error
|
# global-require: error
|
||||||
handle-callback-err: error
|
# handle-callback-err: error
|
||||||
no-mixed-requires: off
|
# no-mixed-requires: off
|
||||||
no-new-require: off
|
# no-new-require: off
|
||||||
no-path-concat: error
|
# no-path-concat: error
|
||||||
no-process-env: off
|
# no-process-env: off
|
||||||
no-process-exit: error
|
# no-process-exit: error
|
||||||
no-restricted-modules: off
|
# no-restricted-modules: off
|
||||||
no-sync: off
|
# no-sync: off
|
||||||
|
|
||||||
# Stylistic Issues
|
# # Stylistic Issues
|
||||||
array-bracket-spacing: off
|
# array-bracket-spacing: off
|
||||||
block-spacing: off
|
# block-spacing: off
|
||||||
brace-style: off
|
# brace-style: off
|
||||||
camelcase: off
|
# camelcase: off
|
||||||
capitalized-comments: off
|
# capitalized-comments: off
|
||||||
comma-dangle:
|
# comma-dangle:
|
||||||
- error
|
# - error
|
||||||
- never
|
# - never
|
||||||
comma-spacing: off
|
# comma-spacing: off
|
||||||
comma-style: off
|
# comma-style: off
|
||||||
computed-property-spacing: off
|
# computed-property-spacing: off
|
||||||
consistent-this: off
|
# consistent-this: off
|
||||||
eol-last: off
|
# eol-last: off
|
||||||
func-call-spacing: off
|
# func-call-spacing: off
|
||||||
func-name-matching: off
|
# func-name-matching: off
|
||||||
func-names: off
|
# func-names: off
|
||||||
func-style: off
|
# func-style: off
|
||||||
id-length: off
|
# id-length: off
|
||||||
id-match: off
|
# id-match: off
|
||||||
indent: off
|
# indent: off
|
||||||
jsx-quotes: off
|
# jsx-quotes: off
|
||||||
key-spacing: off
|
# key-spacing: off
|
||||||
keyword-spacing: off
|
# keyword-spacing: off
|
||||||
line-comment-position: off
|
# line-comment-position: off
|
||||||
linebreak-style:
|
# linebreak-style:
|
||||||
- error
|
# - error
|
||||||
- unix
|
# - unix
|
||||||
lines-around-comment: off
|
# lines-around-comment: off
|
||||||
lines-around-directive: off
|
# lines-around-directive: off
|
||||||
max-depth: off
|
# max-depth: off
|
||||||
max-len: off
|
# max-len: off
|
||||||
max-nested-callbacks: off
|
# max-nested-callbacks: off
|
||||||
max-params: off
|
# max-params: off
|
||||||
max-statements-per-line: off
|
# max-statements-per-line: off
|
||||||
max-statements:
|
# max-statements:
|
||||||
- error
|
# - error
|
||||||
- 30
|
# - 30
|
||||||
multiline-ternary: off
|
# multiline-ternary: off
|
||||||
new-cap: off
|
# new-cap: off
|
||||||
new-parens: off
|
# new-parens: off
|
||||||
newline-after-var: off
|
# newline-after-var: off
|
||||||
newline-before-return: off
|
# newline-before-return: off
|
||||||
newline-per-chained-call: off
|
# newline-per-chained-call: off
|
||||||
no-array-constructor: off
|
# no-array-constructor: off
|
||||||
no-bitwise: off
|
# no-bitwise: off
|
||||||
no-continue: off
|
# no-continue: off
|
||||||
no-inline-comments: off
|
# no-inline-comments: off
|
||||||
no-lonely-if: off
|
# no-lonely-if: off
|
||||||
no-mixed-operators: off
|
# no-mixed-operators: off
|
||||||
no-mixed-spaces-and-tabs: off
|
# no-mixed-spaces-and-tabs: off
|
||||||
no-multi-assign: off
|
# no-multi-assign: off
|
||||||
no-multiple-empty-lines: off
|
# no-multiple-empty-lines: off
|
||||||
no-negated-condition: off
|
# no-negated-condition: off
|
||||||
no-nested-ternary: off
|
# no-nested-ternary: off
|
||||||
no-new-object: off
|
# no-new-object: off
|
||||||
no-plusplus: off
|
# no-plusplus: off
|
||||||
no-restricted-syntax: off
|
# no-restricted-syntax: off
|
||||||
no-spaced-func: off
|
# no-spaced-func: off
|
||||||
no-tabs: off
|
# no-tabs: off
|
||||||
no-ternary: off
|
# no-ternary: off
|
||||||
no-trailing-spaces: off
|
# no-trailing-spaces: off
|
||||||
no-underscore-dangle: off
|
# no-underscore-dangle: off
|
||||||
no-unneeded-ternary: off
|
# no-unneeded-ternary: off
|
||||||
object-curly-newline: off
|
# object-curly-newline: off
|
||||||
object-curly-spacing: off
|
# object-curly-spacing: off
|
||||||
object-property-newline: off
|
# object-property-newline: off
|
||||||
one-var-declaration-per-line: off
|
# one-var-declaration-per-line: off
|
||||||
one-var: off
|
# one-var: off
|
||||||
operator-assignment: off
|
# operator-assignment: off
|
||||||
operator-linebreak: off
|
# operator-linebreak: off
|
||||||
padded-blocks: off
|
# padded-blocks: off
|
||||||
quote-props: off
|
# quote-props: off
|
||||||
quotes:
|
# quotes:
|
||||||
- error
|
# - error
|
||||||
- single
|
# - single
|
||||||
require-jsdoc: off
|
# require-jsdoc: off
|
||||||
semi-spacing: off
|
# semi-spacing: off
|
||||||
semi:
|
# semi:
|
||||||
- error
|
# - error
|
||||||
- always
|
# - always
|
||||||
sort-keys: off
|
# sort-keys: off
|
||||||
sort-vars: off
|
# sort-vars: off
|
||||||
space-before-blocks: off
|
# space-before-blocks: off
|
||||||
space-before-function-paren: off
|
# space-before-function-paren: off
|
||||||
space-in-parens: off
|
# space-in-parens: off
|
||||||
space-infix-ops: off
|
# space-infix-ops: off
|
||||||
space-unary-ops: off
|
# space-unary-ops: off
|
||||||
spaced-comment: off
|
# spaced-comment: off
|
||||||
template-tag-spacing: off
|
# template-tag-spacing: off
|
||||||
unicode-bom: off
|
# unicode-bom: off
|
||||||
wrap-regex: off
|
# wrap-regex: off
|
||||||
|
|
||||||
# ECMAScript 6
|
# # ECMAScript 6
|
||||||
arrow-body-style: off
|
# arrow-body-style: off
|
||||||
arrow-parens: off
|
# arrow-parens: off
|
||||||
arrow-spacing: off
|
# arrow-spacing: off
|
||||||
constructor-super: off
|
# constructor-super: off
|
||||||
generator-star-spacing: off
|
# generator-star-spacing: off
|
||||||
no-class-assign: off
|
# no-class-assign: off
|
||||||
no-confusing-arrow: off
|
# no-confusing-arrow: off
|
||||||
no-const-assign: off
|
# no-const-assign: off
|
||||||
no-dupe-class-members: off
|
# no-dupe-class-members: off
|
||||||
no-duplicate-imports: off
|
# no-duplicate-imports: off
|
||||||
no-new-symbol: off
|
# no-new-symbol: off
|
||||||
no-restricted-imports: off
|
# no-restricted-imports: off
|
||||||
no-this-before-super: off
|
# no-this-before-super: off
|
||||||
no-useless-computed-key: off
|
# no-useless-computed-key: off
|
||||||
no-useless-constructor: off
|
# no-useless-constructor: off
|
||||||
no-useless-rename: off
|
# no-useless-rename: off
|
||||||
no-var: off
|
# no-var: off
|
||||||
object-shorthand: off
|
# object-shorthand: off
|
||||||
prefer-arrow-callback: off
|
# prefer-arrow-callback: off
|
||||||
prefer-const: off
|
# prefer-const: off
|
||||||
prefer-destructuring: off
|
# prefer-destructuring: off
|
||||||
prefer-numeric-literals: off
|
# prefer-numeric-literals: off
|
||||||
prefer-rest-params: off
|
# prefer-rest-params: off
|
||||||
prefer-reflect: off
|
# prefer-reflect: off
|
||||||
prefer-spread: off
|
# prefer-spread: off
|
||||||
prefer-template: off
|
# prefer-template: off
|
||||||
require-yield: off
|
# require-yield: off
|
||||||
rest-spread-spacing: off
|
# rest-spread-spacing: off
|
||||||
sort-imports: off
|
# sort-imports: off
|
||||||
symbol-description: off
|
# symbol-description: off
|
||||||
template-curly-spacing: off
|
# template-curly-spacing: off
|
||||||
yield-star-spacing: off
|
# yield-star-spacing: off
|
||||||
|
|
|
@ -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', [
|
angular.module('portainer', [
|
||||||
'ui.bootstrap',
|
'ui.bootstrap',
|
||||||
'ui.router',
|
'ui.router',
|
||||||
|
@ -17,7 +26,6 @@ angular.module('portainer', [
|
||||||
'angular-clipboard',
|
'angular-clipboard',
|
||||||
'ngFileSaver',
|
'ngFileSaver',
|
||||||
'luegg.directives',
|
'luegg.directives',
|
||||||
'portainer.templates',
|
|
||||||
'portainer.app',
|
'portainer.app',
|
||||||
'portainer.agent',
|
'portainer.agent',
|
||||||
'portainer.azure',
|
'portainer.azure',
|
||||||
|
@ -26,4 +34,11 @@ angular.module('portainer', [
|
||||||
'extension.storidge',
|
'extension.storidge',
|
||||||
'rzModule',
|
'rzModule',
|
||||||
'moment-picker'
|
'moment-picker'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
if (require) {
|
||||||
|
var req = require.context('./', true, /^(.*\.(js$))[^.]*$/im);
|
||||||
|
req.keys().forEach(function(key) {
|
||||||
|
req(key);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
angular.module('portainer.agent').component('fileUploader', {
|
angular.module('portainer.agent').component('fileUploader', {
|
||||||
templateUrl: 'app/agent/components/file-uploader/file-uploader.html',
|
templateUrl: './file-uploader.html',
|
||||||
controller: 'FileUploaderController',
|
controller: 'FileUploaderController',
|
||||||
bindings: {
|
bindings: {
|
||||||
uploadFile: '<onFileSelected'
|
uploadFile: '<onFileSelected'
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
angular.module('portainer.agent').component('filesDatatable', {
|
angular.module('portainer.agent').component('filesDatatable', {
|
||||||
templateUrl: 'app/agent/components/files-datatable/files-datatable.html',
|
templateUrl: './files-datatable.html',
|
||||||
controller: 'GenericDatatableController',
|
controller: 'GenericDatatableController',
|
||||||
bindings: {
|
bindings: {
|
||||||
titleText: '@',
|
titleText: '@',
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
import _ from 'lodash-es';
|
||||||
|
|
||||||
angular.module('portainer.agent').controller('HostBrowserController', [
|
angular.module('portainer.agent').controller('HostBrowserController', [
|
||||||
'HostBrowserService', 'Notifications', 'FileSaver', 'ModalService',
|
'HostBrowserService', 'Notifications', 'FileSaver', 'ModalService',
|
||||||
function HostBrowserController(HostBrowserService, Notifications, FileSaver, ModalService) {
|
function HostBrowserController(HostBrowserService, Notifications, FileSaver, ModalService) {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
angular.module('portainer.agent').component('hostBrowser', {
|
angular.module('portainer.agent').component('hostBrowser', {
|
||||||
controller: 'HostBrowserController',
|
controller: 'HostBrowserController',
|
||||||
templateUrl: 'app/agent/components/host-browser/host-browser.html',
|
templateUrl: './host-browser.html',
|
||||||
bindings: {}
|
bindings: {}
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
angular.module('portainer.agent').component('nodeSelector', {
|
angular.module('portainer.agent').component('nodeSelector', {
|
||||||
templateUrl: 'app/agent/components/node-selector/nodeSelector.html',
|
templateUrl: './nodeSelector.html',
|
||||||
controller: 'NodeSelectorController',
|
controller: 'NodeSelectorController',
|
||||||
bindings: {
|
bindings: {
|
||||||
model: '='
|
model: '='
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
angular.module('portainer.agent').component('volumeBrowser', {
|
angular.module('portainer.agent').component('volumeBrowser', {
|
||||||
templateUrl: 'app/agent/components/volume-browser/volumeBrowser.html',
|
templateUrl: './volumeBrowser.html',
|
||||||
controller: 'VolumeBrowserController',
|
controller: 'VolumeBrowserController',
|
||||||
bindings: {
|
bindings: {
|
||||||
volumeId: '<',
|
volumeId: '<',
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
import _ from 'lodash-es';
|
||||||
|
|
||||||
angular.module('portainer.agent')
|
angular.module('portainer.agent')
|
||||||
.controller('VolumeBrowserController', ['HttpRequestHelper', 'VolumeBrowserService', 'FileSaver', 'Blob', 'ModalService', 'Notifications',
|
.controller('VolumeBrowserController', ['HttpRequestHelper', 'VolumeBrowserService', 'FileSaver', 'Blob', 'ModalService', 'Notifications',
|
||||||
function (HttpRequestHelper, VolumeBrowserService, FileSaver, Blob, ModalService, Notifications) {
|
function (HttpRequestHelper, VolumeBrowserService, FileSaver, Blob, ModalService, Notifications) {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
function AgentViewModel(data) {
|
export function AgentViewModel(data) {
|
||||||
this.IPAddress = data.IPAddress;
|
this.IPAddress = data.IPAddress;
|
||||||
this.NodeName = data.NodeName;
|
this.NodeName = data.NodeName;
|
||||||
this.NodeRole = data.NodeRole;
|
this.NodeRole = data.NodeRole;
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
import { browseGetResponse } from './response/browse';
|
||||||
|
|
||||||
angular.module('portainer.agent')
|
angular.module('portainer.agent')
|
||||||
.factory('Browse', ['$resource', 'API_ENDPOINT_ENDPOINTS', 'EndpointProvider', 'StateManager',
|
.factory('Browse', ['$resource', 'API_ENDPOINT_ENDPOINTS', 'EndpointProvider', 'StateManager',
|
||||||
function BrowseFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider, StateManager) {
|
function BrowseFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider, StateManager) {
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
// ngResource will transform it as an array of chars.
|
// ngResource will transform it as an array of chars.
|
||||||
// This functions simply creates a response object and assign
|
// This functions simply creates a response object and assign
|
||||||
// the data to a field.
|
// the data to a field.
|
||||||
function browseGetResponse(data) {
|
export function browseGetResponse(data) {
|
||||||
var response = {};
|
var response = {};
|
||||||
response.file = data;
|
response.file = data;
|
||||||
return response;
|
return response;
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
import { browseGetResponse } from '../response/browse';
|
||||||
|
|
||||||
angular.module('portainer.agent')
|
angular.module('portainer.agent')
|
||||||
.factory('BrowseVersion1', ['$resource', 'API_ENDPOINT_ENDPOINTS', 'EndpointProvider', function BrowseFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {
|
.factory('BrowseVersion1', ['$resource', 'API_ENDPOINT_ENDPOINTS', 'EndpointProvider', function BrowseFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
import { AgentViewModel } from '../models/agent';
|
||||||
|
|
||||||
angular.module('portainer.agent').factory('AgentService', [
|
angular.module('portainer.agent').factory('AgentService', [
|
||||||
'$q', 'Agent', 'AgentVersion1', 'HttpRequestHelper', 'Host', 'StateManager',
|
'$q', 'Agent', 'AgentVersion1', 'HttpRequestHelper', 'Host', 'StateManager',
|
||||||
function AgentServiceFactory($q, Agent, AgentVersion1, HttpRequestHelper, Host, StateManager) {
|
function AgentServiceFactory($q, Agent, AgentVersion1, HttpRequestHelper, Host, StateManager) {
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
import _ from 'lodash-es';
|
||||||
|
|
||||||
angular.module('portainer')
|
angular.module('portainer')
|
||||||
.run(['$rootScope', '$state', 'Authentication', 'authManager', 'StateManager', 'EndpointProvider', 'Notifications', 'Analytics', 'cfpLoadingBar', '$transitions', 'HttpRequestHelper',
|
.run(['$rootScope', '$state', 'Authentication', 'authManager', 'StateManager', 'EndpointProvider', 'Notifications', 'Analytics', 'cfpLoadingBar', '$transitions', 'HttpRequestHelper',
|
||||||
function ($rootScope, $state, Authentication, authManager, StateManager, EndpointProvider, Notifications, Analytics, cfpLoadingBar, $transitions, HttpRequestHelper) {
|
function ($rootScope, $state, Authentication, authManager, StateManager, EndpointProvider, Notifications, Analytics, cfpLoadingBar, $transitions, HttpRequestHelper) {
|
||||||
|
|
|
@ -14,7 +14,7 @@ angular.module('portainer.azure', ['portainer.app'])
|
||||||
url: '/containerinstances',
|
url: '/containerinstances',
|
||||||
views: {
|
views: {
|
||||||
'content@': {
|
'content@': {
|
||||||
templateUrl: 'app/azure/views/containerinstances/containerinstances.html',
|
templateUrl: './views/containerinstances/containerinstances.html',
|
||||||
controller: 'AzureContainerInstancesController'
|
controller: 'AzureContainerInstancesController'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -25,7 +25,7 @@ angular.module('portainer.azure', ['portainer.app'])
|
||||||
url: '/new/',
|
url: '/new/',
|
||||||
views: {
|
views: {
|
||||||
'content@': {
|
'content@': {
|
||||||
templateUrl: 'app/azure/views/containerinstances/create/createcontainerinstance.html',
|
templateUrl: './views/containerinstances/create/createcontainerinstance.html',
|
||||||
controller: 'AzureCreateContainerInstanceController'
|
controller: 'AzureCreateContainerInstanceController'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -36,7 +36,7 @@ angular.module('portainer.azure', ['portainer.app'])
|
||||||
url: '/dashboard',
|
url: '/dashboard',
|
||||||
views: {
|
views: {
|
||||||
'content@': {
|
'content@': {
|
||||||
templateUrl: 'app/azure/views/dashboard/dashboard.html',
|
templateUrl: './views/dashboard/dashboard.html',
|
||||||
controller: 'AzureDashboardController'
|
controller: 'AzureDashboardController'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,5 +4,5 @@ angular.module('portainer.azure').component('azureEndpointConfig', {
|
||||||
tenantId: '=',
|
tenantId: '=',
|
||||||
authenticationKey: '='
|
authenticationKey: '='
|
||||||
},
|
},
|
||||||
templateUrl: 'app/azure/components/azure-endpoint-config/azureEndpointConfig.html'
|
templateUrl: './azureEndpointConfig.html'
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
angular.module('portainer.azure').component('azureSidebarContent', {
|
angular.module('portainer.azure').component('azureSidebarContent', {
|
||||||
templateUrl: 'app/azure/components/azure-sidebar-content/azureSidebarContent.html'
|
templateUrl: './azureSidebarContent.html'
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
angular.module('portainer.azure').component('containergroupsDatatable', {
|
angular.module('portainer.azure').component('containergroupsDatatable', {
|
||||||
templateUrl: 'app/azure/components/datatables/containergroups-datatable/containerGroupsDatatable.html',
|
templateUrl: './containerGroupsDatatable.html',
|
||||||
controller: 'GenericDatatableController',
|
controller: 'GenericDatatableController',
|
||||||
bindings: {
|
bindings: {
|
||||||
title: '@',
|
title: '@',
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
function ContainerGroupDefaultModel() {
|
export function ContainerGroupDefaultModel() {
|
||||||
this.Location = '';
|
this.Location = '';
|
||||||
this.OSType = 'Linux';
|
this.OSType = 'Linux';
|
||||||
this.Name = '';
|
this.Name = '';
|
||||||
|
@ -15,7 +15,7 @@ function ContainerGroupDefaultModel() {
|
||||||
this.Memory = 1;
|
this.Memory = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
function ContainerGroupViewModel(data) {
|
export function ContainerGroupViewModel(data) {
|
||||||
this.Id = data.id;
|
this.Id = data.id;
|
||||||
this.Name = data.name;
|
this.Name = data.name;
|
||||||
this.Location = data.location;
|
this.Location = data.location;
|
||||||
|
@ -23,7 +23,7 @@ function ContainerGroupViewModel(data) {
|
||||||
this.Ports = data.properties.ipAddress.ports;
|
this.Ports = data.properties.ipAddress.ports;
|
||||||
}
|
}
|
||||||
|
|
||||||
function CreateContainerGroupRequest(model) {
|
export function CreateContainerGroupRequest(model) {
|
||||||
this.location = model.Location;
|
this.location = model.Location;
|
||||||
|
|
||||||
var containerPorts = [];
|
var containerPorts = [];
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
function LocationViewModel(data) {
|
export function LocationViewModel(data) {
|
||||||
this.Id = data.id;
|
this.Id = data.id;
|
||||||
this.SubscriptionId = data.subscriptionId;
|
this.SubscriptionId = data.subscriptionId;
|
||||||
this.DisplayName = data.displayName;
|
this.DisplayName = data.displayName;
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
function ContainerInstanceProviderViewModel(data) {
|
import _ from 'lodash-es';
|
||||||
|
|
||||||
|
export function ContainerInstanceProviderViewModel(data) {
|
||||||
this.Id = data.id;
|
this.Id = data.id;
|
||||||
this.Namespace = data.namespace;
|
this.Namespace = data.namespace;
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
function ResourceGroupViewModel(data, subscriptionId) {
|
export function ResourceGroupViewModel(data, subscriptionId) {
|
||||||
this.Id = data.id;
|
this.Id = data.id;
|
||||||
this.SubscriptionId = subscriptionId;
|
this.SubscriptionId = subscriptionId;
|
||||||
this.Name = data.name;
|
this.Name = data.name;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
function SubscriptionViewModel(data) {
|
export function SubscriptionViewModel(data) {
|
||||||
this.Id = data.subscriptionId;
|
this.Id = data.subscriptionId;
|
||||||
this.Name = data.displayName;
|
this.Name = data.displayName;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
import { ContainerGroupViewModel, CreateContainerGroupRequest } from '../models/container_group';
|
||||||
|
|
||||||
angular.module('portainer.azure')
|
angular.module('portainer.azure')
|
||||||
.factory('ContainerGroupService', ['$q', 'ContainerGroup', function ContainerGroupServiceFactory($q, ContainerGroup) {
|
.factory('ContainerGroupService', ['$q', 'ContainerGroup', function ContainerGroupServiceFactory($q, ContainerGroup) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
import { LocationViewModel } from '../models/location';
|
||||||
|
|
||||||
angular.module('portainer.azure')
|
angular.module('portainer.azure')
|
||||||
.factory('LocationService', ['$q', 'Location', function LocationServiceFactory($q, Location) {
|
.factory('LocationService', ['$q', 'Location', function LocationServiceFactory($q, Location) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
import { ContainerInstanceProviderViewModel } from '../models/provider';
|
||||||
|
|
||||||
angular.module('portainer.azure')
|
angular.module('portainer.azure')
|
||||||
.factory('ProviderService', ['$q', 'Provider', function ProviderServiceFactory($q, Provider) {
|
.factory('ProviderService', ['$q', 'Provider', function ProviderServiceFactory($q, Provider) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
import { ResourceGroupViewModel } from '../models/resource_group';
|
||||||
|
|
||||||
angular.module('portainer.azure')
|
angular.module('portainer.azure')
|
||||||
.factory('ResourceGroupService', ['$q', 'ResourceGroup', function ResourceGroupServiceFactory($q, ResourceGroup) {
|
.factory('ResourceGroupService', ['$q', 'ResourceGroup', function ResourceGroupServiceFactory($q, ResourceGroup) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
import { SubscriptionViewModel } from '../models/subscription';
|
||||||
|
|
||||||
angular.module('portainer.azure')
|
angular.module('portainer.azure')
|
||||||
.factory('SubscriptionService', ['$q', 'Subscription', function SubscriptionServiceFactory($q, Subscription) {
|
.factory('SubscriptionService', ['$q', 'Subscription', function SubscriptionServiceFactory($q, Subscription) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
import { ContainerGroupDefaultModel } from '../../../models/container_group';
|
||||||
|
|
||||||
angular.module('portainer.azure')
|
angular.module('portainer.azure')
|
||||||
.controller('AzureCreateContainerInstanceController', ['$q', '$scope', '$state', 'AzureService', 'Notifications',
|
.controller('AzureCreateContainerInstanceController', ['$q', '$scope', '$state', 'AzureService', 'Notifications',
|
||||||
function ($q, $scope, $state, AzureService, Notifications) {
|
function ($q, $scope, $state, AzureService, Notifications) {
|
||||||
|
|
|
@ -1,3 +1,7 @@
|
||||||
|
import toastr from 'toastr';
|
||||||
|
import { Terminal } from 'xterm';
|
||||||
|
import * as fit from 'xterm/lib/addons/fit/fit';
|
||||||
|
|
||||||
angular.module('portainer')
|
angular.module('portainer')
|
||||||
.config(['$urlRouterProvider', '$httpProvider', 'localStorageServiceProvider', 'jwtOptionsProvider', 'AnalyticsProvider', '$uibTooltipProvider', '$compileProvider', 'cfpLoadingBarProvider',
|
.config(['$urlRouterProvider', '$httpProvider', 'localStorageServiceProvider', 'jwtOptionsProvider', 'AnalyticsProvider', '$uibTooltipProvider', '$compileProvider', 'cfpLoadingBarProvider',
|
||||||
function ($urlRouterProvider, $httpProvider, localStorageServiceProvider, jwtOptionsProvider, AnalyticsProvider, $uibTooltipProvider, $compileProvider, cfpLoadingBarProvider) {
|
function ($urlRouterProvider, $httpProvider, localStorageServiceProvider, jwtOptionsProvider, AnalyticsProvider, $uibTooltipProvider, $compileProvider, cfpLoadingBarProvider) {
|
||||||
|
|
|
@ -23,8 +23,9 @@ angular.module('portainer.docker', ['portainer.app'])
|
||||||
url: '/configs',
|
url: '/configs',
|
||||||
views: {
|
views: {
|
||||||
'content@': {
|
'content@': {
|
||||||
templateUrl: 'app/docker/views/configs/configs.html',
|
templateUrl: './views/configs/configs.html',
|
||||||
controller: 'ConfigsController'
|
controller: 'ConfigsController',
|
||||||
|
controllerAs: 'ctrl'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -34,7 +35,7 @@ angular.module('portainer.docker', ['portainer.app'])
|
||||||
url: '/:id',
|
url: '/:id',
|
||||||
views: {
|
views: {
|
||||||
'content@': {
|
'content@': {
|
||||||
templateUrl: 'app/docker/views/configs/edit/config.html',
|
templateUrl: './views/configs/edit/config.html',
|
||||||
controller: 'ConfigController'
|
controller: 'ConfigController'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -45,8 +46,9 @@ angular.module('portainer.docker', ['portainer.app'])
|
||||||
url: '/new?id',
|
url: '/new?id',
|
||||||
views: {
|
views: {
|
||||||
'content@': {
|
'content@': {
|
||||||
templateUrl: 'app/docker/views/configs/create/createconfig.html',
|
templateUrl: './views/configs/create/createconfig.html',
|
||||||
controller: 'CreateConfigController'
|
controller: 'CreateConfigController',
|
||||||
|
controllerAs: 'ctrl'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -56,7 +58,7 @@ angular.module('portainer.docker', ['portainer.app'])
|
||||||
url: '/containers',
|
url: '/containers',
|
||||||
views: {
|
views: {
|
||||||
'content@': {
|
'content@': {
|
||||||
templateUrl: 'app/docker/views/containers/containers.html',
|
templateUrl: './views/containers/containers.html',
|
||||||
controller: 'ContainersController'
|
controller: 'ContainersController'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -67,7 +69,7 @@ angular.module('portainer.docker', ['portainer.app'])
|
||||||
url: '/:id?nodeName',
|
url: '/:id?nodeName',
|
||||||
views: {
|
views: {
|
||||||
'content@': {
|
'content@': {
|
||||||
templateUrl: 'app/docker/views/containers/edit/container.html',
|
templateUrl: './views/containers/edit/container.html',
|
||||||
controller: 'ContainerController'
|
controller: 'ContainerController'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -78,7 +80,7 @@ angular.module('portainer.docker', ['portainer.app'])
|
||||||
url: '/console',
|
url: '/console',
|
||||||
views: {
|
views: {
|
||||||
'content@': {
|
'content@': {
|
||||||
templateUrl: 'app/docker/views/containers/console/containerconsole.html',
|
templateUrl: './views/containers/console/containerconsole.html',
|
||||||
controller: 'ContainerConsoleController'
|
controller: 'ContainerConsoleController'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -89,7 +91,7 @@ angular.module('portainer.docker', ['portainer.app'])
|
||||||
url: '/new?nodeName&from',
|
url: '/new?nodeName&from',
|
||||||
views: {
|
views: {
|
||||||
'content@': {
|
'content@': {
|
||||||
templateUrl: 'app/docker/views/containers/create/createcontainer.html',
|
templateUrl: './views/containers/create/createcontainer.html',
|
||||||
controller: 'CreateContainerController'
|
controller: 'CreateContainerController'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -100,7 +102,7 @@ angular.module('portainer.docker', ['portainer.app'])
|
||||||
url: '/inspect',
|
url: '/inspect',
|
||||||
views: {
|
views: {
|
||||||
'content@': {
|
'content@': {
|
||||||
templateUrl: 'app/docker/views/containers/inspect/containerinspect.html',
|
templateUrl: './views/containers/inspect/containerinspect.html',
|
||||||
controller: 'ContainerInspectController'
|
controller: 'ContainerInspectController'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -111,7 +113,7 @@ angular.module('portainer.docker', ['portainer.app'])
|
||||||
url: '/logs',
|
url: '/logs',
|
||||||
views: {
|
views: {
|
||||||
'content@': {
|
'content@': {
|
||||||
templateUrl: 'app/docker/views/containers/logs/containerlogs.html',
|
templateUrl: './views/containers/logs/containerlogs.html',
|
||||||
controller: 'ContainerLogsController'
|
controller: 'ContainerLogsController'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -122,7 +124,7 @@ angular.module('portainer.docker', ['portainer.app'])
|
||||||
url: '/stats',
|
url: '/stats',
|
||||||
views: {
|
views: {
|
||||||
'content@': {
|
'content@': {
|
||||||
templateUrl: 'app/docker/views/containers/stats/containerstats.html',
|
templateUrl: './views/containers/stats/containerstats.html',
|
||||||
controller: 'ContainerStatsController'
|
controller: 'ContainerStatsController'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -133,7 +135,7 @@ angular.module('portainer.docker', ['portainer.app'])
|
||||||
url: '/dashboard',
|
url: '/dashboard',
|
||||||
views: {
|
views: {
|
||||||
'content@': {
|
'content@': {
|
||||||
templateUrl: 'app/docker/views/dashboard/dashboard.html',
|
templateUrl: './views/dashboard/dashboard.html',
|
||||||
controller: 'DashboardController'
|
controller: 'DashboardController'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -174,7 +176,7 @@ angular.module('portainer.docker', ['portainer.app'])
|
||||||
url: '/events',
|
url: '/events',
|
||||||
views: {
|
views: {
|
||||||
'content@': {
|
'content@': {
|
||||||
templateUrl: 'app/docker/views/events/events.html',
|
templateUrl: './views/events/events.html',
|
||||||
controller: 'EventsController'
|
controller: 'EventsController'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -185,7 +187,7 @@ angular.module('portainer.docker', ['portainer.app'])
|
||||||
url: '/images',
|
url: '/images',
|
||||||
views: {
|
views: {
|
||||||
'content@': {
|
'content@': {
|
||||||
templateUrl: 'app/docker/views/images/images.html',
|
templateUrl: './views/images/images.html',
|
||||||
controller: 'ImagesController'
|
controller: 'ImagesController'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -196,7 +198,7 @@ angular.module('portainer.docker', ['portainer.app'])
|
||||||
url: '/:id?nodeName',
|
url: '/:id?nodeName',
|
||||||
views: {
|
views: {
|
||||||
'content@': {
|
'content@': {
|
||||||
templateUrl: 'app/docker/views/images/edit/image.html',
|
templateUrl: './views/images/edit/image.html',
|
||||||
controller: 'ImageController'
|
controller: 'ImageController'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -207,7 +209,7 @@ angular.module('portainer.docker', ['portainer.app'])
|
||||||
url: '/build',
|
url: '/build',
|
||||||
views: {
|
views: {
|
||||||
'content@': {
|
'content@': {
|
||||||
templateUrl: 'app/docker/views/images/build/buildimage.html',
|
templateUrl: './views/images/build/buildimage.html',
|
||||||
controller: 'BuildImageController'
|
controller: 'BuildImageController'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -218,7 +220,7 @@ angular.module('portainer.docker', ['portainer.app'])
|
||||||
url: '/import',
|
url: '/import',
|
||||||
views: {
|
views: {
|
||||||
'content@': {
|
'content@': {
|
||||||
templateUrl: 'app/docker/views/images/import/importimage.html',
|
templateUrl: './views/images/import/importimage.html',
|
||||||
controller: 'ImportImageController'
|
controller: 'ImportImageController'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -229,7 +231,7 @@ angular.module('portainer.docker', ['portainer.app'])
|
||||||
url: '/networks',
|
url: '/networks',
|
||||||
views: {
|
views: {
|
||||||
'content@': {
|
'content@': {
|
||||||
templateUrl: 'app/docker/views/networks/networks.html',
|
templateUrl: './views/networks/networks.html',
|
||||||
controller: 'NetworksController'
|
controller: 'NetworksController'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -240,7 +242,7 @@ angular.module('portainer.docker', ['portainer.app'])
|
||||||
url: '/:id?nodeName',
|
url: '/:id?nodeName',
|
||||||
views: {
|
views: {
|
||||||
'content@': {
|
'content@': {
|
||||||
templateUrl: 'app/docker/views/networks/edit/network.html',
|
templateUrl: './views/networks/edit/network.html',
|
||||||
controller: 'NetworkController'
|
controller: 'NetworkController'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -251,7 +253,7 @@ angular.module('portainer.docker', ['portainer.app'])
|
||||||
url: '/new',
|
url: '/new',
|
||||||
views: {
|
views: {
|
||||||
'content@': {
|
'content@': {
|
||||||
templateUrl: 'app/docker/views/networks/create/createnetwork.html',
|
templateUrl: './views/networks/create/createnetwork.html',
|
||||||
controller: 'CreateNetworkController'
|
controller: 'CreateNetworkController'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -298,7 +300,7 @@ angular.module('portainer.docker', ['portainer.app'])
|
||||||
url: '/secrets',
|
url: '/secrets',
|
||||||
views: {
|
views: {
|
||||||
'content@': {
|
'content@': {
|
||||||
templateUrl: 'app/docker/views/secrets/secrets.html',
|
templateUrl: './views/secrets/secrets.html',
|
||||||
controller: 'SecretsController'
|
controller: 'SecretsController'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -309,7 +311,7 @@ angular.module('portainer.docker', ['portainer.app'])
|
||||||
url: '/:id',
|
url: '/:id',
|
||||||
views: {
|
views: {
|
||||||
'content@': {
|
'content@': {
|
||||||
templateUrl: 'app/docker/views/secrets/edit/secret.html',
|
templateUrl: './views/secrets/edit/secret.html',
|
||||||
controller: 'SecretController'
|
controller: 'SecretController'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -320,7 +322,7 @@ angular.module('portainer.docker', ['portainer.app'])
|
||||||
url: '/new',
|
url: '/new',
|
||||||
views: {
|
views: {
|
||||||
'content@': {
|
'content@': {
|
||||||
templateUrl: 'app/docker/views/secrets/create/createsecret.html',
|
templateUrl: './views/secrets/create/createsecret.html',
|
||||||
controller: 'CreateSecretController'
|
controller: 'CreateSecretController'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -331,7 +333,7 @@ angular.module('portainer.docker', ['portainer.app'])
|
||||||
url: '/services',
|
url: '/services',
|
||||||
views: {
|
views: {
|
||||||
'content@': {
|
'content@': {
|
||||||
templateUrl: 'app/docker/views/services/services.html',
|
templateUrl: './views/services/services.html',
|
||||||
controller: 'ServicesController'
|
controller: 'ServicesController'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -342,7 +344,7 @@ angular.module('portainer.docker', ['portainer.app'])
|
||||||
url: '/:id',
|
url: '/:id',
|
||||||
views: {
|
views: {
|
||||||
'content@': {
|
'content@': {
|
||||||
templateUrl: 'app/docker/views/services/edit/service.html',
|
templateUrl: './views/services/edit/service.html',
|
||||||
controller: 'ServiceController'
|
controller: 'ServiceController'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -353,7 +355,7 @@ angular.module('portainer.docker', ['portainer.app'])
|
||||||
url: '/new',
|
url: '/new',
|
||||||
views: {
|
views: {
|
||||||
'content@': {
|
'content@': {
|
||||||
templateUrl: 'app/docker/views/services/create/createservice.html',
|
templateUrl: './views/services/create/createservice.html',
|
||||||
controller: 'CreateServiceController'
|
controller: 'CreateServiceController'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -364,7 +366,7 @@ angular.module('portainer.docker', ['portainer.app'])
|
||||||
url: '/logs',
|
url: '/logs',
|
||||||
views: {
|
views: {
|
||||||
'content@': {
|
'content@': {
|
||||||
templateUrl: 'app/docker/views/services/logs/servicelogs.html',
|
templateUrl: './views/services/logs/servicelogs.html',
|
||||||
controller: 'ServiceLogsController'
|
controller: 'ServiceLogsController'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -375,7 +377,7 @@ angular.module('portainer.docker', ['portainer.app'])
|
||||||
url: '/swarm',
|
url: '/swarm',
|
||||||
views: {
|
views: {
|
||||||
'content@': {
|
'content@': {
|
||||||
templateUrl: 'app/docker/views/swarm/swarm.html',
|
templateUrl: './views/swarm/swarm.html',
|
||||||
controller: 'SwarmController'
|
controller: 'SwarmController'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -386,7 +388,7 @@ angular.module('portainer.docker', ['portainer.app'])
|
||||||
url: '/visualizer',
|
url: '/visualizer',
|
||||||
views: {
|
views: {
|
||||||
'content@': {
|
'content@': {
|
||||||
templateUrl: 'app/docker/views/swarm/visualizer/swarmvisualizer.html',
|
templateUrl: './views/swarm/visualizer/swarmvisualizer.html',
|
||||||
controller: 'SwarmVisualizerController'
|
controller: 'SwarmVisualizerController'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -403,7 +405,7 @@ angular.module('portainer.docker', ['portainer.app'])
|
||||||
url: '/:id',
|
url: '/:id',
|
||||||
views: {
|
views: {
|
||||||
'content@': {
|
'content@': {
|
||||||
templateUrl: 'app/docker/views/tasks/edit/task.html',
|
templateUrl: './views/tasks/edit/task.html',
|
||||||
controller: 'TaskController'
|
controller: 'TaskController'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -414,7 +416,7 @@ angular.module('portainer.docker', ['portainer.app'])
|
||||||
url: '/logs',
|
url: '/logs',
|
||||||
views: {
|
views: {
|
||||||
'content@': {
|
'content@': {
|
||||||
templateUrl: 'app/docker/views/tasks/logs/tasklogs.html',
|
templateUrl: './views/tasks/logs/tasklogs.html',
|
||||||
controller: 'TaskLogsController'
|
controller: 'TaskLogsController'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -425,7 +427,7 @@ angular.module('portainer.docker', ['portainer.app'])
|
||||||
url: '/volumes',
|
url: '/volumes',
|
||||||
views: {
|
views: {
|
||||||
'content@': {
|
'content@': {
|
||||||
templateUrl: 'app/docker/views/volumes/volumes.html',
|
templateUrl: './views/volumes/volumes.html',
|
||||||
controller: 'VolumesController'
|
controller: 'VolumesController'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -436,7 +438,7 @@ angular.module('portainer.docker', ['portainer.app'])
|
||||||
url: '/:id?nodeName',
|
url: '/:id?nodeName',
|
||||||
views: {
|
views: {
|
||||||
'content@': {
|
'content@': {
|
||||||
templateUrl: 'app/docker/views/volumes/edit/volume.html',
|
templateUrl: './views/volumes/edit/volume.html',
|
||||||
controller: 'VolumeController'
|
controller: 'VolumeController'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -447,7 +449,7 @@ angular.module('portainer.docker', ['portainer.app'])
|
||||||
url: '/browse',
|
url: '/browse',
|
||||||
views: {
|
views: {
|
||||||
'content@': {
|
'content@': {
|
||||||
templateUrl: 'app/docker/views/volumes/browse/browsevolume.html',
|
templateUrl: './views/volumes/browse/browsevolume.html',
|
||||||
controller: 'BrowseVolumeController'
|
controller: 'BrowseVolumeController'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -458,7 +460,7 @@ angular.module('portainer.docker', ['portainer.app'])
|
||||||
url: '/new',
|
url: '/new',
|
||||||
views: {
|
views: {
|
||||||
'content@': {
|
'content@': {
|
||||||
templateUrl: 'app/docker/views/volumes/create/createvolume.html',
|
templateUrl: './views/volumes/create/createvolume.html',
|
||||||
controller: 'CreateVolumeController'
|
controller: 'CreateVolumeController'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
angular.module('portainer.docker').component('containerCapabilities', {
|
angular.module('portainer.docker').component('containerCapabilities', {
|
||||||
templateUrl: 'app/docker/components/container-capabilities/containerCapabilities.html',
|
templateUrl: './containerCapabilities.html',
|
||||||
bindings: {
|
bindings: {
|
||||||
capabilities: '='
|
capabilities: '='
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
angular.module('portainer.docker').component('containerQuickActions', {
|
angular.module('portainer.docker').component('containerQuickActions', {
|
||||||
templateUrl: 'app/docker/components/container-quick-actions/containerQuickActions.html',
|
templateUrl: './containerQuickActions.html',
|
||||||
bindings: {
|
bindings: {
|
||||||
containerId: '<',
|
containerId: '<',
|
||||||
nodeName: '<',
|
nodeName: '<',
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
angular.module('portainer.docker')
|
angular.module('portainer.docker')
|
||||||
.component('containerRestartPolicy', {
|
.component('containerRestartPolicy', {
|
||||||
templateUrl: 'app/docker/components/container-restart-policy/container-restart-policy.html',
|
templateUrl: './container-restart-policy.html',
|
||||||
controller: 'ContainerRestartPolicyController',
|
controller: 'ContainerRestartPolicyController',
|
||||||
bindings: {
|
bindings: {
|
||||||
'name': '<',
|
'name': '<',
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
angular.module('portainer.docker').component('dashboardClusterAgentInfo', {
|
angular.module('portainer.docker').component('dashboardClusterAgentInfo', {
|
||||||
templateUrl: 'app/docker/components/dashboard-cluster-agent-info/dashboardClusterAgentInfo.html',
|
templateUrl: './dashboardClusterAgentInfo.html',
|
||||||
controller: 'DashboardClusterAgentInfoController'
|
controller: 'DashboardClusterAgentInfoController'
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
angular.module('portainer.docker').component('configsDatatable', {
|
angular.module('portainer.docker').component('configsDatatable', {
|
||||||
templateUrl: 'app/docker/components/datatables/configs-datatable/configsDatatable.html',
|
templateUrl: './configsDatatable.html',
|
||||||
controller: 'GenericDatatableController',
|
controller: 'GenericDatatableController',
|
||||||
bindings: {
|
bindings: {
|
||||||
titleText: '@',
|
titleText: '@',
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
angular.module('portainer.docker').component('containerNetworksDatatable', {
|
angular.module('portainer.docker').component('containerNetworksDatatable', {
|
||||||
templateUrl: 'app/docker/components/datatables/container-networks-datatable/containerNetworksDatatable.html',
|
templateUrl: './containerNetworksDatatable.html',
|
||||||
controller: 'GenericDatatableController',
|
controller: 'GenericDatatableController',
|
||||||
bindings: {
|
bindings: {
|
||||||
titleText: '@',
|
titleText: '@',
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
angular.module('portainer.docker').component('containerProcessesDatatable', {
|
angular.module('portainer.docker').component('containerProcessesDatatable', {
|
||||||
templateUrl: 'app/docker/components/datatables/container-processes-datatable/containerProcessesDatatable.html',
|
templateUrl: './containerProcessesDatatable.html',
|
||||||
controller: 'GenericDatatableController',
|
controller: 'GenericDatatableController',
|
||||||
bindings: {
|
bindings: {
|
||||||
titleText: '@',
|
titleText: '@',
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
angular.module('portainer.docker').component('containersDatatableActions', {
|
angular.module('portainer.docker').component('containersDatatableActions', {
|
||||||
templateUrl: 'app/docker/components/datatables/containers-datatable/actions/containersDatatableActions.html',
|
templateUrl: './containersDatatableActions.html',
|
||||||
controller: 'ContainersDatatableActionsController',
|
controller: 'ContainersDatatableActionsController',
|
||||||
bindings: {
|
bindings: {
|
||||||
selectedItems: '=',
|
selectedItems: '=',
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
angular.module('portainer.docker').component('containersDatatable', {
|
angular.module('portainer.docker').component('containersDatatable', {
|
||||||
templateUrl: 'app/docker/components/datatables/containers-datatable/containersDatatable.html',
|
templateUrl: './containersDatatable.html',
|
||||||
controller: 'ContainersDatatableController',
|
controller: 'ContainersDatatableController',
|
||||||
bindings: {
|
bindings: {
|
||||||
titleText: '@',
|
titleText: '@',
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
import _ from 'lodash-es';
|
||||||
|
|
||||||
angular.module('portainer.docker')
|
angular.module('portainer.docker')
|
||||||
.controller('ContainersDatatableController', ['PaginationService', 'DatatableService', 'EndpointProvider',
|
.controller('ContainersDatatableController', ['PaginationService', 'DatatableService', 'EndpointProvider',
|
||||||
function (PaginationService, DatatableService, EndpointProvider) {
|
function (PaginationService, DatatableService, EndpointProvider) {
|
||||||
|
@ -197,7 +199,7 @@ function (PaginationService, DatatableService, EndpointProvider) {
|
||||||
|
|
||||||
for (var i = 0; i < datasetFilters.length; i++) {
|
for (var i = 0; i < datasetFilters.length; i++) {
|
||||||
var filter = datasetFilters[i];
|
var filter = datasetFilters[i];
|
||||||
existingFilter = _.find(storedFilters, ['label', filter.label]);
|
var existingFilter = _.find(storedFilters, ['label', filter.label]);
|
||||||
if (existingFilter && !existingFilter.display) {
|
if (existingFilter && !existingFilter.display) {
|
||||||
filter.display = existingFilter.display;
|
filter.display = existingFilter.display;
|
||||||
this.filters.state.enabled = true;
|
this.filters.state.enabled = true;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
angular.module('portainer.docker').component('eventsDatatable', {
|
angular.module('portainer.docker').component('eventsDatatable', {
|
||||||
templateUrl: 'app/docker/components/datatables/events-datatable/eventsDatatable.html',
|
templateUrl: './eventsDatatable.html',
|
||||||
controller: 'GenericDatatableController',
|
controller: 'GenericDatatableController',
|
||||||
bindings: {
|
bindings: {
|
||||||
titleText: '@',
|
titleText: '@',
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
angular.module('portainer.docker').component('jobsDatatable', {
|
angular.module('portainer.docker').component('jobsDatatable', {
|
||||||
templateUrl: 'app/docker/components/datatables/host-jobs-datatable/jobsDatatable.html',
|
templateUrl: './jobsDatatable.html',
|
||||||
controller: 'JobsDatatableController',
|
controller: 'JobsDatatableController',
|
||||||
bindings: {
|
bindings: {
|
||||||
titleText: '@',
|
titleText: '@',
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
import _ from 'lodash-es';
|
||||||
|
|
||||||
angular.module('portainer.docker')
|
angular.module('portainer.docker')
|
||||||
.controller('JobsDatatableController', ['$q', '$state', 'PaginationService', 'DatatableService', 'ContainerService', 'ModalService', 'Notifications',
|
.controller('JobsDatatableController', ['$q', '$state', 'PaginationService', 'DatatableService', 'ContainerService', 'ModalService', 'Notifications',
|
||||||
function ($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++) {
|
for (var i = 0; i < datasetFilters.length; i++) {
|
||||||
var filter = datasetFilters[i];
|
var filter = datasetFilters[i];
|
||||||
existingFilter = _.find(storedFilters, ['label', filter.label]);
|
var existingFilter = _.find(storedFilters, ['label', filter.label]);
|
||||||
if (existingFilter && !existingFilter.display) {
|
if (existingFilter && !existingFilter.display) {
|
||||||
filter.display = existingFilter.display;
|
filter.display = existingFilter.display;
|
||||||
this.filters.state.enabled = true;
|
this.filters.state.enabled = true;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
angular.module('portainer.docker').component('imagesDatatable', {
|
angular.module('portainer.docker').component('imagesDatatable', {
|
||||||
templateUrl: 'app/docker/components/datatables/images-datatable/imagesDatatable.html',
|
templateUrl: './imagesDatatable.html',
|
||||||
controller: 'ImagesDatatableController',
|
controller: 'ImagesDatatableController',
|
||||||
bindings: {
|
bindings: {
|
||||||
titleText: '@',
|
titleText: '@',
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
angular.module('portainer.docker').component('macvlanNodesDatatable', {
|
angular.module('portainer.docker').component('macvlanNodesDatatable', {
|
||||||
templateUrl: 'app/docker/components/datatables/macvlan-nodes-datatable/macvlanNodesDatatable.html',
|
templateUrl: './macvlanNodesDatatable.html',
|
||||||
controller: 'GenericDatatableController',
|
controller: 'GenericDatatableController',
|
||||||
bindings: {
|
bindings: {
|
||||||
titleText: '@',
|
titleText: '@',
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
angular.module('portainer.docker').component('networksDatatable', {
|
angular.module('portainer.docker').component('networksDatatable', {
|
||||||
templateUrl: 'app/docker/components/datatables/networks-datatable/networksDatatable.html',
|
templateUrl: './networksDatatable.html',
|
||||||
controller: 'NetworksDatatableController',
|
controller: 'NetworksDatatableController',
|
||||||
bindings: {
|
bindings: {
|
||||||
titleText: '@',
|
titleText: '@',
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
angular.module('portainer.docker').component('nodeTasksDatatable', {
|
angular.module('portainer.docker').component('nodeTasksDatatable', {
|
||||||
templateUrl: 'app/docker/components/datatables/node-tasks-datatable/nodeTasksDatatable.html',
|
templateUrl: './nodeTasksDatatable.html',
|
||||||
controller: 'GenericDatatableController',
|
controller: 'GenericDatatableController',
|
||||||
bindings: {
|
bindings: {
|
||||||
titleText: '@',
|
titleText: '@',
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
angular.module('portainer.docker').component('nodesDatatable', {
|
angular.module('portainer.docker').component('nodesDatatable', {
|
||||||
templateUrl: 'app/docker/components/datatables/nodes-datatable/nodesDatatable.html',
|
templateUrl: './nodesDatatable.html',
|
||||||
controller: 'GenericDatatableController',
|
controller: 'GenericDatatableController',
|
||||||
bindings: {
|
bindings: {
|
||||||
titleText: '@',
|
titleText: '@',
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
angular.module('portainer.docker').component('secretsDatatable', {
|
angular.module('portainer.docker').component('secretsDatatable', {
|
||||||
templateUrl: 'app/docker/components/datatables/secrets-datatable/secretsDatatable.html',
|
templateUrl: './secretsDatatable.html',
|
||||||
controller: 'GenericDatatableController',
|
controller: 'GenericDatatableController',
|
||||||
bindings: {
|
bindings: {
|
||||||
titleText: '@',
|
titleText: '@',
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
angular.module('portainer.docker').component('serviceTasksDatatable', {
|
angular.module('portainer.docker').component('serviceTasksDatatable', {
|
||||||
templateUrl: 'app/docker/components/datatables/service-tasks-datatable/serviceTasksDatatable.html',
|
templateUrl: './serviceTasksDatatable.html',
|
||||||
controller: 'ServiceTasksDatatableController',
|
controller: 'ServiceTasksDatatableController',
|
||||||
bindings: {
|
bindings: {
|
||||||
dataset: '<',
|
dataset: '<',
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
import _ from 'lodash-es';
|
||||||
|
|
||||||
angular.module('portainer.docker')
|
angular.module('portainer.docker')
|
||||||
.controller('ServiceTasksDatatableController', ['DatatableService',
|
.controller('ServiceTasksDatatableController', ['DatatableService',
|
||||||
function (DatatableService) {
|
function (DatatableService) {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
angular.module('portainer.docker').component('servicesDatatableActions', {
|
angular.module('portainer.docker').component('servicesDatatableActions', {
|
||||||
templateUrl: 'app/docker/components/datatables/services-datatable/actions/servicesDatatableActions.html',
|
templateUrl: './servicesDatatableActions.html',
|
||||||
controller: 'ServicesDatatableActionsController',
|
controller: 'ServicesDatatableActionsController',
|
||||||
bindings: {
|
bindings: {
|
||||||
selectedItems: '=',
|
selectedItems: '=',
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
angular.module('portainer.docker').component('servicesDatatable', {
|
angular.module('portainer.docker').component('servicesDatatable', {
|
||||||
templateUrl: 'app/docker/components/datatables/services-datatable/servicesDatatable.html',
|
templateUrl: './servicesDatatable.html',
|
||||||
controller: 'ServicesDatatableController',
|
controller: 'ServicesDatatableController',
|
||||||
bindings: {
|
bindings: {
|
||||||
titleText: '@',
|
titleText: '@',
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
import _ from 'lodash-es';
|
||||||
|
|
||||||
angular.module('portainer.docker')
|
angular.module('portainer.docker')
|
||||||
.controller('ServicesDatatableController', ['PaginationService', 'DatatableService', 'EndpointProvider',
|
.controller('ServicesDatatableController', ['PaginationService', 'DatatableService', 'EndpointProvider',
|
||||||
function (PaginationService, DatatableService, EndpointProvider) {
|
function (PaginationService, DatatableService, EndpointProvider) {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
angular.module('portainer.docker').component('tasksDatatable', {
|
angular.module('portainer.docker').component('tasksDatatable', {
|
||||||
templateUrl: 'app/docker/components/datatables/tasks-datatable/tasksDatatable.html',
|
templateUrl: './tasksDatatable.html',
|
||||||
controller: 'TasksDatatableController',
|
controller: 'TasksDatatableController',
|
||||||
bindings: {
|
bindings: {
|
||||||
titleText: '@',
|
titleText: '@',
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
angular.module('portainer.docker').component('volumesDatatable', {
|
angular.module('portainer.docker').component('volumesDatatable', {
|
||||||
templateUrl: 'app/docker/components/datatables/volumes-datatable/volumesDatatable.html',
|
templateUrl: './volumesDatatable.html',
|
||||||
controller: 'VolumesDatatableController',
|
controller: 'VolumesDatatableController',
|
||||||
bindings: {
|
bindings: {
|
||||||
titleText: '@',
|
titleText: '@',
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
angular.module('portainer.docker').component('dockerSidebarContent', {
|
angular.module('portainer.docker').component('dockerSidebarContent', {
|
||||||
templateUrl: 'app/docker/components/dockerSidebarContent/dockerSidebarContent.html',
|
templateUrl: './dockerSidebarContent.html',
|
||||||
bindings: {
|
bindings: {
|
||||||
endpointApiVersion: '<',
|
endpointApiVersion: '<',
|
||||||
swarmManagement: '<',
|
swarmManagement: '<',
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
angular.module('portainer.docker').component('hostOverview', {
|
angular.module('portainer.docker').component('hostOverview', {
|
||||||
templateUrl: 'app/docker/components/host-overview/host-overview.html',
|
templateUrl: './host-overview.html',
|
||||||
bindings: {
|
bindings: {
|
||||||
hostDetails: '<',
|
hostDetails: '<',
|
||||||
engineDetails: '<',
|
engineDetails: '<',
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
angular.module('portainer.docker').component('devicesPanel', {
|
angular.module('portainer.docker').component('devicesPanel', {
|
||||||
templateUrl:
|
templateUrl: './devices-panel.html',
|
||||||
'app/docker/components/host-view-panels/devices-panel/devices-panel.html',
|
|
||||||
bindings: {
|
bindings: {
|
||||||
devices: '<'
|
devices: '<'
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
angular.module('portainer.docker').component('disksPanel', {
|
angular.module('portainer.docker').component('disksPanel', {
|
||||||
templateUrl:
|
templateUrl: './disks-panel.html',
|
||||||
'app/docker/components/host-view-panels/disks-panel/disks-panel.html',
|
|
||||||
bindings: {
|
bindings: {
|
||||||
disks: '<'
|
disks: '<'
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
angular.module('portainer.docker').component('engineDetailsPanel', {
|
angular.module('portainer.docker').component('engineDetailsPanel', {
|
||||||
templateUrl:
|
templateUrl: './engine-details-panel.html',
|
||||||
'app/docker/components/host-view-panels/engine-details-panel/engine-details-panel.html',
|
|
||||||
bindings: {
|
bindings: {
|
||||||
engine: '<'
|
engine: '<'
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
angular.module('portainer.docker').component('hostDetailsPanel', {
|
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: {
|
bindings: {
|
||||||
host: '<',
|
host: '<',
|
||||||
isJobEnabled: '<',
|
isJobEnabled: '<',
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
angular.module('portainer.docker').component('nodeAvailabilitySelect', {
|
angular.module('portainer.docker').component('nodeAvailabilitySelect', {
|
||||||
templateUrl:
|
templateUrl: './node-availability-select.html',
|
||||||
'app/docker/components/host-view-panels/node-availability-select/node-availability-select.html',
|
|
||||||
controller: 'NodeAvailabilitySelectController',
|
controller: 'NodeAvailabilitySelectController',
|
||||||
bindings: {
|
bindings: {
|
||||||
availability: '<',
|
availability: '<',
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
angular.module('portainer.docker').component('nodeLabelsTable', {
|
angular.module('portainer.docker').component('nodeLabelsTable', {
|
||||||
templateUrl:
|
templateUrl: './node-labels-table.html',
|
||||||
'app/docker/components/host-view-panels/node-labels-table/node-labels-table.html',
|
|
||||||
controller: 'NodeLabelsTableController',
|
controller: 'NodeLabelsTableController',
|
||||||
bindings: {
|
bindings: {
|
||||||
labels: '<',
|
labels: '<',
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
angular.module('portainer.docker').component('swarmNodeDetailsPanel', {
|
angular.module('portainer.docker').component('swarmNodeDetailsPanel', {
|
||||||
templateUrl:
|
templateUrl: './swarm-node-details-panel.html',
|
||||||
'app/docker/components/host-view-panels/swarm-node-details-panel/swarm-node-details-panel.html',
|
|
||||||
controller: 'SwarmNodeDetailsPanelController',
|
controller: 'SwarmNodeDetailsPanelController',
|
||||||
bindings: {
|
bindings: {
|
||||||
details: '<',
|
details: '<',
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
angular.module('portainer.docker').component('porImageRegistry', {
|
angular.module('portainer.docker').component('porImageRegistry', {
|
||||||
templateUrl: 'app/docker/components/imageRegistry/porImageRegistry.html',
|
templateUrl: './porImageRegistry.html',
|
||||||
controller: 'porImageRegistryController',
|
controller: 'porImageRegistryController',
|
||||||
bindings: {
|
bindings: {
|
||||||
'image': '=',
|
'image': '=',
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
import _ from 'lodash-es';
|
||||||
|
|
||||||
angular.module('portainer.docker')
|
angular.module('portainer.docker')
|
||||||
.controller('porImageRegistryController', ['$q', 'RegistryService', 'DockerHubService', 'ImageService', 'Notifications',
|
.controller('porImageRegistryController', ['$q', 'RegistryService', 'DockerHubService', 'ImageService', 'Notifications',
|
||||||
function ($q, RegistryService, DockerHubService, ImageService, Notifications) {
|
function ($q, RegistryService, DockerHubService, ImageService, Notifications) {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
angular.module('portainer.docker').component('logViewer', {
|
angular.module('portainer.docker').component('logViewer', {
|
||||||
templateUrl: 'app/docker/components/log-viewer/logViewer.html',
|
templateUrl: './logViewer.html',
|
||||||
controller: 'LogViewerController',
|
controller: 'LogViewerController',
|
||||||
bindings: {
|
bindings: {
|
||||||
data: '=',
|
data: '=',
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
import moment from 'moment';
|
||||||
|
|
||||||
angular.module('portainer.docker')
|
angular.module('portainer.docker')
|
||||||
.controller('LogViewerController', ['clipboard',
|
.controller('LogViewerController', ['clipboard',
|
||||||
function (clipboard) {
|
function (clipboard) {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
angular.module('portainer.docker').component('networkMacvlanForm', {
|
angular.module('portainer.docker').component('networkMacvlanForm', {
|
||||||
templateUrl: 'app/docker/components/network-macvlan-form/networkMacvlanForm.html',
|
templateUrl: './networkMacvlanForm.html',
|
||||||
controller: 'NetworkMacvlanFormController',
|
controller: 'NetworkMacvlanFormController',
|
||||||
bindings: {
|
bindings: {
|
||||||
data: '=',
|
data: '=',
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
function MacvlanFormData() {
|
export function MacvlanFormData() {
|
||||||
this.Scope = 'local';
|
this.Scope = 'local';
|
||||||
this.SelectedNetworkConfig = '';
|
this.SelectedNetworkConfig = '';
|
||||||
this.DatatableState = {
|
this.DatatableState = {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
angular.module('portainer.docker').component('volumesNfsForm', {
|
angular.module('portainer.docker').component('volumesNfsForm', {
|
||||||
templateUrl: 'app/docker/components/volumesNFSForm/volumesnfsForm.html',
|
templateUrl: './volumesnfsForm.html',
|
||||||
bindings: {
|
bindings: {
|
||||||
data: '='
|
data: '='
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
function VolumesNFSFormData() {
|
export function VolumesNFSFormData() {
|
||||||
this.useNFS = false;
|
this.useNFS = false;
|
||||||
this.serverAddress = '';
|
this.serverAddress = '';
|
||||||
this.mountPoint = '';
|
this.mountPoint = '';
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
import _ from 'lodash-es';
|
||||||
|
|
||||||
function includeString(text, values) {
|
function includeString(text, values) {
|
||||||
return values.some(function(val){
|
return values.some(function(val){
|
||||||
return text.indexOf(val) !== -1;
|
return text.indexOf(val) !== -1;
|
||||||
|
@ -258,7 +260,7 @@ angular.module('portainer.docker')
|
||||||
.filter('imagelayercommand', function () {
|
.filter('imagelayercommand', function () {
|
||||||
'use strict';
|
'use strict';
|
||||||
return function (createdBy) {
|
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 () {
|
.filter('trimshasum', function () {
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
import _ from 'lodash-es';
|
||||||
|
|
||||||
function ConstraintModel(op, key, value) {
|
function ConstraintModel(op, key, value) {
|
||||||
this.op = op;
|
this.op = op;
|
||||||
this.value = value;
|
this.value = value;
|
||||||
|
|
|
@ -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';
|
'use strict';
|
||||||
var helper = {};
|
var helper = {};
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
import _ from 'lodash-es';
|
||||||
|
|
||||||
angular.module('portainer.docker')
|
angular.module('portainer.docker')
|
||||||
.factory('ImageHelper', [function ImageHelperFactory() {
|
.factory('ImageHelper', [function ImageHelperFactory() {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
import _ from 'lodash-es';
|
||||||
|
|
||||||
angular.module('portainer.docker')
|
angular.module('portainer.docker')
|
||||||
.factory('InfoHelper', [function InfoHelperFactory() {
|
.factory('InfoHelper', [function InfoHelperFactory() {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
import moment from 'moment';
|
||||||
|
|
||||||
angular.module('portainer.docker')
|
angular.module('portainer.docker')
|
||||||
.factory('ServiceHelper', [function ServiceHelperFactory() {
|
.factory('ServiceHelper', [function ServiceHelperFactory() {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
function ConfigViewModel(data) {
|
import { ResourceControlViewModel } from '../../portainer/models/resourceControl';
|
||||||
|
|
||||||
|
export function ConfigViewModel(data) {
|
||||||
this.Id = data.ID;
|
this.Id = data.ID;
|
||||||
this.CreatedAt = data.CreatedAt;
|
this.CreatedAt = data.CreatedAt;
|
||||||
this.UpdatedAt = data.UpdatedAt;
|
this.UpdatedAt = data.UpdatedAt;
|
||||||
|
|
|
@ -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);
|
var status = _.toLower(statusText);
|
||||||
|
|
||||||
if (status.indexOf('paused') > -1) {
|
if (status.indexOf('paused') > -1) {
|
||||||
|
@ -19,7 +22,7 @@ function createStatus(statusText) {
|
||||||
return 'running';
|
return 'running';
|
||||||
}
|
}
|
||||||
|
|
||||||
function ContainerViewModel(data) {
|
export function ContainerViewModel(data) {
|
||||||
this.Id = data.Id;
|
this.Id = data.Id;
|
||||||
this.Status = createStatus(data.Status);
|
this.Status = createStatus(data.Status);
|
||||||
this.State = data.State;
|
this.State = data.State;
|
||||||
|
@ -62,7 +65,7 @@ function ContainerViewModel(data) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function ContainerStatsViewModel(data) {
|
export function ContainerStatsViewModel(data) {
|
||||||
this.read = data.read;
|
this.read = data.read;
|
||||||
this.preread = data.preread;
|
this.preread = data.preread;
|
||||||
if(data.memory_stats.privateworkingset !== undefined) { // Windows
|
if(data.memory_stats.privateworkingset !== undefined) { // Windows
|
||||||
|
@ -88,7 +91,7 @@ function ContainerStatsViewModel(data) {
|
||||||
this.Networks = _.values(data.networks);
|
this.Networks = _.values(data.networks);
|
||||||
}
|
}
|
||||||
|
|
||||||
function ContainerDetailsViewModel(data) {
|
export function ContainerDetailsViewModel(data) {
|
||||||
this.Model = data;
|
this.Model = data;
|
||||||
this.Id = data.Id;
|
this.Id = data.Id;
|
||||||
this.State = data.State;
|
this.State = data.State;
|
||||||
|
|
|
@ -38,7 +38,7 @@ var capDesc = {
|
||||||
'BLOCK_SUSPEND': 'Employ features that can block system suspend.'
|
'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
|
// all capabilities can be found at https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities
|
||||||
return [
|
return [
|
||||||
new ContainerCapability('SETPCAP', true),
|
new ContainerCapability('SETPCAP', true),
|
||||||
|
@ -83,7 +83,7 @@ function ContainerCapabilities() {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function ContainerCapability(cap, allowed) {
|
export function ContainerCapability(cap, allowed) {
|
||||||
this.capability = cap;
|
this.capability = cap;
|
||||||
this.allowed = allowed;
|
this.allowed = allowed;
|
||||||
this.description = capDesc[cap];
|
this.description = capDesc[cap];
|
||||||
|
|
|
@ -149,7 +149,7 @@ function createEventDetails(event) {
|
||||||
return details;
|
return details;
|
||||||
}
|
}
|
||||||
|
|
||||||
function EventViewModel(data) {
|
export function EventViewModel(data) {
|
||||||
// Type, Action, Actor unavailable in Docker < 1.10
|
// Type, Action, Actor unavailable in Docker < 1.10
|
||||||
this.Time = data.time;
|
this.Time = data.time;
|
||||||
if (data.Type) {
|
if (data.Type) {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
function ImageViewModel(data) {
|
export function ImageViewModel(data) {
|
||||||
this.Id = data.Id;
|
this.Id = data.Id;
|
||||||
this.Tag = data.Tag;
|
this.Tag = data.Tag;
|
||||||
this.Repository = data.Repository;
|
this.Repository = data.Repository;
|
||||||
|
@ -23,7 +23,7 @@ function ImageViewModel(data) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function ImageBuildModel(data) {
|
export function ImageBuildModel(data) {
|
||||||
this.hasError = false;
|
this.hasError = false;
|
||||||
var buildLogs = [];
|
var buildLogs = [];
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
function ImageDetailsViewModel(data) {
|
export function ImageDetailsViewModel(data) {
|
||||||
this.Id = data.Id;
|
this.Id = data.Id;
|
||||||
this.Tag = data.Tag;
|
this.Tag = data.Tag;
|
||||||
this.Parent = data.Parent;
|
this.Parent = data.Parent;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
function ImageLayerViewModel(order, data) {
|
export function ImageLayerViewModel(order, data) {
|
||||||
this.Order = order;
|
this.Order = order;
|
||||||
this.Id = data.Id;
|
this.Id = data.Id;
|
||||||
this.Created = data.Created;
|
this.Created = data.Created;
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
function NetworkViewModel(data) {
|
import { ResourceControlViewModel } from "../../portainer/models/resourceControl";
|
||||||
|
|
||||||
|
export function NetworkViewModel(data) {
|
||||||
this.Id = data.Id;
|
this.Id = data.Id;
|
||||||
this.Name = data.Name;
|
this.Name = data.Name;
|
||||||
this.Scope = data.Scope;
|
this.Scope = data.Scope;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
function NodeViewModel(data) {
|
export function NodeViewModel(data) {
|
||||||
this.Model = data;
|
this.Model = data;
|
||||||
this.Id = data.ID;
|
this.Id = data.ID;
|
||||||
this.Version = data.Version.Index;
|
this.Version = data.Version.Index;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
// This model is based on https://github.com/moby/moby/blob/0ac25dfc751fa4304ab45afd5cd8705c2235d101/api/types/plugin.go#L8-L31
|
// This model is based on https://github.com/moby/moby/blob/0ac25dfc751fa4304ab45afd5cd8705c2235d101/api/types/plugin.go#L8-L31
|
||||||
// instead of the official documentation.
|
// instead of the official documentation.
|
||||||
// See: https://github.com/moby/moby/issues/34241
|
// See: https://github.com/moby/moby/issues/34241
|
||||||
function PluginViewModel(data) {
|
export function PluginViewModel(data) {
|
||||||
this.Id = data.Id;
|
this.Id = data.Id;
|
||||||
this.Name = data.Name;
|
this.Name = data.Name;
|
||||||
this.Enabled = data.Enabled;
|
this.Enabled = data.Enabled;
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
function SecretViewModel(data) {
|
import { ResourceControlViewModel } from '../../portainer/models/resourceControl'
|
||||||
|
|
||||||
|
export function SecretViewModel(data) {
|
||||||
this.Id = data.ID;
|
this.Id = data.ID;
|
||||||
this.CreatedAt = data.CreatedAt;
|
this.CreatedAt = data.CreatedAt;
|
||||||
this.UpdatedAt = data.UpdatedAt;
|
this.UpdatedAt = data.UpdatedAt;
|
||||||
|
|
|
@ -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.Model = data;
|
||||||
this.Id = data.ID;
|
this.Id = data.ID;
|
||||||
this.Tasks = [];
|
this.Tasks = [];
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
function SwarmViewModel(data) {
|
export function SwarmViewModel(data) {
|
||||||
this.Id = data.ID;
|
this.Id = data.ID;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
function TaskViewModel(data) {
|
export function TaskViewModel(data) {
|
||||||
this.Id = data.ID;
|
this.Id = data.ID;
|
||||||
this.Created = data.CreatedAt;
|
this.Created = data.CreatedAt;
|
||||||
this.Updated = data.UpdatedAt;
|
this.Updated = data.UpdatedAt;
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
function VolumeViewModel(data) {
|
import { ResourceControlViewModel } from "../../portainer/models/resourceControl";
|
||||||
|
|
||||||
|
export function VolumeViewModel(data) {
|
||||||
this.Id = data.Name;
|
this.Id = data.Name;
|
||||||
this.CreatedAt = data.CreatedAt;
|
this.CreatedAt = data.CreatedAt;
|
||||||
this.Driver = data.Driver;
|
this.Driver = data.Driver;
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
import { jsonObjectsToArrayHandler } from './response/handlers';
|
||||||
|
|
||||||
angular.module('portainer.docker')
|
angular.module('portainer.docker')
|
||||||
.factory('Build', ['$resource', 'API_ENDPOINT_ENDPOINTS', 'EndpointProvider', function BuildFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {
|
.factory('Build', ['$resource', 'API_ENDPOINT_ENDPOINTS', 'EndpointProvider', function BuildFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue