mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2026-09-16 18:13:06 +00:00
Compare commits
212
Commits
ACS-5551-UI
...
6.5.2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cf62196fc4 | ||
|
|
22d3179a55 | ||
|
|
17323b0abb | ||
|
|
81787d5202 | ||
|
|
e5ca7d2069 | ||
|
|
6787ef4582 | ||
|
|
6988c1f458 | ||
|
|
15fdbc7e29 | ||
|
|
e2c116c25a | ||
|
|
f2df3c4143 | ||
|
|
168bb0b6ca | ||
|
|
c0194029c7 | ||
|
|
625cf2b85a | ||
|
|
622cf8bdee | ||
|
|
f0a11fdab0 | ||
|
|
479cc8b545 | ||
|
|
54fa5d8864 | ||
|
|
0891a60f4d | ||
|
|
a01a1b9e9a | ||
|
|
34c82f4a49 | ||
|
|
41a788d974 | ||
|
|
00c05315a2 | ||
|
|
10361b9065 | ||
|
|
08da9ae2c3 | ||
|
|
057e0bcd7c | ||
|
|
bac7cc98e1 | ||
|
|
7c127eb957 | ||
|
|
fe8f4a5e74 | ||
|
|
adf5a5e008 | ||
|
|
a29f63cd9b | ||
|
|
94fb61541c | ||
|
|
3687cc58e0 | ||
|
|
93fd0bec6c | ||
|
|
9278d9296f | ||
|
|
85ddcdf22c | ||
|
|
0b677e7189 | ||
|
|
0b56a4858f | ||
|
|
15f82c812c | ||
|
|
54e95bc5f7 | ||
|
|
81f0df3da1 | ||
|
|
5d72597d7d | ||
|
|
e8ea75d9f3 | ||
|
|
a59ab203b4 | ||
|
|
d300003f69 | ||
|
|
620911cf70 | ||
|
|
1f94c592da | ||
|
|
32f6c746f0 | ||
|
|
fa7eb8722d | ||
|
|
b847383249 | ||
|
|
2d3175ef4a | ||
|
|
53ad9f729b | ||
|
|
ba96ed14b2 | ||
|
|
7ebdce7875 | ||
|
|
abf369bc37 | ||
|
|
67f1a4c506 | ||
|
|
e6bc457d26 | ||
|
|
8bd24dbb7c | ||
|
|
352e0e4933 | ||
|
|
72e646bdf8 | ||
|
|
36d90b314d | ||
|
|
46104e9246 | ||
|
|
a73e72facb | ||
|
|
f366cf7c0a | ||
|
|
879c5a6d2c | ||
|
|
36c6e6d8ea | ||
|
|
3912a652d5 | ||
|
|
f6f74f4660 | ||
|
|
33f1147671 | ||
|
|
7c4304a1e7 | ||
|
|
6644f539fa | ||
|
|
962a2be698 | ||
|
|
d13db25609 | ||
|
|
b49c86fda5 | ||
|
|
cda12730f6 | ||
|
|
d500bc67d7 | ||
|
|
678df4298d | ||
|
|
7d5fbecf3f | ||
|
|
af24aceb65 | ||
|
|
e6d625253c | ||
|
|
f7b0544172 | ||
|
|
ef285a1f10 | ||
|
|
82fafff114 | ||
|
|
462166293a | ||
|
|
2f36da5765 | ||
|
|
c637f3eb2a | ||
|
|
96d0a617a4 | ||
|
|
03a52dc10f | ||
|
|
2f28ec9b6f | ||
|
|
a86b9e625c | ||
|
|
f6d48cb85c | ||
|
|
ce549249e5 | ||
|
|
4cc4498b0e | ||
|
|
3a374ad2a4 | ||
|
|
e42e0869ba | ||
|
|
93f45062fe | ||
|
|
ea65756660 | ||
|
|
ecbee581a7 | ||
|
|
93fe29503a | ||
|
|
441d8003af | ||
|
|
11b4f5186b | ||
|
|
c548fc7763 | ||
|
|
43242b1185 | ||
|
|
e638b54fcd | ||
|
|
0b1fc4faa4 | ||
|
|
fc8a443d32 | ||
|
|
8a6fe3071d | ||
|
|
0811525c95 | ||
|
|
a69c089f87 | ||
|
|
e76d2fb169 | ||
|
|
034e9574d0 | ||
|
|
94baaf7d33 | ||
|
|
e21ad3ca02 | ||
|
|
c2d45e10f8 | ||
|
|
21a029163a | ||
|
|
d72eb5ebd3 | ||
|
|
501516c8f5 | ||
|
|
d78dcd2156 | ||
|
|
a48438e1c1 | ||
|
|
b03011c3d2 | ||
|
|
016e5ec089 | ||
|
|
65d70bffb2 | ||
|
|
d7e0bb6cd3 | ||
|
|
a0c79e6c64 | ||
|
|
094acf77ce | ||
|
|
ed0dd094b4 | ||
|
|
a488a729eb | ||
|
|
44694c0ee1 | ||
|
|
06bfded238 | ||
|
|
4786a26320 | ||
|
|
8f684a9f6a | ||
|
|
6d8c513180 | ||
|
|
83b2d9f8bc | ||
|
|
0933e2dada | ||
|
|
926347b8fc | ||
|
|
3638ed06ef | ||
|
|
f488520752 | ||
|
|
ef551a9c71 | ||
|
|
8370a3de66 | ||
|
|
5345838744 | ||
|
|
919a8ba80c | ||
|
|
16ab6e3306 | ||
|
|
9ca7dbdce9 | ||
|
|
15219c3cc6 | ||
|
|
3d867d728b | ||
|
|
87a00e0672 | ||
|
|
d2d6a31bdb | ||
|
|
a1dd270c5d | ||
|
|
99f591ed67 | ||
|
|
f20df680aa | ||
|
|
6df6fd16fc | ||
|
|
d7cf12d89b | ||
|
|
e14e489d2d | ||
|
|
13b6bf37ff | ||
|
|
8080a0699f | ||
|
|
0d5e70ebf7 | ||
|
|
3aa55996bf | ||
|
|
d2ef772e0a | ||
|
|
a1b39fb6dc | ||
|
|
ce881b7dcf | ||
|
|
a8db044092 | ||
|
|
76e2870c66 | ||
|
|
876ca7a0a7 | ||
|
|
8a9f828894 | ||
|
|
70a7e5f4e1 | ||
|
|
bd518b6c59 | ||
|
|
60099a2d7d | ||
|
|
b4ffc866d7 | ||
|
|
9ce8b01914 | ||
|
|
95537c4c50 | ||
|
|
c6fdbd601a | ||
|
|
c83d92c539 | ||
|
|
c73e95c9bf | ||
|
|
1c30eb2814 | ||
|
|
780800453a | ||
|
|
bb3000346f | ||
|
|
3b4ce3b857 | ||
|
|
a5b05b3e5f | ||
|
|
657711e808 | ||
|
|
a66b3d0846 | ||
|
|
79df220434 | ||
|
|
af3c7eb783 | ||
|
|
885c5a52fe | ||
|
|
d839531d08 | ||
|
|
377dd5d3a2 | ||
|
|
efa691b249 | ||
|
|
b77691bb08 | ||
|
|
837b3b1b92 | ||
|
|
87e57272fa | ||
|
|
de16072171 | ||
|
|
729a65ca5c | ||
|
|
ce855ec36e | ||
|
|
c9fdf24553 | ||
|
|
a8be9d64e1 | ||
|
|
b58e6f628a | ||
|
|
9a349f27d9 | ||
|
|
29ec2fcc96 | ||
|
|
d0c35c28ee | ||
|
|
40adcfec2d | ||
|
|
03b93721ab | ||
|
|
3e56b9a4cc | ||
|
|
f8d587bc2e | ||
|
|
673010d271 | ||
|
|
d0b1f77b7b | ||
|
|
005115ee19 | ||
|
|
dcd1c4e21c | ||
|
|
1b06742eb6 | ||
|
|
f1d9e0a92f | ||
|
|
6cb881e8cf | ||
|
|
57ff885483 | ||
|
|
e7dbedd497 | ||
|
|
f201efd56a | ||
|
|
ca60b392d4 |
+185
-190
@@ -1,193 +1,188 @@
|
||||
path = require('path');
|
||||
module.exports = {
|
||||
root: true,
|
||||
ignorePatterns: [
|
||||
'projects/**/*',
|
||||
'**/node_modules/**/*',
|
||||
'lib/cli/node_modules/**/*',
|
||||
'**/node_modules',
|
||||
'**/docker',
|
||||
'**/assets',
|
||||
'**/scripts',
|
||||
'**/docs'
|
||||
],
|
||||
overrides: [
|
||||
{
|
||||
files: [
|
||||
'*.ts'
|
||||
],
|
||||
parserOptions: {
|
||||
project: [
|
||||
path.join(__dirname, 'tsconfig.json'),
|
||||
path.join(__dirname, 'e2e/tsconfig.e2e.json')
|
||||
],
|
||||
createDefaultProgram: true
|
||||
},
|
||||
extends: [
|
||||
'plugin:@angular-eslint/ng-cli-compat',
|
||||
'plugin:@angular-eslint/ng-cli-compat--formatting-add-on',
|
||||
'plugin:@angular-eslint/template/process-inline-templates'
|
||||
],
|
||||
plugins: [
|
||||
'eslint-plugin-unicorn',
|
||||
'eslint-plugin-rxjs',
|
||||
'ban',
|
||||
'license-header'
|
||||
],
|
||||
rules: {
|
||||
'ban/ban': [
|
||||
'error',
|
||||
{ name: 'eval', message: 'Calls to eval is not allowed.' },
|
||||
{ name: 'fdescribe', message: 'Calls to fdescribe is not allowed' },
|
||||
{ name: 'fit', message: 'Calls to fit is not allowed' },
|
||||
{ name: 'xit', message: 'Calls to xit is not allowed' },
|
||||
{ name: 'xdescribe', message: 'Calls to xdescribe is not allowed' },
|
||||
{ name: ['test', 'only'], message: 'Calls to test.only is not allowed' },
|
||||
{ name: ['describe', 'only'], message: 'Calls to describe.only is not allowed' }
|
||||
],
|
||||
'@angular-eslint/component-selector': [
|
||||
'error',
|
||||
{
|
||||
type: 'element',
|
||||
prefix: [
|
||||
'adf',
|
||||
'app'
|
||||
root: true,
|
||||
ignorePatterns: [
|
||||
'projects/**/*',
|
||||
'**/node_modules/**/*',
|
||||
'lib/cli/node_modules/**/*',
|
||||
'**/node_modules',
|
||||
'**/docker',
|
||||
'**/assets',
|
||||
'**/scripts',
|
||||
'**/docs'
|
||||
],
|
||||
plugins: ['@nrwl/nx'],
|
||||
overrides: [
|
||||
{
|
||||
files: ['*.ts'],
|
||||
parserOptions: {
|
||||
project: ['tsconfig.json', 'e2e/tsconfig.e2e.json'],
|
||||
createDefaultProgram: true
|
||||
},
|
||||
extends: [
|
||||
'plugin:@nrwl/nx/typescript',
|
||||
'plugin:@nrwl/nx/angular',
|
||||
'plugin:@cspell/recommended',
|
||||
'plugin:@angular-eslint/ng-cli-compat',
|
||||
'plugin:@angular-eslint/ng-cli-compat--formatting-add-on',
|
||||
'plugin:@angular-eslint/template/process-inline-templates',
|
||||
'plugin:jsdoc/recommended-typescript-error'
|
||||
],
|
||||
style: 'kebab-case'
|
||||
}
|
||||
],
|
||||
'@angular-eslint/directive-selector': [
|
||||
'error',
|
||||
{
|
||||
type: [
|
||||
'element',
|
||||
'attribute'
|
||||
plugins: [
|
||||
'eslint-plugin-unicorn',
|
||||
'eslint-plugin-rxjs',
|
||||
'prettier',
|
||||
'ban',
|
||||
'license-header',
|
||||
'@cspell',
|
||||
'eslint-plugin-import',
|
||||
'@angular-eslint/eslint-plugin',
|
||||
'@typescript-eslint',
|
||||
'jsdoc'
|
||||
],
|
||||
prefix: [
|
||||
'adf',
|
||||
'app'
|
||||
],
|
||||
style: 'kebab-case'
|
||||
}
|
||||
],
|
||||
'@angular-eslint/no-host-metadata-property': 'off',
|
||||
'@angular-eslint/no-input-prefix': 'error',
|
||||
'@typescript-eslint/consistent-type-definitions': 'error',
|
||||
'@typescript-eslint/dot-notation': 'off',
|
||||
'@typescript-eslint/explicit-member-accessibility': [
|
||||
'off',
|
||||
{
|
||||
accessibility: 'explicit'
|
||||
}
|
||||
],
|
||||
'@typescript-eslint/no-inferrable-types': 'off',
|
||||
'@typescript-eslint/no-require-imports': 'off',
|
||||
'@typescript-eslint/no-var-requires': 'error',
|
||||
'@typescript-eslint/naming-convention': [
|
||||
'error',
|
||||
{
|
||||
selector: [
|
||||
'classProperty',
|
||||
'objectLiteralProperty',
|
||||
'typeProperty',
|
||||
'classMethod',
|
||||
'objectLiteralMethod',
|
||||
'typeMethod',
|
||||
'accessor',
|
||||
'enumMember'
|
||||
],
|
||||
format: null,
|
||||
modifiers: ['requiresQuotes']
|
||||
}
|
||||
],
|
||||
'@typescript-eslint/member-ordering': 'off',
|
||||
'prefer-arrow/prefer-arrow-functions': 'off',
|
||||
|
||||
'brace-style': [
|
||||
'error',
|
||||
'1tbs'
|
||||
],
|
||||
'comma-dangle': 'error',
|
||||
'default-case': 'error',
|
||||
'import/order': 'off',
|
||||
'max-len': [
|
||||
'error',
|
||||
{
|
||||
code: 240
|
||||
}
|
||||
],
|
||||
'no-bitwise': 'off',
|
||||
'no-console': [
|
||||
'error',
|
||||
{
|
||||
allow: [
|
||||
'warn',
|
||||
'dir',
|
||||
'timeLog',
|
||||
'assert',
|
||||
'clear',
|
||||
'count',
|
||||
'countReset',
|
||||
'group',
|
||||
'groupEnd',
|
||||
'table',
|
||||
'dirxml',
|
||||
'error',
|
||||
'groupCollapsed',
|
||||
'Console',
|
||||
'profile',
|
||||
'profileEnd',
|
||||
'timeStamp',
|
||||
'context'
|
||||
]
|
||||
}
|
||||
],
|
||||
'no-duplicate-imports': 'error',
|
||||
'no-multiple-empty-lines': 'error',
|
||||
'no-redeclare': 'error',
|
||||
'no-return-await': 'error',
|
||||
'rxjs/no-create': 'error',
|
||||
'rxjs/no-subject-unsubscribe': 'error',
|
||||
'rxjs/no-subject-value': 'error',
|
||||
'rxjs/no-unsafe-takeuntil': 'error',
|
||||
'unicorn/filename-case': 'error',
|
||||
'@typescript-eslint/no-unused-expressions': [
|
||||
'error',
|
||||
{
|
||||
allowShortCircuit: true,
|
||||
allowTernary: true
|
||||
}
|
||||
],
|
||||
'license-header/header': ['error',
|
||||
[
|
||||
'/*!',
|
||||
' * @license',
|
||||
' * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.',
|
||||
' *',
|
||||
' * Licensed under the Apache License, Version 2.0 (the \"License\");',
|
||||
' * you may not use this file except in compliance with the License.',
|
||||
' * You may obtain a copy of the License at',
|
||||
' *',
|
||||
' * http://www.apache.org/licenses/LICENSE-2.0',
|
||||
' *',
|
||||
' * Unless required by applicable law or agreed to in writing, software',
|
||||
' * distributed under the License is distributed on an \"AS IS\" BASIS,',
|
||||
' * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.',
|
||||
' * See the License for the specific language governing permissions and',
|
||||
' * limitations under the License.',
|
||||
' */'
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
files: [
|
||||
'*.html'
|
||||
],
|
||||
extends: [
|
||||
'plugin:@angular-eslint/template/recommended'
|
||||
],
|
||||
rules: {}
|
||||
}
|
||||
]
|
||||
}
|
||||
rules: {
|
||||
// Uncomment this to enable prettier checks as part of the ESLint
|
||||
// 'prettier/prettier': 'error',
|
||||
'ban/ban': [
|
||||
'error',
|
||||
{ name: 'eval', message: 'Calls to eval is not allowed.' },
|
||||
{ name: 'fdescribe', message: 'Calls to fdescribe is not allowed' },
|
||||
{ name: 'fit', message: 'Calls to fit is not allowed' },
|
||||
{ name: 'xit', message: 'Calls to xit is not allowed' },
|
||||
{ name: 'xdescribe', message: 'Calls to xdescribe is not allowed' },
|
||||
{ name: ['test', 'only'], message: 'Calls to test.only is not allowed' },
|
||||
{ name: ['describe', 'only'], message: 'Calls to describe.only is not allowed' }
|
||||
],
|
||||
'@angular-eslint/component-selector': [
|
||||
'error',
|
||||
{
|
||||
type: 'element',
|
||||
prefix: ['adf', 'app'],
|
||||
style: 'kebab-case'
|
||||
}
|
||||
],
|
||||
'@angular-eslint/directive-selector': [
|
||||
'error',
|
||||
{
|
||||
type: ['element', 'attribute'],
|
||||
prefix: ['adf', 'app'],
|
||||
style: 'kebab-case'
|
||||
}
|
||||
],
|
||||
'@angular-eslint/no-host-metadata-property': 'off',
|
||||
'@angular-eslint/no-input-prefix': 'error',
|
||||
'@typescript-eslint/consistent-type-definitions': 'error',
|
||||
'@typescript-eslint/dot-notation': 'off',
|
||||
'@typescript-eslint/explicit-member-accessibility': [
|
||||
'off',
|
||||
{
|
||||
accessibility: 'explicit'
|
||||
}
|
||||
],
|
||||
'@typescript-eslint/await-thenable': 'error',
|
||||
'@typescript-eslint/prefer-optional-chain': 'warn',
|
||||
'@typescript-eslint/no-inferrable-types': 'off',
|
||||
'@typescript-eslint/no-require-imports': 'off',
|
||||
'@typescript-eslint/no-var-requires': 'error',
|
||||
'@typescript-eslint/naming-convention': [
|
||||
'error',
|
||||
{
|
||||
selector: [
|
||||
'classProperty',
|
||||
'objectLiteralProperty',
|
||||
'typeProperty',
|
||||
'classMethod',
|
||||
'objectLiteralMethod',
|
||||
'typeMethod',
|
||||
'accessor',
|
||||
'enumMember'
|
||||
],
|
||||
format: null,
|
||||
modifiers: ['requiresQuotes']
|
||||
}
|
||||
],
|
||||
'@typescript-eslint/member-ordering': 'off',
|
||||
'prefer-arrow/prefer-arrow-functions': 'off',
|
||||
'prefer-promise-reject-errors': 'error',
|
||||
'brace-style': 'off',
|
||||
'@typescript-eslint/brace-style': 'error',
|
||||
'comma-dangle': 'error',
|
||||
'default-case': 'error',
|
||||
'import/order': 'off',
|
||||
'max-len': [
|
||||
'error',
|
||||
{
|
||||
code: 240
|
||||
}
|
||||
],
|
||||
'no-bitwise': 'off',
|
||||
'no-console': [
|
||||
'error',
|
||||
{
|
||||
allow: [
|
||||
'warn',
|
||||
'dir',
|
||||
'timeLog',
|
||||
'assert',
|
||||
'clear',
|
||||
'count',
|
||||
'countReset',
|
||||
'group',
|
||||
'groupEnd',
|
||||
'table',
|
||||
'dirxml',
|
||||
'error',
|
||||
'groupCollapsed',
|
||||
'Console',
|
||||
'profile',
|
||||
'profileEnd',
|
||||
'timeStamp',
|
||||
'context'
|
||||
]
|
||||
}
|
||||
],
|
||||
'no-duplicate-imports': 'error',
|
||||
'no-multiple-empty-lines': 'error',
|
||||
'no-redeclare': 'error',
|
||||
'no-return-await': 'error',
|
||||
'rxjs/no-create': 'error',
|
||||
'rxjs/no-subject-unsubscribe': 'error',
|
||||
'rxjs/no-subject-value': 'error',
|
||||
'rxjs/no-unsafe-takeuntil': 'error',
|
||||
'unicorn/filename-case': 'error',
|
||||
'@typescript-eslint/no-unused-expressions': [
|
||||
'error',
|
||||
{
|
||||
allowShortCircuit: true,
|
||||
allowTernary: true
|
||||
}
|
||||
],
|
||||
'license-header/header': [
|
||||
'error',
|
||||
[
|
||||
'/*!',
|
||||
' * @license',
|
||||
' * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.',
|
||||
' *',
|
||||
' * Licensed under the Apache License, Version 2.0 (the "License");',
|
||||
' * you may not use this file except in compliance with the License.',
|
||||
' * You may obtain a copy of the License at',
|
||||
' *',
|
||||
' * http://www.apache.org/licenses/LICENSE-2.0',
|
||||
' *',
|
||||
' * Unless required by applicable law or agreed to in writing, software',
|
||||
' * distributed under the License is distributed on an "AS IS" BASIS,',
|
||||
' * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.',
|
||||
' * See the License for the specific language governing permissions and',
|
||||
' * limitations under the License.',
|
||||
' */'
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
files: ['*.html'],
|
||||
extends: ['plugin:@angular-eslint/template/recommended'],
|
||||
rules: {}
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
+188
@@ -0,0 +1,188 @@
|
||||
module.exports = {
|
||||
root: true,
|
||||
ignorePatterns: [
|
||||
'projects/**/*',
|
||||
'**/node_modules/**/*',
|
||||
'lib/cli/node_modules/**/*',
|
||||
'**/node_modules',
|
||||
'**/docker',
|
||||
'**/assets',
|
||||
'**/scripts',
|
||||
'**/docs'
|
||||
],
|
||||
plugins: ['@nrwl/nx'],
|
||||
overrides: [
|
||||
{
|
||||
files: ['*.ts'],
|
||||
parserOptions: {
|
||||
project: ['tsconfig.json', 'e2e/tsconfig.e2e.json'],
|
||||
createDefaultProgram: true
|
||||
},
|
||||
extends: [
|
||||
'plugin:@nrwl/nx/typescript',
|
||||
'plugin:@nrwl/nx/angular',
|
||||
'plugin:@cspell/recommended',
|
||||
'plugin:@angular-eslint/ng-cli-compat',
|
||||
'plugin:@angular-eslint/ng-cli-compat--formatting-add-on',
|
||||
'plugin:@angular-eslint/template/process-inline-templates',
|
||||
'plugin:jsdoc/recommended-typescript-error'
|
||||
],
|
||||
plugins: [
|
||||
'eslint-plugin-unicorn',
|
||||
'eslint-plugin-rxjs',
|
||||
'prettier',
|
||||
'ban',
|
||||
'license-header',
|
||||
'@cspell',
|
||||
'eslint-plugin-import',
|
||||
'@angular-eslint/eslint-plugin',
|
||||
'@typescript-eslint',
|
||||
'jsdoc'
|
||||
],
|
||||
rules: {
|
||||
// Uncomment this to enable prettier checks as part of the ESLint
|
||||
// 'prettier/prettier': 'error',
|
||||
'ban/ban': [
|
||||
'error',
|
||||
{ name: 'eval', message: 'Calls to eval is not allowed.' },
|
||||
{ name: 'fdescribe', message: 'Calls to fdescribe is not allowed' },
|
||||
{ name: 'fit', message: 'Calls to fit is not allowed' },
|
||||
{ name: 'xit', message: 'Calls to xit is not allowed' },
|
||||
{ name: 'xdescribe', message: 'Calls to xdescribe is not allowed' },
|
||||
{ name: ['test', 'only'], message: 'Calls to test.only is not allowed' },
|
||||
{ name: ['describe', 'only'], message: 'Calls to describe.only is not allowed' }
|
||||
],
|
||||
'@angular-eslint/component-selector': [
|
||||
'error',
|
||||
{
|
||||
type: 'element',
|
||||
prefix: ['adf', 'app'],
|
||||
style: 'kebab-case'
|
||||
}
|
||||
],
|
||||
'@angular-eslint/directive-selector': [
|
||||
'error',
|
||||
{
|
||||
type: ['element', 'attribute'],
|
||||
prefix: ['adf', 'app'],
|
||||
style: 'kebab-case'
|
||||
}
|
||||
],
|
||||
'@angular-eslint/no-host-metadata-property': 'off',
|
||||
'@angular-eslint/no-input-prefix': 'error',
|
||||
'@typescript-eslint/consistent-type-definitions': 'error',
|
||||
'@typescript-eslint/dot-notation': 'off',
|
||||
'@typescript-eslint/explicit-member-accessibility': [
|
||||
'off',
|
||||
{
|
||||
accessibility: 'explicit'
|
||||
}
|
||||
],
|
||||
'@typescript-eslint/await-thenable': 'error',
|
||||
'@typescript-eslint/prefer-optional-chain': 'warn',
|
||||
'@typescript-eslint/no-inferrable-types': 'off',
|
||||
'@typescript-eslint/no-require-imports': 'off',
|
||||
'@typescript-eslint/no-var-requires': 'error',
|
||||
'@typescript-eslint/naming-convention': [
|
||||
'error',
|
||||
{
|
||||
selector: [
|
||||
'classProperty',
|
||||
'objectLiteralProperty',
|
||||
'typeProperty',
|
||||
'classMethod',
|
||||
'objectLiteralMethod',
|
||||
'typeMethod',
|
||||
'accessor',
|
||||
'enumMember'
|
||||
],
|
||||
format: null,
|
||||
modifiers: ['requiresQuotes']
|
||||
}
|
||||
],
|
||||
'@typescript-eslint/member-ordering': 'off',
|
||||
'prefer-arrow/prefer-arrow-functions': 'off',
|
||||
'prefer-promise-reject-errors': 'error',
|
||||
'brace-style': 'off',
|
||||
'@typescript-eslint/brace-style': 'error',
|
||||
'comma-dangle': 'error',
|
||||
'default-case': 'error',
|
||||
'import/order': 'off',
|
||||
'max-len': [
|
||||
'error',
|
||||
{
|
||||
code: 240
|
||||
}
|
||||
],
|
||||
'no-bitwise': 'off',
|
||||
'no-console': [
|
||||
'error',
|
||||
{
|
||||
allow: [
|
||||
'warn',
|
||||
'dir',
|
||||
'timeLog',
|
||||
'assert',
|
||||
'clear',
|
||||
'count',
|
||||
'countReset',
|
||||
'group',
|
||||
'groupEnd',
|
||||
'table',
|
||||
'dirxml',
|
||||
'error',
|
||||
'groupCollapsed',
|
||||
'Console',
|
||||
'profile',
|
||||
'profileEnd',
|
||||
'timeStamp',
|
||||
'context'
|
||||
]
|
||||
}
|
||||
],
|
||||
'no-duplicate-imports': 'error',
|
||||
'no-multiple-empty-lines': 'error',
|
||||
'no-redeclare': 'error',
|
||||
'no-return-await': 'error',
|
||||
'rxjs/no-create': 'error',
|
||||
'rxjs/no-subject-unsubscribe': 'error',
|
||||
'rxjs/no-subject-value': 'error',
|
||||
'rxjs/no-unsafe-takeuntil': 'error',
|
||||
'unicorn/filename-case': 'error',
|
||||
'@typescript-eslint/no-unused-expressions': [
|
||||
'error',
|
||||
{
|
||||
allowShortCircuit: true,
|
||||
allowTernary: true
|
||||
}
|
||||
],
|
||||
'license-header/header': [
|
||||
'error',
|
||||
[
|
||||
'/*!',
|
||||
' * @license',
|
||||
' * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.',
|
||||
' *',
|
||||
' * Licensed under the Apache License, Version 2.0 (the "License");',
|
||||
' * you may not use this file except in compliance with the License.',
|
||||
' * You may obtain a copy of the License at',
|
||||
' *',
|
||||
' * http://www.apache.org/licenses/LICENSE-2.0',
|
||||
' *',
|
||||
' * Unless required by applicable law or agreed to in writing, software',
|
||||
' * distributed under the License is distributed on an "AS IS" BASIS,',
|
||||
' * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.',
|
||||
' * See the License for the specific language governing permissions and',
|
||||
' * limitations under the License.',
|
||||
' */'
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
files: ['*.html'],
|
||||
extends: ['plugin:@angular-eslint/template/recommended'],
|
||||
rules: {}
|
||||
}
|
||||
]
|
||||
};
|
||||
@@ -60,8 +60,9 @@ runs:
|
||||
echo "Setting up CI flags for Push develop patch"
|
||||
else
|
||||
echo "Setting up CI flags for Push on develop branch"
|
||||
base=$(git describe --tags $(git rev-list --tags --max-count=1))
|
||||
echo "NX_CALCULATION_FLAGS=--base=$base --head=$HEAD_HASH" >> $GITHUB_ENV
|
||||
# base=$(git describe --tags $(git rev-list --tags --max-count=1))
|
||||
# we publish always all the libs until we don't handle partial release
|
||||
echo "NX_CALCULATION_FLAGS=--all" >> $GITHUB_ENV
|
||||
fi
|
||||
echo "BREAK_ACTION=true" >> $GITHUB_ENV
|
||||
|
||||
|
||||
@@ -153,7 +153,7 @@ runs:
|
||||
echo $PROXY_HOST_BPM
|
||||
echo "GIT_HASH=$GIT_HASH" >> $GITHUB_ENV
|
||||
|
||||
- name: run test
|
||||
- name: run test
|
||||
id: e2e_run
|
||||
if: ${{ steps.determine-affected.outputs.isAffected == 'true' }}
|
||||
env:
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
name: "CodeQL config"
|
||||
|
||||
paths-ignore:
|
||||
- 'e2e/resources/**/*.*'
|
||||
- 'docs/**/*.*'
|
||||
|
||||
@@ -3,9 +3,15 @@ name: "CodeQL"
|
||||
on:
|
||||
push:
|
||||
branches: [develop, master]
|
||||
paths-ignore:
|
||||
- 'e2e/resources/**/*.*'
|
||||
- 'docs/**/*.*'
|
||||
pull_request:
|
||||
# The branches below must be a subset of the branches above
|
||||
branches: [develop]
|
||||
paths-ignore:
|
||||
- 'e2e/resources/**/*.*'
|
||||
- 'docs/**/*.*'
|
||||
schedule:
|
||||
- cron: '0 5 * * 0'
|
||||
|
||||
@@ -28,6 +34,7 @@ jobs:
|
||||
# Override language selection by uncommenting this and choosing your languages
|
||||
with:
|
||||
languages: javascript
|
||||
config-file: ./.github/codeql/codeql-config.yml
|
||||
|
||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
||||
# If this step fails, then you should remove it and run the build manually (see below)
|
||||
|
||||
@@ -392,15 +392,6 @@ jobs:
|
||||
check-cs-env: "true"
|
||||
check-ps-cloud-env: "true"
|
||||
deps: "testing"
|
||||
- description: "Process Cloud: People"
|
||||
test-id: "process-services-cloud"
|
||||
folder: "process-services-cloud/people"
|
||||
provider: "ALL"
|
||||
auth: "OAUTH"
|
||||
apa-proxy: true
|
||||
check-cs-env: "true"
|
||||
check-ps-cloud-env: "true"
|
||||
deps: "testing"
|
||||
- description: "Process Cloud: Process"
|
||||
test-id: "process-services-cloud"
|
||||
folder: "process-services-cloud/process"
|
||||
|
||||
@@ -0,0 +1,157 @@
|
||||
name: Release lib on branch
|
||||
run-name: Release lib on branch ${{ github.ref_name }}
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
dry-run-flag:
|
||||
description: 'enable dry-run on artifact push'
|
||||
required: false
|
||||
type: boolean
|
||||
default: true
|
||||
|
||||
env:
|
||||
BASE_REF: ${{ github.base_ref }}
|
||||
HEAD_REF: ${{ github.head_ref }}
|
||||
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||
GITHUB_BRANCH: ${{ github.ref_name }}
|
||||
GH_BUILD_DIR: ${{ github.workspace }}
|
||||
GH_COMMIT: ${{ github.sha }}
|
||||
BUILD_ID: ${{ github.run_id }}
|
||||
GH_RUN_NUMBER: ${{ github.run_attempt }}
|
||||
GH_BUILD_NUMBER: ${{ github.run_id }}
|
||||
JOB_ID: ${{ github.run_id }}
|
||||
PROXY_HOST_BPM: ${{ secrets.E2E_HOST }}
|
||||
E2E_IDENTITY_HOST_APA: ${{ secrets.E2E_IDENTITY_HOST_APA }}
|
||||
E2E_HOST_APA: ${{ secrets.E2E_HOST_APA }}
|
||||
E2E_HOST: ${{ secrets.E2E_HOST }}
|
||||
E2E_USERNAME: ${{ secrets.E2E_ADMIN_EMAIL_IDENTITY }}
|
||||
E2E_PASSWORD: ${{ secrets.E2E_PASSWORD }}
|
||||
E2E_ADMIN_EMAIL_IDENTITY: ${{ secrets.E2E_ADMIN_EMAIL_IDENTITY }}
|
||||
E2E_ADMIN_PASSWORD_IDENTITY: ${{ secrets.E2E_ADMIN_PASSWORD_IDENTITY }}
|
||||
#USERNAME_ADF: ${{ secrets.E2E_USERNAME }}
|
||||
USERNAME_ADF: ${{ secrets.E2E_ADMIN_EMAIL_IDENTITY }}
|
||||
PASSWORD_ADF: ${{ secrets.E2E_PASSWORD }}
|
||||
URL_HOST_ADF: "http://localhost:4200"
|
||||
IDENTITY_ADMIN_EMAIL: ${{ secrets.E2E_ADMIN_EMAIL_IDENTITY }}
|
||||
IDENTITY_ADMIN_PASSWORD: ${{ secrets.E2E_ADMIN_PASSWORD_IDENTITY }}
|
||||
AWS_S3_BUCKET_ACTIVITI_LICENSE: ${{ secrets.AWS_S3_BUCKET_ACTIVITI_LICENSE }}
|
||||
HOST_SSO: ${{ secrets.HOST_SSO }}
|
||||
LOG_LEVEL: "ERROR"
|
||||
E2E_LOG_LEVEL: "ERROR"
|
||||
E2E_MODELER_USERNAME: ${{ secrets.E2E_MODELER_USERNAME }}
|
||||
E2E_MODELER_PASSWORD: ${{ secrets.E2E_MODELER_PASSWORD }}
|
||||
EXTERNAL_ACS_HOST: ${{ secrets.EXTERNAL_ACS_HOST }}
|
||||
E2E_DEVOPS_USERNAME: ${{ secrets.E2E_DEVOPS_USERNAME }}
|
||||
E2E_DEVOPS_PASSWORD: ${{ secrets.E2E_DEVOPS_PASSWORD }}
|
||||
USERNAME_SUPER_ADMIN_ADF: ${{ secrets.USERNAME_SUPER_ADMIN_ADF }}
|
||||
PASSWORD_SUPER_ADMIN_ADF: ${{ secrets.PASSWORD_SUPER_ADMIN_ADF }}
|
||||
HR_USER: ${{ secrets.HR_USER }}
|
||||
HR_USER_PASSWORD: ${{ secrets.HR_USER_PASSWORD }}
|
||||
SMART_RUNNER_PATH: ".protractor-smartrunner"
|
||||
S3_DBP_PATH: ${{ secrets.S3_DBP_PATH }}
|
||||
S3_BUILD_BUCKET_SHORT_NAME: ${{ secrets.S3_BUILD_BUCKET_SHORT_NAME }}
|
||||
NODE_OPTIONS: "--max-old-space-size=5120"
|
||||
DOCKER_REPOSITORY_DOMAIN: ${{ secrets.DOCKER_REPOSITORY_DOMAIN }}
|
||||
DOCKER_REPOSITORY_USER: ${{ secrets.DOCKER_REPOSITORY_USER }}
|
||||
DOCKER_REPOSITORY_PASSWORD: ${{ secrets.DOCKER_REPOSITORY_PASSWORD }}
|
||||
DOCKER_REPOSITORY_STORYBOOK: "${{ secrets.DOCKER_REPOSITORY_DOMAIN }}/alfresco/storybook"
|
||||
DOCKER_REPOSITORY: "${{ secrets.DOCKER_REPOSITORY_DOMAIN }}/alfresco/demo-shell"
|
||||
GITHUB_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN }}
|
||||
REPO_OWNER: "Alfresco"
|
||||
REPO_NAME: "alfresco-ng2-components"
|
||||
DEMO_SHELL_DIR: "./dist/demo-shell"
|
||||
STORYBOOK_DIR: "./dist/storybook/stories"
|
||||
BUILT_LIBS_DIR: "./dist/libs"
|
||||
NODE_MODULES_DIR: "./node_modules"
|
||||
SMART_RUNNER_DIRECTORY: ".protractor-smartrunner"
|
||||
SAVE_SCREENSHOT: true
|
||||
REDIRECT_URI: /
|
||||
BROWSER_RUN: false
|
||||
MAXINSTANCES: 2
|
||||
PLAYWRIGHT_WORKERS: 2
|
||||
PLAYWRIGHT_STORYBOOK_E2E_HOST: http://localhost
|
||||
PLAYWRIGHT_STORYBOOK_E2E_PORT: 4400
|
||||
|
||||
jobs:
|
||||
setup:
|
||||
timeout-minutes: 20
|
||||
name: "Setup"
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- name: set TAG_NPM BRANCH
|
||||
shell: bash
|
||||
run: |
|
||||
TAG_NPM="branch"
|
||||
echo "Set TAG with name: ${TAG_NPM}"
|
||||
echo "TAG_NPM=${TAG_NPM}" >> $GITHUB_ENV
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- uses: ./.github/actions/setup
|
||||
with:
|
||||
enable-cache: false
|
||||
enable-node-modules-cache: false
|
||||
- name: install
|
||||
run: |
|
||||
npm ci
|
||||
npx nx run cli:bundle
|
||||
npx nx run testing:bundle
|
||||
- uses: ./.github/actions/upload-node-modules-and-artifacts
|
||||
|
||||
release-npm:
|
||||
needs: [setup]
|
||||
timeout-minutes: 30
|
||||
runs-on: ubuntu-22.04
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- uses: ./.github/actions/setup
|
||||
with:
|
||||
enable-cache: false
|
||||
enable-node-modules-cache: false
|
||||
- id: set-dryrun
|
||||
uses: ./.github/actions/enable-dryrun
|
||||
with:
|
||||
dry-run-flag: ${{ inputs.dry-run-flag }}
|
||||
- uses: ./.github/actions/download-node-modules-and-artifacts
|
||||
- name: build libraries
|
||||
run: |
|
||||
set -u;
|
||||
./scripts/update-version.sh -gnu -nextalpha|| exit 1;
|
||||
npx nx affected:build $NX_CALCULATION_FLAGS --prod --exclude="demoshell" --skip-nx-cache
|
||||
npx nx affected $NX_CALCULATION_FLAGS --target=pretheme
|
||||
- uses: actions/setup-node@v3
|
||||
name: release libraries GH registry
|
||||
with:
|
||||
node-version-file: '.nvmrc'
|
||||
registry-url: 'https://npm.pkg.github.com'
|
||||
scope: '@alfresco'
|
||||
- run: npx nx affected --target=npm-publish $NX_CALCULATION_FLAGS --tag=branch|| exit 1
|
||||
env:
|
||||
NODE_AUTH_TOKEN: ${{ secrets.PAT_WRITE_PKG }}
|
||||
- uses: actions/setup-node@v3
|
||||
name: release libraries Npm registry
|
||||
with:
|
||||
node-version-file: '.nvmrc'
|
||||
registry-url: 'https://${{ vars.NPM_REGISTRY_ADDRESS }}'
|
||||
scope: '@alfresco'
|
||||
- run: npx nx affected --target=npm-publish $NX_CALCULATION_FLAGS --tag=branch || exit 1
|
||||
env:
|
||||
NODE_AUTH_TOKEN: ${{ secrets.NPM_REGISTRY_TOKEN }}
|
||||
|
||||
npm-check-bundle:
|
||||
needs: [release-npm]
|
||||
timeout-minutes: 15
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
- uses: ./.github/actions/npm-check-bundle
|
||||
@@ -177,17 +177,6 @@ jobs:
|
||||
with:
|
||||
dry-run-flag: ${{ inputs.dry-run-flag }}
|
||||
- uses: ./.github/actions/download-node-modules-and-artifacts
|
||||
- name: check PR number
|
||||
id: action
|
||||
uses: kamatama41/get-pr-number-action@5c77b38a1b4974ebf8a9521a689f38a5898eadd6
|
||||
with:
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: save PR number
|
||||
env:
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
shell: bash
|
||||
run: |
|
||||
echo "PR_NUMBER=${{ steps.action.outputs.number }}" >> $GITHUB_ENV
|
||||
- name: build libraries
|
||||
run: |
|
||||
set -u;
|
||||
|
||||
Vendored
+1
-1
@@ -10,7 +10,7 @@
|
||||
"name": "e2e",
|
||||
"program": "${workspaceFolder}/node_modules/protractor/bin/protractor",
|
||||
"args": [
|
||||
"`${workspaceFolder}/.vscode/closest-config-finder.sh ${file} e2e/protractor.conf.js`",
|
||||
"./e2e/protractor.conf.js",
|
||||
"--specs=${file}"
|
||||
],
|
||||
"envFile": "${workspaceFolder}/.env",
|
||||
|
||||
+110
-112
@@ -29,7 +29,7 @@
|
||||
"polyfills": "demo-shell/src/polyfills.ts",
|
||||
"stylePreprocessorOptions": {
|
||||
"includePaths": [
|
||||
"lib"
|
||||
"lib", "lib/core/src/lib"
|
||||
]
|
||||
},
|
||||
"assets": [
|
||||
@@ -108,7 +108,6 @@
|
||||
}
|
||||
],
|
||||
"styles": [
|
||||
"demo-shell/src/assets/fonts/muli/muli.css",
|
||||
"demo-shell/src/styles.scss",
|
||||
"demo-shell/src/custom-style-dev.scss",
|
||||
"node_modules/cropperjs/dist/cropper.min.css",
|
||||
@@ -117,8 +116,7 @@
|
||||
"scripts": [
|
||||
"node_modules/pdfjs-dist/build/pdf.js",
|
||||
"node_modules/pdfjs-dist/web/pdf_viewer.js",
|
||||
"node_modules/raphael/raphael.min.js",
|
||||
"node_modules/moment/min/moment.min.js"
|
||||
"node_modules/raphael/raphael.min.js"
|
||||
],
|
||||
"vendorChunk": true,
|
||||
"extractLicenses": false,
|
||||
@@ -210,16 +208,6 @@
|
||||
"demo-shell/**/*.html"
|
||||
]
|
||||
}
|
||||
},
|
||||
"spellcheck": {
|
||||
"executor": "nx:run-commands",
|
||||
"options": {
|
||||
"commands": [
|
||||
{
|
||||
"command": "npx cspell 'demo-shell/**/*.ts'"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -282,6 +270,11 @@
|
||||
"karmaConfig": "lib/core/karma.conf.js",
|
||||
"sourceMap": true,
|
||||
"codeCoverage": true,
|
||||
"stylePreprocessorOptions": {
|
||||
"includePaths": [
|
||||
"lib", "lib/core/src/lib"
|
||||
]
|
||||
},
|
||||
"styles": [
|
||||
"demo-shell/src/styles.scss"
|
||||
]
|
||||
@@ -312,12 +305,16 @@
|
||||
"configDir": "lib/core/.storybook",
|
||||
"compodoc": false,
|
||||
"styles": [
|
||||
"demo-shell/src/assets/fonts/muli/muli.css",
|
||||
"demo-shell/src/styles.scss",
|
||||
"demo-shell/src/custom-style-dev.scss",
|
||||
"node_modules/cropperjs/dist/cropper.min.css",
|
||||
"node_modules/pdfjs-dist/web/pdf_viewer.css"
|
||||
]
|
||||
],
|
||||
"stylePreprocessorOptions": {
|
||||
"includePaths": [
|
||||
"lib", "lib/core/src/lib"
|
||||
]
|
||||
}
|
||||
},
|
||||
"configurations": {
|
||||
"ci": {
|
||||
@@ -333,12 +330,16 @@
|
||||
"outputDir": "dist/storybook/core",
|
||||
"compodoc": false,
|
||||
"styles": [
|
||||
"demo-shell/src/assets/fonts/muli/muli.css",
|
||||
"demo-shell/src/styles.scss",
|
||||
"demo-shell/src/custom-style-dev.scss",
|
||||
"node_modules/cropperjs/dist/cropper.min.css",
|
||||
"node_modules/pdfjs-dist/web/pdf_viewer.css"
|
||||
]
|
||||
],
|
||||
"stylePreprocessorOptions": {
|
||||
"includePaths": [
|
||||
"lib", "lib/core/src/lib"
|
||||
]
|
||||
}
|
||||
},
|
||||
"configurations": {
|
||||
"ci": {
|
||||
@@ -346,16 +347,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"spellcheck": {
|
||||
"executor": "nx:run-commands",
|
||||
"options": {
|
||||
"commands": [
|
||||
{
|
||||
"command": "npx cspell 'lib/core/**/*.ts'"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"stylelint": {
|
||||
"executor": "nx:run-commands",
|
||||
"options": {
|
||||
@@ -398,7 +389,12 @@
|
||||
"command": "npm publish --tag {args.tag}",
|
||||
"forwardAllArgs": true
|
||||
}
|
||||
]
|
||||
],
|
||||
"stylePreprocessorOptions": {
|
||||
"includePaths": [
|
||||
"lib", "lib/core/src/lib"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -430,7 +426,12 @@
|
||||
"tsConfig": "lib/content-services/tsconfig.spec.json",
|
||||
"karmaConfig": "lib/content-services/karma.conf.js",
|
||||
"sourceMap": true,
|
||||
"codeCoverage": true
|
||||
"codeCoverage": true,
|
||||
"stylePreprocessorOptions": {
|
||||
"includePaths": [
|
||||
"lib", "lib/core/src/lib"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"lint": {
|
||||
@@ -450,12 +451,16 @@
|
||||
"configDir": "lib/content-services/.storybook",
|
||||
"compodoc": false,
|
||||
"styles": [
|
||||
"demo-shell/src/assets/fonts/muli/muli.css",
|
||||
"demo-shell/src/styles.scss",
|
||||
"demo-shell/src/custom-style-dev.scss",
|
||||
"node_modules/cropperjs/dist/cropper.min.css",
|
||||
"node_modules/pdfjs-dist/web/pdf_viewer.css"
|
||||
]
|
||||
],
|
||||
"stylePreprocessorOptions": {
|
||||
"includePaths": [
|
||||
"lib", "lib/core/src/lib"
|
||||
]
|
||||
}
|
||||
},
|
||||
"configurations": {
|
||||
"ci": {
|
||||
@@ -471,12 +476,16 @@
|
||||
"outputDir": "dist/storybook/content-services",
|
||||
"compodoc": false,
|
||||
"styles": [
|
||||
"demo-shell/src/assets/fonts/muli/muli.css",
|
||||
"demo-shell/src/styles.scss",
|
||||
"demo-shell/src/custom-style-dev.scss",
|
||||
"node_modules/cropperjs/dist/cropper.min.css",
|
||||
"node_modules/pdfjs-dist/web/pdf_viewer.css"
|
||||
]
|
||||
],
|
||||
"stylePreprocessorOptions": {
|
||||
"includePaths": [
|
||||
"lib", "lib/core/src/lib"
|
||||
]
|
||||
}
|
||||
},
|
||||
"configurations": {
|
||||
"ci": {
|
||||
@@ -484,16 +493,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"spellcheck": {
|
||||
"executor": "nx:run-commands",
|
||||
"options": {
|
||||
"commands": [
|
||||
{
|
||||
"command": "npx cspell 'lib/content-services/**/*.ts'"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"stylelint": {
|
||||
"executor": "nx:run-commands",
|
||||
"options": {
|
||||
@@ -548,7 +547,12 @@
|
||||
"tsConfig": "lib/process-services/tsconfig.spec.json",
|
||||
"karmaConfig": "lib/process-services/karma.conf.js",
|
||||
"sourceMap": true,
|
||||
"codeCoverage": true
|
||||
"codeCoverage": true,
|
||||
"stylePreprocessorOptions": {
|
||||
"includePaths": [
|
||||
"lib", "lib/core/src/lib"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"lint": {
|
||||
@@ -560,26 +564,6 @@
|
||||
]
|
||||
}
|
||||
},
|
||||
"spellcheck": {
|
||||
"executor": "nx:run-commands",
|
||||
"options": {
|
||||
"commands": [
|
||||
{
|
||||
"command": "npx cspell 'lib/process-services/**/*.ts'"
|
||||
}
|
||||
]
|
||||
},
|
||||
"stylelint": {
|
||||
"executor": "nx:run-commands",
|
||||
"options": {
|
||||
"commands": [
|
||||
{
|
||||
"command": "npx stylelint lib/process-services/**/*.scss --config stylelint-config.json"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"stylelint": {
|
||||
"executor": "nx:run-commands",
|
||||
"options": {
|
||||
@@ -634,7 +618,12 @@
|
||||
"tsConfig": "lib/process-services-cloud/tsconfig.spec.json",
|
||||
"karmaConfig": "lib/process-services-cloud/karma.conf.js",
|
||||
"sourceMap": true,
|
||||
"codeCoverage": true
|
||||
"codeCoverage": true,
|
||||
"stylePreprocessorOptions": {
|
||||
"includePaths": [
|
||||
"lib", "lib/core/src/lib"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"lint": {
|
||||
@@ -654,12 +643,16 @@
|
||||
"configDir": "lib/process-services-cloud/.storybook",
|
||||
"compodoc": false,
|
||||
"styles": [
|
||||
"demo-shell/src/assets/fonts/muli/muli.css",
|
||||
"demo-shell/src/styles.scss",
|
||||
"demo-shell/src/custom-style-dev.scss",
|
||||
"node_modules/cropperjs/dist/cropper.min.css",
|
||||
"node_modules/pdfjs-dist/web/pdf_viewer.css"
|
||||
]
|
||||
],
|
||||
"stylePreprocessorOptions": {
|
||||
"includePaths": [
|
||||
"lib", "lib/core/src/lib"
|
||||
]
|
||||
}
|
||||
},
|
||||
"configurations": {
|
||||
"ci": {
|
||||
@@ -675,12 +668,16 @@
|
||||
"outputDir": "dist/storybook/process-services-cloud",
|
||||
"compodoc": false,
|
||||
"styles": [
|
||||
"demo-shell/src/assets/fonts/muli/muli.css",
|
||||
"demo-shell/src/styles.scss",
|
||||
"demo-shell/src/custom-style-dev.scss",
|
||||
"node_modules/cropperjs/dist/cropper.min.css",
|
||||
"node_modules/pdfjs-dist/web/pdf_viewer.css"
|
||||
]
|
||||
],
|
||||
"stylePreprocessorOptions": {
|
||||
"includePaths": [
|
||||
"lib", "lib/core/src/lib"
|
||||
]
|
||||
}
|
||||
},
|
||||
"configurations": {
|
||||
"ci": {
|
||||
@@ -699,16 +696,6 @@
|
||||
]
|
||||
}
|
||||
},
|
||||
"spellcheck": {
|
||||
"executor": "nx:run-commands",
|
||||
"options": {
|
||||
"commands": [
|
||||
{
|
||||
"command": "npx cspell 'lib/process-services-cloud/**/*.ts'"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"stylelint": {
|
||||
"executor": "nx:run-commands",
|
||||
"options": {
|
||||
@@ -763,7 +750,12 @@
|
||||
"tsConfig": "lib/insights/tsconfig.spec.json",
|
||||
"karmaConfig": "lib/insights/karma.conf.js",
|
||||
"sourceMap": true,
|
||||
"codeCoverage": true
|
||||
"codeCoverage": true,
|
||||
"stylePreprocessorOptions": {
|
||||
"includePaths": [
|
||||
"lib", "lib/core/src/lib"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"lint": {
|
||||
@@ -775,16 +767,6 @@
|
||||
]
|
||||
}
|
||||
},
|
||||
"spellcheck": {
|
||||
"executor": "nx:run-commands",
|
||||
"options": {
|
||||
"commands": [
|
||||
{
|
||||
"command": "npx cspell 'lib/insights/**/*.ts'"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"stylelint": {
|
||||
"executor": "nx:run-commands",
|
||||
"options": {
|
||||
@@ -838,7 +820,12 @@
|
||||
"tsConfig": "lib/extensions/tsconfig.spec.json",
|
||||
"karmaConfig": "lib/extensions/karma.conf.js",
|
||||
"sourceMap": true,
|
||||
"codeCoverage": true
|
||||
"codeCoverage": true,
|
||||
"stylePreprocessorOptions": {
|
||||
"includePaths": [
|
||||
"lib", "lib/core/src/lib"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"lint": {
|
||||
@@ -848,17 +835,6 @@
|
||||
"lib/extensions/**/*.ts",
|
||||
"lib/extensions/**/*.html"
|
||||
]
|
||||
},
|
||||
"dependsOn": ["spellcheck"]
|
||||
},
|
||||
"spellcheck": {
|
||||
"executor": "nx:run-commands",
|
||||
"options": {
|
||||
"commands": [
|
||||
{
|
||||
"command": "npx cspell 'lib/extensions/**/*.ts'"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"npm-publish": {
|
||||
@@ -897,7 +873,12 @@
|
||||
"entryName": "shared",
|
||||
"entryPath": "/lib/testing/src/lib/shared/index.ts"
|
||||
}
|
||||
]
|
||||
],
|
||||
"stylePreprocessorOptions": {
|
||||
"includePaths": [
|
||||
"lib", "lib/core/src/lib"
|
||||
]
|
||||
}
|
||||
},
|
||||
"configurations": {
|
||||
"production": {
|
||||
@@ -978,7 +959,12 @@
|
||||
"outputPath": "dist/libs/eslint-plugin-eslint-angular",
|
||||
"main": "lib/eslint-angular/index.ts",
|
||||
"generatePackageJson" : true,
|
||||
"tsConfig": "lib/eslint-angular/tsconfig.lib.prod.json"
|
||||
"tsConfig": "lib/eslint-angular/tsconfig.lib.prod.json",
|
||||
"stylePreprocessorOptions": {
|
||||
"includePaths": [
|
||||
"lib", "lib/core/src/lib"
|
||||
]
|
||||
}
|
||||
},
|
||||
"configurations": {
|
||||
"production": {
|
||||
@@ -1033,11 +1019,15 @@
|
||||
"prefix": "adf",
|
||||
"architect": {
|
||||
"build": {
|
||||
"builder": "@nrwl/workspace:run-commands",
|
||||
"builder": "nx:run-commands",
|
||||
"options": {
|
||||
"commands": [
|
||||
"cd lib/cli && npm i && npm run dist"
|
||||
]
|
||||
"command":
|
||||
"cd lib/cli && npm i && npm run dist",
|
||||
"stylePreprocessorOptions": {
|
||||
"includePaths": [
|
||||
"lib", "lib/core/src/lib"
|
||||
]
|
||||
}
|
||||
},
|
||||
"configurations": {
|
||||
"production": {
|
||||
@@ -1113,8 +1103,12 @@
|
||||
"browserTarget": "stories:storybook",
|
||||
"configDir": "lib/stories/.storybook",
|
||||
"compodoc": false,
|
||||
"stylePreprocessorOptions": {
|
||||
"includePaths": [
|
||||
"lib", "lib/core/src/lib"
|
||||
]
|
||||
},
|
||||
"styles": [
|
||||
"demo-shell/src/assets/fonts/muli/muli.css",
|
||||
"demo-shell/src/styles.scss",
|
||||
"demo-shell/src/custom-style-dev.scss",
|
||||
"node_modules/cropperjs/dist/cropper.min.css",
|
||||
@@ -1135,12 +1129,16 @@
|
||||
"outputDir": "dist/storybook/stories",
|
||||
"compodoc": false,
|
||||
"styles": [
|
||||
"demo-shell/src/assets/fonts/muli/muli.css",
|
||||
"demo-shell/src/styles.scss",
|
||||
"demo-shell/src/custom-style-dev.scss",
|
||||
"node_modules/cropperjs/dist/cropper.min.css",
|
||||
"node_modules/pdfjs-dist/web/pdf_viewer.css"
|
||||
]
|
||||
],
|
||||
"stylePreprocessorOptions": {
|
||||
"includePaths": [
|
||||
"lib", "lib/core/src/lib"
|
||||
]
|
||||
}
|
||||
},
|
||||
"configurations": {
|
||||
"ci": {
|
||||
|
||||
+4
-1
@@ -44,6 +44,7 @@
|
||||
"docx",
|
||||
"dropdownrestprocess",
|
||||
"Droppable",
|
||||
"dryrun",
|
||||
"ECMBPM",
|
||||
"ECMHOST",
|
||||
"Examinate",
|
||||
@@ -125,6 +126,7 @@
|
||||
"typeahed",
|
||||
"uncheck",
|
||||
"Unclaim",
|
||||
"Undeployed",
|
||||
"unfavorite",
|
||||
"unlisten",
|
||||
"unshare",
|
||||
@@ -139,7 +141,8 @@
|
||||
"webscript",
|
||||
"Whitespaces",
|
||||
"xdescribe",
|
||||
"xsrf"
|
||||
"xsrf",
|
||||
"BPMECM"
|
||||
],
|
||||
"dictionaries": [
|
||||
"html",
|
||||
|
||||
@@ -25,7 +25,7 @@ const fs = require("fs");
|
||||
const os = require("os");
|
||||
const cp = require("child_process");
|
||||
const isWindows = os.platform() === "win32";
|
||||
const { output } = require("@nrwl/workspace");
|
||||
const output = require('nx/src/utils/output').output;
|
||||
|
||||
/**
|
||||
* Paths to files being patched
|
||||
|
||||
+71
-93
@@ -1,95 +1,73 @@
|
||||
path = require('path');
|
||||
module.exports = {
|
||||
extends: '../.eslintrc.js',
|
||||
ignorePatterns: [
|
||||
'!**/*'
|
||||
],
|
||||
overrides: [
|
||||
{
|
||||
files: [
|
||||
'*.ts'
|
||||
],
|
||||
parserOptions: {
|
||||
project: [
|
||||
path.join(__dirname, 'tsconfig.app.json'),
|
||||
path.join(__dirname, 'src/tsconfig.spec.json'),
|
||||
path.join(__dirname, 'e2e/tsconfig.e2e.json')
|
||||
],
|
||||
createDefaultProgram: true
|
||||
},
|
||||
plugins: [
|
||||
'eslint-plugin-unicorn',
|
||||
'eslint-plugin-rxjs'
|
||||
],
|
||||
rules: {
|
||||
'@angular-eslint/component-selector': [
|
||||
'error',
|
||||
{
|
||||
type: 'element',
|
||||
prefix: [
|
||||
'adf',
|
||||
'app'
|
||||
],
|
||||
style: 'kebab-case'
|
||||
}
|
||||
],
|
||||
'@angular-eslint/directive-selector': [
|
||||
'error',
|
||||
{
|
||||
type: [
|
||||
'element',
|
||||
'attribute'
|
||||
],
|
||||
prefix: [
|
||||
'adf',
|
||||
'app'
|
||||
],
|
||||
style: 'kebab-case'
|
||||
}
|
||||
],
|
||||
'@angular-eslint/no-host-metadata-property': 'off',
|
||||
'@angular-eslint/no-input-prefix': 'error',
|
||||
'@typescript-eslint/consistent-type-definitions': 'error',
|
||||
'@typescript-eslint/dot-notation': 'off',
|
||||
'@typescript-eslint/explicit-member-accessibility': [
|
||||
'off',
|
||||
{
|
||||
accessibility: 'explicit'
|
||||
}
|
||||
],
|
||||
'@typescript-eslint/no-inferrable-types': 'off',
|
||||
'@typescript-eslint/no-require-imports': 'off',
|
||||
'@typescript-eslint/no-var-requires': 'error',
|
||||
'brace-style': [
|
||||
'error',
|
||||
'1tbs'
|
||||
],
|
||||
'comma-dangle': 'error',
|
||||
'default-case': 'error',
|
||||
'import/order': 'off',
|
||||
'max-len': [
|
||||
'error',
|
||||
{
|
||||
code: 240
|
||||
}
|
||||
],
|
||||
'no-bitwise': 'off',
|
||||
'no-duplicate-imports': 'error',
|
||||
'no-multiple-empty-lines': 'error',
|
||||
'no-redeclare': 'error',
|
||||
'no-return-await': 'error',
|
||||
'rxjs/no-create': 'error',
|
||||
'rxjs/no-subject-unsubscribe': 'error',
|
||||
'rxjs/no-subject-value': 'error',
|
||||
'rxjs/no-unsafe-takeuntil': 'error',
|
||||
'unicorn/filename-case': 'error'
|
||||
}
|
||||
},
|
||||
{
|
||||
files: [
|
||||
'*.html'
|
||||
],
|
||||
rules: {}
|
||||
}
|
||||
]
|
||||
}
|
||||
extends: '../.eslintrc.js',
|
||||
ignorePatterns: ['!**/*'],
|
||||
overrides: [
|
||||
{
|
||||
files: ['*.ts'],
|
||||
parserOptions: {
|
||||
project: [
|
||||
path.join(__dirname, 'tsconfig.app.json'),
|
||||
path.join(__dirname, 'src/tsconfig.spec.json'),
|
||||
path.join(__dirname, 'e2e/tsconfig.e2e.json')
|
||||
],
|
||||
createDefaultProgram: true
|
||||
},
|
||||
plugins: ['eslint-plugin-unicorn', 'eslint-plugin-rxjs'],
|
||||
rules: {
|
||||
'@angular-eslint/component-selector': [
|
||||
'error',
|
||||
{
|
||||
type: 'element',
|
||||
prefix: ['adf', 'app'],
|
||||
style: 'kebab-case'
|
||||
}
|
||||
],
|
||||
'@angular-eslint/directive-selector': [
|
||||
'error',
|
||||
{
|
||||
type: ['element', 'attribute'],
|
||||
prefix: ['adf', 'app'],
|
||||
style: 'kebab-case'
|
||||
}
|
||||
],
|
||||
'@angular-eslint/no-host-metadata-property': 'off',
|
||||
'@angular-eslint/no-input-prefix': 'error',
|
||||
'@typescript-eslint/consistent-type-definitions': 'error',
|
||||
'@typescript-eslint/dot-notation': 'off',
|
||||
'@typescript-eslint/explicit-member-accessibility': [
|
||||
'off',
|
||||
{
|
||||
accessibility: 'explicit'
|
||||
}
|
||||
],
|
||||
'@typescript-eslint/no-inferrable-types': 'off',
|
||||
'@typescript-eslint/no-require-imports': 'off',
|
||||
'@typescript-eslint/no-var-requires': 'error',
|
||||
'comma-dangle': 'error',
|
||||
'default-case': 'error',
|
||||
'import/order': 'off',
|
||||
'max-len': [
|
||||
'error',
|
||||
{
|
||||
code: 240
|
||||
}
|
||||
],
|
||||
'no-bitwise': 'off',
|
||||
'no-duplicate-imports': 'error',
|
||||
'no-multiple-empty-lines': 'error',
|
||||
'no-redeclare': 'error',
|
||||
'no-return-await': 'error',
|
||||
'rxjs/no-create': 'error',
|
||||
'rxjs/no-subject-unsubscribe': 'error',
|
||||
'rxjs/no-subject-value': 'error',
|
||||
'rxjs/no-unsafe-takeuntil': 'error',
|
||||
'unicorn/filename-case': 'error'
|
||||
}
|
||||
},
|
||||
{
|
||||
files: ['*.html'],
|
||||
rules: {}
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
@@ -1,77 +0,0 @@
|
||||
var port = process.env.PORT || 3000,
|
||||
http = require('http'),
|
||||
fs = require('fs'),
|
||||
url = require('url'),
|
||||
mime = require('mime'),
|
||||
html = fs.readFileSync('index.html');
|
||||
|
||||
var log = function(entry) {
|
||||
fs.appendFileSync('/tmp/sample-app.log', new Date().toISOString() + ' - ' + entry + '\n');
|
||||
};
|
||||
|
||||
var server = http.createServer(function (req, res) {
|
||||
|
||||
// Parse the request containing file name
|
||||
var pathname = url.parse(req.url).pathname;
|
||||
|
||||
// Print the name of the file for which request is made.
|
||||
console.log("Request for " + pathname + " received.");
|
||||
|
||||
if (req.method === 'POST') {
|
||||
var body = '';
|
||||
|
||||
req.on('data', function(chunk) {
|
||||
body += chunk;
|
||||
});
|
||||
|
||||
req.on('end', function() {
|
||||
if (req.url === '/') {
|
||||
log('Received message: ' + body);
|
||||
} else if (req.url === '/scheduled') {
|
||||
log('Received task ' + req.headers['x-aws-sqsd-taskname'] + ' scheduled at ' + req.headers['x-aws-sqsd-scheduled-at']);
|
||||
}
|
||||
|
||||
res.writeHead(200, 'OK', {'Content-Type': 'text/plain'});
|
||||
res.end();
|
||||
});
|
||||
} else {
|
||||
var filename = pathname.substr(1);
|
||||
if(filename === '' || filename.indexOf('.') === -1){
|
||||
filename = 'index.html';
|
||||
}
|
||||
// Read the requested file content from file system
|
||||
fs.readFile(filename, function (err, data) {
|
||||
if (err) {
|
||||
console.log(err, filename);
|
||||
// HTTP Status: 404 : NOT FOUND
|
||||
// Content Type: text/plain
|
||||
res.writeHead(404, {'Content-Type': 'text/html'});
|
||||
}else{
|
||||
//Page found
|
||||
// HTTP Status: 200 : OK
|
||||
// Content Type: text/plain
|
||||
var type = mime.lookup(filename);
|
||||
console.log('type',type);
|
||||
if (!res.getHeader('content-type')) {
|
||||
var charset = mime.charsets.lookup(type);
|
||||
res.setHeader('Content-Type', type + (charset ? '; charset=' + charset : ''));
|
||||
}
|
||||
if(type.indexOf('image') > -1 || type.indexOf('font') > -1){
|
||||
var img = fs.readFileSync(pathname.substr(1));
|
||||
res.end(img, 'binary');
|
||||
}else{
|
||||
res.write(data.toString());
|
||||
}
|
||||
// Write the content of the file to response body
|
||||
}
|
||||
// Send the response body
|
||||
res.end();
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// Listen on port 3000, IP defaults to 127.0.0.1
|
||||
server.listen(port);
|
||||
|
||||
// Put a friendly message on the terminal
|
||||
console.log('Server running at http://127.0.0.1:' + port + '/');
|
||||
@@ -1,31 +0,0 @@
|
||||
/*!
|
||||
* @license
|
||||
* Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { MyAppPage } from './app.po';
|
||||
|
||||
describe('MyApp App', () => {
|
||||
let page: MyAppPage;
|
||||
|
||||
beforeEach(() => {
|
||||
page = new MyAppPage();
|
||||
});
|
||||
|
||||
it('should display toolbar', () => {
|
||||
page.navigateTo();
|
||||
expect(page.getToolbar()).toBeDefined();
|
||||
});
|
||||
});
|
||||
@@ -1,28 +0,0 @@
|
||||
/*!
|
||||
* @license
|
||||
* Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { browser, element, by } from 'protractor';
|
||||
|
||||
export class MyAppPage {
|
||||
navigateTo() {
|
||||
return browser.get('/');
|
||||
}
|
||||
|
||||
getToolbar() {
|
||||
return element(by.tagName('adf-toolbar'));
|
||||
}
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"extends": "../../tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"outDir": "../out-tsc/e2e",
|
||||
"module": "commonjs",
|
||||
"target": "es5",
|
||||
"types": ["jasmine", "jasminewd2", "node"]
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "Alfresco-ADF-Angular-Demo",
|
||||
"description": "Demo shell for Alfresco Angular components",
|
||||
"version": "6.2.0",
|
||||
"version": "6.5.2",
|
||||
"author": "Hyland Software, Inc. and its affiliates",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
|
||||
@@ -1,39 +0,0 @@
|
||||
{
|
||||
"title": "مرحبًا",
|
||||
"NOTIFICATIONS": {
|
||||
"TASK_ASSIGNED": "تم تعيين المهمة {{taskName}} إلى {{assignee}}",
|
||||
"PROCESS_STARTED": "تم بدء عملية {{processName}}",
|
||||
"TASK_UPDATED": "تم تحديث تفاصيل مهمة {{taskName}}",
|
||||
"TASK_CREATED": "تم إنشاء المهمة {{TaskName}}"
|
||||
},
|
||||
"SEARCH": {
|
||||
"RESULTS": "نتائج البحث",
|
||||
"NO_RESULT": "لم يتم العثور على نتائج",
|
||||
"FACET_FIELDS": {
|
||||
"TYPE": "1:النوع",
|
||||
"SIZE": "2:الحجم",
|
||||
"CREATOR": "3:المُنشئ",
|
||||
"MODIFIER": "4:المُعدل",
|
||||
"CREATED": "5:تم الإنشاء"
|
||||
},
|
||||
"FACET_QUERIES": {
|
||||
"MY_FACET_QUERIES": "استعلامات واجهتي",
|
||||
"CREATED_THIS_YEAR": "1.تم الإنشاء هذا العام",
|
||||
"MIMETYPE": "2.النوع: HTML",
|
||||
"XTRASMALL": "3.الحجم: فائق الصغر",
|
||||
"SMALL": "4.الحجم: صغير",
|
||||
"MEDIUM": "5.الحجم: متوسط",
|
||||
"LARGE": "6.الحجم: كبير",
|
||||
"XTRALARGE": "7.الحجم: فائق الكبر",
|
||||
"XXTRALARGE": "8.الحجم: كبير XX"
|
||||
}
|
||||
},
|
||||
"GROUP-TITLE1-TRANSLATION-KEY": "الترجمة الأولى للعنوان المخصص",
|
||||
"GROUP-TITLE2-TRANSLATION-KEY": "الترجمة الثانية للعنوان المخصص",
|
||||
"ERROR_CONTENT": {
|
||||
"507": {
|
||||
"TITLE": "قرص ACS ممتلئ",
|
||||
"DESCRIPTION": "يتجاوز المحتوى حد سعة التخزين المكون للشبكة أو النظام"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
{
|
||||
"title": "Vítejte",
|
||||
"NOTIFICATIONS": {
|
||||
"TASK_ASSIGNED": "Úkol {{taskName}} byl přiřazen uživateli {{assignee}}",
|
||||
"PROCESS_STARTED": "Byl spuštěn proces {{processName}}",
|
||||
"TASK_UPDATED": "Byly aktualizovány podrobnosti úkolu {{taskName}}",
|
||||
"TASK_CREATED": "Úkol {{taskName}} byl vytvořen"
|
||||
},
|
||||
"SEARCH": {
|
||||
"RESULTS": "Výsledky hledání",
|
||||
"NO_RESULT": "Nebyly nalezeny žádné výsledky",
|
||||
"FACET_FIELDS": {
|
||||
"TYPE": "1:Typ",
|
||||
"SIZE": "2:Velikost",
|
||||
"CREATOR": "3:Autor",
|
||||
"MODIFIER": "4:Upravil(a)",
|
||||
"CREATED": "5:Vytvořeno"
|
||||
},
|
||||
"FACET_QUERIES": {
|
||||
"MY_FACET_QUERIES": "Moje dotazy na aspekty",
|
||||
"CREATED_THIS_YEAR": "1.Vytvořeno tento rok",
|
||||
"MIMETYPE": "2.Typ: HTML",
|
||||
"XTRASMALL": "3.Velikost: extra malé",
|
||||
"SMALL": "4.Velikost: malé",
|
||||
"MEDIUM": "5.Velikost: střední",
|
||||
"LARGE": "6.Velikost: velké",
|
||||
"XTRALARGE": "7.Velikost: extra velké",
|
||||
"XXTRALARGE": "8.Velikost: XX velké"
|
||||
}
|
||||
},
|
||||
"GROUP-TITLE1-TRANSLATION-KEY": "Vlastní překlad názvu 1",
|
||||
"GROUP-TITLE2-TRANSLATION-KEY": "Vlastní překlad názvu 2",
|
||||
"ERROR_CONTENT": {
|
||||
"507": {
|
||||
"TITLE": "Disk ACS plný",
|
||||
"DESCRIPTION": "Obsah přesahuje celkovou kvótu úložiště nastavenou pro síť nebo systém"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
{
|
||||
"title": "Velkommen",
|
||||
"NOTIFICATIONS": {
|
||||
"TASK_ASSIGNED": "{{taskName}} opgave er blevet tildelt til {{assignee}}",
|
||||
"PROCESS_STARTED": "{{processName}} processen er startet",
|
||||
"TASK_UPDATED": "{{taskName}} opgavedetaljer er blevet opdateret",
|
||||
"TASK_CREATED": "Opgaven {{taskName}} blev oprettet"
|
||||
},
|
||||
"SEARCH": {
|
||||
"RESULTS": "Søgeresultater",
|
||||
"NO_RESULT": "Der blev ikke fundet nogen resultater",
|
||||
"FACET_FIELDS": {
|
||||
"TYPE": "1: Type",
|
||||
"SIZE": "2: Størrelse",
|
||||
"CREATOR": "3: Opretter",
|
||||
"MODIFIER": "4: Modifikator",
|
||||
"CREATED": "5: Oprettet"
|
||||
},
|
||||
"FACET_QUERIES": {
|
||||
"MY_FACET_QUERIES": "Mine facetforespørgsler",
|
||||
"CREATED_THIS_YEAR": "1. Oprettet i år",
|
||||
"MIMETYPE": "2. Type: HTML",
|
||||
"XTRASMALL": "3. Størrelse: xtra small",
|
||||
"SMALL": "4. Størrelse: small",
|
||||
"MEDIUM": "5. Størrelse: medium",
|
||||
"LARGE": "6. Størrelse: large",
|
||||
"XTRALARGE": "7. Størrelse: xtra large",
|
||||
"XXTRALARGE": "8. Størrelse: XX large"
|
||||
}
|
||||
},
|
||||
"GROUP-TITLE1-TRANSLATION-KEY": "Brugerdefineret titel oversættelse et",
|
||||
"GROUP-TITLE2-TRANSLATION-KEY": "Brugerdefineret titel oversættelse to",
|
||||
"ERROR_CONTENT": {
|
||||
"507": {
|
||||
"TITLE": "ACS-disken er fuld",
|
||||
"DESCRIPTION": "Indholdet overskrider den generelle lagerkvotegrænse, der er konfigureret for netværket eller systemet"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
{
|
||||
"title": "Willkommen",
|
||||
"NOTIFICATIONS": {
|
||||
"TASK_ASSIGNED": "Aufgabe '{{taskName}}' wurde {{assignee}} zugewiesen",
|
||||
"PROCESS_STARTED": "Prozess '{{processName}}' wurde gestartet",
|
||||
"TASK_UPDATED": "Aufgabe '{{taskName}}' wurde aktualisiert",
|
||||
"TASK_CREATED": "Die Aufgabe {{taskName}} wurde erstellt"
|
||||
},
|
||||
"SEARCH": {
|
||||
"RESULTS": "Ergebnisse durchsuchen",
|
||||
"NO_RESULT": "Keine Ergebnisse gefunden",
|
||||
"FACET_FIELDS": {
|
||||
"TYPE": "1:Typ",
|
||||
"SIZE": "2:Größe",
|
||||
"CREATOR": "3:Erstellt von",
|
||||
"MODIFIER": "4:Bearbeitet von",
|
||||
"CREATED": "5:Erstellt am"
|
||||
},
|
||||
"FACET_QUERIES": {
|
||||
"MY_FACET_QUERIES": "Meine Facet-Abfragen",
|
||||
"CREATED_THIS_YEAR": "1.Dieses Jahr erstellt",
|
||||
"MIMETYPE": "2.Typ: HTML",
|
||||
"XTRASMALL": "3.Größe: sehr klein",
|
||||
"SMALL": "4.Größe: klein",
|
||||
"MEDIUM": "5.Größe: mittel",
|
||||
"LARGE": "6.Größe: groß",
|
||||
"XTRALARGE": "7.Größe: sehr groß",
|
||||
"XXTRALARGE": "8.Größe: extrem groß"
|
||||
}
|
||||
},
|
||||
"GROUP-TITLE1-TRANSLATION-KEY": "Übersetzung benutzerdefinierter Titel 1",
|
||||
"GROUP-TITLE2-TRANSLATION-KEY": "Übersetzung benutzerdefinierter Titel 2",
|
||||
"ERROR_CONTENT": {
|
||||
"507": {
|
||||
"TITLE": "ACS-Datenträger voll",
|
||||
"DESCRIPTION": "Inhalt übersteigt die für das Netzwerk oder System konfigurierte Gesamtspeicherbegrenzung"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
{
|
||||
"title": "Bienvenido",
|
||||
"NOTIFICATIONS": {
|
||||
"TASK_ASSIGNED": "La tarea {{taskName}} ha sido asignada a {{assignee}}",
|
||||
"PROCESS_STARTED": "Se ha iniciado el proceso {{processName}}",
|
||||
"TASK_UPDATED": "Se actualizaron los detalles de la tarea {{taskName}}",
|
||||
"TASK_CREATED": "Se ha creado la tarea {{taskName}}"
|
||||
},
|
||||
"SEARCH": {
|
||||
"RESULTS": "Resultados de la búsqueda",
|
||||
"NO_RESULT": "Ningún resultado encontrado",
|
||||
"FACET_FIELDS": {
|
||||
"TYPE": "1:Tipo",
|
||||
"SIZE": "2:Tamaño",
|
||||
"CREATOR": "3:Creador",
|
||||
"MODIFIER": "4:Modificador",
|
||||
"CREATED": "5:Creados"
|
||||
},
|
||||
"FACET_QUERIES": {
|
||||
"MY_FACET_QUERIES": "Mis consultas por filtros",
|
||||
"CREATED_THIS_YEAR": "1.Creadas este año",
|
||||
"MIMETYPE": "2.Tipo: HTML",
|
||||
"XTRASMALL": "3.Tamaño: extrapequeño",
|
||||
"SMALL": "4.Tamaño: pequeño",
|
||||
"MEDIUM": "5.Tamaño: mediano",
|
||||
"LARGE": "6.Tamaño: grande",
|
||||
"XTRALARGE": "7.Tamaño: extragrande",
|
||||
"XXTRALARGE": "8.Tamaño: extraextragrande"
|
||||
}
|
||||
},
|
||||
"GROUP-TITLE1-TRANSLATION-KEY": "Traducción de título personalizado 1",
|
||||
"GROUP-TITLE2-TRANSLATION-KEY": "Traducción de título personalizado 2",
|
||||
"ERROR_CONTENT": {
|
||||
"507": {
|
||||
"TITLE": "Disco ACS lleno",
|
||||
"DESCRIPTION": "El contenido supera el límite de la cuota de almacenamiento general configurado para la red o sistema."
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
{
|
||||
"title": "Tervetuloa",
|
||||
"NOTIFICATIONS": {
|
||||
"TASK_ASSIGNED": "{{taskName}} -tehtävä on määritetty käyttäjälle {{assignee}}",
|
||||
"PROCESS_STARTED": "{{processName}} -prosessi on käynnistetty",
|
||||
"TASK_UPDATED": "{{taskName}} -tehtävän tiedot on päivitetty",
|
||||
"TASK_CREATED": "{{taskName}} -tehtävä luotiin"
|
||||
},
|
||||
"SEARCH": {
|
||||
"RESULTS": "Hakutulokset",
|
||||
"NO_RESULT": "Tuloksia ei löydy",
|
||||
"FACET_FIELDS": {
|
||||
"TYPE": "1: tyyppi",
|
||||
"SIZE": "2: koko",
|
||||
"CREATOR": "3: tekijä",
|
||||
"MODIFIER": "4: muokkaaja",
|
||||
"CREATED": "5: luotu"
|
||||
},
|
||||
"FACET_QUERIES": {
|
||||
"MY_FACET_QUERIES": "Omat kyselyt",
|
||||
"CREATED_THIS_YEAR": "1. Luotu tänä vuonna",
|
||||
"MIMETYPE": "2. Tyyppi: HTML",
|
||||
"XTRASMALL": "3. Koko: XS",
|
||||
"SMALL": "4. Koko: S",
|
||||
"MEDIUM": "5. Koko: M",
|
||||
"LARGE": "6. Koko: L",
|
||||
"XTRALARGE": "7. Koko: XL",
|
||||
"XXTRALARGE": "8. Koko: XXL"
|
||||
}
|
||||
},
|
||||
"GROUP-TITLE1-TRANSLATION-KEY": "Oma otsikkokäännös yksi",
|
||||
"GROUP-TITLE2-TRANSLATION-KEY": "Oma otsikkokäännös kaksi",
|
||||
"ERROR_CONTENT": {
|
||||
"507": {
|
||||
"TITLE": "ACS-levy täynnä",
|
||||
"DESCRIPTION": "Sisältö ylittää verkolle tai järjestelmälle määritetyn tallennustilan kokonaisrajoituksen"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
{
|
||||
"title": "Bienvenue",
|
||||
"NOTIFICATIONS": {
|
||||
"TASK_ASSIGNED": "La tâche {{taskName}} a été assignée à {{assignee}}",
|
||||
"PROCESS_STARTED": "Le processus {{processName}} a été démarré",
|
||||
"TASK_UPDATED": "Les détails de la tâche {{taskName}} ont été mis à jour",
|
||||
"TASK_CREATED": "{{taskName}} tâche a été créée"
|
||||
},
|
||||
"SEARCH": {
|
||||
"RESULTS": "Résultats de la recherche",
|
||||
"NO_RESULT": "Aucun résultat trouvé",
|
||||
"FACET_FIELDS": {
|
||||
"TYPE": "1:Type",
|
||||
"SIZE": "2:Taille",
|
||||
"CREATOR": "3:Créateur",
|
||||
"MODIFIER": "4:Modificateur",
|
||||
"CREATED": "5:Créé"
|
||||
},
|
||||
"FACET_QUERIES": {
|
||||
"MY_FACET_QUERIES": "Mes recherches avec filtre",
|
||||
"CREATED_THIS_YEAR": "1.Créé cette année",
|
||||
"MIMETYPE": "2.Type : HTML",
|
||||
"XTRASMALL": "3.Taille : très petit",
|
||||
"SMALL": "4.Taille : petit",
|
||||
"MEDIUM": "5.Taille : moyen",
|
||||
"LARGE": "6.Taille : gros",
|
||||
"XTRALARGE": "7.Taille : très gros",
|
||||
"XXTRALARGE": "8.Taille : énorme"
|
||||
}
|
||||
},
|
||||
"GROUP-TITLE1-TRANSLATION-KEY": "Titre personnalisé traduction un",
|
||||
"GROUP-TITLE2-TRANSLATION-KEY": "Titre personnalisé traduction deux",
|
||||
"ERROR_CONTENT": {
|
||||
"507": {
|
||||
"TITLE": "Disque ACS plein",
|
||||
"DESCRIPTION": "Le contenu dépasse le quota maximum de stockage configuré pour le réseau ou système"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
{
|
||||
"title": "Benvenuto",
|
||||
"NOTIFICATIONS": {
|
||||
"TASK_ASSIGNED": "Il compito {{taskName}} è stato assegnato a {{assignee}}",
|
||||
"PROCESS_STARTED": "Il processo {{processName}} è stato avviato",
|
||||
"TASK_UPDATED": "I dettagli del compito {{taskName}} sono stati aggiornati",
|
||||
"TASK_CREATED": "Il compito {{taskName}} è stato creato"
|
||||
},
|
||||
"SEARCH": {
|
||||
"RESULTS": "Risultati della ricerca",
|
||||
"NO_RESULT": "Nessun risultato trovato",
|
||||
"FACET_FIELDS": {
|
||||
"TYPE": "1. Tipo",
|
||||
"SIZE": "2. Dimensioni",
|
||||
"CREATOR": "3. Autore",
|
||||
"MODIFIER": "4. Modificatore",
|
||||
"CREATED": "5. Creati"
|
||||
},
|
||||
"FACET_QUERIES": {
|
||||
"MY_FACET_QUERIES": "Le mie query filtri",
|
||||
"CREATED_THIS_YEAR": "1. Creati quest'anno",
|
||||
"MIMETYPE": "2.Tipo: HTML",
|
||||
"XTRASMALL": "3. Dimensioni: extra piccolo",
|
||||
"SMALL": "4. Dimensioni: piccolo",
|
||||
"MEDIUM": "5. Dimensioni: medio",
|
||||
"LARGE": "6. Dimensioni: grande",
|
||||
"XTRALARGE": "7. Dimensioni: extra grande",
|
||||
"XXTRALARGE": "8. Dimensioni: extra extra grande"
|
||||
}
|
||||
},
|
||||
"GROUP-TITLE1-TRANSLATION-KEY": "Custom Title Translation One",
|
||||
"GROUP-TITLE2-TRANSLATION-KEY": "Custom Title Translation Two",
|
||||
"ERROR_CONTENT": {
|
||||
"507": {
|
||||
"TITLE": "Dico ACS pieno",
|
||||
"DESCRIPTION": "Il contenuto supera il limite di archiviazione complessivo configurato per la rete o il sistema"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
{
|
||||
"title": "ようこそ",
|
||||
"NOTIFICATIONS": {
|
||||
"TASK_ASSIGNED": "{{taskName}}タスクが{{assignee}}に割り当てられました",
|
||||
"PROCESS_STARTED": "{{processName}}プロセスが開始しました",
|
||||
"TASK_UPDATED": "{{taskName}}タスクの詳細が更新されました",
|
||||
"TASK_CREATED": "{{taskName}}タスクが作成されました"
|
||||
},
|
||||
"SEARCH": {
|
||||
"RESULTS": "検索結果",
|
||||
"NO_RESULT": "一致するアイテムはありません",
|
||||
"FACET_FIELDS": {
|
||||
"TYPE": "1:タイプ",
|
||||
"SIZE": "2:サイズ",
|
||||
"CREATOR": "3:作成者",
|
||||
"MODIFIER": "4:変更者",
|
||||
"CREATED": "5:作成日"
|
||||
},
|
||||
"FACET_QUERIES": {
|
||||
"MY_FACET_QUERIES": "あなたのファセットクエリ",
|
||||
"CREATED_THIS_YEAR": "1.今年作成",
|
||||
"MIMETYPE": "2.タイプ: HTML",
|
||||
"XTRASMALL": "3.サイズ: 極小",
|
||||
"SMALL": "4.サイズ: 小",
|
||||
"MEDIUM": "5.サイズ: 中",
|
||||
"LARGE": "6.サイズ: 大",
|
||||
"XTRALARGE": "7.サイズ: 特大",
|
||||
"XXTRALARGE": "8.サイズ: 超特大"
|
||||
}
|
||||
},
|
||||
"GROUP-TITLE1-TRANSLATION-KEY": "カスタムのタイトル翻訳 1",
|
||||
"GROUP-TITLE2-TRANSLATION-KEY": "カスタムのタイトル翻訳 2",
|
||||
"ERROR_CONTENT": {
|
||||
"507": {
|
||||
"TITLE": "ACS のディスクがいっぱいです",
|
||||
"DESCRIPTION": "コンテンツのサイズが、ネットワークまたはシステムに設定されているストレージクォータの上限を超えています。"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
{
|
||||
"title": "Velkommen",
|
||||
"NOTIFICATIONS": {
|
||||
"TASK_ASSIGNED": "{{taskName}}-oppgaven er tilordnet til {{assignee}}",
|
||||
"PROCESS_STARTED": "{{processName}}-prosessen er startet",
|
||||
"TASK_UPDATED": "{{taskName}}-oppgavedetaljene er oppdatert",
|
||||
"TASK_CREATED": "Oppgaven {{taskName}} ble opprettet"
|
||||
},
|
||||
"SEARCH": {
|
||||
"RESULTS": "Søkeresultater",
|
||||
"NO_RESULT": "Ingen resultater funnet",
|
||||
"FACET_FIELDS": {
|
||||
"TYPE": "1:Type",
|
||||
"SIZE": "2:Størrelse",
|
||||
"CREATOR": "3:Oppretter",
|
||||
"MODIFIER": "4:Modifikator",
|
||||
"CREATED": "5:Opprettet"
|
||||
},
|
||||
"FACET_QUERIES": {
|
||||
"MY_FACET_QUERIES": "Mine egenskapsspørringer",
|
||||
"CREATED_THIS_YEAR": "1.Opprettet i år",
|
||||
"MIMETYPE": "2.Type: HTML",
|
||||
"XTRASMALL": "3.Størrelse: xtra small",
|
||||
"SMALL": "4.Størrelse: small",
|
||||
"MEDIUM": "5.Størrelse: medium",
|
||||
"LARGE": "6.Størrelse: large",
|
||||
"XTRALARGE": "7.Størrelse: xtra large",
|
||||
"XXTRALARGE": "8.Størrelse: XX large"
|
||||
}
|
||||
},
|
||||
"GROUP-TITLE1-TRANSLATION-KEY": "Egendefinert tittel, oversettelse én",
|
||||
"GROUP-TITLE2-TRANSLATION-KEY": "Egendefinert tittel, oversettelse to",
|
||||
"ERROR_CONTENT": {
|
||||
"507": {
|
||||
"TITLE": "ACS-disk er full",
|
||||
"DESCRIPTION": "Innhold overgår samlet lagringskvotegrense konfigurert for nettverket eller systemet"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
{
|
||||
"title": "Welkom",
|
||||
"NOTIFICATIONS": {
|
||||
"TASK_ASSIGNED": "{{taskName}}-taak is toegewezen aan {{assignee}}",
|
||||
"PROCESS_STARTED": "{{processName}}-proces is gestart",
|
||||
"TASK_UPDATED": "{{taskName}}-taakdetails zijn bijgewerkt",
|
||||
"TASK_CREATED": "Taak {{taskName}} is gemaakt"
|
||||
},
|
||||
"SEARCH": {
|
||||
"RESULTS": "Zoekresultaten",
|
||||
"NO_RESULT": "Geen resultaten gevonden",
|
||||
"FACET_FIELDS": {
|
||||
"TYPE": "1:Type",
|
||||
"SIZE": "2:Grootte",
|
||||
"CREATOR": "3:Maker",
|
||||
"MODIFIER": "4:Gewijzigd door",
|
||||
"CREATED": "5:Gemaakt"
|
||||
},
|
||||
"FACET_QUERIES": {
|
||||
"MY_FACET_QUERIES": "Mijn facetquery's",
|
||||
"CREATED_THIS_YEAR": "1.Dit jaar gemaakt",
|
||||
"MIMETYPE": "2.Type: HTML",
|
||||
"XTRASMALL": "3.Grootte: extra klein",
|
||||
"SMALL": "4.Grootte: klein",
|
||||
"MEDIUM": "5.Grootte: middelgroot",
|
||||
"LARGE": "6.Grootte: groot",
|
||||
"XTRALARGE": "7.Grootte: extra groot",
|
||||
"XXTRALARGE": "8.Grootte: XX groot"
|
||||
}
|
||||
},
|
||||
"GROUP-TITLE1-TRANSLATION-KEY": "Aangepaste titel vertaling één",
|
||||
"GROUP-TITLE2-TRANSLATION-KEY": "Aangepaste titel vertaling twee",
|
||||
"ERROR_CONTENT": {
|
||||
"507": {
|
||||
"TITLE": "ACS-schijf vol",
|
||||
"DESCRIPTION": "Content overschrijdt de totale opslaglimiet die is geconfigureerd voor het netwerk of systeem"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
{
|
||||
"title": "Witaj",
|
||||
"NOTIFICATIONS": {
|
||||
"TASK_ASSIGNED": "Zadanie {{taskName}} zostało przydzielone do {{assignee}}",
|
||||
"PROCESS_STARTED": "Proces {{processName}} został uruchomiony",
|
||||
"TASK_UPDATED": "Szczegóły zadania {{taskName}} zostały zaktualizowane",
|
||||
"TASK_CREATED": "Zadanie {{taskName}} zostało utworzone"
|
||||
},
|
||||
"SEARCH": {
|
||||
"RESULTS": "Wyniki wyszukiwania",
|
||||
"NO_RESULT": "Brak wyników",
|
||||
"FACET_FIELDS": {
|
||||
"TYPE": "1: Typ",
|
||||
"SIZE": "2: Rozmiar",
|
||||
"CREATOR": "3: Twórca",
|
||||
"MODIFIER": "4: Modyfikator",
|
||||
"CREATED": "5: Utworzono"
|
||||
},
|
||||
"FACET_QUERIES": {
|
||||
"MY_FACET_QUERIES": "Moje zapytania dotyczące aspektu",
|
||||
"CREATED_THIS_YEAR": "1. Utworzone w tym roku",
|
||||
"MIMETYPE": "2. Typ: HTML",
|
||||
"XTRASMALL": "3. Rozmiar: bardzo mały",
|
||||
"SMALL": "4. Rozmiar: mały",
|
||||
"MEDIUM": "5. Rozmiar: średni",
|
||||
"LARGE": "6. Rozmiar: duży",
|
||||
"XTRALARGE": "7. Rozmiar: bardzo duży",
|
||||
"XXTRALARGE": "8. Rozmiar: wyjątkowo duży"
|
||||
}
|
||||
},
|
||||
"GROUP-TITLE1-TRANSLATION-KEY": "Tytuł niestandardowy — tłumaczenie pierwsze",
|
||||
"GROUP-TITLE2-TRANSLATION-KEY": "Tytuł niestandardowy — tłumaczenie drugie",
|
||||
"ERROR_CONTENT": {
|
||||
"507": {
|
||||
"TITLE": "Dysk ACS pełny",
|
||||
"DESCRIPTION": "Zawartość przekracza limit łącznego przydziału miejsca w magazynie skonfigurowany w sieci lub systemie"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
{
|
||||
"title": "Bem-vindo",
|
||||
"NOTIFICATIONS": {
|
||||
"TASK_ASSIGNED": "A tarefa {{taskName}} foi atribuída a {{assignee}}",
|
||||
"PROCESS_STARTED": "O processo {{processName}} foi iniciado",
|
||||
"TASK_UPDATED": "Os detalhes da tarefa {{taskName}} foram atualizados",
|
||||
"TASK_CREATED": "A tarefa {{taskName}} foi criada"
|
||||
},
|
||||
"SEARCH": {
|
||||
"RESULTS": "Resultados da pesquisa",
|
||||
"NO_RESULT": "Nenhum resultado encontrado",
|
||||
"FACET_FIELDS": {
|
||||
"TYPE": "1:Tipo",
|
||||
"SIZE": "2:Tamanho",
|
||||
"CREATOR": "3:Criador",
|
||||
"MODIFIER": "4:Modificador",
|
||||
"CREATED": "5:Criado"
|
||||
},
|
||||
"FACET_QUERIES": {
|
||||
"MY_FACET_QUERIES": "Minhas consultas de faceta",
|
||||
"CREATED_THIS_YEAR": "1.Criado este ano",
|
||||
"MIMETYPE": "2.Tipo: HTML",
|
||||
"XTRASMALL": "3.Tamanho: muito pequeno",
|
||||
"SMALL": "4.Tamanho: pequeno",
|
||||
"MEDIUM": "5.Tamanho: médio",
|
||||
"LARGE": "6.Tamanho: grande",
|
||||
"XTRALARGE": "7.Tamanho: muito grande",
|
||||
"XXTRALARGE": "8.Tamanho: extragrande"
|
||||
}
|
||||
},
|
||||
"GROUP-TITLE1-TRANSLATION-KEY": "Tradução um de título personalizado",
|
||||
"GROUP-TITLE2-TRANSLATION-KEY": "Tradução dois de título personalizado",
|
||||
"ERROR_CONTENT": {
|
||||
"507": {
|
||||
"TITLE": "Disco ACS cheio",
|
||||
"DESCRIPTION": "O conteúdo excede o limite de armazenamento geral configurado para a rede ou o sistema"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
{
|
||||
"title": "Добро пожаловать",
|
||||
"NOTIFICATIONS": {
|
||||
"TASK_ASSIGNED": "Задача {{taskName}} была назначена {{assignee}}",
|
||||
"PROCESS_STARTED": "Процесс {{processName}} запущен",
|
||||
"TASK_UPDATED": "Сведения о задаче {{taskName}} обновлены",
|
||||
"TASK_CREATED": "{{taskName}} задача создана"
|
||||
},
|
||||
"SEARCH": {
|
||||
"RESULTS": "Результаты поиска",
|
||||
"NO_RESULT": "Результаты не найдены",
|
||||
"FACET_FIELDS": {
|
||||
"TYPE": "1: тип",
|
||||
"SIZE": "2: размер",
|
||||
"CREATOR": "3: автор",
|
||||
"MODIFIER": "4: редактор",
|
||||
"CREATED": "5: создано"
|
||||
},
|
||||
"FACET_QUERIES": {
|
||||
"MY_FACET_QUERIES": "Мои фасетные запросы",
|
||||
"CREATED_THIS_YEAR": "1. Создано в этом году",
|
||||
"MIMETYPE": "2. Тип HTML",
|
||||
"XTRASMALL": "3. Размер: крайне малый",
|
||||
"SMALL": "4. Размер: малый",
|
||||
"MEDIUM": "5. Размер: средний",
|
||||
"LARGE": "6. Размер: большой",
|
||||
"XTRALARGE": "7. Размер: очень большой",
|
||||
"XXTRALARGE": "8. Размер: огромный"
|
||||
}
|
||||
},
|
||||
"GROUP-TITLE1-TRANSLATION-KEY": "Перевод пользовательского заголовка один",
|
||||
"GROUP-TITLE2-TRANSLATION-KEY": "Перевод пользовательского заголовка два",
|
||||
"ERROR_CONTENT": {
|
||||
"507": {
|
||||
"TITLE": "Диск ACS заполнен",
|
||||
"DESCRIPTION": "Объем данных превысил максимально допустимое значение, установленное для сети или системы"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
{
|
||||
"title": "Välkommen",
|
||||
"NOTIFICATIONS": {
|
||||
"TASK_ASSIGNED": "{{taskName}} uppgiften har tilldelats till {{assignee}}",
|
||||
"PROCESS_STARTED": "{{processName}} processen har startats",
|
||||
"TASK_UPDATED": "{{taskName}} uppgiftsinformation har uppdaterats",
|
||||
"TASK_CREATED": "Uppgiften {{taskName}} skapades"
|
||||
},
|
||||
"SEARCH": {
|
||||
"RESULTS": "Sökresultat",
|
||||
"NO_RESULT": "Inga resultat hittades",
|
||||
"FACET_FIELDS": {
|
||||
"TYPE": "1:Typ",
|
||||
"SIZE": "2:Storlek",
|
||||
"CREATOR": "3:Skapad av",
|
||||
"MODIFIER": "4:Ändrad av",
|
||||
"CREATED": "5:Skapad den"
|
||||
},
|
||||
"FACET_QUERIES": {
|
||||
"MY_FACET_QUERIES": "Mina fasettförfrågningar",
|
||||
"CREATED_THIS_YEAR": "1.Skapad det här året",
|
||||
"MIMETYPE": "2.Typ: HTML",
|
||||
"XTRASMALL": "3.Storlek: extra small",
|
||||
"SMALL": "4.Storlek: small",
|
||||
"MEDIUM": "5.Storlek: medium",
|
||||
"LARGE": "6.Storlek: large",
|
||||
"XTRALARGE": "7.Storlek: extra large",
|
||||
"XXTRALARGE": "8.Storlek: XX large"
|
||||
}
|
||||
},
|
||||
"GROUP-TITLE1-TRANSLATION-KEY": "Anpassad titelöversättning ett",
|
||||
"GROUP-TITLE2-TRANSLATION-KEY": "Anpassad titelöversättning två",
|
||||
"ERROR_CONTENT": {
|
||||
"507": {
|
||||
"TITLE": "ACS disk full",
|
||||
"DESCRIPTION": "Innehållet överskrider övergripande kvotbegränsning som är konfigurerad för nätverket eller systemet"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
{
|
||||
"title": "欢迎使用",
|
||||
"NOTIFICATIONS": {
|
||||
"TASK_ASSIGNED": "{{taskName}} 任务已分配给 {{assignee}}",
|
||||
"PROCESS_STARTED": "{{processName}} 进程已启动",
|
||||
"TASK_UPDATED": "{{taskName}} 任务详细信息已更新",
|
||||
"TASK_CREATED": "{{taskName}} 任务已创建"
|
||||
},
|
||||
"SEARCH": {
|
||||
"RESULTS": "搜索结果",
|
||||
"NO_RESULT": "未找到结果",
|
||||
"FACET_FIELDS": {
|
||||
"TYPE": "1:类型",
|
||||
"SIZE": "2:字号",
|
||||
"CREATOR": "3:创建者",
|
||||
"MODIFIER": "4:修改者",
|
||||
"CREATED": "5:已创建"
|
||||
},
|
||||
"FACET_QUERIES": {
|
||||
"MY_FACET_QUERIES": "我的分面查询",
|
||||
"CREATED_THIS_YEAR": "1. 今年创建",
|
||||
"MIMETYPE": "2. 类型: HTML",
|
||||
"XTRASMALL": "3. 字号:超小",
|
||||
"SMALL": "4. 字号:小",
|
||||
"MEDIUM": "5. 字号:中等",
|
||||
"LARGE": "6. 字号:大",
|
||||
"XTRALARGE": "7. 字号:特大",
|
||||
"XXTRALARGE": "8. 字号:超大"
|
||||
}
|
||||
},
|
||||
"GROUP-TITLE1-TRANSLATION-KEY": "自定义标题翻译 1",
|
||||
"GROUP-TITLE2-TRANSLATION-KEY": "自定义标题翻译 2",
|
||||
"ERROR_CONTENT": {
|
||||
"507": {
|
||||
"TITLE": "ACS 磁盘已满",
|
||||
"DESCRIPTION": "内容超出为网络或系统配置的总存储配额限制"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -11,7 +11,3 @@ router-outlet[name='overlay'] + * {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
[dir='rtl'] .mat-icon {
|
||||
transform: scale(-1, 1);
|
||||
}
|
||||
|
||||
@@ -18,11 +18,11 @@
|
||||
import { Component, ViewEncapsulation, OnInit } from '@angular/core';
|
||||
import {
|
||||
AuthenticationService,
|
||||
AlfrescoApiService,
|
||||
PageTitleService
|
||||
} from '@alfresco/adf-core';
|
||||
import { Router } from '@angular/router';
|
||||
import { MatDialog } from '@angular/material/dialog';
|
||||
import { AdfHttpClient } from '@alfresco/adf-core/api';
|
||||
|
||||
@Component({
|
||||
selector: 'app-root',
|
||||
@@ -33,7 +33,7 @@ import { MatDialog } from '@angular/material/dialog';
|
||||
export class AppComponent implements OnInit {
|
||||
|
||||
constructor(private pageTitleService: PageTitleService,
|
||||
private alfrescoApiService: AlfrescoApiService,
|
||||
private adfHttpClient: AdfHttpClient,
|
||||
private authenticationService: AuthenticationService,
|
||||
private router: Router,
|
||||
private dialogRef: MatDialog) {
|
||||
@@ -43,7 +43,7 @@ export class AppComponent implements OnInit {
|
||||
ngOnInit() {
|
||||
this.pageTitleService.setTitle('title');
|
||||
|
||||
this.alfrescoApiService.getInstance().on('error', (error) => {
|
||||
this.adfHttpClient.on('error', (error) => {
|
||||
if (error.status === 401) {
|
||||
if (!this.authenticationService.isLoggedIn()) {
|
||||
this.dialogRef.closeAll();
|
||||
|
||||
@@ -16,31 +16,21 @@
|
||||
*/
|
||||
|
||||
import { BrowserModule } from '@angular/platform-browser';
|
||||
import { APP_INITIALIZER, NgModule } from '@angular/core';
|
||||
import { NgModule } from '@angular/core';
|
||||
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
||||
import { NgChartsModule } from 'ng2-charts';
|
||||
import { HttpClientModule } from '@angular/common/http';
|
||||
import { BrowserAnimationsModule, NoopAnimationsModule } from '@angular/platform-browser/animations';
|
||||
import { TranslateModule } from '@ngx-translate/core';
|
||||
import {
|
||||
AppConfigService,
|
||||
DebugAppConfigService,
|
||||
CoreModule,
|
||||
CoreAutomationService,
|
||||
AuthModule,
|
||||
provideTranslations
|
||||
} from '@alfresco/adf-core';
|
||||
import { AppConfigService, DebugAppConfigService, CoreModule, CoreAutomationService, AuthModule, provideTranslations } from '@alfresco/adf-core';
|
||||
import { ExtensionsModule } from '@alfresco/adf-extensions';
|
||||
import { AppComponent } from './app.component';
|
||||
import { MaterialModule } from './material.module';
|
||||
import { LogoutComponent } from './components/logout/logout.component';
|
||||
import { AppLayoutComponent } from './components/app-layout/app-layout.component';
|
||||
import { HomeComponent } from './components/home/home.component';
|
||||
import { SearchBarComponent } from './components/search/search-bar.component';
|
||||
import { SearchResultComponent } from './components/search/search-result.component';
|
||||
import { FormComponent } from './components/form/form.component';
|
||||
import { FormListComponent } from './components/form/form-list.component';
|
||||
import { FormLoadingComponent } from './components/form/form-loading.component';
|
||||
import { ProcessServiceComponent } from './components/process-service/process-service.component';
|
||||
import { ShowDiagramComponent } from './components/process-service/show-diagram.component';
|
||||
import { FormViewerComponent } from './components/process-service/form-viewer.component';
|
||||
@@ -48,31 +38,25 @@ import { FormNodeViewerComponent } from './components/process-service/form-node-
|
||||
import { AppsViewComponent } from './components/process-service/apps-view.component';
|
||||
import { FilesComponent } from './components/files/files.component';
|
||||
import { VersionManagerDialogAdapterComponent } from './components/files/version-manager-dialog-adapter.component';
|
||||
import { MetadataDialogAdapterComponent } from './components/files/metadata-dialog-adapter.component';
|
||||
import { appRoutes } from './app.routes';
|
||||
import { TaskAttachmentsComponent } from './components/process-service/task-attachments.component';
|
||||
import { ProcessAttachmentsComponent } from './components/process-service/process-attachments.component';
|
||||
import { SharedLinkViewComponent } from './components/shared-link-view/shared-link-view.component';
|
||||
import { DemoPermissionComponent } from './components/permissions/demo-permissions.component';
|
||||
import { MonacoEditorModule } from 'ngx-monaco-editor-v2';
|
||||
import { ContentModule } from '@alfresco/adf-content-services';
|
||||
import { InsightsModule } from '@alfresco/adf-insights';
|
||||
import { ProcessModule } from '@alfresco/adf-process-services';
|
||||
import { TreeViewSampleComponent } from './components/tree-view/tree-view-sample.component';
|
||||
import { CloudLayoutComponent } from './components/cloud/cloud-layout.component';
|
||||
import { AppsCloudDemoComponent } from './components/cloud/apps-cloud-demo.component';
|
||||
import { TasksCloudDemoComponent } from './components/cloud/tasks-cloud-demo.component';
|
||||
import { ProcessesCloudDemoComponent } from './components/cloud/processes-cloud-demo.component';
|
||||
import { TaskDetailsCloudDemoComponent } from './components/cloud/task-details-cloud-demo.component';
|
||||
import { TaskHeaderCloudDemoComponent } from './components/cloud/task-header-cloud-demo.component';
|
||||
import { ServiceTaskListCloudDemoComponent } from './components/cloud/service-task-list-cloud-demo.component';
|
||||
import { CloudViewerComponent } from './components/cloud/cloud-viewer.component';
|
||||
import { ProcessDetailsCloudDemoComponent } from './components/cloud/process-details-cloud-demo.component';
|
||||
import { StartTaskCloudDemoComponent } from './components/cloud/start-task-cloud-demo.component';
|
||||
import { StartProcessCloudDemoComponent } from './components/cloud/start-process-cloud-demo.component';
|
||||
import { CloudBreadcrumbsComponent } from './components/cloud/cloud-breadcrumb-component';
|
||||
import { CloudFiltersDemoComponent } from './components/cloud/cloud-filters-demo.component';
|
||||
import { PeopleGroupCloudDemoComponent } from './components/cloud/people-groups-cloud-demo.component';
|
||||
import { FormCloudDemoComponent } from './components/app-layout/cloud/form-demo/cloud-form-demo.component';
|
||||
import { environment } from '../environments/environment';
|
||||
import { AppCloudSharedModule } from './components/cloud/shared/cloud.shared.module';
|
||||
@@ -81,53 +65,16 @@ import { ProcessServicesCloudModule } from '@alfresco/adf-process-services-cloud
|
||||
import { RouterModule } from '@angular/router';
|
||||
import { ProcessCloudLayoutComponent } from './components/cloud/process-cloud-layout.component';
|
||||
import { CustomEditorComponent, CustomWidgetComponent } from './components/cloud/custom-form-components/custom-editor.component';
|
||||
|
||||
import { registerLocaleData } from '@angular/common';
|
||||
import localeFr from '@angular/common/locales/fr';
|
||||
import localeDe from '@angular/common/locales/de';
|
||||
import localeIt from '@angular/common/locales/it';
|
||||
import localeEs from '@angular/common/locales/es';
|
||||
import localeJa from '@angular/common/locales/ja';
|
||||
import localeNl from '@angular/common/locales/nl';
|
||||
import localePt from '@angular/common/locales/pt';
|
||||
import localeNb from '@angular/common/locales/nb';
|
||||
import localeRu from '@angular/common/locales/ru';
|
||||
import localeCh from '@angular/common/locales/zh';
|
||||
import localeAr from '@angular/common/locales/ar';
|
||||
import localeCs from '@angular/common/locales/cs';
|
||||
import localePl from '@angular/common/locales/pl';
|
||||
import localeFi from '@angular/common/locales/fi';
|
||||
import localeDa from '@angular/common/locales/da';
|
||||
import localeSv from '@angular/common/locales/sv';
|
||||
import { setupAppNotifications } from './services/app-notifications-factory';
|
||||
import { AppNotificationsService } from './services/app-notifications.service';
|
||||
import { SearchFilterChipsComponent } from './components/search/search-filter-chips.component';
|
||||
import { UserInfoComponent } from './components/app-layout/user-info/user-info.component';
|
||||
|
||||
registerLocaleData(localeFr);
|
||||
registerLocaleData(localeDe);
|
||||
registerLocaleData(localeIt);
|
||||
registerLocaleData(localeEs);
|
||||
registerLocaleData(localeJa);
|
||||
registerLocaleData(localeNl);
|
||||
registerLocaleData(localePt);
|
||||
registerLocaleData(localeNb);
|
||||
registerLocaleData(localeRu);
|
||||
registerLocaleData(localeCh);
|
||||
registerLocaleData(localeAr);
|
||||
registerLocaleData(localeCs);
|
||||
registerLocaleData(localePl);
|
||||
registerLocaleData(localeFi);
|
||||
registerLocaleData(localeDa);
|
||||
registerLocaleData(localeSv);
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
BrowserModule,
|
||||
environment.e2e ? NoopAnimationsModule : BrowserAnimationsModule,
|
||||
ReactiveFormsModule,
|
||||
RouterModule.forRoot(appRoutes, { useHash: true, relativeLinkResolution: 'legacy' }),
|
||||
...(environment.oidc ? [AuthModule.forRoot({ useHash: true })] : []),
|
||||
AuthModule.forRoot({ useHash: true }),
|
||||
FormsModule,
|
||||
HttpClientModule,
|
||||
MaterialModule,
|
||||
@@ -147,7 +94,6 @@ registerLocaleData(localeSv);
|
||||
LogoutComponent,
|
||||
AppLayoutComponent,
|
||||
UserInfoComponent,
|
||||
HomeComponent,
|
||||
SearchBarComponent,
|
||||
SearchResultComponent,
|
||||
ProcessServiceComponent,
|
||||
@@ -157,47 +103,31 @@ registerLocaleData(localeSv);
|
||||
AppsViewComponent,
|
||||
FilesComponent,
|
||||
FormComponent,
|
||||
FormListComponent,
|
||||
VersionManagerDialogAdapterComponent,
|
||||
MetadataDialogAdapterComponent,
|
||||
TaskAttachmentsComponent,
|
||||
ProcessAttachmentsComponent,
|
||||
SharedLinkViewComponent,
|
||||
FormLoadingComponent,
|
||||
DemoPermissionComponent,
|
||||
DemoErrorComponent,
|
||||
FormLoadingComponent,
|
||||
TreeViewSampleComponent,
|
||||
CloudLayoutComponent,
|
||||
AppsCloudDemoComponent,
|
||||
TasksCloudDemoComponent,
|
||||
ProcessesCloudDemoComponent,
|
||||
TaskDetailsCloudDemoComponent,
|
||||
TaskHeaderCloudDemoComponent,
|
||||
CloudViewerComponent,
|
||||
ProcessDetailsCloudDemoComponent,
|
||||
StartTaskCloudDemoComponent,
|
||||
StartProcessCloudDemoComponent,
|
||||
CloudBreadcrumbsComponent,
|
||||
CloudFiltersDemoComponent,
|
||||
PeopleGroupCloudDemoComponent,
|
||||
FormCloudDemoComponent,
|
||||
CustomEditorComponent,
|
||||
CustomWidgetComponent,
|
||||
ProcessCloudLayoutComponent,
|
||||
ServiceTaskListCloudDemoComponent,
|
||||
SearchFilterChipsComponent
|
||||
],
|
||||
providers: [
|
||||
{ provide: AppConfigService, useClass: DebugAppConfigService }, // not use this service in production
|
||||
provideTranslations('app', 'resources'),
|
||||
AppNotificationsService,
|
||||
{
|
||||
provide: APP_INITIALIZER,
|
||||
useFactory: setupAppNotifications,
|
||||
deps: [AppNotificationsService],
|
||||
multi: true
|
||||
}
|
||||
provideTranslations('app', 'resources')
|
||||
],
|
||||
bootstrap: [AppComponent]
|
||||
})
|
||||
|
||||
@@ -28,14 +28,9 @@ import { AppsViewComponent } from './components/process-service/apps-view.compon
|
||||
import { SearchResultComponent } from './components/search/search-result.component';
|
||||
import { FilesComponent } from './components/files/files.component';
|
||||
import { FormComponent } from './components/form/form.component';
|
||||
import { FormListComponent } from './components/form/form-list.component';
|
||||
import { SharedLinkViewComponent } from './components/shared-link-view/shared-link-view.component';
|
||||
import { FormLoadingComponent } from './components/form/form-loading.component';
|
||||
import { DemoPermissionComponent } from './components/permissions/demo-permissions.component';
|
||||
import { AppComponent } from './app.component';
|
||||
import { TreeViewSampleComponent } from './components/tree-view/tree-view-sample.component';
|
||||
import { AppsCloudDemoComponent } from './components/cloud/apps-cloud-demo.component';
|
||||
import { PeopleGroupCloudDemoComponent } from './components/cloud/people-groups-cloud-demo.component';
|
||||
import { CloudLayoutComponent } from './components/cloud/cloud-layout.component';
|
||||
import { TasksCloudDemoComponent } from './components/cloud/tasks-cloud-demo.component';
|
||||
import { ProcessesCloudDemoComponent } from './components/cloud/processes-cloud-demo.component';
|
||||
@@ -46,9 +41,7 @@ import { CloudViewerComponent } from './components/cloud/cloud-viewer.component'
|
||||
import { ProcessDetailsCloudDemoComponent } from './components/cloud/process-details-cloud-demo.component';
|
||||
import { FormCloudDemoComponent } from './components/app-layout/cloud/form-demo/cloud-form-demo.component';
|
||||
import { DemoErrorComponent } from './components/error/demo-error.component';
|
||||
import { TaskHeaderCloudDemoComponent } from './components/cloud/task-header-cloud-demo.component';
|
||||
import { ProcessCloudLayoutComponent } from './components/cloud/process-cloud-layout.component';
|
||||
import { ServiceTaskListCloudDemoComponent } from './components/cloud/service-task-list-cloud-demo.component';
|
||||
import { SearchFilterChipsComponent } from './components/search/search-filter-chips.component';
|
||||
|
||||
export const appRoutes: Routes = [
|
||||
@@ -81,7 +74,6 @@ export const appRoutes: Routes = [
|
||||
pathMatch: 'full',
|
||||
loadChildren: () => import('./components/file-view/file-view.module').then(m => m.FileViewModule)
|
||||
},
|
||||
{ path: 'preview/s/:id', component: SharedLinkViewComponent },
|
||||
{
|
||||
path: '',
|
||||
component: AppLayoutComponent,
|
||||
@@ -92,10 +84,6 @@ export const appRoutes: Routes = [
|
||||
redirectTo: `/home`,
|
||||
pathMatch: 'full'
|
||||
},
|
||||
{
|
||||
path: 'config-editor',
|
||||
loadChildren: () => import('./components/config-editor/config-editor.module').then(m => m.AppConfigEditorModule)
|
||||
},
|
||||
{
|
||||
path: 'card-view',
|
||||
loadChildren: () => import('./components/card-view/card-view.module').then(m => m.AppCardViewModule)
|
||||
@@ -118,26 +106,6 @@ export const appRoutes: Routes = [
|
||||
data: { roles: ['ACTIVITI_USER'], redirectUrl: '/error/403' },
|
||||
component: AppsCloudDemoComponent
|
||||
},
|
||||
{
|
||||
path: 'people-group-cloud',
|
||||
data: { roles: ['ACTIVITI_USER'], redirectUrl: '/error/403' },
|
||||
component: PeopleGroupCloudDemoComponent
|
||||
},
|
||||
{
|
||||
path: 'task-header-cloud',
|
||||
data: { roles: ['ACTIVITI_USER'], redirectUrl: '/error/403' },
|
||||
component: TaskHeaderCloudDemoComponent
|
||||
},
|
||||
{
|
||||
path: 'service-task-list',
|
||||
data: { roles: ['ACTIVITI_ADMIN'], redirectUrl: '/error/403' },
|
||||
component: ServiceTaskListCloudDemoComponent
|
||||
},
|
||||
{
|
||||
path: 'community',
|
||||
data: { roles: ['ACTIVITI_USER'], redirectUrl: '/error/403' },
|
||||
loadChildren: () => import('./components/cloud/community/community.module').then(m => m.AppCommunityModule)
|
||||
},
|
||||
{
|
||||
path: ':appName',
|
||||
canActivate: [AuthGuardSsoRoleService],
|
||||
@@ -187,11 +155,6 @@ export const appRoutes: Routes = [
|
||||
path: 'settings-layout',
|
||||
loadChildren: () => import('./components/settings/settings.module').then(m => m.AppSettingsModule)
|
||||
},
|
||||
{
|
||||
path: 'trashcan',
|
||||
canActivate: [AuthGuardEcm],
|
||||
loadChildren: () => import('./components/trashcan/trashcan.module').then(m => m.AppTrashcanModule)
|
||||
},
|
||||
{
|
||||
path: 'files',
|
||||
component: FilesComponent,
|
||||
@@ -207,11 +170,6 @@ export const appRoutes: Routes = [
|
||||
component: FilesComponent,
|
||||
canActivate: [AuthGuardEcm]
|
||||
},
|
||||
{
|
||||
path: 'dl-custom-sources',
|
||||
canActivate: [AuthGuardEcm],
|
||||
loadChildren: () => import('./components/files/custom-sources.module').then(m => m.AppCustomSourcesModule)
|
||||
},
|
||||
{
|
||||
path: 'search',
|
||||
component: SearchResultComponent,
|
||||
@@ -286,19 +244,8 @@ export const appRoutes: Routes = [
|
||||
component: DemoPermissionComponent,
|
||||
canActivate: [AuthGuardEcm]
|
||||
},
|
||||
{
|
||||
path: 'treeview',
|
||||
component: TreeViewSampleComponent,
|
||||
canActivate: [AuthGuardEcm]
|
||||
},
|
||||
{
|
||||
path: 'about',
|
||||
loadChildren: () => import('./components/about/about.module').then(m => m.AppAboutModule)
|
||||
},
|
||||
{ path: 'form-cloud', component: FormCloudDemoComponent },
|
||||
{ path: 'form', component: FormComponent },
|
||||
{ path: 'form-list', component: FormListComponent },
|
||||
{ path: 'form-loading', component: FormLoadingComponent },
|
||||
{
|
||||
path: 'task-list',
|
||||
canActivate: [AuthGuardBpm],
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
<mat-slide-toggle [(ngModel)]="dev">Dev Mode</mat-slide-toggle>
|
||||
|
||||
<adf-about>
|
||||
<adf-about-panel *ngIf="dev" [label]="'ABOUT.SERVER_SETTINGS.TITLE' | translate">
|
||||
<ng-template>
|
||||
<adf-about-server-settings></adf-about-server-settings>
|
||||
</ng-template>
|
||||
</adf-about-panel>
|
||||
|
||||
<adf-about-panel *ngIf="dev" [label]="'ABOUT.PACKAGES.TITLE' | translate">
|
||||
<ng-template>
|
||||
<adf-about-package-list [dependencies]="pkg?.dependencies"></adf-about-package-list>
|
||||
</ng-template>
|
||||
</adf-about-panel>
|
||||
|
||||
<adf-about-panel [label]="'ABOUT.REPOSITORY' | translate" *ngIf="repository">
|
||||
<ng-template>
|
||||
<adf-about-repository-info [data]="repository"></adf-about-repository-info>
|
||||
</ng-template>
|
||||
</adf-about-panel>
|
||||
|
||||
<adf-about-panel [label]="'ABOUT.VERSIONS.TITLE' | translate">
|
||||
<ng-template>
|
||||
<adf-about-platform-version [repository]="repository" [process]="bpmVersion"></adf-about-platform-version>
|
||||
</ng-template>
|
||||
</adf-about-panel>
|
||||
|
||||
<adf-about-panel *ngIf="extensions$ | async as extensions" [label]="'ABOUT.PLUGINS.TITLE' | translate">
|
||||
<ng-template>
|
||||
<adf-about-extension-list [data]="extensions"></adf-about-extension-list>
|
||||
</ng-template>
|
||||
</adf-about-panel>
|
||||
</adf-about>
|
||||
|
||||
@@ -1,67 +0,0 @@
|
||||
/*!
|
||||
* @license
|
||||
* Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { Component, OnInit } from '@angular/core';
|
||||
import { AppExtensionService, ExtensionRef } from '@alfresco/adf-extensions';
|
||||
import { AuthenticationService, BpmProductVersionModel, RepositoryInfo } from '@alfresco/adf-core';
|
||||
import { DiscoveryApiService } from '@alfresco/adf-content-services';
|
||||
import pkg from '../../../../../package.json';
|
||||
import { Observable } from 'rxjs';
|
||||
|
||||
@Component({
|
||||
selector: 'app-about-page',
|
||||
templateUrl: './about.component.html'
|
||||
})
|
||||
export class AboutComponent implements OnInit {
|
||||
pkg: any;
|
||||
dev: true;
|
||||
|
||||
extensions$: Observable<ExtensionRef[]>;
|
||||
repository: RepositoryInfo = null;
|
||||
bpmVersion: BpmProductVersionModel = null;
|
||||
|
||||
constructor(
|
||||
private authenticationService: AuthenticationService,
|
||||
private appExtensionService: AppExtensionService,
|
||||
private discoveryApiService: DiscoveryApiService
|
||||
) {
|
||||
this.pkg = pkg;
|
||||
this.extensions$ = this.appExtensionService.references$;
|
||||
}
|
||||
|
||||
ngOnInit(): void {
|
||||
if (this.authenticationService.isEcmLoggedIn()) {
|
||||
this.setECMInfo();
|
||||
}
|
||||
|
||||
if (this.authenticationService.isBpmLoggedIn()) {
|
||||
this.setBPMInfo();
|
||||
}
|
||||
}
|
||||
|
||||
setECMInfo() {
|
||||
this.discoveryApiService.getEcmProductInfo().subscribe((repository) => {
|
||||
this.repository = repository as RepositoryInfo;
|
||||
});
|
||||
}
|
||||
|
||||
setBPMInfo() {
|
||||
this.discoveryApiService.getBpmProductInfo().subscribe((bpmVersion) => {
|
||||
this.bpmVersion = bpmVersion;
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
/*!
|
||||
* @license
|
||||
* Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { NgModule } from '@angular/core';
|
||||
import { Routes, RouterModule } from '@angular/router';
|
||||
import { AboutComponent } from './about.component';
|
||||
import { CommonModule } from '@angular/common';
|
||||
import { CoreModule } from '@alfresco/adf-core';
|
||||
|
||||
const routes: Routes = [
|
||||
{
|
||||
path: '',
|
||||
component: AboutComponent
|
||||
}
|
||||
];
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
CommonModule,
|
||||
CoreModule,
|
||||
RouterModule.forChild(routes)
|
||||
],
|
||||
declarations: [AboutComponent]
|
||||
})
|
||||
export class AppAboutModule {}
|
||||
@@ -18,27 +18,18 @@
|
||||
<app-search-bar></app-search-bar>
|
||||
|
||||
<app-shell-user-info [menuPositionX]="'before'" [menuPositionY]="'above'"></app-shell-user-info>
|
||||
|
||||
<button data-automation-id="language-menu-button" mat-icon-button [matMenuTriggerFor]="langMenu">
|
||||
<mat-icon>language</mat-icon>
|
||||
</button>
|
||||
<mat-menu #langMenu="matMenu" class="app-menu">
|
||||
<adf-language-menu></adf-language-menu>
|
||||
</mat-menu>
|
||||
|
||||
<adf-notification-history menuPositionX="before" menuPositionY="above"></adf-notification-history>
|
||||
</adf-layout-header>
|
||||
</ng-template>
|
||||
</adf-sidenav-layout-header>
|
||||
|
||||
<adf-sidenav-layout-navigation>
|
||||
<ng-template let-isMenuMinimized="isMenuMinimized">
|
||||
<ng-template>
|
||||
<mat-nav-list class="app-sidenav-linklist">
|
||||
<ng-container *ngFor="let link of links">
|
||||
<ng-container *ngIf="link.children">
|
||||
<mat-list-item (click)="trigger.openMenu()" [attr.data-automation-id]="link.title | translate" class="app-sidenav-link">
|
||||
<mat-icon matListIcon>{{link.icon}}</mat-icon>
|
||||
<span matLine *ngIf="!isMenuMinimized()">{{link.title | translate }}</span>
|
||||
<span matLine>{{ link.title | translate }}</span>
|
||||
<mat-icon class="app-sidenav-link__expand-button" [matMenuTriggerData]="{links: link.children}"
|
||||
rippleTrigger mat-icon-button #trigger="matMenuTrigger"
|
||||
[matMenuTriggerFor]="nestedMenu">arrow_right</mat-icon>
|
||||
@@ -50,14 +41,14 @@
|
||||
routerLinkActive="app-sidenav-link--active" [routerLinkActiveOptions]="{ exact: true }"
|
||||
[attr.data-automation-id]="link.title | translate" class="app-sidenav-link">
|
||||
<mat-icon matListIcon >{{link.icon}}</mat-icon>
|
||||
<span matLine *ngIf="!isMenuMinimized()">{{link.title | translate }}</span>
|
||||
<span matLine>{{link.title | translate }}</span>
|
||||
</mat-list-item>
|
||||
</ng-container>
|
||||
</ng-container>
|
||||
|
||||
<mat-list-item adf-logout [enableRedirect]="enableRedirect" redirectUri="/logout" class="app-sidenav-link" data-automation-id="Logout" >
|
||||
<mat-icon matListIcon>exit_to_app</mat-icon>
|
||||
<span matLine *ngIf="!isMenuMinimized()">Logout</span>
|
||||
<span matLine>Logout</span>
|
||||
</mat-list-item>
|
||||
</mat-nav-list>
|
||||
|
||||
|
||||
@@ -1,7 +1,3 @@
|
||||
adf-file-uploading-dialog {
|
||||
z-index: 1100;
|
||||
}
|
||||
|
||||
.app-layout {
|
||||
display: flex;
|
||||
flex: 1;
|
||||
@@ -12,25 +8,7 @@ adf-file-uploading-dialog {
|
||||
color: var(--theme-primary-color);
|
||||
}
|
||||
|
||||
.app-sidenav-link {
|
||||
.mat-list-text {
|
||||
font-size: 14px;
|
||||
white-space: nowrap;
|
||||
min-width: 120px;
|
||||
padding: 0 10px;
|
||||
}
|
||||
}
|
||||
|
||||
&-menu-spacer {
|
||||
flex: 1 1 auto;
|
||||
}
|
||||
}
|
||||
|
||||
mat-sidenav-content > div {
|
||||
display: flex;
|
||||
height: 100%;
|
||||
|
||||
> div {
|
||||
flex: auto;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,27 +33,16 @@ export class AppLayoutComponent {
|
||||
{
|
||||
href: '/cloud', icon: 'cloud', title: 'Process Cloud', children: [
|
||||
{ href: '/cloud/', icon: 'cloud', title: 'Home' },
|
||||
{ href: '/cloud/community', icon: 'cloud', title: 'Community' },
|
||||
{ href: '/form-cloud', icon: 'poll', title: 'Form' },
|
||||
{ href: '/cloud/people-group-cloud', icon: 'group', title: 'People/Group Cloud' },
|
||||
{ href: '/cloud/task-header-cloud', icon: 'cloud', title: 'Task Header Cloud' },
|
||||
{ href: '/cloud/service-task-list', icon: 'cloud', title: 'Service Task List' }
|
||||
{ href: '/form-cloud', icon: 'poll', title: 'Form' }
|
||||
]
|
||||
},
|
||||
{ href: '/activiti', icon: 'device_hub', title: 'Process Services', children: [
|
||||
{ href: '/activiti', icon: 'vpn_key', title: 'App' },
|
||||
{ href: '/process-list', icon: 'assignment', title: 'Process List' },
|
||||
{ href: '/form', icon: 'poll', title: 'Form' },
|
||||
{ href: '/form-list', icon: 'library_books', title: 'Form List' },
|
||||
{ href: '/form-loading', icon: 'cached', title: 'Form Loading' }
|
||||
{ href: '/form', icon: 'poll', title: 'Form' }
|
||||
]},
|
||||
{ href: '/login', icon: 'vpn_key', title: 'Login' },
|
||||
{ href: '/trashcan', icon: 'delete', title: 'Trashcan' },
|
||||
{ href: '/dl-custom-sources', icon: 'extension', title: 'Custom Sources' },
|
||||
{ href: '/settings-layout', icon: 'settings', title: 'Settings' },
|
||||
{ href: '/config-editor', icon: 'code', title: 'Configuration Editor' },
|
||||
{ href: '/treeview', icon: 'nature', title: 'Tree View' },
|
||||
{ href: '/about', icon: 'info_outline', title: 'About' }
|
||||
{ href: '/settings-layout', icon: 'settings', title: 'Settings' }
|
||||
];
|
||||
|
||||
enableRedirect = true;
|
||||
|
||||
+5
-14
@@ -1,6 +1,5 @@
|
||||
<div class="main-content">
|
||||
|
||||
<mat-tab-group>
|
||||
<mat-tab-group [animationDuration]="0">
|
||||
<mat-tab label="Form" class="form-cloud-render">
|
||||
<div class="app-form-container">
|
||||
<adf-cloud-form
|
||||
@@ -13,8 +12,7 @@
|
||||
|
||||
<div class="app-console" #console>
|
||||
<h3>Error log:</h3>
|
||||
<p *ngFor="let error of errorFields">Error {{ error.name }} {{error.validationSummary.message |
|
||||
translate}}</p>
|
||||
<p *ngFor="let error of errorFields">Error {{ error.name }} {{error.validationSummary.message | translate}}</p>
|
||||
</div>
|
||||
</mat-tab>
|
||||
<mat-tab label="Editor" class="form-cloud-editor">
|
||||
@@ -26,15 +24,9 @@
|
||||
(onInit)="onInitFormEditor($event)">
|
||||
</ngx-monaco-editor>
|
||||
<div class="app-form-editor-buttons">
|
||||
<button mat-raised-button id="app-form-config-save" (click)="onSaveFormConfig()" color="primary">Save
|
||||
form config
|
||||
</button>
|
||||
<button mat-raised-button id="app-form-config-clear" (click)="onClearFormConfig()" color="primary">Clear
|
||||
form config
|
||||
</button>
|
||||
</div>
|
||||
<div class="app-upload-config-button">
|
||||
<a mat-raised-button color="primary" >
|
||||
<button mat-raised-button id="app-form-config-save" (click)="onSaveFormConfig()">Save form config</button>
|
||||
<button mat-raised-button id="app-form-config-clear" (click)="onClearFormConfig()">Clear form config</button>
|
||||
<a mat-raised-button class="app-upload-config-button">
|
||||
<mat-icon>file_upload</mat-icon>
|
||||
<label for="upload-config-file">Upload JSON File</label>
|
||||
<input
|
||||
@@ -46,7 +38,6 @@
|
||||
(change)="onConfigAdded($event)">
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</mat-tab>
|
||||
|
||||
</mat-tab-group>
|
||||
|
||||
+3
-12
@@ -6,11 +6,6 @@
|
||||
padding: 0 15px;
|
||||
}
|
||||
|
||||
.app-card-view {
|
||||
width: 30%;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.app-console {
|
||||
width: 60%;
|
||||
display: inline-block;
|
||||
@@ -36,22 +31,18 @@
|
||||
}
|
||||
|
||||
.app-form-editor-buttons {
|
||||
display: flex;
|
||||
justify-content: space-evenly;
|
||||
& > .mat-raised-button {
|
||||
margin-right: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
.app-upload-config-button {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
|
||||
input {
|
||||
cursor: pointer;
|
||||
height: 100%;
|
||||
right: 0;
|
||||
opacity: 0;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
width: 300px;
|
||||
z-index: 4;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,7 +17,13 @@
|
||||
|
||||
import { EcmUserModel, PeopleContentService } from '@alfresco/adf-content-services';
|
||||
import { BpmUserModel, PeopleProcessService } from '@alfresco/adf-process-services';
|
||||
import { AuthenticationService, IdentityUserModel, IdentityUserService, UserInfoMode } from '@alfresco/adf-core';
|
||||
import {
|
||||
AuthenticationService,
|
||||
BasicAlfrescoAuthService,
|
||||
IdentityUserModel,
|
||||
IdentityUserService,
|
||||
UserInfoMode
|
||||
} from '@alfresco/adf-core';
|
||||
import { Component, OnInit, Input } from '@angular/core';
|
||||
import { MenuPositionX, MenuPositionY } from '@angular/material/menu';
|
||||
import { Observable, of } from 'rxjs';
|
||||
@@ -46,6 +52,7 @@ export class UserInfoComponent implements OnInit {
|
||||
constructor(private peopleContentService: PeopleContentService,
|
||||
private peopleProcessService: PeopleProcessService,
|
||||
private identityUserService: IdentityUserService,
|
||||
private basicAlfrescoAuthService: BasicAlfrescoAuthService,
|
||||
private authService: AuthenticationService) {
|
||||
}
|
||||
|
||||
@@ -77,7 +84,7 @@ export class UserInfoComponent implements OnInit {
|
||||
}
|
||||
|
||||
get isLoggedIn(): boolean {
|
||||
if (this.authService.isKerberosEnabled()) {
|
||||
if (this.basicAlfrescoAuthService.isKerberosEnabled()) {
|
||||
return true;
|
||||
}
|
||||
return this.authService.isLoggedIn();
|
||||
@@ -96,15 +103,15 @@ export class UserInfoComponent implements OnInit {
|
||||
}
|
||||
|
||||
private isAllLoggedIn() {
|
||||
return (this.authService.isEcmLoggedIn() && this.authService.isBpmLoggedIn()) || (this.authService.isALLProvider() && this.authService.isKerberosEnabled());
|
||||
return (this.authService.isEcmLoggedIn() && this.authService.isBpmLoggedIn()) || (this.authService.isALLProvider() && this.basicAlfrescoAuthService.isKerberosEnabled());
|
||||
}
|
||||
|
||||
private isBpmLoggedIn() {
|
||||
return this.authService.isBpmLoggedIn() || (this.authService.isECMProvider() && this.authService.isKerberosEnabled());
|
||||
return this.authService.isBpmLoggedIn() || (this.authService.isECMProvider() && this.basicAlfrescoAuthService.isKerberosEnabled());
|
||||
}
|
||||
|
||||
private isEcmLoggedIn() {
|
||||
return this.authService.isEcmLoggedIn() || (this.authService.isECMProvider() && this.authService.isKerberosEnabled());
|
||||
return this.authService.isEcmLoggedIn() || (this.authService.isECMProvider() && this.basicAlfrescoAuthService.isKerberosEnabled());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,17 +1,15 @@
|
||||
<div class="app-main-content">
|
||||
<h1>CardView Component</h1>
|
||||
|
||||
<mat-card class="app-card-view">
|
||||
<adf-card-view
|
||||
[properties]="properties"
|
||||
[editable]="isEditable"
|
||||
[displayClearAction]="showClearDateAction"
|
||||
[displayNoneOption]="showNoneOption"
|
||||
[displayLabelForChips]="showLabelForChips">
|
||||
</adf-card-view>
|
||||
</mat-card>
|
||||
<adf-card-view
|
||||
[properties]="properties"
|
||||
[editable]="isEditable"
|
||||
[displayClearAction]="showClearDateAction"
|
||||
[displayNoneOption]="showNoneOption"
|
||||
[displayLabelForChips]="showLabelForChips">
|
||||
</adf-card-view>
|
||||
|
||||
<div class="app-console" #console>
|
||||
<div class="app-console">
|
||||
<h3>Changes log:</h3>
|
||||
<p *ngFor="let log of logs">{{ log }}</p>
|
||||
</div>
|
||||
@@ -49,6 +47,4 @@
|
||||
</mat-slide-toggle>
|
||||
</p>
|
||||
|
||||
<button mat-button id="adf-reset-card-log" (click)="reset()" color="primary">Reset Log</button>
|
||||
|
||||
<br>
|
||||
<button mat-raised-button id="adf-reset-card-log" (click)="reset()">Reset Log</button>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
padding: 0 15px;
|
||||
}
|
||||
|
||||
.app-card-view {
|
||||
adf-card-view {
|
||||
width: 30%;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { Component, OnInit, ElementRef, ViewChild, OnDestroy } from '@angular/core';
|
||||
import { Component, OnInit, OnDestroy } from '@angular/core';
|
||||
import {
|
||||
CardViewTextItemModel,
|
||||
CardViewDateItemModel,
|
||||
@@ -39,9 +39,6 @@ import { takeUntil } from 'rxjs/operators';
|
||||
styleUrls: ['./card-view.component.scss']
|
||||
})
|
||||
export class CardViewComponent implements OnInit, OnDestroy {
|
||||
|
||||
@ViewChild('console', { static: true }) console: ElementRef;
|
||||
|
||||
isEditable = true;
|
||||
properties: any;
|
||||
logs: string[];
|
||||
@@ -51,8 +48,7 @@ export class CardViewComponent implements OnInit, OnDestroy {
|
||||
|
||||
private onDestroy$ = new Subject<boolean>();
|
||||
|
||||
constructor(private cardViewUpdateService: CardViewUpdateService,
|
||||
private decimalNumberPipe: DecimalNumberPipe) {
|
||||
constructor(private cardViewUpdateService: CardViewUpdateService, private decimalNumberPipe: DecimalNumberPipe) {
|
||||
this.logs = [];
|
||||
this.createCard();
|
||||
}
|
||||
@@ -62,9 +58,7 @@ export class CardViewComponent implements OnInit, OnDestroy {
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
this.cardViewUpdateService.itemUpdated$
|
||||
.pipe(takeUntil(this.onDestroy$))
|
||||
.subscribe(this.onItemChange.bind(this));
|
||||
this.cardViewUpdateService.itemUpdated$.pipe(takeUntil(this.onDestroy$)).subscribe(this.onItemChange.bind(this));
|
||||
}
|
||||
|
||||
ngOnDestroy() {
|
||||
@@ -192,20 +186,29 @@ export class CardViewComponent implements OnInit, OnDestroy {
|
||||
}),
|
||||
new CardViewKeyValuePairsItemModel({
|
||||
label: 'CardView Key-Value Pairs Item',
|
||||
value: [{ name: 'hey', value: 'you' }, { name: 'hey', value: 'you' }],
|
||||
value: [
|
||||
{ name: 'hey', value: 'you' },
|
||||
{ name: 'hey', value: 'you' }
|
||||
],
|
||||
key: 'key-value-pairs',
|
||||
editable: this.isEditable
|
||||
}),
|
||||
new CardViewKeyValuePairsItemModel({
|
||||
label: 'CardView Key-Value Pairs Item',
|
||||
value: [{ name: 'hey', value: 'you' }, { name: 'hey', value: 'you' }],
|
||||
value: [
|
||||
{ name: 'hey', value: 'you' },
|
||||
{ name: 'hey', value: 'you' }
|
||||
],
|
||||
key: 'key-value-pairs',
|
||||
editable: false
|
||||
}),
|
||||
new CardViewSelectItemModel({
|
||||
label: 'CardView Select Item',
|
||||
value: 'one',
|
||||
options$: of([{ key: 'one', label: 'One' }, { key: 'two', label: 'Two' }]),
|
||||
options$: of([
|
||||
{ key: 'one', label: 'One' },
|
||||
{ key: 'two', label: 'Two' }
|
||||
]),
|
||||
key: 'select',
|
||||
editable: this.isEditable
|
||||
}),
|
||||
@@ -253,7 +256,6 @@ export class CardViewComponent implements OnInit, OnDestroy {
|
||||
}
|
||||
|
||||
this.logs.push(`[${notification.target.label}] - ${value}`);
|
||||
this.console.nativeElement.scrollTop = this.console.nativeElement.scrollHeight;
|
||||
}
|
||||
|
||||
toggleEditable() {
|
||||
|
||||
@@ -53,7 +53,7 @@ export class CloudFiltersDemoComponent implements OnInit {
|
||||
this.currentProcessFilter$ = this.cloudLayoutService.processFilter$;
|
||||
|
||||
let root = '';
|
||||
if (this.route.snapshot && this.route.snapshot.firstChild) {
|
||||
if (this.route.snapshot?.firstChild) {
|
||||
root = this.route.snapshot.firstChild.url[0].path;
|
||||
if (root === 'tasks') {
|
||||
this.expandTaskFilter = true;
|
||||
|
||||
@@ -41,7 +41,7 @@ export class CloudLayoutComponent implements OnInit {
|
||||
this.appName = params.appName;
|
||||
});
|
||||
|
||||
if (this.route.snapshot && this.route.snapshot.firstChild) {
|
||||
if (this.route.snapshot?.firstChild) {
|
||||
root = this.route.snapshot.firstChild.url[0].path;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
<mat-tab-group class="app-cloud-layout-tab-body">
|
||||
<mat-tab label="App">
|
||||
<adf-sidenav-layout [sidenavMin]="70" [sidenavMax]="270" [stepOver]="780">
|
||||
<adf-sidenav-layout-navigation>
|
||||
<ng-template>
|
||||
<adf-sidebar-action-menu [expanded]="true" [width]="205" title="CREATE">
|
||||
<mat-icon adf-sidebar-menu-title-icon>arrow_drop_down</mat-icon>
|
||||
<div adf-sidebar-menu-options>
|
||||
<button mat-menu-item data-automation-id="btn-start-task" (click)="onStartTask()">
|
||||
<mat-icon>assessment</mat-icon>
|
||||
<span>New Task</span>
|
||||
</button>
|
||||
</div>
|
||||
<div adf-sidebar-menu-options>
|
||||
<button mat-menu-item data-automation-id="btn-start-process" (click)="onStartProcess()">
|
||||
<mat-icon>assessment</mat-icon>
|
||||
<span>New Process</span>
|
||||
</button>
|
||||
</div>
|
||||
</adf-sidebar-action-menu>
|
||||
<app-community-cloud-filters-demo></app-community-cloud-filters-demo>
|
||||
</ng-template>
|
||||
</adf-sidenav-layout-navigation>
|
||||
<adf-sidenav-layout-content>
|
||||
<ng-template>
|
||||
<router-outlet></router-outlet>
|
||||
</ng-template>
|
||||
</adf-sidenav-layout-content>
|
||||
</adf-sidenav-layout>
|
||||
</mat-tab>
|
||||
<mat-tab label="Settings">
|
||||
<app-cloud-settings></app-cloud-settings>
|
||||
</mat-tab>
|
||||
</mat-tab-group>
|
||||
@@ -1,20 +0,0 @@
|
||||
.app-cloud-layout-overflow {
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.app-cloud-layout-tab-body {
|
||||
height: 100%;
|
||||
min-height: 100%;
|
||||
min-width: 100%;
|
||||
width: 100%;
|
||||
|
||||
.mat-tab-body-wrapper {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
adf-sidenav-layout {
|
||||
min-height: 100%;
|
||||
min-width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,59 +0,0 @@
|
||||
/*!
|
||||
* @license
|
||||
* Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { Component, OnInit, ViewEncapsulation } from '@angular/core';
|
||||
import { Router, ActivatedRoute } from '@angular/router';
|
||||
import { CloudLayoutService } from '../services/cloud-layout.service';
|
||||
|
||||
@Component({
|
||||
templateUrl: './community-cloud.component.html',
|
||||
styleUrls: ['./community-cloud.component.scss'],
|
||||
encapsulation: ViewEncapsulation.None
|
||||
})
|
||||
export class CommunityCloudComponent implements OnInit {
|
||||
|
||||
constructor(
|
||||
private router: Router,
|
||||
private route: ActivatedRoute,
|
||||
private cloudLayoutService: CloudLayoutService
|
||||
) { }
|
||||
|
||||
ngOnInit() {
|
||||
let root: string = '';
|
||||
if (this.route.snapshot && this.route.snapshot.firstChild) {
|
||||
root = this.route.snapshot.firstChild.url[0].path;
|
||||
}
|
||||
|
||||
this.route.queryParams.subscribe((params) => {
|
||||
if (root === 'tasks' && params.id) {
|
||||
this.cloudLayoutService.setCurrentTaskFilterParam({ id: params.id });
|
||||
}
|
||||
|
||||
if (root === 'processes' && params.id) {
|
||||
this.cloudLayoutService.setCurrentProcessFilterParam({ id: params.id });
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
onStartTask() {
|
||||
this.router.navigate([`/cloud/community/start-task/`]);
|
||||
}
|
||||
|
||||
onStartProcess() {
|
||||
this.router.navigate([`/cloud/community/start-process/`]);
|
||||
}
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
<mat-accordion>
|
||||
<mat-expansion-panel [expanded]="expandTaskFilter" (opened)="onTaskFilterOpen()" (closed)="onTaskFilterClose()" data-automation-id='Task Filters'>
|
||||
<mat-expansion-panel-header>
|
||||
<mat-panel-title>
|
||||
Task Filters
|
||||
</mat-panel-title>
|
||||
</mat-expansion-panel-header>
|
||||
<adf-cloud-task-filters
|
||||
*ngIf="expandTaskFilter"
|
||||
[showIcons]="true"
|
||||
[filterParam]="currentTaskFilter$ | async"
|
||||
(filterClick)="onTaskFilterSelected($event)">
|
||||
</adf-cloud-task-filters>
|
||||
</mat-expansion-panel>
|
||||
|
||||
<mat-expansion-panel [expanded]="expandProcessFilter" (opened)="onProcessFilterOpen()" (closed)="onProcessFilterClose()" data-automation-id='Process Filters'>
|
||||
<mat-expansion-panel-header>
|
||||
<mat-panel-title>
|
||||
Process Filters
|
||||
</mat-panel-title>
|
||||
</mat-expansion-panel-header>
|
||||
<adf-cloud-process-filters
|
||||
*ngIf="expandProcessFilter"
|
||||
[showIcons]="true"
|
||||
[filterParam]="currentProcessFilter$ | async"
|
||||
(filterClick)="onProcessFilterSelected($event)">
|
||||
</adf-cloud-process-filters>
|
||||
</mat-expansion-panel>
|
||||
</mat-accordion>
|
||||
@@ -1,92 +0,0 @@
|
||||
/*!
|
||||
* @license
|
||||
* Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { Component, ViewEncapsulation, OnInit } from '@angular/core';
|
||||
import { Observable } from 'rxjs';
|
||||
import { Router, ActivatedRoute } from '@angular/router';
|
||||
import { CloudLayoutService } from '../services/cloud-layout.service';
|
||||
@Component({
|
||||
selector: 'app-community-cloud-filters-demo',
|
||||
templateUrl: './community-filters.component.html',
|
||||
encapsulation: ViewEncapsulation.None
|
||||
})
|
||||
export class CommunityCloudFiltersDemoComponent implements OnInit {
|
||||
|
||||
currentTaskFilter$: Observable<any>;
|
||||
currentProcessFilter$: Observable<any>;
|
||||
|
||||
toggleTaskFilter = true;
|
||||
toggleProcessFilter = true;
|
||||
|
||||
expandTaskFilter = true;
|
||||
expandProcessFilter = false;
|
||||
|
||||
constructor(
|
||||
private cloudLayoutService: CloudLayoutService,
|
||||
private router: Router,
|
||||
private route: ActivatedRoute
|
||||
) {}
|
||||
|
||||
ngOnInit() {
|
||||
this.currentTaskFilter$ = this.cloudLayoutService.taskFilter$;
|
||||
this.currentProcessFilter$ = this.cloudLayoutService.processFilter$;
|
||||
|
||||
let root = '';
|
||||
if (this.route.snapshot && this.route.snapshot.firstChild) {
|
||||
root = this.route.snapshot.firstChild.url[0].path;
|
||||
if (root === 'tasks') {
|
||||
this.expandTaskFilter = true;
|
||||
this.expandProcessFilter = false;
|
||||
} else if (root === 'processes') {
|
||||
this.expandProcessFilter = true;
|
||||
this.expandTaskFilter = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
onTaskFilterSelected(filter) {
|
||||
this.cloudLayoutService.setCurrentTaskFilterParam({id: filter.id});
|
||||
const currentFilter = Object.assign({}, filter);
|
||||
this.router.navigate([`/cloud/community/tasks/`], { queryParams: currentFilter });
|
||||
}
|
||||
|
||||
onProcessFilterSelected(filter) {
|
||||
this.cloudLayoutService.setCurrentProcessFilterParam({id: filter.id});
|
||||
const currentFilter = Object.assign({}, filter);
|
||||
this.router.navigate([`/cloud/community/processes/`], { queryParams: currentFilter });
|
||||
}
|
||||
|
||||
onTaskFilterOpen(): boolean {
|
||||
this.expandTaskFilter = true;
|
||||
this.expandProcessFilter = false;
|
||||
return this.toggleTaskFilter;
|
||||
}
|
||||
|
||||
onTaskFilterClose(): boolean {
|
||||
return !this.toggleTaskFilter;
|
||||
}
|
||||
|
||||
onProcessFilterOpen(): boolean {
|
||||
this.expandProcessFilter = true;
|
||||
this.expandTaskFilter = false;
|
||||
return this.toggleProcessFilter;
|
||||
}
|
||||
|
||||
onProcessFilterClose(): boolean {
|
||||
return !this.toggleProcessFilter;
|
||||
}
|
||||
}
|
||||
-21
@@ -1,21 +0,0 @@
|
||||
|
||||
<button data-automation-id="go-back" mat-icon-button (click)="onGoBack()">
|
||||
<mat-icon>arrow_back</mat-icon> Go Back
|
||||
</button>
|
||||
|
||||
<h4 data-automation-id="process-details-header">Simple page to show the process instance: {{ processInstanceId }}</h4>
|
||||
|
||||
<div class="app-process-cloud-container">
|
||||
|
||||
<adf-cloud-task-list
|
||||
class="app-cloud-layout-overflow"
|
||||
[processInstanceId]="processInstanceId"
|
||||
(rowClick)="onRowClick($event)">
|
||||
</adf-cloud-task-list>
|
||||
|
||||
<adf-cloud-process-header
|
||||
class="app-process-cloud-header"
|
||||
[processInstanceId]="processInstanceId">
|
||||
</adf-cloud-process-header>
|
||||
</div>
|
||||
|
||||
-17
@@ -1,17 +0,0 @@
|
||||
app-community-process-details-cloud {
|
||||
.app {
|
||||
&-process-cloud-container {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
&-cloud-layout-overflow {
|
||||
width: 67%;
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
&-process-cloud-header {
|
||||
margin-left: 10px;
|
||||
width: 25%;
|
||||
}
|
||||
}
|
||||
}
|
||||
-46
@@ -1,46 +0,0 @@
|
||||
/*!
|
||||
* @license
|
||||
* Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { Component, ViewEncapsulation } from '@angular/core';
|
||||
import { ActivatedRoute, Router } from '@angular/router';
|
||||
|
||||
@Component({
|
||||
selector: 'app-community-process-details-cloud',
|
||||
templateUrl: './community-process-details-cloud.component.html',
|
||||
styleUrls: ['./community-process-details-cloud.component.scss'],
|
||||
encapsulation: ViewEncapsulation.None
|
||||
})
|
||||
export class CommunityProcessDetailsCloudDemoComponent {
|
||||
|
||||
processInstanceId: string;
|
||||
|
||||
constructor(private route: ActivatedRoute, private router: Router) {
|
||||
this.route.params.subscribe((params) => {
|
||||
this.processInstanceId = params.processInstanceId;
|
||||
});
|
||||
}
|
||||
|
||||
onGoBack() {
|
||||
this.router.navigate([`/cloud/community/`]);
|
||||
}
|
||||
|
||||
onRowClick(taskId: string) {
|
||||
if (taskId) {
|
||||
this.router.navigate([`/cloud/community/task-details/${taskId}`]);
|
||||
}
|
||||
}
|
||||
}
|
||||
-42
@@ -1,42 +0,0 @@
|
||||
<adf-cloud-edit-process-filter
|
||||
[id]="filterId"
|
||||
[filterProperties]="processFilterProperties.filterProperties"
|
||||
[sortProperties]="processFilterProperties.sortProperties"
|
||||
[actions]="processFilterProperties.actions"
|
||||
(filterChange)="onFilterChange($event)"
|
||||
(action)="onProcessFilterAction($event)">
|
||||
</adf-cloud-edit-process-filter>
|
||||
<div
|
||||
class="app-cloud-process-list-container"
|
||||
*ngIf="editedFilter">
|
||||
<adf-cloud-process-list
|
||||
#processCloud
|
||||
class="app-cloud-layout-overflow"
|
||||
[initiator]="editedFilter.initiator"
|
||||
[processDefinitionId]="editedFilter.processDefinitionId"
|
||||
[processDefinitionKey]="editedFilter.processDefinitionKey"
|
||||
[id]="editedFilter.processInstanceId"
|
||||
[status]="editedFilter.status"
|
||||
[name]="editedFilter.processName"
|
||||
[businessKey]="editedFilter['businessKey']"
|
||||
[lastModifiedFrom]="editedFilter.lastModifiedFrom"
|
||||
[lastModifiedTo]="editedFilter.lastModifiedTo"
|
||||
[sorting]="sortArray"
|
||||
[selectionMode]="selectionMode"
|
||||
[multiselect]="multiselect"
|
||||
(rowClick)="onRowClick($event)"
|
||||
(rowsSelected)="onRowsSelected($event)">
|
||||
</adf-cloud-process-list>
|
||||
<adf-pagination
|
||||
[target]="processCloud"
|
||||
(changePageSize)="onChangePageSize($event)"
|
||||
(nextPage)="resetSelectedRows()"
|
||||
(prevPage)="resetSelectedRows()">
|
||||
</adf-pagination>
|
||||
<div *ngIf="testingMode">
|
||||
Selected rows:
|
||||
<ul>
|
||||
<li *ngFor="let row of selectedRows">{{ row.id }}</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
-21
@@ -1,21 +0,0 @@
|
||||
app-community-processes-cloud-demo {
|
||||
height: 100%;
|
||||
min-height: 100%;
|
||||
min-width: 100%;
|
||||
width: 100%;
|
||||
|
||||
.app-cloud-process-list-container {
|
||||
place-content: stretch space-between;
|
||||
align-items: stretch;
|
||||
margin-top: 2px;
|
||||
}
|
||||
|
||||
&, .app-cloud-process-list-container {
|
||||
flex-direction: column;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.app-cloud-layout-overflow, .app-cloud-process-list-container {
|
||||
flex: 1;
|
||||
}
|
||||
}
|
||||
@@ -1,153 +0,0 @@
|
||||
/*!
|
||||
* @license
|
||||
* Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { Component, OnDestroy, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';
|
||||
import {
|
||||
ProcessFilterCloudModel,
|
||||
ProcessFilterCloudService,
|
||||
ProcessFiltersCloudComponent,
|
||||
ProcessListCloudComponent,
|
||||
ProcessListCloudSortingModel
|
||||
} from '@alfresco/adf-process-services-cloud';
|
||||
|
||||
import { ActivatedRoute, Router } from '@angular/router';
|
||||
import { AppConfigService, UserPreferencesService } from '@alfresco/adf-core';
|
||||
import { CloudLayoutService } from '../services/cloud-layout.service';
|
||||
import { Subject } from 'rxjs';
|
||||
import { takeUntil } from 'rxjs/operators';
|
||||
import { Pagination } from '@alfresco/js-api';
|
||||
|
||||
const PROCESS_FILTER_PROPERTY_KEYS = 'adf-edit-process-filter';
|
||||
const ACTION_SAVE_AS = 'saveAs';
|
||||
|
||||
@Component({
|
||||
selector: 'app-community-processes-cloud-demo',
|
||||
templateUrl: './community-processes-cloud.component.html',
|
||||
styleUrls: ['./community-processes-cloud.component.scss'],
|
||||
encapsulation: ViewEncapsulation.None
|
||||
})
|
||||
export class CommunityProcessesCloudDemoComponent implements OnInit, OnDestroy {
|
||||
@ViewChild('processCloud')
|
||||
processCloud: ProcessListCloudComponent;
|
||||
|
||||
@ViewChild('processFiltersCloud')
|
||||
processFiltersCloud: ProcessFiltersCloudComponent;
|
||||
|
||||
isFilterLoaded: boolean;
|
||||
filterId: string = '';
|
||||
sortArray: any = [];
|
||||
selectedRow: any;
|
||||
multiselect: boolean;
|
||||
selectionMode: string;
|
||||
selectedRows: any[] = [];
|
||||
testingMode: boolean;
|
||||
processFilterProperties: any = { filterProperties: [], sortProperties: [], actions: [] };
|
||||
|
||||
editedFilter: ProcessFilterCloudModel;
|
||||
|
||||
private onDestroy$ = new Subject<boolean>();
|
||||
|
||||
constructor(
|
||||
private route: ActivatedRoute,
|
||||
private router: Router,
|
||||
private cloudLayoutService: CloudLayoutService,
|
||||
private userPreference: UserPreferencesService,
|
||||
private processFilterCloudService: ProcessFilterCloudService,
|
||||
private appConfig: AppConfigService) {
|
||||
const properties = this.appConfig.get<Array<any>>(
|
||||
PROCESS_FILTER_PROPERTY_KEYS
|
||||
);
|
||||
|
||||
if (properties) {
|
||||
this.processFilterProperties = properties;
|
||||
}
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
this.isFilterLoaded = false;
|
||||
|
||||
this.route.queryParams.subscribe((params) => {
|
||||
if (Object.keys(params).length > 0) {
|
||||
this.isFilterLoaded = true;
|
||||
this.onFilterChange(params);
|
||||
this.filterId = params.id;
|
||||
} else {
|
||||
this.loadDefaultFilters();
|
||||
}
|
||||
});
|
||||
|
||||
this.cloudLayoutService
|
||||
.settings$
|
||||
.pipe(takeUntil(this.onDestroy$))
|
||||
.subscribe(settings => this.setCurrentSettings(settings));
|
||||
}
|
||||
|
||||
ngOnDestroy() {
|
||||
this.onDestroy$.next(true);
|
||||
this.onDestroy$.complete();
|
||||
}
|
||||
|
||||
loadDefaultFilters() {
|
||||
this.processFilterCloudService
|
||||
.getProcessFilters('community')
|
||||
.subscribe((filters: ProcessFilterCloudModel[]) => {
|
||||
this.onFilterChange(filters[0]);
|
||||
});
|
||||
}
|
||||
|
||||
setCurrentSettings(settings) {
|
||||
if (settings) {
|
||||
this.multiselect = settings.multiselect;
|
||||
this.testingMode = settings.testingMode;
|
||||
this.selectionMode = settings.selectionMode;
|
||||
}
|
||||
}
|
||||
|
||||
onChangePageSize(event: Pagination) {
|
||||
this.userPreference.paginationSize = event.maxItems;
|
||||
}
|
||||
|
||||
resetSelectedRows() {
|
||||
this.selectedRows = [];
|
||||
}
|
||||
|
||||
onRowClick(processInstanceId: string) {
|
||||
this.router.navigate([`/cloud/community/process-details/${processInstanceId}`]);
|
||||
}
|
||||
|
||||
onFilterChange(query: any) {
|
||||
this.editedFilter = Object.assign({}, query);
|
||||
this.sortArray = [
|
||||
new ProcessListCloudSortingModel({
|
||||
orderBy: this.editedFilter.sort,
|
||||
direction: this.editedFilter.order
|
||||
})
|
||||
];
|
||||
}
|
||||
|
||||
onProcessFilterAction(filterAction: any) {
|
||||
this.cloudLayoutService.setCurrentProcessFilterParam({ id: filterAction.filter.id });
|
||||
if (filterAction.actionType === ACTION_SAVE_AS) {
|
||||
this.router.navigate([`/cloud/community/processes/`], { queryParams: filterAction.filter });
|
||||
}
|
||||
}
|
||||
|
||||
onRowsSelected(nodes) {
|
||||
this.resetSelectedRows();
|
||||
this.selectedRows = nodes.map((node) => node.obj);
|
||||
}
|
||||
}
|
||||
-6
@@ -1,6 +0,0 @@
|
||||
<adf-cloud-start-process
|
||||
[name]="processName"
|
||||
(error)="openSnackMessage($event)"
|
||||
(success)="onStartProcessSuccess()"
|
||||
(cancel)="onCancelStartProcess()">
|
||||
</adf-cloud-start-process>
|
||||
-55
@@ -1,55 +0,0 @@
|
||||
/*!
|
||||
* @license
|
||||
* Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { Component, OnInit } from '@angular/core';
|
||||
import { Router } from '@angular/router';
|
||||
import { NotificationService, AppConfigService } from '@alfresco/adf-core';
|
||||
import { CloudLayoutService } from '../services/cloud-layout.service';
|
||||
|
||||
@Component({
|
||||
templateUrl: './community-start-process-cloud.component.html'
|
||||
})
|
||||
export class CommunityStartProcessCloudDemoComponent implements OnInit {
|
||||
|
||||
processName: string;
|
||||
|
||||
constructor(private appConfig: AppConfigService,
|
||||
private cloudLayoutService: CloudLayoutService,
|
||||
private notificationService: NotificationService,
|
||||
private router: Router) {
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
this.processName = this.appConfig.get<string>('adf-start-process-cloud.name');
|
||||
}
|
||||
|
||||
onStartProcessSuccess() {
|
||||
this.cloudLayoutService.setCurrentProcessFilterParam({ key: 'running-processes' });
|
||||
this.router.navigate([`/cloud/community/processes`]);
|
||||
}
|
||||
|
||||
onCancelStartProcess() {
|
||||
this.cloudLayoutService.setCurrentProcessFilterParam({ key: 'all-processes' });
|
||||
this.router.navigate([`/cloud/community/processes`]);
|
||||
}
|
||||
|
||||
openSnackMessage(event: any) {
|
||||
this.notificationService.openSnackMessage(
|
||||
event.response.body.message
|
||||
);
|
||||
}
|
||||
}
|
||||
-5
@@ -1,5 +0,0 @@
|
||||
<adf-cloud-start-task
|
||||
(error)="openSnackMessage($event)"
|
||||
(success)="onStartTaskSuccess()"
|
||||
(cancel)="onCancelStartTask()">
|
||||
</adf-cloud-start-task>
|
||||
@@ -1,48 +0,0 @@
|
||||
/*!
|
||||
* @license
|
||||
* Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { Component } from '@angular/core';
|
||||
import { Router } from '@angular/router';
|
||||
import { NotificationService } from '@alfresco/adf-core';
|
||||
import { CloudLayoutService } from '../services/cloud-layout.service';
|
||||
@Component({
|
||||
templateUrl: './community-start-task-cloud.component.html'
|
||||
})
|
||||
export class CommunityStartTaskCloudDemoComponent {
|
||||
|
||||
constructor(
|
||||
private cloudLayoutService: CloudLayoutService,
|
||||
private notificationService: NotificationService,
|
||||
private router: Router) {
|
||||
}
|
||||
|
||||
onStartTaskSuccess() {
|
||||
this.cloudLayoutService.setCurrentTaskFilterParam({key: 'community'});
|
||||
this.router.navigate([`/cloud/community/tasks`]);
|
||||
}
|
||||
|
||||
onCancelStartTask() {
|
||||
this.cloudLayoutService.setCurrentTaskFilterParam({key: 'community'});
|
||||
this.router.navigate([`/cloud/community/tasks`]);
|
||||
}
|
||||
|
||||
openSnackMessage(event: any) {
|
||||
this.notificationService.openSnackMessage(
|
||||
event.response.body.message
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1,46 +0,0 @@
|
||||
<adf-cloud-edit-task-filter
|
||||
[id]="filterId"
|
||||
[filterProperties]="taskFilterProperties.filterProperties"
|
||||
[sortProperties]="taskFilterProperties.sortProperties"
|
||||
[actions]="taskFilterProperties.actions"
|
||||
(action)="onTaskFilterAction($event)"
|
||||
(filterChange)="onFilterChange($event)">
|
||||
</adf-cloud-edit-task-filter>
|
||||
<div
|
||||
class="app-cloud-task-list-container"
|
||||
*ngIf="editedFilter">
|
||||
<adf-cloud-task-list
|
||||
#taskCloud
|
||||
class="app-cloud-layout-overflow"
|
||||
[processDefinitionId]="editedFilter.processDefinitionId"
|
||||
[processInstanceId]="editedFilter.processInstanceId"
|
||||
[name]="editedFilter.taskName"
|
||||
[id]="editedFilter.taskId"
|
||||
[parentTaskId]="editedFilter.parentTaskId"
|
||||
[priority]="editedFilter.priority"
|
||||
[owner]="editedFilter.owner"
|
||||
[lastModifiedFrom]="editedFilter.lastModifiedFrom"
|
||||
[lastModifiedTo]="editedFilter.lastModifiedTo"
|
||||
[status]="editedFilter.status"
|
||||
[assignee]="editedFilter.assignee"
|
||||
[createdDate]="editedFilter.createdDate"
|
||||
[dueDate]="editedFilter.dueDate"
|
||||
[sorting]="sortArray"
|
||||
[multiselect]="multiselect"
|
||||
[selectionMode]="selectionMode"
|
||||
(rowClick)="onRowClick($event)"
|
||||
(rowsSelected)="onRowsSelected($event)">
|
||||
</adf-cloud-task-list>
|
||||
<adf-pagination
|
||||
[target]="taskCloud"
|
||||
(changePageSize)="onChangePageSize($event)"
|
||||
(nextPage)="resetSelectedRows()"
|
||||
(prevPage)="resetSelectedRows()">
|
||||
</adf-pagination>
|
||||
<div *ngIf="testingMode">
|
||||
Selected rows:
|
||||
<ul>
|
||||
<li *ngFor="let row of selectedRows" [attr.data-automation-id]="row.id">{{ row.name }}</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1,27 +0,0 @@
|
||||
app-community-tasks-cloud-demo {
|
||||
height: 100%;
|
||||
min-height: 100%;
|
||||
min-width: 100%;
|
||||
width: 100%;
|
||||
|
||||
.adf-cloud-layout-tab-body {
|
||||
.mat-tab-body-wrapper {
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.app-cloud-task-list-container {
|
||||
place-content: stretch space-between;
|
||||
align-items: stretch;
|
||||
margin-top: 2px;
|
||||
}
|
||||
|
||||
&, .app-cloud-task-list-container {
|
||||
flex-direction: column;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.app-cloud-layout-overflow, .app-cloud-task-list-container {
|
||||
flex: 1;
|
||||
}
|
||||
}
|
||||
@@ -1,148 +0,0 @@
|
||||
/*!
|
||||
* @license
|
||||
* Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { Component, OnDestroy, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';
|
||||
import {
|
||||
TaskFilterCloudModel,
|
||||
TaskFilterCloudService,
|
||||
TaskListCloudComponent,
|
||||
TaskListCloudSortingModel
|
||||
} from '@alfresco/adf-process-services-cloud';
|
||||
import { AppConfigService, UserPreferencesService } from '@alfresco/adf-core';
|
||||
import { ActivatedRoute, Router } from '@angular/router';
|
||||
import { CloudLayoutService } from '../services/cloud-layout.service';
|
||||
import { Subject } from 'rxjs';
|
||||
import { takeUntil } from 'rxjs/operators';
|
||||
import { Pagination } from '@alfresco/js-api';
|
||||
|
||||
const ACTION_SAVE_AS = 'saveAs';
|
||||
const TASK_FILTER_PROPERTY_KEYS = 'adf-edit-task-filter';
|
||||
|
||||
@Component({
|
||||
selector: 'app-community-tasks-cloud-demo',
|
||||
templateUrl: './community-task-cloud.component.html',
|
||||
styleUrls: ['./community-task-cloud.component.scss'],
|
||||
encapsulation: ViewEncapsulation.None
|
||||
})
|
||||
export class CommunityTasksCloudDemoComponent implements OnInit, OnDestroy {
|
||||
@ViewChild('taskCloud')
|
||||
taskCloud: TaskListCloudComponent;
|
||||
|
||||
isFilterLoaded = false;
|
||||
|
||||
selectedRow: any;
|
||||
|
||||
sortArray: TaskListCloudSortingModel[];
|
||||
editedFilter: TaskFilterCloudModel;
|
||||
taskFilterProperties: any = { filterProperties: [], sortProperties: [], actions: [] };
|
||||
|
||||
filterId;
|
||||
multiselect: boolean;
|
||||
selectedRows: any[] = [];
|
||||
testingMode: boolean;
|
||||
selectionMode: string;
|
||||
taskDetailsRedirection: boolean;
|
||||
|
||||
private onDestroy$ = new Subject<boolean>();
|
||||
|
||||
constructor(
|
||||
private cloudLayoutService: CloudLayoutService,
|
||||
private route: ActivatedRoute,
|
||||
private router: Router,
|
||||
private taskFilterCloudService: TaskFilterCloudService,
|
||||
private userPreference: UserPreferencesService,
|
||||
private appConfig: AppConfigService) {
|
||||
|
||||
const properties = this.appConfig.get<Array<any>>(TASK_FILTER_PROPERTY_KEYS);
|
||||
if (properties) {
|
||||
this.taskFilterProperties = properties;
|
||||
}
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
this.isFilterLoaded = false;
|
||||
this.route.queryParams.subscribe((params) => {
|
||||
if (Object.keys(params).length > 0) {
|
||||
this.isFilterLoaded = true;
|
||||
this.onFilterChange(params);
|
||||
this.filterId = params.id;
|
||||
} else {
|
||||
setTimeout( () => {
|
||||
this.loadDefaultFilters();
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
this.cloudLayoutService
|
||||
.settings$
|
||||
.pipe(takeUntil(this.onDestroy$))
|
||||
.subscribe(settings => this.setCurrentSettings(settings));
|
||||
}
|
||||
|
||||
ngOnDestroy() {
|
||||
this.onDestroy$.next(true);
|
||||
this.onDestroy$.complete();
|
||||
}
|
||||
|
||||
loadDefaultFilters() {
|
||||
this.taskFilterCloudService
|
||||
.getTaskListFilters('community')
|
||||
.subscribe((filters: TaskFilterCloudModel[]) => {
|
||||
this.onFilterChange(filters[0]);
|
||||
});
|
||||
}
|
||||
|
||||
setCurrentSettings(settings) {
|
||||
if (settings) {
|
||||
this.multiselect = settings.multiselect;
|
||||
this.testingMode = settings.testingMode;
|
||||
this.selectionMode = settings.selectionMode;
|
||||
this.taskDetailsRedirection = settings.taskDetailsRedirection;
|
||||
}
|
||||
}
|
||||
|
||||
onChangePageSize(event: Pagination) {
|
||||
this.userPreference.paginationSize = event.maxItems;
|
||||
}
|
||||
|
||||
resetSelectedRows() {
|
||||
this.selectedRows = [];
|
||||
}
|
||||
|
||||
onRowClick(taskId: string) {
|
||||
if (!this.multiselect && this.selectionMode !== 'multiple' && this.taskDetailsRedirection) {
|
||||
this.router.navigate([`/cloud/community/task-details/${taskId}`]);
|
||||
}
|
||||
}
|
||||
|
||||
onRowsSelected(nodes) {
|
||||
this.resetSelectedRows();
|
||||
this.selectedRows = nodes.map((node) => node.obj);
|
||||
}
|
||||
|
||||
onFilterChange(filter: any) {
|
||||
this.editedFilter = Object.assign({}, filter);
|
||||
this.sortArray = [new TaskListCloudSortingModel({ orderBy: this.editedFilter.sort, direction: this.editedFilter.order })];
|
||||
}
|
||||
|
||||
onTaskFilterAction(filterAction: any) {
|
||||
this.cloudLayoutService.setCurrentTaskFilterParam({ id: filterAction.filter.id });
|
||||
if (filterAction.actionType === ACTION_SAVE_AS) {
|
||||
this.router.navigate([`/cloud/community/tasks/`], { queryParams: filterAction.filter });
|
||||
}
|
||||
}
|
||||
}
|
||||
-16
@@ -1,16 +0,0 @@
|
||||
<h4 data-automation-id="task-details-header">Simple page to show the taskId: {{ taskId }}</h4>
|
||||
|
||||
<div class="app-community-task-details-cloud-column">
|
||||
<div class="app-community-task-details-cloud-row">
|
||||
<adf-cloud-task-form
|
||||
[taskId]="taskId"
|
||||
(cancelClick)="goBack()"
|
||||
(taskClaimed)="onClaimTask()"
|
||||
(taskCompleted)="onTaskCompleted()"
|
||||
(taskUnclaimed)="onUnclaimTask()"
|
||||
(formSaved)="onFormSaved()"
|
||||
(error)="onError($event)">
|
||||
</adf-cloud-task-form>
|
||||
<adf-cloud-task-header [taskId]="taskId"></adf-cloud-task-header>
|
||||
</div>
|
||||
</div>
|
||||
-48
@@ -1,48 +0,0 @@
|
||||
app-community-task-details-cloud {
|
||||
.app {
|
||||
&-task-detail-container {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
&-task-title {
|
||||
margin-left: 15px;
|
||||
}
|
||||
|
||||
&-task-control {
|
||||
width: 70%;
|
||||
}
|
||||
|
||||
&-demop-card-container {
|
||||
width: 30%;
|
||||
font-family: inherit;
|
||||
}
|
||||
|
||||
&-community-task-details-cloud-column {
|
||||
margin: 0;
|
||||
flex-direction: column;
|
||||
|
||||
.app-community-task-details-cloud-row {
|
||||
flex-direction: row;
|
||||
|
||||
adf-cloud-task-form {
|
||||
flex: 1 1 100%;
|
||||
flex-direction: column;
|
||||
display: flex;
|
||||
max-width: 80%;
|
||||
}
|
||||
|
||||
adf-cloud-task-header {
|
||||
flex: 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&-community-task-details-cloud-column, &-community-task-details-cloud-row {
|
||||
height: 100%;
|
||||
min-height: 100%;
|
||||
min-width: 100%;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
}
|
||||
}
|
||||
}
|
||||
-78
@@ -1,78 +0,0 @@
|
||||
/*!
|
||||
* @license
|
||||
* Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { Component, ViewEncapsulation } from '@angular/core';
|
||||
import { ActivatedRoute, Router } from '@angular/router';
|
||||
import { NotificationService } from '@alfresco/adf-core';
|
||||
|
||||
@Component({
|
||||
selector: 'app-community-task-details-cloud',
|
||||
templateUrl: './community-task-details-cloud.component.html',
|
||||
styleUrls: ['./community-task-details-cloud.component.scss'],
|
||||
encapsulation: ViewEncapsulation.None
|
||||
})
|
||||
export class CommunityTaskDetailsCloudDemoComponent {
|
||||
|
||||
taskId: string;
|
||||
|
||||
constructor(
|
||||
private route: ActivatedRoute,
|
||||
private router: Router,
|
||||
private notificationService: NotificationService
|
||||
) {
|
||||
this.route.params.subscribe((params) => {
|
||||
this.taskId = params.taskId;
|
||||
});
|
||||
}
|
||||
|
||||
isTaskValid(): boolean {
|
||||
return this.taskId !== undefined;
|
||||
}
|
||||
|
||||
goBack() {
|
||||
this.router.navigate([`/cloud/community/`]);
|
||||
}
|
||||
|
||||
onCompletedTask() {
|
||||
this.goBack();
|
||||
}
|
||||
|
||||
onUnclaimTask() {
|
||||
this.goBack();
|
||||
}
|
||||
|
||||
onClaimTask() {
|
||||
this.goBack();
|
||||
}
|
||||
|
||||
onTaskCompleted() {
|
||||
this.goBack();
|
||||
}
|
||||
|
||||
onFormSaved() {
|
||||
this.notificationService.openSnackMessage('Task has been saved successfully');
|
||||
}
|
||||
|
||||
onError({ message: error }: Error) {
|
||||
let errorMessage;
|
||||
try {
|
||||
errorMessage = JSON.parse(error).message || JSON.parse(error).entry?.message;
|
||||
errorMessage = JSON.parse(errorMessage).message;
|
||||
} catch {}
|
||||
this.notificationService.showError(errorMessage || error);
|
||||
}
|
||||
}
|
||||
@@ -1,95 +0,0 @@
|
||||
/*!
|
||||
* @license
|
||||
* Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { NgModule } from '@angular/core';
|
||||
import { Routes, RouterModule } from '@angular/router';
|
||||
import { CommonModule } from '@angular/common';
|
||||
import { CoreModule } from '@alfresco/adf-core';
|
||||
import {
|
||||
ProcessServicesCloudModule,
|
||||
LocalPreferenceCloudService,
|
||||
PROCESS_FILTERS_SERVICE_TOKEN,
|
||||
TASK_FILTERS_SERVICE_TOKEN
|
||||
} from '@alfresco/adf-process-services-cloud';
|
||||
|
||||
import { CommunityCloudComponent } from './community-cloud.component';
|
||||
import { CommunityTasksCloudDemoComponent } from './community-task-cloud.component';
|
||||
import { CommunityCloudFiltersDemoComponent } from './community-filters.component';
|
||||
import { CommunityProcessesCloudDemoComponent } from './community-processes-cloud.component';
|
||||
import { CommunityStartProcessCloudDemoComponent } from './community-start-process-cloud.component';
|
||||
import { CommunityStartTaskCloudDemoComponent } from './community-start-task-cloud.component';
|
||||
import { CommunityProcessDetailsCloudDemoComponent } from './community-process-details-cloud.component';
|
||||
import { CommunityTaskDetailsCloudDemoComponent } from './community-task-details-cloud.component';
|
||||
import { AppCloudSharedModule } from '../shared/cloud.shared.module';
|
||||
|
||||
const routes: Routes = [
|
||||
{
|
||||
path: '',
|
||||
component: CommunityCloudComponent,
|
||||
children: [
|
||||
{
|
||||
path: 'tasks',
|
||||
component: CommunityTasksCloudDemoComponent
|
||||
},
|
||||
{
|
||||
path: 'processes',
|
||||
component: CommunityProcessesCloudDemoComponent
|
||||
},
|
||||
{
|
||||
path: 'start-task',
|
||||
component: CommunityStartTaskCloudDemoComponent
|
||||
},
|
||||
{
|
||||
path: 'start-process',
|
||||
component: CommunityStartProcessCloudDemoComponent
|
||||
},
|
||||
{
|
||||
path: 'task-details/:taskId',
|
||||
component: CommunityTaskDetailsCloudDemoComponent
|
||||
},
|
||||
{
|
||||
path: 'process-details/:processInstanceId',
|
||||
component: CommunityProcessDetailsCloudDemoComponent
|
||||
}
|
||||
]
|
||||
}
|
||||
];
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
CommonModule,
|
||||
CoreModule,
|
||||
ProcessServicesCloudModule,
|
||||
RouterModule.forChild(routes),
|
||||
AppCloudSharedModule
|
||||
],
|
||||
declarations: [
|
||||
CommunityCloudComponent,
|
||||
CommunityTasksCloudDemoComponent,
|
||||
CommunityCloudFiltersDemoComponent,
|
||||
CommunityProcessesCloudDemoComponent,
|
||||
CommunityStartProcessCloudDemoComponent,
|
||||
CommunityStartTaskCloudDemoComponent,
|
||||
CommunityProcessDetailsCloudDemoComponent,
|
||||
CommunityTaskDetailsCloudDemoComponent
|
||||
],
|
||||
providers: [
|
||||
{ provide: PROCESS_FILTERS_SERVICE_TOKEN, useClass: LocalPreferenceCloudService },
|
||||
{ provide: TASK_FILTERS_SERVICE_TOKEN, useClass: LocalPreferenceCloudService }
|
||||
]
|
||||
})
|
||||
export class AppCommunityModule {}
|
||||
@@ -1,128 +0,0 @@
|
||||
<mat-card class="app-section">
|
||||
<mat-card-title>People Cloud Component</mat-card-title>
|
||||
|
||||
<mat-card-content>
|
||||
<br>
|
||||
<mat-radio-group (change)="onChangePeopleMode($event)">
|
||||
<mat-radio-button [checked]="true" class="app-people-single-mode" data-automation-id="app-people-single-mode" value="single">Single Selection</mat-radio-button>
|
||||
<mat-radio-button class="app-people-multiple-mode" data-automation-id="app-people-multiple-mode" value="multiple">Multiple Selection</mat-radio-button>
|
||||
</mat-radio-group>
|
||||
<div class="app-people-control-options">
|
||||
<mat-form-field *ngIf="isPeopleAppNameSelected()" class="app-preselect-value">
|
||||
<mat-label>Application Name</mat-label>
|
||||
<input matInput (input)="setPeopleAppName($any($event).target?.value)" data-automation-id="app-people-app-input" />
|
||||
</mat-form-field>
|
||||
<mat-form-field class="app-preselect-value">
|
||||
<mat-label>Roles: ["ACTIVITI_ADMIN", "ACTIVITI_USER"]</mat-label>
|
||||
<input matInput (input)="setPeopleRoles($any($event).target?.value)" data-automation-id="app-people-roles-input"/>
|
||||
</mat-form-field>
|
||||
<mat-form-field class="app-preselect-value">
|
||||
<mat-label>Groups Restriction ["hr", "sales"]</mat-label>
|
||||
<input matInput
|
||||
(input)="setPeopleGroupsRestriction($any($event).target?.value)"
|
||||
data-automation-id="app-people-groups-restriction-input"/>
|
||||
</mat-form-field>
|
||||
<mat-form-field class="app-preselect-value-full">
|
||||
<mat-label>Preselect: {{ defaultPeoplePlaceholder }}</mat-label>
|
||||
<input matInput (input)="setPeoplePreselectValue($any($event).target?.value)" data-automation-id="app-people-preselect-input" />
|
||||
</mat-form-field>
|
||||
<mat-checkbox class="app-preselect-value" (change)="onChangePeopleValidation($event)">Preselect validation</mat-checkbox>
|
||||
<mat-checkbox data-automation-id="app-people-readonly" value="{{ peopleReadonly }}" (change)="onChangePeopleReadonly($event)">Read-only Mode</mat-checkbox>
|
||||
</div>
|
||||
<div>
|
||||
<adf-cloud-people
|
||||
[preSelectUsers]="preSelectUsers"
|
||||
[readOnly]="peopleReadonly"
|
||||
[validate]="peoplePreselectValidation"
|
||||
[appName]="peopleAppName"
|
||||
[roles]="peopleRoles"
|
||||
[groupsRestriction]="groupsRestriction"
|
||||
[title]="'ADF_TASK_LIST.START_TASK.FORM.LABEL.ASSIGNEE'"
|
||||
[mode]="peopleMode"
|
||||
(warning)="onUsersWarning($event)"></adf-cloud-people>
|
||||
</div>
|
||||
|
||||
<div class="app-people-list" *ngIf="peopleMode === 'multiple'">
|
||||
<h4>All Preselected Users</h4>
|
||||
<mat-list role="list">
|
||||
<mat-list-item *ngFor="let item of preSelectUsers" role="listitem">
|
||||
<mat-icon mat-list-icon>person</mat-icon>
|
||||
{{item | fullName}}
|
||||
</mat-list-item>
|
||||
</mat-list>
|
||||
|
||||
<div *ngIf="invalidUsers.length > 0">
|
||||
<h4>Invalid Users <mat-icon>warning</mat-icon> </h4>
|
||||
<mat-list role="list">
|
||||
<mat-list-item *ngFor="let invalidUser of invalidUsers" role="listitem">
|
||||
<mat-icon mat-list-icon>person</mat-icon>
|
||||
{{invalidUser | fullName}}
|
||||
</mat-list-item>
|
||||
</mat-list>
|
||||
</div>
|
||||
</div>
|
||||
</mat-card-content>
|
||||
</mat-card>
|
||||
|
||||
<mat-card class="app-section">
|
||||
<mat-card-title>Groups Cloud Component</mat-card-title>
|
||||
|
||||
<mat-card-content>
|
||||
<br>
|
||||
<mat-radio-group (change)="onChangeGroupsMode($event)">
|
||||
<mat-radio-button [checked]="true" class="app-people-single-mode" data-automation-id="app-group-single-mode" value="single">Single Selection</mat-radio-button>
|
||||
<mat-radio-button class="app-people-multiple-mode" data-automation-id="app-group-multiple-mode" value="multiple">Multiple Selection</mat-radio-button>
|
||||
</mat-radio-group>
|
||||
<div class="app-groups-control-options">
|
||||
<mat-form-field *ngIf="isGroupAppNameSelected()" class="app-preselect-value">
|
||||
<mat-label>Application Name</mat-label>
|
||||
<input matInput (input)="setGroupAppName($any($event).target?.value)" data-automation-id="app-group-app-input"/>
|
||||
</mat-form-field>
|
||||
<mat-form-field class="app-preselect-value">
|
||||
<mat-label>Roles: ["ACTIVITI_ADMIN", "ACTIVITI_USER"]</mat-label>
|
||||
<input matInput (input)="setGroupRoles($any($event).target?.value)" data-automation-id="app-group-roles-input"/>
|
||||
</mat-form-field>
|
||||
<mat-form-field class="app-preselect-value-full">
|
||||
<mat-label>Preselect: {{ defaultGroupPlaceholder }}</mat-label>
|
||||
<input matInput (input)="setGroupsPreselectValue($any($event).target?.value)" data-automation-id="app-group-preselect-input" />
|
||||
</mat-form-field>
|
||||
<mat-checkbox class="app-preselect-value" (change)="onChangeGroupValidation($event)">Preselect validation</mat-checkbox>
|
||||
<mat-checkbox
|
||||
data-automation-id="app-group-readonly"
|
||||
value="{{ groupReadonly }}"
|
||||
(change)="onChangeGroupReadonly($event)">
|
||||
Read-only Mode
|
||||
</mat-checkbox>
|
||||
</div>
|
||||
<div>
|
||||
<adf-cloud-group
|
||||
[mode]="groupMode"
|
||||
[readOnly]="groupReadonly"
|
||||
[validate]="groupPreselectValidation"
|
||||
[roles]="groupRoles"
|
||||
[appName]="groupAppName"
|
||||
[preSelectGroups]="preSelectGroup"
|
||||
(warning)="onGroupsWarning($event)"></adf-cloud-group>
|
||||
</div>
|
||||
|
||||
<div class="app-group-list" *ngIf="groupMode === 'multiple'">
|
||||
<h4>All Preselected Groups</h4>
|
||||
<mat-list role="list">
|
||||
<mat-list-item *ngFor="let item of preSelectGroup" role="listitem">
|
||||
<mat-icon mat-list-icon>group</mat-icon>
|
||||
{{ item.name }}
|
||||
</mat-list-item>
|
||||
</mat-list>
|
||||
|
||||
<div *ngIf="invalidGroups.length > 0">
|
||||
<h4>Invalid Groups <mat-icon>warning</mat-icon> </h4>
|
||||
<mat-list role="list">
|
||||
<mat-list-item *ngFor="let invalidGroup of invalidGroups" role="listitem">
|
||||
<mat-icon mat-list-icon>group</mat-icon>
|
||||
{{invalidGroup?.name}}
|
||||
</mat-list-item>
|
||||
</mat-list>
|
||||
</div>
|
||||
</div>
|
||||
</mat-card-content>
|
||||
</mat-card>
|
||||
@@ -1,31 +0,0 @@
|
||||
.app {
|
||||
&-section {
|
||||
mat-card-title {
|
||||
font-size: 18px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
mat-radio-group {
|
||||
margin: 7px 10px;
|
||||
|
||||
mat-radio-button {
|
||||
margin: 0 3px;
|
||||
}
|
||||
}
|
||||
|
||||
mat-card-content {
|
||||
.app-preselect-value {
|
||||
margin-right: 15px;
|
||||
min-width: 25%;
|
||||
|
||||
&-big {
|
||||
width: 60%;
|
||||
}
|
||||
|
||||
&-full {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,164 +0,0 @@
|
||||
/*!
|
||||
* @license
|
||||
* Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { Component, ViewEncapsulation } from '@angular/core';
|
||||
import { ComponentSelectionMode, IdentityUserModel, IdentityGroupModel } from '@alfresco/adf-process-services-cloud';
|
||||
import { MatCheckboxChange } from '@angular/material/checkbox';
|
||||
import { MatRadioChange } from '@angular/material/radio';
|
||||
|
||||
@Component({
|
||||
selector: 'app-people-groups-cloud',
|
||||
templateUrl: './people-groups-cloud-demo.component.html',
|
||||
styleUrls: ['./people-groups-cloud-demo.component.scss'],
|
||||
encapsulation: ViewEncapsulation.None
|
||||
})
|
||||
export class PeopleGroupCloudDemoComponent {
|
||||
|
||||
defaultFilterMode: string = 'appName';
|
||||
defaultGroupPlaceholder: string = `[{"id": "1", "name":"activitiUserGroup"}]`;
|
||||
defaultPeoplePlaceholder: string = `[{"id": "1", email": "user@user.com", "firstName":"user", "lastName": "lastName", "username": "user"}]`;
|
||||
|
||||
peopleMode: ComponentSelectionMode = 'single';
|
||||
preSelectUsers: IdentityUserModel[] = [];
|
||||
invalidUsers: IdentityUserModel[] = [];
|
||||
peopleRoles: string[] = [];
|
||||
groupsRestriction: string[] = [];
|
||||
peopleAppName: string;
|
||||
peopleFilterMode: string = this.defaultFilterMode;
|
||||
peoplePreselectValidation = false;
|
||||
groupPreselectValidation = false;
|
||||
peopleReadonly = false;
|
||||
groupReadonly = false;
|
||||
|
||||
groupMode: ComponentSelectionMode = 'single';
|
||||
preSelectGroup: IdentityGroupModel[] = [];
|
||||
invalidGroups: IdentityGroupModel[] = [];
|
||||
groupRoles: string[];
|
||||
groupAppName: string;
|
||||
groupFilterMode: string = this.defaultFilterMode;
|
||||
|
||||
setPeoplePreselectValue(value: string): void {
|
||||
this.preSelectUsers = this.getArrayFromString(value);
|
||||
}
|
||||
|
||||
setGroupsPreselectValue(value: string): void {
|
||||
this.preSelectGroup = this.getArrayFromString(value);
|
||||
}
|
||||
|
||||
setPeopleRoles(value: string): void {
|
||||
this.peopleRoles = this.getArrayFromString(value);
|
||||
}
|
||||
|
||||
setGroupRoles(value: string): void {
|
||||
this.groupRoles = this.getArrayFromString(value);
|
||||
}
|
||||
|
||||
setPeopleAppName(value: string): void {
|
||||
this.peopleAppName = value;
|
||||
}
|
||||
|
||||
setGroupAppName(value: string): void {
|
||||
this.groupAppName = value;
|
||||
}
|
||||
|
||||
setPeopleGroupsRestriction(value: string): void {
|
||||
this.groupsRestriction = this.getArrayFromString(value);
|
||||
}
|
||||
|
||||
onChangePeopleMode(event: MatRadioChange): void {
|
||||
this.peopleMode = event.value;
|
||||
}
|
||||
|
||||
onChangePeopleReadonly(event: MatCheckboxChange): void {
|
||||
this.peopleReadonly = event.checked;
|
||||
}
|
||||
|
||||
onChangeGroupReadonly(event: MatCheckboxChange): void {
|
||||
this.groupReadonly = event.checked;
|
||||
}
|
||||
|
||||
onChangeGroupsMode(event: MatRadioChange): void {
|
||||
this.groupMode = event.value;
|
||||
}
|
||||
|
||||
onChangePeopleFilterMode(event: MatRadioChange): void {
|
||||
this.peopleFilterMode = event.value;
|
||||
this.resetPeopleFilter();
|
||||
}
|
||||
|
||||
onChangeGroupsFilterMode(event: MatRadioChange): void {
|
||||
this.groupFilterMode = event.value;
|
||||
this.restGroupFilter();
|
||||
}
|
||||
|
||||
isPeopleAppNameSelected(): boolean {
|
||||
return this.peopleFilterMode === 'appName';
|
||||
}
|
||||
|
||||
isGroupAppNameSelected(): boolean {
|
||||
return this.groupFilterMode === 'appName';
|
||||
}
|
||||
|
||||
resetPeopleFilter(): void {
|
||||
if (this.isPeopleAppNameSelected()) {
|
||||
this.peopleRoles = [];
|
||||
} else {
|
||||
this.peopleAppName = '';
|
||||
}
|
||||
}
|
||||
|
||||
restGroupFilter(): void {
|
||||
if (this.isGroupAppNameSelected()) {
|
||||
this.groupRoles = [];
|
||||
} else {
|
||||
this.groupAppName = '';
|
||||
}
|
||||
}
|
||||
|
||||
onChangePeopleValidation(event: MatCheckboxChange): void {
|
||||
this.peoplePreselectValidation = event.checked;
|
||||
}
|
||||
|
||||
onChangeGroupValidation(event: MatCheckboxChange): void {
|
||||
this.groupPreselectValidation = event.checked;
|
||||
}
|
||||
|
||||
onGroupsWarning(warning: any): void {
|
||||
this.invalidGroups = warning.groups;
|
||||
}
|
||||
|
||||
onUsersWarning(warning: any): void {
|
||||
this.invalidUsers = warning.users;
|
||||
}
|
||||
|
||||
isStringArray(str: string): boolean {
|
||||
try {
|
||||
const result = JSON.parse(str);
|
||||
return Array.isArray(result);
|
||||
} catch (e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private getArrayFromString<T = any>(value: string): T[] {
|
||||
if (this.isStringArray(value)) {
|
||||
return JSON.parse(value);
|
||||
} else {
|
||||
return [];
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -185,7 +185,7 @@ export class ProcessesCloudDemoComponent implements OnInit, OnDestroy {
|
||||
}
|
||||
|
||||
private loadFilter(model: ProcessFilterCloudModel) {
|
||||
if (model && model.appName && model.id) {
|
||||
if (model?.appName && model.id) {
|
||||
this.editedFilter = model;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,38 +0,0 @@
|
||||
<adf-cloud-service-task-filters
|
||||
[appName]="appName"
|
||||
[filterParam]="{index: 0}"
|
||||
(filterClicked)="onTaskFilterSelected($event)"
|
||||
(filterSelected)="onTaskFilterSelected($event)">
|
||||
</adf-cloud-service-task-filters>
|
||||
<div class="app-task-list-with-filter">
|
||||
<adf-cloud-edit-service-task-filter
|
||||
[id]="filterId"
|
||||
[appName]="appName"
|
||||
[filterProperties]="taskFilterProperties.filterProperties"
|
||||
[sortProperties]="taskFilterProperties.sortProperties"
|
||||
[actions]="taskFilterProperties.actions"
|
||||
(filterChange)="onFilterChange($event)">
|
||||
</adf-cloud-edit-service-task-filter>
|
||||
<div
|
||||
class="app-task-list-container"
|
||||
*ngIf="editedFilter">
|
||||
<adf-cloud-service-task-list
|
||||
#taskCloud
|
||||
[queryParams]="editedFilter"
|
||||
class="app-cloud-layout-overflow"
|
||||
[appName]="editedFilter.appName"
|
||||
[sorting]="sortArray"
|
||||
[multiselect]="multiselect"
|
||||
[selectionMode]="selectionMode"
|
||||
[stickyHeader]="true"
|
||||
[showActions]="actionMenu"
|
||||
[showContextMenu]="contextMenu">
|
||||
</adf-cloud-service-task-list>
|
||||
<adf-pagination
|
||||
[target]="taskCloud"
|
||||
(changePageSize)="onChangePageSize($event)"
|
||||
(nextPage)="resetSelectedRows()"
|
||||
(prevPage)="resetSelectedRows()">
|
||||
</adf-pagination>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1,25 +0,0 @@
|
||||
app-service-task-list-cloud-demo {
|
||||
min-height: 100%;
|
||||
min-width: 100%;
|
||||
display: flex;
|
||||
|
||||
.app-task-list-with-filter, .app-task-list-container {
|
||||
flex-direction: column;
|
||||
display: flex;
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
&, .app-task-list-container {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.app-task-list-container {
|
||||
place-content: stretch space-between;
|
||||
align-items: stretch;
|
||||
|
||||
.app-cloud-layout-overflow {
|
||||
flex: 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,114 +0,0 @@
|
||||
/*!
|
||||
* @license
|
||||
* Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { Component, OnDestroy, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';
|
||||
import {
|
||||
ServiceTaskFilterCloudModel,
|
||||
ServiceTaskListCloudComponent,
|
||||
TaskListCloudSortingModel
|
||||
} from '@alfresco/adf-process-services-cloud';
|
||||
import { AppConfigService, PaginationModel, UserPreferencesService } from '@alfresco/adf-core';
|
||||
import { CloudLayoutService, CloudServiceSettings } from './services/cloud-layout.service';
|
||||
import { Subject } from 'rxjs';
|
||||
import { takeUntil } from 'rxjs/operators';
|
||||
|
||||
const TASK_FILTER_PROPERTY_KEYS = 'adf-edit-service-task-filter';
|
||||
|
||||
@Component({
|
||||
selector: 'app-service-task-list-cloud-demo',
|
||||
templateUrl: './service-task-list-cloud-demo.component.html',
|
||||
styleUrls: ['./service-task-list-cloud-demo.component.scss'],
|
||||
encapsulation: ViewEncapsulation.None
|
||||
})
|
||||
export class ServiceTaskListCloudDemoComponent implements OnInit, OnDestroy {
|
||||
@ViewChild('taskCloud')
|
||||
taskCloud: ServiceTaskListCloudComponent;
|
||||
|
||||
appName = 'simpleapp';
|
||||
|
||||
isFilterLoaded = false;
|
||||
|
||||
selectedRow: any;
|
||||
|
||||
sortArray: TaskListCloudSortingModel[];
|
||||
editedFilter: ServiceTaskFilterCloudModel;
|
||||
taskFilterProperties: any = { filterProperties: [], sortProperties: [], actions: [] };
|
||||
|
||||
multiselect: boolean;
|
||||
selectedRows: string[] = [];
|
||||
actionMenu: boolean;
|
||||
contextMenu: boolean;
|
||||
actions: any[] = [];
|
||||
selectedAction: { id: number; name: string; actionType: string};
|
||||
selectedContextAction: { id: number; name: string; actionType: string};
|
||||
selectionMode: string;
|
||||
filterId: string;
|
||||
|
||||
private onDestroy$ = new Subject<boolean>();
|
||||
|
||||
constructor(
|
||||
private cloudLayoutService: CloudLayoutService,
|
||||
private userPreference: UserPreferencesService,
|
||||
private appConfig: AppConfigService) {
|
||||
|
||||
const properties = this.appConfig.get<Array<any>>(TASK_FILTER_PROPERTY_KEYS);
|
||||
if (properties === this.taskFilterProperties) {
|
||||
this.taskFilterProperties = properties;
|
||||
}
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
this.isFilterLoaded = false;
|
||||
this.cloudLayoutService.settings$
|
||||
.pipe(takeUntil(this.onDestroy$))
|
||||
.subscribe(settings => this.setCurrentSettings(settings));
|
||||
}
|
||||
|
||||
ngOnDestroy() {
|
||||
this.onDestroy$.next(true);
|
||||
this.onDestroy$.complete();
|
||||
}
|
||||
|
||||
setCurrentSettings(settings: CloudServiceSettings) {
|
||||
if (settings) {
|
||||
this.multiselect = settings.multiselect;
|
||||
this.selectionMode = settings.selectionMode;
|
||||
this.actionMenu = settings.actionMenu;
|
||||
this.contextMenu = settings.contextMenu;
|
||||
this.actions = settings.actions;
|
||||
}
|
||||
}
|
||||
|
||||
onTaskFilterSelected(filter: ServiceTaskFilterCloudModel) {
|
||||
this.filterId = filter.id;
|
||||
this.editedFilter = filter;
|
||||
}
|
||||
|
||||
onChangePageSize(event: PaginationModel) {
|
||||
this.userPreference.paginationSize = event.maxItems;
|
||||
}
|
||||
|
||||
resetSelectedRows() {
|
||||
this.selectedRows = [];
|
||||
}
|
||||
|
||||
onFilterChange(filter: ServiceTaskFilterCloudModel) {
|
||||
this.appName = filter.appName;
|
||||
this.editedFilter = Object.assign({}, filter);
|
||||
this.sortArray = [new TaskListCloudSortingModel({ orderBy: this.editedFilter.sort, direction: this.editedFilter.order })];
|
||||
}
|
||||
}
|
||||
@@ -16,7 +16,8 @@
|
||||
<mat-slide-toggle [checked]="processDetailsRedirection" (change)="toggleProcessDetailsRedirection()" data-automation-id="processDetailsRedirection">
|
||||
Display process details on process click
|
||||
</mat-slide-toggle>
|
||||
<mat-form-field data-automation-id="selectionMode">
|
||||
|
||||
<mat-form-field data-automation-id="selectionMode" class="adf-cloud-settings-selection-mode">
|
||||
<mat-label>Selection Mode</mat-label>
|
||||
<mat-select [(ngModel)]="selectionMode" (selectionChange)="onSelectionModeChange()">
|
||||
<mat-option *ngFor="let option of selectionModeOptions" [value]="option.value">
|
||||
@@ -24,32 +25,29 @@
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
<mat-card *ngIf="actionMenu || contextMenu">
|
||||
<mat-card-header>
|
||||
<mat-card-title>Add Action</mat-card-title>
|
||||
</mat-card-header>
|
||||
<mat-card-content>
|
||||
<form class="app-cloud-settings-form" [formGroup]="actionMenuForm">
|
||||
<mat-form-field>
|
||||
<input matInput formControlName="key" placeholder="Key">
|
||||
</mat-form-field>
|
||||
<mat-form-field>
|
||||
<input matInput formControlName="title" placeholder="Title">
|
||||
</mat-form-field>
|
||||
<mat-form-field>
|
||||
<input matInput formControlName="icon" placeholder="Icon">
|
||||
</mat-form-field>
|
||||
<mat-checkbox formControlName="visible">Visible</mat-checkbox>
|
||||
<mat-checkbox formControlName="disabled">Disable</mat-checkbox>
|
||||
<button mat-raised-button (click)="addAction()">Add</button>
|
||||
</form>
|
||||
<div *ngIf="actions.length > 0">
|
||||
<mat-chip-list>
|
||||
<mat-chip *ngFor="let action of actions" [removable]="true">
|
||||
{{action.title}}
|
||||
<mat-icon matChipRemove (click)="removeAction(action)">cancel</mat-icon>
|
||||
</mat-chip>
|
||||
</mat-chip-list>
|
||||
</div>
|
||||
</mat-card-content>
|
||||
</mat-card>
|
||||
|
||||
<div class="app-cloud-actions" *ngIf="actionMenu || contextMenu">
|
||||
<h2>Add Action</h2>
|
||||
<form class="app-cloud-settings-form" [formGroup]="actionMenuForm">
|
||||
<mat-form-field class="app-cloud-settings-form-input">
|
||||
<input matInput formControlName="key" placeholder="Key">
|
||||
</mat-form-field>
|
||||
<mat-form-field class="app-cloud-settings-form-input">
|
||||
<input matInput formControlName="title" placeholder="Title">
|
||||
</mat-form-field>
|
||||
<mat-form-field class="app-cloud-settings-form-input">
|
||||
<input matInput formControlName="icon" placeholder="Icon">
|
||||
</mat-form-field>
|
||||
<mat-checkbox formControlName="visible">Visible</mat-checkbox>
|
||||
<mat-checkbox formControlName="disabled">Disable</mat-checkbox>
|
||||
<button mat-raised-button (click)="addAction()">Add</button>
|
||||
</form>
|
||||
<div *ngIf="actions.length > 0">
|
||||
<mat-chip-list>
|
||||
<mat-chip *ngFor="let action of actions" [removable]="true">
|
||||
{{action.title}}
|
||||
<mat-icon matChipRemove (click)="removeAction(action)">cancel</mat-icon>
|
||||
</mat-chip>
|
||||
</mat-chip-list>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -4,7 +4,11 @@ app-cloud-settings {
|
||||
display: flex;
|
||||
flex: 1;
|
||||
|
||||
mat-form-field {
|
||||
.app-cloud-actions {
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
.adf-cloud-settings-selection-mode {
|
||||
max-width: 200px;
|
||||
}
|
||||
|
||||
@@ -13,13 +17,9 @@ app-cloud-settings {
|
||||
place-content: center space-around;
|
||||
align-items: center;
|
||||
|
||||
mat-form-field {
|
||||
.app-cloud-settings-form-input {
|
||||
flex: 1 1 100%;
|
||||
max-width: 23%;
|
||||
}
|
||||
|
||||
mat-form-field, mat-checkbox {
|
||||
margin-right: 20px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
<h2>Task Header Cloud</h2>
|
||||
|
||||
<mat-form-field class="app-appName-input">
|
||||
App name
|
||||
<input matInput
|
||||
[type]="'text'"
|
||||
[formControl]="appNameFormControl"
|
||||
(change)="updateTaskHeader()">
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field class="app-taskId-input">
|
||||
Task id
|
||||
<input matInput
|
||||
[type]="'text'"
|
||||
[formControl]="taskIdFormControl"
|
||||
(change)="updateTaskHeader()">
|
||||
</mat-form-field>
|
||||
|
||||
<mat-error *ngIf="errorMessage">{{errorMessage}}</mat-error>
|
||||
|
||||
<div>
|
||||
<adf-cloud-task-header #taskHeader
|
||||
[appName]="appName"
|
||||
[taskId]="taskId"
|
||||
(error)="onError($event)">
|
||||
</adf-cloud-task-header>
|
||||
</div>
|
||||
@@ -1,15 +0,0 @@
|
||||
.app {
|
||||
&-appName-input {
|
||||
width: 500px;
|
||||
margin-right: 50px;
|
||||
}
|
||||
|
||||
&-taskId-input {
|
||||
width: 500px;
|
||||
}
|
||||
|
||||
&-find-task-button {
|
||||
background-color: #ff9800;
|
||||
margin-left: 30px;
|
||||
}
|
||||
}
|
||||
@@ -1,49 +0,0 @@
|
||||
/*!
|
||||
* @license
|
||||
* Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { Component, ViewChild } from '@angular/core';
|
||||
import { TaskHeaderCloudComponent } from '@alfresco/adf-process-services-cloud';
|
||||
import { UntypedFormControl } from '@angular/forms';
|
||||
|
||||
@Component({
|
||||
templateUrl: './task-header-cloud-demo.component.html',
|
||||
styleUrls: ['./task-header-cloud-demo.component.scss']
|
||||
})
|
||||
export class TaskHeaderCloudDemoComponent {
|
||||
@ViewChild('taskHeader', { static: true })
|
||||
taskHeader: TaskHeaderCloudComponent;
|
||||
|
||||
appName: string;
|
||||
taskId: string;
|
||||
|
||||
errorMessage;
|
||||
|
||||
appNameFormControl = new UntypedFormControl('');
|
||||
taskIdFormControl = new UntypedFormControl('');
|
||||
|
||||
constructor() {}
|
||||
|
||||
updateTaskHeader() {
|
||||
this.errorMessage = undefined;
|
||||
this.appName = this.appNameFormControl.value;
|
||||
this.taskId = this.taskIdFormControl.value;
|
||||
}
|
||||
|
||||
onError(error) {
|
||||
this.errorMessage = error;
|
||||
}
|
||||
}
|
||||
@@ -1,49 +0,0 @@
|
||||
<div>
|
||||
<mat-nav-list class="app-list-confgurations">
|
||||
|
||||
<mat-list-item (click)="appConfigClick()">
|
||||
<a matLine id="adf-app-conf">App Config Editor</a>
|
||||
<button mat-icon-button>
|
||||
<mat-icon>info</mat-icon>
|
||||
</button>
|
||||
</mat-list-item>
|
||||
|
||||
<mat-list-item (click)="infinitePaginationConfClick()">
|
||||
<a matLine id="adf-infinite-pagination-conf">Infinite pagination</a>
|
||||
<button mat-icon-button>
|
||||
<mat-icon>info</mat-icon>
|
||||
</button>
|
||||
</mat-list-item>
|
||||
|
||||
<mat-list-item (click)="supportedPageSizesClick()">
|
||||
<a matLine id="adf-supported-page-size">Supported Page Sizes </a>
|
||||
<button mat-icon-button>
|
||||
<mat-icon>info</mat-icon>
|
||||
</button>
|
||||
</mat-list-item>
|
||||
|
||||
<mat-list-item (click)="textOrientationClick()">
|
||||
<a matLine id="adf-page-orientation-conf">Page Orientation</a>
|
||||
<button mat-icon-button>
|
||||
<mat-icon>info</mat-icon>
|
||||
</button>
|
||||
</mat-list-item>
|
||||
</mat-nav-list>
|
||||
|
||||
<div>
|
||||
<ngx-monaco-editor id="adf-code-configuration-editor"
|
||||
class="app-file-editor"
|
||||
[options]="editorOptions"
|
||||
[(ngModel)]="code"
|
||||
(onInit)="onInit($event)">
|
||||
</ngx-monaco-editor>
|
||||
<div class="app-list-confgurations-buttons">
|
||||
<button mat-raised-button id="adf-configuration-save" (click)="onSave()" color="primary">
|
||||
Save
|
||||
</button>
|
||||
<button mat-raised-button id="adf-configuration-clear" (click)="onClear()" color="primary">
|
||||
Clear
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1,16 +0,0 @@
|
||||
.app-file-editor {
|
||||
height: 500px;
|
||||
width: 65%;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.app-list-configurations {
|
||||
float: left;
|
||||
width: 30%;
|
||||
}
|
||||
|
||||
.app-list-configurations-buttons {
|
||||
width: 200px;
|
||||
margin-left: 30%;
|
||||
float: left;
|
||||
}
|
||||
@@ -1,143 +0,0 @@
|
||||
/*!
|
||||
* @license
|
||||
* Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { Component, OnDestroy } from '@angular/core';
|
||||
import {
|
||||
AppConfigService,
|
||||
NotificationService,
|
||||
UserPreferencesService,
|
||||
UserPreferenceValues
|
||||
} from '@alfresco/adf-core';
|
||||
import { Subject } from 'rxjs';
|
||||
import { takeUntil } from 'rxjs/operators';
|
||||
|
||||
@Component({
|
||||
selector: 'app-config-editor',
|
||||
templateUrl: './config-editor.component.html',
|
||||
styleUrls: ['./config-editor.component.scss']
|
||||
})
|
||||
export class ConfigEditorComponent implements OnDestroy {
|
||||
|
||||
private onDestroy$ = new Subject<boolean>();
|
||||
|
||||
editor: any;
|
||||
code: any;
|
||||
field: string;
|
||||
invalidJson = false;
|
||||
isUserPreference = false;
|
||||
userPreferenceProperty: string;
|
||||
|
||||
editorOptions = {
|
||||
theme: 'vs-dark',
|
||||
language: 'json',
|
||||
autoIndent: true,
|
||||
formatOnPaste: true,
|
||||
formatOnType: true
|
||||
};
|
||||
|
||||
onInit(editor) {
|
||||
this.editor = editor;
|
||||
this.indentCode();
|
||||
}
|
||||
|
||||
constructor(private appConfig: AppConfigService,
|
||||
private userPreferencesService: UserPreferencesService,
|
||||
private notificationService: NotificationService) {
|
||||
this.code = JSON.stringify(appConfig.config);
|
||||
}
|
||||
|
||||
onSave() {
|
||||
try {
|
||||
if (this.isUserPreference) {
|
||||
this.userPreferencesService.set(this.userPreferenceProperty, JSON.parse(this.editor.getValue()));
|
||||
} else {
|
||||
this.appConfig.config = JSON.parse(this.editor.getValue());
|
||||
}
|
||||
} catch (error) {
|
||||
this.invalidJson = true;
|
||||
this.notificationService.openSnackMessage('Wrong Code configuration ' + error);
|
||||
} finally {
|
||||
if (!this.invalidJson) {
|
||||
this.notificationService.openSnackMessage('Saved');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
onClear() {
|
||||
this.code = '';
|
||||
}
|
||||
|
||||
appConfigClick() {
|
||||
this.isUserPreference = false;
|
||||
this.code = JSON.stringify(this.appConfig.config);
|
||||
this.indentCode();
|
||||
}
|
||||
|
||||
ngOnDestroy() {
|
||||
this.onDestroy$.next(true);
|
||||
this.onDestroy$.complete();
|
||||
}
|
||||
|
||||
textOrientationClick() {
|
||||
this.isUserPreference = true;
|
||||
this.userPreferenceProperty = 'textOrientation';
|
||||
|
||||
this.userPreferencesService
|
||||
.select(this.userPreferenceProperty)
|
||||
.pipe(takeUntil(this.onDestroy$))
|
||||
.subscribe((textOrientation: number) => {
|
||||
this.code = JSON.stringify(textOrientation);
|
||||
this.field = 'textOrientation';
|
||||
this.indentCode();
|
||||
});
|
||||
|
||||
this.indentCode();
|
||||
}
|
||||
|
||||
infinitePaginationConfClick() {
|
||||
this.isUserPreference = true;
|
||||
this.userPreferenceProperty = UserPreferenceValues.PaginationSize;
|
||||
this.userPreferencesService
|
||||
.select(this.userPreferenceProperty)
|
||||
.pipe(takeUntil(this.onDestroy$))
|
||||
.subscribe((pageSize: number) => {
|
||||
this.code = JSON.stringify(pageSize);
|
||||
this.field = 'adf-infinite-pagination';
|
||||
this.indentCode();
|
||||
});
|
||||
}
|
||||
|
||||
supportedPageSizesClick() {
|
||||
this.isUserPreference = true;
|
||||
this.userPreferenceProperty = UserPreferenceValues.SupportedPageSizes;
|
||||
this.userPreferencesService
|
||||
.select(this.userPreferenceProperty)
|
||||
.pipe(takeUntil(this.onDestroy$))
|
||||
.subscribe((supportedPageSizes: number) => {
|
||||
this.code = JSON.stringify(supportedPageSizes);
|
||||
this.field = 'adf-supported-page-size';
|
||||
this.indentCode();
|
||||
});
|
||||
}
|
||||
|
||||
indentCode() {
|
||||
setTimeout(() => {
|
||||
this.editor.getAction('editor.action.formatDocument').run();
|
||||
}, 300);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,41 +0,0 @@
|
||||
/*!
|
||||
* @license
|
||||
* Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { NgModule } from '@angular/core';
|
||||
import { ConfigEditorComponent } from './config-editor.component';
|
||||
import { Routes, RouterModule } from '@angular/router';
|
||||
import { CommonModule } from '@angular/common';
|
||||
import { CoreModule } from '@alfresco/adf-core';
|
||||
import { MonacoEditorModule } from 'ngx-monaco-editor-v2';
|
||||
|
||||
const routes: Routes = [
|
||||
{
|
||||
path: '',
|
||||
component: ConfigEditorComponent
|
||||
}
|
||||
];
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
CommonModule,
|
||||
CoreModule,
|
||||
RouterModule.forChild(routes),
|
||||
MonacoEditorModule
|
||||
],
|
||||
declarations: [ConfigEditorComponent]
|
||||
})
|
||||
export class AppConfigEditorModule {}
|
||||
@@ -1,71 +1,24 @@
|
||||
<ng-container *ngIf="nodeId">
|
||||
|
||||
<adf-alfresco-viewer
|
||||
(showViewerChange)="onViewerClosed()"
|
||||
[nodeId]="nodeId"
|
||||
[versionId]="versionId"
|
||||
[showRightSidebar]="showRightSidebar"
|
||||
[showLeftSidebar]="showLeftSidebar"
|
||||
[allowGoBack]="allowGoBack"
|
||||
[showToolbar]="showToolbar"
|
||||
[allowPrint]="allowPrint"
|
||||
[allowDownload]="allowDownload"
|
||||
[allowRightSidebar]="allowRightSidebar"
|
||||
[allowLeftSidebar]="allowLeftSidebar"
|
||||
[sidebarLeftTemplate]="sidebarLeftTemplate"
|
||||
[showToolbar]="true"
|
||||
[allowRightSidebar]="true"
|
||||
[sidebarRightTemplate]="sidebarRightTemplate">
|
||||
|
||||
<adf-viewer-toolbar *ngIf="customToolbar" data-automation-id="adf-viewer-custom-toolbar">
|
||||
<h1>My custom toolbar</h1>
|
||||
</adf-viewer-toolbar>
|
||||
|
||||
<adf-viewer-toolbar-actions *ngIf="moreActions">
|
||||
<button mat-icon-button id="adf-viewer-time">
|
||||
<mat-icon>alarm</mat-icon>
|
||||
</button>
|
||||
<button mat-icon-button id="adf-viewer-upload">
|
||||
<mat-icon>backup</mat-icon>
|
||||
</button>
|
||||
<button mat-icon-button id="adf-viewer-bug">
|
||||
<mat-icon>bug_report</mat-icon>
|
||||
</button>
|
||||
</adf-viewer-toolbar-actions>
|
||||
|
||||
<adf-viewer-more-actions *ngIf="moreActionsMenu">
|
||||
<button mat-menu-item id="adf-viewer-more-menu-alarm">
|
||||
<mat-icon>alarm</mat-icon>
|
||||
<span>Alarm</span>
|
||||
</button>
|
||||
<button mat-menu-item id="adf-viewer-more-menu-backup">
|
||||
<mat-icon>backup</mat-icon>
|
||||
<span>Backup</span>
|
||||
</button>
|
||||
<button mat-menu-item id="adf-viewer-more-menu-bug">
|
||||
<mat-icon>bug_report</mat-icon>
|
||||
<span>Bug report</span>
|
||||
</button>
|
||||
</adf-viewer-more-actions>
|
||||
|
||||
<ng-container *ngIf="openWith">
|
||||
<adf-viewer-open-with>
|
||||
<button mat-menu-item>
|
||||
<mat-icon>dialpad</mat-icon>
|
||||
<span>Option 1</span>
|
||||
</button>
|
||||
<button mat-menu-item disabled>
|
||||
<mat-icon>voicemail</mat-icon>
|
||||
<span>Option 2</span>
|
||||
</button>
|
||||
<button mat-menu-item>
|
||||
<mat-icon>notifications_off</mat-icon>
|
||||
<span>Option 3</span>
|
||||
</button>
|
||||
</adf-viewer-open-with>
|
||||
</ng-container>
|
||||
</adf-alfresco-viewer>
|
||||
|
||||
</ng-container>
|
||||
|
||||
<ng-container *ngIf="blobFile">
|
||||
<adf-viewer
|
||||
[blobFile]="blobFile"
|
||||
[fileName]="fileName"
|
||||
[showToolbar]="true"
|
||||
[allowRightSidebar]="true"
|
||||
(showViewerChange)="onViewerClosed()"
|
||||
[sidebarRightTemplate]="sidebarRightTemplate">
|
||||
</adf-viewer>
|
||||
</ng-container>
|
||||
|
||||
<ng-template let-node="node" #sidebarRightTemplate>
|
||||
<adf-info-drawer title="Details">
|
||||
@@ -157,242 +110,10 @@
|
||||
</adf-info-drawer-tab>
|
||||
|
||||
<adf-info-drawer-tab label="Versions">
|
||||
<mat-card>
|
||||
<mat-card-content>
|
||||
<adf-version-manager [node]="node"
|
||||
(uploadError)="onUploadError($event)"
|
||||
(viewVersion)="onViewVersion($event)">
|
||||
</adf-version-manager>
|
||||
</mat-card-content>
|
||||
</mat-card>
|
||||
<adf-version-manager [node]="node"
|
||||
(uploadError)="onUploadError($event)"
|
||||
(viewVersion)="onViewVersion($event)">
|
||||
</adf-version-manager>
|
||||
</adf-info-drawer-tab>
|
||||
</adf-info-drawer>
|
||||
</ng-template>
|
||||
|
||||
<ng-template #sidebarLeftTemplate>
|
||||
<adf-info-drawer [title]="'Viewer Options'">
|
||||
|
||||
<adf-info-drawer-tab label="Settings">
|
||||
|
||||
<p class="toggle">
|
||||
<mat-slide-toggle
|
||||
id="adf-switch-fileurl"
|
||||
(change)="toggleFileUrl()"
|
||||
[checked]="fileUrlSwitch">
|
||||
Url File
|
||||
</mat-slide-toggle>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<ng-container *ngIf="fileUrlSwitch">
|
||||
<mat-form-field floatPlaceholder="float">
|
||||
<input matInput
|
||||
placeholder="Url File"
|
||||
[(ngModel)]="urlFile"
|
||||
data-automation-id="adf-text-file-url">
|
||||
</mat-form-field>
|
||||
</ng-container>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<mat-slide-toggle
|
||||
id="adf-switch-toolbar"
|
||||
(change)="toggleShowToolbar()"
|
||||
[checked]="showToolbar">
|
||||
Show Toolbar
|
||||
</mat-slide-toggle>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<mat-slide-toggle
|
||||
id="adf-switch-goback"
|
||||
(change)="toggleAllowGoBack()"
|
||||
[checked]="allowGoBack">
|
||||
Allow GoBack
|
||||
</mat-slide-toggle>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<mat-slide-toggle
|
||||
id="adf-switch-openwith"
|
||||
(change)="toggleOpenWith()"
|
||||
[checked]="openWith">
|
||||
Open With
|
||||
</mat-slide-toggle>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<mat-slide-toggle
|
||||
id="adf-switch-moreactions"
|
||||
(change)="toggleOpenMoreActions()"
|
||||
[checked]="moreActions">
|
||||
More Actions
|
||||
</mat-slide-toggle>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<mat-slide-toggle
|
||||
id="adf-switch-moreactionsmenu"
|
||||
(change)="toggleMoreActionsMenu()"
|
||||
[checked]="moreActionsMenu">
|
||||
More Actions Menu
|
||||
</mat-slide-toggle>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<mat-slide-toggle
|
||||
id="adf-switch-download"
|
||||
(change)="toggleAllowDownload()"
|
||||
[checked]="allowDownload">
|
||||
Allow Download
|
||||
</mat-slide-toggle>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<mat-slide-toggle
|
||||
id="adf-switch-print"
|
||||
(change)="toggleAllowPrint()"
|
||||
[checked]="allowPrint">
|
||||
Allow Print
|
||||
</mat-slide-toggle>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<mat-slide-toggle
|
||||
id="adf-switch-allowsidebar"
|
||||
(change)="toggleAllowRightSidebar()"
|
||||
[checked]="allowRightSidebar">
|
||||
Allow Right Sidebar
|
||||
</mat-slide-toggle>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<mat-slide-toggle
|
||||
id="adf-switch-allowLeftSidebar"
|
||||
(change)="toggleAllowLeftSidebar()"
|
||||
[checked]="allowLeftSidebar">
|
||||
Allow Left Sidebar
|
||||
</mat-slide-toggle>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<mat-slide-toggle
|
||||
id="adf-toggle-custom-toolbar"
|
||||
(change)="toggleToolbar()"
|
||||
[checked]="customToolbar">
|
||||
Custom Toolbar
|
||||
</mat-slide-toggle>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<mat-slide-toggle
|
||||
id="adf-tab-with-icon"
|
||||
(change)="toggleShowTabWithIcon()"
|
||||
[checked]="showTabWithIcon">
|
||||
Show tab with icon
|
||||
</mat-slide-toggle>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<mat-slide-toggle
|
||||
id="adf-icon-and-label-tab"
|
||||
(change)="toggleShowTabWithIconAndLabel()"
|
||||
[checked]="showTabWithIconAndLabel">
|
||||
Show tab with icon and label
|
||||
</mat-slide-toggle>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<button mat-raised-button id="adf-switch-showrightsidebar" (click)="toggleShowRightSidebar()">
|
||||
Toggle Right Sidebar
|
||||
</button>
|
||||
</p>
|
||||
|
||||
<p class="toggle">
|
||||
<button mat-raised-button id="adf-switch-showleftsidebar" (click)="hideLeftSidebar()">
|
||||
Hide Left Sidebar
|
||||
</button>
|
||||
</p>
|
||||
|
||||
</adf-info-drawer-tab>
|
||||
|
||||
<adf-info-drawer-tab
|
||||
*ngIf="showTabWithIcon"
|
||||
[label]=""
|
||||
[icon]="'face'"
|
||||
data-automation-id="adf-settings-tab">
|
||||
</adf-info-drawer-tab>
|
||||
|
||||
<adf-info-drawer-tab
|
||||
*ngIf="showTabWithIconAndLabel"
|
||||
[label]="'Comments'"
|
||||
[icon]="'comment'"
|
||||
data-automation-id="adf-settings-tab">
|
||||
</adf-info-drawer-tab>
|
||||
</adf-info-drawer>
|
||||
</ng-template>
|
||||
|
||||
<ng-container *ngIf="blobFile">
|
||||
<adf-viewer
|
||||
[blobFile]="blobFile"
|
||||
[fileName]="fileName"
|
||||
[showRightSidebar]="showRightSidebar"
|
||||
[showLeftSidebar]="showLeftSidebar"
|
||||
[allowGoBack]="allowGoBack"
|
||||
[showToolbar]="showToolbar"
|
||||
[allowRightSidebar]="allowRightSidebar"
|
||||
[allowLeftSidebar]="allowLeftSidebar"
|
||||
(showViewerChange)="onViewerClosed()"
|
||||
[sidebarLeftTemplate]="sidebarLeftTemplate"
|
||||
[sidebarRightTemplate]="sidebarRightTemplate">
|
||||
|
||||
<adf-viewer-toolbar *ngIf="customToolbar" data-automation-id="adf-viewer-custom-toolbar">
|
||||
<h1>My custom toolbar</h1>
|
||||
</adf-viewer-toolbar>
|
||||
|
||||
<adf-viewer-toolbar-actions *ngIf="moreActions">
|
||||
<button mat-icon-button id="adf-viewer-time">
|
||||
<mat-icon>alarm</mat-icon>
|
||||
</button>
|
||||
<button mat-icon-button id="adf-viewer-upload">
|
||||
<mat-icon>backup</mat-icon>
|
||||
</button>
|
||||
<button mat-icon-button id="adf-viewer-bug">
|
||||
<mat-icon>bug_report</mat-icon>
|
||||
</button>
|
||||
</adf-viewer-toolbar-actions>
|
||||
|
||||
<adf-viewer-more-actions *ngIf="moreActionsMenu">
|
||||
<button mat-menu-item id="adf-viewer-more-menu-alarm">
|
||||
<mat-icon>alarm</mat-icon>
|
||||
<span>Alarm</span>
|
||||
</button>
|
||||
<button mat-menu-item id="adf-viewer-more-menu-backup">
|
||||
<mat-icon>backup</mat-icon>
|
||||
<span>Backup</span>
|
||||
</button>
|
||||
<button mat-menu-item id="adf-viewer-more-menu-bug">
|
||||
<mat-icon>bug_report</mat-icon>
|
||||
<span>Bug report</span>
|
||||
</button>
|
||||
</adf-viewer-more-actions>
|
||||
|
||||
<ng-container *ngIf="openWith">
|
||||
<adf-viewer-open-with>
|
||||
<button mat-menu-item>
|
||||
<mat-icon>dialpad</mat-icon>
|
||||
<span>Option 1</span>
|
||||
</button>
|
||||
<button mat-menu-item disabled>
|
||||
<mat-icon>voicemail</mat-icon>
|
||||
<span>Option 2</span>
|
||||
</button>
|
||||
<button mat-menu-item>
|
||||
<mat-icon>notifications_off</mat-icon>
|
||||
<span>Option 3</span>
|
||||
</button>
|
||||
</adf-viewer-open-with>
|
||||
</ng-container>
|
||||
|
||||
</adf-viewer>
|
||||
</ng-container>
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
.app-viewer__sidebar {
|
||||
width: 380px !important;
|
||||
}
|
||||
|
||||
/* stylelint-disable */
|
||||
.monaco-scrollable-element {
|
||||
width: 600px;
|
||||
}
|
||||
|
||||
app-preview-extension {
|
||||
width: 600px;
|
||||
}
|
||||
@@ -17,26 +17,16 @@
|
||||
|
||||
import { Component, OnInit, ViewEncapsulation } from '@angular/core';
|
||||
import { ActivatedRoute, Router, PRIMARY_OUTLET } from '@angular/router';
|
||||
import {
|
||||
NotificationService
|
||||
} from '@alfresco/adf-core';
|
||||
import {
|
||||
ContentService,
|
||||
AllowableOperationsEnum,
|
||||
PermissionsEnum,
|
||||
NodesApiService,
|
||||
FileUploadErrorEvent
|
||||
} from '@alfresco/adf-content-services';
|
||||
import { NotificationService } from '@alfresco/adf-core';
|
||||
import { ContentService, AllowableOperationsEnum, PermissionsEnum, NodesApiService, FileUploadErrorEvent } from '@alfresco/adf-content-services';
|
||||
import { PreviewService } from '../../services/preview.service';
|
||||
|
||||
@Component({
|
||||
selector: 'app-file-view',
|
||||
templateUrl: './file-view.component.html',
|
||||
styleUrls: ['./file-view.component.scss'],
|
||||
encapsulation: ViewEncapsulation.None
|
||||
})
|
||||
export class FileViewComponent implements OnInit {
|
||||
|
||||
nodeId: string = null;
|
||||
versionId: string = null;
|
||||
displayEmptyMetadata = false;
|
||||
@@ -46,36 +36,21 @@ export class FileViewComponent implements OnInit {
|
||||
isPreset = false;
|
||||
customPreset: string = null;
|
||||
displayDefaultProperties = true;
|
||||
showToolbar = true;
|
||||
urlFile = null;
|
||||
allowGoBack = true;
|
||||
openWith = false;
|
||||
allowDownload = true;
|
||||
allowPrint = true;
|
||||
allowRightSidebar = true;
|
||||
allowLeftSidebar = true;
|
||||
moreActions = true;
|
||||
moreActionsMenu = false;
|
||||
fileUrlSwitch = false;
|
||||
showLeftSidebar = null;
|
||||
showRightSidebar = false;
|
||||
customToolbar = false;
|
||||
isCommentEnabled = false;
|
||||
showTabWithIcon = false;
|
||||
showTabWithIconAndLabel = false;
|
||||
desiredAspect: string = null;
|
||||
showAspect: string = null;
|
||||
name: string;
|
||||
fileName: string;
|
||||
blobFile: Blob;
|
||||
|
||||
constructor(private router: Router,
|
||||
private route: ActivatedRoute,
|
||||
private nodeApiService: NodesApiService,
|
||||
private contentServices: ContentService,
|
||||
private preview: PreviewService,
|
||||
private notificationService: NotificationService) {
|
||||
}
|
||||
constructor(
|
||||
private router: Router,
|
||||
private route: ActivatedRoute,
|
||||
private nodeApiService: NodesApiService,
|
||||
private contentServices: ContentService,
|
||||
private preview: PreviewService,
|
||||
private notificationService: NotificationService
|
||||
) {}
|
||||
|
||||
ngOnInit() {
|
||||
this.route.params.subscribe((params) => {
|
||||
@@ -84,8 +59,9 @@ export class FileViewComponent implements OnInit {
|
||||
if (id) {
|
||||
this.nodeApiService.getNode(id).subscribe(
|
||||
(node) => {
|
||||
if (node && node.isFile) {
|
||||
this.isCommentEnabled = this.contentServices.hasPermissions(node, PermissionsEnum.NOT_CONSUMER) ||
|
||||
if (node?.isFile) {
|
||||
this.isCommentEnabled =
|
||||
this.contentServices.hasPermissions(node, PermissionsEnum.NOT_CONSUMER) ||
|
||||
this.contentServices.hasAllowableOperations(node, AllowableOperationsEnum.UPDATE);
|
||||
this.nodeId = id;
|
||||
return;
|
||||
@@ -131,66 +107,6 @@ export class FileViewComponent implements OnInit {
|
||||
this.displayDefaultProperties = !this.displayDefaultProperties;
|
||||
}
|
||||
|
||||
toggleShowToolbar() {
|
||||
this.showToolbar = !this.showToolbar;
|
||||
}
|
||||
|
||||
toggleAllowGoBack() {
|
||||
this.allowGoBack = !this.allowGoBack;
|
||||
}
|
||||
|
||||
toggleOpenWith() {
|
||||
this.openWith = !this.openWith;
|
||||
}
|
||||
|
||||
toggleAllowDownload() {
|
||||
this.allowDownload = !this.allowDownload;
|
||||
}
|
||||
|
||||
toggleAllowPrint() {
|
||||
this.allowPrint = !this.allowPrint;
|
||||
}
|
||||
|
||||
toggleOpenMoreActions() {
|
||||
this.moreActions = !this.moreActions;
|
||||
}
|
||||
|
||||
toggleMoreActionsMenu() {
|
||||
this.moreActionsMenu = !this.moreActionsMenu;
|
||||
}
|
||||
|
||||
toggleShowRightSidebar() {
|
||||
this.showRightSidebar = !this.showRightSidebar;
|
||||
}
|
||||
|
||||
hideLeftSidebar() {
|
||||
this.showLeftSidebar = false;
|
||||
}
|
||||
|
||||
toggleAllowRightSidebar() {
|
||||
this.allowRightSidebar = !this.allowRightSidebar;
|
||||
}
|
||||
|
||||
toggleAllowLeftSidebar() {
|
||||
this.allowLeftSidebar = !this.allowLeftSidebar;
|
||||
}
|
||||
|
||||
toggleShowTabWithIcon() {
|
||||
this.showTabWithIcon = !this.showTabWithIcon;
|
||||
}
|
||||
|
||||
toggleShowTabWithIconAndLabel() {
|
||||
this.showTabWithIconAndLabel = !this.showTabWithIconAndLabel;
|
||||
}
|
||||
|
||||
toggleFileUrl() {
|
||||
this.fileUrlSwitch = !this.fileUrlSwitch;
|
||||
|
||||
if (!this.fileUrlSwitch) {
|
||||
this.urlFile = null;
|
||||
}
|
||||
}
|
||||
|
||||
togglePreset() {
|
||||
this.isPreset = !this.isPreset;
|
||||
if (!this.isPreset) {
|
||||
@@ -198,10 +114,6 @@ export class FileViewComponent implements OnInit {
|
||||
}
|
||||
}
|
||||
|
||||
toggleToolbar() {
|
||||
this.customToolbar = !this.customToolbar;
|
||||
}
|
||||
|
||||
applyCustomPreset() {
|
||||
this.isPreset = false;
|
||||
setTimeout(() => {
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
<adf-toolbar>
|
||||
<adf-toolbar-title>
|
||||
<mat-form-field>
|
||||
<mat-select [(ngModel)]="selectedSource" data-automation-id="custom-sources-select">
|
||||
<mat-option *ngFor="let source of sources" [value]="source.value">
|
||||
{{ source.title }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
</adf-toolbar-title>
|
||||
<adf-toolbar-divider></adf-toolbar-divider>
|
||||
<button mat-icon-button
|
||||
[disabled]="!hasSelection(customSourcesDocumentList.selection)"
|
||||
title="Download"
|
||||
[adfNodeDownload]="customSourcesDocumentList.selection">
|
||||
<mat-icon>get_app</mat-icon>
|
||||
</button>
|
||||
</adf-toolbar>
|
||||
<adf-document-list
|
||||
#customSourcesDocumentList
|
||||
[currentFolderId]="selectedSource"
|
||||
locationFormat="/files"
|
||||
selectionMode="multiple">
|
||||
</adf-document-list>
|
||||
@@ -1,49 +0,0 @@
|
||||
/*!
|
||||
* @license
|
||||
* Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { Component, Input, ViewChild, ViewEncapsulation } from '@angular/core';
|
||||
import { DocumentListComponent } from '@alfresco/adf-content-services';
|
||||
|
||||
@Component({
|
||||
selector: 'app-custom-sources',
|
||||
templateUrl: './custom-sources.component.html',
|
||||
encapsulation: ViewEncapsulation.None
|
||||
})
|
||||
export class CustomSourcesComponent {
|
||||
|
||||
@Input()
|
||||
selectedSource = '-recent-';
|
||||
|
||||
@ViewChild('customSourcesDocumentList', { static: true })
|
||||
documentList: DocumentListComponent;
|
||||
|
||||
sources = [
|
||||
{ title: 'Favorites', value: '-favorites-' },
|
||||
{ title: 'Recent', value: '-recent-' },
|
||||
{ title: 'Shared Links', value: '-sharedlinks-' },
|
||||
{ title: 'Sites', value: '-sites-' },
|
||||
{ title: 'My Sites', value: '-mysites-' },
|
||||
{ title: 'Trashcan', value: '-trashcan-' },
|
||||
{ title: 'Root', value: '-root-' },
|
||||
{ title: 'My', value: '-my-' },
|
||||
{ title: 'Shared', value: '-shared-' }
|
||||
];
|
||||
|
||||
hasSelection(selection: any[]): boolean {
|
||||
return selection && selection.length > 0;
|
||||
}
|
||||
}
|
||||
@@ -1,41 +0,0 @@
|
||||
/*!
|
||||
* @license
|
||||
* Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { NgModule } from '@angular/core';
|
||||
import { CustomSourcesComponent } from './custom-sources.component';
|
||||
import { Routes, RouterModule } from '@angular/router';
|
||||
import { CommonModule } from '@angular/common';
|
||||
import { CoreModule } from '@alfresco/adf-core';
|
||||
import { ContentModule } from '@alfresco/adf-content-services';
|
||||
|
||||
const routes: Routes = [
|
||||
{
|
||||
path: '',
|
||||
component: CustomSourcesComponent
|
||||
}
|
||||
];
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
CommonModule,
|
||||
RouterModule.forChild(routes),
|
||||
CoreModule,
|
||||
ContentModule.forChild()
|
||||
],
|
||||
declarations: [CustomSourcesComponent]
|
||||
})
|
||||
export class AppCustomSourcesModule {}
|
||||
@@ -1,9 +1,4 @@
|
||||
<div class="app-container">
|
||||
<div *ngIf="showSitePicker" class="app-site-container-style" id="site-container">
|
||||
<adf-sites-dropdown (change)="onSiteChange($event)" [hideMyFiles]="false" [relations]="'members'">
|
||||
</adf-sites-dropdown>
|
||||
</div>
|
||||
|
||||
<div
|
||||
id="document-list-container"
|
||||
class="app-document-list-container">
|
||||
@@ -14,7 +9,6 @@
|
||||
[versioning]="versioning"
|
||||
[adf-check-allowable-operation]="'create'"
|
||||
[adf-nodes]="disableDragArea ? getCurrentDocumentListNode() : []"
|
||||
(beginUpload)="onBeginUpload($event)"
|
||||
(updateFileVersion)="onUploadNewVersion($event)">
|
||||
<div *ngIf="errorMessage" class="app-error-message">
|
||||
<button (click)="resetError()" mat-icon-button>
|
||||
@@ -30,16 +24,7 @@
|
||||
</adf-dropdown-breadcrumb>
|
||||
</adf-toolbar-title>
|
||||
|
||||
<adf-toolbar-divider></adf-toolbar-divider>
|
||||
|
||||
<div class="app-document-action-buttons">
|
||||
<button
|
||||
mat-icon-button
|
||||
data-automation-id="document-list-grid-view"
|
||||
title="Toggle display mode"
|
||||
(click)="toggleGalleryView()">
|
||||
<mat-icon>list</mat-icon>
|
||||
</button>
|
||||
<button
|
||||
data-automation-id="create-new-folder"
|
||||
mat-icon-button
|
||||
@@ -50,23 +35,6 @@
|
||||
[adf-create-folder]="currentFolderId">
|
||||
<mat-icon>create_new_folder</mat-icon>
|
||||
</button>
|
||||
<button
|
||||
mat-icon-button
|
||||
title="Create Library}"
|
||||
data-automation-id="create-new-library"
|
||||
(click)="createLibrary()">
|
||||
<mat-icon>library_add</mat-icon>
|
||||
</button>
|
||||
<button
|
||||
data-automation-id="edit-folder"
|
||||
mat-icon-button
|
||||
[disabled]="!canEditFolder(documentList.selection)"
|
||||
title="Edit folder"
|
||||
(error)="openSnackMessageError($event)"
|
||||
[adf-edit-folder]="documentList.selection[0]?.entry"
|
||||
(success)="documentList.reload()">
|
||||
<mat-icon>create</mat-icon>
|
||||
</button>
|
||||
<button mat-icon-button
|
||||
[disabled]="!hasSelection(documentList.selection)"
|
||||
title="Download"
|
||||
@@ -83,23 +51,6 @@
|
||||
[adf-delete]="documentList.selection">
|
||||
<mat-icon>delete</mat-icon>
|
||||
</button>
|
||||
<button
|
||||
data-automation-id="favorite"
|
||||
mat-icon-button
|
||||
[disabled]="!documentList.selection.length"
|
||||
#favorite="adfFavorite"
|
||||
[adf-node-favorite]="documentList.selection"
|
||||
title="Add to favorites">
|
||||
<mat-icon>{{ favorite.hasFavorites() ? 'star' :'star_border' }}</mat-icon>
|
||||
</button>
|
||||
<button mat-icon-button
|
||||
[disabled]="documentList.selection.length && !shareRef.isFile"
|
||||
[baseShareUrl]="baseShareUrl"
|
||||
#shareRef="adfShare"
|
||||
[adf-share]="documentList.selection[0]"
|
||||
[title]="(shareRef.isShared ? 'Edit settings' : 'Share')">
|
||||
<mat-icon>share</mat-icon>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<button mat-icon-button (click)="showVersions = !showVersions" class="app-show-versions-button"
|
||||
@@ -113,22 +64,12 @@
|
||||
<mat-icon>more_vert</mat-icon>
|
||||
</button>
|
||||
<mat-menu #menu="matMenu">
|
||||
<button mat-menu-item (click)="toggleGalleryView()">
|
||||
<mat-icon *ngIf="displayMode === 'list'">view_comfy</mat-icon>
|
||||
<mat-icon *ngIf="displayMode === 'gallery'">list</mat-icon>
|
||||
<span>Card view mode</span>
|
||||
</button>
|
||||
<button mat-menu-item
|
||||
(error)="openSnackMessageError($event)"
|
||||
[adf-create-folder]="currentFolderId">
|
||||
<mat-icon>create_new_folder</mat-icon>
|
||||
<span>New folder</span>
|
||||
</button>
|
||||
<button mat-menu-item
|
||||
(click)="createLibrary()">
|
||||
<mat-icon>library_add</mat-icon>
|
||||
<span>Create Library</span>
|
||||
</button>
|
||||
<button mat-menu-item
|
||||
[disabled]="!canEditFolder(documentList.selection)"
|
||||
(error)="openSnackMessageError($event)"
|
||||
@@ -164,7 +105,6 @@
|
||||
[sorting]="sorting"
|
||||
[sortingMode]="sortingMode"
|
||||
[showHeader]="showHeader"
|
||||
[thumbnails]="thumbnails"
|
||||
[stickyHeader]="stickyHeader"
|
||||
[headerFilters]="headerFilters"
|
||||
[filterValue]="paramValues"
|
||||
@@ -186,41 +126,26 @@
|
||||
<data-column
|
||||
key="$thumbnail"
|
||||
type="image"
|
||||
[sortable]="false"
|
||||
class="app-image-table-cell"
|
||||
[class.adf-cell-thumbnail]="thumbnails">
|
||||
[sortable]="false">
|
||||
</data-column>
|
||||
<data-column
|
||||
*ngIf="showNameColumn && hyperlinkNavigation"
|
||||
key="name"
|
||||
sortingKey="name"
|
||||
class="app-ellipsis-cell"
|
||||
title="Display name"
|
||||
[formatTooltip]="getNodeNameTooltip">
|
||||
<ng-template let-context>
|
||||
<adf-name-column key="name" [context]="context"></adf-name-column>
|
||||
</ng-template>
|
||||
</data-column>
|
||||
<data-column
|
||||
*ngIf="showNameColumn && !hyperlinkNavigation"
|
||||
key="name"
|
||||
sortingKey="name"
|
||||
title="Display name"
|
||||
[formatTooltip]="getNodeNameTooltip"
|
||||
class="app-ellipsis-cell adf-expand-cell-5">
|
||||
class="adf-expand-cell-5">
|
||||
</data-column>
|
||||
<data-column
|
||||
key="content.sizeInBytes"
|
||||
title="Size"
|
||||
type="fileSize"
|
||||
sortingKey="sizeInBytes"
|
||||
class="app-desktop-only adf-ellipsis-cell">
|
||||
class="adf-ellipsis-cell">
|
||||
</data-column>
|
||||
<data-column
|
||||
*ngIf="searchTerm"
|
||||
key="search"
|
||||
title="Search"
|
||||
class="app-desktop-only adf-expand-cell-3">
|
||||
class="adf-expand-cell-3">
|
||||
<ng-template let-entry="$implicit">
|
||||
<div [innerHTML]="searchResultsHighlight(entry.row.node.entry.search) | highlight:searchTerm">
|
||||
</div>
|
||||
@@ -239,7 +164,7 @@
|
||||
key="lock"
|
||||
[focus]="false"
|
||||
[sortable]="false"
|
||||
class="app-desktop-only adf-ellipsis-cell">
|
||||
class="adf-ellipsis-cell">
|
||||
<ng-template let-entry="$implicit">
|
||||
<button mat-icon-button [adf-node-lock]="entry.row.node.entry" class="app-lock-button">
|
||||
<mat-icon *ngIf="entry.row.getValue('isLocked')">lock</mat-icon>
|
||||
@@ -251,7 +176,7 @@
|
||||
title="Created by"
|
||||
key="createdByUser.displayName"
|
||||
sortingKey="createdByUser"
|
||||
class="app-desktop-only adf-ellipsis-cell">
|
||||
class="adf-ellipsis-cell">
|
||||
</data-column>
|
||||
<data-column
|
||||
title="Created"
|
||||
@@ -259,7 +184,7 @@
|
||||
sortingKey="createdAt"
|
||||
type="date"
|
||||
[format]="enableMediumTimeFormat ? 'medium' : 'timeAgo'"
|
||||
class="app-desktop-only adf-ellipsis-cell">
|
||||
class="adf-ellipsis-cell">
|
||||
</data-column>
|
||||
|
||||
</data-columns>
|
||||
@@ -270,24 +195,6 @@
|
||||
title="Download"
|
||||
handler="download">
|
||||
</content-action>
|
||||
<content-action
|
||||
icon="content_copy"
|
||||
title="Copy"
|
||||
permission="copy"
|
||||
[disableWithNoPermission]="true"
|
||||
(error)="onContentActionError($event)"
|
||||
(success)="onContentActionSuccess($event)"
|
||||
handler="copy">
|
||||
</content-action>
|
||||
<content-action
|
||||
icon="redo"
|
||||
title="Move"
|
||||
permission="update"
|
||||
[disableWithNoPermission]="true"
|
||||
(error)="onContentActionError($event)"
|
||||
(success)="onContentActionSuccess($event)"
|
||||
handler="move">
|
||||
</content-action>
|
||||
<content-action
|
||||
icon="delete"
|
||||
permission="delete"
|
||||
@@ -297,11 +204,6 @@
|
||||
(success)="onDeleteActionSuccess($event)"
|
||||
handler="delete">
|
||||
</content-action>
|
||||
<content-action
|
||||
icon="info"
|
||||
title="Info"
|
||||
(execute)="onManageMetadata($event)">
|
||||
</content-action>
|
||||
<content-action
|
||||
icon="supervisor_account"
|
||||
title="Permission"
|
||||
@@ -316,13 +218,6 @@
|
||||
title="Manage versions"
|
||||
(execute)="onManageVersions($event)">
|
||||
</content-action>
|
||||
<content-action
|
||||
target="document"
|
||||
icon="lock"
|
||||
permission="lock"
|
||||
handler="lock"
|
||||
title="Lock">
|
||||
</content-action>
|
||||
<content-action
|
||||
icon="beach_access"
|
||||
target="document"
|
||||
@@ -333,21 +228,12 @@
|
||||
</adf-document-list>
|
||||
</div>
|
||||
<adf-pagination
|
||||
#standardPagination
|
||||
*ngIf="!infiniteScrolling"
|
||||
class="app-documentlist-pagination"
|
||||
[target]="documentList"
|
||||
(changePageSize)="onChangePageSize($event)"
|
||||
(changePageNumber)="onChangePageNumber($event)"
|
||||
(nextPage)="onNextPage($event)"
|
||||
(prevPage)="onPrevPage($event)">
|
||||
</adf-pagination>
|
||||
<adf-infinite-pagination
|
||||
[hidden]="!infiniteScrolling"
|
||||
[target]="documentList"
|
||||
[loading]="documentList.loading">
|
||||
{{ 'ADF-DOCUMENT-LIST.LAYOUT.LOAD_MORE' | translate }}
|
||||
</adf-infinite-pagination>
|
||||
</adf-upload-drag-area>
|
||||
|
||||
<adf-info-drawer-layout *ngIf="showVersions" class="app-manage-versions-sidebar">
|
||||
@@ -365,7 +251,7 @@
|
||||
<ng-container *ngIf="userHasPermissionToManageVersions(); else no_permission_to_versions">
|
||||
<adf-version-manager
|
||||
[node]="documentList.selection[0].entry"
|
||||
[showComments]="showVersionComments"
|
||||
[showComments]="true"
|
||||
[allowDownload]="allowVersionDownload">
|
||||
</adf-version-manager>
|
||||
</ng-container>
|
||||
@@ -402,18 +288,6 @@
|
||||
</div>
|
||||
|
||||
<div class="app-container">
|
||||
<section>
|
||||
<mat-slide-toggle [(ngModel)]="showNameColumn">
|
||||
Show Name Column
|
||||
</mat-slide-toggle>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<mat-slide-toggle [(ngModel)]="hyperlinkNavigation">
|
||||
Hyperlink navigation
|
||||
</mat-slide-toggle>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<mat-slide-toggle data-automation-id="multiSelectToggle" [(ngModel)]="multiselect">
|
||||
Multiselect (with checkboxes)
|
||||
@@ -444,48 +318,18 @@
|
||||
</mat-slide-toggle>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<mat-slide-toggle id="adf-thumbnails-upload-switch" (click)="toggleThumbnails()">
|
||||
Enable Thumbnails
|
||||
</mat-slide-toggle>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<mat-slide-toggle id="adf-document-list-enable-drop-files" [checked]="allowDropFiles" (change)="toggleAllowDropFiles()">
|
||||
Enable Drop Files in a folder or a file
|
||||
</mat-slide-toggle>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<mat-slide-toggle id="adf-version-upload-switch" [(ngModel)]="versioning">
|
||||
Enable versioning
|
||||
</mat-slide-toggle>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<mat-slide-toggle (click)="onInfiniteScrolling()">
|
||||
Enable Infinite Scrolling
|
||||
</mat-slide-toggle>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<mat-slide-toggle [(ngModel)]="showVersionComments">
|
||||
Show comments on versions
|
||||
</mat-slide-toggle>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<mat-slide-toggle [(ngModel)]="allowVersionDownload">
|
||||
Enable version download
|
||||
</mat-slide-toggle>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<mat-slide-toggle [(ngModel)]="warnOnMultipleUploads">
|
||||
Display warning for multiple uploads
|
||||
</mat-slide-toggle>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<mat-slide-toggle [(ngModel)]="enableMediumTimeFormat" id="enableMediumTimeFormat">
|
||||
Enable medium time format for document list
|
||||
@@ -504,39 +348,6 @@
|
||||
</mat-slide-toggle>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<mat-slide-toggle [(ngModel)]="enableDownloadPrompt" id="enableDownloadPrompt" (change)="onEnableDownloadPrompt()">
|
||||
Enable Download Prompt
|
||||
</mat-slide-toggle>
|
||||
</section>
|
||||
<section *ngIf="enableDownloadPrompt">
|
||||
<mat-form-field>
|
||||
<input matInput type="number" [(ngModel)]="downloadPromptDelay" (change)="onDownloadPromptDelayChange()">
|
||||
</mat-form-field>
|
||||
</section>
|
||||
|
||||
<section *ngIf="enableDownloadPrompt">
|
||||
<mat-slide-toggle [(ngModel)]="enableDownloadPromptReminder" id="enableDownloadPromptReminders" (change)="onEnableDownloadPromptReminderChange()">
|
||||
Enable Download Prompt Reminders
|
||||
</mat-slide-toggle>
|
||||
</section>
|
||||
<section *ngIf="enableDownloadPrompt && enableDownloadPromptReminder">
|
||||
<mat-form-field>
|
||||
<input matInput type="number" [(ngModel)]="downloadPromptReminderDelay" (change)="onDownloadPromptReminderChange()">
|
||||
</mat-form-field>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<mat-slide-toggle [(ngModel)]="enableFileAutoDownload" id="enableFileAutoDownload" (change)="onEnableFileAutoDownloadChange()">
|
||||
Enable FileAutoDownload
|
||||
</mat-slide-toggle>
|
||||
</section>
|
||||
<section *ngIf="enableFileAutoDownload">
|
||||
<mat-form-field>
|
||||
<input matInput type="number" [(ngModel)]="fileAutoDownloadSizeThresholdInMB" (change)="onFileAutoDownloadSizeThresholdChange()">
|
||||
</mat-form-field>
|
||||
</section>
|
||||
|
||||
<h5>Upload</h5>
|
||||
<section *ngIf="acceptedFilesTypeShow">
|
||||
<mat-form-field floatPlaceholder="float">
|
||||
@@ -555,7 +366,6 @@
|
||||
<div *ngIf="!acceptedFilesTypeShow">
|
||||
<adf-upload-button
|
||||
#uploadButton
|
||||
tooltip="Custom tooltip"
|
||||
[disabled]="!enableUpload"
|
||||
[rootFolderId]="documentList.currentFolderId"
|
||||
[multipleFiles]="multipleFileUpload"
|
||||
@@ -565,14 +375,12 @@
|
||||
[versioning]="versioning"
|
||||
[adf-check-allowable-operation]="'create'"
|
||||
[adf-nodes]="enableUpload ? getCurrentDocumentListNode() : []"
|
||||
(permissionEvent)="handlePermissionError($event)"
|
||||
(beginUpload)="onBeginUpload($event)">
|
||||
(permissionEvent)="handlePermissionError($event)">
|
||||
</adf-upload-button>
|
||||
</div>
|
||||
<div *ngIf="acceptedFilesTypeShow">
|
||||
<adf-upload-button
|
||||
#uploadButton
|
||||
tooltip="Custom tooltip"
|
||||
[disabled]="!enableUpload"
|
||||
[rootFolderId]="documentList.currentFolderId"
|
||||
[acceptedFilesType]="acceptedFilesType"
|
||||
|
||||
@@ -2,16 +2,6 @@
|
||||
margin: 10px !important;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 599px) {
|
||||
.app-container {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.app-show-versions-button.mat-icon-button {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.app-error-message {
|
||||
text-align: left;
|
||||
}
|
||||
@@ -37,18 +27,6 @@
|
||||
.app-document-action-buttons {
|
||||
flex: 0 0 auto;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 600px) {
|
||||
adf-breadcrumb, .app-document-action-buttons {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (min-width: 600px) {
|
||||
adf-dropdown-breadcrumb, .app-toolbar-divider-before-more-menu, .app-toolbar-more-menu-button {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&:not(.app-document-list-container-in-upload-drag-area) {
|
||||
@@ -64,13 +42,6 @@
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.app-site-container-style {
|
||||
margin-top: 10px;
|
||||
margin-bottom: 10px;
|
||||
width: 100%;
|
||||
min-width: 200px;
|
||||
}
|
||||
|
||||
.app-content-service-settings {
|
||||
padding: 16px;
|
||||
}
|
||||
|
||||
@@ -28,49 +28,31 @@ import {
|
||||
Output,
|
||||
ViewEncapsulation
|
||||
} from '@angular/core';
|
||||
import { Location } from '@angular/common';
|
||||
import { MatDialog } from '@angular/material/dialog';
|
||||
import { ActivatedRoute, Params, Router } from '@angular/router';
|
||||
import { NodeEntry, NodePaging, Pagination, Node, SearchEntry } from '@alfresco/js-api';
|
||||
import {
|
||||
MinimalNodeEntity,
|
||||
NodePaging,
|
||||
Pagination,
|
||||
MinimalNodeEntryEntity,
|
||||
SiteEntry,
|
||||
SearchEntry
|
||||
} from '@alfresco/js-api';
|
||||
import {
|
||||
AppConfigService,
|
||||
AppConfigValues,
|
||||
NotificationService,
|
||||
DataRow,
|
||||
UserPreferencesService,
|
||||
PaginationComponent,
|
||||
DisplayMode,
|
||||
ShowHeaderMode,
|
||||
InfinitePaginationComponent,
|
||||
FormRenderingService
|
||||
} from '@alfresco/adf-core';
|
||||
|
||||
import {
|
||||
ContentService,
|
||||
FolderCreatedEvent,
|
||||
UploadService,
|
||||
DocumentListComponent,
|
||||
PermissionStyleModel,
|
||||
UploadFilesEvent,
|
||||
ConfirmDialogComponent,
|
||||
LibraryDialogComponent,
|
||||
ContentMetadataService,
|
||||
FilterSearch,
|
||||
DialogAspectListService,
|
||||
FileUploadEvent,
|
||||
NodesApiService,
|
||||
SharedLinksApiService
|
||||
NodesApiService
|
||||
} from '@alfresco/adf-content-services';
|
||||
import { ProcessFormRenderingService } from '@alfresco/adf-process-services';
|
||||
import { VersionManagerDialogAdapterComponent } from './version-manager-dialog-adapter.component';
|
||||
import { MetadataDialogAdapterComponent } from './metadata-dialog-adapter.component';
|
||||
import { Subject } from 'rxjs';
|
||||
import { PreviewService } from '../../services/preview.service';
|
||||
import { takeUntil, debounceTime, scan } from 'rxjs/operators';
|
||||
@@ -82,12 +64,9 @@ const DEFAULT_FOLDER_TO_SHOW = '-my-';
|
||||
templateUrl: './files.component.html',
|
||||
styleUrls: ['./files.component.scss'],
|
||||
encapsulation: ViewEncapsulation.None,
|
||||
providers: [
|
||||
{provide: FormRenderingService, useClass: ProcessFormRenderingService}
|
||||
]
|
||||
providers: [{ provide: FormRenderingService, useClass: ProcessFormRenderingService }]
|
||||
})
|
||||
export class FilesComponent implements OnInit, OnChanges, OnDestroy {
|
||||
|
||||
protected onDestroy$ = new Subject<boolean>();
|
||||
|
||||
errorMessage: string = null;
|
||||
@@ -98,14 +77,10 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy {
|
||||
displayMode = DisplayMode.List;
|
||||
includeFields = ['isFavorite', 'isLocked', 'aspectNames', 'definition'];
|
||||
|
||||
baseShareUrl = (
|
||||
this.appConfig.get<string>(AppConfigValues.BASESHAREURL) ||
|
||||
this.appConfig.get<string>(AppConfigValues.ECMHOST)) + '/preview/s/';
|
||||
|
||||
selectionModes = [
|
||||
{value: 'none', viewValue: 'None'},
|
||||
{value: 'single', viewValue: 'Single'},
|
||||
{value: 'multiple', viewValue: 'Multiple'}
|
||||
{ value: 'none', viewValue: 'None' },
|
||||
{ value: 'single', viewValue: 'Single' },
|
||||
{ value: 'multiple', viewValue: 'Multiple' }
|
||||
];
|
||||
|
||||
// The identifier of a node. You can also use one of these well-known aliases: -my- | -shared- | -root-
|
||||
@@ -118,12 +93,6 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy {
|
||||
@Input()
|
||||
sortingMode: 'server' | 'client' = 'server';
|
||||
|
||||
@Input()
|
||||
showRecentFiles = true;
|
||||
|
||||
@Input()
|
||||
showSitePicker = true;
|
||||
|
||||
@Input()
|
||||
showSettingsPanel = true;
|
||||
|
||||
@@ -148,9 +117,6 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy {
|
||||
@Input()
|
||||
maxSizeShow = false;
|
||||
|
||||
@Input()
|
||||
showVersionComments = true;
|
||||
|
||||
@Input()
|
||||
versioning = false;
|
||||
|
||||
@@ -175,9 +141,6 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy {
|
||||
@Input()
|
||||
disableDragArea = false;
|
||||
|
||||
@Input()
|
||||
showNameColumn = true;
|
||||
|
||||
@Input()
|
||||
searchTerm = '';
|
||||
|
||||
@@ -214,64 +177,38 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy {
|
||||
@Output()
|
||||
deleteElementSuccess: EventEmitter<any> = new EventEmitter();
|
||||
|
||||
@ViewChild('documentList', {static: true})
|
||||
@ViewChild('documentList', { static: true })
|
||||
documentList: DocumentListComponent;
|
||||
|
||||
@ViewChild('standardPagination')
|
||||
standardPagination: PaginationComponent;
|
||||
|
||||
@ViewChild(InfinitePaginationComponent, {static: true})
|
||||
infinitePaginationComponent: InfinitePaginationComponent;
|
||||
|
||||
permissionsStyle: PermissionStyleModel[] = [];
|
||||
infiniteScrolling: boolean;
|
||||
stickyHeader: boolean;
|
||||
warnOnMultipleUploads = false;
|
||||
thumbnails = false;
|
||||
enableMediumTimeFormat = false;
|
||||
displayEmptyMetadata = false;
|
||||
hyperlinkNavigation = false;
|
||||
|
||||
enableDownloadPrompt = this.appConfig.get<boolean>('viewer.enableDownloadPrompt', false);
|
||||
enableDownloadPromptReminder: boolean = this.appConfig.get('viewer.enableDownloadPromptReminders', false);
|
||||
downloadPromptDelay = this.appConfig.get('viewer.downloadPromptDelay', 50);
|
||||
downloadPromptReminderDelay = this.appConfig.get('viewer.downloadPromptReminderDelay', 30);
|
||||
enableFileAutoDownload: boolean = this.appConfig.get('viewer.enableFileAutoDownload', true);
|
||||
fileAutoDownloadSizeThresholdInMB: number = this.appConfig.get('viewer.fileAutoDownloadSizeThresholdInMB', 15);
|
||||
|
||||
constructor(private notificationService: NotificationService,
|
||||
private uploadService: UploadService,
|
||||
private contentService: ContentService,
|
||||
private dialog: MatDialog,
|
||||
private location: Location,
|
||||
private router: Router,
|
||||
private appConfig: AppConfigService,
|
||||
private preference: UserPreferencesService,
|
||||
private preview: PreviewService,
|
||||
@Optional() private route: ActivatedRoute,
|
||||
private contentMetadataService: ContentMetadataService,
|
||||
private sharedLinksApiService: SharedLinksApiService,
|
||||
private dialogAspectListService: DialogAspectListService,
|
||||
private nodeService: NodesApiService) {
|
||||
}
|
||||
constructor(
|
||||
private notificationService: NotificationService,
|
||||
private uploadService: UploadService,
|
||||
private contentService: ContentService,
|
||||
private dialog: MatDialog,
|
||||
private router: Router,
|
||||
private preference: UserPreferencesService,
|
||||
private preview: PreviewService,
|
||||
@Optional() private route: ActivatedRoute,
|
||||
private contentMetadataService: ContentMetadataService,
|
||||
private dialogAspectListService: DialogAspectListService,
|
||||
private nodeService: NodesApiService
|
||||
) {}
|
||||
|
||||
showFile(event) {
|
||||
const entry = event.value.entry;
|
||||
if (entry && entry.isFile) {
|
||||
if (entry?.isFile) {
|
||||
this.preview.showResource(entry.id);
|
||||
}
|
||||
}
|
||||
|
||||
toggleThumbnails() {
|
||||
this.thumbnails = !this.thumbnails;
|
||||
this.documentList.reload();
|
||||
}
|
||||
|
||||
toggleAllowDropFiles() {
|
||||
this.allowDropFiles = !this.allowDropFiles;
|
||||
this.documentList.reload();
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
if (!this.pagination) {
|
||||
this.pagination = {
|
||||
@@ -302,33 +239,17 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy {
|
||||
this.onFileUploadEvent(value[0]);
|
||||
});
|
||||
|
||||
this.uploadService.fileUploadDeleted
|
||||
.pipe(takeUntil(this.onDestroy$))
|
||||
.subscribe(value => this.onFileUploadEvent(value));
|
||||
this.uploadService.fileUploadDeleted.pipe(takeUntil(this.onDestroy$)).subscribe((value) => this.onFileUploadEvent(value));
|
||||
|
||||
this.contentService.folderCreated
|
||||
.pipe(takeUntil(this.onDestroy$))
|
||||
.subscribe(value => this.onFolderCreated(value));
|
||||
this.contentService.folderCreated.pipe(takeUntil(this.onDestroy$)).subscribe((value) => this.onFolderCreated(value));
|
||||
|
||||
this.contentService.folderCreate
|
||||
.pipe(takeUntil(this.onDestroy$))
|
||||
.subscribe(value => this.onFolderAction(value));
|
||||
this.contentService.folderCreate.pipe(takeUntil(this.onDestroy$)).subscribe((value) => this.onFolderAction(value));
|
||||
|
||||
this.contentService.folderEdit
|
||||
.pipe(takeUntil(this.onDestroy$))
|
||||
.subscribe(value => this.onFolderAction(value));
|
||||
this.contentService.folderEdit.pipe(takeUntil(this.onDestroy$)).subscribe((value) => this.onFolderAction(value));
|
||||
|
||||
this.contentMetadataService.error
|
||||
.pipe(takeUntil(this.onDestroy$))
|
||||
.subscribe((err: { message: string }) => {
|
||||
this.notificationService.showError(err.message);
|
||||
});
|
||||
|
||||
this.sharedLinksApiService.error
|
||||
.pipe(takeUntil(this.onDestroy$))
|
||||
.subscribe((err: { message: string }) => {
|
||||
this.notificationService.showError(err.message);
|
||||
});
|
||||
this.contentMetadataService.error.pipe(takeUntil(this.onDestroy$)).subscribe((err: { message: string }) => {
|
||||
this.notificationService.showError(err.message);
|
||||
});
|
||||
}
|
||||
|
||||
onFileUploadEvent(event: FileUploadEvent) {
|
||||
@@ -343,7 +264,7 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy {
|
||||
}
|
||||
|
||||
ngOnChanges(changes: SimpleChanges) {
|
||||
if (changes.nodeResult && changes.nodeResult.currentValue) {
|
||||
if (changes.nodeResult?.currentValue) {
|
||||
this.nodeResult = changes.nodeResult.currentValue;
|
||||
this.pagination = this.nodeResult.list.pagination;
|
||||
}
|
||||
@@ -361,9 +282,9 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy {
|
||||
} as Pagination;
|
||||
}
|
||||
|
||||
getCurrentDocumentListNode(): MinimalNodeEntity[] {
|
||||
getCurrentDocumentListNode(): NodeEntry[] {
|
||||
if (this.documentList.folderNode) {
|
||||
return [{entry: this.documentList.folderNode}];
|
||||
return [{ entry: this.documentList.folderNode }];
|
||||
} else {
|
||||
return [];
|
||||
}
|
||||
@@ -433,11 +354,6 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy {
|
||||
this.openSnackMessageError(message);
|
||||
}
|
||||
|
||||
onContentActionSuccess(message: string) {
|
||||
this.openSnackMessageInfo(message);
|
||||
this.documentList.reload();
|
||||
}
|
||||
|
||||
onDeleteActionSuccess(message: string) {
|
||||
this.uploadService.fileDeleted.next(message);
|
||||
this.deleteElementSuccess.emit();
|
||||
@@ -451,12 +367,12 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy {
|
||||
|
||||
onManageVersions(event: any) {
|
||||
const contentEntry = event.value.entry;
|
||||
const showComments = this.showVersionComments;
|
||||
const showComments = true;
|
||||
const allowDownload = this.allowVersionDownload;
|
||||
|
||||
if (this.contentService.hasAllowableOperations(contentEntry, 'update')) {
|
||||
this.dialog.open(VersionManagerDialogAdapterComponent, {
|
||||
data: {contentEntry, showComments, allowDownload},
|
||||
data: { contentEntry, showComments, allowDownload },
|
||||
panelClass: 'adf-version-manager-dialog',
|
||||
width: '630px'
|
||||
});
|
||||
@@ -467,34 +383,12 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy {
|
||||
|
||||
onAspectUpdate(event: any) {
|
||||
this.dialogAspectListService.openAspectListDialog(event.value.entry.id).subscribe((aspectList) => {
|
||||
this.nodeService.updateNode(event.value.entry.id, {aspectNames: [...aspectList]}).subscribe(() => {
|
||||
this.nodeService.updateNode(event.value.entry.id, { aspectNames: [...aspectList] }).subscribe(() => {
|
||||
this.openSnackMessageInfo('Node Aspects Updated');
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
onManageMetadata(event: any) {
|
||||
const contentEntry = event.value.entry;
|
||||
const displayEmptyMetadata = this.displayEmptyMetadata;
|
||||
|
||||
if (this.contentService.hasAllowableOperations(contentEntry, 'update')) {
|
||||
this.dialog.open(MetadataDialogAdapterComponent, {
|
||||
data: {
|
||||
contentEntry,
|
||||
displayEmptyMetadata
|
||||
},
|
||||
panelClass: 'adf-metadata-manager-dialog',
|
||||
width: '630px'
|
||||
});
|
||||
} else {
|
||||
this.openSnackMessageError('OPERATION.ERROR.PERMISSION');
|
||||
}
|
||||
}
|
||||
|
||||
onSiteChange(site: SiteEntry) {
|
||||
this.currentFolderId = site.entry.guid;
|
||||
}
|
||||
|
||||
hasSelection(selection: Array<any>): boolean {
|
||||
return selection && selection.length > 0;
|
||||
}
|
||||
@@ -509,25 +403,18 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy {
|
||||
return this.contentService.hasAllowableOperations(selection[0].entry, 'update');
|
||||
}
|
||||
|
||||
getNodeNameTooltip(row: DataRow): string {
|
||||
if (row) {
|
||||
return row.getValue('name');
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
canEditFolder(selection: Array<MinimalNodeEntity>): boolean {
|
||||
canEditFolder(selection: Array<NodeEntry>): boolean {
|
||||
if (selection && selection.length === 1) {
|
||||
const entry = selection[0].entry;
|
||||
|
||||
if (entry && entry.isFolder) {
|
||||
if (entry?.isFolder) {
|
||||
return this.contentService.hasAllowableOperations(entry, 'update');
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
canCreateContent(parentNode: MinimalNodeEntryEntity): boolean {
|
||||
canCreateContent(parentNode: Node): boolean {
|
||||
if (parentNode) {
|
||||
return this.contentService.hasAllowableOperations(parentNode, 'create');
|
||||
}
|
||||
@@ -559,47 +446,9 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy {
|
||||
this.turnedPreviousPage.emit(event);
|
||||
}
|
||||
|
||||
toggleGalleryView(): void {
|
||||
this.displayMode = this.displayMode === DisplayMode.List ? DisplayMode.Gallery : DisplayMode.List;
|
||||
const url = this
|
||||
.router
|
||||
.createUrlTree(['/files', this.currentFolderId, 'display', this.displayMode])
|
||||
.toString();
|
||||
|
||||
this.location.go(url);
|
||||
}
|
||||
|
||||
onInfiniteScrolling(): void {
|
||||
this.infiniteScrolling = !this.infiniteScrolling;
|
||||
this.infinitePaginationComponent.reset();
|
||||
}
|
||||
|
||||
onBeginUpload(event: UploadFilesEvent) {
|
||||
if (this.warnOnMultipleUploads && event) {
|
||||
const files = event.files || [];
|
||||
if (files.length > 1) {
|
||||
event.pauseUpload();
|
||||
|
||||
const dialogRef = this.dialog.open(ConfirmDialogComponent, {
|
||||
data: {
|
||||
title: 'Upload',
|
||||
message: `Are you sure you want to upload ${files.length} file(s)?`
|
||||
},
|
||||
minWidth: '250px'
|
||||
});
|
||||
|
||||
dialogRef.afterClosed().subscribe((result) => {
|
||||
if (result === true) {
|
||||
event.resumeUpload();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
onUploadNewVersion(ev) {
|
||||
const contentEntry = ev.detail.data.node.entry;
|
||||
const showComments = this.showVersionComments;
|
||||
const showComments = true;
|
||||
const allowDownload = this.allowVersionDownload;
|
||||
const newFileVersion = ev.detail.files[0].file;
|
||||
|
||||
@@ -624,18 +473,8 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy {
|
||||
return this.acceptedFilesTypeShow ? this.acceptedFilesType : '*';
|
||||
}
|
||||
|
||||
createLibrary(): void {
|
||||
const dialogInstance: any = this.dialog.open(LibraryDialogComponent, {
|
||||
width: '400px'
|
||||
});
|
||||
|
||||
dialogInstance.componentInstance.error.subscribe((message: string) => {
|
||||
this.notificationService.openSnackMessage(message);
|
||||
});
|
||||
}
|
||||
|
||||
searchResultsHighlight(search: SearchEntry): string {
|
||||
if (search && search.highlight) {
|
||||
if (search?.highlight) {
|
||||
return search.highlight.map((currentHighlight) => currentHighlight.snippets).join(', ');
|
||||
}
|
||||
return '';
|
||||
@@ -653,7 +492,7 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy {
|
||||
const objectFromMap = {};
|
||||
activeFilters.forEach((filter: FilterSearch) => {
|
||||
let paramValue = null;
|
||||
if (filter.value && filter.value.from && filter.value.to) {
|
||||
if (filter.value?.from && filter.value.to) {
|
||||
paramValue = `${filter.value.from}||${filter.value.to}`;
|
||||
} else {
|
||||
paramValue = filter.value;
|
||||
@@ -661,7 +500,7 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy {
|
||||
objectFromMap[filter.key] = paramValue;
|
||||
});
|
||||
|
||||
this.router.navigate([], {relativeTo: this.route, queryParams: objectFromMap});
|
||||
this.router.navigate([], { relativeTo: this.route, queryParams: objectFromMap });
|
||||
}
|
||||
|
||||
clearFilterNavigation() {
|
||||
@@ -673,34 +512,4 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy {
|
||||
}
|
||||
this.documentList.reload();
|
||||
}
|
||||
|
||||
onEnableDownloadPrompt() {
|
||||
const previewConfig = this.appConfig?.config['viewer'];
|
||||
previewConfig['enableDownloadPrompt'] = this.enableDownloadPrompt;
|
||||
}
|
||||
|
||||
onDownloadPromptDelayChange() {
|
||||
const previewConfig = this.appConfig?.config['viewer'];
|
||||
previewConfig['downloadPromptDelay'] = this.downloadPromptDelay;
|
||||
}
|
||||
|
||||
onEnableDownloadPromptReminderChange() {
|
||||
const previewConfig = this.appConfig?.config['viewer'];
|
||||
previewConfig['enableDownloadPromptReminder'] = this.enableDownloadPromptReminder;
|
||||
}
|
||||
|
||||
onDownloadPromptReminderChange() {
|
||||
const previewConfig = this.appConfig?.config['viewer'];
|
||||
previewConfig['downloadPromptReminderDelay'] = this.downloadPromptReminderDelay;
|
||||
}
|
||||
|
||||
onEnableFileAutoDownloadChange() {
|
||||
const previewConfig = this.appConfig?.config['viewer'];
|
||||
previewConfig['enableFileAutoDownload'] = this.enableFileAutoDownload;
|
||||
}
|
||||
|
||||
onFileAutoDownloadSizeThresholdChange() {
|
||||
const previewConfig = this.appConfig?.config['viewer'];
|
||||
previewConfig['fileAutoDownloadSizeThresholdInMB'] = this.fileAutoDownloadSizeThresholdInMB;
|
||||
}
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user