Compare commits

..
382 Commits
Author SHA1 Message Date
maurizio vitale 505e8204e2 Try to create tag with token 2019-08-30 12:16:01 +01:00
maurizio vitale 52210594ad Cache the lib/dist for npm publish purpose 2019-08-30 12:03:53 +01:00
Silviu Popa a6ee26b35b [ADF-4843] - Automate more manual test cases for visibility chaining … (#5014)
* [ADF-4843] - Automate more manual test cases for visibility chaining in ADF

* fix lint
2019-08-30 11:51:56 +01:00
Eugenio Romano 52af042450 move install in travis and out from lint.sh 2019-08-30 10:44:21 +01:00
Eugenio Romano 6c81cbc832 lint missin install 2019-08-30 10:28:40 +01:00
maurizio vitale 9f7f6c0427 Use the git token 2019-08-30 10:21:50 +01:00
Eugenio Romano ee71866702 fix cli command use 2019-08-30 10:02:20 +01:00
Eugenio Romano b25d989853 add typscritp compiler in cli build 2019-08-29 21:10:28 +01:00
Eugenio Romano 6590b59de0 fix scripts npm 2019-08-29 20:15:10 +01:00
Cilibiu Bogdan d7ff927b79 [ADF-4845] Uploader - Expanded/collapsed state not exposed (#5015)
* state accessibility

* remove aria-disabled
2019-08-29 20:13:57 +01:00
Denys Vuika edc0945f39 fix "ng lint" command (#5012)
* update to latest js-api

* fix the "ng lint" command

* fix linting issues

* fix lint issues

* lint fixes

* code fixes

* fix html

* fix html

* update tests

* test fixes

* update tests

* fix tests and api

* fix code
2019-08-29 16:35:30 +01:00
Marouan Bentaleb 140c64b79f [ADF-4544] Automation for form button refresh after action (#4835) 2019-08-29 16:24:50 +01:00
maurizio vitale a588a64937 Add condition for default jobs 2019-08-29 15:54:13 +01:00
Maurizio Vitale ac28b959ee CI/CD allow a Travis cron job to create beta and update children proj… (#5033)
* CI/CD allow a Travis cron job to create beta and update children projects

* Update build.sh
2019-08-29 15:22:12 +01:00
Eugenio Romano 24e1794fb9 move codecov inside unit test to avoid the aftes success execution in any script stage 2019-08-29 15:14:54 +01:00
Cilibiu Bogdan f35f0466e6 [ADF-4839] Document List - column name link accessibility (#5011)
* accessibility

* rename translation key

* translation key name

* link name component accessibility

* generic translation
2019-08-29 15:07:01 +01:00
davidcanonieto e5f7d2f304 [ADF-4852] Make use of ADF-CLI command to update sha (#5032)
* [ADF-4852] Make use of ADF-CLI command to update sha

* Update build.sh
2019-08-29 15:05:00 +01:00
davidcanonieto c6ddfe46cf [ADF-4816] Move localization keys for About component from demo-shell to core (#5007) 2019-08-29 14:59:07 +01:00
maurizio vitale df37455edd Change the condition for master 2019-08-29 12:50:29 +01:00
maurizio vitale 01ff4dfa52 Run the update children project if is push or beta 2019-08-29 12:45:22 +01:00
Eugenio Romano 43df299096 release update commands pipeline 2019-08-29 12:01:49 +01:00
Marouan Bentaleb cdfae95c2a [ADF-4847] Not able to find any user in Assignee field when creating a task (#5029)
* [ADF-4847] Not able to find any user in Assignee field when creating a task

Updated url to fetch composite user roles

* [ADF-4847] Fixing failing E2E tests
2019-08-29 09:46:47 +01:00
Eugenio Romano 64cecaa125 fix permissions 2019-08-29 08:21:56 +01:00
Eugenio Romano c35fee473b fix release apha 2019-08-29 01:01:29 +01:00
Eugenio Romano 609ae3a3ff fix content service document list action test (#5027)
* fix content service document list action test

* restore build.sh

* perform twice movement mosue for right click for avoid bug in non headless chrome

* change sso ref element present

* change sso ref element present
2019-08-28 23:25:06 +01:00
maurizio vitale 09d3710bcf Get the latest alpha before the install 2019-08-28 16:52:53 +01:00
maurizio vitale 36b76821d0 revert change on dockerfile 2019-08-28 16:06:18 +01:00
Eugenio Romano 151fef16f4 Check remote env if is full before to start the e2e CS (#5024)
* add check remote env full

* Update check-cs-env.js
2019-08-28 15:58:07 +02:00
maurizio vitale 88f9678571 echo rancher job 2019-08-28 14:26:41 +01:00
maurizio vitale 329a8a5348 Use the correct docker repo domain 2019-08-28 13:47:00 +01:00
maurizio vitale 29533e751d Use docker commands 2019-08-28 13:01:06 +01:00
Paul Roth c4adfd49c0 Propose a correction to what appears to be a minor typo (#5026)
* Propose a correction to what appears to be a minor typo

removed the word 'a'.

* Update extensibility.md
2019-08-28 13:49:18 +02:00
maurizio vitale 4c468530d9 Npm install latest adf-cli 2019-08-28 12:27:39 +01:00
maurizio vitale bfc132eeff Improve the docker log 2019-08-28 12:03:10 +01:00
maurizio vitale ee9ed24844 Improve the docker log 2019-08-28 12:02:37 +01:00
davidcanonieto 8a48738b99 [ADF-4825] Use ADF-CLI in ADF for versions and latest commit (#4994)
* [ADF-4825] Use ADF-CLI in ADF for versions and latest commit

* Add documentation

* Update update-version.ts

* Update release.sh

* Update update-project.sh

* Update release.sh

* Update update-project.sh

* Update release.sh

* Update update-project.sh

* Update README.md

* Rebase branch

* Update package.json

* Update build.sh

* Update package.json
2019-08-28 11:01:00 +01:00
maurizio vitale 3aed425020 Run the docker push before 2019-08-27 17:00:22 +01:00
Maurizio Vitale d8961ea904 [ADF-4850] Travis add check bundle size and docker publish (#5023)
* Add a check bundle job after the release

* Add a docker push step and update rancher

* Split update rancher in a different job

* Split update rancher in a different job

* Install the adf-cli

* Run docker publish and rancher update only on push

* Use the adf-cli local code
2019-08-27 16:09:00 +01:00
Suzana Dirla bfc3f30674 [ADF-4846] Move to ADF the style overrides from ACA (#5016)
* [ADF-4846] add $data-table-cell-link-color variable

- move style fix needed on ACA to ADF

* [ADF-4846] add $adf-permission-list-width variable

- moved style fix for adf-permission-lists from ACA to ADF
2019-08-27 14:56:01 +02:00
Eugenio Romano 30d03cf540 fix clean script 2019-08-27 10:30:35 +01:00
siva kumar 8c00919db0 [ADF-4828] [ProcessListCloudComponent] Add action and context menu. (#5009)
* * Demo on list com

* [ADF-4828] [ADF] [ProcessListCloudComponent] Add action and context menu.

* Exposed action and context menu.
* Provided a way to in the demo shell to test action menu.
* Added required transaltion on demo shell.

* * Added doc

* * Fixed comments.
2019-08-23 14:51:39 +01:00
Silviu Popa 8c159babe0 [ADF-4837] - Automation checkbox visibility e2e tests (#5010) 2019-08-22 11:48:30 +02:00
Eugenio Romano 73601dfcfb rename subbprocess without capital letters 2019-08-22 08:17:35 +01:00
Geeta Mandakini Ayyalasomayajula 027e29964c added a new version of candidatebaseapp with process ui workspace defined. (#5006) 2019-08-21 13:02:26 +01:00
maurizio vitale 9a90e58f0c Run the deploy Pr only for PR 2019-08-21 11:46:58 +01:00
maurizio vitale 8875113a4a Run the clean before building 2019-08-21 10:02:08 +01:00
maurizio vitale de5bf9dc88 Rollback the 3.4 version 2019-08-21 10:00:34 +01:00
maurizio vitale 3b4f3ae7b7 Revert change on update version 2019-08-20 23:22:25 +01:00
maurizio vitale ea2bfa8021 Clean the lib/dist 2019-08-20 23:02:29 +01:00
maurizio vitale 6918944a63 Clean the lib/dit 2019-08-20 22:59:02 +01:00
maurizio vitale 89b832ff18 Rollback mistake on update-version.sh 2019-08-20 22:37:52 +01:00
maurizio vitale 11e1bd7a59 Change cli dist 2019-08-20 22:18:46 +01:00
maurizio vitale 3aa2e56c02 cache the lib/dist 2019-08-20 22:02:47 +01:00
maurizio vitale 453461f8ca Use the local npm publish command 2019-08-20 21:45:04 +01:00
maurizio vitale 1407bff208 Remove the build all in the release job 2019-08-20 21:09:09 +01:00
maurizio vitale 7ab054f7e1 Add the npmrc file in the correct folder and remove after publish 2019-08-20 20:02:27 +01:00
maurizio vitale 9bd08f4968 Change the version before building 2019-08-20 17:47:22 +01:00
maurizio vitale e27e99b551 Rebuild the libs after the next alpha 2019-08-20 17:09:06 +01:00
maurizio vitale 1c37fdab81 Npm publish the dist folder 2019-08-20 16:05:06 +01:00
maurizio vitale 711a461f8b Enable the npm install on push branch 2019-08-20 15:12:32 +01:00
Eugenio Romano 0650502b8a remove obsolete option from test-e2e 2019-08-19 22:35:16 +01:00
georg-un f3ab69474d [ADF-4976] Fix variable being referenced before initialization (#4977) 2019-08-19 23:01:58 +02:00
Marouan Bentaleb 023476e14f [ADF-4809] Automation for non-editable task details when completed (#5001) 2019-08-19 22:55:25 +02:00
Cilibiu Bogdan 9960a37e9a add aria label and selected (#4999) 2019-08-19 22:53:25 +02:00
Marouan Bentaleb 643510ed45 [ADF-4799][ADF-4801] Automation tests for CardView clear date field and selectbox None option (#4993)
* [ADF-4799] Automation for clear date button

* [ADF-4801] Automate test for selectbox None option
2019-08-19 22:50:33 +02:00
Maurizio Vitale 329f8b21bf Add a travis step to publish on npm (#5004) 2019-08-19 16:25:36 +01:00
Maurizio Vitale 6c969dda56 Add the npm publish as part of adf-cli (#5002) 2019-08-19 15:30:36 +01:00
davidcanonieto e7c0852051 [ADF-4816] Refactor About component (#5000)
* [ADF-4816] Refactor About component

* Update package.json
2019-08-19 15:29:16 +01:00
Cilibiu Bogdan f5c5e7cf9e add aria-sort (#4997) 2019-08-19 11:33:48 +01:00
Eugenio Romano 83412bb9b6 Disable control flow e2e ADF (#4954)
* update project script possible different JS-API

* first commit no controll flow

* second commit no controll flow

* third commit no controll flow

* 4 commit no controll flow

* 5 commit no controll flow

* 6 commit no controll flow

* 7 commit no controll flow

* 8 commit no controll flow

* 9 commit no controll flow

* 10 commit no controll flow

* 11 commit no controll flow

* 12 commit no controll flow

* 13 commit no controll flow

* 14 commit no controll flow

* 15 commit no controll flow

* 16 commit no controll flow

* 17 commit no controll flow

* 18 commit no controll flow

* 19 commit no controll flow

* 20 commit no controll flow

* remove wdpromise, protractor promise and deferred promises

* - fixed some incorrect “expect” calls
- fixed some matchers
- removed “return this;” when not needed
- added a few more await-s

* forgot a file

* fix some failing tests

* replaced driver calls with browser calls and enabled back waitForAngular

* fix rightClick methods and hopefully some tests

* fix settings-component

* some more fixes for core and content tests

* try to fix some more issues

* linting

* revert some changes, allowing download on headless chrome won’t work with multiple browser instances

* fixes for Search tests

* try to remove some wait calls

* fix build

* increase allScriptsTimeout and try another protractor and web driver version

* improve navigation methods

* some fixes for notification history and login sso

* forgot a space

* fix packages and enable some screenshots

* navigation bar fixes

* fix some test

* some fixes for notification history and navigation bar
use correct visibility method in attachFileWidget test

* fix searching and another fix for navigation

* try solve sso login

* some more fixes

* refactor async forEach into for..of

* try fix for search tests

* resolve rebabse problems

* remove install

* fix lint

* fix core e2e

* fix core e2e

* fix core e2e

* fix ps tests

* fix some tests

* fix core e2e

* fix core e2e

* fix core

* fix some issues PS

* fix core

* fix core

* fix some ps test

* fix rebase issues

* remove save

* fix url regressed after rebase

* fix url regressed after rebase

* fix ps and core

* fix lint

* more parallel e2e ps

* fix some ps cloud test

* some cloud fix

* fix lint

* fix some test

* remove files to be ignored

* out-tsc

* improve one cs test

* fix candidate base app

* fix ps test

* remove click function

* clean methods alrady present in browser action

* try ugly wait

* move wait

* remove duplicate call

* remove underscore

* fix after review

* fix imports

* minor cosmetic fixes

* fix comments test
2019-08-17 14:32:02 +02:00
JT Smith 4f3cf669f2 Documentation fix for Card View component (#4990) 2019-08-15 14:46:02 +02:00
Maurizio Vitale e65a1db7e9 CI/CD Improvement - Create a release with tag when we merge master (#4991)
* Create a release with tag when we merge master

* Add release name with version
2019-08-15 14:31:11 +02:00
Vito 9873e9952a [ADF-4811] - added extra method to open snackbar with interpolate arg… (#4989)
* [ADF-4811] - added extra method to open snackbar with interpolate args for translated messages

* [ADF-4811] - added extra parameter to show info

* [ADF-4811] - added extra parameter to show info

* [ADF-4811] added review changes
2019-08-13 15:13:21 +01:00
Denys Vuika 9ca61975a5 add missing export 2019-08-13 10:23:17 +01:00
Cilibiu Bogdan 3453cacaea [ADF-4802] Login accessibility (#4988)
* login button aria label

* password toggle accessibility

* translation

* fix test

* fix automation if
2019-08-12 16:41:32 +01:00
Cilibiu Bogdan b176a43fba [ADF-4497] ARIA role must be appropriate for the Breadcrumb element (#4986)
* breadcrumb accessibility

* translation
2019-08-12 16:28:53 +01:00
siva kumar eb2811fdd0 [ADF-4738] [Process -Cloud] Move GroupCloudService to adf-core (#4928)
* [ADF-4738] [Process -Cloud] Move GroupCloudService to adf-core lib.

* * Changed GroupModel to IdentityGroupModel
* Updated unit tests the recent changes.

* * Added documentation to the identityGroupService
* Updated GroupInitial and GroupCoudcomponent doc.

* * Created groupCount model. * Updated unit test to the recent changes

* * After rebase updated doc

* * Fixed comments.
2019-08-12 16:27:30 +01:00
Eugenio Romano 4ead51d2a6 Merge branch 'master' into development 2019-08-09 15:48:08 +01:00
Eugenio Romano af318771f0 restore next version in package.json 2019-08-09 15:26:23 +01:00
Eugenio Romano 4d5ab95c15 fix pipeline day release 2019-08-09 15:06:33 +01:00
Silviu Popa f9a8d3a4bf [ADF-4797] - fix null value for display text when the field it's not visible (#4987)
* fix reset display text value when it's not visible

* change invalid unit test

* change unit test

* use alpha to test
2019-08-09 14:45:26 +01:00
Eugenio Romano a8ef686cdd update package-lock 2019-08-09 11:26:09 +01:00
Eugenio Romano e551aa417b console log error in sorting 2019-08-09 07:53:25 +01:00
Eugenio Romano dfbefa2ce5 split protractor configuration file (#4983) 2019-08-09 07:51:04 +01:00
Eugenio Romano ab2fc2fb15 Release 3.4.0 2019-08-09 00:38:19 +01:00
Eugenio Romano fd4e74d124 add license and audit info 2019-08-09 00:31:57 +01:00
Francesco Corti 446ca523d4 [ADF-4776] Release note in draft (#4963)
* [ADF-4776] Release note in draft

* Refuse on the title of the release note

Refuse on the title of the release note

* [ADF-4776] Release note in draft.

* [ADF-4776] Release note updates

* Update RelNote340.md

* remove ds file
2019-08-09 00:21:23 +01:00
Eugenio Romano 4aa0f49c58 fix date issue +1 time zone in date widget (#4982) 2019-08-08 22:52:22 +01:00
Silviu Popa cb988b0145 [ADF-4790] [ADF-4791] - fix visibility condition for text/checkbox and variable/value (#4978)
* [ADF-4790] [ADF-4791] - fix visibility condition for empty string and checkbox - value/variable

* reset package-lock

* reset package-lock.json

* fix lint and change return type
2019-08-08 22:51:09 +01:00
Eugenio Romano f04c135377 Fix e2e test (#4981)
* fix core viewer

* increase rendition retry

* sso refresh before test

* general fix test

* try use last proxy

* avoid use proxy

* remove proxy

* fix setting tests

* fix share and sso test

* fix lint exclude

* fix sso

* fix some process services cloud e2e

* fix sso download

* exclude sso test

* fix cloud

* add logout content service test

* add logout core

* add logout search

* redefine global before all

* separate protracotr method

* try

* try multiple attempt before all

* add prefix group and users

* add prefix group and users

* add prefix group and users

* rexecute sso test

* fix process service visibility e2e

* split SSO login test

* fix SSO download

* fix SSO download

* fix some cloud issues

* fix some cloud issues

* fix some cloud issues

* share file fix cs

* fix cloud test
2019-08-08 17:52:45 +02:00
Eugenio Romano b7b251fe72 Update CODEOWNERS 2019-08-08 12:26:54 +01:00
siva kumar d51e22f9f4 * Fixed theaming issue on the filters* Fixed fixed clear action default value. (#4980) 2019-08-07 20:48:06 +02:00
Denys Vuika e4426e61a0 Revert "allow "npm link" of the tool (#4974)"
This reverts commit e8f179e84d.
2019-08-07 16:00:38 +01:00
Denys Vuika 4c73b8266d Revert "update build cli script"
This reverts commit 08c96b3ff8.
2019-08-07 16:00:32 +01:00
Denys Vuika 08c96b3ff8 update build cli script 2019-08-07 15:28:04 +01:00
davidcanonieto deca68e5b2 [ADF-4795] The form is editable after completing the task in APS (#4979)
* [ADF-4795] Form should not be editable when a task is completed

* add unit test
2019-08-07 16:08:57 +02:00
Denys Vuika e8f179e84d allow "npm link" of the tool (#4974) 2019-08-07 12:05:29 +02:00
davidcanonieto 8adb9b2a25 [ADF-4775] Make date widget compatible with APS1 and APS2 (#4966)
* [ADF-4775] Make date widget compatible with APS1 and APS2

* Refactor and create new cloud widget
2019-08-07 00:40:19 +02:00
Silviu Popa bf828b6389 [ADF-4782] VisibilityConditions - fix chaining conditions (#4971)
* [ADF-4782] VisibilityConditions - fix chaining conditions

* add return types
2019-08-07 00:39:45 +02:00
siva kumar 0bca6607a9 [ADF-4793] The filters don't work on community-edition [ Use local storage for community version ] (#4973)
* * Use local storage for community version.

* * Created a communityModule.

* * Updated unit tests the recent changes

* * Updated documents.

* * Modified process/task filters doc.
2019-08-07 00:37:32 +02:00
davidcanonieto 964e89f6ef [ADF-4788] Fix parsing of process variables from APS2 BE (#4972) 2019-08-07 00:34:04 +02:00
Maurizio Vitale 623b484673 Fix the vulnerabilities (#4975) 2019-08-06 13:03:41 +02:00
Eugenio Romano 3767c5d8de Docs review 3.4.0 2019-08-05 16:59:34 +01:00
Silviu Popa 78e60a4da4 [ADF-4774] - fix visibility condition between checkbox fields (#4964)
* [ADF-4774] - fix visibility condition between checkbox fields

* [ADF-4774] - PR changes
2019-08-02 16:35:09 +02:00
Eugenio Romano 8a96ed2fbe Update ADF packages version 3.4.0-beta15 (#4970) 2019-08-02 16:33:47 +02:00
Silviu Popa 5772c1482e [ADF-4758] - reset form value when field is not visible (#4958)
* [ADF-4758] - reset form value when field is not visible

* [ADF-4758] - fix unit test

* [ADF-4758] - fix unit tests
2019-08-02 16:33:14 +02:00
Eugenio Romano 6ca04ee929 fix script update 2019-08-02 11:52:47 +01:00
m-hulbertandEugenio Romano 3800311197 [ADF-4734] Update docs for preference service in filters (#4969)
* [ADF-4734] Update docs for preference service in filters

* Update docs/process-services-cloud/components/edit-process-filter-cloud.component.md

Co-Authored-By: Eugenio Romano <eromano@users.noreply.github.com>

* Update docs/process-services-cloud/components/edit-task-filter-cloud.component.md

Co-Authored-By: Eugenio Romano <eromano@users.noreply.github.com>
2019-08-01 17:58:34 +02:00
Silviu Popa ba11019e11 [ADF-4760] - fix task form completion with a header field (#4965)
* [ADF-4760] - fix task completion form with header

* [ADF-4760] - PR changes
2019-08-01 15:36:47 +02:00
Eugenio Romano e334a5a179 use valid js-api version 2019-08-01 14:36:17 +01:00
Maurizio Vitale cd6eea02d0 Translate the 3.4 keys (#4967) 2019-07-31 15:35:37 +01:00
Maurizio Vitale b09f4b378f Expose a kubectl command to delete pods (#4968) 2019-07-31 15:21:47 +01:00
mcchrys 795bdda4e4 [ADF-4572] Display value widget display issue when it has no value (#4943)
* [ADF-4572] Display value widget display issue  when it has no value
* Added readonly type to form-render

* Added unit test case

* * Fixed ee test

* * Updating tests to return textWidget for display value

* * Making changes to displayValueWidget css selector

* * Updated case to check display value from api
2019-07-26 14:27:03 +01:00
davidcanonieto 479416861f [ADF-4650] Fix and refactor amount, date and date-time widgets (#4957)
* [ADF-4650] Fix and refactor amount, date and date-time widgets

* fix e2e tests

* Fix people cloud test

* Fix e2e date test

* fix lint
2019-07-26 14:01:00 +02:00
Maurizio Vitale 624ca9f0ae Improve the regexp to cover corner cases (#4960) 2019-07-26 13:58:37 +02:00
Vito bb80d2b6d9 [ADF-4753] - fixed calling for standalone task (#4952)
* [ADF-4753] - fixed calling for standalone task

* [ADF-4753] added unit test

* [ADF-4753] added unit test

* [ADF-4753] improved unit tests

* [ADF-4753] - removed extra parameter not needed
2019-07-26 12:23:27 +01:00
siva kumar 05e73a8aa1 [ADF-4755][CardViewDate&SelectItemComponent] Provide a way to reset date and none option as default. (#4955)
* [ADF-4755] [CardViewDateItemComponent] Provide a way to reset date.

* Added clear icon to reset date to empty.
* Added Translation key to the new icon.

* * Added displayClearAction flag to toggle clear action.* Added None as default for the selectItem components.* Added displayNoneOption flag to toggle the default none option.

* * Fixed comments.

* * Added translation key for 'none'  option.

* * Updated dateItem css to the match recent changes.

* * Fixed failing unit tests* Updated TaskHeader components with the displayClearAction.

* * Updated demo shell card-view component to test the latest changes
2019-07-26 12:22:45 +01:00
maurizio vitale 525f0a06db Use the adf-extensions as reference for latest alpha 2019-07-23 15:31:20 +01:00
Maurizio Vitale 233d388c07 adf-cli - New command update-commit-sha (#4951)
* Add a new command update-commit-sha that update the package.json with the latest commit. This is useful for the UI apps to track the latest commit sha of the released version

* fix typo
2019-07-23 15:13:08 +01:00
Maurizio Vitale fddd519116 Add the update version command to the adf-cli (#4956) 2019-07-23 11:46:24 +01:00
Geeta Mandakini Ayyalasomayajula 994cd791a3 added back the missing candidatebaseapp (#4953) 2019-07-22 18:45:57 +02:00
Maurizio Vitale b82d73602e k8s use a variable as serviceName (#4950) 2019-07-22 12:33:01 +02:00
Eugenio Romano c9cf51a1f6 update project script possible different JS-API (#4949) 2019-07-20 20:47:16 +02:00
mcchrys 1064b71308 [ADF-4684] Content Metadata Card dates should be localised (#4944)
* [ADF-4684] Content Metadata Card dates should be localised

* Passed locale param in datePipe
* Set default locale value in card-view-dateitem model
* Updated property locale in card-view-dateitem component on change in language

* * Added test case

* * Added unit test case

* * Removing locale arg from datepipe
2019-07-19 18:50:53 +02:00
Geeta Mandakini Ayyalasomayajula fc58f1a483 added the rightclick method to DataTableComponentPage (#4948) 2019-07-19 18:29:49 +02:00
davidcanonieto c98687d6f0 [ADF-4754] Fix Date Widget display value (#4945) 2019-07-19 13:51:10 +02:00
Eugenio Romano 1108e2e77a fix regression pagiantion document list 2019-07-18 13:02:45 +01:00
davidcanonieto a0d4160c11 [ADF-4713] Add new DecimalNumber Pipe to transform and localize numbers (#4926)
* [ADF-4713] Add new DecimalNumber Pipe to transform and localize numbers

* Unsubscribe from userPreference service

* Make Pipe impure

* Add documentation in localization page
2019-07-18 12:09:50 +02:00
Geeta Mandakini Ayyalasomayajula 8ee5cd1908 Add rightclick method to browseractions (#4942)
* added right click method to browseractions

* added rightclickrowbyindex method to DataTableComponentPage

* updated row locator

* removed the rightclick from here
2019-07-18 11:54:15 +02:00
Geeta Mandakini Ayyalasomayajula 715d3b13cc [ADF-4716][ADF-3247] Tests for checking saved date format (#4935)
* e2e tests for saving the date format fine and checking that still able to save the dynamic table with non-required DateTime field.

* remove empty line spaces.
2019-07-16 17:20:35 +01:00
Geeta Mandakini Ayyalasomayajula 677de028a2 [ADF-4682]The Date is not saved correctly on Process-services form (#4940)
* test added to check the date saved in the process form in APS1

* C261039 e2e test added.
2019-07-16 16:57:59 +01:00
Denys Vuika 1abb9bfc89 [ADF-4745] memory leak fixes (#4931)
* fix app-layout component

* fix card-view component

* fix cloud-layout service

* code fixes

* code fixes

* even more fixes

* even more fixes

* lint fixes

* test fixes

* fix code

* remove useless pipes

* fix code owners

* enable spellcheck for cloud components

* update test

* update test
2019-07-16 15:56:00 +01:00
Eugenio Romano e2311ab045 fix simpleapp and check-activiti script 2019-07-16 15:47:57 +01:00
Maurizio Vitale 7791205077 [ADF-4733] AdfCli - Kubectl-image add option to install the kubectl (#4941)
* add the npm install kubectl option

* fix tslint

* add docs
2019-07-16 12:49:01 +01:00
Silviu Popa 601f975485 [ADF-4590] - Mark StartTaskCloudService as deprecated (#4936)
* [ADF-4590] - Make StartTaskCloud deprecated

* [ADF-4590] - lint

* fix build errors

* remove unnecesarry file
2019-07-16 11:52:00 +01:00
siva kumar 8d2229cf99 [ADF-4731] [Process - Cloud] - Improve IdentityUserService (#4924)
* [ADF-4731][Process - Cloud] - Improve IdentityUserService.

* * Updated unit tests.

* * Updated IdentityUserService document
* Fixed comments on the pr.

* * Added missing 'createdTimestamp' property to the IdentityUserModel.

* * Created IdentityJoinGroupRequestModel. * Updated doc. * Updated unit tests.
2019-07-15 19:28:07 +01:00
cristinaj 0226a7a3bd Change the old VisibilityCondition format with the new one (#4934) 2019-07-15 19:24:57 +01:00
Geeta Mandakini Ayyalasomayajula 76c938800f [ADF-4480] Viewer shows endless spinner for unsupported files (#4937)
* added asserting for the unsupported format file message.

* removing return statement

* removing return statement
2019-07-15 19:18:06 +01:00
Eugenio Romano 6b0fe7b6b9 fix cs document list unit test spy (#4933) 2019-07-15 13:10:33 +01:00
Maurizio Vitale 34aafa918c AdfCli - Add the kubectl-image to the adf-cli (#4932)
* Add the kubectl-image to the adf-cli

* fix ts lint

* remove the " from the image name
2019-07-15 11:16:35 +01:00
Marouan Bentaleb 6b84ecf47c [ADF-3993] Automation for Start Task - Group Cloud (#4879) 2019-07-14 13:26:09 +01:00
Geeta Mandakini Ayyalasomayajula db0a7842a8 [ADF-4699] Forms to be used or not used in Standalone tasks (#4886)
* e2e test for ADF-4699 - Allow a form to be used (or not used) in standalone tasks

* e2e test for ADF-4699 - Allow a form to be used (or not used) in standalone tasks

* test enhancements

* replacing the app with forms with standAlone flag in the json.
2019-07-14 13:11:18 +01:00
cristinaj 48097c4d2a [ADF-4471]Reload task header after claim/unclaim (#4875)
* Reload task header
2019-07-13 16:29:51 +01:00
Silviu Popa 6cedc59fdf [ADF-4590] TaskCloud - refractor StartTask (#4761)
* [ADF-4590] - refractor task-cloud service

* [ADF-4590] - change unit tests

* [ADF-4590] - fix unit tests

* [ADF-4590] - add return type, remove unnecesary unit test

* [ADF-4590] - fix lint

* [ADF-4590] - PR changes
2019-07-13 16:24:16 +01:00
Eugenio Romano 5703c45ad8 [ADF-4259] ClientId shouldn't be in the config file (#4930)
* add delete users missing in ps cloud e2e

* clientId use config param

* Update test.config.js
2019-07-13 16:16:40 +01:00
Silviu Popa 098577f6e5 [ADF-4735] - Automation for visiblity condition on APS1 (#4920)
* [ADF-4735] - Automation for visiblity condition on APS1

* [ADF-4735] - remove unused class and change click actions method

* [ADF-4735] - PR changes

* [ADF-4735] - PR changes

* ceck undefined smart build
2019-07-13 16:16:15 +01:00
Eugenio Romano 123e9b2c77 fix smart build script 2019-07-13 11:49:16 +01:00
arditdomi dc450a3af2 [ADF-4480] Change Viewer behaviour when opening unsupported files (#4922)
* [ADF-4480] Change Viewer behaviour when opening unsuported files

* [ADF-4480] Fix identations

* [ADF-4480] Make timeout of rendition retry constant
2019-07-13 11:35:21 +01:00
Eugenio Romano 18ed4e3c1d add delete users missing in ps cloud e2e 2019-07-12 16:21:47 +01:00
Eugenio Romano b28a53afe7 Ban xit and xdescribe use in the future (#4923)
* remove xit test and ban xit and xdescribe use in the future

* remove xit test and ban xit and xdescribe use in the future

* remove test excluded

* remove consecutive blank line
2019-07-12 15:04:53 +01:00
davidcanonieto 07213fac3a [ADF-4650] Fix RTL view for form validation icon (#4927) 2019-07-12 14:00:04 +01:00
Denys Vuika a37f935c05 [ADF-4647] download service (#4836)
* split download api into separate service

* move tests and fix code

* break dependency for thumbnail service

* update tests

* test fixes

* fix code

* fix unit tests
2019-07-12 13:58:47 +01:00
Eugenio Romano d0d1154f84 add workspace in automatic update 2019-07-12 12:55:56 +01:00
Eugenio Romano b894599cf9 Update ADF packages version 3.4.0-beta8 (#4925) 2019-07-12 12:30:22 +01:00
Eugenio Romano 3f14b5ac42 add sleep process-service cloud dropdown e2e for eventual consistency 2019-07-12 10:55:17 +01:00
Eugenio Romano 5ce06d80cb remove wrong use of get in translation service 2019-07-11 19:50:03 +01:00
Cilibiu Bogdan ccdcba8778 [ADF-4424] Pdf Viewer - password dialog does not close when pressing Escape (#4622)
* return to previous page on close

* update e2e

* [ADF-4424] Improve PreviousRouteService to use it in pdfViewer

* change previous Url logic

* remove navigation logic

* remove test

* Update pdfViewer.component.spec.ts

* back button logic for viewer outlet

* unit tests

* remove fdescribe

* remove unused service

* e2e

* return to location

* remove click filter step

* remove unnecessary test steps

* remove un existen export

* unify preview between PS and CS in demo shell

* fix dispalyname property
2019-07-11 17:33:15 +01:00
Silviu Popa 72b3a75a85 [ADF-4710] - adapt visibility condition to the new schema (#4884)
* [ADF-4710] - adapt new visibility condition schema

* [ADF-4710] - fix unit tests

* [ADF-4710] - support visibility for APS1 and APS2
2019-07-11 17:07:26 +01:00
Geeta Mandakini Ayyalasomayajula ffd4413335 restore content directive e2e tests (#4915)
* e2e tests for restore content directive

* e2e tests for restore content directive

* e2e tests for restore content directive

* changed the method for restore icon to check for display rather than enabled.

* test enhancements

* removed empty folder test as irrelevant.

* added test for restore of Site or Library

* test enhancements

* test enhancements
2019-07-11 16:33:02 +01:00
Denys Vuika 4185bf8083 [ADF-4737] local fonts and favicon fix (#4921)
* offline fonts

* fix missing favicon
2019-07-11 16:26:38 +01:00
Eugenio Romano 10587dd842 Refactor e2e PS-Cloud and add sleep before query (#4919)
* add sleep before query process service and refactor resources process name

* fix spell problem and increase size build check core
2019-07-11 16:25:26 +01:00
Eugenio Romano 79a95ecd5d use instant pipe translate in demo shell error message 2019-07-11 16:24:18 +01:00
Eugenio Romano 0c2f9aefbd Update package.json 2019-07-11 12:20:37 +01:00
Eugenio Romano 7a70e88ae3 Clean pdf viewer unit (#4916)
* fix unit test pdf viewer

* add more clean unit test core

* add more clean unit test core

* Delete license-info-3.3.0.md
2019-07-10 20:03:05 +01:00
Eugenio Romano 3d336bf9bd Update layout-container.component.scss 2019-07-10 20:01:18 +01:00
Eugenio Romano d3021a1cc8 Update layout-container.component.scss 2019-07-10 19:36:50 +01:00
Maurizio Vitale d1a48a015d Fix typo on docker -f command (#4918) 2019-07-10 18:44:23 +01:00
Maurizio Vitale 05baabb8f5 Add basic readme to run the docker publish with or without login (#4917)
add the tag to the docker image
publish the docker image
clean the docker image
2019-07-10 18:07:22 +01:00
Maurizio Vitale a6e18e6c1b [ADF-4733] Create an adf-cli dispatcher to run the docker-publish (#4914)
* Create an adf-cli dispatcher to run the docker-publish

* not needed

* fix typo comma

* Create the adf-cli dist folder that contains
-bin
-script
-package.json

Build the dist folder during the ADF CI/CI pipeline
2019-07-10 15:06:35 +01:00
Geeta Mandakini Ayyalasomayajula fadcc19eba e2e tests for favourite directive (#4912)
* in progress - favourite directive e2e tests

* in progress - favourite directive e2e tests

* favourite directive e2e tests

* update testcase name

* updated test case names

* remove unnecessary line spaces

* refactored favourites to favorites
2019-07-10 09:56:28 +01:00
Suzana Dirla bbe22fd2a7 [ADF-4732] ellipsis fix (#4913)
allow folder names from breadcrumb to shrink when path is too long to fit the screen
2019-07-10 09:49:13 +01:00
Geeta Mandakini Ayyalasomayajula 65dc1a5c31 Test cases for Edit Folder Directive (#4910)
* added tests for Edit Folder Directive

* added tests for Copy and Move actions on no permission folder.

* moved the checkDisabled function to BrowserActions to make it reusable.

* updated method name
2019-07-09 15:30:37 +01:00
davidcanonieto c151d4535c [ADF-4682] Fix displayed date in date time and date widget (#4911) 2019-07-09 15:29:38 +01:00
dhrn cdc39759ca [ADF-4716] Dynamic Table not working properly (regression) (#4896)
* [ADF-4716] Dynamic Table not working properly (regression)
[ADF-4722] Wrong date is displayed when updating row of dynamic table
* removing dynamic table date added

* * fix e2e
2019-07-09 11:40:27 +01:00
Marouan Bentaleb 080eef891b Changes required to adf-testing (#4904) 2019-07-09 11:38:48 +01:00
Eugenio Romano d9a251a0c8 Clean unit test in login component and site (#4908)
* sanatize login style

* remove unusefull test in site api
2019-07-08 16:54:34 +01:00
mcchrys abc376ff33 [ADF-4711] User Preferences in Task Filter (#4891)
* [ADF-4711] User Preferences in Task Filter
2019-07-08 16:29:47 +01:00
Maurizio Vitale 3af702f58e Read the versions.json from the relative path (#4909) 2019-07-08 16:27:42 +01:00
Silviu Popa bd24105036 [ADF-4720] FormFieldModel fix error when has no variables (#4892)
* [ADF-4720] - prevent FormFieldModel crash

* [ADF-4720] - add unit test
2019-07-08 11:07:08 +01:00
Geeta Mandakini Ayyalasomayajula cae73e3c02 [C310199][C310142]- empty form , required data and invalid form data validations (#4900)
* C310199, C310142, empty form validations, Form validations with required field and invalid data.Added a new form to candidatebaseapp, 'FormToTestValidations'

* using BrowserActions
2019-07-08 11:03:22 +01:00
Geeta Mandakini Ayyalasomayajula 939277366f Dev gmandakini automate actionmenu for rows (#4905)
* removing hte test as iti s duplicated. The same tests exist under e2e/content-services/document-list/document-list-actions.e2e.ts

* C260127 - Move - Destination picker search, test for content highlighted

* C260128 - Move same name file test added

* test name updated

* C260134 - Move Folder with subfolder and file within it, test added

* formatting

* C260135 - Move same name folder - test added

* C260131 - Copy - Destination picker search, search text highlighted in the results in the Copy dialog.

* C260129, C260136 - Tests for Copy same name file and same name folder added

* added tests for Copy and Move actions on no permission folder.

* added tests for Copy and Move actions on no permission folder.
2019-07-08 10:26:03 +01:00
Eugenio Romano cf761ba0b2 Cleaning test IMG viewer component (#4906)
* promote use setupTestbed

* fix sanatize transform img

* fix sanatize transform img
2019-07-08 10:21:48 +01:00
Suzana Dirla a4fc53a742 [ADF-4708] fileSize header is now left aligned with bottom cells (#4902) 2019-07-05 14:52:39 +01:00
siva kumar b88888b5e4 [ADF-4614] User preferences in process filters (#4889)
* * Created UserPreferenceCloudService.

* * Refactored processfiltercloud service.
* Refactored user-preferncecloud service.
* Added unit tests to the services.

* * Updated unit tests
* FIxed Synx problem.

* * Fixed edit-filter error.

* * Fixed failing edit-process-filter unit test.

* * Added comments in processfilter/prefernces services.

* * Fixed memory leak* Added a spinner in the edit-process-filter component

* * Fixed comments.

* * Removed unnecessary filter property
2019-07-05 11:52:36 +01:00
Geeta Mandakini Ayyalasomayajula 10673ef6f6 [C297472] Should be able to see selected tasks (#4899)
* update

* automated => C297472 see selected rows list and task names when multiselect and testing mode toggle are on.

* automated => C297472 see selected rows list and task names when multiselect and testing mode toggle are on.

* Delete package-lock.json

* updates
2019-07-05 11:47:35 +01:00
Marouan Bentaleb 5ed570b36f Changes required to adf-testing (#4901) 2019-07-05 11:46:46 +01:00
Marouan Bentaleb a580b6eb15 Changes required to adf-testing (#4898) 2019-07-04 13:21:51 +01:00
Eugenio Romano 085e1a9dfa clean unit tests core part 2 (#4897)
* promote use setupTestbed

* fix context menu unit test

* fix sidebar warning unit test

* fix spy people widget

* fix ISO warning date time widget

* fix sidebar spy 404 url

* minor karma fix import pdf.js map

* restore md

* revert extension change
2019-07-03 22:42:00 +01:00
Denys Vuika c9b7722bd0 fix css class name typo (#4895)
* fix css class name typo

* fix more typos
2019-07-03 12:08:12 +01:00
Suzana Dirla a13196a836 [ADF-4715][ADF-4717] fix process-filter-results random failing tests (#4888)
* [ADF-4715] a process never has CREATED status

* [ADF-4717] clean up in afterAll

* check mediumDate format

* check mediumDate format

* show more log data

* Revert "show more log data"

This reverts commit a19c629
2019-07-03 09:48:14 +01:00
davidcanonieto e03799e038 [ADF-4721] Fix Material Datetime Picker date format (#4893) 2019-07-02 22:05:11 +01:00
Geeta Mandakini Ayyalasomayajula 4d0c98d753 [ADF-4697] attach content to processcloudtaskform using upload widget (#4882)
* automated upload local and content file from task from upload widget.

* automated upload local and content file from task from upload widget.

* reverting the git ignore change

* updated the app with the new process definition using the form with upload widgets

* Save error screenshot

* creating the processes through api call rather than through ui. and added -log to watch the travis build on process-cloud

* creating the processes through api call rather than through ui. and added -log to watch the travis build on process-cloud

* removed the wait till clickable, as not relevant here.

* Update process-services-cloud-e2e.sh
2019-07-02 22:00:14 +01:00
Eugenio Romano 0d6140be77 clean unit test (#4890)
* promote use setupTestbed

* fix comment using right spy and remove deprecated moment method usage

* restore md icon file

* remove error translation log

* restore extension test
2019-07-02 16:00:58 +01:00
Suzana Dirla 87b80235a7 [ADF-4701] Upgrade angular libs (#4877)
* [ADF-4701] Upgrade angular material to 7.3.7 version

* [ADF-4701] upgrade angular libs

* [ADF-4701] upgrade angular libs

* [ADF-4530] temporary disable test

- will be fixed in a separate PR for https://issues.alfresco.com/jira/browse/ADF-4704
- the 'expected behavior' of the ADF-4530 corresponding bug is that should display 'all the available Process Definitions defined in the app'

* e2e test does not need bpm user

* e2e FIX waitUntilElementIsClickable

* Revert "e2e test does not need bpm user"

This reverts commit 9a5c4d4 - Travis seems to need initial code

* e2e fix button selector

- caused TimeoutError: Element is not Clickable

* e2e scroll into view fix

* e2e fixes scroll into view & selectors

* e2e fixed close action menu

- close menu with all disabled items fix - opened related issue https://issues.alfresco.com/jira/browse/ADF-4712
- checkContextActionIsVisible should check only visibility - all items might be disabled, so un-clickable
- close menu changed bcs. overlay backdrop caused TimeoutError: Element is not Clickable

* e2e disabled button is not supposed to be clickable

- fixed TimeoutError: Element is not Clickable

* e2e update messages

* e2e check invisibilityOf item

* e2e extra filter

* e2e wait waitTillContentLoaded

- created related issue https://issues.alfresco.com/jira/browse/ADF-4715

* [ADF-4715] a process never has CREATED status

* [ADF-4717] wait for filtered content to be loaded

- initiator filter must have 'username' value
2019-07-02 12:07:15 +01:00
Eugenio Romano 028916e386 Fix user info unit test (#4887)
* fix unit test user info component

* fix unit test user info component

* replace download call with spy

* fix karma conf
2019-07-01 11:35:27 +01:00
Silviu Popa 43f08441cd [ADF-4705] - Automate forms checkbox widget (#4881)
* [ADF-4705] - Automate forms checkox widget

* Move methods to a demo-shell page

* Adding 3 new tests
2019-07-01 11:33:34 +01:00
Eugenio Romano 4dccc2a49a fix login unit test to nit emit error in the network (#4885)
* fix login unit test to nit emit error in the network

* fix lint
2019-06-29 10:34:13 +01:00
Geeta Mandakini Ayyalasomayajula 2a2dfbcc42 automated C311280 should pick up default date format from the app configuration (#4883) 2019-06-28 14:44:15 +01:00
cristinaj 5c5bb7f9b7 [ADF-4576]Add new tests for application cloud component (#4873)
* Add a new test

* Revert file

* Fix lint errors

* Add a wait

* fix roles constant uppercase

* fix lint
2019-06-26 19:47:09 +01:00
davidcanonieto 069e4297ea [ADF-4499] Form definition selector should only display standAlone co… (#4880)
* [ADF-4499] Form definition selector should only display standAlone compatible forms

* Improve service method

* fix typo
2019-06-26 13:07:51 +01:00
Eugenio Romano 24714b8a87 codeowners 2019-06-26 10:28:05 +01:00
Eugenio Romano d401018519 codeowners 2019-06-26 10:02:17 +01:00
Denys Vuika f99b943bcb [ADF-4594] e2e configuration to disable animations (#4760)
* e2e environment

* configuration fixes

* update dist configuration

* use e2e configuration on travis
2019-06-26 09:50:50 +01:00
davidcanonieto 5c07d5b3e6 [ADF-4457] StorageService should be independent of AppConfigService (#4712)
* [ADF-4457] StorageService should be independent of AppConfigService

* [ADF-4457] Fix e2e tests

* [ADF-4457] Fix e2e tests

* [ADF-4457] Improve storage service workflow

* Fix linting

* Fix unit tests

* Fix e2e test

* Add missing class to constructor

* Fix e2e test

* Rebase branch

* Improve unit test

* fix test
2019-06-25 16:21:13 +01:00
Eugenio Romano 90c403ae9e [ADF-4707] add properties in node selector search (#4878)
* add properties in node selector search

* fix test
2019-06-25 15:37:24 +01:00
Geeta Mandakini Ayyalasomayajula d531a022d0 [ADF-4026] - automate process filter results check (#4874)
* process-filter-results test automated

* updated the test case numbers

* fix test

* fix test

* added wait for the datatable to load

* fixes

* created another process instance in simpleApp by anotherUser, to test the negative scenario's in filtering.

* created another process instance in simpleApp by anotherUser, to test the negative scenario's in filtering.

* delete both the users created.
2019-06-25 14:44:30 +01:00
Eugenio Romano 72eab9e84d fix script 2019-06-25 13:00:05 +01:00
Marouan Bentaleb 31d98fc368 [ADF-4515] Removing duplicated test and moving other test to the right spec (#4872) 2019-06-24 17:43:33 +01:00
Suzana Dirla 317ae3db68 [ADF-4696] Display name on metadata card (#4870)
* [ADF-4696] Display names on content metadata

* [ADF-4696] unit test
2019-06-24 17:39:06 +01:00
Geeta Mandakini Ayyalasomayajula be234f227f [ADF-4448] Automate Start and Save a task with a form. (#4876)
* automated Start and save a task with a form.

* crc's

* test title updated

* test title updated

* start process with start event form automated

* moved the expect statements to the tests.

* fix circular dependency

* deleting the standalonetask in afterAll

* split the tests for better readability

* split the tests for better readability
2019-06-24 17:36:02 +01:00
Geeta Mandakini Ayyalasomayajula 938286671d test enabled (#4871) 2019-06-20 14:25:46 +01:00
davidcanonieto 685404432a Add typeahead unit test for start process cloud component (#4869) 2019-06-20 14:06:01 +01:00
Marouan Bentaleb 82d6ebd763 [ADF-4593] Fixing skipped tests in Start Task Cloud (#4868) 2019-06-20 12:33:46 +01:00
Eugenio Romano f861b94de4 [Staging-branch] 3.4.0 (#4839)
* next 3.4.0

* next 3.4.0

* [ADF-4426] Move CSS overrides from ACA to ADF - 2nd round (#4837)

* [ADF-4426] align toolbar icon color with design

* [ADF-4426] clean-up style - it is never applied

* [ADF-4426] display title for name location cell - useful for long names

* [ADF-4426] move content-node-selector cell fix from ACA

- fixes https://github.com/Alfresco/alfresco-ng2-components/issues/4686

* [ADF-4426] move content-node-selector cell fix from ACA

- fixes https://github.com/Alfresco/alfresco-ng2-components/issues/4686

* [ADF-4426] move image width fix from ACA

* [ADF-4426] allow more customization of data-table borders

* [ADF-4426] move fix from ACA

[ACA-2363] fixes issue with text being visible underneath the info drawer

* [ADF-4426] get adf-datatable-link style from ACA

* [ADF-4426] allow set of DL selected row icon color

* [ADF-4426] allow more document list customization

- code moved from ACA
- more css variables
- removed non used and duplicated outline styles
- some code clean-up...

* [ADF-4635] The Status drop-down is looking different for Processes than for Tasks (#4822)
2019-06-20 12:32:41 +01:00
Eugenio Romano 5e0f715bac 3.3.0 update (#4867)
* * Added content-services as peer dependency into process-cloud-services (#4863)

* updated translation files 3.3.0

* fix form variables

* fix test
2019-06-19 14:19:21 +01:00
Eugenio Romano f063d94316 fix test 2019-06-19 13:16:50 +01:00
Eugenio Romano bb322bb5ed fix form variables 2019-06-19 12:23:31 +01:00
Eugenio Romano c5739ff435 updated translation files 3.3.0 2019-06-19 11:01:50 +01:00
siva kumar 55581d2e09 * Added content-services as peer dependency into process-cloud-services (#4865) 2019-06-19 10:27:05 +01:00
siva kumar 45af7ca88d * Added content-services as peer dependency into process-cloud-services (#4863) 2019-06-19 10:26:56 +01:00
Eugenio Romano 09c62d5046 Release 3.3.0 2019-06-18 21:35:58 +01:00
siva kumar 957a76b1b5 [ADF-4519] Attach an ACS content to a form (#4842)
* * Process-storage

* * Used jsapiServcie

* Be able to upload a file on the content with the createNode api

* Refactor

* [ADF-4519] Attach an ACS content to a form.

* * Created attachfile-cloud-widget component

* * Created a component to attach an acs content to a form.

* * Added unit tests

* * Removed unused methods* FIxed tslint errors.

* * Reverted demo shell changes.

* * Removed unnecessary methods

* * Fixed at able to remove attached file

* * After rebase.

* * Removed tempFile and currentFile properties.* Refactored attach-file-cloud-widget.

* Update upload-cloud.widget.html

* fix

* Fixed readonly form
2019-06-18 18:54:33 +01:00
m-hulbert 3d4ea197ee [ADF-4656] Release note for 3.3.0 (#4861) 2019-06-18 18:53:33 +01:00
Eugenio Romano fac04a9707 add logs 2019-06-18 18:35:20 +01:00
Eugenio Romano f934aa306b restore install 2019-06-18 16:26:34 +01:00
davidcanonieto 25446b5ba3 [ADF-4680] Add documentation for dateValues in app.config.json (#4859)
* [ADF-4680] Add documentation for dateValues in app.config.json

* Improve English

* Create new localization file

* Update localized-date.pipe.md

* Update card-view-datetimeitem.model.ts

* Update localized-date.pipe.md
2019-06-18 15:17:48 +01:00
Francesco Corti e64eee90af [ADF-4656] Release note for ADF 3.3 in draft. (#4857)
* [ADF-4658] Release note for ADF 3.3.

* License info update.

* Version index issue.

* release note
2019-06-18 10:01:52 +01:00
Eugenio Romano d6c3373298 fix names config e2e cloud 2019-06-17 21:17:47 +01:00
Alexa Fabian 725cf22956 'Testing' Moved Upload Actions to shared testing package (#4616)
* 'Testing' Moved Upload Actions to shared testing package

* Updated Upload Actionswith suggested changes

* Failing tests updated

* Resolving merge conflicts

* updating latest merge conflicts

* resolved merge conflicts

* update to fix previous issues with this.

* testing changes

* fix for failed travis test

* updates to fix failing travis test

* fixes file path error

* latest fix for failing travis test

* latest fix for failing travis test

* Fixing undefined rootPath

* fixes timing issues in content-services travis test

* resolves requested changes
2019-06-17 15:07:25 +01:00
davidcanonieto 5f1caca5da [ADF-4677] Make time ago use Angular Date formats (#4856) 2019-06-17 14:16:48 +01:00
Eugenio Romano 73b871a233 fix deploy pr script 2019-06-17 14:15:55 +01:00
Eugenio Romano f8fcb6395d update script correct directory 2019-06-17 11:53:53 +01:00
Eugenio Romano 5589120ed7 [ADF-4657] Upgrade Guide (#4855)
* fix documentation missing params

* fix index

* fix aftere release

* fix aftere review

* upgrade guide from 3.2.0 to 3.3.0

* upgrade guide from 3.2.0 to 3.3.0
2019-06-17 11:46:28 +01:00
Eugenio Romano 64a5a98dc6 [ADF-4658] Compatibility matrix 3.3.0 (#4854)
* fix documentation missing params

* fix index

* fix aftere release

* fix aftere review

* compatibility matric 3.3.0
2019-06-17 10:22:43 +01:00
Maurizio Vitale f84db2216b Add the default validation array (#4852) 2019-06-14 18:07:21 +01:00
davidcanonieto 334ebd1256 [ADF-4338] Add locale to CardViewDateItemModel and improve logic of LocalizedDat… (#4845)
* Add locale to CardViewDateItemModel and improve logic of LocalizedDatePipe

* Fix e2e tests

* Fix e2e tests

* Fix C305010 test
2019-06-14 17:26:08 +01:00
Eugenio Romano e03290d26c Review doc 3.3.0 (#4851)
* fix documentation missing params

* fix index

* fix aftere release

* fix aftere review
2019-06-14 17:06:52 +01:00
arditdomi 33089a452f Change incorrect e2e test id (#4853) 2019-06-14 17:06:05 +01:00
Eugenio Romano f47cebc0a4 [ADF-4665] [ADF] - Application is refreshed when you have two instances of application opened (#4849)
* refactoring getValueFromToken and fix user token refresh

* refactoring getValueFromToken and fix user token refresh

* refactoring getValueFromToken and fix user token refres

* fix unit test
2019-06-14 16:02:12 +01:00
Eugenio Romano 4733bc7d3b add Vulnerability info 2019-06-14 15:57:53 +01:00
Eugenio Romano c0d1f74d57 license info 3.3.0 2019-06-14 15:43:54 +01:00
Eugenio Romano bd568008f8 fix pagination RTL 2019-06-14 14:39:36 +01:00
Eugenio Romano e578e5dc14 minor fix style demo shell process file list 2019-06-14 13:30:05 +01:00
Eugenio Romano b1e7a594b8 fix flaky test 2019-06-14 13:19:26 +01:00
arditdomi 5f8976004e About component, Add missing Content Services URL label (#4850) 2019-06-14 11:43:52 +01:00
Eugenio Romano c34205d863 Update package.json 2019-06-14 10:09:28 +01:00
Cilibiu Bogdan 4603cef19e [ADF-4667] Document list - sorting icon RTL fix (#4848)
* sorting icon RTL fix

* single quotes over double quotes

* overspecify position
2019-06-14 10:04:59 +01:00
Maurizio Vitale 819ed9ae6a Fix start process form (#4847) 2019-06-13 18:21:33 +01:00
davidcanonieto c44c2eae77 Fix Start Process Cloud Layout (#4846) 2019-06-13 16:41:37 +01:00
Maurizio Vitale 88c04ad7b8 Fix issue (#4844) 2019-06-13 13:50:27 +01:00
Eugenio Romano d43274f891 remove unused general dependency 2019-06-13 13:46:18 +01:00
Eugenio Romano 6d2f2030fe fix license script old licenses array 2019-06-13 11:24:40 +01:00
Geeta Mandakini Ayyalasomayajula ab3bb9002f [ADF-4288] -Sort Process Custom filters (#4826)
* Update data-table-component.page.ts

* new pr

* fix error - sortOrder.toLowerCase is not a function

* new pr

* new process definition added

* taking the development branch changes
2019-06-13 11:04:46 +01:00
Geeta Mandakini Ayyalasomayajula 626bb01bf7 [ADF-4488] - FormCloud - Should be able to render a dropdown with a RestService bind (#4834)
* new test file

* fix failures, passing string instead of boolean flag.

* ADF-4488 - FormCloud - Not able to render a dropdown with a RestService bind

* ADF-4488 - FormCloud - Not able to render a dropdown with a RestService bind

* added await for entry of undefined error

* added missing async for the tests.

* changed location

* changed locatioremoved unnecessary async

* moved the locators to task-form-cloud-component page

* removed the taskDetailsCloudPage as is unnecessary and getting the assertions from taskHeaderCloudPage.

* fiv circular dependency

* fix circular dependency
2019-06-12 20:21:03 +01:00
Eugenio Romano b04b717296 [ADF-4651] fix task form cloud (#4843)
* fix task form cloud

* fix form
2019-06-12 20:16:04 +01:00
Eugenio Romano ecb8410d1b fix pr deploy script 2019-06-12 18:01:13 +01:00
Denys Vuika f64cd9cffd [ADF-4640] share dialog fixes (#4830)
* unshare fixes and error notifications

* fix disabled toggles issue

* code fixes and separate interface

* remove 'isFavorite' include

* safety checks for properties

* update e2e

* refactor test after functionality change

* fix issue with the missing properties

* safety checks
2019-06-12 17:21:23 +01:00
Eugenio Romano 3a2cfb3626 fix date localization (#4841) 2019-06-12 16:16:00 +01:00
Maurizio Vitale 63f00e21cf [ADF-4468] FormCloud - Be able to display the value of a form variables (#4676)
* Fix the value passed as processDefinition
Be sure we fetch the form variables

* * Rename formId to formKey.

* * Reverted form Changes

* * Fixed failing unit test

* Fix the value passed as processDefinition
Be sure we fetch the form variables

* * Fixed failing unit test

* * Rename formId to formKey.

* * Reverted form Changes

* * Fixed failing unit test

* Fix form representation structure

* Refactor form models

* Change tslint config

* Fix lint

* Refactor form models

* Remove duplicated export

* improve variable names

* Update form mock
2019-06-12 12:50:09 +01:00
Eugenio Romano 051e8df091 fix refresh token sso logout 2019-06-12 12:36:05 +01:00
Eugenio Romano 492aa1e850 fix flaky test upload service 2019-06-12 10:15:33 +01:00
davidcanonieto f42e1a4ada [ADF-4041] Fix preselected user selection on People Cloud Component (#4648)
* [ADF-4041] Fix preselected user selection on People Cloud Component

* [ADF-4041] Fix unit test and add new one

* [ADF-4041] Fix validation of users

* Improve code

* Fix C309677 test
2019-06-11 22:47:06 +01:00
Eugenio Romano 9838d1e5d8 [ADF-4524] Checkbox widget is not displayed on a form on APS1 when having some visibility conditions on it (#4838)
* fix visibbility conditions form

* fix visibbility conditions form
2019-06-11 19:44:29 +01:00
Eugenio Romano 1c412ab15f new translation files (#4840) 2019-06-11 19:44:17 +01:00
Eugenio Romano 924c20d410 remove duplicated column and fix null in checkbox 2019-06-11 17:28:12 +01:00
Mario Romano fb082cdfdc [ACTIVITI-3234] add processInstanceId to save/submit event, change get folder… (#4833)
* [ACTIVITI-3234] add processId to save/submit event, change get folder rest call api

* Update form-cloud.component.md

* lint fix

* [ACTIVITI-3234] fix tests

* [ACTIVITI-3234] fix tests

* Fix rename processId in processInstanceId
2019-06-11 14:30:43 +01:00
Maurizio Vitale 7b191d37eb [ADF-4631] Start Process Cloud - Add the start form as part of a process (#4820)
* Add the start form as part of a process
Ability to pre-fill a form with values
Ability to send variables

* Fix unit test

* remove empty before each
2019-06-11 12:02:26 +01:00
davidcanonieto 7497822a46 [ADF-4342] Create localized pipe and centralize date format (#4813)
* [ADF-4342] Date Format defined in app config

* [ADF-4342] Create localized pipe and centralize date format

* Add unit test for new date pipe

* Add info internationalization docs

* Fix lining

* Fix linting

* Fix date pipe unit test

* [ADF-4342] Add supported language files

* Fix e2e tests
2019-06-11 09:35:35 +01:00
Eugenio Romano 990fa4625b fix ordering e2e failing test (#4825)
* ordering fix use common method in datatable

* ordering fix use common method in datatable

* fix sorting ps e2e

* fix ordering

* move search page in testing and fix sorting boolean flag

* fix import

* fix moment

* use common sort method in document list test

* use common sort method in document list test

* remove unnecesary sort control

* remove duplicate test

* remove e2e suspended removed status

* documentation
2019-06-11 07:34:16 +01:00
davidcanonieto c85df84a01 [ADF-4636][ADF-4137][ADF-4596] Datatable and Assignee bugs (#4832) 2019-06-11 00:35:02 +01:00
mcchrys be35267df3 [ADF-4634] Different statuses should load for Tasks than for Processes (#4819)
* Removed 'Suspended' option from Task Status dropdown
2019-06-11 00:13:52 +01:00
Eugenio Romano cb37254cae [ADF-4637] logout cross tabs event (#4823)
* logout cross tabs event

* fix remove listner

* fix remove listner

* Update auth-guard.service.ts
2019-06-10 19:37:28 +01:00
arditdomi 105a1a2b28 [ADF-4435] Added documentation about task-form buttons (#4831)
* [ADF-4435] Added documentation about task-form buttons

* [ADF-4435] Images of the documentation added don't have the correct dimensions

* [ADF-4435] Resize images

* [ADF-4435] Resize images
2019-06-10 19:31:07 +01:00
Geeta Mandakini Ayyalasomayajula 238fbf3d88 [ADF-4600] Should be able to filter groups based on composite roles (#4775)
* ADF-4600 Should be able to filter groups based on composite roles - automated

* minor fixes

* removed the template literals
2019-06-10 14:59:21 +01:00
loictrichaud 6c08231f33 fix adf-delete directive NodeResult (#4827) 2019-06-10 14:26:49 +01:00
arditdomi 117050decf [ADF-4421] Fix excluded tests (#4829) 2019-06-10 12:47:46 +01:00
arditdomi 4ea656e537 [ADF-4441] Save button should be disabled when form fields are invalid (#4817)
* [ADF-4441] Save button should be disabled when form inputs are invalid, Refactored disable custom outcome buttons unit tests

* [ADF-4441] add missing space

* [ADF-4441] Refactor failing unit tests

* [ADF-4441] Added documentation for disableSaveButton property
2019-06-10 12:01:58 +01:00
Eugenio Romano 3e1092d7bf Update process-custom-filters.e2e.ts 2019-06-10 10:27:50 +01:00
Eugenio Romano da5258edcd Revert "[ADF-4421] Fix excluded tests in task filters (#4721)" (#4824)
This reverts commit 51f0a2da47.
2019-06-07 18:48:41 +01:00
arditdomi 51f0a2da47 [ADF-4421] Fix excluded tests in task filters (#4721) 2019-06-07 16:27:48 +01:00
Eugenio Romano 8a2a71d60b fix build cli 2019-06-07 10:46:27 +01:00
Geeta Mandakini Ayyalasomayajula 7a3e2932bb [ADF-4462] - Should be possible to restore an old version of your file and the document list updated (#4708)
* ADF-4462 automated
2019-06-06 18:20:15 +01:00
Eugenio Romano 5e54cd4d43 Increase timeout and modify login async (#4795)
* increase timeout and modify login async

* run e2e if testing is changed

* improve cdk fix

* fix travis update projects

* disable ghostMode lite server

* lint fix

* fix timeout

* multiple try

* Update content-services-e2e.sh

* Update search-e2e.sh

* Update process-services-e2e.sh

* Update core-e2e.sh

* Update protractor.conf.ts

* fix unit

* remove async

* increqase notification time

* 3 parallel

* dix path issue in save

* small refactor protractor ts

* fix save

* create license check first script adf cli

* modify regex check

* refactor notification history component

* decrease notification

* fix notification message problem

* fix test

* update packages wit high risk

* revert cahnge login sso e2e

* fix dep

* fix documentation duplication and issue

* fix after review

* fix after review

* try 6 parallel test

* back to 3 parallel test no real time improve with 6
2019-06-06 16:47:50 +01:00
Denys Vuika 99f4b07878 [ADF-4496] Share dialog enhancements (#4705)
* raise snackbars on unshare errors

* remove time from datepicker

* update tests

* Update en.json

* code updates as per review

* update docs

* bind datetimepicker type attribute

* set datetimepicker type by configuration or default

* tests

* e2e test

* update docs

* e2e set sharedLinkDateTimePickerType config
2019-06-06 16:32:36 +01:00
cristinaj c3b1300d86 Add test for delete standalone task and cancelled process. (#4809) 2019-06-06 11:26:08 +01:00
Cilibiu Bogdan f18d534f9e update documentation (#4814) 2019-06-06 11:17:22 +01:00
Cilibiu Bogdan cb25979a00 mirror mat icon when direction is rtl (#4815) 2019-06-06 11:13:07 +01:00
Geeta Mandakini Ayyalasomayajula e65e32e0cf Enable tests and add a newly created user to run the tests. (#4796)
* enabled tests and added the new user to run the tests.

* lint fix

* adding a new user and add the user to hr group which will be used when deploying the apps.

* Test commit

* adding a new user and add the user to hr group which will be used when deploying the apps.

* linting fixes

* crc's moved the roles constants to identityService.

* crc's moved the roles constants to identityService.

* wrapped the createIdentityUser and assign Role calls into 1 method and used in the tests.

* wrapped the createIdentityUser and assign Role calls into 1 method and used in the tests.

* Added a method in identityService to pass the required roles to be added in a string array.

* linting fixes

* added the command line arguments to run the e2e tests -identity_admin_email and -identity_admin_password

* added the command line arguments to run the e2e tests -identity_admin_email and -identity_admin_password

* crc's, removed the step to add user to the hr group, as not needed in this test.

* renamed the E2E travis variable to end with identity.

* replaced the candidateuserapp with candidatebaseapp

* replaced candidateuserapp with candidatebaseapp

* replaced candidateuserapp with candidatebaseapp

* replaced candidateuserapp with candidatebaseapp

* timeout wait for the test to pass.

* crc's
2019-06-06 11:12:05 +01:00
Suzana Dirla 3d73e94b5d [ADF-4402] Move component related styles from demo-shell to ADF components (#4808)
* [ADF-4402] remove styling of non-existent items

* [ADF-4402] remove not needed style - bcs overwritten by style from core

* [ADF-4559] remove demo-shell only class from core styling

- use class name from core component for styling

* [ADF-4402] remove not used styling code

- .adf-app-layout-toolbar no longer exists, so no need keep its style

* [ADF-4402] move style from demo-shell to core

- same style was needed in ACA, so probably should be best in core ADF

* [ADF-4402] remove not used styling code

* [ADF-4402] move adf-toolbar-title style from demo-shell to core

* [ADF-4402] remove not used styling code

* [ADF-4402] use existing css class

* [ADF-4402] remove style already set from pagination component

* [ADF-4402] remove not used styling code

* [ADF-4402] viewer toolbar width
2019-06-05 16:01:38 +01:00
Maurizio Vitale 67485daece [ADF-4550] Form Cloud - Be able to upload a file on the content taken from the process-storage (#4807)
* * Process-storage

* * Used jsapiServcie

* Be able to upload a file on the content with the createNode api

* Fix lint

* Refactor

* * Removed needless method.

* Remove useless method

* Add properties type
2019-06-05 15:46:28 +01:00
Cilibiu Bogdan 0684098f60 [ADF-4626] Breadcrumb - directionality styling (#4810)
* direction styling

* remove text align
2019-06-05 15:01:05 +01:00
Cilibiu Bogdan 0cfc5bc1b7 [ADF-4625] Search Input does not respect RTL mode (#4806)
* configurable animation

* bind state attribute to value

* configure animation state based on direction

* update tests

* lint

* direction style
2019-06-04 09:15:44 +01:00
mcchrys 656eeaf017 [ADF-4034] Task list cloud - The Deleted task is changing the Status from "Deleted" in "Canceled" (#4803)
Removed DELETED status
Modified unit test to check recent changes
2019-06-04 09:08:39 +01:00
Geeta Mandakini Ayyalasomayajula 2b05f72a2f [ADF-4577] - Should display the processId when Process Definition has process name missing (#4802)
* updated the Test case in TestRail, basically if there is no process name in the process definition, then in the dropdown the processId is displayed and allows the user to start a process using that.

* updated the simpleapp to have a few more processes definitions which will enable to add new e2e tests.

* linting fixes
2019-06-03 17:19:54 +01:00
Cilibiu Bogdan 148f9830aa fix textOrientation value (#4805) 2019-06-03 17:15:37 +01:00
arditdomi 5392f3d229 [ADF-4527] Fix buttons duplication error in taskFormCloudComponent (#4804) 2019-06-03 17:01:05 +01:00
arditdomi 3d67d9dc75 [ADF-4552][ADF-4482] Social component refactoring, add ability to unRate, added e2e automation (#4749)
* [ADF-4552] Rating component refactoring, add ability to unRate

* [ADF-4552] RTL support added

* [ADF-4552] Improve behaviour and styling structure in RTL languages

* [ADF-4552] Improve behaviour and styling structure in RTL languages

* [ADF-4552] Added refresh rating when the node Id input changes

* [ADF-4552][ADF-4482] Refactor social component, add ability to unrate, add e2e automation

* [ADF-4552][ADF-4482] Added unsibscribe from Observables, added css variables, removed unused class id's

* [ADF-4552][ADF-4482] Improve structure and behaviour of e2e automation tests

* [ADF-4552][ADF-4482] Improve structure and behaviour of e2e automation tests

* [ADF-4552][ADF-4482] fix expected single space

* [ADF-4552][ADF-4482] fix lint check failure

* Fix circular dependency error
2019-06-03 14:27:13 +01:00
davidcanonieto b19646d201 [ADF-4232] Fix filePreviewPage methods to reach expectations (#4668)
* [ADF-4232] Fix filePreviewPage methods to reach expectations

* [ADF-4232] Implement new methods

* Fix word spelling

* [ADF-4232] Fix e2e test and rebase

* Rebase branch

* [ADF-4232] add test for reset zoom check

- remove un-reached expects from filePreviewPage

* [ADF-4232] better naming - review changes

* [ADF-4232] no sleep(s), more timeout

* [ADF-4232] some code clean up

* [ADF-4232] some code clean up

* [ADF-4232] refactoring - renaming

* [ADF-4232] refactoring

* [ADF-4232] refactoring move expects to test - code review changes

* [ADF-4232] remove unused methods

- these already exist on viewerPage.ts

* [ADF-4232] remove duplicated code

- use viewerPage instead of filePreviewPage

* [ADF-4232] reset to original timeout in afterAll
2019-06-03 14:24:53 +01:00
Marouan Bentaleb 7611268bd9 [ADF-4613] Fixing tag-component.e2e.ts (#4793)
* [ADF-4613] Enabling tests

* [ADF-4613] Make tag-component tests more stable
2019-05-31 15:40:06 +01:00
Deepak Paul 7eb9ffe688 [ADF-4546] Visibility conditions for Form variables don't work on Multiline Widget. (#4786)
* * Finding variable values by id & used date format

* * Tests to validate visibility by using id

* * [ADF-4529] Refactor conditions

* [ADF-4529] Fixed cloud form editor script error
2019-05-31 13:58:45 +01:00
Silviu Popa 30c42d17d0 [ADF-4530] StartTaskCloud - fix process definition list for empty names (#4790)
* [ADF-4530] - reset filtered process when value it's empty or invalid

* [ADF-4530] - lint

* [ADF-4530] - fix unit test

* [ADF-4530] StartTaskCloud - fix process definition list for empty names

* [ADF-4530] - lint

* [ADF-4530] - add unit test

* [ADF4530] StartProcess - revert changes

* [ADF-4530] - revert changes
2019-05-31 11:48:19 +01:00
Silviu Popa 6040f59391 [ADF-4461] FormCloud - fix date validations (#4776)
* [ADF-4443] FormCloud - fix date validations

* [ADF-4443] - add save validation

* [ADF-4443] - PR changes

* [ADF-4443] FormCloud - fix date validations

* fix unit tests

* [ADF-4443] - add save validation

* [ADF-4443] - PR changes

* Revert changes on save form

* Revert check form valid on save
2019-05-31 11:44:33 +01:00
Eugenio Romano 8b5038218e Update shareDialog.ts
use the right moment format for share dialog pointer
2019-05-31 10:40:17 +01:00
Deepak Paul f27846ec5b [ADF-4544] Cloud Task From - Refresh the buttons and form after an action is complete (#4726)
* [ADF-4544] Reloaded task on action

* [ADF-4544] Changed routing in demo component

* [ADF-4544] Added tests
2019-05-31 10:07:08 +01:00
Silviu Popa 892172150e [ADF-4586] - fix preselecting value for DropdownCloud (#4747)
* [ADF-4586] - fix preselecting value for DropdownCloud

* ADF-4586] - fix form complete for dropdown and tests

* [ADF-4586] - add FormRenderingService as provider

* [ADF-4586] - fix memory leaks

* [ADF-4586] - add type information

* [ADF-4586] - fix memory leak on dropdown

* [ADF-4589] - PR changes

* [ADF-4586] - fix unit tests

* [ADF-4586] - lint
2019-05-30 18:13:41 +01:00
Eugenio Romano ce60915fd9 Reorg script moving in folders (#4791)
* organize script in folder part 1

* improve test e2e

* fix smart build script

* fix relative path
2019-05-30 17:59:22 +01:00
davidcanonieto cccd95562c Fix pre-commit hook (#4792)
* Fix pre-commit hook

* Remove excluded files from tslint lib config
2019-05-30 17:47:58 +01:00
Eugenio Romano b91a942aa1 Multiple option env file (#4788)
* multi configuration file enabling

* improve ignore

* update i18n tool dep

* update webbpack bundle analyzer version

* fix ps cloud test wait setting

* fix script content

* remove use of testconfig for browser options

* convert protractor to ts

* download browser util fix
2019-05-30 11:15:15 +01:00
Cilibiu Bogdan 9aafb80483 [ADF-4601] DemoShell - Side navigation RTL support (#4768)
* rtl support

* fix lint

* Run e2e in case demoshell has been changed

* Skip file

* Skip file

* remove demoshell directive

* refactor side navigation

* remove env.cloud file

* class name selectors

* side navigation selectors

* fix clickMenuButton selector

* nested menu element context

* fix notification navigation selector
2019-05-29 20:02:15 +01:00
Cilibiu Bogdan 9cf6f5519c [ADF-4579] Layout - RTL support (#4741)
* single contentAnimation state

* fine tune contentAnimation state based on direction and position

* tets

* fix mock component inputs

* use native direction attribute

* update docs

* pass direction to calculate sidenav layout

* update test

* fix unit test

* remove dialogs directionality workaround

* set document directionality service

* remove context menu direction workaround

* remove unneeded dependencies

* remove direction style workaround

* remove permission icon direction

* remove sidenav layout direction attribute

* update docs

* update sidenav layout direction

* test

* remove document type

* update test dependencies

* clear storage before test

* test

* fix dl gap

* try to fix Uncaught QuotaExceededError

* fix QuotaExceededError

* fix tests

* fix tests
2019-05-29 16:17:13 +01:00
Francesco Corti f3e90298e6 Update of upgrade paths. (#4789) 2019-05-29 14:28:41 +01:00
Deepak Paul d571480ddd [ADF-4576] Remove duplicate getDeployedApplicationsByStatus service (#4740)
* * Remove overriding & added appconfig apps support

* * Added tests

* * Updated docs

* [ADF-4576] Made one service private

* * Fixed tests

* * [ADF-4576] Improved tests
2019-05-28 18:08:38 +01:00
cristinaj 90617ee3fd [ADF-4477]Add a new check related to endDate (#4694)
* Add a new check related to endDate

* Update task-header-cloud.e2e.ts

* Split the variables.

* no message
2019-05-28 17:40:34 +01:00
Silviu Popa f62236b916 [ADF-4598] StartTask - revert start task assignee and candidateGroups validations (#4785)
* [NO_ISSUE] - revert start task assignee and candidateGroups validations

* [ADF-4598] - fix unit tests
2019-05-28 17:37:36 +01:00
davidcanonieto f2f08a5bf8 [ADF-4529] Enable form configuration from e2e tests (#4738)
* [ADF-4529] Enable form configuration from e2e tests

* Improve linting

* Move form methods to new  file
2019-05-28 15:27:26 +01:00
cristinaj 36faed0fab [ADF-4609]Logging the response in case of error. (#4784)
* Logging the response in case of error.

* Enable all cloud tests

* no message

* no message

* Comment failing tests
2019-05-28 11:09:19 +01:00
Maurizio Vitale f6d8bd4130 CI - Ability to run only e2e cloud in case is the only affected folder (#4783)
* Remove skiplint option in favour of lint
Refactor protractor config

* Move rebase check

* Remove the skiplint and run only e2e cloud

* Remove the skip lint

* Change e2e cloud and check the CI runs only that one

* Enable the smart e2e on content

* Delegate the e2e run on the specific project

* Fix typo on specs option

* Add basic readme and fix process service name problem

* Fix bash else if
2019-05-28 11:04:40 +01:00
arditdomi 6897f20954 [ADF-4466] Fix alignment issues - IE11 (#4772)
* [ADF-4466] Fix alignment issues - IE11

* [ADF-4466] Fix implementation from demo shell specific to generic

* [ADF-4466] Remove unused query for IE11
2019-05-24 16:41:19 +01:00
Marouan Bentaleb 5cd0bc9899 Disable tag-component test (#4782) 2019-05-24 15:32:38 +01:00
davidcanonieto 894a9599a9 Fix e2e tests dist issue (#4779)
* Fix e2e tests dist issue

* Fix linting

* Add await to asyncronous function

* fix lintint
2019-05-24 15:32:09 +01:00
Denys Vuika 7f4e301ec0 run lint after npm install 2019-05-24 13:00:58 +01:00
Suzana Dirla 215f8106ca [ADF-4612] fix linting on npm-build-all script (#4778) 2019-05-24 12:39:03 +01:00
Marouan Bentaleb 65ceaee910 Skip failing tests (#4770) 2019-05-23 14:57:11 +01:00
Maurizio Vitale abb76d956b e2e cloud (#4767)
* Change strategy with process cloud e2e and fixes

* Change strategy with process cloud e2e and fixes

* Fix path and host

* improve the config and run the replace for cloud

* Use the same name of other scripts

* Fix lint

* Run the replace in case of cloud

* typo

* Export variables if needed
Fix the check env passing the oauth
2019-05-23 10:24:32 +01:00
Marouan Bentaleb 446efe4297 [ADF-4514] Move widgets pages to Testing package (#4703) 2019-05-22 18:32:46 +01:00
Silviu Popa 7a3b3583f8 [ADF-4530] StartProcessCloud - fix show process definition dropdown (#4723)
* [ADF-4530] - reset filtered process when value it's empty or invalid

* [ADF-4530] - lint

* [ADF-4530] - fix unit test

* [ADF-4530] - PR changes

* [ADF-4530] - PR changes
2019-05-22 15:57:39 +01:00
Marouan Bentaleb 5e7aabfaea [ADF-4547] Fixing flaky tests in Content Services and Core (#4743) 2019-05-22 14:57:20 +01:00
Cilibiu Bogdan 58cf10be5f [ADF-4582] User preference - set layout orientation based on locale (#4744)
* set textOrientation based on locale

* remove manually setting textOrientation

* tests

* revert to getBrowserCultureLang

* match languages keys

* update tests

* fix types
2019-05-22 14:02:51 +01:00
Silviu Popa 26a495c95d [ADF-4588] Datatable - fix copy content tooltip for ellipsis cell (#4751)
* [ADF-4588] - remove overflow from ellipsis class

* [ADF-4588] - fix css
2019-05-22 10:34:39 +01:00
Marouan Bentaleb 22dc800e13 Making C260107 more stable (#4754) 2019-05-22 10:15:34 +01:00
cristinaj 339a6e7a18 [ADF-4587] Fix e2e tests (#4757)
* Fix user_info test

* Removing duplication and hardcoded protocol

* Fix linting and update script

* Removing hardcoded protocol

* Add protocol to scripts

* Fix C260117

* Enable screenshots for cloud tests

* Update process-services-cloud-e2e.sh
2019-05-22 10:15:12 +01:00
Denys Vuika 57a162fcf0 typed interface for test configuration (#4758) 2019-05-22 10:13:57 +01:00
Marouan Bentaleb 0bba08539e Adding debug option to test script (#4753) 2019-05-21 11:50:51 +01:00
Maurizio Vitale 1141511a07 Remove the dependency with TestConfig (#4752)
* Remove the dependency with TestConfig

* Change protocol to https

* Trigger the cloud change

* Trigger the cloud change
2019-05-20 18:11:01 +01:00
Cilibiu Bogdan cff9bf0930 [ADF-4584] Header RTL styling (#4746) 2019-05-20 16:33:47 +01:00
Cilibiu Bogdan bb0bdbfc1d [ADF-4583] Upload dialog - RTL support (#4745)
* overwrite mat-drawer-content position

* set attributes based on direction and position

* add direction support

* update tests

* update doc

* fix direction description

* use native direction attribute

* bind to dir input

* update docs

* remove direction attribute

* listen to user preference textOrientation changes

* update tests

* remove unused import
2019-05-20 15:45:10 +01:00
davidcanonieto 2f44c45903 Fix concurrently command use (#4748)
* Fix concurrently command use

* Command missing parameter

* Remove parallel linting

* fix script

* Fix build

* Run lint concurrently
2019-05-20 12:25:42 +01:00
Marouan Bentaleb 0af9e45cff [ADF-4535] Fix people-group-cloud-component.e2e.ts (#4725) 2019-05-20 10:58:15 +01:00
davidcanonieto 514b31d975 Improve Rebase branch script (#4742)
* Improve Rebase branch script

* Improve Rebase branch script

* add comment
2019-05-17 16:46:29 +01:00
davidcanonieto 80da3e9932 [ADF-4569] Fix affected-libs.sh script (#4734)
* [ADF-4569] Fix affected-libs.sh script

* [ADF-4569] Create new script to check if branch is updated
2019-05-17 15:03:22 +01:00
Cilibiu Bogdan 52c5ec03bc [ADF-4578] remove duplicate language entry (#4739) 2019-05-17 10:56:37 +01:00
Denys Vuika 6cdae78cf2 extension loader accepts dynamic configurations 2019-05-16 12:43:22 +01:00
Marouan Bentaleb 39fe06ea1a [ADF-4541] Fix task-form-cloud-component.e2e.ts (#4731) 2019-05-16 11:49:45 +01:00
Denys Vuika 3aca244059 extensions: add missing service export 2019-05-16 10:46:11 +01:00
Marouan Bentaleb d8caf3b98c [ADF-4540] Fix task-list-properties.e2e.ts (#4730) 2019-05-16 10:27:37 +01:00
Silviu Popa cf68f656cf [NO_ISSUE] - fix unit test on process-services (#4732)
* [NO_ISSUE] - fix unit test on process-services

* [NO_ISSUE] - lint

* remove unused code
2019-05-16 10:09:26 +01:00
Marouan Bentaleb c9bc63bc3c [ADF-4538] Fix start-task-custom-app-cloud.e2e.ts (#4729) 2019-05-16 09:40:45 +01:00
Silviu Popa 55f920fbb4 [ADF-4521] Form - Multilingual support (#4715)
Maurizio says : YES
2019-05-15 15:59:50 +01:00
Silviu Popa b4e3a71bef [ADF-4269] ProcessCloud - fix start task with invalid Asignee or Candidat… (#4727)
* [ADF-4269] - prevent starting a task with invalid Asignee or CandidateUser

* [ADF-4269] - refractor people/group cloud

* [ADF-4269] - change docs
2019-05-15 15:49:46 +01:00
Silviu Popa 4a363c731b [ADF-4471] TaskCloud - disable editable fields when the task is unclaimed (#4680)
* [ADF-4471] TaskCloud - task header disabled when the task is unclaimed

* [ADF-4471] - fix unit test

* [ADF-4471] - pr changes

* [ADF-4471] - add return type
2019-05-14 15:30:35 +01:00
Silviu Popa d1bc5a608a [ADF-4389] StartProcessCloud - add validation for processName (#4707)
* [ADF-4389] StartProcessCloud - add validation for processName

* [ADF-4389] - change function definition name

* [ADF-4389] - add return type
2019-05-14 15:19:43 +01:00
Cilibiu Bogdan 164d398abc [ADF-4227] Material Dialog - change direction option based on textOrientation (#4716)
* change matDialog direction based on textOrientation

* move dialog providers to material.module

* extend initial options

* move UserPreferencesService from factory

* update module

* update test

* material dialog correct reference

* extend default global options

* tests
2019-05-14 12:52:03 +01:00
Cilibiu Bogdan de0f906163 [ADF-4543] Language Menu - set layout orientation (#4719)
* language entry interface

* pass language object

* set textOrientation

* tests

* update doc

* add rtl language
2019-05-14 12:45:05 +01:00
Cilibiu Bogdan 4f13dcc3e2 [ADF-4545] Context Menu - RTL support (#4722)
* set overlay direction

* test
2019-05-14 12:43:52 +01:00
Denys Vuika 1e4d024c08 Update site-permissions.e2e.ts 2019-05-14 12:26:56 +01:00
Denys Vuika ac224a0b82 [ADF-4489] metadata errors demoshell (#4720)
* raise errors in demo shell for metadata

* remove commented out code
2019-05-14 11:45:07 +01:00
Denys Vuika 60a122f844 disable flaky test 2019-05-14 11:02:09 +01:00
Denys Vuika 238a317f89 disable flaky test 2019-05-14 09:38:19 +01:00
Silviu Popa 96111f588a [ADF-4488] Form - Add dropdown-cloud widget (#4695)
* [ADF-4488] Form - Add dropdown cloud widget

* [ADF-4488] - add form style

* [ADF-4488] - revert formFieldOption change

* [ADF-4488] - PR changes

* [ADF-4488] - move dropdown widget into cloud module

* [ADF-4488] - PR changes and remove unused unit test

* [ADF-4488] - PR changes

* [ADF-4488] - PR changes

* [ADF-4488] - add multilingual support

* [ADF-4488] - PR changes
2019-05-14 09:15:15 +01:00
Denys Vuika 8985319f15 disable flaky e2e test 2019-05-13 15:43:08 +01:00
Denys Vuika cecc13093d disable flaky tests 2019-05-13 13:48:34 +01:00
Eugenio Romano 4d0b646717 Update protractor.conf.js 2019-05-13 08:06:22 +01:00
Eugenio Romano 00aac824c3 Update protractor.conf.js 2019-05-13 08:00:55 +01:00
Denys Vuika bbea17fe37 [ADF-4268] Info drawer fixes (#4709)
* show error popups

* proper error handling

* update tests

* update code as per review

* remove old implementation

* remove old code
2019-05-13 07:24:49 +01:00
davidcanonieto fc9f04c6c6 [ADF-4498] Disable Sticky header on Datatable if header is not visible (#4701)
* [ADF-4498] Disable Sticky header on Datatable if header is not visible

* [ADF-4498] Improve flag check
2019-05-13 07:02:36 +01:00
Eugenio Romano 898e3b5a80 [no-issue] Parallel run e2e and e2e common action refactoring (#4702) 2019-05-13 04:44:35 +02:00
Francesco Corti a48bfc3714 ADF 3.2.1 minor changes to documentation. (#4717) 2019-05-10 12:17:15 +01:00
Francesco Corti 9ebebbb860 Better descriptions into the release notes (#4718)
Better descriptions into the release notes about languages availability
2019-05-10 12:16:38 +01:00
Silviu Popa ead22d9e3c [ADF-4473] TaskCloud - add priority numeric validation (#4684)
* [ADF-4473] TaskCloud - add priority numeric validation

* [ADF-4473] - change validation conditiion

* [ADF-4473] - add return type

* [ADF-4473] - fix unit test
2019-05-09 17:48:23 +01:00
Eugenio Romano 028e2eb981 release note 3.2.1 2019-05-09 15:05:08 +01:00
Eugenio Romano 56982a02b8 Release 3.2.1 2019-05-09 14:34:00 +01:00
davidcanonieto 77109ae59a [ADF-4476] Unify layout for start process/task components (#4699) 2019-05-08 23:07:08 +01:00
Maurizio Vitale 32135e3cbc Fix the context name (#4710) 2019-05-08 19:57:20 +01:00
Maurizio Vitale c0e2429de3 Cloud script - Add users to the deploy phase (#4704)
* Add user and admin to the deploy phase

* Add user and admin to the deploy phase
E
2019-05-07 19:11:38 +01:00
davidcanonieto 7bc99d492a [ADF-4442] Show whole app config in config editor (#4700) 2019-05-07 17:34:59 +01:00
Silviu Popa 5bb8912651 [ADF-3192] Form - fix dropdown field alignment (#4685)
* [ADF-3192] Form - fix dropdown field alignment

* [ADF-3192] - reove unused style
2019-05-07 17:34:08 +01:00
davidcanonieto 9d0e9ec219 [ADF-4467] Fix Upload File Widget layout (#4675)
* [ADF-4467] Fix Upload File Widget layout

* [ADF-4467] Refactor content services upload button
2019-05-07 17:32:35 +01:00
Denys Vuika 0e2e5e35a0 [ADF-3126] i18n support for info drawer tabs (#4698)
* [ADF-3126] i18n support for info drawer tabs

* fix tests

* code fixes
2019-05-07 17:31:22 +01:00
Denys Vuika 58f7a2d0ee update docs 2019-05-07 16:59:48 +01:00
Eugenio Romano bc71efaab3 Merge pull request #4697 from Alfresco/dev-dcano-ADF-4495
[ADF-4495] Fix Remove dependencies script
2019-05-07 16:50:11 +01:00
Denys Vuika 8db915bd2a [ADF-4484] Quick notifications (#4688)
* quick notifications (info, error, warning)

* update code docs
2019-05-07 13:25:12 +01:00
davidcanonieto b7e50dd9eb [ADF-4495] Fix Remove dependencies script 2019-05-07 11:13:15 +01:00
1294 changed files with 71259 additions and 37000 deletions
+37
View File
@@ -0,0 +1,37 @@
# Each line is a file pattern followed by one or more owners.
# These owners will be the default owners for everything in
# the repo. Unless a later match takes precedence,
# these users will be requested for
# review when someone opens a pull request.
* @eromano @popovicsandras @DenysVuika
# Order is important; the last matching pattern takes the most
# precedence. When someone opens a pull request that only
# modifies JS files, only @js-owner and not the global
# owner(s) will be requested for a review.
e2e/* @eromano @cristinaj @gmandakini @marouanbentaleb
# You can also use email addresses if you prefer. They'll be
# used to look up users just like we do for commit author
# emails.
#*.go docs@example.com
docs/* @m-hulbert @eromano
# In this example, @doctocat owns any files in the build/logs
# directory at the root of the repository and any of its
# subdirectories.
#/build/logs/ @doctocat
# The `docs/*` pattern will match files like
# `docs/getting-started.md` but not further nested files like
# `docs/build-app/troubleshooting.md`.
#docs/* docs@example.com
# In this example, @octocat owns any file in an apps directory
# anywhere in your repository.
#apps/ @octocat
# In this example, @doctocat owns any file in the `/docs`
# directory in the root of your repository.
#/docs/ @doctocat
+4 -12
View File
@@ -3,22 +3,13 @@ node_modules
bundles
workspace.xml
.idea/
.env.*
dist/
e2e/.env.cloud
tmp
e2e-output/
e2e/downloads/
ng2-components/coverage/
!systemjs.config.js
demo-shell-ng2/app/components/router/
ng2-components/ng2-alfresco-userinfo-old/demo/src/app/
ng2-components/ng2-alfresco-userinfo-old/src/services/bpm-user.service.spec.ts
ng2-components/ng2-alfresco-userinfo-old/src/services/ecm-user.service.spec.ts
src/environments/
/ng2-components/ng2-example-webpack/
/ng2-components/config/coverage/
/e2e/downloads/
*.npmrc
/demo-shell-ng2/ng2-components/
.happypack/
.history
/ng2-components/ng2-alfresco-core/prebuilt-themes/
.ng_pkg_build/
@@ -32,3 +23,4 @@ src/environments/
/protractorFailuresReport
coverage/
/desktop.ini
out-tsc
+107 -171
View File
@@ -6,7 +6,7 @@ dist: trusty
sudo: required
node_js:
# Use the explicit NodeJS LTS version 8.9.4 to avoid any automatic upgrade of the version.
- '8.9.4'
- '10.16.0'
install:
echo "no install"
@@ -15,18 +15,33 @@ branches:
only:
- master
- development
- /.*old-env.*/
- /.*old-env.*/
- /.*next-release.*/
- /.*beta.*/
- /.*greenkeeper.*/
# TRAVIS_PULL_REQUEST == false means is running on dev branch and is not a PR
stages:
- name: Warm Up Cache & Lint & Build Dist
- name: Lint & Build Dist
if: type != cron
- name: Unit test
if: type != cron
- name: Deploy docker
if: type = push
- name: Update Rancher
if: type = push
- name: Release on npm
if: type = push
- name: Check bundle
if: type = push
- name: e2e Test
- name: Create Docker PR
- name: Deploy Docker PR
if: type != cron
- name: Update Rancher PR
if: type = pull_request
- name: Update Children Projects
if: branch = master AND type = push OR (tag =~ .*beta.*)
- name: Release beta tag
if: type = cron
addons:
chrome: stable
@@ -42,177 +57,98 @@ before_install:
jobs:
include:
- stage: Warm Up Cache & Lint & Build Dist
- stage: Lint & Build Dist
name: Build Dist
script:
- if [[ $TRAVIS_PULL_REQUEST == "false" ]];
then
./scripts/lint.sh || exit 1;
./scripts/npm-build-all.sh || exit 1;
else
./scripts/update-version.sh -gnu -alpha || exit 1;
npm install;
./scripts/lint.sh || exit 1;
rm -rf tmp && mkdir tmp;
git merge-base origin/$TRAVIS_BRANCH HEAD > ./tmp/devhead.txt;
./scripts/smart-build.sh -b $TRAVIS_BRANCH -gnu || exit 1;
fi;
npm run build:dist || exit 1;
./scripts/license-list-generator.sh || exit 1;
- stage: Unit test
name: core and extensions
script:
AFFECTED_LIBS="$(./scripts/affected-libs.sh -gnu -b $TRAVIS_BRANCH)";
if [[ $AFFECTED_LIBS =~ "core$" || $TRAVIS_PULL_REQUEST == "false" ]];
then
ng test core --watch=false || exit 1;
fi;
AFFECTED_LIBS="$(./scripts/affected-libs.sh -gnu -b $TRAVIS_BRANCH)";
if [[ $AFFECTED_LIBS =~ "extensions$" || $TRAVIS_PULL_REQUEST == "false" ]];
then
ng test extensions --watch=false || exit 1;
fi;
- stage: Unit test
name: process-services and insights
script:
AFFECTED_LIBS="$(./scripts/affected-libs.sh -gnu -b $TRAVIS_BRANCH)";
if [[ $AFFECTED_LIBS =~ "process-services$" || $TRAVIS_PULL_REQUEST == "false" ]];
then
ng test process-services --watch=false || exit 1;
fi;
AFFECTED_LIBS="$(./scripts/affected-libs.sh -gnu -b $TRAVIS_BRANCH)";
if [[ $AFFECTED_LIBS =~ "insights$" || $TRAVIS_PULL_REQUEST == "false" ]];
then
ng test insights --watch=false || exit 1;
fi;
- stage: Unit test
name: content-services
script:
AFFECTED_LIBS="$(./scripts/affected-libs.sh -gnu -b $TRAVIS_BRANCH)";
if [[ $AFFECTED_LIBS =~ "content-services$" || $TRAVIS_PULL_REQUEST == "false" ]];
then
ng test content-services --watch=false || exit 1;
fi;
- stage: Unit test
name: process-services-cloud
script:
AFFECTED_LIBS="$(./scripts/affected-libs.sh -gnu -b $TRAVIS_BRANCH)";
if [[ $AFFECTED_LIBS =~ "process-services-cloud$" || $TRAVIS_PULL_REQUEST == "false" ]];
then
ng test process-services-cloud --watch=false || exit 1;
fi;
- stage: Unit test
name: demo-shell
script: if ([ "$TRAVIS_BRANCH" = "master" ]); then
(./scripts/start.sh -t -ss -si || exit 1;);
else
(./scripts/start.sh -dev -t -ss -si || exit 1;);
fi;
- stage: Update children projects dependency #Update generator-ng2-alfresco-app
name: Update Generator
if: tag =~ .*beta.*
script: ./scripts/update-project.sh -gnu -t $GITHUB_TOKEN -n 'Alfresco/generator-ng2-alfresco-app'
- stage: Update children projects dependency # Test Update alfresco-content-app
name: Update ACA
if: tag =~ .*beta.*
script: ./scripts/update-project.sh -gnu -t $GITHUB_TOKEN -n 'Alfresco/alfresco-content-app'
- stage: Update children projects dependency # Test Update adf-app-manager-ui
name: Update adf-app-manager-ui
if: tag =~ .*beta.*
script: ./scripts/update-project.sh -gnu -t $GITHUB_TOKEN -n 'Alfresco/adf-app-manager-ui'
- stage: Update children projects dependency # Test Update alfresco-ng2-components
name: Update alfresco-ng2-components
if: tag =~ .*beta.*
script: ./scripts/update-project.sh -gnu -t $GITHUB_TOKEN -n 'Alfresco/alfresco-ng2-components'
- stage: Update children projects dependency # Test Update alfresco-modeler-app
name: Update alfresco modeler app
if: tag =~ .*beta.*
script: ./scripts/update-project.sh -gnu -t $GITHUB_TOKEN -n 'Alfresco/alfresco-modeler-app'
- stage: Update children projects dependency # Test Update activiti-modeling-app
name: Update alfresco modeler activiti app
if: tag =~ .*beta.*
script: ./scripts/update-project.sh -gnu -t $GITHUB_TOKEN -n 'Activiti/activiti-modeling-app'
- stage: Update children projects dependency # Test alfresco-admin-app
name: Update alfresco admin app
if: tag =~ .*beta.*
script: ./scripts/update-project.sh -gnu -t $GITHUB_TOKEN -n 'Alfresco/alfresco-admin-app'
- stage: e2e Test # Test core
name: core
script:
AFFECTED_E2E="$(./scripts/affected-folder.sh -b $TRAVIS_BRANCH -f "e2e")";
AFFECTED_LIBS="$(./scripts/affected-libs.sh -gnu -b $TRAVIS_BRANCH)";
if [[ $AFFECTED_LIBS =~ "core$" || $AFFECTED_E2E = "e2e" || $TRAVIS_PULL_REQUEST == "false" ]];
then
node ./scripts/check-ps-env.js --host "$E2E_HOST" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" || exit 1;
node ./scripts/check-cs-env.js --host "$E2E_HOST" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" || exit 1;
./scripts/test-e2e-lib.sh -host localhost:4200 -proxy "$E2E_HOST" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" -e "$E2E_EMAIL" --folder core --skip-lint -save --use-dist || exit 1;
fi;
- stage: e2e Test # Test process-services
name: process-services
script:
AFFECTED_E2E="$(./scripts/affected-folder.sh -b $TRAVIS_BRANCH -f "e2e")";
AFFECTED_LIBS="$(./scripts/affected-libs.sh -gnu -b $TRAVIS_BRANCH)";
if [[ $AFFECTED_LIBS =~ "process-services$" || $AFFECTED_E2E = "e2e" || $TRAVIS_PULL_REQUEST == "false" ]];
then
node ./scripts/check-ps-env.js --host "$E2E_HOST" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" || exit 1;
./scripts/test-e2e-lib.sh -host localhost:4200 -proxy "$E2E_HOST" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" -e "$E2E_EMAIL" --folder process-services --skip-lint --use-dist || exit 1;
fi;
- stage: e2e Test # Test content-services
name: content-services
script:
AFFECTED_E2E="$(./scripts/affected-folder.sh -b $TRAVIS_BRANCH -f "e2e")";
AFFECTED_LIBS="$(./scripts/affected-libs.sh -gnu -b $TRAVIS_BRANCH)";
if [[ $AFFECTED_LIBS =~ "content-services$" || $AFFECTED_E2E = "e2e" || $TRAVIS_PULL_REQUEST == "false" ]];
then
node ./scripts/check-cs-env.js --host "$E2E_HOST" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" || exit 1;
./scripts/test-e2e-lib.sh -host localhost:4200 -proxy "$E2E_HOST" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" -e "$E2E_EMAIL" --folder content-services --skip-lint --use-dist || exit 1;
fi;
- stage: e2e Test # Test search
name: search
script:
AFFECTED_E2E="$(./scripts/affected-folder.sh -b $TRAVIS_BRANCH -f "e2e")";
AFFECTED_LIBS="$(./scripts/affected-libs.sh -gnu -b $TRAVIS_BRANCH)";
if [[ $AFFECTED_LIBS =~ "content-services$" || $AFFECTED_E2E = "e2e" || $TRAVIS_PULL_REQUEST == "false" ]];
then
node ./scripts/check-cs-env.js --host "$E2E_HOST" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" || exit 1;
./scripts/test-e2e-lib.sh -host localhost:4200 -proxy "$E2E_HOST" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" -e "$E2E_EMAIL" --folder search --skip-lint --use-dist || exit 1;
fi;
- stage: e2e Test # Test process-services-cloud
name: process-services-cloud
script:
AFFECTED_E2E="$(./scripts/affected-folder.sh -b $TRAVIS_BRANCH -f "e2e")";
AFFECTED_LIBS="$(./scripts/affected-libs.sh -gnu -b $TRAVIS_BRANCH)";
if [[ $AFFECTED_LIBS =~ "process-services-cloud$" || $AFFECTED_E2E = "e2e" || $TRAVIS_PULL_REQUEST == "false" ]];
then
node ./scripts/check-activiti-env.js --host "$E2E_HOST_BPM" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" --client 'activiti' || exit 1;
./scripts/test-e2e-lib.sh -host localhost:4200 -proxy "$E2E_HOST_BPM" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" -e "$E2E_EMAIL" --folder process-services-cloud --skip-lint --use-dist -timeout 8000 || exit 1;
fi;
- stage: e2e Test # Test insights
name: insights
script:
AFFECTED_E2E="$(./scripts/affected-folder.sh -b $TRAVIS_BRANCH -f "e2e")";
AFFECTED_LIBS="$(./scripts/affected-libs.sh -gnu -b $TRAVIS_BRANCH)";
if [[ $AFFECTED_LIBS =~ "process-services-cloud$" || $AFFECTED_E2E = "e2e" || $TRAVIS_PULL_REQUEST == "false" ]];
then
node ./scripts/check-ps-env.js --host "$E2E_HOST" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" || exit 1;
./scripts/test-e2e-lib.sh -host localhost:4200 -proxy "$E2E_HOST" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" -e "$E2E_EMAIL" --folder insights --skip-lint --use-dist || exit 1;
fi;
- stage: Create Docker and Deploy Docker PR
script:
- if [ "$TRAVIS_PULL_REQUEST" != "false" ];
then
node ./scripts/move-dist-folder.js --base-href $TRAVIS_BUILD_NUMBER && (./scripts/pr-publish.sh -n $TRAVIS_BUILD_NUMBER -r $REPO_DOCKER -u $USERNAME_DOCKER -p $PASSWORD_DOCKER || exit 1);
fi;
- if [ "$TRAVIS_PULL_REQUEST" != "false" ];
then
(node --no-deprecation ./scripts/pr-deploy.js -n $TRAVIS_BUILD_NUMBER -u $RANCHER_TOKEN -p $RANCHER_SECRET -s $REPO_RANCHER --image "docker:$REPO_DOCKER/adf/demo-shell:$TRAVIS_BUILD_NUMBER" --env $ENVIRONMENT_NAME -r $ENVIRONMENT_URL || exit 1);
fi;
- ./scripts/travis/build/build.sh || exit 1;
- stage: Lint & Build Dist
name: Lint
script: npm install && ./scripts/lint.sh || exit 1;
# Send coverage data to codecov
after_success:
bash <(curl -s https://codecov.io/bash) -X gcov
- stage: Unit test
name: Unit test content
script: ./scripts/travis/unit-test/content.sh
- stage: Unit test
name: Unit test core extension demo
script: ./scripts/travis/unit-test/core-extension-demo.sh
- stage: Unit test
name: Unit test process process-cloud insights
script: ./scripts/travis/unit-test/process.sh
- stage: Update Children Projects
script: ./scripts/travis/update/update-children.sh
- stage: Release beta tag
script: ./scripts/travis/release/git-tag-beta.sh
- stage: e2e Test
name: core
script: ./scripts/travis/e2e/core-e2e.sh
- stage: e2e Test
name: content
script: ./scripts/travis/e2e/content-services-e2e.sh
- stage: e2e Test
name: search
script: ./scripts/travis/e2e/search-e2e.sh
- stage: e2e Test
name: process
script: ./scripts/travis/e2e/process-services-e2e.sh
- stage: e2e Test
name: process Cloud
script: ./scripts/travis/e2e/process-services-cloud-e2e.sh
- stage: Release on npm
script: ./scripts/travis/release/release.sh
- stage: Check bundle
script:
- ADF_VERSION=$(npm view @alfresco/adf-core@${TAG_NPM} version)
- ./scripts/npm-check-bundles.sh -v ${ADF_VERSION}
- stage: Deploy docker
script:
- TAG_VERSION=$(./scripts/travis/deploy/tag-travis-branch.sh)
- echo "Running the docker with tag" $TAG_VERSION
- ./node_modules/@alfresco/adf-cli/bin/adf-cli docker-publish --loginCheck --loginUsername "$DOCKER_REPOSITORY_USER" --loginPassword "$DOCKER_REPOSITORY_PASSWORD" --loginRepo "$DOCKER_REPOSITORY_DOMAIN" --dockerRepo "$DOCKER_REPOSITORY" --dockerTags "$TAG_VERSION" --pathProject "$(pwd)"
- stage: Update Rancher
script:
- TAG_VERSION=$(./scripts/travis/deploy/tag-travis-branch.sh)
- echo "Update rancher with docker tag" $TAG_VERSION --url $REPO_RANCHER --environment_name $REPO_RANCHER_ADF_NAME
- ./scripts/rancher-update.sh --access_key $RANCHER_TOKEN --secret_key $RANCHER_SECRET --url $REPO_RANCHER --environment_name $REPO_RANCHER_ADF_NAME --image docker:$DOCKER_REPOSITORY:$TAG_VERSION
- stage: Update Rancher PR
name: Update Rancher PR
script: ./scripts/travis/deploy/deploy.sh
before_deploy:
# Set up git user name and tag this commit
- git config --local user.name "Alfresco"
- export TRAVIS_TAG=$(cat package.json | grep version | head -1 | awk -F= "{ print $2 }" | sed 's/[version:,\",]//g' | tr -d '[[:space:]]')
- echo "Create tag:" $TRAVIS_TAG
- git tag $TRAVIS_TAG
deploy:
provider: releases
api_key: $GITHUB_TOKEN
name: $TRAVIS_TAG
body: "Add the release note"
skip_cleanup: true
on:
branch: master
cache:
directories:
- node_modules
- demo-shell/dist
- tmp
- lib/dist
+1 -1
View File
@@ -14,7 +14,7 @@
<a href='https://github.com/Alfresco/alfresco-ng2-components/blob/master/LICENSE'>
<img src='https://img.shields.io/hexpm/l/plug.svg' alt='license' />
</a>
</p>
</p
## Introduction
+48 -8
View File
@@ -23,7 +23,7 @@
},
"assets": [
"demo-shell/src/assets",
"demo-shell/src/favicon.ico",
"demo-shell/src/favicon-96x96.png",
"demo-shell/src/app.config.json",
"demo-shell/src/versions.json",
{
@@ -78,6 +78,8 @@
}
],
"styles": [
"demo-shell/src/assets/fonts/material-icons/material-icons.css",
"demo-shell/src/assets/fonts/muli/muli.css",
"demo-shell/src/styles.scss",
"demo-shell/src/custom-style.scss"
],
@@ -106,6 +108,14 @@
"with": "demo-shell/src/environments/environment.prod.ts"
}
]
},
"e2e": {
"fileReplacements": [
{
"replace": "demo-shell/src/environments/environment.ts",
"with": "demo-shell/src/environments/environment.e2e.ts"
}
]
}
}
},
@@ -113,11 +123,17 @@
"builder": "@angular-devkit/build-angular:dev-server",
"options": {
"browserTarget": "dist:build",
"port": 3000
"host": "0.0.0.0",
"port": 3000,
"proxyConfig": "demo-shell/proxy.conf.js",
"disableHostCheck": true
},
"configurations": {
"production": {
"browserTarget": "dist:build:production"
},
"e2e": {
"browserTarget": "dist:build:e2e"
}
}
},
@@ -141,12 +157,14 @@
"node_modules/moment/min/moment.min.js"
],
"styles": [
"demo-shell/src/assets/fonts/material-icons/material-icons.css",
"demo-shell/src/assets/fonts/muli/muli.css",
"demo-shell/src/styles.scss",
"demo-shell/src/custom-style.scss"
],
"assets": [
"demo-shell/src/assets",
"demo-shell/src/favicon.ico",
"demo-shell/src/favicon-96x96.png",
"demo-shell/src/app.config.json",
"demo-shell/src/versions.json",
{
@@ -209,7 +227,8 @@
"./demo-shell/src/tsconfig.app.json"
],
"exclude": [
"**/node_modules/**/*"
"**/node_modules/**/*",
"package.json"
]
}
}
@@ -324,6 +343,8 @@
}
],
"styles": [
"demo-shell/src/assets/fonts/material-icons/material-icons.css",
"demo-shell/src/assets/fonts/muli/muli.css",
"demo-shell/src/styles.scss",
"demo-shell/src/custom-style-dev.scss"
],
@@ -352,6 +373,14 @@
"with": "demo-shell/src/environments/environment.prod.ts"
}
]
},
"e2e": {
"fileReplacements": [
{
"replace": "demo-shell/src/environments/environment.ts",
"with": "demo-shell/src/environments/environment.e2e.ts"
}
]
}
}
},
@@ -359,11 +388,17 @@
"builder": "@angular-devkit/build-angular:dev-server",
"options": {
"browserTarget": "dev:build",
"port": 3000
"host": "0.0.0.0",
"port": 3000,
"proxyConfig": "demo-shell/proxy.conf.js",
"disableHostCheck": true
},
"configurations": {
"production": {
"browserTarget": "dev:build:production"
},
"e2e": {
"browserTarget": "dev:build:e2e"
}
}
},
@@ -387,6 +422,8 @@
"node_modules/moment/min/moment.min.js"
],
"styles": [
"demo-shell/src/assets/fonts/material-icons/material-icons.css",
"demo-shell/src/assets/fonts/muli/muli.css",
"demo-shell/src/styles.scss",
"demo-shell/src/custom-style-dev.scss"
],
@@ -489,7 +526,8 @@
"./demo-shell/src/tsconfig.app.json"
],
"exclude": [
"**/node_modules/**/*"
"**/node_modules/**/*",
"package.json"
]
}
}
@@ -516,14 +554,16 @@
"e2e": {
"builder": "@angular-devkit/build-angular:protractor",
"options": {
"protractorConfig": "./protractor.conf.js",
"protractorConfig": "./protractor.conf.ts",
"devServerTarget": "lib-e2e-test:serve"
}
},
"lint": {
"builder": "@angular-devkit/build-angular:tslint",
"options": {
"tsConfig": [],
"tsConfig": [
"./e2e/tsconfig.e2e.json"
],
"exclude": [
"**/node_modules/**/*"
]
-63
View File
@@ -1,63 +0,0 @@
# Test against this version of Node.js
branches:
only:
- master
- development
- dev-build-test
environment:
nodejs_version: "8"
matrix:
- COMPONENT_NAME: process-service
- COMPONENT_NAME: content-service
- COMPONENT_NAME: core
- COMPONENT_NAME: insights
# - COMPONENT_NAME: ng2-demo-shell
# Install scripts. (runs after repo cloning)
install:
# Get the latest stable version of Node.js or io.js
- ps: Install-Product node $env:nodejs_version
# install module
- if %COMPONENT_NAME% EQU process-service (
if %APPVEYOR_REPO_BRANCH EQU master
(cd scripts && sh npm-build-all.sh -t "process-services" || exit 1)
else
(cd scripts && sh npm-build-all.sh -t "process-services" -vjsapi alpha|| exit 1)
)
- if %COMPONENT_NAME% EQU content-service (
if %APPVEYOR_REPO_BRANCH EQU master
(cd scripts && sh npm-build-all.sh -t "content-services" || exit 1)
else
(cd scripts && sh npm-build-all.sh -t "content-services" -vjsapi alpha|| exit 1)
)
- if %COMPONENT_NAME% EQU insights (
if %APPVEYOR_REPO_BRANCH EQU master
(cd scripts && sh npm-build-all.sh -t "insights" || exit 1)
else
(cd scripts && sh npm-build-all.sh -t "insights" -vjsapi alpha|| exit 1)
)
- if %COMPONENT_NAME% EQU core (
if %APPVEYOR_REPO_BRANCH EQU master
(cd scripts && sh npm-build-all.sh -t "core" || exit 1)
else
(cd scripts && sh npm-build-all.sh -t "core" -vjsapi alpha|| exit 1)
)
- if %COMPONENT_NAME% EQU process-service-cloud (
if %APPVEYOR_REPO_BRANCH EQU master
(cd scripts && sh npm-build-all.sh -t "process-services-cloud" || exit 1)
else
(cd scripts && sh npm-build-all.sh -t "process-services-cloud" -vjsapi alpha|| exit 1)
)
# - if %COMPONENT_NAME% EQU ng2-demo-shell (
# if %APPVEYOR_REPO_BRANCH EQU master
# (cd scripts && sh start.sh -t -ss || exit 1)
# else
# (cd scripts && sh start.sh -dev -t -ss -vjsapi alpha || exit 1)
# )
# Don't actually build.
build: off
matrix:
fast_finish: true
+3 -2
View File
@@ -126,8 +126,9 @@
"uncheck",
"subfolders",
"ECMBPM",
"candidateuserapp",
"processwithvariables"
"processwithvariables",
"dropdownrestprocess",
"devops"
],
"dictionaries": [
"html",
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "Alfresco-ADF-Angular-Demo",
"description": "Demo shell for Alfresco Angular components",
"version": "3.2.1",
"version": "3.4.0",
"author": "Alfresco Software, Ltd.",
"repository": {
"type": "git",
+4 -2
View File
@@ -1,6 +1,8 @@
var PROXY_HOST_ADF = process.env.PROXY_HOST_ADF;
module.exports = {
"/alfresco": {
"target": "http://localhost:8080",
"target": (PROXY_HOST_ADF || "http://localhost:8080"),
"secure": false,
"pathRewrite": {
"^/alfresco/alfresco": ""
@@ -15,7 +17,7 @@ module.exports = {
}
},
"/activiti-app": {
"target": "http://localhost:8080",
"target": (PROXY_HOST_ADF || "http://localhost:8080"),
"secure": false,
"pathRewrite": {
"^/activiti-app/activiti-app": ""
+4 -2
View File
@@ -78,6 +78,7 @@
"UPLOADER": "مُحمِّل",
"WEBSCRIPT": "برنامج الويب النصي",
"TAG": "علامة",
"PIPES": "أنابيب",
"TRASHCAN": "سلة المحذوفات",
"SOCIAL": "اجتماعي",
"SETTINGS": "إعدادات",
@@ -95,7 +96,8 @@
"PEOPLE_GROUPS_CLOUD": "سحابة الأشخاص/المجموعة",
"PEOPLE_CLOUD": "مكون سحابة الأشخاص",
"GROUPS_CLOUD": "مكون سحابة المجموعة",
"CONFIRM-DIALOG": "مربع حوار التأكيد"
"CONFIRM-DIALOG": "مربع حوار التأكيد",
"COMMUNITY": "Community"
},
"TRASHCAN": {
"ACTIONS": {
@@ -245,7 +247,7 @@
"RATING": "مكون التقييم"
},
"TAG": {
"LIST": "خدمات محتوى علامات القائمة",
"LIST": "Content Services علامات القائمة",
"INSERT": "إدراج معرف العقدة",
"NODE_LIST": "قائمة العلامات حسب معرف العقدة"
},
+3 -1
View File
@@ -78,6 +78,7 @@
"UPLOADER": "Nástroj pro odesílání",
"WEBSCRIPT": "Webový skript",
"TAG": "Tag",
"PIPES": "Potrubí",
"TRASHCAN": "Koš",
"SOCIAL": "Sociální",
"SETTINGS": "Nastavení",
@@ -95,7 +96,8 @@
"PEOPLE_GROUPS_CLOUD": "Cloud osob/skupin",
"PEOPLE_CLOUD": "Součást cloudu osob",
"GROUPS_CLOUD": "Součást cloudu skupin",
"CONFIRM-DIALOG": "Dialogové okno s potvrzením"
"CONFIRM-DIALOG": "Dialogové okno s potvrzením",
"COMMUNITY": "Community"
},
"TRASHCAN": {
"ACTIONS": {
+3 -1
View File
@@ -78,6 +78,7 @@
"UPLOADER": "Uploader",
"WEBSCRIPT": "Webscript",
"TAG": "Tag",
"PIPES": "Rør",
"TRASHCAN": "Papirkurv",
"SOCIAL": "Social",
"SETTINGS": "Indstillinger",
@@ -95,7 +96,8 @@
"PEOPLE_GROUPS_CLOUD": "Person/gruppecloud",
"PEOPLE_CLOUD": "Personcloudkomponent",
"GROUPS_CLOUD": "Gruppecloudkomponent",
"CONFIRM-DIALOG": "Bekræftelsesdialogboks"
"CONFIRM-DIALOG": "Bekræftelsesdialogboks",
"COMMUNITY": "Community"
},
"TRASHCAN": {
"ACTIONS": {
+3 -1
View File
@@ -78,6 +78,7 @@
"UPLOADER": "Uploader",
"WEBSCRIPT": "Webscript",
"TAG": "Tag",
"PIPES": "Pipes",
"TRASHCAN": "Papierkorb",
"SOCIAL": "Soziale Funktionen",
"SETTINGS": "Einstellungen",
@@ -95,7 +96,8 @@
"PEOPLE_GROUPS_CLOUD": "Personen-/Gruppen-Cloud",
"PEOPLE_CLOUD": "Personen-Cloud-Komponente",
"GROUPS_CLOUD": "Gruppen-Cloud-Komponente",
"CONFIRM-DIALOG": "Bestätigungsdialog"
"CONFIRM-DIALOG": "Bestätigungsdialog",
"COMMUNITY": "Community"
},
"TRASHCAN": {
"ACTIONS": {
+16 -13
View File
@@ -78,6 +78,7 @@
"UPLOADER": "Uploader",
"WEBSCRIPT": "Webscript",
"TAG": "Tag",
"PIPES": "Pipes",
"TRASHCAN": "Trashcan",
"SOCIAL": "Social",
"SETTINGS": "Settings",
@@ -303,23 +304,25 @@
"ROLE_FILTER_MODE": "Filter by role",
"PRESELECT_VALIDATION": "Preselect validation"
},
"ABOUT": {
"TITLE": "Plugins",
"TABLE_HEADERS": {
"ID": "ID",
"NAME": "Name",
"VERSION": "Version",
"VENDOR": "Vendor",
"LICENSE": "License",
"RUNTIME": "Runtime",
"DESCRIPTION": "Description"
}
},
"SETTINGS_CLOUD": {
"MULTISELECTION": "Multiselection",
"TESTING_MODE": "Testing Mode",
"SELECTION_MODE": "Selection Mode",
"SELECTED_ROWS": "Selected rows",
"TASK_DETAILS_REDIRECTION": "Display task details on task click",
"PROCESS_DETAILS_REDIRECTION": "Display process details on process click"
"PROCESS_DETAILS_REDIRECTION": "Display process details on process click",
"ACTION": {
"ACTION_TITLE": "Add Action",
"ACTION_MENU": "Action Menu",
"CONTEX_MENU": "Context Menu",
"ACTION_VISIBLE": "Visible",
"ACTION_DISABLE": "Disable",
"ADD_BUTTON": "Add",
"KEY": "Key",
"TITLE": "Title",
"ICON": "Icon",
"PROCESS_ID": "ProcessInstanceId",
"ACTION_TYPE": "Action Type"
}
}
}
+3 -1
View File
@@ -78,6 +78,7 @@
"UPLOADER": "Cargador",
"WEBSCRIPT": "Webscript",
"TAG": "Etiqueta",
"PIPES": "Tubos",
"TRASHCAN": "Papelera",
"SOCIAL": "Social",
"SETTINGS": "Configuración",
@@ -95,7 +96,8 @@
"PEOPLE_GROUPS_CLOUD": "Personas/Grupos en la nube",
"PEOPLE_CLOUD": "Componente en la nube de personas",
"GROUPS_CLOUD": "Componente en la nube de grupos",
"CONFIRM-DIALOG": "Cuadro de diálogo de confirmación"
"CONFIRM-DIALOG": "Cuadro de diálogo de confirmación",
"COMMUNITY": "Community"
},
"TRASHCAN": {
"ACTIONS": {
+3 -1
View File
@@ -78,6 +78,7 @@
"UPLOADER": "Lataustoiminto",
"WEBSCRIPT": "Verkkokomentosarja",
"TAG": "Tunniste",
"PIPES": "Putket",
"TRASHCAN": "Roskakori",
"SOCIAL": "Sosiaalinen",
"SETTINGS": "Asetukset",
@@ -95,7 +96,8 @@
"PEOPLE_GROUPS_CLOUD": "Ihmispilvi/Ryhmäpilvi",
"PEOPLE_CLOUD": "Ihmispilvi-komponentti",
"GROUPS_CLOUD": "Ryhmäpilvi-komponentti",
"CONFIRM-DIALOG": "Vahvistusvalintaikkuna"
"CONFIRM-DIALOG": "Vahvistusvalintaikkuna",
"COMMUNITY": "Community"
},
"TRASHCAN": {
"ACTIONS": {
+3 -1
View File
@@ -78,6 +78,7 @@
"UPLOADER": "Chargeur",
"WEBSCRIPT": "Script Web",
"TAG": "Tag",
"PIPES": "Tuyaux",
"TRASHCAN": "Corbeille",
"SOCIAL": "Réseaux sociaux",
"SETTINGS": "Paramètres",
@@ -95,7 +96,8 @@
"PEOPLE_GROUPS_CLOUD": "Cloud des personnes/groupes",
"PEOPLE_CLOUD": "Composant cloud des personnes",
"GROUPS_CLOUD": "Composant cloud des groupes",
"CONFIRM-DIALOG": "Boîte de dialogue de confirmation"
"CONFIRM-DIALOG": "Boîte de dialogue de confirmation",
"COMMUNITY": "Communauté"
},
"TRASHCAN": {
"ACTIONS": {
+3 -1
View File
@@ -78,6 +78,7 @@
"UPLOADER": "Uploader",
"WEBSCRIPT": "Webscript",
"TAG": "Tag",
"PIPES": "Tubi",
"TRASHCAN": "Cestino",
"SOCIAL": "Social",
"SETTINGS": "Impostazioni",
@@ -95,7 +96,8 @@
"PEOPLE_GROUPS_CLOUD": "Cloud persone/gruppi",
"PEOPLE_CLOUD": "Componente Cloud persone",
"GROUPS_CLOUD": "Componente Cloud gruppi",
"CONFIRM-DIALOG": "Finestra di conferma"
"CONFIRM-DIALOG": "Finestra di conferma",
"COMMUNITY": "Community"
},
"TRASHCAN": {
"ACTIONS": {
+3 -1
View File
@@ -78,6 +78,7 @@
"UPLOADER": "アップローダー",
"WEBSCRIPT": "Webscript",
"TAG": "タグ",
"PIPES": "パイプ",
"TRASHCAN": "ごみ箱",
"SOCIAL": "ソーシャル",
"SETTINGS": "設定",
@@ -95,7 +96,8 @@
"PEOPLE_GROUPS_CLOUD": "メンバー/グループのクラウド",
"PEOPLE_CLOUD": "メンバーのクラウドコンポーネント",
"GROUPS_CLOUD": "グループのクラウドコンポーネント",
"CONFIRM-DIALOG": "確認ダイアログ"
"CONFIRM-DIALOG": "確認ダイアログ",
"COMMUNITY": "Community"
},
"TRASHCAN": {
"ACTIONS": {
+3 -1
View File
@@ -78,6 +78,7 @@
"UPLOADER": "Opplaster",
"WEBSCRIPT": "Webscript",
"TAG": "Tagg",
"PIPES": "Rør",
"TRASHCAN": "Søppelkurv",
"SOCIAL": "Sosial",
"SETTINGS": "Innstillinger",
@@ -95,7 +96,8 @@
"PEOPLE_GROUPS_CLOUD": "Person-/gruppesky",
"PEOPLE_CLOUD": "Personsky-komponent",
"GROUPS_CLOUD": "Gruppesky-kompontent",
"CONFIRM-DIALOG": "Bekreftelsesdialog"
"CONFIRM-DIALOG": "Bekreftelsesdialog",
"COMMUNITY": "Community"
},
"TRASHCAN": {
"ACTIONS": {
+3 -1
View File
@@ -78,6 +78,7 @@
"UPLOADER": "Uploader",
"WEBSCRIPT": "Webscript",
"TAG": "Tag",
"PIPES": "Pipes",
"TRASHCAN": "Prullenbak",
"SOCIAL": "Sociaal",
"SETTINGS": "Instellingen",
@@ -95,7 +96,8 @@
"PEOPLE_GROUPS_CLOUD": "Personen-/groepencloud",
"PEOPLE_CLOUD": "Component Personencloud",
"GROUPS_CLOUD": "Component Groepencloud",
"CONFIRM-DIALOG": "Bevestigingsdialoogvenster"
"CONFIRM-DIALOG": "Bevestigingsdialoogvenster",
"COMMUNITY": "Community"
},
"TRASHCAN": {
"ACTIONS": {
+3 -1
View File
@@ -78,6 +78,7 @@
"UPLOADER": "Program do przesyłania",
"WEBSCRIPT": "Skrypt internetowy",
"TAG": "Znacznik",
"PIPES": "Rury",
"TRASHCAN": "Kosz",
"SOCIAL": "Społecznościowy",
"SETTINGS": "Ustawienia",
@@ -95,7 +96,8 @@
"PEOPLE_GROUPS_CLOUD": "Chmura dla osób/grup",
"PEOPLE_CLOUD": "Składnik Chmura dla osób",
"GROUPS_CLOUD": "Składnik Chmura dla grup",
"CONFIRM-DIALOG": "Okno dialogowe potwierdzenia"
"CONFIRM-DIALOG": "Okno dialogowe potwierdzenia",
"COMMUNITY": "Community"
},
"TRASHCAN": {
"ACTIONS": {
+3 -1
View File
@@ -78,6 +78,7 @@
"UPLOADER": "Carregador",
"WEBSCRIPT": "Webscript",
"TAG": "Marca",
"PIPES": "Tubos",
"TRASHCAN": "Lixeira",
"SOCIAL": "Social",
"SETTINGS": "Configurações",
@@ -95,7 +96,8 @@
"PEOPLE_GROUPS_CLOUD": "Nuvem de Pessoas/Grupo",
"PEOPLE_CLOUD": "Componente da Nuvem de Pessoas",
"GROUPS_CLOUD": "Componente da Nuvem de Grupos",
"CONFIRM-DIALOG": "Caixa de diálogo de confirmação"
"CONFIRM-DIALOG": "Caixa de diálogo de confirmação",
"COMMUNITY": "Community"
},
"TRASHCAN": {
"ACTIONS": {
+3 -1
View File
@@ -78,6 +78,7 @@
"UPLOADER": "Загрузчик",
"WEBSCRIPT": "Webscript",
"TAG": "Метка",
"PIPES": "Каналы",
"TRASHCAN": "Корзина",
"SOCIAL": "Социальный",
"SETTINGS": "Параметры",
@@ -95,7 +96,8 @@
"PEOPLE_GROUPS_CLOUD": "Облако пользователей/групп",
"PEOPLE_CLOUD": "Компонент облака «Пользователи»",
"GROUPS_CLOUD": "Компонент облака «Группы»",
"CONFIRM-DIALOG": "Диалоговое окно подтверждения"
"CONFIRM-DIALOG": "Диалоговое окно подтверждения",
"COMMUNITY": "Community"
},
"TRASHCAN": {
"ACTIONS": {
+16 -14
View File
@@ -24,8 +24,8 @@
"COMMENTS": "Visa kommentarer"
},
"PERSONAL-FILES": "Personliga filer",
"WARN-MULTIPLE-UPLOADS": "Visa varning för flera uppladningar",
"CUSTOM-PERMISSION-MESSAGE": "Aktivera anpassat behörighetersmeddelande",
"WARN-MULTIPLE-UPLOADS": "Visa varning för flera uppladdningar",
"CUSTOM-PERMISSION-MESSAGE": "Aktivera anpassat behörighetsmeddelande",
"MEDIUM-TIME-FORMAT": "Aktivera mellantidsformat för dokumentlista",
"SEARCH": {
"RADIO": {
@@ -59,12 +59,12 @@
"NODE-SELECTOR": "Nodväljare",
"SITES": "Webbplatser",
"CONTENT_SERVICES": "Content Services",
"BREADCRUMB": "Brödsmula",
"BREADCRUMB": "Synlig sökväg",
"NOTIFICATIONS": "Aviseringar",
"TASK_LIST": "Uppgiftslista",
"PROCESS_LIST": "Processlista",
"PROCESS_CLOUD": "Activiti Cloud",
"CARD_VIEW": "CardView",
"CARD_VIEW": "Kortvy",
"PROCESS_SERVICES": "Process Services",
"LOGIN": "Inloggning",
"CUSTOM_SOURCES": "Anpassade källor",
@@ -75,14 +75,15 @@
"FORM": "Formulär",
"FORM_LIST": "Formulärlista",
"FORM_LOADING": "Formulär läses in",
"UPLOADER": "Uppladdare",
"UPLOADER": "Uppladdad av",
"WEBSCRIPT": "Webbskript",
"TAG": "Tagg",
"PIPES": "Pipes",
"TRASHCAN": "Papperskorg",
"SOCIAL": "Social",
"SETTINGS": "Inställningar",
"CONFIG-EDITOR": "Konfigurationseditor",
"OVERLAY_VIEWER": "Överdragsvisare",
"OVERLAY_VIEWER": "Överlagringssvisare",
"ABOUT": "Om",
"SEARCH": "Utvidgad sökning",
"EXTENDED_SEARCH_QUERY_BODY": "Utvidgad sökning med frågetext",
@@ -95,7 +96,8 @@
"PEOPLE_GROUPS_CLOUD": "Personer/grupp moln",
"PEOPLE_CLOUD": "Personer moln-komponent",
"GROUPS_CLOUD": "Grupper moln-komponent",
"CONFIRM-DIALOG": "Bekräftelsedialog"
"CONFIRM-DIALOG": "Dialogruta för bekräftelse",
"COMMUNITY": "Community"
},
"TRASHCAN": {
"ACTIONS": {
@@ -109,7 +111,7 @@
}
},
"DOCUMENT_LIST": {
"MULTISELECT_CHECKBOXES": "Flera val (med kryssrutor)",
"MULTISELECT_CHECKBOXES": "Flerval (med kryssrutor)",
"THUMBNAILS": "Aktivera miniatyrbilder",
"ALLOW_DROP_FILES": "Aktivera släpp filer i en mapp",
"MULTIPLE_FILE_UPLOAD": "Uppladdning av flera filer",
@@ -177,8 +179,8 @@
"ADD_ROW": "Lägg till rad",
"REPLACE_ROWS": "Ersätt rader",
"REPLACE_COLUMNS": "Ersätt kolumner",
"LOAD_NODE": "Ladda upp nod",
"MULTISELECT": "Flera val",
"LOAD_NODE": "Läs in nod",
"MULTISELECT": "Flerval",
"MULTISELECT_DESCRIPTION": "Använd Cmd (Mac) eller Ctrl (Windows) för att växla val av flera objekt"
},
"ANALYTICS_REPORT": {
@@ -208,7 +210,7 @@
"FORM_DATA_MESSAGE": "Ange värden för att fylla formuläret",
"TYPEAHEAD_PLACEHOLDER": "Typeahead",
"RADIO_PLACEHOLDER": "Radioknapp",
"SELECT_PLACEHOLDER": "DropDown"
"SELECT_PLACEHOLDER": "Dropdown"
},
"LOGIN": {
"CONTENT_SERVICES": "Content Services",
@@ -224,12 +226,12 @@
"FACET_FIELDS": {
"TYPE": "1:Typ",
"SIZE": "2:Storlek",
"CREATOR": "3:Skapat av",
"MODIFIER": "4:Ändrat av",
"CREATOR": "3:Skapad av",
"MODIFIER": "4:Ändrad av",
"CREATED": "5:Skapad den"
},
"FACET_QUERIES": {
"MY_FACET_QUERIES": "Mina facet-förfrågningar",
"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",
+3 -1
View File
@@ -78,6 +78,7 @@
"UPLOADER": "上传程序",
"WEBSCRIPT": "Webscript",
"TAG": "标签",
"PIPES": "管道",
"TRASHCAN": "垃圾桶",
"SOCIAL": "社交",
"SETTINGS": "设置",
@@ -95,7 +96,8 @@
"PEOPLE_GROUPS_CLOUD": "人员/一组云",
"PEOPLE_CLOUD": "人员云组件",
"GROUPS_CLOUD": "组云组件",
"CONFIRM-DIALOG": "确认对话"
"CONFIRM-DIALOG": "确认对话",
"COMMUNITY": "Community"
},
"TRASHCAN": {
"ACTIONS": {
File diff suppressed because it is too large Load Diff
+2 -13
View File
@@ -12,17 +12,6 @@ router-outlet[name='overlay'] + * {
width: 100%;
}
@media (max-width: 425px) {
adf-content-node-selector {
.adf-content-node-selector-content-list {
.adf-datatable-cell {
display: none;
}
.adf-datatable-cell:first-child,
.adf-datatable-cell:nth-child(2) {
display: table-cell;
}
}
}
[dir='rtl'] .mat-icon {
transform: scale(-1, 1);
}
+48 -25
View File
@@ -21,13 +21,12 @@ import { FormsModule } from '@angular/forms';
import { FlexLayoutModule } from '@angular/flex-layout';
import { ChartsModule } from 'ng2-charts';
import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { BrowserAnimationsModule, NoopAnimationsModule } from '@angular/platform-browser/animations';
import { AppConfigService, TRANSLATION_PROVIDER, DebugAppConfigService, CoreModule, CoreAutomationService } from '@alfresco/adf-core';
import { ExtensionsModule } from '@alfresco/adf-extensions';
import { AppComponent } from './app.component';
import { MaterialModule } from './material.module';
import { LoginComponent } from './components/login/login.component';
import { LogoutComponent } from './components/logout/logout.component';
import { AppLayoutComponent } from './components/app-layout/app-layout.component';
import { HomeComponent } from './components/home/home.component';
@@ -80,23 +79,55 @@ import { CloudBreadcrumbsComponent } from './components/cloud/cloud-breadcrumb-c
import { CloudFiltersDemoComponent } from './components/cloud/cloud-filters-demo.component';
import { TemplateDemoComponent } from './components/template-list/template-demo.component';
import { PeopleGroupCloudDemoComponent } from './components/cloud/people-groups-cloud-demo.component';
import { CloudSettingsComponent } from './components/cloud/cloud-settings.component';
import { NestedMenuPositionDirective } from './components/cloud/directives/nested-menu-position.directive';
import { ConfirmDialogExampleComponent } from './components/confirm-dialog/confirm-dialog-example.component';
import { FormCloudDemoComponent } from './components/app-layout/cloud/form-demo/cloud-form-demo.component';
import { CommunityCloudComponent } from './components/cloud/community/community-cloud.component';
import { CommunityTasksCloudDemoComponent } from './components/cloud/community/community-task-cloud.component';
import { CommunityCloudFiltersDemoComponent } from './components/cloud/community/community-filters.component';
import { CommunityStartProcessCloudDemoComponent } from './components/cloud/community/community-start-process-cloud.component';
import { CommunityStartTaskCloudDemoComponent } from './components/cloud/community/community-start-task-cloud.component';
import { CommunityProcessDetailsCloudDemoComponent } from './components/cloud/community/community-process-details-cloud.component';
import { CommunityProcessesCloudDemoComponent } from './components/cloud/community/community-processes-cloud.component';
import { CommunityTaskDetailsCloudDemoComponent } from './components/cloud/community/community-task-details-cloud.component';
import { environment } from '../environments/environment';
import { AppCloudSharedModule } from './components/cloud/shared/cloud.shared.module';
import {
UserPreferenceCloudService,
PROCESS_FILTERS_SERVICE_TOKEN,
TASK_FILTERS_SERVICE_TOKEN
} from '@alfresco/adf-process-services-cloud';
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';
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,
BrowserAnimationsModule,
environment.e2e ? NoopAnimationsModule : BrowserAnimationsModule,
ReactiveFormsModule,
routing,
FormsModule,
@@ -112,11 +143,11 @@ import { CommunityTaskDetailsCloudDemoComponent } from './components/cloud/commu
ExtensionsModule.forRoot(),
ThemePickerModule,
ChartsModule,
AppCloudSharedModule,
MonacoEditorModule.forRoot()
],
declarations: [
AppComponent,
LoginComponent,
LogoutComponent,
AppLayoutComponent,
HomeComponent,
@@ -156,25 +187,17 @@ import { CommunityTaskDetailsCloudDemoComponent } from './components/cloud/commu
CloudFiltersDemoComponent,
TemplateDemoComponent,
PeopleGroupCloudDemoComponent,
CloudSettingsComponent,
NestedMenuPositionDirective,
ConfirmDialogExampleComponent,
FormCloudDemoComponent,
ConfirmDialogExampleComponent,
CommunityCloudComponent,
CommunityTasksCloudDemoComponent,
CommunityCloudFiltersDemoComponent,
CommunityProcessesCloudDemoComponent,
CommunityStartProcessCloudDemoComponent,
CommunityStartTaskCloudDemoComponent,
CommunityProcessDetailsCloudDemoComponent,
CommunityTaskDetailsCloudDemoComponent
ConfirmDialogExampleComponent
],
providers: [
{
provide: HTTP_INTERCEPTORS, useClass:
AuthBearerInterceptor, multi: true
},
{ provide: PROCESS_FILTERS_SERVICE_TOKEN, useClass: UserPreferenceCloudService },
{ provide: TASK_FILTERS_SERVICE_TOKEN, useClass: UserPreferenceCloudService },
{ provide: AppConfigService, useClass: DebugAppConfigService }, // not use this service in production
{
provide: TRANSLATION_PROVIDER,
+23 -43
View File
@@ -17,9 +17,14 @@
import { ModuleWithProviders } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { AuthGuard, AuthGuardEcm, ErrorContentComponent, AuthGuardBpm, AuthGuardSsoRoleService } from '@alfresco/adf-core';
import {
AuthGuard,
AuthGuardEcm,
ErrorContentComponent,
AuthGuardBpm,
AuthGuardSsoRoleService
} from '@alfresco/adf-core';
import { AppLayoutComponent } from './components/app-layout/app-layout.component';
import { LoginComponent } from './components/login/login.component';
import { HomeComponent } from './components/home/home.component';
import { LogoutComponent } from './components/logout/logout.component';
import { ProcessServiceComponent } from './components/process-service/process-service.component';
@@ -52,16 +57,8 @@ import { ProcessDetailsCloudDemoComponent } from './components/cloud/process-det
import { TemplateDemoComponent } from './components/template-list/template-demo.component';
import { FormCloudDemoComponent } from './components/app-layout/cloud/form-demo/cloud-form-demo.component';
import { ConfirmDialogExampleComponent } from './components/confirm-dialog/confirm-dialog-example.component';
import { CommunityTasksCloudDemoComponent } from './components/cloud/community/community-task-cloud.component';
import { CommunityCloudComponent } from './components/cloud/community/community-cloud.component';
import { CommunityStartProcessCloudDemoComponent } from './components/cloud/community/community-start-process-cloud.component';
import { CommunityStartTaskCloudDemoComponent } from './components/cloud/community/community-start-task-cloud.component';
import { CommunityProcessDetailsCloudDemoComponent } from './components/cloud/community/community-process-details-cloud.component';
import { CommunityProcessesCloudDemoComponent } from './components/cloud/community/community-processes-cloud.component';
import { CommunityTaskDetailsCloudDemoComponent } from './components/cloud/community/community-task-details-cloud.component';
export const appRoutes: Routes = [
{ path: 'login', component: LoginComponent },
{ path: 'login', loadChildren: 'app/components/login/login.module#AppLoginModule' },
{ path: 'logout', component: LogoutComponent },
{
path: 'settings',
@@ -70,8 +67,8 @@ export const appRoutes: Routes = [
{
path: 'files/:nodeId/view',
component: AppComponent,
canActivate: [ AuthGuardEcm ],
canActivateChild: [ AuthGuardEcm ],
canActivate: [AuthGuardEcm],
canActivateChild: [AuthGuardEcm],
outlet: 'overlay',
children: [
{
@@ -88,7 +85,7 @@ export const appRoutes: Routes = [
children: [
{
path: '',
loadChildren: 'app/components/blob-preview/blob-preview.module#BlobPreviewModule'
loadChildren: 'app/components/file-view/file-view.module#FileViewModule'
}
]
},
@@ -121,6 +118,15 @@ export const appRoutes: Routes = [
}
]
},
{
path: 'pipes',
children: [
{
path: '',
loadChildren: 'app/components/pipes/pipes.module#AppPipesModule'
}
]
},
{
path: 'card-view',
children: [
@@ -159,7 +165,7 @@ export const appRoutes: Routes = [
{
path: 'cloud',
canActivate: [AuthGuardSsoRoleService],
data: { roles: ['ACTIVITI_USER'], redirectUrl: '/error/403'},
data: { roles: ['ACTIVITI_USER'], redirectUrl: '/error/403' },
children: [
{
@@ -172,38 +178,12 @@ export const appRoutes: Routes = [
},
{
path: 'community',
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
}
]
loadChildren: 'app/components/cloud/community/community.module#AppCommunityModule'
},
{
path: ':appName',
canActivate: [AuthGuardSsoRoleService],
data: { clientRoles: ['appName'], roles: ['ACTIVITI_USER'], redirectUrl: '/error/403'},
data: { clientRoles: ['appName'], roles: ['ACTIVITI_USER'], redirectUrl: '/error/403' },
children: [
{
path: '',
@@ -1 +1,5 @@
<adf-about></adf-about>
<adf-about
[githubUrlCommitAlpha]="githubUrlCommitAlpha"
[version]="version"
[dependencies]="dependencies">
</adf-about>
@@ -16,6 +16,7 @@
*/
import { Component } from '@angular/core';
import { name, version, commit, dependencies } from '../../../../../package.json';
@Component({
selector: 'app-about-page',
@@ -24,6 +25,10 @@ import { Component } from '@angular/core';
})
export class AboutComponent {
githubUrlCommitAlpha = `https://github.com/Alfresco/${name}/commits/${commit}`;
version = version;
dependencies = dependencies;
constructor() {
}
@@ -1,5 +1,5 @@
<adf-sidenav-layout [sidenavMin]="70" [sidenavMax]="220" [stepOver]="780" [hideSidenav]="hideSidenav" [direction]="direction"
[expandedSidenav]="expandedSidenav" (expanded)="setState($event)" [position]="position">
<adf-sidenav-layout [sidenavMin]="70" [sidenavMax]="220" [stepOver]="780" [hideSidenav]="hideSidenav"
[expandedSidenav]="expandedSidenav" (expanded)="setState($event)" [position]="position" data-automation-id="sidenav-layout">
<adf-sidenav-layout-header>
<ng-template let-toggleMenu="toggleMenu">
@@ -14,7 +14,7 @@
<div class="adf-header-delimiexpandedSidenavter"></div>
<adf-userinfo class="adf-app-layout-user-profile" [menuPositionX]="'before'" [menuPositionY]="'above'">
<adf-userinfo [menuPositionX]="'before'" [menuPositionY]="'above'">
</adf-userinfo>
<app-theme-picker></app-theme-picker>
@@ -25,6 +25,8 @@
<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>
@@ -32,33 +34,31 @@
<adf-sidenav-layout-navigation>
<ng-template let-isMenuMinimized="isMenuMinimized">
<mat-nav-list class="adf-sidenav-linklist">
<ng-container *ngFor="let link of links">
<a appNestedMenuPosition mat-list-item #appMenuTrigger *ngIf="link.children" [attr.data-automation-id]="link.title | translate"
class="adf-sidenav-link" [matMenuTriggerFor]="nestedMenu" [menuMinimized]="isMenuMinimized()"
[matMenuTriggerData]="{links: link.children}">
<ng-container *ngIf="link.children">
<mat-list-item (click)="trigger.openMenu()" [attr.data-automation-id]="link.title | translate" class="adf-sidenav-link">
<mat-icon matListIcon>{{link.icon}}</mat-icon>
<span matLine *ngIf="!isMenuMinimized()">{{link.title | translate }}</span>
<mat-icon class="adf-sidenav-link__expand-button" [matMenuTriggerData]="{links: link.children}"
rippleTrigger mat-icon-button #trigger="matMenuTrigger"
[matMenuTriggerFor]="nestedMenu">arrow_right</mat-icon>
</mat-list-item>
</ng-container>
<mat-icon matListIcon class="adf-sidenav-menu-icon">{{link.icon}}</mat-icon>
<div class="adf-sidenav-menu-label" *ngIf="!isMenuMinimized()">
{{link.title | translate }}</div>
<mat-icon class="adf-menu-expand-icon">arrow_right</mat-icon>
</a>
<a mat-list-item *ngIf="!link.children" [attr.data-automation-id]="link.title | translate"
class="adf-sidenav-link" [routerLink]="link.href" routerLinkActive="active"
[routerLinkActiveOptions]="{ exact: true }">
<mat-icon matListIcon class="adf-sidenav-menu-icon">{{link.icon}}</mat-icon>
<div class="adf-sidenav-menu-label" *ngIf="!isMenuMinimized()">
{{link.title | translate }}</div>
</a>
<ng-container *ngIf="!link.children">
<mat-list-item [routerLink]="link.href"
routerLinkActive="adf-sidenav-link--active" [routerLinkActiveOptions]="{ exact: true }"
[attr.data-automation-id]="link.title | translate" class="adf-sidenav-link">
<mat-icon matListIcon >{{link.icon}}</mat-icon>
<span matLine *ngIf="!isMenuMinimized()">{{link.title | translate }}</span>
</mat-list-item>
</ng-container>
</ng-container>
<a mat-list-item adf-logout [enableRedirect]="enableRedirect" redirectUri="/logout"
class="adf-sidenav-link">
<mat-icon matListIcon class="adf-sidenav-menu-icon">exit_to_app</mat-icon>
<div class="adf-sidenav-menu-label" *ngIf="!isMenuMinimized()">Logout</div>
</a>
<mat-list-item adf-logout [enableRedirect]="enableRedirect" redirectUri="/logout" class="adf-sidenav-link" data-automation-id="Logout" >
<mat-icon matListIcon>exit_to_app</mat-icon>
<span matLine *ngIf="!isMenuMinimized()">Logout</span>
</mat-list-item>
</mat-nav-list>
</ng-template>
@@ -73,15 +73,16 @@
</adf-sidenav-layout>
<app-log></app-log>
<mat-menu #nestedMenu="matMenu" [xPosition]="'before'">
<mat-menu #nestedMenu="matMenu" xPosition="after" class="nestedMenu">
<ng-template matMenuContent let-links="links">
<button mat-menu-item *ngFor="let link of links"
class="adf-sidenav-link"
[attr.data-automation-id]="link.title | translate"
routerLinkActive="active"
routerLinkActive="adf-sidenav-link--active"
[routerLink]="link.href"
[routerLinkActiveOptions]="{ exact: true }">
<mat-icon matListIcon class="adf-sidenav-menu-icon">{{link.icon}}</mat-icon>
<mat-icon matListIcon>{{link.icon}}</mat-icon>
{{ link.title | translate }}
</button>
</ng-template>
@@ -1,9 +1,6 @@
@mixin adf-app-layout-theme($theme) {
$primary: map-get($theme, primary);
$background: map-get($theme, background);
$foreground: map-get($theme, foreground);
$minimumAppWidth: 320px;
$toolbarHeight: 64px;
@media screen and ($mat-xsmall) {
app-search-bar {
@@ -17,45 +14,22 @@
}
}
.adf-app-layout-toolbar {
z-index: 998;
position: relative;
overflow: visible !important;
}
.adf-app-layout {
display: flex;
flex: 1;
min-width: $minimumAppWidth;
height: 100%;
.adf-nav-container {
display: block;
min-width: $minimumAppWidth;
height: 100%;
}
.adf-sidenav-linklist {
height: 100%;
overflow: auto;
padding-bottom: 8px;
box-sizing: border-box;
.adf-sidenav-link--active {
color: mat-color($primary);
}
.adf-sidenav-link {
&.adf-active {
color: mat-color($primary);
}
.adf-sidenav-menu-icon {
margin-right: 20px;
font-size: 14px;
}
.adf-sidenav-menu-label {
.mat-list-text {
font-size: 14px;
white-space: nowrap;
min-width: 120px;
padding: 0 10px;
}
}
@@ -63,34 +37,9 @@
height: 40px;
}
&-user-profile {
margin-right: 10px;
}
&-menu-spacer {
flex: 1 1 auto;
}
&-toolbar {
height: $toolbarHeight;
line-height: $toolbarHeight;
overflow: hidden;
mat-toolbar-row {
height: $toolbarHeight;
align-items: stretch;
justify-content: space-between;
}
.adf-toolbar-link {
min-width: 0;
line-height: $toolbarHeight;
&.adf-active {
background-color: rgba(0, 0, 0, 0.12);
}
}
}
}
@media screen and ($mat-small) {
@@ -113,4 +62,8 @@
flex: auto;
}
}
[dir='rtl'] .adf-sidenav-link__expand-button {
transform: rotateY(180deg);
}
}
@@ -15,9 +15,11 @@
* limitations under the License.
*/
import { Component, ViewEncapsulation, OnInit } from '@angular/core';
import { Component, ViewEncapsulation, OnInit, OnDestroy } from '@angular/core';
import { UserPreferencesService, AppConfigService, AlfrescoApiService, UserPreferenceValues } from '@alfresco/adf-core';
import { HeaderDataService } from '../header-data/header-data.service';
import { Subject } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
@Component({
templateUrl: 'app-layout.component.html',
@@ -27,8 +29,8 @@ import { HeaderDataService } from '../header-data/header-data.service';
},
encapsulation: ViewEncapsulation.None
})
export class AppLayoutComponent implements OnInit {
export class AppLayoutComponent implements OnInit, OnDestroy {
private onDestroy$ = new Subject<boolean>();
links: Array<any> = [
{ href: '/home', icon: 'home', title: 'APP_LAYOUT.HOME' },
@@ -72,6 +74,7 @@ export class AppLayoutComponent implements OnInit {
{ href: '/webscript', icon: 'extension', title: 'APP_LAYOUT.WEBSCRIPT' },
{ href: '/tag', icon: 'local_offer', title: 'APP_LAYOUT.TAG' },
{ href: '/social', icon: 'thumb_up', title: 'APP_LAYOUT.SOCIAL' },
{ href: '/pipes', icon: 'layers', title: 'APP_LAYOUT.PIPES' },
{ href: '/settings-layout', icon: 'settings', title: 'APP_LAYOUT.SETTINGS' },
{ href: '/config-editor', icon: 'code', title: 'APP_LAYOUT.CONFIG-EDITOR' },
{ href: '/extendedSearch', icon: 'search', title: 'APP_LAYOUT.SEARCH' },
@@ -107,31 +110,52 @@ export class AppLayoutComponent implements OnInit {
this.expandedSidenav = expand;
}
this.headerService.hideMenu.subscribe((show) => this.showMenu = show);
this.headerService.color.subscribe((color) => this.color = color);
this.headerService.title.subscribe((title) => this.title = title);
this.headerService.logo.subscribe((path) => this.logo = path);
this.headerService.redirectUrl.subscribe((redirectUrl) => this.redirectUrl = redirectUrl);
this.headerService.tooltip.subscribe((tooltip) => this.tooltip = tooltip);
this.headerService.position.subscribe((position) => this.position = position);
this.headerService.hideSidenav.subscribe((hideSidenav) => this.hideSidenav = hideSidenav);
this.headerService.hideMenu
.pipe(takeUntil(this.onDestroy$))
.subscribe(show => this.showMenu = show);
this.userPreferencesService.select('textOrientation').subscribe((textOrientation) => {
this.direction = textOrientation;
});
this.headerService.color
.pipe(takeUntil(this.onDestroy$))
.subscribe(color => this.color = color);
this.headerService.title
.pipe(takeUntil(this.onDestroy$))
.subscribe(title => this.title = title);
this.headerService.logo
.pipe(takeUntil(this.onDestroy$))
.subscribe(path => this.logo = path);
this.headerService.redirectUrl
.pipe(takeUntil(this.onDestroy$))
.subscribe(redirectUrl => this.redirectUrl = redirectUrl);
this.headerService.tooltip
.pipe(takeUntil(this.onDestroy$))
.subscribe(tooltip => this.tooltip = tooltip);
this.headerService.position
.pipe(takeUntil(this.onDestroy$))
.subscribe(position => this.position = position);
this.headerService.hideSidenav
.pipe(takeUntil(this.onDestroy$))
.subscribe(hideSidenav => this.hideSidenav = hideSidenav);
}
ngOnDestroy() {
this.onDestroy$.next(true);
this.onDestroy$.complete();
}
constructor(
private userPreferences: UserPreferencesService,
private config: AppConfigService,
private alfrescoApiService: AlfrescoApiService,
private userPreferencesService: UserPreferencesService,
private headerService: HeaderDataService) {
if (this.alfrescoApiService.getInstance().isOauthConfiguration()) {
this.enableRedirect = false;
}
this.userPreferencesService.set('textOrientation', this.direction);
}
setState(state) {
@@ -1,7 +1,7 @@
<div class="main-content">
<mat-tab-group>
<mat-tab label="Form">
<mat-tab label="Form" class="form-cloud-render">
<div class="adf-form-container">
<adf-cloud-form
[showRefreshButton]="false"
@@ -17,7 +17,7 @@
translate}}</p>
</div>
</mat-tab>
<mat-tab label="Editor">
<mat-tab label="Editor" class="form-cloud-editor">
<ngx-monaco-editor
id="adf-form-config-editor"
class="adf-form-config-editor"
@@ -16,10 +16,9 @@
*/
import { Component, OnDestroy, OnInit } from '@angular/core';
import { FormFieldModel, NotificationService, FormRenderingService } from '@alfresco/adf-core';
import { FormFieldModel, NotificationService, FormRenderingService, CoreAutomationService } from '@alfresco/adf-core';
import { FormCloud, FormCloudService, UploadCloudWidgetComponent } from '@alfresco/adf-process-services-cloud';
import { Subscription } from 'rxjs';
import { formDefinition } from './demo-form';
@Component({
templateUrl: 'cloud-form-demo.component.html',
@@ -45,7 +44,8 @@ export class FormCloudDemoComponent implements OnInit, OnDestroy {
constructor(
private notificationService: NotificationService,
private formRenderingService: FormRenderingService,
private formService: FormCloudService) {
private formService: FormCloudService,
private automationService: CoreAutomationService) {
this.formRenderingService.setComponentTypeResolver('upload', () => UploadCloudWidgetComponent, true);
}
@@ -54,7 +54,7 @@ export class FormCloudDemoComponent implements OnInit, OnDestroy {
}
ngOnInit() {
this.formConfig = formDefinition;
this.formConfig = JSON.stringify(this.automationService.forms.getFormCloudDefinition());
this.parseForm();
}
@@ -1,96 +0,0 @@
/*!
* @license
* Copyright 2019 Alfresco Software, Ltd.
*
* 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.
*/
export const formDefinition = `{
"formRepresentation": {
"id": "text-form",
"name": "test-start-form",
"version": 0,
"description": "",
"formDefinition": {
"tabs": [],
"fields": [
{
"id": "1511517333638",
"type": "container",
"fieldType": "ContainerRepresentation",
"name": "Label",
"tab": null,
"numberOfColumns": 2,
"fields": {
"1": [
{
"fieldType": "FormFieldRepresentation",
"id": "texttest",
"name": "texttest",
"type": "text",
"value": null,
"required": false,
"placeholder": "text",
"params": {
"existingColspan": 2,
"maxColspan": 6,
"inputMaskReversed": true,
"inputMask": "0#",
"inputMaskPlaceholder": "(0-9)"
}
}
],
"2": [{
"fieldType": "AttachFileFieldRepresentation",
"id": "attachfiletest",
"name": "attachfiletest",
"type": "upload",
"required": true,
"colspan": 2,
"placeholder": "attachfile",
"params": {
"existingColspan": 2,
"maxColspan": 2,
"fileSource": {
"serviceId": "local-file",
"name": "Local File"
},
"multiple": true,
"link": false
},
"visibilityCondition": {
}
}]
}
}
],
"outcomes": [],
"metadata": {
"property1": "value1",
"property2": "value2"
},
"variables": [
{
"name": "variable1",
"type": "string",
"value": "value1"
},
{
"name": "variable2",
"type": "string",
"value": "value2"
}
]
}
}}
`;
@@ -1,5 +0,0 @@
<adf-viewer
[showViewer]="true"
[blobFile]="content"
[displayName]="name">
</adf-viewer>
@@ -8,13 +8,6 @@
margin: 10px 0;
}
.adf-full-content-toolbar {
.adf-toolbar-title {
display: flex;
width: 100%;
.adf-breadcrumb {
width: 0;
}
}
.adf-full-content-toolbar .adf-toolbar-title .adf-breadcrumb {
width: 0;
}
@@ -4,7 +4,9 @@
<mat-card class="adf-card-view">
<adf-card-view
[properties]="properties"
[editable]="true">
[editable]="true"
[displayClearAction]="showClearDateAction"
[displayNoneOption]="showNoneOption">
</adf-card-view>
</mat-card>
@@ -22,6 +24,20 @@
(change)="toggleEditable()"
[checked]="isEditable">
Editable
</mat-slide-toggle><br>
<mat-slide-toggle
id="adf-toggle-clear-date"
[color]="'primary'"
(change)="toggleClearDate()"
[checked]="showClearDateAction">
Show clear date icon
</mat-slide-toggle><br>
<mat-slide-toggle
id="adf-toggle-none-option"
[color]="'primary'"
(change)="toggleNoneOption()"
[checked]="showNoneOption">
Show none option
</mat-slide-toggle>
</p>
@@ -15,7 +15,7 @@
* limitations under the License.
*/
import { Component, OnInit, ElementRef, ViewChild } from '@angular/core';
import { Component, OnInit, ElementRef, ViewChild, OnDestroy } from '@angular/core';
import {
CardViewTextItemModel,
CardViewDateItemModel,
@@ -27,23 +27,30 @@ import {
CardViewSelectItemModel,
CardViewUpdateService,
CardViewMapItemModel,
UpdateNotification
UpdateNotification,
DecimalNumberPipe
} from '@alfresco/adf-core';
import { of } from 'rxjs';
import { of, Subject } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
@Component({
templateUrl: './card-view.component.html',
styleUrls: ['./card-view.component.scss']
})
export class CardViewComponent implements OnInit {
export class CardViewComponent implements OnInit, OnDestroy {
@ViewChild('console') console: ElementRef;
isEditable = true;
properties: any;
logs: string[];
showClearDateAction = false;
showNoneOption = false;
constructor(private cardViewUpdateService: CardViewUpdateService) {
private onDestroy$ = new Subject<boolean>();
constructor(private cardViewUpdateService: CardViewUpdateService,
private decimalNumberPipe: DecimalNumberPipe) {
this.logs = [];
this.createCard();
}
@@ -53,7 +60,14 @@ export class CardViewComponent implements OnInit {
}
ngOnInit() {
this.cardViewUpdateService.itemUpdated$.subscribe(this.onItemChange.bind(this));
this.cardViewUpdateService.itemUpdated$
.pipe(takeUntil(this.onDestroy$))
.subscribe(this.onItemChange.bind(this));
}
ngOnDestroy() {
this.onDestroy$.next(true);
this.onDestroy$.complete();
}
createCard() {
@@ -72,7 +86,7 @@ export class CardViewComponent implements OnInit {
value: new Date(1983, 11, 24, 10, 0, 30),
key: 'date',
default: new Date(1983, 11, 24, 10, 0, 30),
format: 'DD.MM.YYYY',
format: 'shortDate',
editable: this.isEditable
}),
new CardViewDatetimeItemModel({
@@ -80,7 +94,7 @@ export class CardViewComponent implements OnInit {
value: new Date(1983, 11, 24, 10, 0, 0),
key: 'datetime',
default: new Date(1983, 11, 24, 10, 0, 0),
format: 'DD.MM.YYYY',
format: 'short',
editable: this.isEditable
}),
new CardViewBoolItemModel({
@@ -102,7 +116,8 @@ export class CardViewComponent implements OnInit {
value: 9.9,
key: 'float',
default: 0.0,
editable: this.isEditable
editable: this.isEditable,
pipes: [{ pipe: this.decimalNumberPipe}]
}),
new CardViewKeyValuePairsItemModel({
label: 'CardView Key-Value Pairs Item',
@@ -153,6 +168,14 @@ export class CardViewComponent implements OnInit {
this.createCard();
}
toggleClearDate() {
this.showClearDateAction = !this.showClearDateAction;
}
toggleNoneOption() {
this.showNoneOption = !this.showNoneOption;
}
reset() {
this.isEditable = true;
this.createCard();
@@ -19,26 +19,24 @@ import { Component, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
@Component({
selector: 'app-cloud-breadcrumbs',
templateUrl: './cloud-breadcrumb-component.html',
styleUrls: ['cloud-breadcrumb-component.scss']
selector: 'app-cloud-breadcrumbs',
templateUrl: './cloud-breadcrumb-component.html',
styleUrls: ['cloud-breadcrumb-component.scss']
})
export class CloudBreadcrumbsComponent implements OnInit {
appName: string;
filterName: string;
appName: string;
filterName: string;
constructor(private route: ActivatedRoute) {}
constructor(private route: ActivatedRoute) { }
ngOnInit() {
this.route.parent.params.subscribe((
params) => {
this.appName = params.appName;
});
this.route.queryParams.subscribe((params) => {
if (params.filterName) {
this.filterName = params.filterName;
}
});
}
ngOnInit() {
this.route.parent.params.subscribe(params => {
this.appName = params.appName;
});
this.route.queryParams.subscribe(params => {
if (params.filterName) {
this.filterName = params.filterName;
}
});
}
}
@@ -46,8 +46,9 @@ export class CloudFiltersDemoComponent implements OnInit {
) {}
ngOnInit() {
this.currentTaskFilter$ = this.cloudLayoutService.getCurrentTaskFilterParam();
this.currentProcessFilter$ = this.cloudLayoutService.getCurrentProcessFilterParam();
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;
@@ -62,13 +63,13 @@ export class CloudFiltersDemoComponent implements OnInit {
}
onTaskFilterSelected(filter) {
this.cloudLayoutService.setCurrentTaskFilterParam({id: filter.id});
this.cloudLayoutService.setCurrentTaskFilterParam({id: filter && filter.id ? filter.id : ''});
const currentFilter = Object.assign({}, filter);
this.router.navigate([`/cloud/${this.appName}/tasks/`], { queryParams: currentFilter });
}
onProcessFilterSelected(filter) {
this.cloudLayoutService.setCurrentProcessFilterParam({id: filter.id});
this.cloudLayoutService.setCurrentProcessFilterParam({id: filter && filter.id ? filter.id : ''});
const currentFilter = Object.assign({}, filter);
this.router.navigate([`/cloud/${this.appName}/processes/`], { queryParams: currentFilter });
}
@@ -1,24 +0,0 @@
<div fxFlex fxLayout="column" class="adf-settings-container">
<mat-slide-toggle [color]="'primary'" [checked]="multiselect" (change)="toggleMultiselect()" data-automation-id="multiSelection">
{{ 'SETTINGS_CLOUD.MULTISELECTION' | translate }}
</mat-slide-toggle>
<mat-slide-toggle [color]="'primary'" [checked]="testingMode" (change)="toggleTestingMode()" data-automation-id="testingMode">
{{ 'SETTINGS_CLOUD.TESTING_MODE' | translate }}
</mat-slide-toggle>
<mat-slide-toggle [color]="'primary'" [checked]="taskDetailsRedirection" (change)="toggleTaskDetailsRedirection()" data-automation-id="taskDetailsRedirection">
{{ 'SETTINGS_CLOUD.TASK_DETAILS_REDIRECTION' | translate }}
</mat-slide-toggle>
<mat-slide-toggle [color]="'primary'" [checked]="processDetailsRedirection" (change)="toggleProcessDetailsRedirection()" data-automation-id="processDetailsRedirection">
{{ 'SETTINGS_CLOUD.PROCESS_DETAILS_REDIRECTION' | translate }}
</mat-slide-toggle>
<mat-form-field data-automation-id="selectionMode">
<mat-label>
{{ 'SETTINGS_CLOUD.SELECTION_MODE' | translate }}
</mat-label>
<mat-select [(ngModel)]="selectionMode" (selectionChange)="onSelectionModeChange()">
<mat-option *ngFor="let option of selectionModeOptions" [value]="option.value">
{{ option.title }}
</mat-option>
</mat-select>
</mat-form-field>
</div>
@@ -15,32 +15,24 @@
* limitations under the License.
*/
import { Component, OnDestroy, OnInit } from '@angular/core';
import { Component, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { Subscription } from 'rxjs';
import { Params } from '@angular/router/src/shared';
@Component({
selector: 'app-cloud-viewer',
templateUrl: './cloud-viewer.component.html'
})
export class CloudViewerComponent implements OnInit, OnDestroy {
export class CloudViewerComponent implements OnInit {
nodeId: string;
private sub: Subscription;
constructor(private route: ActivatedRoute) {
}
ngOnInit() {
this.sub = this.route.params.subscribe((params: Params) => {
this.route.params.subscribe((params: Params) => {
this.nodeId = params['nodeId'];
});
}
ngOnDestroy() {
this.sub.unsubscribe();
}
}
@@ -29,7 +29,7 @@ import { CloudLayoutService } from '../services/cloud-layout.service';
height: 100% !important;
}
`],
encapsulation: ViewEncapsulation.None
encapsulation: ViewEncapsulation.None
})
export class CommunityCloudComponent {
@@ -45,8 +45,9 @@ export class CommunityCloudFiltersDemoComponent implements OnInit {
) {}
ngOnInit() {
this.currentTaskFilter$ = this.cloudLayoutService.getCurrentTaskFilterParam();
this.currentProcessFilter$ = this.cloudLayoutService.getCurrentProcessFilterParam();
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;
@@ -15,7 +15,7 @@
* limitations under the License.
*/
import { Component, ViewChild, OnInit } from '@angular/core';
import { Component, ViewChild, OnInit, OnDestroy } from '@angular/core';
import {
ProcessListCloudComponent,
ProcessFilterCloudModel,
@@ -27,12 +27,14 @@ import {
import { ActivatedRoute, Router } from '@angular/router';
import { UserPreferencesService, AppConfigService } 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';
@Component({
templateUrl: './community-processes-cloud.component.html'
})
export class CommunityProcessesCloudDemoComponent implements OnInit {
export class CommunityProcessesCloudDemoComponent implements OnInit, OnDestroy {
public static ACTION_SAVE_AS = 'saveAs';
static PROCESS_FILTER_PROPERTY_KEYS = 'adf-edit-process-filter';
@@ -56,6 +58,8 @@ export class CommunityProcessesCloudDemoComponent implements OnInit {
editedFilter: ProcessFilterCloudModel;
private onDestroy$ = new Subject<boolean>();
constructor(
private route: ActivatedRoute,
private router: Router,
@@ -63,7 +67,10 @@ export class CommunityProcessesCloudDemoComponent implements OnInit {
private userPreference: UserPreferencesService,
private processFilterCloudService: ProcessFilterCloudService,
private appConfig: AppConfigService) {
const properties = this.appConfig.get<Array<any>>(CommunityProcessesCloudDemoComponent.PROCESS_FILTER_PROPERTY_KEYS);
const properties = this.appConfig.get<Array<any>>(
CommunityProcessesCloudDemoComponent.PROCESS_FILTER_PROPERTY_KEYS
);
if (properties) {
this.processFilterProperties = properties;
}
@@ -71,6 +78,7 @@ export class CommunityProcessesCloudDemoComponent implements OnInit {
ngOnInit() {
this.isFilterLoaded = false;
this.route.parent.params.subscribe((params) => {
this.appName = params.appName;
});
@@ -85,14 +93,23 @@ export class CommunityProcessesCloudDemoComponent implements OnInit {
}
});
this.cloudLayoutService.getCurrentSettings()
.subscribe((settings) => this.setCurrentSettings(settings));
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]);
});
this.processFilterCloudService
.getProcessFilters('community')
.subscribe((filters: ProcessFilterCloudModel[]) => {
this.onFilterChange(filters[0]);
});
}
setCurrentSettings(settings) {
@@ -103,7 +120,7 @@ export class CommunityProcessesCloudDemoComponent implements OnInit {
}
}
onChangePageSize(event) {
onChangePageSize(event: Pagination) {
this.userPreference.paginationSize = event.maxItems;
}
@@ -111,13 +128,18 @@ export class CommunityProcessesCloudDemoComponent implements OnInit {
this.selectedRows = [];
}
onRowClick(processInstanceId) {
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 })];
this.sortArray = [
new ProcessListCloudSortingModel({
orderBy: this.editedFilter.sort,
direction: this.editedFilter.order
})
];
}
onProcessFilterAction(filterAction: any) {
@@ -15,11 +15,14 @@
* limitations under the License.
*/
import { Component, ViewChild, OnInit } from '@angular/core';
import { Component, ViewChild, OnInit, OnDestroy } from '@angular/core';
import { TaskListCloudComponent, TaskListCloudSortingModel, TaskFilterCloudModel, TaskFilterCloudService } from '@alfresco/adf-process-services-cloud';
import { UserPreferencesService, AppConfigService } 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';
@Component({
templateUrl: './community-task-cloud.component.html',
@@ -28,8 +31,7 @@ import { CloudLayoutService } from '../services/cloud-layout.service';
}
`]
})
export class CommunityTasksCloudDemoComponent implements OnInit {
export class CommunityTasksCloudDemoComponent implements OnInit, OnDestroy {
public static ACTION_SAVE_AS = 'saveAs';
static TASK_FILTER_PROPERTY_KEYS = 'adf-edit-task-filter';
@@ -51,6 +53,8 @@ export class CommunityTasksCloudDemoComponent implements OnInit {
selectionMode: string;
taskDetailsRedirection: boolean;
private onDestroy$ = new Subject<boolean>();
constructor(
private cloudLayoutService: CloudLayoutService,
private route: ActivatedRoute,
@@ -79,14 +83,23 @@ export class CommunityTasksCloudDemoComponent implements OnInit {
}
});
this.cloudLayoutService.getCurrentSettings()
.subscribe((settings) => this.setCurrentSettings(settings));
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]);
});
this.taskFilterCloudService
.getTaskListFilters('community')
.subscribe((filters: TaskFilterCloudModel[]) => {
this.onFilterChange(filters[0]);
});
}
setCurrentSettings(settings) {
@@ -98,7 +111,7 @@ export class CommunityTasksCloudDemoComponent implements OnInit {
}
}
onChangePageSize(event) {
onChangePageSize(event: Pagination) {
this.userPreference.paginationSize = event.maxItems;
}
@@ -106,7 +119,7 @@ export class CommunityTasksCloudDemoComponent implements OnInit {
this.selectedRows = [];
}
onRowClick(taskId) {
onRowClick(taskId: string) {
if (!this.multiselect && this.selectionMode !== 'multiple' && this.taskDetailsRedirection) {
this.router.navigate([`/cloud/community/task-details/${taskId}`]);
}
@@ -5,7 +5,7 @@
display: flex;
}
&-task-tiitle {
&-task-title {
margin-left:15px;
}
@@ -0,0 +1,97 @@
/*!
* @license
* Copyright 2019 Alfresco Software, Ltd.
*
* 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 { FlexLayoutModule } from '@angular/flex-layout';
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.forChild(),
ProcessServicesCloudModule,
RouterModule.forChild(routes),
AppCloudSharedModule,
FlexLayoutModule
],
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,43 +0,0 @@
/*!
* @license
* Copyright 2019 Alfresco Software, Ltd.
*
* 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 { Directive, HostListener, Input } from '@angular/core';
@Directive({
selector: '[appNestedMenuPosition]'
})
export class NestedMenuPositionDirective {
@Input()
menuMinimized: string;
nestedMenuLeftPadding: string = '220px';
@HostListener('click', ['$event'])
onClick() {
const overlayContainer = (document.querySelector('.cdk-overlay-connected-position-bounding-box') as HTMLElement);
(document.querySelector('.cdk-overlay-pane') as HTMLElement).style.width = '100%';
if (!this.menuMinimized) {
setTimeout(() => {
overlayContainer.style.left = this.nestedMenuLeftPadding;
});
}
}
}
@@ -27,7 +27,7 @@
<input matInput (input)="setPeopleAppName($event)" data-automation-id="adf-people-app-input" />
</mat-form-field>
<mat-form-field class="adf-preselect-value-full">
<mat-label>{{ 'PEOPLE_GROUPS_CLOUD.PRESELECTED_VALUE' | translate }}: {{ DEFAULT_PEOPLE_PLACEHOLDER }}</mat-label>
<mat-label>{{ 'PEOPLE_GROUPS_CLOUD.PRESELECTED_VALUE' | translate }} {{ DEFAULT_PEOPLE_PLACEHOLDER }}</mat-label>
<input matInput (input)="setPeoplePreselectValue($event)" data-automation-id="adf-people-preselect-input" />
</mat-form-field>
<mat-checkbox class="adf-preselect-value" (change)="onChangePeopleValidation($event)">{{
@@ -16,8 +16,9 @@
*/
import { Component, ViewEncapsulation } from '@angular/core';
import { PeopleCloudComponent, GroupCloudComponent, GroupModel } from '@alfresco/adf-process-services-cloud';
import { PeopleCloudComponent, GroupCloudComponent } from '@alfresco/adf-process-services-cloud';
import { MatRadioChange, MatCheckboxChange } from '@angular/material';
import { IdentityGroupModel } from '@alfresco/adf-core';
@Component({
selector: 'app-people-groups-cloud',
@@ -39,8 +40,8 @@ export class PeopleGroupCloudDemoComponent {
peoplePreselectValidation: Boolean = false;
groupMode: string = GroupCloudComponent.MODE_SINGLE;
preSelectGroup: GroupModel[] = [];
selectedGroupList: GroupModel[] = [];
preSelectGroup: IdentityGroupModel[] = [];
selectedGroupList: IdentityGroupModel[] = [];
groupRoles: string[];
groupAppName: string;
groupFilterMode: string = this.DEFAULT_FILTER_MODE;
@@ -144,11 +145,11 @@ export class PeopleGroupCloudDemoComponent {
return this.groupMode === GroupCloudComponent.MODE_MULTIPLE;
}
onRemoveGroup(group: GroupModel) {
onRemoveGroup(group: IdentityGroupModel) {
this.preSelectGroup = this.preSelectGroup.filter((value: any) => value.id !== group.id);
}
onSelectGroup(group: GroupModel) {
onSelectGroup(group: IdentityGroupModel) {
if (this.groupMode === GroupCloudComponent.MODE_MULTIPLE) {
this.preSelectGroup.push(group);
}
@@ -24,7 +24,13 @@
[lastModifiedTo]="editedFilter.lastModifiedTo"
[sorting]="sortArray"
[selectionMode]="selectionMode"
[stickyHeader]="true"
[showActions]="actionMenu"
[showContextMenu]="contextMenu"
[multiselect]="multiselect"
(showRowActionsMenu)="onShowRowActionsMenu($event)"
(showRowContextMenu)="onShowRowContextMenu($event)"
(executeRowAction)="onExecuteRowAction($event)"
(rowClick)="onRowClick($event)"
(rowsSelected)="onRowsSelected($event)">
</adf-cloud-process-list>
@@ -35,10 +41,28 @@
(prevPage)="resetSelectedRows()">
</adf-pagination>
<div *ngIf="testingMode">
Selected rows:
<ul>
<li *ngFor="let row of selectedRows">{{ row.id }}</li>
</ul>
<div *ngIf="multiselect">
{{ 'SETTINGS_CLOUD.SELECTED_ROWS' | translate }}:
<ul>
<li *ngFor="let row of selectedRows">{{ row.id }}</li>
</ul>
</div>
<div *ngIf="actionMenu">
<span>{{ 'SETTINGS_CLOUD.ACTION.ACTION_MENU' | translate }}:</span>
<br>
<div *ngIf="selectedAction">
<span>{{ 'SETTINGS_CLOUD.ACTION.PROCESS_ID' | translate }}: {{ selectedAction.id }}</span><br>
<span>{{ 'SETTINGS_CLOUD.ACTION.ACTION_TYPE' | translate }}: {{ selectedAction.actionType }}</span>
</div>
</div>
<div *ngIf="contextMenu">
<span>{{ 'SETTINGS_CLOUD.ACTION.CONTEX_MENU' | translate }}:</span>
<br>
<div *ngIf="selectedContextAction">
<span>{{ 'SETTINGS_CLOUD.ACTION.PROCESS_ID' | translate }}: {{ selectedContextAction.id }}</span><br>
<span>{{ 'SETTINGS_CLOUD.ACTION.ACTION_TYPE' | translate }}: {{ selectedContextAction.actionType }}</span>
</div>
</div>
</div>
</div>
</div>
@@ -15,7 +15,7 @@
* limitations under the License.
*/
import { Component, ViewChild, OnInit } from '@angular/core';
import { Component, ViewChild, OnInit, OnDestroy } from '@angular/core';
import {
ProcessListCloudComponent,
ProcessFilterCloudModel,
@@ -24,14 +24,17 @@ import {
} from '@alfresco/adf-process-services-cloud';
import { ActivatedRoute, Router } from '@angular/router';
import { UserPreferencesService, AppConfigService } from '@alfresco/adf-core';
import { CloudLayoutService } from './services/cloud-layout.service';
import { UserPreferencesService, AppConfigService, DataCellEvent } from '@alfresco/adf-core';
import { CloudLayoutService, CloudServiceSettings } from './services/cloud-layout.service';
import { Subject } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
import { Pagination } from '@alfresco/js-api';
@Component({
templateUrl: './processes-cloud-demo.component.html',
styleUrls: ['./processes-cloud-demo.component.scss']
})
export class ProcessesCloudDemoComponent implements OnInit {
export class ProcessesCloudDemoComponent implements OnInit, OnDestroy {
public static ACTION_SAVE_AS = 'saveAs';
static PROCESS_FILTER_PROPERTY_KEYS = 'adf-edit-process-filter';
@@ -52,11 +55,19 @@ export class ProcessesCloudDemoComponent implements OnInit {
selectionMode: string;
selectedRows: string[] = [];
testingMode: boolean;
actionMenu: boolean;
contextMenu: boolean;
actions: any[] = [];
selectedAction: { id: number, name: string, actionType: string};
selectedContextAction: { id: number, name: string, actionType: string};
processFilterProperties: any = { filterProperties: [], sortProperties: [], actions: [] };
processDetailsRedirection: boolean;
editedFilter: ProcessFilterCloudModel;
private performAction$ = new Subject<any>();
private onDestroy$ = new Subject<boolean>();
constructor(
private route: ActivatedRoute,
private router: Router,
@@ -81,20 +92,30 @@ export class ProcessesCloudDemoComponent implements OnInit {
this.filterId = params.id;
});
this.cloudLayoutService.getCurrentSettings()
.subscribe((settings) => this.setCurrentSettings(settings));
this.cloudLayoutService.settings$
.pipe(takeUntil(this.onDestroy$))
.subscribe(settings => this.setCurrentSettings(settings));
this.performContextActions();
}
setCurrentSettings(settings) {
ngOnDestroy() {
this.onDestroy$.next(true);
this.onDestroy$.complete();
}
setCurrentSettings(settings: CloudServiceSettings) {
if (settings) {
this.multiselect = settings.multiselect;
this.testingMode = settings.testingMode;
this.selectionMode = settings.selectionMode;
this.processDetailsRedirection = settings.processDetailsRedirection;
this.actionMenu = settings.actionMenu;
this.contextMenu = settings.contextMenu;
this.actions = settings.actions;
}
}
onChangePageSize(event) {
onChangePageSize(event: Pagination) {
this.userPreference.paginationSize = event.maxItems;
}
@@ -102,7 +123,7 @@ export class ProcessesCloudDemoComponent implements OnInit {
this.selectedRows = [];
}
onRowClick(processInstanceId) {
onRowClick(processInstanceId: string) {
if (!this.multiselect && this.selectionMode !== 'multiple' && this.processDetailsRedirection) {
this.router.navigate([`/cloud/${this.appName}/process-details/${processInstanceId}`]);
}
@@ -110,7 +131,12 @@ export class ProcessesCloudDemoComponent implements OnInit {
onFilterChange(query: any) {
this.editedFilter = Object.assign({}, query);
this.sortArray = [new ProcessListCloudSortingModel({ orderBy: this.editedFilter.sort, direction: this.editedFilter.order })];
this.sortArray = [
new ProcessListCloudSortingModel({
orderBy: this.editedFilter.sort,
direction: this.editedFilter.order
})
];
}
onProcessFilterAction(filterAction: any) {
@@ -124,4 +150,41 @@ export class ProcessesCloudDemoComponent implements OnInit {
this.resetSelectedRows();
this.selectedRows = nodes.map((node) => node.obj.entry);
}
onShowRowActionsMenu(event: DataCellEvent) {
event.value.actions = this.actions;
}
onShowRowContextMenu(event: DataCellEvent) {
event.value.actions = this.actions.map((action) => {
return {
data: event.value.row['obj'],
model: action,
subject: this.performAction$
};
});
}
onExecuteRowAction(row: any) {
const value = row.value.row['obj'].entry;
const action = row.value.action;
this.selectedAction = {id: value.id, name: value.name, actionType: action.title};
}
performContextActions() {
this.performAction$
.pipe(takeUntil(this.onDestroy$))
.subscribe((action: any) => {
if (action) {
this.onExecuteContextAction(action);
}
});
}
onExecuteContextAction(contextAction: any) {
const value = contextAction.data.entry;
const action = contextAction.model;
this.selectedContextAction = {id: value.id, name: value.name, actionType: action.title};
}
}
@@ -16,55 +16,65 @@
*/
import { Injectable } from '@angular/core';
import { Observable, BehaviorSubject } from 'rxjs';
import { BehaviorSubject } from 'rxjs';
export interface CloudServiceSettings {
multiselect: boolean;
actionMenu: boolean;
contextMenu: boolean;
testingMode: boolean;
taskDetailsRedirection: boolean;
processDetailsRedirection: boolean;
selectionMode: string;
actions: any[];
}
export interface FilterSettings {
id?: string;
index?: number;
key?: string;
}
export class ActionMenuModel {
constructor(
public key: string,
public icon: string,
public title: string,
public visible?: boolean,
public disable?: boolean
) { }
}
@Injectable({
providedIn: 'root'
})
export class CloudLayoutService {
private settings = {
private settings: CloudServiceSettings = {
multiselect: false,
actionMenu: false,
contextMenu: false,
testingMode: false,
taskDetailsRedirection: true,
processDetailsRedirection: true,
selectionMode: 'single'
selectionMode: 'single',
actions: []
};
private filterTaskSubject: BehaviorSubject<any> = new BehaviorSubject({index: 0});
private filterTask$: Observable<any>;
private filterProcessSubject: BehaviorSubject<any> = new BehaviorSubject({index: 0});
private filterProcess$: Observable<any>;
private settingsSubject: BehaviorSubject<any> = new BehaviorSubject(this.settings);
private settings$: Observable<any>;
taskFilter$ = new BehaviorSubject<FilterSettings>({index: 0});
processFilter$ = new BehaviorSubject<FilterSettings>({index: 0});
settings$ = new BehaviorSubject<CloudServiceSettings>(this.settings);
constructor() {
this.filterTask$ = this.filterTaskSubject.asObservable();
this.filterProcess$ = this.filterProcessSubject.asObservable();
this.settings$ = this.settingsSubject.asObservable();
setCurrentTaskFilterParam(param: FilterSettings) {
this.taskFilter$.next(param);
}
getCurrentTaskFilterParam() {
return this.filterTask$;
setCurrentProcessFilterParam(param: FilterSettings) {
this.processFilter$.next(param);
}
setCurrentTaskFilterParam(param) {
this.filterTaskSubject.next(param);
}
getCurrentProcessFilterParam() {
return this.filterProcess$;
}
setCurrentProcessFilterParam(param) {
this.filterProcessSubject.next(param);
}
getCurrentSettings() {
return this.settings$;
}
setCurrentSettings(param) {
this.settingsSubject.next(param);
setCurrentSettings(param: CloudServiceSettings) {
this.settings$.next(param);
}
}
@@ -0,0 +1,71 @@
<div fxFlex fxLayout="column" class="adf-settings-container">
<mat-slide-toggle [color]="'primary'" [checked]="multiselect" (change)="toggleMultiselect()" data-automation-id="multiSelection">
{{ 'SETTINGS_CLOUD.MULTISELECTION' | translate }}
</mat-slide-toggle>
<mat-slide-toggle [color]="'primary'" [checked]="actionMenu" (change)="toggleActionMenu()" data-automation-id="actionmenu">
{{ 'SETTINGS_CLOUD.ACTION.ACTION_MENU' | translate }}
</mat-slide-toggle>
<mat-slide-toggle [color]="'primary'" [checked]="contextMenu" (change)="toggleContextMenu()" data-automation-id="contextmenu">
{{ 'SETTINGS_CLOUD.ACTION.CONTEX_MENU' | translate }}
</mat-slide-toggle>
<mat-slide-toggle [color]="'primary'" [checked]="testingMode" (change)="toggleTestingMode()" data-automation-id="testingMode">
{{ 'SETTINGS_CLOUD.TESTING_MODE' | translate }}
</mat-slide-toggle>
<mat-slide-toggle [color]="'primary'" [checked]="taskDetailsRedirection" (change)="toggleTaskDetailsRedirection()" data-automation-id="taskDetailsRedirection">
{{ 'SETTINGS_CLOUD.TASK_DETAILS_REDIRECTION' | translate }}
</mat-slide-toggle>
<mat-slide-toggle [color]="'primary'" [checked]="processDetailsRedirection" (change)="toggleProcessDetailsRedirection()" data-automation-id="processDetailsRedirection">
{{ 'SETTINGS_CLOUD.PROCESS_DETAILS_REDIRECTION' | translate }}
</mat-slide-toggle>
<mat-form-field data-automation-id="selectionMode">
<mat-label>
{{ 'SETTINGS_CLOUD.SELECTION_MODE' | translate }}
</mat-label>
<mat-select [(ngModel)]="selectionMode" (selectionChange)="onSelectionModeChange()">
<mat-option *ngFor="let option of selectionModeOptions" [value]="option.value">
{{ option.title }}
</mat-option>
</mat-select>
</mat-form-field>
<mat-card *ngIf="actionMenu || contextMenu">
<mat-card-header>
<mat-card-title>{{ 'SETTINGS_CLOUD.ACTION.ACTION_TITLE' | translate }}</mat-card-title>
</mat-card-header>
<mat-card-content>
<form [formGroup]="actionMenuForm" fxLayout="row" fxLayoutAlign="space-around center" fxLayoutGap="20px">
<mat-form-field fxFlex="23%">
<input matInput formControlName="key" placeholder="{{ 'SETTINGS_CLOUD.ACTION.KEY' | translate }}">
</mat-form-field>
<mat-form-field fxFlex="23%">
<input matInput formControlName="title" placeholder="{{ 'SETTINGS_CLOUD.ACTION.TITLE' | translate }}">
</mat-form-field>
<mat-form-field fxFlex="23%">
<input matInput formControlName="icon" placeholder="{{ 'SETTINGS_CLOUD.ACTION.ICON' | translate }}"I>
</mat-form-field>
<mat-checkbox formControlName="visible">
{{ 'SETTINGS_CLOUD.ACTION.ACTION_VISIBLE' | translate }}
</mat-checkbox>
<mat-checkbox formControlName="disable">
{{ 'SETTINGS_CLOUD.ACTION.ACTION_DISABLE' | translate }}
</mat-checkbox>
<button mat-raised-button (click)="addAction()">
{{ 'SETTINGS_CLOUD.ACTION.ADD_BUTTON' | translate }}
</button>
</form>
<div *ngIf="actions.length > 0">
<mat-chip-list #chipList>
<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>
@@ -15,17 +15,24 @@
* limitations under the License.
*/
import { Component, OnInit } from '@angular/core';
import { CloudLayoutService } from './services/cloud-layout.service';
import { Component, OnInit, OnDestroy } from '@angular/core';
import { CloudLayoutService, ActionMenuModel } from '../services/cloud-layout.service';
import { Subject } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
import { FormGroup, FormControl } from '@angular/forms';
@Component({
selector: 'app-cloud-settings',
templateUrl: './cloud-settings.component.html',
styleUrls: ['./cloud-settings.component.scss']
})
export class CloudSettingsComponent implements OnInit {
export class CloudSettingsComponent implements OnInit, OnDestroy {
private onDestroy$ = new Subject<boolean>();
multiselect: boolean;
actionMenu: boolean;
contextMenu: boolean;
actions: ActionMenuModel[] = [];
selectionMode: string;
testingMode: boolean;
taskDetailsRedirection: boolean;
@@ -37,16 +44,34 @@ export class CloudSettingsComponent implements OnInit {
{ value: 'multiple', title: 'Multiple' }
];
actionMenuForm = new FormGroup({
key: new FormControl(''),
title: new FormControl(''),
icon: new FormControl(''),
visible: new FormControl(true),
disable: new FormControl(false)
});
constructor(private cloudLayoutService: CloudLayoutService) { }
ngOnInit() {
this.cloudLayoutService.getCurrentSettings()
.subscribe((settings) => this.setCurrentSettings(settings));
this.cloudLayoutService
.settings$
.pipe(takeUntil(this.onDestroy$))
.subscribe(settings => this.setCurrentSettings(settings));
}
ngOnDestroy() {
this.onDestroy$.next(true);
this.onDestroy$.complete();
}
setCurrentSettings(settings) {
if (settings) {
this.multiselect = settings.multiselect;
this.actionMenu = this.actionMenu;
this.contextMenu = this.contextMenu;
this.actions = this.actions;
this.testingMode = settings.testingMode;
this.selectionMode = settings.selectionMode;
this.taskDetailsRedirection = settings.taskDetailsRedirection;
@@ -78,9 +103,35 @@ export class CloudSettingsComponent implements OnInit {
this.setSetting();
}
toggleActionMenu() {
this.actionMenu = !this.actionMenu;
this.setSetting();
}
toggleContextMenu() {
this.contextMenu = !this.contextMenu;
this.setSetting();
}
addAction() {
this.actions.push(<ActionMenuModel> this.actionMenuForm.value);
this.actionMenuForm.get('key').reset();
this.actionMenuForm.get('title').reset();
this.actionMenuForm.get('icon').reset();
this.setSetting();
}
removeAction(removedAction: ActionMenuModel) {
this.actions = this.actions.filter((action: ActionMenuModel) => action.key !== removedAction.key);
this.setSetting();
}
setSetting() {
this.cloudLayoutService.setCurrentSettings({
multiselect: this.multiselect,
actionMenu: this.actionMenu,
contextMenu: this.contextMenu,
actions: this.actions,
testingMode: this.testingMode,
selectionMode: this.selectionMode,
taskDetailsRedirection: this.taskDetailsRedirection,
@@ -0,0 +1,39 @@
/*!
* @license
* Copyright 2019 Alfresco Software, Ltd.
*
* 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 { CommonModule } from '@angular/common';
import { CloudSettingsComponent } from './cloud-settings.component';
import { MatDialogModule, MatInputModule, MatSelectModule, MatSlideToggleModule } from '@angular/material';
import { CoreModule } from '@alfresco/adf-core';
import { FlexLayoutModule } from '@angular/flex-layout';
@NgModule({
imports: [
CommonModule,
CoreModule.forChild(),
MatDialogModule,
MatInputModule,
MatSelectModule,
MatSlideToggleModule,
FlexLayoutModule
],
declarations: [ CloudSettingsComponent ],
exports: [ CommonModule, CloudSettingsComponent]
})
export class AppCloudSharedModule {}
@@ -1,6 +1,8 @@
<adf-cloud-start-process
[appName]="appName"
[name]="processName"
[values]="formValues"
[variables]="variables"
(error)="openSnackMessage($event)"
(success)="onStartProcessSuccess()"
(cancel)="onCancelStartProcess()">
@@ -28,6 +28,8 @@ export class StartProcessCloudDemoComponent implements OnInit {
appName;
processName: string;
formValues: string;
variables: any;
constructor(private appConfig: AppConfigService,
private cloudLayoutService: CloudLayoutService,
@@ -41,7 +43,9 @@ export class StartProcessCloudDemoComponent implements OnInit {
this.appName = params.appName;
});
this.processName = this.appConfig.get<string>('adf-start-process.name');
this.processName = this.appConfig.get<string>('adf-cloud-start-process.name');
this.formValues = this.appConfig.get<string>('adf-cloud-start-process.values');
this.variables = this.appConfig.get<string>('adf-cloud-start-process.variables');
}
onStartProcessSuccess() {
@@ -55,6 +59,6 @@ export class StartProcessCloudDemoComponent implements OnInit {
}
openSnackMessage(event: any) {
this.notificationService.openSnackMessage(event.response.body.message);
this.notificationService.openSnackMessage(event.response.body.entry.message);
}
}
@@ -7,13 +7,13 @@
[appName]="appName"
[taskId]="taskId"
(cancelClick)="goBack()"
(taskClaimed)="onClaimTask()"
(taskCompleted)="onTaskCompleted()"
(taskUnclaimed)="onUnclaimTask()"
(taskClaimed)="onTaskClaimed()"
(taskUnclaimed)="onTaskUnclaimed()"
(formSaved)="onFormSaved()">
</adf-cloud-task-form>
</div>
<adf-cloud-task-header fxFlex
<adf-cloud-task-header #taskHeader fxFlex
[appName]="appName"
[taskId]="taskId">
</adf-cloud-task-header>
@@ -5,7 +5,7 @@
display: flex;
}
&-task-tiitle {
&-task-title {
margin-left:15px;
}
@@ -15,9 +15,10 @@
* limitations under the License.
*/
import { Component } from '@angular/core';
import { Component, ViewChild } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import { NotificationService } from '@alfresco/adf-core';
import { TaskHeaderCloudComponent } from '@alfresco/adf-process-services-cloud';
@Component({
templateUrl: './task-details-cloud-demo.component.html',
@@ -25,6 +26,9 @@ import { NotificationService } from '@alfresco/adf-core';
})
export class TaskDetailsCloudDemoComponent {
@ViewChild('taskHeader')
taskHeader: TaskHeaderCloudComponent;
taskId: string;
appName: string;
@@ -50,22 +54,18 @@ export class TaskDetailsCloudDemoComponent {
this.router.navigate([`/cloud/${this.appName}/`]);
}
onCompletedTask() {
this.goBack();
}
onUnclaimTask() {
this.goBack();
}
onClaimTask() {
this.goBack();
}
onTaskCompleted() {
this.goBack();
}
onTaskClaimed() {
this.taskHeader.ngOnInit();
}
onTaskUnclaimed() {
this.taskHeader.ngOnInit();
}
onFormContentClicked(resourceId) {
this.router.navigate([`/cloud/${this.appName}/task-details/${this.taskId}/files/${resourceId.nodeId}/view`]);
}
@@ -15,17 +15,19 @@
* limitations under the License.
*/
import { Component, ViewChild, OnInit } from '@angular/core';
import { Component, ViewChild, OnInit, OnDestroy } from '@angular/core';
import { TaskListCloudComponent, TaskListCloudSortingModel, TaskFilterCloudModel } from '@alfresco/adf-process-services-cloud';
import { UserPreferencesService, AppConfigService } 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';
@Component({
templateUrl: 'tasks-cloud-demo.component.html',
styleUrls: ['tasks-cloud-demo.component.scss']
})
export class TasksCloudDemoComponent implements OnInit {
export class TasksCloudDemoComponent implements OnInit, OnDestroy {
public static ACTION_SAVE_AS = 'saveAs';
static TASK_FILTER_PROPERTY_KEYS = 'adf-edit-task-filter';
@@ -50,6 +52,8 @@ export class TasksCloudDemoComponent implements OnInit {
selectionMode: string;
taskDetailsRedirection: boolean;
private onDestroy$ = new Subject<boolean>();
constructor(
private cloudLayoutService: CloudLayoutService,
private route: ActivatedRoute,
@@ -75,8 +79,14 @@ export class TasksCloudDemoComponent implements OnInit {
this.filterId = params.id;
});
this.cloudLayoutService.getCurrentSettings()
.subscribe((settings) => this.setCurrentSettings(settings));
this.cloudLayoutService.settings$
.pipe(takeUntil(this.onDestroy$))
.subscribe(settings => this.setCurrentSettings(settings));
}
ngOnDestroy() {
this.onDestroy$.next(true);
this.onDestroy$.complete();
}
setCurrentSettings(settings) {
@@ -1,77 +1,8 @@
<div>
<mat-nav-list class="adf-list-confgurations">
<mat-list-item (click)="metadataConfClick()">
<a matLine id="adf-metadata-conf">Metadata App config editor</a>
<button mat-icon-button>
<mat-icon>info</mat-icon>
</button>
</mat-list-item>
<mat-list-item (click)="searchConfClick()">
<a matLine id="adf-search-conf" >Search App config editor</a>
<button mat-icon-button>
<mat-icon>info</mat-icon>
</button>
</mat-list-item>
<mat-list-item (click)="fileConfClick()">
<a matLine id="adf-file-conf" >Excluded config file</a>
<button mat-icon-button>
<mat-icon>info</mat-icon>
</button>
</mat-list-item>
<mat-list-item (click)="taskHeaderConfClick()">
<a matLine id="adf-task-conf" >Task header</a>
<button mat-icon-button>
<mat-icon>info</mat-icon>
</button>
</mat-list-item>
<mat-list-item (click)="processInstanceHeaderConfClick()">
<a matLine id="adf-process-conf" >Process instance Header</a>
<button mat-icon-button>
<mat-icon>info</mat-icon>
</button>
</mat-list-item>
<mat-list-item (click)="startProcessConfClick()">
<a matLine id="adf-start-process-conf">Start process</a>
<button mat-icon-button>
<mat-icon>info</mat-icon>
</button>
</mat-list-item>
<mat-list-item (click)="applicationListCloudConfClick()">
<a matLine id="adf-apps-cloud-conf">Application List Cloud</a>
<button mat-icon-button>
<mat-icon>info</mat-icon>
</button>
</mat-list-item>
<mat-list-item (click)="taskListCloudConfClick()">
<a matLine id="adf-task-list-cloud-conf">Task List Cloud</a>
<button mat-icon-button>
<mat-icon>info</mat-icon>
</button>
</mat-list-item>
<mat-list-item (click)="editProcessFilterConfClick()">
<a matLine id="adf-edit-process-filter-conf">Edit process filter</a>
<button mat-icon-button>
<mat-icon>info</mat-icon>
</button>
</mat-list-item>
<mat-list-item (click)="processListCloudConfClick()">
<a matLine id="adf-process-list-cloud-conf">Process List Cloud</a>
<button mat-icon-button>
<mat-icon>info</mat-icon>
</button>
</mat-list-item>
<mat-list-item (click)="editTaskFilterConfClick()">
<a matLine id="adf-edit-task-filter-conf">Edit task filter</a>
<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>
@@ -15,24 +15,28 @@
* limitations under the License.
*/
import { Component } from '@angular/core';
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 {
export class ConfigEditorComponent implements OnDestroy {
private onDestroy$ = new Subject<boolean>();
editor: any;
code: any;
field = 'content-metadata';
field: string;
invalidJson = false;
isUserPreference = false;
userPreferenceProperty: string;
@@ -53,7 +57,7 @@ export class ConfigEditorComponent {
constructor(private appConfig: AppConfigService,
private userPreferencesService: UserPreferencesService,
private notificationService: NotificationService) {
this.code = JSON.stringify(appConfig.config['content-metadata']);
this.code = JSON.stringify(appConfig.config);
}
onSave() {
@@ -61,7 +65,7 @@ export class ConfigEditorComponent {
if (this.isUserPreference) {
this.userPreferencesService.set(this.userPreferenceProperty, JSON.parse(this.editor.getValue()));
} else {
this.appConfig.config[this.field] = JSON.parse(this.editor.getValue());
this.appConfig.config = JSON.parse(this.editor.getValue());
}
} catch (error) {
this.invalidJson = true;
@@ -77,114 +81,57 @@ export class ConfigEditorComponent {
this.code = '';
}
fileConfClick() {
appConfigClick() {
this.isUserPreference = false;
this.code = JSON.stringify(this.appConfig.config['files']);
this.field = 'files';
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).subscribe((textOrientation: number) => {
this.code = JSON.stringify(textOrientation);
this.field = 'textOrientation';
this.indentCode();
});
this.userPreferencesService
.select(this.userPreferenceProperty)
.pipe(takeUntil(this.onDestroy$))
.subscribe((textOrientation: number) => {
this.code = JSON.stringify(textOrientation);
this.field = 'textOrientation';
this.indentCode();
});
this.indentCode();
}
searchConfClick() {
this.isUserPreference = false;
this.code = JSON.stringify(this.appConfig.config['search']);
this.field = 'search';
this.indentCode();
}
metadataConfClick() {
this.isUserPreference = false;
this.code = JSON.stringify(this.appConfig.config['content-metadata']);
this.field = 'content-metadata';
this.indentCode();
}
taskHeaderConfClick() {
this.isUserPreference = false;
this.code = JSON.stringify(this.appConfig.config['adf-task-header']);
this.field = 'adf-task-header';
this.indentCode();
}
processInstanceHeaderConfClick() {
this.isUserPreference = false;
this.code = JSON.stringify(this.appConfig.config['adf-process-instance-header']);
this.field = 'adf-process-instance-header';
this.indentCode();
}
startProcessConfClick() {
this.isUserPreference = false;
this.code = JSON.stringify(this.appConfig.config['adf-start-process']);
this.field = 'adf-start-process';
this.indentCode();
}
taskListCloudConfClick() {
this.isUserPreference = false;
this.code = JSON.stringify(this.appConfig.config['adf-cloud-task-list']);
this.field = 'adf-cloud-task-list';
this.indentCode();
}
editProcessFilterConfClick() {
this.isUserPreference = false;
this.code = JSON.stringify(this.appConfig.config['adf-edit-process-filter']);
this.field = 'adf-edit-process-filter';
this.indentCode();
}
editTaskFilterConfClick() {
this.isUserPreference = false;
this.code = JSON.stringify(this.appConfig.config['adf-edit-task-filter']);
this.field = 'adf-edit-task-filter';
this.indentCode();
}
processListCloudConfClick() {
this.isUserPreference = false;
this.code = JSON.stringify(this.appConfig.config['adf-cloud-process-list']);
this.field = 'adf-cloud-process-list';
this.indentCode();
}
infinitePaginationConfClick() {
this.isUserPreference = true;
this.userPreferenceProperty = UserPreferenceValues.PaginationSize;
this.userPreferencesService.select(this.userPreferenceProperty).subscribe((pageSize: number) => {
this.code = JSON.stringify(pageSize);
this.field = 'adf-infinite-pagination';
this.indentCode();
});
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).subscribe((supportedPageSizes: number) => {
this.code = JSON.stringify(supportedPageSizes);
this.field = 'adf-supported-page-size';
this.indentCode();
});
}
applicationListCloudConfClick() {
this.isUserPreference = false;
this.code = JSON.stringify(this.appConfig.config['alfresco-deployed-apps']);
this.field = 'alfresco-deployed-apps';
this.indentCode();
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() {
@@ -18,7 +18,7 @@
import { Component, ViewEncapsulation } from '@angular/core';
import { SitePaging, SiteEntry, MinimalNodeEntryEntity } from '@alfresco/js-api';
import { ContentNodeDialogService, ShareDataRow, RowFilter } from '@alfresco/adf-content-services';
import { DataRow, DataColumn, ThumbnailService } from '@alfresco/adf-core';
import { ThumbnailService } from '@alfresco/adf-core';
@Component({
templateUrl: './content-node-selector.component.html',
@@ -95,7 +95,7 @@ export class ContentNodeSelectorComponent {
return showNode;
}
customImageResolverExample(row: DataRow, col: DataColumn) {
customImageResolverExample() {
return this.thumbnailService.getMimeTypeIcon('video/quicktime');
}
@@ -55,7 +55,7 @@ export class ExtensionPresetsComponent implements OnInit, OnDestroy {
this.onDestroy$.complete();
}
trackById(index: number, obj: { id: string }) {
trackById(_: number, obj: { id: string }) {
return obj.id;
}
}
@@ -25,9 +25,10 @@ import {
OnDestroy
} from '@angular/core';
import { NodeEntry } from '@alfresco/js-api';
import { BehaviorSubject, Subscription } from 'rxjs';
import { BehaviorSubject, Subject } from 'rxjs';
import { AlfrescoApiService } from '@alfresco/adf-core';
import { Node } from '@alfresco/js-api';
import { takeUntil } from 'rxjs/operators';
@Component({
selector: 'app-name-column',
@@ -47,24 +48,26 @@ export class NameColumnComponent implements OnInit, OnDestroy {
displayText$ = new BehaviorSubject<string>('');
node: NodeEntry;
private sub: Subscription;
private onDestroy$ = new Subject<boolean>();
constructor(private element: ElementRef, private alfrescoApiService: AlfrescoApiService) {}
ngOnInit() {
this.updateValue();
this.sub = this.alfrescoApiService.nodeUpdated.subscribe((node: Node) => {
const row = this.context.row;
if (row) {
const { entry } = row.node;
this.alfrescoApiService.nodeUpdated
.pipe(takeUntil(this.onDestroy$))
.subscribe((node: Node) => {
const row = this.context.row;
if (row) {
const { entry } = row.node;
if (entry === node) {
row.node = { entry };
this.updateValue();
if (entry === node) {
row.node = { entry };
this.updateValue();
}
}
}
});
});
}
protected updateValue() {
@@ -87,9 +90,7 @@ export class NameColumnComponent implements OnInit, OnDestroy {
}
ngOnDestroy() {
if (this.sub) {
this.sub.unsubscribe();
this.sub = null;
}
this.onDestroy$.next(true);
this.onDestroy$.complete();
}
}
@@ -1,13 +1,13 @@
<ng-container *ngIf="nodeId">
<ng-container *ngIf="nodeId || content">
<ng-template let-node="node" #sidebarRightTemplate>
<adf-info-drawer [title]="'APP.INFO_DRAWER.TITLE' | translate">
<adf-info-drawer-tab [label]="'APP.INFO_DRAWER.COMMENTS' | translate">
<adf-info-drawer-tab label="APP.INFO_DRAWER.COMMENTS">
<adf-comments [nodeId]="nodeId" [readOnly]="!isCommentEnabled"></adf-comments>
</adf-info-drawer-tab>
<adf-info-drawer-tab [label]="'APP.INFO_DRAWER.PROPERTIES' | translate">
<adf-info-drawer-tab label="APP.INFO_DRAWER.PROPERTIES">
<adf-content-metadata-card *ngIf="isPreset" [node]="node"
[multi]="multi"
[preset]="customPreset"
@@ -104,7 +104,7 @@
</adf-info-drawer-tab>
<adf-info-drawer-tab [label]="'APP.INFO_DRAWER.VERSIONS' | translate">
<adf-info-drawer-tab label="APP.INFO_DRAWER.VERSIONS">
<mat-card>
<mat-card-content>
<adf-version-manager [node]="node"
@@ -120,7 +120,7 @@
<ng-template let-node="node" #sidebarLeftTemplate>
<adf-info-drawer [title]="'Viewer Options'">
<adf-info-drawer-tab [label]="'Settings'">
<adf-info-drawer-tab label="Settings">
<p class="toggle">
<mat-slide-toggle
id="adf-switch-custoname"
@@ -284,14 +284,16 @@
</p>
<p class="toggle">
<button mat-raised-button id="adf-switch-showrightsidebar" (click)="toggleShowRightSidebar()" color="primary">
Toggle Right Sidebar
<button mat-raised-button id="adf-switch-showrightsidebar" (click)="toggleShowRightSidebar()"
color="primary">
Toggle Right Sidebar
</button>
</p>
<p class="toggle">
<button mat-raised-button id="adf-switch-showleftsidebar" (click)="hideLeftSidebar()" color="primary">
Hide Left Sidebar
<button mat-raised-button id="adf-switch-showleftsidebar" (click)="hideLeftSidebar()"
color="primary">
Hide Left Sidebar
</button>
</p>
@@ -314,6 +316,7 @@
</ng-template>
<adf-viewer
[blobFile]="content"
[nodeId]="nodeId"
[showRightSidebar]="showRightSidebar"
[showLeftSidebar]="showLeftSidebar"
@@ -325,6 +328,7 @@
[allowRightSidebar]="allowRightSidebar"
[allowLeftSidebar]="allowLeftSidebar"
[urlFile]="urlFile"
(showViewerChange)="onViewerVisibilityChanged($event)"
[sidebarLeftTemplate]="sidebarLeftTemplate"
[sidebarRightTemplate]="sidebarRightTemplate">
@@ -16,9 +16,10 @@
*/
import { Component, OnInit, ViewEncapsulation } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import { ActivatedRoute, Router, PRIMARY_OUTLET } from '@angular/router';
import { ContentService, AllowableOperationsEnum, PermissionsEnum, NodesApiService } from '@alfresco/adf-core';
import { MatSnackBar } from '@angular/material';
import { PreviewService } from '../../services/preview.service';
@Component({
selector: 'app-file-view',
@@ -57,12 +58,15 @@ export class FileViewComponent implements OnInit {
showTabWithIconAndLabel = false;
desiredAspect: string = null;
showAspect: string = null;
content: Blob;
name: string;
constructor(private router: Router,
private route: ActivatedRoute,
private snackBar: MatSnackBar,
private nodeApiService: NodesApiService,
private contentServices: ContentService) {
private contentServices: ContentService,
private preview: PreviewService) {
}
ngOnInit() {
@@ -81,10 +85,18 @@ export class FileViewComponent implements OnInit {
},
() => this.router.navigate(['/files', id])
);
} else if (this.preview.content) {
this.content = this.preview.content;
this.displayName = this.preview.name;
}
});
}
onViewerVisibilityChanged() {
const primaryUrl = this.router.parseUrl(this.router.url).root.children[PRIMARY_OUTLET].toString();
this.router.navigateByUrl(primaryUrl);
}
onUploadError(errorMessage: string) {
this.snackBar.open(errorMessage, '', { duration: 4000 });
}
@@ -94,7 +94,9 @@
(click)="createLibrary()">
<mat-icon>library_add</mat-icon>
</button>
<button mat-icon-button
<button
data-automation-id="edit-folder"
mat-icon-button
[disabled]="!canEditFolder(documentList.selection)"
title="{{ 'DOCUMENT_LIST.TOOLBAR.EDIT_FOLDER' | translate }}"
(error)="openSnackMessage($event)"
@@ -119,7 +121,9 @@
matTooltip="{{ 'DOCUMENT_LIST.TOOLBAR.DELETE' | translate }}">
<mat-icon>delete</mat-icon>
</button>
<button mat-icon-button
<button
data-automation-id="favorite"
mat-icon-button
[disabled]="!documentList.selection.length"
#favorite="adfFavorite"
[adf-node-favorite]="documentList.selection"
@@ -250,12 +254,13 @@
key="$thumbnail"
type="image"
[sortable]="false"
class="adf-image-table-cell "
class="adf-image-table-cell"
[class.adf-cell-thumbnail]="thumbnails">
</data-column>
<data-column
*ngIf="showNameColumn && hyperlinkNavigation"
key="name"
class="adf-ellipsis-cell"
title="{{'DOCUMENT_LIST.COLUMNS.DISPLAY_NAME' | translate}}"
[formatTooltip]="getNodeNameTooltip">
<ng-template let-context>
@@ -282,7 +287,7 @@
key="content.sizeInBytes"
title="{{'DOCUMENT_LIST.COLUMNS.SIZE' | translate}}"
type="fileSize"
class="adf-desktop-only">
class="adf-desktop-only adf-ellipsis-cell">
</data-column>
<data-column
*ngIf="searchTerm"
@@ -313,7 +318,7 @@
<data-column
title="{{'DOCUMENT_LIST.COLUMNS.IS_LOCKED' | translate}}"
key="id"
class="adf-desktop-only">
class="adf-desktop-only adf-ellipsis-cell">
<ng-template let-entry="$implicit">
<button mat-icon-button [adf-node-lock]="entry.row.node.entry" class="adf-lock-button">
<mat-icon *ngIf="entry.row.getValue('isLocked')">lock</mat-icon>
@@ -447,13 +452,13 @@
<div info-drawer-content>
<adf-info-drawer [title]="'Details'" *ngIf="documentList.selection[0]">
<adf-info-drawer-tab [label]="'Properties'">
<adf-info-drawer-tab label="Properties">
<adf-content-metadata-card
[node]="documentList.selection[0].entry"
[displayEmpty]="displayEmptyMetadata">
</adf-content-metadata-card>
</adf-info-drawer-tab>
<adf-info-drawer-tab [label]="'Versions'">
<adf-info-drawer-tab label="Versions">
<ng-container *ngIf="hasOneFileSelected();else choose_document_template">
<ng-container *ngIf="userHasPermissionToManageVersions(); else no_permission_to_versions">
<adf-version-manager
@@ -1,7 +1,4 @@
@mixin adf-file-component-theme($theme) {
$foreground: map-get($theme, foreground);
.adf-container {
margin: 10px !important;
}
@@ -24,26 +21,6 @@
color: #d50000;
}
.adf-not-overlay-viewer {
height: 900px;
}
adf-document-list ::ng-deep adf-datatable tr.adf-document-list__create {
background: green !important;
}
adf-document-list ::ng-deep adf-datatable tr.adf-document-list__disable {
background: red !important;
}
adf-document-list ::ng-deep .adf-datatable-selected > svg {
fill: #00bcd4 !important;
margin-top: -4px;
margin-left: -4px;
width: 32px;
height: 32px;
}
.adf-document-list-container {
min-height: 400px;
@@ -67,13 +44,6 @@
padding: 16px;
}
.adf-files-toolbar {
.adf-toolbar-title {
display: flex;
width: 100%;
}
}
.adf-manage-versions-sidebar {
width: 360px !important;
@@ -117,117 +87,4 @@
justify-content: center;
}
}
@media all {
.adf-isLocked-column {
max-width: 30px !important;
margin-right: 5px;
}
.adf-folder-image-column {
max-width: 28px!important;
}
}
@media (max-width: 768px) {
.adf-createdOn-column {
display: none !important;
}
}
@media (max-width: 500px) {
.adf-datatable-list {
.adf {
&-display-name-column {
max-width: 50% !important;
}
&-size-column {
display: none !important;
}
&-createdBy-column {
max-width: 45% !important;
}
&-nodeId-column {
display: none !important;
}
}
}
}
@media (max-width: 600px) {
.adf-datatable-list {
.adf {
&-display-name-column {
max-width: 35%;
}
&-size-column {
max-width: 8%;
}
&-createdBy-column {
max-width: 35%;
}
&-createdOn-column {
max-width: 15%;
}
&-nodeId-column {
max-width: 10%;
}
&-isLocked-column {
display: none!important;
}
&-standard-breadcrumb {
display: none !important;
}
}
}
}
@media (min-width: 601px) {
.adf-datatable-list {
.adf {
&-display-name-column {
max-width: 30%;
}
&-size-column {
max-width: 10%;
}
&-createdBy-column {
max-width: 30%;
}
&-createdOn-column {
max-width: 15%;
}
&-nodeId-column {
max-width: 12%;
}
&-alternate-breadcrumb {
display: none !important;
}
}
}
}
@media (min-width: 1400px) {
.adf-datatable-list {
.adf {
&-display-name-column {
max-width: 40%;
}
&-size-column {
max-width: 15%;
}
&-createdBy-column {
max-width: 20%;
}
&-createdOn-column {
max-width: 20%;
}
&-nodeId-column {
max-width: 20%;
}
}
}
}
}
@@ -27,8 +27,9 @@ import { MinimalNodeEntity, NodePaging, Pagination, MinimalNodeEntryEntity, Site
import {
AlfrescoApiService, AuthenticationService, AppConfigService, AppConfigValues, ContentService, TranslationService,
FileUploadEvent, FolderCreatedEvent, LogService, NotificationService,
UploadService, DataColumn, DataRow, UserPreferencesService,
PaginationComponent, FormValues, DisplayMode, InfinitePaginationComponent, HighlightDirective
UploadService, DataRow, UserPreferencesService,
PaginationComponent, FormValues, DisplayMode, InfinitePaginationComponent, HighlightDirective,
SharedLinksApiService
} from '@alfresco/adf-core';
import {
@@ -36,16 +37,17 @@ import {
PermissionStyleModel,
UploadFilesEvent,
ConfirmDialogComponent,
LibraryDialogComponent
LibraryDialogComponent,
ContentMetadataService
} from '@alfresco/adf-content-services';
import { SelectAppsDialogComponent } from '@alfresco/adf-process-services';
import { VersionManagerDialogAdapterComponent } from './version-manager-dialog-adapter.component';
import { MetadataDialogAdapterComponent } from './metadata-dialog-adapter.component';
import { Subscription } from 'rxjs';
import { Subject } from 'rxjs';
import { PreviewService } from '../../services/preview.service';
import { debounceTime } from 'rxjs/operators';
import { debounceTime, takeUntil } from 'rxjs/operators';
import { SearchEntry } from '@alfresco/js-api';
const DEFAULT_FOLDER_TO_SHOW = '-my-';
@@ -57,6 +59,8 @@ const DEFAULT_FOLDER_TO_SHOW = '-my-';
})
export class FilesComponent implements OnInit, OnChanges, OnDestroy {
protected onDestroy$ = new Subject<boolean>();
errorMessage: string = null;
nodeId: any;
showViewer = false;
@@ -197,9 +201,6 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy {
displayEmptyMetadata = false;
hyperlinkNavigation = false;
private onCreateFolder: Subscription;
private onEditFolder: Subscription;
constructor(private notificationService: NotificationService,
private uploadService: UploadService,
private contentService: ContentService,
@@ -213,7 +214,9 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy {
private preview: PreviewService,
@Optional() private route: ActivatedRoute,
public authenticationService: AuthenticationService,
public alfrescoApiService: AlfrescoApiService) {
public alfrescoApiService: AlfrescoApiService,
private contentMetadataService: ContentMetadataService,
private sharedLinksApiService: SharedLinksApiService) {
}
showFile(event) {
@@ -258,22 +261,45 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy {
});
}
// this.disableDragArea = false;
this.uploadService.fileUploadComplete.asObservable()
.pipe(debounceTime(300))
.subscribe((value) => this.onFileUploadEvent(value));
this.uploadService.fileUploadDeleted.subscribe((value) => this.onFileUploadEvent(value));
this.contentService.folderCreated.subscribe((value) => this.onFolderCreated(value));
this.onCreateFolder = this.contentService.folderCreate.subscribe((value) => this.onFolderAction(value));
this.onEditFolder = this.contentService.folderEdit.subscribe((value) => this.onFolderAction(value));
this.uploadService.fileUploadComplete
.pipe(
debounceTime(300),
takeUntil(this.onDestroy$)
)
.subscribe(value => this.onFileUploadEvent(value));
// this.permissionsStyle.push(new PermissionStyleModel('document-list__create', AllowableOperationsEnum.CREATE));
// this.permissionsStyle.push(new PermissionStyleModel('document-list__disable', AllowableOperationsEnum.NOT_CREATE, false, true));
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.folderCreate
.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);
});
}
ngOnDestroy() {
this.onCreateFolder.unsubscribe();
this.onEditFolder.unsubscribe();
this.onDestroy$.next(true);
this.onDestroy$.complete();
}
ngOnChanges(changes: SimpleChanges) {
@@ -366,21 +392,21 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy {
switch (errorStatusCode) {
case 403:
translatedErrorMessage = this.translateService.get('OPERATION.ERROR.PERMISSION');
translatedErrorMessage = this.translateService.instant('OPERATION.ERROR.PERMISSION');
break;
case 409:
translatedErrorMessage = this.translateService.get('OPERATION.ERROR.CONFLICT');
translatedErrorMessage = this.translateService.instant('OPERATION.ERROR.CONFLICT');
break;
default:
translatedErrorMessage = this.translateService.get('OPERATION.ERROR.UNKNOWN');
translatedErrorMessage = this.translateService.instant('OPERATION.ERROR.UNKNOWN');
}
this.openSnackMessage(translatedErrorMessage.value);
this.openSnackMessage(translatedErrorMessage);
}
onContentActionSuccess(message) {
const translatedMessage: any = this.translateService.get(message);
this.openSnackMessage(translatedMessage.value);
const translatedMessage: any = this.translateService.instant(message);
this.openSnackMessage(translatedMessage);
this.documentList.reload();
}
@@ -407,8 +433,8 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy {
width: '630px'
});
} else {
const translatedErrorMessage: any = this.translateService.get('OPERATION.ERROR.PERMISSION');
this.openSnackMessage(translatedErrorMessage.value);
const translatedErrorMessage: any = this.translateService.instant('OPERATION.ERROR.PERMISSION');
this.openSnackMessage(translatedErrorMessage);
}
}
@@ -425,8 +451,8 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy {
width: '630px'
});
} else {
const translatedErrorMessage: any = this.translateService.get('OPERATION.ERROR.PERMISSION');
this.openSnackMessage(translatedErrorMessage.value);
const translatedErrorMessage: any = this.translateService.instant('OPERATION.ERROR.PERMISSION');
this.openSnackMessage(translatedErrorMessage);
}
}
@@ -448,7 +474,7 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy {
return this.contentService.hasAllowableOperations(selection[0].entry, 'update');
}
getNodeNameTooltip(row: DataRow, col: DataColumn): string {
getNodeNameTooltip(row: DataRow): string {
if (row) {
return row.getValue('name');
}
@@ -575,7 +601,7 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy {
width: '400px'
});
dialogInstance.componentInstance.error.subscribe((message) => {
dialogInstance.componentInstance.error.subscribe((message: string) => {
this.notificationService.openSnackMessage(message);
});
}
@@ -18,35 +18,43 @@
import { Observable, of } from 'rxjs';
import { Injectable } from '@angular/core';
import {
AppConfigService, AlfrescoApiService, EcmModelService, LogService, FormService, FormOutcomeEvent
AlfrescoApiService,
EcmModelService,
LogService,
FormService,
FormOutcomeEvent
} from '@alfresco/adf-core';
import { Subject } from 'rxjs';
@Injectable()
export class FakeFormService extends FormService {
executeOutcome = new Subject<FormOutcomeEvent>();
constructor(appConfig: AppConfigService,
ecmModelService: EcmModelService,
apiService: AlfrescoApiService,
protected logService: LogService) {
constructor(
ecmModelService: EcmModelService,
apiService: AlfrescoApiService,
protected logService: LogService
) {
super(ecmModelService, apiService, logService);
}
public getRestFieldValues(taskId: string, fieldId: string): Observable<any> {
public getRestFieldValues(
taskId: string,
fieldId: string
): Observable<any> {
if (fieldId === 'typeaheadField') {
return of([
{ 'id': '1', 'name': 'Leanne Graham' },
{ 'id': '2', 'name': 'Ervin Howell' },
{ 'id': '3', 'name': 'Clementine Bauch' },
{ 'id': '4', 'name': 'Patricia Lebsack' },
{ 'id': '5', 'name': 'Chelsey Dietrich' },
{ 'id': '6', 'name': 'Mrs. Dennis Schulist' },
{ 'id': '7', 'name': 'Kurtis Weissnat' },
{ 'id': '8', 'name': 'Nicholas Runolfsdottir V' },
{ 'id': '9', 'name': 'Glenna Reichert' },
{ 'id': '10', 'name': 'Clementina DuBuque' }]);
{ id: '1', name: 'Leanne Graham' },
{ id: '2', name: 'Ervin Howell' },
{ id: '3', name: 'Clementine Bauch' },
{ id: '4', name: 'Patricia Lebsack' },
{ id: '5', name: 'Chelsey Dietrich' },
{ id: '6', name: 'Mrs. Dennis Schulist' },
{ id: '7', name: 'Kurtis Weissnat' },
{ id: '8', name: 'Nicholas Runolfsdottir V' },
{ id: '9', name: 'Glenna Reichert' },
{ id: '10', name: 'Clementina DuBuque' }
]);
} else {
return super.getRestFieldValues(taskId, fieldId);
}
@@ -15,16 +15,18 @@
* limitations under the License.
*/
import { Component, ViewChild } from '@angular/core';
import { Component, ViewChild, OnDestroy, OnInit } from '@angular/core';
import { FormModel, FormService, LogService, FormOutcomeEvent } from '@alfresco/adf-core';
import { FormComponent } from '@alfresco/adf-process-services';
import { Subject } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
@Component({
selector: 'app-form-list',
templateUrl: 'form-list.component.html',
styleUrls: ['form-list.component.scss']
})
export class FormListComponent {
export class FormListComponent implements OnInit, OnDestroy {
@ViewChild('adfForm')
activitiForm: FormComponent;
@@ -38,13 +40,24 @@ export class FormListComponent {
restoredData: any = {};
showValidationIcon = false;
private onDestroy$ = new Subject<boolean>();
constructor(private formService: FormService, private logService: LogService) {
}
ngOnInit() {
// Prevent default outcome actions
formService.executeOutcome.subscribe((formOutcomeEvent: FormOutcomeEvent) => {
formOutcomeEvent.preventDefault();
this.logService.log(formOutcomeEvent.outcome);
});
this.formService.executeOutcome
.pipe(takeUntil(this.onDestroy$))
.subscribe((formOutcomeEvent: FormOutcomeEvent) => {
formOutcomeEvent.preventDefault();
this.logService.log(formOutcomeEvent.outcome);
});
}
ngOnDestroy() {
this.onDestroy$.next(true);
this.onDestroy$.complete();
}
onRowDblClick(event: CustomEvent) {
@@ -15,46 +15,60 @@
* limitations under the License.
*/
import { Component, Inject, OnInit } from '@angular/core';
import { FormModel, FormService, FormOutcomeEvent } from '@alfresco/adf-core';
import { Component, Inject, OnInit, OnDestroy } from '@angular/core';
import {
FormModel,
FormService,
FormOutcomeEvent,
CoreAutomationService
} from '@alfresco/adf-core';
import { InMemoryFormService } from '../../services/in-memory-form.service';
import { DemoForm } from './demo-form';
import { FakeFormService } from './fake-form.service';
import { Subject } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
@Component({
selector: 'app-form-loading',
templateUrl: 'form-loading.component.html',
styleUrls: ['form-loading.component.scss'],
providers: [
{ provide: FormService, useClass: FakeFormService }
]
providers: [{ provide: FormService, useClass: FakeFormService }]
})
export class FormLoadingComponent implements OnInit {
export class FormLoadingComponent implements OnInit, OnDestroy {
form: FormModel;
typeaheadFieldValue = '';
selectFieldValue = '';
radioButtonFieldValue = '';
formattedData = {};
constructor(@Inject(FormService) private formService: InMemoryFormService) {
formService.executeOutcome.subscribe((formOutcomeEvent: FormOutcomeEvent) => {
formOutcomeEvent.preventDefault();
});
}
private onDestroy$ = new Subject<boolean>();
constructor(
@Inject(FormService) private formService: InMemoryFormService,
private automationService: CoreAutomationService
) {}
ngOnInit() {
this.formService.executeOutcome
.pipe(takeUntil(this.onDestroy$))
.subscribe((formOutcomeEvent: FormOutcomeEvent) => {
formOutcomeEvent.preventDefault();
});
this.formattedData = {};
const formDefinitionJSON: any = DemoForm.getSimpleFormDefinition();
const formDefinitionJSON: any = this.automationService.forms.getSimpleFormDefinition();
this.form = this.formService.parseForm(formDefinitionJSON);
}
ngOnDestroy() {
this.onDestroy$.next(true);
this.onDestroy$.complete();
}
onLoadButtonClicked() {
this.formattedData = {
'typeaheadField': this.typeaheadFieldValue,
'selectBox': this.selectFieldValue,
'radioButton': this.radioButtonFieldValue
};
typeaheadField: this.typeaheadFieldValue,
selectBox: this.selectFieldValue,
radioButton: this.radioButtonFieldValue
};
}
}
@@ -16,10 +16,10 @@
*/
import { Component, Inject, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';
import { FormModel, FormFieldModel, FormService, FormOutcomeEvent, NotificationService } from '@alfresco/adf-core';
import { FormModel, FormFieldModel, FormService, FormOutcomeEvent, NotificationService, CoreAutomationService } from '@alfresco/adf-core';
import { InMemoryFormService } from '../../services/in-memory-form.service';
import { DemoForm } from './demo-form';
import { Subscription } from 'rxjs';
import { Subject } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
@Component({
selector: 'app-form',
@@ -36,7 +36,6 @@ export class FormComponent implements OnInit, OnDestroy {
errorFields: FormFieldModel[] = [];
formConfig: string;
editor: any;
private subscriptions: Subscription[] = [];
editorOptions = {
theme: 'vs-dark',
@@ -47,14 +46,11 @@ export class FormComponent implements OnInit, OnDestroy {
automaticLayout: true
};
constructor(@Inject(FormService) private formService: InMemoryFormService,
private notificationService: NotificationService) {
private onDestroy$ = new Subject<boolean>();
this.subscriptions.push(
formService.executeOutcome.subscribe((formOutcomeEvent: FormOutcomeEvent) => {
formOutcomeEvent.preventDefault();
})
);
constructor(@Inject(FormService) private formService: InMemoryFormService,
private notificationService: NotificationService,
private automationService: CoreAutomationService) {
}
logErrors(errorFields: FormFieldModel[]) {
@@ -62,14 +58,21 @@ export class FormComponent implements OnInit, OnDestroy {
}
ngOnInit() {
const formDefinitionJSON: any = DemoForm.getDefinition();
this.formConfig = JSON.stringify(formDefinitionJSON);
this.formService.executeOutcome
.pipe(takeUntil(this.onDestroy$))
.subscribe((formOutcomeEvent: FormOutcomeEvent) => {
formOutcomeEvent.preventDefault();
});
this.formConfig = JSON.stringify(
this.automationService.forms.getFormDefinition()
);
this.parseForm();
}
ngOnDestroy() {
this.subscriptions.forEach((subscription) => subscription.unsubscribe());
this.subscriptions = [];
this.onDestroy$.next(true);
this.onDestroy$.complete();
}
onInitFormEditor(editor) {
@@ -24,14 +24,14 @@ export class HeaderDataService {
show = true;
@Output() hideMenu: EventEmitter<boolean> = new EventEmitter();
@Output() color: EventEmitter<string> = new EventEmitter();
@Output() title: EventEmitter<string> = new EventEmitter();
@Output() logo: EventEmitter<string> = new EventEmitter();
@Output() redirectUrl: EventEmitter<string | any[]> = new EventEmitter();
@Output() tooltip: EventEmitter<string> = new EventEmitter();
@Output() position: EventEmitter<string> = new EventEmitter();
@Output() hideSidenav: EventEmitter<string> = new EventEmitter();
@Output() hideMenu = new EventEmitter<boolean>();
@Output() color = new EventEmitter<string>();
@Output() title = new EventEmitter<string>();
@Output() logo = new EventEmitter<string>();
@Output() redirectUrl = new EventEmitter<string | any[]>();
@Output() tooltip = new EventEmitter<string>();
@Output() position = new EventEmitter<string>();
@Output() hideSidenav = new EventEmitter<boolean>();
hideMenuButton() {
this.show = !this.show;
@@ -59,11 +59,11 @@ export class HeaderDataService {
this.tooltip.emit(tooltip);
}
changePosition(position) {
changePosition(position: string) {
this.position.emit(position);
}
changeSidenavVisibility(hideSidenav) {
changeSidenavVisibility(hideSidenav: boolean) {
this.hideSidenav.emit(hideSidenav);
}
}
@@ -16,7 +16,7 @@
*/
import { NgModule } from '@angular/core';
import { CoreModule, TranslationService } from '@alfresco/adf-core';
import { CoreModule } from '@alfresco/adf-core';
import { LazyLoadingRoutes } from './lazy-loading.routes';
import { LazyLoadingComponent } from './lazy-loading.component';
@@ -30,7 +30,4 @@ import { LazyLoadingComponent } from './lazy-loading.component';
LazyLoadingComponent
]
})
export class LazyLoadingModule {
constructor(translation: TranslationService) {
}
}
export class LazyLoadingModule {}
@@ -15,36 +15,57 @@
* limitations under the License.
*/
import { Component, HostListener } from '@angular/core';
import { Component, HostListener, OnDestroy, OnInit } from '@angular/core';
import { LogService, ObjectDataTableAdapter } from '@alfresco/adf-core';
import { Subject } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
@Component({
selector: 'app-log',
templateUrl: './log.component.html',
styleUrls: ['./log.component.css']
})
export class LogComponent {
export class LogComponent implements OnInit, OnDestroy {
logs: any[] = [];
show = false;
ctrlLKey = 12;
logsData: ObjectDataTableAdapter;
constructor(public logService: LogService) {
private onDestroy$ = new Subject<boolean>();
logService.onMessage.subscribe((message) => {
let contentMessage = '';
try {
contentMessage = JSON.stringify(message.text);
} catch (error) {
return;
}
this.logs.push({ type: message.type, text: contentMessage});
this.logsData = new ObjectDataTableAdapter(this.logs, [
{ type: 'text', key: 'type', title: 'Log level', sortable: true },
{ type: 'text', key: 'text', title: 'Message', sortable: false }
]);
constructor(public logService: LogService) {}
});
ngOnInit() {
this.logService.onMessage
.pipe(takeUntil(this.onDestroy$))
.subscribe(message => {
let contentMessage = '';
try {
contentMessage = JSON.stringify(message.text);
} catch (error) {
return;
}
this.logs.push({ type: message.type, text: contentMessage });
this.logsData = new ObjectDataTableAdapter(this.logs, [
{
type: 'text',
key: 'type',
title: 'Log level',
sortable: true
},
{
type: 'text',
key: 'text',
title: 'Message',
sortable: false
}
]);
});
}
ngOnDestroy() {
this.onDestroy$.next(true);
this.onDestroy$.complete();
}
@HostListener('document:keypress', ['$event'])
@@ -54,6 +75,5 @@ export class LogComponent {
if (key === this.ctrlLKey) {
this.show = !this.show;
}
}
}
@@ -85,7 +85,7 @@
[showRememberMe]="showFooter && showRememberMe"
(executeSubmit)="checkForm($event)"
copyrightText="{{ 'application.copyright' | adfAppConfig }}"
(success)="onLogin($event)"
(success)="onLogin()"
(error)="onError($event)">
<div class="adf-mobile-settings">
<p>
@@ -4,7 +4,6 @@
right: 10px;
top: 10px;
z-index: 1;
}
.adf-settings {
@@ -55,7 +55,7 @@ export class LoginComponent implements OnInit {
this.alfrescoLogin.addCustomValidationError('password', 'required', 'LOGIN.MESSAGES.PASSWORD-REQUIRED');
}
onLogin($event) {
onLogin() {
this.router.navigate(['/home']);
}
@@ -16,34 +16,26 @@
*/
import { NgModule } from '@angular/core';
import { LoginComponent } from './login.component';
import { Routes, RouterModule } from '@angular/router';
import { CommonModule } from '@angular/common';
import { CoreModule, InfoDrawerModule } from '@alfresco/adf-core';
import { ContentDirectiveModule, ContentMetadataModule, VersionManagerModule } from '@alfresco/adf-content-services';
import { BlobPreviewComponent } from './blob-preview.component';
import { CoreModule } from '@alfresco/adf-core';
import { ContentModule } from '@alfresco/adf-content-services';
const routes: Routes = [
{
path: '',
component: BlobPreviewComponent
path: '',
component: LoginComponent
}
];
@NgModule({
imports: [
CommonModule,
RouterModule.forChild(routes),
CoreModule.forChild(),
InfoDrawerModule,
ContentDirectiveModule,
ContentMetadataModule,
VersionManagerModule
RouterModule.forChild(routes),
ContentModule.forChild()
],
declarations: [
BlobPreviewComponent
],
exports: [
BlobPreviewComponent
]
declarations: [LoginComponent]
})
export class BlobPreviewModule {}
export class AppLoginModule {}
@@ -65,4 +65,10 @@
{{snackBarConfigObject}}
</p>
</div>
<div>
<h3>Quick Messages</h3>
<button mat-button color="primary" (click)="quickInfo()">Info</button>
<button mat-button color="warn" (click)="quickError()">Error</button>
<button mat-button color="accent" (click)="quickWarning()">Warning</button>
</div>
</div>
@@ -15,16 +15,18 @@
* limitations under the License.
*/
import { Component, OnInit } from '@angular/core';
import { Component, OnInit, OnDestroy } from '@angular/core';
import { NotificationService } from '@alfresco/adf-core';
import { MatSnackBarConfig } from '@angular/material';
import { FormBuilder, FormGroup, FormControl } from '@angular/forms';
import { Subject } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
@Component({
templateUrl: './notifications.component.html',
styleUrls: ['./notifications.component.scss']
})
export class NotificationsComponent implements OnInit {
export class NotificationsComponent implements OnInit, OnDestroy {
message = 'I ♥️ ADF';
withAction = false;
@@ -55,6 +57,8 @@ export class NotificationsComponent implements OnInit {
defaultDuration = 20000;
private onDestroy$ = new Subject<boolean>();
constructor(private notificationService: NotificationService,
private formBuilder: FormBuilder) {
this.snackBarConfig.duration = this.defaultDuration;
@@ -69,10 +73,15 @@ export class NotificationsComponent implements OnInit {
});
this.configForm.valueChanges
.subscribe((configFormValues) =>
.pipe(takeUntil(this.onDestroy$))
.subscribe(configFormValues =>
this.setSnackBarConfig(configFormValues)
);
}
ngOnDestroy() {
this.onDestroy$.next(true);
this.onDestroy$.complete();
}
setSnackBarConfig(configFormValues: any) {
@@ -117,4 +126,16 @@ export class NotificationsComponent implements OnInit {
dismissSnackBar() {
this.notificationService.dismissSnackMessageAction();
}
quickError() {
this.notificationService.showError(this.message, 'Fix');
}
quickInfo() {
this.notificationService.showInfo(this.message);
}
quickWarning() {
this.notificationService.showWarning(this.message, 'Undo');
}
}
@@ -20,6 +20,7 @@ import { NotificationsComponent } from './notifications.component';
import { Routes, RouterModule } from '@angular/router';
import { CommonModule } from '@angular/common';
import { CoreModule } from '@alfresco/adf-core';
import { MatButtonModule } from '@angular/material/button';
const routes: Routes = [
{
@@ -32,7 +33,8 @@ const routes: Routes = [
imports: [
CommonModule,
CoreModule.forChild(),
RouterModule.forChild(routes)
RouterModule.forChild(routes),
MatButtonModule
],
declarations: [NotificationsComponent]
})
@@ -5,7 +5,7 @@
(error)="showErrorMessage($event)"
(updated)="onUpdatedPermissions($event)">
{{ (toggleStatus?'DEMO_PERMISSION.INHERITED_PERMISSIONS_BUTTON':'DEMO_PERMISSION.INHERIT_PERMISSION_BUTTON') | translate}}</button>
<button mat-button color="primary" (click)="openAddPermissionDialog($event)" data-automation-id="adf-add-permission-button">Add User or Group</button>
<button mat-button color="primary" (click)="openAddPermissionDialog()" data-automation-id="adf-add-permission-button">Add User or Group</button>
</div>
<div>
@@ -48,9 +48,11 @@ export class DemoPermissionComponent implements OnInit {
}
});
}
this.nodeService.getNode(this.nodeId, {include: ['permissions'] }).subscribe( (currentNode: MinimalNodeEntryEntity) => {
this.toggleStatus = currentNode.permissions.isInheritanceEnabled;
});
this.nodeService
.getNode(this.nodeId, {include: ['permissions'] })
.subscribe( (currentNode: MinimalNodeEntryEntity) => {
this.toggleStatus = currentNode.permissions.isInheritanceEnabled;
});
}
onUpdatedPermissions(node: MinimalNodeEntryEntity) {
@@ -62,10 +64,13 @@ export class DemoPermissionComponent implements OnInit {
this.displayPermissionComponent.reload();
}
openAddPermissionDialog(event: Event) {
this.nodePermissionDialogService.updateNodePermissionByDialog(this.nodeId).subscribe(
() => this.displayPermissionComponent.reload(),
(error) => this.showErrorMessage(error));
openAddPermissionDialog() {
this.nodePermissionDialogService
.updateNodePermissionByDialog(this.nodeId)
.subscribe(
() => this.displayPermissionComponent.reload(),
(error) => this.showErrorMessage(error)
);
}
showErrorMessage(error) {
@@ -0,0 +1,109 @@
<h2>ADF Pipes</h2>
<mat-accordion>
<mat-expansion-panel>
<mat-expansion-panel-header>
<mat-panel-title>
Localized dates
</mat-panel-title>
<mat-panel-description>
adfLocalizedDate
</mat-panel-description>
</mat-expansion-panel-header>
<mat-form-field class="adf-input-field">
<input matInput placeholder="Format" [(ngModel)]="format">
</mat-form-field>
<mat-form-field class="adf-input-field">
<mat-select placeholder="Locale dropdown" [(ngModel)]="locale">
<mat-option *ngFor="let language of languages" [value]="language.key">
{{language.label}}
</mat-option>
</mat-select>
</mat-form-field>
<h3>AdfLocalizedDate Pipe - Default</h3>
<div>{{ today | adfLocalizedDate }} </div>
<br>
<h3>AdfLocalizedDate Pipe - Custom format</h3>
<div>{{ today | adfLocalizedDate : format }} </div>
<br>
<h3>AdfLocalizedDate Pipe - Custom format and locale</h3>
<div>{{ today | adfLocalizedDate : format : locale }} </div>
</mat-expansion-panel>
<mat-expansion-panel>
<mat-expansion-panel-header>
<mat-panel-title>
Time ago
</mat-panel-title>
<mat-panel-description>
adfTimeAgo
</mat-panel-description>
</mat-expansion-panel-header>
<mat-form-field class="adf-input-field">
<input matInput placeholder="Format" [(ngModel)]="format">
</mat-form-field>
<mat-form-field class="adf-input-field">
<mat-select placeholder="Locale dropdown" [(ngModel)]="locale">
<mat-option *ngFor="let language of languages" [value]="language.key">
{{language.label}}
</mat-option>
</mat-select>
</mat-form-field>
<h3>AdfTimeAgo Pipe - Default</h3>
<div>{{ today | adfTimeAgo }} </div>
<br>
<h3>AdfTimeAgo Pipe - Custom locale</h3>
<div>{{ today | adfTimeAgo : locale}} </div>
</mat-expansion-panel>
<mat-expansion-panel>
<mat-expansion-panel-header>
<mat-panel-title>
Decimal numbers
</mat-panel-title>
<mat-panel-description>
adfDecimalNumber
</mat-panel-description>
</mat-expansion-panel-header>
<mat-form-field class="adf-input-field">
<input matInput placeholder="Number" [(ngModel)]="number">
</mat-form-field>
<mat-form-field class="adf-input-field">
<input matInput placeholder="Min Integer Digits" [(ngModel)]="decimalValues.minIntegerDigits">
</mat-form-field>
<mat-form-field class="adf-input-field">
<input matInput placeholder="Min Fraction Digits" [(ngModel)]="decimalValues.minFractionDigits">
</mat-form-field>
<mat-form-field class="adf-input-field">
<input matInput placeholder="Max Fraction Digits" [(ngModel)]="decimalValues.maxFractionDigits">
</mat-form-field>
<mat-form-field class="adf-input-field">
<mat-select placeholder="Locale dropdown" [(ngModel)]="locale">
<mat-option *ngFor="let language of languages" [value]="language.key">
{{language.label}}
</mat-option>
</mat-select>
</mat-form-field>
<h3>AdfDecimalNumber Pipe - Default</h3>
<div>{{ number | adfDecimalNumber }} </div>
<br>
<h3>AdfDecimalNumber Pipe - Custom digits config</h3>
<div>{{ number | adfDecimalNumber : decimalValues }} </div>
<br>
<h3>AdfDecimalNumber Pipe - Custom locale</h3>
<div>{{ number | adfDecimalNumber : {} : locale }} </div>
<br>
<h3>AdfDecimalNumber Pipe - Custom digits config and locale</h3>
<div>{{ number | adfDecimalNumber : decimalValues : locale }} </div>
<br>
</mat-expansion-panel>
</mat-accordion>
@@ -0,0 +1,7 @@
h2 {
padding: 20px;
}
.adf-input-field {
margin: 20px;
}
@@ -16,23 +16,27 @@
*/
import { Component } from '@angular/core';
import { PreviewService } from '../../services/preview.service';
import { Router } from '@angular/router';
import { AppConfigService } from '@alfresco/adf-core';
@Component({
templateUrl: 'bob-preview.component.html'
selector: 'app-pipes-page',
templateUrl: './pipes.component.html',
styleUrls: ['pipes.component.scss']
})
export class BlobPreviewComponent {
content: Blob;
name: string;
export class PipesComponent {
constructor(preview: PreviewService, router: Router) {
if (preview.content === null || preview.name === null) {
router.navigate([{ outlets: { overlay: null } }]);
return;
}
today = new Date();
locale: string;
format: string;
number = 12345.56;
decimalValues = {
minIntegerDigits: undefined,
minFractionDigits: undefined,
maxFractionDigits: undefined
};
languages: any[];
this.content = preview.content;
this.name = preview.name;
constructor(private appConfig: AppConfigService) {
this.languages = this.appConfig.get('languages', []);
}
}
@@ -0,0 +1,39 @@
/*!
* @license
* Copyright 2019 Alfresco Software, Ltd.
*
* 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 { PipesComponent } from './pipes.component';
import { CommonModule } from '@angular/common';
import { CoreModule } from '@alfresco/adf-core';
const routes: Routes = [
{
path: '',
component: PipesComponent
}
];
@NgModule({
imports: [
CommonModule,
CoreModule.forChild(),
RouterModule.forChild(routes)
],
declarations: [PipesComponent]
})
export class AppPipesModule {}
@@ -15,17 +15,18 @@
* limitations under the License.
*/
import { Component, OnInit } from '@angular/core';
import { Component, OnInit, OnDestroy } from '@angular/core';
import { FormGroup, FormBuilder, Validators, FormControl, AbstractControl } from '@angular/forms';
import { ActivatedRoute, Params } from '@angular/router';
import { debounceTime } from 'rxjs/operators';
import { debounceTime, takeUntil } from 'rxjs/operators';
import { Subject } from 'rxjs';
@Component({
templateUrl: './process-list-demo.component.html',
styleUrls: [`./process-list-demo.component.scss`]
})
export class ProcessListDemoComponent implements OnInit {
export class ProcessListDemoComponent implements OnInit, OnDestroy {
DEFAULT_SIZE = 20;
@@ -54,6 +55,8 @@ export class ProcessListDemoComponent implements OnInit {
{value: 'created-desc', title: 'Created (desc)'}
];
private onDestroy$ = new Subject<boolean>();
constructor(private route: ActivatedRoute,
private formBuilder: FormBuilder) {
}
@@ -72,6 +75,11 @@ export class ProcessListDemoComponent implements OnInit {
this.buildForm();
}
ngOnDestroy() {
this.onDestroy$.next(true);
this.onDestroy$.complete();
}
buildForm() {
this.processListForm = this.formBuilder.group({
processAppId: new FormControl(this.appId, [Validators.pattern('^[0-9]*$'), Validators.min(this.minValue)]),
@@ -84,10 +92,9 @@ export class ProcessListDemoComponent implements OnInit {
});
this.processListForm.valueChanges
.pipe(
debounceTime(500)
)
.subscribe((processFilter) => {
.pipe(takeUntil(this.onDestroy$))
.pipe(debounceTime(500))
.subscribe(processFilter => {
if (this.isFormValid()) {
this.filterProcesses(processFilter);
}
@@ -15,32 +15,25 @@
* limitations under the License.
*/
import { Component, OnDestroy, OnInit } from '@angular/core';
import { Component, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { Subscription } from 'rxjs';
@Component({
selector: 'app-form-node-viewer',
templateUrl: './form-node-viewer.component.html',
styleUrls: ['./form-node-viewer.component.css']
})
export class FormNodeViewerComponent implements OnInit, OnDestroy {
export class FormNodeViewerComponent implements OnInit {
nodeId: string;
private sub: Subscription;
constructor(private route: ActivatedRoute) {
}
ngOnInit() {
this.sub = this.route.params.subscribe((params) => {
this.route.params.subscribe((params) => {
this.nodeId = params['id'];
});
}
ngOnDestroy() {
this.sub.unsubscribe();
}
}

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