Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
819ed9ae6a | ||
|
|
c44c2eae77 | ||
|
|
88c04ad7b8 | ||
|
|
d43274f891 | ||
|
|
6d2f2030fe | ||
|
|
ab3bb9002f | ||
|
|
626bb01bf7 | ||
|
|
b04b717296 | ||
|
|
ecb8410d1b | ||
|
|
f64cd9cffd | ||
|
|
3a2cfb3626 | ||
|
|
63f00e21cf | ||
|
|
051e8df091 | ||
|
|
492aa1e850 | ||
|
|
f42e1a4ada | ||
|
|
9838d1e5d8 | ||
|
|
1c412ab15f | ||
|
|
924c20d410 | ||
|
|
fb082cdfdc | ||
|
|
7b191d37eb | ||
|
|
7497822a46 | ||
|
|
990fa4625b | ||
|
|
c85df84a01 | ||
|
|
be35267df3 | ||
|
|
cb37254cae | ||
|
|
105a1a2b28 | ||
|
|
238fbf3d88 | ||
|
|
6c08231f33 | ||
|
|
117050decf | ||
|
|
4ea656e537 | ||
|
|
3e1092d7bf | ||
|
|
da5258edcd | ||
|
|
51f0a2da47 | ||
|
|
8a2a71d60b | ||
|
|
7a3e2932bb | ||
|
|
5e54cd4d43 | ||
|
|
99f4b07878 | ||
|
|
c3b1300d86 | ||
|
|
f18d534f9e | ||
|
|
cb25979a00 | ||
|
|
e65e32e0cf | ||
|
|
3d73e94b5d | ||
|
|
67485daece | ||
|
|
0684098f60 | ||
|
|
0cfc5bc1b7 | ||
|
|
656eeaf017 | ||
|
|
2b05f72a2f | ||
|
|
148f9830aa | ||
|
|
5392f3d229 | ||
|
|
3d67d9dc75 | ||
|
|
b19646d201 | ||
|
|
7611268bd9 | ||
|
|
7eb9ffe688 | ||
|
|
30c42d17d0 | ||
|
|
6040f59391 | ||
|
|
8b5038218e | ||
|
|
f27846ec5b |
@@ -15,7 +15,7 @@ branches:
|
||||
only:
|
||||
- master
|
||||
- development
|
||||
- /.*old-env.*/
|
||||
- /.*old-env.*/
|
||||
- /.*next-release.*/
|
||||
- /.*beta.*/
|
||||
- /.*greenkeeper.*/
|
||||
@@ -59,9 +59,9 @@ jobs:
|
||||
script:
|
||||
./scripts/travis/deploy/deploy.sh
|
||||
- stage: Update children projects dependency #Update children projects dependency
|
||||
name: Update Generator
|
||||
name: Update Related Project
|
||||
if: tag =~ .*beta.*
|
||||
script: ./scripts/travis/e2e/update-project.sh
|
||||
script: ./scripts/update-project.sh
|
||||
- stage: e2e Test
|
||||
name: core
|
||||
script: ./scripts/travis/e2e/core-e2e.sh
|
||||
|
||||
@@ -126,7 +126,6 @@
|
||||
"uncheck",
|
||||
"subfolders",
|
||||
"ECMBPM",
|
||||
"candidateuserapp",
|
||||
"processwithvariables"
|
||||
],
|
||||
"dictionaries": [
|
||||
|
||||
@@ -95,7 +95,8 @@
|
||||
"PEOPLE_GROUPS_CLOUD": "سحابة الأشخاص/المجموعة",
|
||||
"PEOPLE_CLOUD": "مكون سحابة الأشخاص",
|
||||
"GROUPS_CLOUD": "مكون سحابة المجموعة",
|
||||
"CONFIRM-DIALOG": "مربع حوار التأكيد"
|
||||
"CONFIRM-DIALOG": "مربع حوار التأكيد",
|
||||
"COMMUNITY": "Community"
|
||||
},
|
||||
"TRASHCAN": {
|
||||
"ACTIONS": {
|
||||
@@ -245,7 +246,7 @@
|
||||
"RATING": "مكون التقييم"
|
||||
},
|
||||
"TAG": {
|
||||
"LIST": "خدمات محتوى علامات القائمة",
|
||||
"LIST": "Content Services علامات القائمة",
|
||||
"INSERT": "إدراج معرف العقدة",
|
||||
"NODE_LIST": "قائمة العلامات حسب معرف العقدة"
|
||||
},
|
||||
|
||||
@@ -95,7 +95,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": {
|
||||
|
||||
@@ -95,7 +95,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": {
|
||||
|
||||
@@ -78,6 +78,7 @@
|
||||
"UPLOADER": "Uploader",
|
||||
"WEBSCRIPT": "Webscript",
|
||||
"TAG": "Tag",
|
||||
"DATE": "Date",
|
||||
"TRASHCAN": "Trashcan",
|
||||
"SOCIAL": "Social",
|
||||
"SETTINGS": "Settings",
|
||||
|
||||
@@ -95,7 +95,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": {
|
||||
|
||||
@@ -95,7 +95,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": {
|
||||
|
||||
@@ -95,7 +95,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": {
|
||||
|
||||
@@ -95,7 +95,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": {
|
||||
|
||||
@@ -95,7 +95,8 @@
|
||||
"PEOPLE_GROUPS_CLOUD": "メンバー/グループのクラウド",
|
||||
"PEOPLE_CLOUD": "メンバーのクラウドコンポーネント",
|
||||
"GROUPS_CLOUD": "グループのクラウドコンポーネント",
|
||||
"CONFIRM-DIALOG": "確認ダイアログ"
|
||||
"CONFIRM-DIALOG": "確認ダイアログ",
|
||||
"COMMUNITY": "Community"
|
||||
},
|
||||
"TRASHCAN": {
|
||||
"ACTIONS": {
|
||||
|
||||
@@ -95,7 +95,8 @@
|
||||
"PEOPLE_GROUPS_CLOUD": "Person-/gruppesky",
|
||||
"PEOPLE_CLOUD": "Personsky-komponent",
|
||||
"GROUPS_CLOUD": "Gruppesky-kompontent",
|
||||
"CONFIRM-DIALOG": "Bekreftelsesdialog"
|
||||
"CONFIRM-DIALOG": "Bekreftelsesdialog",
|
||||
"COMMUNITY": "Community"
|
||||
},
|
||||
"TRASHCAN": {
|
||||
"ACTIONS": {
|
||||
|
||||
@@ -95,7 +95,8 @@
|
||||
"PEOPLE_GROUPS_CLOUD": "Personen-/groepencloud",
|
||||
"PEOPLE_CLOUD": "Component Personencloud",
|
||||
"GROUPS_CLOUD": "Component Groepencloud",
|
||||
"CONFIRM-DIALOG": "Bevestigingsdialoogvenster"
|
||||
"CONFIRM-DIALOG": "Bevestigingsdialoogvenster",
|
||||
"COMMUNITY": "Community"
|
||||
},
|
||||
"TRASHCAN": {
|
||||
"ACTIONS": {
|
||||
|
||||
@@ -95,7 +95,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": {
|
||||
|
||||
@@ -95,7 +95,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": {
|
||||
|
||||
@@ -95,7 +95,8 @@
|
||||
"PEOPLE_GROUPS_CLOUD": "Облако пользователей/групп",
|
||||
"PEOPLE_CLOUD": "Компонент облака «Пользователи»",
|
||||
"GROUPS_CLOUD": "Компонент облака «Группы»",
|
||||
"CONFIRM-DIALOG": "Диалоговое окно подтверждения"
|
||||
"CONFIRM-DIALOG": "Диалоговое окно подтверждения",
|
||||
"COMMUNITY": "Community"
|
||||
},
|
||||
"TRASHCAN": {
|
||||
"ACTIONS": {
|
||||
|
||||
@@ -95,7 +95,8 @@
|
||||
"PEOPLE_GROUPS_CLOUD": "Personer/grupp moln",
|
||||
"PEOPLE_CLOUD": "Personer moln-komponent",
|
||||
"GROUPS_CLOUD": "Grupper moln-komponent",
|
||||
"CONFIRM-DIALOG": "Bekräftelsedialog"
|
||||
"CONFIRM-DIALOG": "Bekräftelsedialog",
|
||||
"COMMUNITY": "Community"
|
||||
},
|
||||
"TRASHCAN": {
|
||||
"ACTIONS": {
|
||||
|
||||
@@ -95,7 +95,8 @@
|
||||
"PEOPLE_GROUPS_CLOUD": "人员/一组云",
|
||||
"PEOPLE_CLOUD": "人员云组件",
|
||||
"GROUPS_CLOUD": "组云组件",
|
||||
"CONFIRM-DIALOG": "确认对话"
|
||||
"CONFIRM-DIALOG": "确认对话",
|
||||
"COMMUNITY": "Community"
|
||||
},
|
||||
"TRASHCAN": {
|
||||
"ACTIONS": {
|
||||
|
||||
@@ -79,7 +79,7 @@
|
||||
"direction": "rtl"
|
||||
},
|
||||
{
|
||||
"key": "cz",
|
||||
"key": "cs",
|
||||
"label": "Czech"
|
||||
},
|
||||
{
|
||||
@@ -438,6 +438,11 @@
|
||||
20
|
||||
]
|
||||
},
|
||||
"dateValues":{
|
||||
"defaultDateFormat": "medium",
|
||||
"defaultDateTimeFormat": "DD/MM/YYYY HH:mm",
|
||||
"defaultLocale": "en-US"
|
||||
},
|
||||
"files": {
|
||||
"excluded": [
|
||||
".DS_Store",
|
||||
@@ -739,6 +744,9 @@
|
||||
"name": "My Default Name",
|
||||
"processDefinitionName": "My default process def name"
|
||||
},
|
||||
"adf-cloud-start-process": {
|
||||
"name": "My Default Cloud Name"
|
||||
},
|
||||
"adf-process-list": {
|
||||
"presets": {
|
||||
"default": [
|
||||
@@ -887,7 +895,7 @@
|
||||
},
|
||||
"alfresco-deployed-apps": [
|
||||
{
|
||||
"name": "candidateuserapp"
|
||||
"name": "candidatebaseapp"
|
||||
},
|
||||
{
|
||||
"name": "simpleapp"
|
||||
|
||||
@@ -12,6 +12,10 @@ router-outlet[name='overlay'] + * {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
[dir='rtl'] .mat-icon {
|
||||
transform: scale(-1, 1);
|
||||
}
|
||||
|
||||
@media (max-width: 425px) {
|
||||
adf-content-node-selector {
|
||||
.adf-content-node-selector-content-list {
|
||||
|
||||
@@ -91,6 +91,41 @@ import { CommunityProcessDetailsCloudDemoComponent } from './components/cloud/co
|
||||
import { CommunityProcessesCloudDemoComponent } from './components/cloud/community/community-processes-cloud.component';
|
||||
import { CommunityTaskDetailsCloudDemoComponent } from './components/cloud/community/community-task-details-cloud.component';
|
||||
|
||||
import { registerLocaleData } from '@angular/common';
|
||||
import localeFr from '@angular/common/locales/fr';
|
||||
import localeDe from '@angular/common/locales/de';
|
||||
import localeIt from '@angular/common/locales/it';
|
||||
import localeEs from '@angular/common/locales/es';
|
||||
import localeJa from '@angular/common/locales/ja';
|
||||
import localeNl from '@angular/common/locales/nl';
|
||||
import localePt from '@angular/common/locales/pt';
|
||||
import localeNb from '@angular/common/locales/nb';
|
||||
import localeRu from '@angular/common/locales/ru';
|
||||
import localeCh from '@angular/common/locales/zh';
|
||||
import localeAr from '@angular/common/locales/ar';
|
||||
import localeCs from '@angular/common/locales/cs';
|
||||
import localePl from '@angular/common/locales/pl';
|
||||
import localeFi from '@angular/common/locales/fi';
|
||||
import localeDa from '@angular/common/locales/da';
|
||||
import localeSv from '@angular/common/locales/sv';
|
||||
|
||||
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,
|
||||
|
||||
@@ -126,6 +126,15 @@ export const appRoutes: Routes = [
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
path: 'date',
|
||||
children: [
|
||||
{
|
||||
path: '',
|
||||
loadChildren: 'app/components/date/date.module#AppDateModule'
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
path: 'card-view',
|
||||
children: [
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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,24 +14,12 @@
|
||||
}
|
||||
}
|
||||
|
||||
.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-link--active {
|
||||
color: mat-color($primary);
|
||||
}
|
||||
@@ -52,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) {
|
||||
|
||||
@@ -72,6 +72,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: '/date', icon: 'calendar_today', title: 'APP_LAYOUT.DATE' },
|
||||
{ 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' },
|
||||
|
||||
@@ -54,7 +54,7 @@ export class FormCloudDemoComponent implements OnInit, OnDestroy {
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
this.formConfig = this.automationService.forms.getFormCloudDefinition();
|
||||
this.formConfig = JSON.stringify(this.automationService.forms.getFormCloudDefinition());
|
||||
this.parseForm();
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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)">{{
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -7,9 +7,7 @@
|
||||
[appName]="appName"
|
||||
[taskId]="taskId"
|
||||
(cancelClick)="goBack()"
|
||||
(taskClaimed)="onClaimTask()"
|
||||
(taskCompleted)="onTaskCompleted()"
|
||||
(taskUnclaimed)="onUnclaimTask()"
|
||||
(formSaved)="onFormSaved()">
|
||||
</adf-cloud-task-form>
|
||||
</div>
|
||||
|
||||
@@ -50,18 +50,6 @@ export class TaskDetailsCloudDemoComponent {
|
||||
this.router.navigate([`/cloud/${this.appName}/`]);
|
||||
}
|
||||
|
||||
onCompletedTask() {
|
||||
this.goBack();
|
||||
}
|
||||
|
||||
onUnclaimTask() {
|
||||
this.goBack();
|
||||
}
|
||||
|
||||
onClaimTask() {
|
||||
this.goBack();
|
||||
}
|
||||
|
||||
onTaskCompleted() {
|
||||
this.goBack();
|
||||
}
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
<div class="adf-date-pipes-container">
|
||||
<h2>Date Pipes</h2>
|
||||
|
||||
<mat-form-field class="adf-date-field">
|
||||
<input matInput
|
||||
placeholder="Format"
|
||||
[(ngModel)]="format">
|
||||
</mat-form-field>
|
||||
|
||||
<mat-form-field class="adf-date-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>
|
||||
<br>
|
||||
<h3>AdfTimeAgo Pipe</h3>
|
||||
<div>{{ today | adfTimeAgo }} </div>
|
||||
<br>
|
||||
<h3>AdfTimeAgo Pipe - Custom locale</h3>
|
||||
<div>{{ today | adfTimeAgo : locale}} </div>
|
||||
</div>
|
||||
@@ -0,0 +1,7 @@
|
||||
.adf-date-pipes-container {
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.adf-date-field {
|
||||
margin: 20px;
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
/*!
|
||||
* @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 { Component } from '@angular/core';
|
||||
import { AppConfigService } from '@alfresco/adf-core';
|
||||
|
||||
@Component({
|
||||
selector: 'app-date-page',
|
||||
templateUrl: './date.component.html',
|
||||
styleUrls: ['date.component.scss']
|
||||
})
|
||||
export class DateComponent {
|
||||
|
||||
today = new Date();
|
||||
locale: string;
|
||||
format: string;
|
||||
languages: any[];
|
||||
|
||||
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 { DateComponent } from './date.component';
|
||||
import { CommonModule } from '@angular/common';
|
||||
import { CoreModule } from '@alfresco/adf-core';
|
||||
|
||||
const routes: Routes = [
|
||||
{
|
||||
path: '',
|
||||
component: DateComponent
|
||||
}
|
||||
];
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
CommonModule,
|
||||
CoreModule.forChild(),
|
||||
RouterModule.forChild(routes)
|
||||
],
|
||||
declarations: [DateComponent]
|
||||
})
|
||||
export class AppDateModule {}
|
||||
@@ -250,12 +250,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 +283,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 +314,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>
|
||||
|
||||
@@ -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%;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,7 +28,8 @@ import {
|
||||
AlfrescoApiService, AuthenticationService, AppConfigService, AppConfigValues, ContentService, TranslationService,
|
||||
FileUploadEvent, FolderCreatedEvent, LogService, NotificationService,
|
||||
UploadService, DataColumn, DataRow, UserPreferencesService,
|
||||
PaginationComponent, FormValues, DisplayMode, InfinitePaginationComponent, HighlightDirective
|
||||
PaginationComponent, FormValues, DisplayMode, InfinitePaginationComponent, HighlightDirective,
|
||||
SharedLinksApiService
|
||||
} from '@alfresco/adf-core';
|
||||
|
||||
import {
|
||||
@@ -217,7 +218,8 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy {
|
||||
@Optional() private route: ActivatedRoute,
|
||||
public authenticationService: AuthenticationService,
|
||||
public alfrescoApiService: AlfrescoApiService,
|
||||
private contentMetadataService: ContentMetadataService) {
|
||||
private contentMetadataService: ContentMetadataService,
|
||||
private sharedLinksApiService: SharedLinksApiService) {
|
||||
}
|
||||
|
||||
showFile(event) {
|
||||
@@ -275,6 +277,12 @@ export class FilesComponent implements OnInit, OnChanges, 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() {
|
||||
|
||||
@@ -62,8 +62,7 @@ export class FormComponent implements OnInit, OnDestroy {
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
const formDefinitionJSON: any = this.automationService.forms.getFormDefinition();
|
||||
this.formConfig = JSON.stringify(formDefinitionJSON);
|
||||
this.formConfig = JSON.stringify(this.automationService.forms.getFormDefinition());
|
||||
this.parseForm();
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
right: 10px;
|
||||
top: 10px;
|
||||
z-index: 1;
|
||||
|
||||
}
|
||||
|
||||
.adf-settings {
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
</mat-accordion>
|
||||
</div>
|
||||
<div class="adf-grid-item adf-tasks-list" fxFlex.gt-md="380px"
|
||||
[ngClass.gt-md]="{'small-pagination': true}"
|
||||
[ngClass.gt-md]="{'adf-small-pagination': true}"
|
||||
*ngIf="taskFilter && !isStartTaskMode()">
|
||||
<adf-tasklist
|
||||
[appId]="taskFilter?.appId"
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
}
|
||||
|
||||
.adf-grid {
|
||||
|
||||
.adf-grid-item {
|
||||
margin: 4px;
|
||||
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14),
|
||||
@@ -19,10 +18,6 @@
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
.adf-list-buttons-start {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.adf-tasks-list.adf-small-pagination,
|
||||
.adf-processes-list.adf-small-pagination {
|
||||
.adf-pagination {
|
||||
@@ -31,10 +26,6 @@
|
||||
padding-bottom: 24px;
|
||||
padding-top: 8px;
|
||||
|
||||
&__block {
|
||||
border-right: none;
|
||||
}
|
||||
|
||||
&__range-block.adf-pagination__block:first-child {
|
||||
order: 1;
|
||||
width: 60%;
|
||||
@@ -74,26 +65,6 @@
|
||||
.adf-datatable-list {
|
||||
border: none;
|
||||
}
|
||||
|
||||
.adf-datatable tr,
|
||||
.adf-datatable td {
|
||||
height: 36px;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.adf-datatable td {
|
||||
padding-top: 0;
|
||||
padding-bottom: 0;
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.adf-datatable th {
|
||||
padding-top: 0;
|
||||
padding-bottom: 0;
|
||||
height: 40px;
|
||||
vertical-align: middle;
|
||||
font-size: 14px;
|
||||
}
|
||||
}
|
||||
|
||||
mat-slide-toggle {
|
||||
@@ -108,7 +79,6 @@
|
||||
}
|
||||
|
||||
.adf-accordion-panel {
|
||||
|
||||
.mat-expansion-panel {
|
||||
background: inherit;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<div id="attachment-task-list" *ngIf="taskId">
|
||||
<div class="adf-no-form-container">
|
||||
<div>
|
||||
|
||||
<adf-upload-drag-area
|
||||
[rootFolderId]="taskId">
|
||||
|
||||
@@ -171,12 +171,12 @@
|
||||
<data-column key="description" title="Description"></data-column>
|
||||
<data-column key="created" title="Created">
|
||||
<ng-template let-entry="$implicit">
|
||||
<div>{{entry.row.obj.created | date:'MMM d, yyyy' }} </div>
|
||||
<div>{{entry.row.obj.created | adfLocalizedDate: 'MMM d, yyyy' }} </div>
|
||||
</ng-template>
|
||||
</data-column>
|
||||
<data-column key="dueDate" title="Due Date" type="date">
|
||||
<ng-template let-entry="$implicit">
|
||||
<div>{{entry.row.obj.dueDate | date:'MMM d, yyyy' }} </div>
|
||||
<div>{{entry.row.obj.dueDate | adfLocalizedDate: 'MMM d, yyyy' }} </div>
|
||||
</ng-template>
|
||||
</data-column>
|
||||
<data-column key="processInstanceId" title="Process Instance Id"></data-column>
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
key="archivedAt"
|
||||
title="DOCUMENT_LIST.COLUMNS.DELETED_ON">
|
||||
<ng-template let-value="value">
|
||||
<span title="{{ value | date:'medium' }}"
|
||||
<span title="{{ value | adfLocalizedDate: 'medium' }}"
|
||||
class="adf-datatable-cell-value">{{ value | adfTimeAgo: currentLocale }}</span>
|
||||
</ng-template>
|
||||
</data-column>
|
||||
|
||||
@@ -103,11 +103,13 @@ for more information about installing and using the source code.
|
||||
| [Login Dialog Panel component](core/components/login-dialog-panel.component.md) | Shows and manages a login dialog. | [Source](../lib/core/login/components/login-dialog-panel.component.ts) |
|
||||
| [Login Dialog component](core/components/login-dialog.component.md) | Allows a user to perform a login via a dialog. | [Source](../lib/core/login/components/login-dialog.component.ts) |
|
||||
| [Login component](core/components/login.component.md) | Authenticates to Alfresco Content Services and Alfresco Process Services. | [Source](../lib/core/login/components/login.component.ts) |
|
||||
| [Notification History component](core/components/notification-history.component.md)  | This component is in the current status just an experimental component. | |
|
||||
| The main purpose of the Notification history component is list all the notification received in the current session. They will disappear from the list after the refresh. | [Source](../lib/core/notification-history/notification-history.component.ts) | |
|
||||
| [Pagination Component](core/components/pagination.component.md) | Adds pagination to the component it is used with. | [Source](../lib/core/pagination/pagination.component.ts) |
|
||||
| [Sidebar action menu component](core/components/sidebar-action-menu.component.md) | Displays a sidebar-action menu information panel. | [Source](../lib/core/layout/components/sidebar-action/sidebar-action-menu.component.ts) |
|
||||
| [Sidenav Layout component](core/components/sidenav-layout.component.md) | Displays the standard three-region ADF application layout. | [Source](../lib/core/layout/components/sidenav-layout/sidenav-layout.component.ts) |
|
||||
| [Sorting Picker Component](core/components/sorting-picker.component.md) | Selects from a set of predefined sorting definitions and directions. | [Source](../lib/core/sorting-picker/sorting-picker.component.ts) |
|
||||
| [Start Form component](core/components/start-form.component.md) | Displays the Start Form for a process. | [Source](../lib/core/form/components/start-form.component.ts) |
|
||||
| [Start Form component](core/components/start-form.component.md) | Displays the Start Form for a process. | [Source](../lib/process-services/form/start-form.component.ts) |
|
||||
| [Text Mask directive](core/components/text-mask.component.md) | Implements text field input masks. | [Source](../lib/core/form/components/widgets/text/text-mask.component.ts) |
|
||||
| [Toolbar Divider Component](core/components/toolbar-divider.component.md) | Divides groups of elements in a Toolbar with a visual separator. | [Source](../lib/core/toolbar/toolbar-divider.component.ts) |
|
||||
| [Toolbar Title Component](core/components/toolbar-title.component.md) | Supplies custom HTML to be included in a Toolbar component title. | [Source](../lib/core/toolbar/toolbar-title.component.ts) |
|
||||
@@ -158,7 +160,7 @@ for more information about installing and using the source code.
|
||||
| [Format Space pipe](core/pipes/format-space.pipe.md) | Replaces all the white space in a string with a supplied character. | [Source](../lib/core/pipes/format-space.pipe.ts) |
|
||||
| [Full name pipe](core/pipes/full-name.pipe.md) | Joins the first and last name properties from a UserProcessModel object into a single string. | [Source](../lib/core/pipes/full-name.pipe.ts) |
|
||||
| [Mime Type Icon pipe](core/pipes/mime-type-icon.pipe.md) | Retrieves an icon to represent a MIME type. | [Source](../lib/core/pipes/mime-type-icon.pipe.ts) |
|
||||
| [Multi Value pipe](core/pipes/multi-value.pipe.md) | Takes an array of strings and turns it into one string where items are separated by a separator. The default separator applied to the list is ', ', however, you can set your own separator in the params of the pipe. | [Source](../lib/core/pipes/multi-value.pipe.ts) |
|
||||
| [](core/pipes/multi-value.pipe.md) | Takes an array of strings and turns it into one string where items are separated by a separator. The default separator applied to the list is ', ', however, you can set your own separator in the params of the pipe. | [Source](../lib/core/pipes/multi-value.pipe.ts) |
|
||||
| [Node Name Tooltip pipe](core/pipes/node-name-tooltip.pipe.md) | Formats the tooltip for a Node. | [Source](../lib/core/pipes/node-name-tooltip.pipe.ts) |
|
||||
| [Text Highlight pipe](core/pipes/text-highlight.pipe.md) | Adds highlighting to words or sections of text that match a search string. | [Source](../lib/core/pipes/text-highlight.pipe.ts) |
|
||||
| [Time Ago pipe](core/pipes/time-ago.pipe.md) | Converts a recent past date into a number of days ago. | [Source](../lib/core/pipes/time-ago.pipe.ts) |
|
||||
@@ -410,7 +412,7 @@ for more information about installing and using the source code.
|
||||
| [Edit Task Filter Cloud component](process-services-cloud/components/edit-task-filter-cloud.component.md)  | Edits task filter details. | [Source](../lib/process-services-cloud/src/lib/task/task-filters/components/edit-task-filter-cloud.component.ts) |
|
||||
| [Form cloud custom outcomes component](process-services-cloud/components/form-cloud-custom-outcome.component.md) | Supplies custom outcome buttons to be included in Form cloud component. | [Source](../lib/process-services-cloud/src/lib/form/components/form-cloud-custom-outcomes.component.ts) |
|
||||
| [Form cloud component](process-services-cloud/components/form-cloud.component.md) | Shows a form from Process Services. | [Source](../lib/process-services-cloud/src/lib/form/components/form-cloud.component.ts) |
|
||||
| [Form definition selector Cloud componet](process-services-cloud/components/form-definition-selector-cloud.component.md) | Allows one form to be selected. | [Source](../lib/process-services-cloud/src/lib/form-definition-selector/components/form-definition-selector-cloud.component.ts) |
|
||||
| [Form definition selector Cloud componet](process-services-cloud/components/form-definition-selector-cloud.component.md) | Allows one form to be selected. | [Source](../lib/process-services-cloud/src/lib/form/components/form-definition-selector-cloud.component.ts) |
|
||||
| [Group Cloud component](process-services-cloud/components/group-cloud.component.md)  | Searches Groups. | [Source](../lib/process-services-cloud/src/lib/group/components/group-cloud.component.ts) |
|
||||
| [People Cloud Component](process-services-cloud/components/people-cloud.component.md)  | Allows one or more users to be selected (with auto-suggestion) based on the input parameters. | [Source](../lib/process-services-cloud/src/lib/task/start-task/components/people-cloud/people-cloud.component.ts) |
|
||||
| [Process Filters Cloud Component](process-services-cloud/components/process-filters-cloud.component.md)  | Lists all available process filters and allows to select a filter. | [Source](../lib/process-services-cloud/src/lib/process/process-filters/components/process-filters-cloud.component.ts) |
|
||||
@@ -419,7 +421,7 @@ for more information about installing and using the source code.
|
||||
| [Start Process Cloud Component](process-services-cloud/components/start-process-cloud.component.md)  | Starts a process. | [Source](../lib/process-services-cloud/src/lib/process/start-process/components/start-process-cloud.component.ts) |
|
||||
| [Start Task Cloud Component](process-services-cloud/components/start-task-cloud.component.md)  | Creates/starts a new task for the specified app. | [Source](../lib/process-services-cloud/src/lib/task/start-task/components/start-task-cloud.component.ts) |
|
||||
| [Task Filters Cloud component](process-services-cloud/components/task-filters-cloud.component.md)  | Shows all available filters. | [Source](../lib/process-services-cloud/src/lib/task/task-filters/components/task-filters-cloud.component.ts) |
|
||||
| [Form cloud component](process-services-cloud/components/task-form-cloud.component.md) | Shows a form for a task. | [Source](../lib/process-services-cloud/src/lib/form/components/task-form-cloud.component.ts) |
|
||||
| [Form cloud component](process-services-cloud/components/task-form-cloud.component.md) | Shows a form for a task. | [Source](../lib/process-services-cloud/src/lib/task/task-form/components/task-form-cloud.component.ts) |
|
||||
| [Task Header Cloud Component](process-services-cloud/components/task-header-cloud.component.md)  | Shows all the information related to a task. | [Source](../lib/process-services-cloud/src/lib/task/task-header/components/task-header-cloud.component.ts) |
|
||||
| [Task List Cloud component](process-services-cloud/components/task-list-cloud.component.md)  | Renders a list containing all the tasks matched by the parameters specified. | [Source](../lib/process-services-cloud/src/lib/task/task-list/components/task-list-cloud.component.ts) |
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ You can find further information about released versions of ADF in the
|
||||
[version index](versionIndex.md) and the [release notes](release-notes/README.md).
|
||||
|
||||
| ADF version | Content Services | Process Services |
|
||||
| -- | -- | -- |
|
||||
| --- | --- | --- |
|
||||
| [3.2.0](versionIndex.md#v320) - [3.2.1](versionIndex.md#v321) | **Full test:** v6.1.0 <br/> **Smoke test:** v5.2.4 | **Full test:** v7.1.0 (latest CI pipeline build), v1.9.0 <br/>**Smoke test:** v1.8.1 |
|
||||
| [3.1.0](versionIndex.md#v310) | **Full test:** v6.1.0 RC7 <br/> **Smoke test:** v5.2.4 | **Full test:** v2.0.0 (latest CI pipeline build), v1.9.0 <br/>**Smoke test:** v1.8.1 |
|
||||
| [3.0.0](versionIndex.md#v300) | **Full test:** v6.1.0 RC7 <br/> **Smoke test:** v5.2.4 | **Full test:** v2.0.0 (latest CI pipeline build), v1.9.0 <br/>**Smoke test:** v1.8.1 |
|
||||
|
||||
@@ -7,10 +7,18 @@ Last reviewed: 2019-01-14
|
||||
|
||||
# [Rating component](../../../lib/content-services/social/rating.component.ts "Defined in rating.component.ts")
|
||||
|
||||
Allows a user to add ratings to an item.
|
||||
Allows a user to add and remove rating to an item.
|
||||
It displays the average rating and the number of ratings. If the user has not rated the item the average rating stars color is grey.
|
||||
|
||||

|
||||
|
||||
If the user has rated the item the average rating stars color is yellow.
|
||||
|
||||

|
||||
|
||||
In order to remove the rating the user should click on the same star that he rated.
|
||||
If the average is decimal number it will be rounded.
|
||||
|
||||
## Basic Usage
|
||||
|
||||
```html
|
||||
@@ -31,7 +39,7 @@ Allows a user to add ratings to an item.
|
||||
|
||||
| Name | Type | Description |
|
||||
| ---- | ---- | ----------- |
|
||||
| changeVote | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<Object>` | Emitted when the "vote" gets changed. |
|
||||
| changeVote | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<Object>` | Average rating is emitted when the "vote" gets changed. |
|
||||
|
||||
## See also
|
||||
|
||||
|
||||
@@ -67,3 +67,17 @@ and passes it to a [Viewer component](../../core/components/viewer.component.md)
|
||||
[allowGoBack]="false">
|
||||
</adf-viewer>
|
||||
```
|
||||
|
||||
## Date and time widget
|
||||
|
||||
Date and time widget for setting the expiration date can be configured to show only the date picker or both date and time piker.
|
||||
By default, the widget will show both date and time picker if `sharedLinkDateTimePickerType` is not present in the app.config.json.
|
||||
Possible values are `'date'` or `'datetime'`
|
||||
|
||||
```json
|
||||
{
|
||||
...
|
||||
"sharedLinkDateTimePickerType": 'date'
|
||||
...
|
||||
}
|
||||
```
|
||||
|
||||
@@ -11,7 +11,7 @@ Defines the Image Resolver function used by the [Document List Component](../com
|
||||
|
||||
## Definitions
|
||||
|
||||
- `type` **[ImageResolver](../../../lib/content-services/document-list/data/image-resolver.model.ts)** = (row: [`DataRow`](../../../lib/core/datatable/data/data-row.model.ts), column: [`DataColumn`](../../../lib/core/datatable/data/data-column.model.ts)) => `string`
|
||||
- `type` **[`ImageResolver`](../../../lib/content-services/document-list/data/image-resolver.model.ts)** = (row: [`DataRow`](../../../lib/core/datatable/data/data-row.model.ts), column: [`DataColumn`](../../../lib/core/datatable/data/data-column.model.ts)) => `string`
|
||||
- _row:_ [`DataRow`](../../../lib/core/datatable/data/data-row.model.ts) - Data that defines the row
|
||||
- _column:_ [`DataColumn`](../../../lib/core/datatable/data/data-column.model.ts) - Data that defines the column
|
||||
- **Returns** File path for the image
|
||||
|
||||
@@ -49,7 +49,7 @@ this.permissionsStyle.push(new PermissionStyleModel('document-list__create', All
|
||||
```
|
||||
|
||||
```css
|
||||
adf-document-list ::ng-deep adf-datatable tr.document-list__create {
|
||||
adf-document-list adf-datatable .document-list__create {
|
||||
background: green !important;
|
||||
}
|
||||
```
|
||||
@@ -68,7 +68,7 @@ this.permissionsStyle.push(new PermissionStyleModel('document-list__disable', Al
|
||||
```
|
||||
|
||||
```css
|
||||
adf-document-list ::ng-deep adf-datatable tr.document-list__disable {
|
||||
adf-document-list adf-datatable .document-list__disable {
|
||||
background: red !important;
|
||||
}
|
||||
```
|
||||
|
||||
@@ -11,7 +11,7 @@ Defines the Row Filter function used by the [Document List Component](../compone
|
||||
|
||||
## Definitions
|
||||
|
||||
- `type` **[RowFilter](../../../lib/content-services/document-list/data/row-filter.model.ts)** = (value: [`ShareDataRow`](../../../lib/content-services/document-list/data/share-data-row.model.ts), index: `number`, array: [`ShareDataRow`](../../../lib/content-services/document-list/data/share-data-row.model.ts)`[]`) => any
|
||||
- `type` **[`RowFilter`](../../../lib/content-services/document-list/data/row-filter.model.ts)** = (value: [`ShareDataRow`](../../../lib/content-services/document-list/data/share-data-row.model.ts), index: `number`, array: [`ShareDataRow`](../../../lib/content-services/document-list/data/share-data-row.model.ts)`[]`) => any
|
||||
- _value:_ [`ShareDataRow`](../../../lib/content-services/document-list/data/share-data-row.model.ts) - Data that defines the row
|
||||
- _index:_ `number` - Index of the row within the list
|
||||
- _array:_ [`ShareDataRow`](../../../lib/content-services/document-list/data/share-data-row.model.ts)`[]` - The full set of rows for the list
|
||||
|
||||
@@ -48,7 +48,7 @@ Implements node operations used by the [Document List component](../components/d
|
||||
- _nodeId:_ `string` -
|
||||
- _pagination:_ [`PaginationModel`](../../../lib/core/models/pagination.model.ts) -
|
||||
- _includeFields:_ `string[]` -
|
||||
- _where:_ `string` - (Optional)
|
||||
- _where:_ `string` - (Optional)
|
||||
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`DocumentLoaderNode`](../../../lib/content-services/document-list/models/document-folder.model.ts)`>` -
|
||||
|
||||
- **moveNode**(nodeId: `string`, targetParentId: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`NodeEntry`](https://github.com/Alfresco/alfresco-js-api/blob/master/src/alfresco-core-rest-api/docs/NodeEntry.md)`>`<br/>
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
---
|
||||
Title: Notification History component
|
||||
Added: v3.3.0
|
||||
Status: Experimental
|
||||
Last reviewed: 2019-06-05
|
||||
---
|
||||
|
||||
# [Notification History component](../../../lib/core/notification-history/notification-history.component.ts "Defined in notification-history.component.ts")
|
||||
|
||||
This component is in the current status just an experimental component.
|
||||
The main purpose of the [Notification history component](../../core/components/notification-history.component.md) is list all the notification received in the current session. They will disappear from the list after the refresh.
|
||||
|
||||

|
||||
|
||||
## Basic Usage
|
||||
|
||||
```html
|
||||
<adf-notification-history [menuPositionX]="'before'" [menuPositionY]="'above'"></adf-notification-history>
|
||||
```
|
||||
|
||||
## Class members
|
||||
|
||||
### Properties
|
||||
|
||||
| Name | Type | Default value | Description |
|
||||
| ---- | ---- | ------------- | ----------- |
|
||||
| menuPositionX | `string` | "after" | Custom choice for opening the menu at the bottom. Can be `before` or `after`. |
|
||||
| menuPositionY | `string` | "below" | Custom choice for opening the menu at the bottom. Can be `above` or `below`. |
|
||||
@@ -0,0 +1,28 @@
|
||||
# [Localized Date pipe](../../../lib/core/pipes/localized-date.pipe.ts "Defined in localized-date.pipe.ts")
|
||||
|
||||
Converts a date to an given format and locale.
|
||||
|
||||
## Basic Usage
|
||||
|
||||
<!-- {% raw %} -->
|
||||
|
||||
```HTML
|
||||
<div>
|
||||
Created date: {{ date | adfLocalizedDate }}
|
||||
</div>
|
||||
```
|
||||
|
||||
<!-- {% endraw %} -->
|
||||
|
||||
### Properties
|
||||
|
||||
| Name | Type | Default value | Description |
|
||||
| ---- | ---- | ------------- | ----------- |
|
||||
| format | string | 'medium' | A format to apply to the date value. [Date Pipe Formats.](https://angular.io/api/common/DatePipe#custom-format-options) |
|
||||
| locale | string | 'en-US' | A locale id for the locale format rules to use. |
|
||||
|
||||
## Details
|
||||
|
||||
The pipe takes a date and formats it and localizes it so the date is displayed in the proper format for the region. It uses the [Angular Date Pipe](https://angular.io/api/common/DatePipe#custom-format-options) so all the pre-defined and custom formats can be used.
|
||||
|
||||
When localizing a date, you will need to add the specific locale file for your region in order to use it. Read more about internationalization [here](https://angular.io/guide/i18n#i18n-pipes).
|
||||
@@ -21,8 +21,14 @@ Converts a recent past date into a number of days ago.
|
||||
|
||||
<!-- {% endraw %} -->
|
||||
|
||||
| Name | Type | Default value | Description |
|
||||
| ---- | ---- | ------------- | ----------- |
|
||||
| locale | string | 'en-US' | A locale id for the locale format rules to use. |
|
||||
|
||||
## Details
|
||||
|
||||
The pipe finds the difference between the input date and the current date. If it
|
||||
is less than seven days then then the date will be formatted as "X days ago".
|
||||
Otherwise, the usual full date format is used.
|
||||
|
||||
By default, it localizes the date to the language that is currently in use by the app. Furthermore, a different locale id can be passed to the pipe to overwrite the locale id to set a custom one.
|
||||
|
||||
@@ -28,22 +28,21 @@ Shows a notification message with optional feedback.
|
||||
- _action:_ `string` - Caption for the response button
|
||||
- _config:_ `number|MatSnackBarConfig` - (Optional) Time before notification disappears after being shown or MatSnackBarConfig object
|
||||
- **Returns** [`MatSnackBarRef`](https://material.angular.io/components/snack-bar/overview)`<any>` - Information/control object for the SnackBar
|
||||
- **showError**(message: `string`, action: `string`): [`MatSnackBarRef`](https://material.angular.io/components/snack-bar/overview)`<any>`<br/>
|
||||
Rase error message
|
||||
- _message:_ `string` - The message (or resource key) to show.
|
||||
- _action:_ `string` - Caption for the response button
|
||||
- **Returns** [`MatSnackBarRef`](https://material.angular.io/components/snack-bar/overview)`<any>` - Information/control object for the SnackBar
|
||||
- **showInfo**(message: `string`, action: `string`): [`MatSnackBarRef`](https://material.angular.io/components/snack-bar/overview)`<any>`<br/>
|
||||
Rase info message
|
||||
- _message:_ `string` - The message (or resource key) to show.
|
||||
- _action:_ `string` - Caption for the response button
|
||||
- **Returns** [`MatSnackBarRef`](https://material.angular.io/components/snack-bar/overview)`<any>` - Information/control object for the SnackBar
|
||||
- **showWarning**(message: `string`, action: `string`): [`MatSnackBarRef`](https://material.angular.io/components/snack-bar/overview)`<any>`<br/>
|
||||
Rase warning message
|
||||
- _message:_ `string` - The message (or resource key) to show.
|
||||
- _action:_ `string` - Caption for the response button
|
||||
- **Returns** [`MatSnackBarRef`](https://material.angular.io/components/snack-bar/overview)`<any>` - Information/control object for the SnackBar
|
||||
|
||||
- **showError**(message: `string`, action?: `string`): [`MatSnackBarRef`](https://material.angular.io/components/snack-bar/overview)`<any>`<br/>
|
||||
Rase error message
|
||||
- _message:_ `string` - Text message or translation key for the message.
|
||||
- _action:_ `string` - (Optional) Action name
|
||||
- **Returns** [`MatSnackBarRef`](https://material.angular.io/components/snack-bar/overview)`<any>` -
|
||||
- **showInfo**(message: `string`, action?: `string`): [`MatSnackBarRef`](https://material.angular.io/components/snack-bar/overview)`<any>`<br/>
|
||||
Rase info message
|
||||
- _message:_ `string` - Text message or translation key for the message.
|
||||
- _action:_ `string` - (Optional) Action name
|
||||
- **Returns** [`MatSnackBarRef`](https://material.angular.io/components/snack-bar/overview)`<any>` -
|
||||
- **showWarning**(message: `string`, action?: `string`): [`MatSnackBarRef`](https://material.angular.io/components/snack-bar/overview)`<any>`<br/>
|
||||
Rase warning message
|
||||
- _message:_ `string` - Text message or translation key for the message.
|
||||
- _action:_ `string` - (Optional) Action name
|
||||
- **Returns** [`MatSnackBarRef`](https://material.angular.io/components/snack-bar/overview)`<any>` -
|
||||
|
||||
## Details
|
||||
|
||||
|
||||
@@ -27,6 +27,12 @@ Finds shared links to Content Services items.
|
||||
- _options:_ `any` - Options supported by JS-API
|
||||
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`NodePaging`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/docs/NodePaging.md)`>` - List of shared links
|
||||
|
||||
### Events
|
||||
|
||||
| Name | Type | Description |
|
||||
| --- | --- | --- |
|
||||
| error | `Subject<{ statusCode: number, message: string }>` | Gets emitted upon errors. |
|
||||
|
||||
## Details
|
||||
|
||||
Content Services allows users to generate URLs that can be shared with
|
||||
|
||||
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 9.6 KiB |
|
After Width: | Height: | Size: 8.5 KiB |
|
After Width: | Height: | Size: 37 KiB |
|
Before Width: | Height: | Size: 5.3 KiB After Width: | Height: | Size: 9.9 KiB |
|
After Width: | Height: | Size: 8.3 KiB |
@@ -16,7 +16,7 @@ Manages and runs basic extension functionality.
|
||||
- **evaluateRule**(ruleId: `string`, context?: [`RuleContext`](../../../lib/extensions/src/lib/config/rule.extensions.ts)): `boolean`<br/>
|
||||
Evaluates a rule.
|
||||
- _ruleId:_ `string` - ID of the rule to evaluate
|
||||
- _context:_ [`RuleContext`](../../../lib/extensions/src/lib/config/rule.extensions.ts) - (Optional) (optional) Custom rule execution context.
|
||||
- _context:_ [`RuleContext`](../../../lib/extensions/src/lib/config/rule.extensions.ts) - (Optional) Custom rule execution context.
|
||||
- **Returns** `boolean` - True if the rule passed, false otherwise
|
||||
- **getActionById**(id: `string`): [`ActionRef`](../../../lib/extensions/src/lib/config/action.extensions.ts)<br/>
|
||||
Retrieves an action using its ID value.
|
||||
|
||||
@@ -9,7 +9,7 @@ This page lists all third party libraries that ADF depends on.
|
||||
## Libraries
|
||||
|
||||
| Name | Version | License |
|
||||
| -- | -- | -- |
|
||||
| --- | --- | --- |
|
||||
| [@alfresco/adf-content-services](https://github.com/Alfresco/alfresco-ng2-components) | 3.2.0-beta6 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
|
||||
| [@alfresco/adf-core](https://github.com/Alfresco/alfresco-ng2-components) | 3.2.0-beta6 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
|
||||
| [@alfresco/adf-extensions](https://github.com/Alfresco/alfresco-ng2-components) | 3.2.0-beta6 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
|
||||
|
||||
@@ -10,7 +10,7 @@ with links to their licenses.
|
||||
## Libraries
|
||||
|
||||
| Name | Version | License |
|
||||
| -- | -- | -- |
|
||||
| --- | --- | --- |
|
||||
| [@angular/compiler](https://github.com/angular/angular) | 7.0.3 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [@angular/core](https://github.com/angular/angular) | 7.0.3 | [MIT](http://www.opensource.org/licenses/MIT) |
|
||||
| [alfresco-components](https://github.com/Alfresco/alfresco-ng2-components) | 2.7.0-beta5 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
|
||||
|
||||
@@ -9,7 +9,7 @@ This page lists all third party libraries that ADF v3.1.0 depends on.
|
||||
## Libraries
|
||||
|
||||
| Name | Version | License |
|
||||
| -- | -- | -- |
|
||||
| --- | --- | --- |
|
||||
| [@alfresco/adf-content-services](https://github.com/Alfresco/alfresco-ng2-components) | 3.1.0-beta5 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
|
||||
| [@alfresco/adf-core](https://github.com/Alfresco/alfresco-ng2-components) | 3.1.0-beta5 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
|
||||
| [@alfresco/adf-extensions](https://github.com/Alfresco/alfresco-ng2-components) | 3.1.0-beta5 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
|
||||
|
||||
@@ -9,7 +9,7 @@ This page lists all third party libraries that ADF v3.2.0 depends on.
|
||||
## Libraries
|
||||
|
||||
| Name | Version | License |
|
||||
| -- | -- | -- |
|
||||
| --- | --- | --- |
|
||||
| [@alfresco/adf-content-services](https://github.com/Alfresco/alfresco-ng2-components) | 3.2.0-beta6 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
|
||||
| [@alfresco/adf-core](https://github.com/Alfresco/alfresco-ng2-components) | 3.2.0-beta6 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
|
||||
| [@alfresco/adf-extensions](https://github.com/Alfresco/alfresco-ng2-components) | 3.2.0-beta6 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) |
|
||||
|
||||
@@ -29,7 +29,8 @@ Shows a [`form`](../../../lib/process-services-cloud/src/lib/form/models/form-cl
|
||||
```html
|
||||
<adf-cloud-form
|
||||
[appName]="appName"
|
||||
[taskId]="taskId">
|
||||
[taskId]="taskId"
|
||||
[processInstanceId]="processInstanceId">
|
||||
</adf-cloud-form>
|
||||
```
|
||||
|
||||
@@ -78,6 +79,7 @@ The template defined inside `empty-form` will be shown when no form definition i
|
||||
| appName | `string` | | App id to fetch corresponding form and values. |
|
||||
| data | [`TaskVariableCloud`](../../../lib/process-services-cloud/src/lib/form/models/task-variable-cloud.model.ts)`[]` | | Custom form values map to be used with the rendered form. |
|
||||
| disableCompleteButton | `boolean` | false | If true then the `Complete` outcome button is shown but it will be disabled. |
|
||||
| disableSaveButton | `boolean` | false | If true then the `Save` outcome button is shown but it will be disabled. |
|
||||
| disableStartProcessButton | `boolean` | false | If true then the `Start Process` outcome button is shown but it will be disabled. |
|
||||
| fieldValidators | [`FormFieldValidator`](../../../lib/core/form/components/widgets/core/form-field-validator.ts)`[]` | \[] | Contains a list of form field validator instances. |
|
||||
| form | [`FormCloud`](../../../lib/process-services-cloud/src/lib/form/models/form-cloud.model.ts) | | Underlying [form model](../../../lib/core/form/components/widgets/core/form.model.ts) instance. |
|
||||
@@ -91,6 +93,7 @@ The template defined inside `empty-form` will be shown when no form definition i
|
||||
| showTitle | `boolean` | true | Toggle rendering of the form title. |
|
||||
| showValidationIcon | `boolean` | true | Toggle rendering of the validation icon next to the form title. |
|
||||
| taskId | `string` | | Task id to fetch corresponding form and values. |
|
||||
| processInstanceId | `string `| | Process instance id to fetch corresponding form and values.|
|
||||
|
||||
### Events
|
||||
|
||||
@@ -115,6 +118,7 @@ All `formXXX` events receive a [`FormCloudModel`](../../../lib/process-services-
|
||||
<adf-cloud-form
|
||||
[appName]="appName"
|
||||
[taskId]="selectedTask?.id"
|
||||
[processInstanceId]="selectedTask?.processInstanceId"
|
||||
(formSaved)="onFormSaved($event)">
|
||||
</adf-cloud-form>
|
||||
```
|
||||
@@ -131,12 +135,13 @@ onFormSaved(form: FormCloudModel) {
|
||||
|
||||
There are various ways to display a form. The common scenarios are detailed below.
|
||||
|
||||
#### Displaying a form instance by task id
|
||||
#### Displaying a form instance by task id and processInstanceId
|
||||
|
||||
```html
|
||||
<adf-cloud-form
|
||||
[appName]="appName"
|
||||
[taskId]="selectedTask?.id">
|
||||
[taskId]="selectedTask?.id"
|
||||
[processInstanceId]="selectedTask?.processInstanceId">
|
||||
</adf-cloud-form>
|
||||
```
|
||||
|
||||
@@ -171,6 +176,7 @@ of the form validation before it is submitted.
|
||||
<adf-cloud-form
|
||||
[appName]="appName"
|
||||
[taskId]="selectedTask?.id"
|
||||
[processInstanceId]="selectedTask?.processInstanceId"
|
||||
executeOutcome="validateForm($event)">
|
||||
</adf-cloud-form>
|
||||
```
|
||||
|
||||
@@ -29,8 +29,8 @@ Searches Groups.
|
||||
| appName | `string` | | Name of the application. If specified this shows the users who have access to the app. |
|
||||
| mode | `string` | | User selection mode (single/multiple). |
|
||||
| preSelectGroups | [`GroupModel`](../../../lib/process-services-cloud/src/lib/group/models/group.model.ts)`[]` | \[] | Array of users to be pre-selected. This pre-selects all users in multi selection mode and only the first user of the array in single selection mode. |
|
||||
| searchGroupsControl | `FormControl` | new FormControl() | FormControl to search the group. |
|
||||
| roles | `string[]` | \[] | Role names of the groups to be listed. |
|
||||
| searchGroupsControl | `FormControl` | new FormControl() | FormControl to search the group |
|
||||
| title | `string` | | Title of the field |
|
||||
|
||||
### Events
|
||||
|
||||
@@ -28,9 +28,9 @@ Allows one or more users to be selected (with auto-suggestion) based on the inpu
|
||||
| mode | `string` | | User selection mode (single/multiple). |
|
||||
| preSelectUsers | [`IdentityUserModel`](../../../lib/core/userinfo/models/identity-user.model.ts)`[]` | | Array of users to be pre-selected. All users in the array are pre-selected in multi selection mode, but only the first user is pre-selected in single selection mode. Mandatory properties are: id, email, username |
|
||||
| roles | `string[]` | | Role names of the users to be listed. |
|
||||
| searchUserCtrl | `FormControl` | new FormControl() | FormControl to search the user |
|
||||
| title | `string` | | Placeholder translation key |
|
||||
| searchUserCtrl | `FormControl` | new FormControl() | FormControl to search the users. |
|
||||
| validate | `Boolean` | false | This flag enables the validation on the preSelectUsers passed as input. In case the flag is true the components call the [identity service](../../../lib/testing/src/lib/core/actions/identity/identity.service.ts) to verify the validity of the information passed as input. Otherwise, no check will be done. |
|
||||
| validate | `Boolean` | false | This flag enables the validation on the preSelectUsers passed as input. In case the flag is true the components call the identity service to verify the validity of the information passed as input. Otherwise, no check will be done. |
|
||||
|
||||
### Events
|
||||
|
||||
|
||||
@@ -30,7 +30,8 @@ Starts a process.
|
||||
| name | `string` | "" | Name of the process. |
|
||||
| processDefinitionName | `string` | | Name of the process definition. |
|
||||
| showSelectProcessDropdown | `boolean` | true | Show/hide the process dropdown list. |
|
||||
| variables | `Map<string, object>[]` | | Variables to attach to the payload. |
|
||||
| variables | `Object` | | Variables to attach to the payload. |
|
||||
| values | `TaskVariableCloud` | | Values to attach to a form. |
|
||||
|
||||
### Events
|
||||
|
||||
@@ -55,3 +56,22 @@ Starts a process.
|
||||
You can use the `processDefinitionName` property to select which process will be selected by default on the dropdown (when there is more than one process to choose from). Use the `name` property to set the name shown on the dropdown item.
|
||||
|
||||
If the app contains only one process definition, this process definition will be selected by default
|
||||
|
||||
|
||||
### Starting a process with variables
|
||||
|
||||
```html
|
||||
<adf-cloud-start-process
|
||||
[appId]="YOUR_APP_ID"
|
||||
[variables]="{ 'my-key1' : 'myvalue', 'my-key2' : 'myvalue2'}">
|
||||
</adf-cloud-start-process>
|
||||
```
|
||||
|
||||
### Starting a process with values passed to the form
|
||||
|
||||
```html
|
||||
<adf-cloud-start-process
|
||||
[appId]="YOUR_APP_ID"
|
||||
[values]="[{'name': 'firstName', 'value': 'MyName'}, {'name': 'lastName', 'value': 'MyLastName'}]">
|
||||
</adf-cloud-start-process>
|
||||
```
|
||||
|
||||
@@ -5,17 +5,20 @@ Status: Active
|
||||
Last reviewed: 2019-04-17
|
||||
---
|
||||
|
||||
# [Task form cloud component](../../../lib/process-services-cloud/src/lib/form/components/task-form-cloud.component.ts "Defined in task-form-cloud.component.ts")
|
||||
# [Task form cloud component](../../../lib/process-services-cloud/src/lib/task/task-form/components/task-form-cloud.component.ts "Defined in task-form-cloud.component.ts")
|
||||
|
||||
Shows a [`form`](../../../lib/process-services-cloud/src/lib/form/models/form-cloud.model.ts) for a task.
|
||||
|
||||
## Contents
|
||||
Shows Cancel, Save, Complete, Claim and Release buttons. Cancel, Save and Complete buttons are always present. Claim and Release buttons are present according to user's permissions and task's condition (Claimed, Completed etc).
|
||||
|
||||
- [Basic Usage](#basic-usage)
|
||||
- [Class members](#class-members)
|
||||
- [Properties](#properties)
|
||||
- [Events](#events)
|
||||
- [See also](#see-also)
|
||||

|
||||
|
||||
The following example shows the buttons that are visible when the task's condition is released and the user has the admin permissions
|
||||
|
||||

|
||||
|
||||
Save and Complete buttons get disabled when at least one of the form's inputs are invalid.
|
||||

|
||||
|
||||
## Basic Usage
|
||||
|
||||
@@ -33,27 +36,27 @@ Shows a [`form`](../../../lib/process-services-cloud/src/lib/form/models/form-cl
|
||||
| Name | Type | Default value | Description |
|
||||
| ---- | ---- | ------------- | ----------- |
|
||||
| appName | `string` | | App id to fetch corresponding form and values. |
|
||||
| taskId | `string` | | Task id to fetch corresponding form and values. |
|
||||
| readOnly | `boolean` | false | Toggle readonly state of the task. |
|
||||
| showCancelButton | `boolean` | true | Toggle rendering of the `Cancel` button. |
|
||||
| showCompleteButton | `boolean` | true | Toggle rendering of the `Complete` button. |
|
||||
| showRefreshButton | `boolean` | false | Toggle rendering of the `Refresh` button. |
|
||||
| showValidationIcon | `boolean` | true | Toggle rendering of the `Validation` icon. |
|
||||
| showCancelButton | `boolean` | true | Toggle rendering of the `Cancel` outcome button. |
|
||||
| showCompleteButton | `boolean` | true | Toggle rendering of the `Complete` outcome button. |
|
||||
| readOnly | `boolean` | false | Toggle readOnly state of the task. |
|
||||
| taskId | `string` | | Task id to fetch corresponding form and values. |
|
||||
|
||||
### Events
|
||||
|
||||
| Name | Type | Description |
|
||||
| ---- | ---- | ----------- |
|
||||
| formSaved | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`FormCloud`](../../../lib/process-services-cloud/src/lib/form/models/form-cloud.model.ts)`>` | Emitted when the form is saved. |
|
||||
| formCompleted | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`FormCloud`](../../../lib/process-services-cloud/src/lib/form/models/form-cloud.model.ts)`>` | Emitted when the form is submitted with the `Complete` outcome. |
|
||||
| taskCompleted | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`string`>` | Emitted when the task is completed. |
|
||||
| taskClaimed | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`string`>` | Emitted when the task is claimed. |
|
||||
| taskUnclaimed | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`string`>` | Emitted when the task is unclaimed. |
|
||||
| cancelClick | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`string`>` | Emitted when the cancel button is clicked. |
|
||||
| cancelClick | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<string>` | Emitted when the cancel button is clicked. |
|
||||
| error | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<any>` | Emitted when any error occurs. |
|
||||
| formCompleted | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`FormCloud`](../../../lib/process-services-cloud/src/lib/form/models/form-cloud.model.ts)`>` | Emitted when the form is submitted with the `Complete` outcome. |
|
||||
| formSaved | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`FormCloud`](../../../lib/process-services-cloud/src/lib/form/models/form-cloud.model.ts)`>` | Emitted when the form is saved. |
|
||||
| taskClaimed | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<string>` | Emitted when the task is claimed. |
|
||||
| taskCompleted | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<string>` | Emitted when the task is completed. |
|
||||
| taskUnclaimed | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<string>` | Emitted when the task is unclaimed. |
|
||||
|
||||
## See also
|
||||
|
||||
- [Form component](./form-cloud.component.md)
|
||||
- [Form field model](../../core/models/form-field.model.md)
|
||||
- [Form cloud service](../services/form-cloud.service.md)
|
||||
- [Form component](./form-cloud.component.md)
|
||||
- [Form field model](../../core/models/form-field.model.md)
|
||||
- [Form cloud service](../services/form-cloud.service.md)
|
||||
|
||||
@@ -16,9 +16,12 @@ Gets details of deployed apps for the current user.
|
||||
- **getDeployedApplicationsByStatus**(status: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`ApplicationInstanceModel`](../../../lib/process-services-cloud/src/lib/app/models/application-instance.model.ts)`[]>`<br/>
|
||||
Gets a list of deployed apps for this user by status.
|
||||
- _status:_ `string` - Required status value
|
||||
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`ApplicationInstanceModel`](../../../lib/process-services-cloud/src/lib/app/models/application-instance.model.ts)`[]>` - The list of deployed apps.
|
||||
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`ApplicationInstanceModel`](../../../lib/process-services-cloud/src/lib/app/models/application-instance.model.ts)`[]>` - The list of deployed apps
|
||||
- **hasDeployedApps**(): `boolean`<br/>
|
||||
|
||||
You can override the behaviour by defining the required applications in app.config.json against the property `alfresco-deployed-apps`. The service will fetch the deployed apps only when there are no apps defined in the app.config.json
|
||||
- **Returns** `boolean` -
|
||||
|
||||
- **loadApps**()<br/>
|
||||
|
||||
## Details
|
||||
|
||||
|
||||
@@ -45,6 +45,10 @@ class MyComponent {
|
||||
- _appName:_ `string` -
|
||||
- **Returns** `string` -
|
||||
|
||||
- **getDropDownJsonData**(url: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`FormFieldOption`](../../../lib/core/form/components/widgets/core/form-field-option.ts)`[]>`<br/>
|
||||
Parses JSON data to create a corresponding form.
|
||||
- _url:_ `string` - String data to make the request
|
||||
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`FormFieldOption`](../../../lib/core/form/components/widgets/core/form-field-option.ts)`[]>` - Array of FormFieldOption object
|
||||
- **getForm**(appName: `string`, taskId: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<any>`<br/>
|
||||
Gets a form definition.
|
||||
- _appName:_ `string` - Name of the app
|
||||
@@ -74,7 +78,7 @@ class MyComponent {
|
||||
- **parseForm**(json: `any`, data?: [`TaskVariableCloud`](../../../lib/process-services-cloud/src/lib/form/models/task-variable-cloud.model.ts)`[]`, readOnly: `boolean` = `false`): [`FormCloud`](../../../lib/process-services-cloud/src/lib/form/models/form-cloud.model.ts)<br/>
|
||||
Parses JSON data to create a corresponding form.
|
||||
- _json:_ `any` - JSON data to create the form
|
||||
- _data:_ [`TaskVariableCloud`](../../../lib/process-services-cloud/src/lib/form/models/task-variable-cloud.model.ts)`[]` - (Optional) (Optional) Values for the form's fields
|
||||
- _data:_ [`TaskVariableCloud`](../../../lib/process-services-cloud/src/lib/form/models/task-variable-cloud.model.ts)`[]` - (Optional) Values for the form's fields
|
||||
- _readOnly:_ `boolean` - Toggles whether or not the form should be read-only
|
||||
- **Returns** [`FormCloud`](../../../lib/process-services-cloud/src/lib/form/models/form-cloud.model.ts) - [Form](../../../lib/process-services/task-list/models/form.model.ts) created from the JSON specification
|
||||
- **saveTaskForm**(appName: `string`, taskId: `string`, formId: `string`, formValues: [`FormValues`](../../../lib/core/form/components/widgets/core/form-values.ts)): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`TaskDetailsCloudModel`](../../../lib/process-services-cloud/src/lib/task/start-task/models/task-details-cloud.model.ts)`>`<br/>
|
||||
|
||||
@@ -46,6 +46,10 @@ Manages task cloud.
|
||||
- _appName:_ `string` - Name of the app
|
||||
- _taskId:_ `string` - ID of the task whose details you want
|
||||
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`TaskDetailsCloudModel`](../../../lib/process-services-cloud/src/lib/task/start-task/models/task-details-cloud.model.ts)`>` - Task details
|
||||
- **isTaskEditable**(taskDetails: [`TaskDetailsCloudModel`](../../../lib/process-services-cloud/src/lib/task/start-task/models/task-details-cloud.model.ts)): `boolean`<br/>
|
||||
Validate if a task is editable.
|
||||
- _taskDetails:_ [`TaskDetailsCloudModel`](../../../lib/process-services-cloud/src/lib/task/start-task/models/task-details-cloud.model.ts) - task details object
|
||||
- **Returns** `boolean` - Boolean value if the task is editable
|
||||
- **unclaimTask**(appName: `string`, taskId: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`TaskDetailsCloudModel`](../../../lib/process-services-cloud/src/lib/task/start-task/models/task-details-cloud.model.ts)`>`<br/>
|
||||
Un-claims a task.
|
||||
- _appName:_ `string` - Name of the app
|
||||
|
||||
@@ -56,6 +56,7 @@ Any content in the body of `<adf-form>` will be shown when no form definition is
|
||||
| ---- | ---- | ------------- | ----------- |
|
||||
| data | [`FormValues`](../../../lib/core/form/components/widgets/core/form-values.ts) | | Custom form values map to be used with the rendered form. |
|
||||
| disableCompleteButton | `boolean` | false | If true then the `Complete` outcome button is shown but it will be disabled. |
|
||||
| disableSaveButton | `boolean` | false | If true then the `Save` outcome button is shown but it will be disabled. |
|
||||
| disableStartProcessButton | `boolean` | false | If true then the `Start Process` outcome button is shown but it will be disabled. |
|
||||
| fieldValidators | [`FormFieldValidator`](../../../lib/core/form/components/widgets/core/form-field-validator.ts)`[]` | \[] | Contains a list of form field validator instances. |
|
||||
| form | [`FormModel`](../../../lib/core/form/components/widgets/core/form.model.ts) | | Underlying [form model](../../../lib/core/form/components/widgets/core/form.model.ts) instance. |
|
||||
|
||||
@@ -246,8 +246,8 @@ Two new methods has been added into the alfresco-js-api to support retrieve the
|
||||
|
||||
| API | Name | HTTP method | URL | Description |
|
||||
| --- | ---- | ----------- | --- | ----------- |
|
||||
| _ActivitiPublicRestApi.[TaskApi](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api-legacy/activiti-rest-api/docs/TaskApi.md)_ | [**getTaskAuditJson**](https://github.com/Alfresco/alfresco-js-api/blob/a82ce3bbe56cb0944f8771d14193704b571adf96/src/alfresco-activiti-rest-api/docs/TaskApi.md#getTaskAuditJson) | **GET** | /api/enterprise/tasks/{taskId}/audit | Retrieve audit infromation in json format |
|
||||
| _ActivitiPublicRestApi.[TaskApi](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api-legacy/activiti-rest-api/docs/TaskApi.md)_ | [**getTaskAuditPdf**](https://github.com/Alfresco/alfresco-js-api/blob/a82ce3bbe56cb0944f8771d14193704b571adf96/src/alfresco-activiti-rest-api/docs/TaskApi.md#getTaskAuditPdf) | **GET** | /app/rest/tasks/{taskId}/audit | Retrieve the task audit infromation in pdf format |
|
||||
| _ActivitiPublicRestApi.[`TaskApi`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api-legacy/activiti-rest-api/docs/TaskApi.md)_ | [**getTaskAuditJson**](https://github.com/Alfresco/alfresco-js-api/blob/a82ce3bbe56cb0944f8771d14193704b571adf96/src/alfresco-activiti-rest-api/docs/TaskApi.md#getTaskAuditJson) | **GET** | /api/enterprise/tasks/{taskId}/audit | Retrieve audit infromation in json format |
|
||||
| _ActivitiPublicRestApi.[`TaskApi`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api-legacy/activiti-rest-api/docs/TaskApi.md)_ | [**getTaskAuditPdf**](https://github.com/Alfresco/alfresco-js-api/blob/a82ce3bbe56cb0944f8771d14193704b571adf96/src/alfresco-activiti-rest-api/docs/TaskApi.md#getTaskAuditPdf) | **GET** | /app/rest/tasks/{taskId}/audit | Retrieve the task audit infromation in pdf format |
|
||||
|
||||
For further details about those endepoints please refer to the [official documentation](https://github.com/Alfresco/alfresco-js-api/blob/master/src/alfresco-activiti-rest-api/docs/TaskApi.md)
|
||||
|
||||
@@ -343,7 +343,7 @@ Release Notes - Apps Development Framework - Version 1.7.
|
||||
- \[[ADF-819](https://issues.alfresco.com/jira/browse/ADF-819)] - Snackbar does not appear when uploading files via DnD
|
||||
- \[[ADF-923](https://issues.alfresco.com/jira/browse/ADF-923)] - Involved user should not be able to see 'Complete' button as active in a task.
|
||||
- \[[ADF-939](https://issues.alfresco.com/jira/browse/ADF-939)] - [Login] Sign in button does not stay at the bottom
|
||||
- \[[ADF-943](https://issues.alfresco.com/jira/browse/ADF-943)] - APS [ContentApi](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/api/content.api.ts) is not present on index.d.ts and [SitesApi](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/api/sites.api.ts) is not complete
|
||||
- \[[ADF-943](https://issues.alfresco.com/jira/browse/ADF-943)] - APS [`ContentApi`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/api/content.api.ts) is not present on index.d.ts and [`SitesApi`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/api/sites.api.ts) is not complete
|
||||
- \[[ADF-945](https://issues.alfresco.com/jira/browse/ADF-945)] - 'Undefined' is displayed in 'attach file' widget after restore.
|
||||
- \[[ADF-950](https://issues.alfresco.com/jira/browse/ADF-950)] - when the [`Form`](../../lib/process-services/task-list/models/form.model.ts) in readonly mode you can edit the date
|
||||
- \[[ADF-957](https://issues.alfresco.com/jira/browse/ADF-957)] - Duplicate Rest calls are made for fields where Rest end points are given
|
||||
|
||||
@@ -701,7 +701,7 @@ Release Notes - Apps Development Framework - Version 2.0.
|
||||
- \[[ADF-1710](https://issues.alfresco.com/jira/browse/ADF-1710)] - An error is logged into the console when using data widget
|
||||
- \[[ADF-1711](https://issues.alfresco.com/jira/browse/ADF-1711)] - The adf-task-attachment-list component displays drag-and-drop area that is not working
|
||||
- \[[ADF-1712](https://issues.alfresco.com/jira/browse/ADF-1712)] - The adf-task-header component displays a Requeue button for none pooled tasks
|
||||
- \[[ADF-1716](https://issues.alfresco.com/jira/browse/ADF-1716)] - Process List - processDefinitionKey is not part of the [ProcessInstanceQueryRepresentation](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/activiti-rest-api/docs/ProcessInstanceQueryRepresentation.md)
|
||||
- \[[ADF-1716](https://issues.alfresco.com/jira/browse/ADF-1716)] - Process List - processDefinitionKey is not part of the [`ProcessInstanceQueryRepresentation`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/activiti-rest-api/docs/ProcessInstanceQueryRepresentation.md)
|
||||
- \[[ADF-1718](https://issues.alfresco.com/jira/browse/ADF-1718)] - [`Pagination`](../../lib/content-services/document-list/models/document-library.model.ts) should not be displayed on Search Results page when there are no results
|
||||
- \[[ADF-1720](https://issues.alfresco.com/jira/browse/ADF-1720)] - Date-time picker is not working properly with other Date Display Format than default
|
||||
- \[[ADF-1722](https://issues.alfresco.com/jira/browse/ADF-1722)] - [object Object] appears in People control when selecting the same name
|
||||
@@ -738,7 +738,7 @@ Release Notes - Apps Development Framework - Version 2.0.
|
||||
- \[[ADF-1824](https://issues.alfresco.com/jira/browse/ADF-1824)] - Moment js security issue
|
||||
- \[[ADF-1825](https://issues.alfresco.com/jira/browse/ADF-1825)] - [`Form`](../../lib/process-services/task-list/models/form.model.ts) field in start task no aligned
|
||||
- \[[ADF-1827](https://issues.alfresco.com/jira/browse/ADF-1827)] - 'Object Object' displayed on search results page
|
||||
- \[[ADF-1829](https://issues.alfresco.com/jira/browse/ADF-1829)] - [PeopleApi](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/api/people.api.ts) - getSiteMembership wrong returned type
|
||||
- \[[ADF-1829](https://issues.alfresco.com/jira/browse/ADF-1829)] - [`PeopleApi`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/api/people.api.ts) - getSiteMembership wrong returned type
|
||||
- \[[ADF-1830](https://issues.alfresco.com/jira/browse/ADF-1830)] - Cannot access processes or reports
|
||||
- \[[ADF-1832](https://issues.alfresco.com/jira/browse/ADF-1832)] - [Document List] IE 11 erro on click
|
||||
- \[[ADF-1835](https://issues.alfresco.com/jira/browse/ADF-1835)] - The pagination on search results page is not working properly
|
||||
@@ -746,7 +746,7 @@ Release Notes - Apps Development Framework - Version 2.0.
|
||||
- \[[ADF-1839](https://issues.alfresco.com/jira/browse/ADF-1839)] - Login does not switch user preferences
|
||||
- \[[ADF-1856](https://issues.alfresco.com/jira/browse/ADF-1856)] - Document List - location fails for a user that has granular permissions
|
||||
- \[[ADF-1859](https://issues.alfresco.com/jira/browse/ADF-1859)] - The [document list component](../content-services/components/document-list.component.md) no longer exports [`ShareDataRow`](../../lib/content-services/document-list/data/share-data-row.model.ts)
|
||||
- \[[ADF-1860](https://issues.alfresco.com/jira/browse/ADF-1860)] - [NodesApi](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/api/nodes.api.ts).getNodeChildren has wrong return type
|
||||
- \[[ADF-1860](https://issues.alfresco.com/jira/browse/ADF-1860)] - [`NodesApi`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/api/nodes.api.ts).getNodeChildren has wrong return type
|
||||
- \[[ADF-1861](https://issues.alfresco.com/jira/browse/ADF-1861)] - Line breaks not displayed in "Display Text" widget in forms
|
||||
- \[[ADF-1862](https://issues.alfresco.com/jira/browse/ADF-1862)] - Adf toolbar should get the background color from the theme
|
||||
- \[[ADF-1865](https://issues.alfresco.com/jira/browse/ADF-1865)] - [Document List] "Empty View" does not wrap long text
|
||||
@@ -782,7 +782,7 @@ Release Notes - Apps Development Framework - Version 2.0.
|
||||
- \[[ADF-1951](https://issues.alfresco.com/jira/browse/ADF-1951)] - Date widget doesn't display the correct date.
|
||||
- \[[ADF-1956](https://issues.alfresco.com/jira/browse/ADF-1956)] - Date widget with advanced properties does not display value.
|
||||
- \[[ADF-1962](https://issues.alfresco.com/jira/browse/ADF-1962)] - getContentThumbnailUrl returns file data instead or URL
|
||||
- \[[ADF-1963](https://issues.alfresco.com/jira/browse/ADF-1963)] - [ContentApi](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/api/content.api.ts) is missing the preview rendition API
|
||||
- \[[ADF-1963](https://issues.alfresco.com/jira/browse/ADF-1963)] - [`ContentApi`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/api/content.api.ts) is missing the preview rendition API
|
||||
- \[[ADF-1964](https://issues.alfresco.com/jira/browse/ADF-1964)] - [Demo Shell] Max size filter is not switched off.
|
||||
- \[[ADF-1965](https://issues.alfresco.com/jira/browse/ADF-1965)] - 'Upload file' button is enabled if user does not have permission to upload a file/folder
|
||||
- \[[ADF-1966](https://issues.alfresco.com/jira/browse/ADF-1966)] - Wrong sort on Document List
|
||||
|
||||
@@ -324,7 +324,7 @@ Release Notes - Apps Development Framework - Version 2.3.0
|
||||
- \[[ADF-2442](https://issues.alfresco.com/jira/browse/ADF-2442)] - [Search Service](../../lib/core/services/search.service.ts) has wrong types for the 'search' API
|
||||
- \[[ADF-2443](https://issues.alfresco.com/jira/browse/ADF-2443)] - Typo in the UserPreferences service
|
||||
- \[[ADF-2444](https://issues.alfresco.com/jira/browse/ADF-2444)] - CLONE - Incorrect Items per page values on all lists after upgrade to ADF 2.2.0
|
||||
- \[[ADF-2448](https://issues.alfresco.com/jira/browse/ADF-2448)] - Wrong type definition for [RequestPagination](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/search-rest-api/docs/RequestPagination.md)
|
||||
- \[[ADF-2448](https://issues.alfresco.com/jira/browse/ADF-2448)] - Wrong type definition for [`RequestPagination`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/search-rest-api/docs/RequestPagination.md)
|
||||
- \[[ADF-2450](https://issues.alfresco.com/jira/browse/ADF-2450)] - Search api type definition is not defined
|
||||
- \[[ADF-2454](https://issues.alfresco.com/jira/browse/ADF-2454)] - Login dialog icon and header text not centered correctly
|
||||
- \[[ADF-2455](https://issues.alfresco.com/jira/browse/ADF-2455)] - Document List does not render thumbnails
|
||||
|
||||
@@ -338,7 +338,7 @@ Release Notes - Apps Development Framework - Version 2.5.0
|
||||
] - CLONE - Thumbs.db files are uploading with a folder upload
|
||||
- \[
|
||||
[ADF-3289](https://issues.alfresco.com/jira/browse/ADF-3289)
|
||||
] - [AppsDefinitionApi](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api-legacy/activiti-rest-api/src/api/AppsDefinitionApi.ts) contains two methods with same name and different firms
|
||||
] - [`AppsDefinitionApi`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api-legacy/activiti-rest-api/src/api/AppsDefinitionApi.ts) contains two methods with same name and different firms
|
||||
- \[
|
||||
[ADF-3292](https://issues.alfresco.com/jira/browse/ADF-3292)
|
||||
] - CLONE - Filter category should be deselected when user makes a new search query
|
||||
@@ -374,7 +374,7 @@ Release Notes - Apps Development Framework - Version 2.5.0
|
||||
] - Refresh button is not displayed on the form
|
||||
- \[
|
||||
[ADF-3383](https://issues.alfresco.com/jira/browse/ADF-3383)
|
||||
] - Incorrect datatype for password in [PersonBodyCreate](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/model/personBodyCreate.ts) in index.d.ts
|
||||
] - Incorrect datatype for password in [`PersonBodyCreate`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/model/personBodyCreate.ts) in index.d.ts
|
||||
- \[
|
||||
[ADF-3386](https://issues.alfresco.com/jira/browse/ADF-3386)
|
||||
] - Task Filters accordion is not expanding / collapsing
|
||||
|
||||
@@ -382,13 +382,13 @@ Below is the list of JIRA issues that were closed for this release.
|
||||
|
||||
- [ADF-3497](https://issues.alfresco.com/jira/browse/ADF-3497) - Facet intervals on search filter
|
||||
|
||||
- [ADF-3677](https://issues.alfresco.com/jira/browse/ADF-3677) - [SearchQueryBuilderService](../content-services/services/search-query-builder.service.md) to support highlight
|
||||
- [ADF-3677](https://issues.alfresco.com/jira/browse/ADF-3677) - [`SearchQueryBuilderService`](../content-services/services/search-query-builder.service.md) to support highlight
|
||||
|
||||
- [ADF-3735](https://issues.alfresco.com/jira/browse/ADF-3735) - SSO Login Error for [login component](../core/components/login.component.md)
|
||||
|
||||
- [ADF-3798](https://issues.alfresco.com/jira/browse/ADF-3798) - [Demo Shell][aps2] Show Task list related to a Process
|
||||
|
||||
- [ADF-4003](https://issues.alfresco.com/jira/browse/ADF-4003) - Add roles filtering to [PeopleCloudComponent](../process-services-cloud/components/people-cloud.component.md)
|
||||
- [ADF-4003](https://issues.alfresco.com/jira/browse/ADF-4003) - Add roles filtering to [`PeopleCloudComponent`](../process-services-cloud/components/people-cloud.component.md)
|
||||
|
||||
- [ADF-4078](https://issues.alfresco.com/jira/browse/ADF-4078) - Fixed headers in the document list
|
||||
|
||||
@@ -469,7 +469,7 @@ Below is the list of JIRA issues that were closed for this release.
|
||||
|
||||
- [ADF-3934](https://issues.alfresco.com/jira/browse/ADF-3934) - [People Cloud Component](../process-services-cloud/components/people-cloud.component.md) - Remove the concept of assignee
|
||||
|
||||
- [ADF-3979](https://issues.alfresco.com/jira/browse/ADF-3979) - [GroupCloudComponent](../process-services-cloud/components/group-cloud.component.md) should be able to detect "preSelectGroups" input changes
|
||||
- [ADF-3979](https://issues.alfresco.com/jira/browse/ADF-3979) - [`GroupCloudComponent`](../process-services-cloud/components/group-cloud.component.md) should be able to detect "preSelectGroups" input changes
|
||||
|
||||
- [ADF-3989](https://issues.alfresco.com/jira/browse/ADF-3989) - The list of apps in 'appName' filter is duplicated after switching between saved filters
|
||||
|
||||
@@ -495,7 +495,7 @@ Below is the list of JIRA issues that were closed for this release.
|
||||
|
||||
- [ADF-4154](https://issues.alfresco.com/jira/browse/ADF-4154) - Unit tests failing after upgrade to ADF 3.1.0-beta3
|
||||
|
||||
- [ADF-4156](https://issues.alfresco.com/jira/browse/ADF-4156) - Regression in [TaskListComponent](../process-services/components/task-list.component.md) Caused by in-place Date Formatting
|
||||
- [ADF-4156](https://issues.alfresco.com/jira/browse/ADF-4156) - Regression in [`TaskListComponent`](../process-services/components/task-list.component.md) Caused by in-place Date Formatting
|
||||
|
||||
- [ADF-4165](https://issues.alfresco.com/jira/browse/ADF-4165) - ADF 3.0 Not able to login with implicitFlow false
|
||||
|
||||
@@ -529,7 +529,7 @@ Below is the list of JIRA issues that were closed for this release.
|
||||
|
||||
- [ADF-4305](https://issues.alfresco.com/jira/browse/ADF-4305) - DocumentList - CardViewMode - Field values missing in the display.
|
||||
|
||||
- [ADF-4313](https://issues.alfresco.com/jira/browse/ADF-4313) - [Demo shell] [Form](../../lib/process-services/task-list/models/form.model.ts) field looks like an editable field in task header after task was completed
|
||||
- [ADF-4313](https://issues.alfresco.com/jira/browse/ADF-4313) - [Demo shell][form](../../lib/process-services/task-list/models/form.model.ts) field looks like an editable field in task header after task was completed
|
||||
|
||||
- [ADF-4316](https://issues.alfresco.com/jira/browse/ADF-4316) - [People component](../process-services/components/people.component.md) table is not well aligned
|
||||
|
||||
@@ -657,7 +657,7 @@ Below is the list of JIRA issues that were closed for this release.
|
||||
|
||||
- [ADF-4120](https://issues.alfresco.com/jira/browse/ADF-4120) - automate ADF-3989 - The list of apps in 'appName' filter is duplicated after switching between saved filters
|
||||
|
||||
- [ADF-4126](https://issues.alfresco.com/jira/browse/ADF-4126) - Automate ADF-4003 - Add roles filtering to [PeopleCloudComponent](../process-services-cloud/components/people-cloud.component.md)
|
||||
- [ADF-4126](https://issues.alfresco.com/jira/browse/ADF-4126) - Automate ADF-4003 - Add roles filtering to [`PeopleCloudComponent`](../process-services-cloud/components/people-cloud.component.md)
|
||||
|
||||
- [ADF-4129](https://issues.alfresco.com/jira/browse/ADF-4129) - Automate ADF-4066 - Task doesn't have an assignee when the assignee is empty from Start Task form
|
||||
|
||||
|
||||
@@ -73,7 +73,7 @@ This component is responsible to show the form renderer in case the task has a f
|
||||
|
||||
For more details refer to the:
|
||||
|
||||
- [TaskFormCloudComponent](../process-services-cloud/components/task-form-cloud.component).
|
||||
- [`TaskFormCloudComponent`](../process-services-cloud/components/task-form-cloud.component.md).
|
||||
|
||||
#### Form Cloud
|
||||
|
||||
@@ -86,9 +86,9 @@ This component is responsible to render the form cloud definition attached to th
|
||||
</adf-cloud-form>
|
||||
```
|
||||
|
||||
In case the form has an upload widget and the alfresco content has been configured*, the attached file will be stored into the alfresco repositoty.
|
||||
In case the form has an upload widget and the alfresco content has been configured\*, the attached file will be stored into the alfresco repository.
|
||||
|
||||
Note*:
|
||||
Note\*:
|
||||
Don't forget to set the `providers` property to `ALL` and `ecmHost` value in the `app.config.json`.
|
||||
e.g.
|
||||
|
||||
@@ -100,7 +100,7 @@ e.g.
|
||||
|
||||
For more details refer to the:
|
||||
|
||||
- [FormCloudComponent](../process-services-cloud/components/form-cloud.component.md).
|
||||
- [`FormCloudComponent`](../process-services-cloud/components/form-cloud.component.md).
|
||||
|
||||
#### New permission template to app list
|
||||
|
||||
@@ -119,13 +119,12 @@ Cloud form definition selector component is a dropdown that shows all the form p
|
||||
|
||||
For more details refer to the:
|
||||
|
||||
- [FormDefinitionSelectorCloudComponent](../process-services-cloud/components/form-definition-selector-cloud.component.md).
|
||||
- [`FormDefinitionSelectorCloudComponent`](../process-services-cloud/components/form-definition-selector-cloud.component.md).
|
||||
|
||||
#### Start a standalone task with a form
|
||||
|
||||
The start task cloud is now using the `cloud-form-definition-selector` that allows the user to attach a form to a task
|
||||
|
||||
|
||||
### Five more languages available
|
||||
|
||||
Starting from ADF 3.2, five more languages are now available, together with the other ten already in the list. The new languages supported are: Danish, Finnish, Swedish, Czech, Polish.
|
||||
|
||||
@@ -13,14 +13,6 @@ The release can be found on GitHub at [this location](https://github.com/Alfresc
|
||||
See the [ADF roadmap](../roadmap.md) for details of features planned for future
|
||||
versions of ADF.
|
||||
|
||||
## Contents
|
||||
|
||||
- [New package versions](#new-package-versions)
|
||||
- [Goals for this release](#goals-for-this-release)
|
||||
- [Fix deployment service](#fix-deployment-service)
|
||||
- [Localisation](#localisation)
|
||||
- [References](#references)
|
||||
|
||||
## New package versions
|
||||
|
||||
"@alfresco/adf-content-services" : "3.2.1"
|
||||
@@ -33,7 +25,6 @@ versions of ADF.
|
||||
|
||||
This patch version contain a fix for a changed endpoint in Activiti 7 [Rename alfresco-deployment-service in deployment-service](https://github.com/Alfresco/alfresco-ng2-components/pull/4711/files)
|
||||
|
||||
|
||||
## Localisation
|
||||
|
||||
This release includes: French, German, Italian, Spanish, Arabic, Japanese, Dutch, Norwegian (Bokmål), Russian, Danish, Finnish, Swedish, Czech, Polish, Brazilian Portuguese and Simplified Chinese versions.
|
||||
|
||||
@@ -13,7 +13,7 @@ Github only: true
|
||||
| [**Adding a new component**](new-component.md) | Basic | In this tutorial, you will learn how to create a component using [Angular CLI](https://cli.angular.io/) within an existing application. |
|
||||
| [**Adding a new view**](new-view.md) | Beginner | In this tutorial you will learn how to create a new view in your application and how to access it using a defined endpoint. |
|
||||
| [**Using ADF Components**](using-components.md) | Basic | In this tutorial you will learn how to extend, use and configure ADF Components. |
|
||||
| [**Basic theming**](basic-theming.md) | Beginner | In this tutorial you will see how to theme an ADF app by modifying the CSS. |
|
||||
| [**Basic theming**](basic-theming.md) | Beginner | In this tutorial you will see how to theme an ADF app by modifying the CSS. |
|
||||
| [**Customizing the Login component**](customising-login.md) | Intermediate | In this tutorial you will learn how to customize the [Login component](../core/components/login.component.md) following the technical documentation. |
|
||||
| [**Working with a Data Table**](working-with-data-table.md) | Intermediate | In this tutorial you will learn how to populate a DataTable component. |
|
||||
| [**Working with the Nodes API Service**](working-with-nodes-api-service.md) | Intermediate | In this tutorial you will learn how to use the [`NodesApiService`](../core/services/nodes-api.service.md). |
|
||||
|
||||
@@ -18,6 +18,7 @@ fairly straightforward to maintain.
|
||||
- [I18n concepts](#i18n-concepts)
|
||||
- [ADF support for i18n](#adf-support-for-i18n)
|
||||
- [Using the translate pipe](#using-the-translate-pipe)
|
||||
- [Using the localized date pipe](#using-the-localized-date-pipe)
|
||||
- [Adding and replacing messages](#adding-and-replacing-messages)
|
||||
- [Interpolations](#interpolations)
|
||||
- [How the display language is selected](#how-the-display-language-is-selected)
|
||||
@@ -153,6 +154,30 @@ component's `.ts` file:
|
||||
|
||||
<!-- {% endraw %} -->
|
||||
|
||||
## Using the localized date pipe
|
||||
|
||||
Date values are also localized in your ADF app. By default they are localized to en-US, although you can easily change this by adding the localization files provided by Angular.
|
||||
|
||||
If you want to use a different locale simply add the locale file for your region in your `app.module.ts`.
|
||||
|
||||
<!-- {% raw %} -->
|
||||
|
||||
import { registerLocaleData } from '@angular/common';
|
||||
import localeFr from '@angular/common/locales/fr';
|
||||
|
||||
registerLocaleData(localeFr);
|
||||
|
||||
<!-- {% endraw %} -->
|
||||
|
||||
Usage of the [localized date pipe](../core/pipes/localized-date.pipe.md).
|
||||
<!-- {% raw %} -->
|
||||
|
||||
{{ date | adfLocalizedDate: format : locale }}
|
||||
|
||||
<!-- {% endraw %} -->
|
||||
|
||||
Find more info about this in the [Angular sDocs](https://angular.io/guide/i18n#setting-up-the-locale-of-your-app).
|
||||
|
||||
## Adding and replacing messages
|
||||
|
||||
The built-in translations certainly won't cover everything you will need for
|
||||
|
||||
@@ -5,30 +5,85 @@ Added: 2019-03-13
|
||||
|
||||
# Right-to-left language support
|
||||
|
||||
ADF currently has limited support for languages that are written from right to left (such as Arabic).
|
||||
ADF currently has partial support for languages that are written from right to left (such as Arabic) and has been tested to work with the HTML [`dir` attribute](https://www.w3.org/TR/html51/dom.html#the-dir-attribute) added to the main `<body>` element.
|
||||
|
||||
ADF has been updated and tested to work with the HTML
|
||||
[`dir` attribute](https://www.w3.org/TR/html51/dom.html#the-dir-attribute)
|
||||
added to the main `<body>` element in `index.html`. When the attribute is set to
|
||||
`rtl`, text in the app will be right-aligned as required for right-to-left languages:
|
||||
This is handled automatically by the framework and can be configured through `app.config.json`.
|
||||
|
||||
```html
|
||||
<body dir="rtl">
|
||||
## Configuration
|
||||
Since directionality cannot be inferred from information about the locale, there is a one-to-one relation between locale and language configuration in `app.config.json`.
|
||||
|
||||
The minimum configuration is to declare the `"direction": "rtl"` alt the level of the language entry associated with your browser locale. Omitting `direction` or failing to map it with a language key will default to `ltr`.
|
||||
```json
|
||||
// browser locale 'ar'
|
||||
|
||||
{
|
||||
...
|
||||
</body>
|
||||
"languages": [
|
||||
...
|
||||
{
|
||||
"key": "ar",
|
||||
"direction": "rtl"
|
||||
},
|
||||
...
|
||||
],
|
||||
...
|
||||
}
|
||||
```
|
||||
|
||||
If you use the [Sidenav Layout component](../core/components/sidenav-layout.component.md) you can choose set the direction property in it using the property direction ans set it to **'rtl'**
|
||||
If it is desired to start the application with a certain language locale and not default to browser locale, we can specify the `locale` at the configuration level and associate it with a language entry.
|
||||
|
||||
```json
|
||||
|
||||
```html
|
||||
<adf-sidenav-layout
|
||||
[direction]="'rtl'">
|
||||
......
|
||||
</adf-sidenav-layout>
|
||||
{
|
||||
...
|
||||
"locale": "ar",
|
||||
"languages": [
|
||||
...
|
||||
{
|
||||
"key": "ar",
|
||||
"direction": "rtl"
|
||||
},
|
||||
...
|
||||
],
|
||||
...
|
||||
}
|
||||
```
|
||||
## UserPreferencesService
|
||||
|
||||
For cases where a component logic depends on direction values over time, `UserPreferencesService` can be used to get information about the current direction value.
|
||||
|
||||
```typescript
|
||||
import { Component, OnInit } from '@angular/core';
|
||||
import { Direction } from '@angular/cdk/bidi';
|
||||
import { UserPreferencesService } from '@alfresco/adf-core';
|
||||
|
||||
@Component({
|
||||
...
|
||||
})
|
||||
export class MyComponent implements InInit {
|
||||
constructor( private userPreferencesService: UserPreferencesService) { }
|
||||
|
||||
ngOnInit() {
|
||||
this.userPreferencesService
|
||||
.select('textOrientation')
|
||||
.subscribe((direction: Direction) => {
|
||||
console.log(direction); // 'ltr' / 'rtl'
|
||||
});
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## MatIcon
|
||||
|
||||
Currently, [mat-icon](https://material.angular.io/components/icon/overview) doesn't support [directionality](https://material.angular.io/components/icon/overview#bidirectionality) out of the box. As a workaround, this can be managed by adding a general styling rule, to the application top styling file. This will also ensure that [overlay](https://material.angular.io/cdk/overlay/overview) components will also be affected by direction.
|
||||
|
||||
```css
|
||||
/* app.component.scss */
|
||||
|
||||
[dir='rtl'] .mat-icon {
|
||||
transform: scale(-1, 1);
|
||||
}
|
||||
```
|
||||
|
||||
Also, we have a [translation file](internationalization.md) for Arabic (code: "ar"),
|
||||
which is the
|
||||
|
||||
@@ -111,7 +111,7 @@ backend services have been tested with each released version of ADF.
|
||||
### Components retired
|
||||
|
||||
| Name | Reason | Alternative |
|
||||
| -- | -- | -- |
|
||||
| --- | --- | --- |
|
||||
| Accordion component | Superseded by Angular `<mat-accordion>` | See the [Angular Expansion Panel](https://material.angular.io/components/expansion/overview#accordion) component for details. |
|
||||
| Accordion group component | Superseded by Angular `<mat-expansion-panel>` | See the [Angular Expansion Panel](https://material.angular.io/components/expansion/overview#accordion) component for details. |
|
||||
|
||||
|
||||
@@ -15,12 +15,10 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { LoginPage } from '@alfresco/adf-testing';
|
||||
import { LoginPage, NotificationHistoryPage } from '@alfresco/adf-testing';
|
||||
import { ContentServicesPage } from '../../pages/adf/contentServicesPage';
|
||||
import { CreateFolderDialog } from '../../pages/adf/dialog/createFolderDialog';
|
||||
import { NotificationPage } from '../../pages/adf/notificationPage';
|
||||
import { MetadataViewPage } from '../../pages/adf/metadataViewPage';
|
||||
|
||||
import { AcsUserModel } from '../../models/ACS/acsUserModel';
|
||||
import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api';
|
||||
import { browser, Key } from 'protractor';
|
||||
@@ -30,7 +28,7 @@ describe('Create folder directive', function () {
|
||||
const loginPage = new LoginPage();
|
||||
const contentServicesPage = new ContentServicesPage();
|
||||
const createFolderDialog = new CreateFolderDialog();
|
||||
const notificationPage = new NotificationPage();
|
||||
const notificationHistoryPage = new NotificationHistoryPage();
|
||||
const metadataViewPage = new MetadataViewPage();
|
||||
|
||||
const acsUser = new AcsUserModel();
|
||||
@@ -91,7 +89,7 @@ describe('Create folder directive', function () {
|
||||
|
||||
contentServicesPage.createNewFolder(folderName);
|
||||
|
||||
notificationPage.checkNotifyContains('There\'s already a folder with this name. Try a different name.');
|
||||
notificationHistoryPage.checkNotifyContains('There\'s already a folder with this name. Try a different name.');
|
||||
});
|
||||
|
||||
it('[C260157] Should be possible create a folder under a folder with the same name', () => {
|
||||
|
||||
@@ -251,35 +251,26 @@ describe('Document List - Pagination', function () {
|
||||
paginationPage.selectItemsPerPage(itemsPerPage.twenty);
|
||||
contentServicesPage.checkAcsContainer();
|
||||
contentServicesPage.waitForTableBody();
|
||||
contentServicesPage.getElementsDisplayedName().then((elements) => {
|
||||
contentServicesPage.checkElementsSortedAsc(elements);
|
||||
});
|
||||
|
||||
contentServicesPage.sortByName(false);
|
||||
contentServicesPage.getElementsDisplayedName().then(function (list) {
|
||||
contentServicesPage.checkElementsSortedDesc(list);
|
||||
});
|
||||
expect(contentServicesPage.getContentList().dataTablePage().checkListIsSorted('ASC', 'Display name'));
|
||||
|
||||
contentServicesPage.sortByName('DESC');
|
||||
expect(contentServicesPage.getContentList().dataTablePage().checkListIsSorted('DESC', 'Display name'));
|
||||
|
||||
paginationPage.selectItemsPerPage(itemsPerPage.five);
|
||||
contentServicesPage.checkAcsContainer();
|
||||
contentServicesPage.waitForTableBody();
|
||||
contentServicesPage.getElementsDisplayedName().then(function (list) {
|
||||
contentServicesPage.checkElementsSortedDesc(list);
|
||||
});
|
||||
expect(contentServicesPage.getContentList().dataTablePage().checkListIsSorted('DESC', 'Display name'));
|
||||
|
||||
paginationPage.clickOnNextPage();
|
||||
contentServicesPage.checkAcsContainer();
|
||||
contentServicesPage.waitForTableBody();
|
||||
contentServicesPage.getElementsDisplayedName().then(function (list) {
|
||||
contentServicesPage.checkElementsSortedDesc(list);
|
||||
});
|
||||
expect(contentServicesPage.getContentList().dataTablePage().checkListIsSorted('DESC', 'Display name'));
|
||||
|
||||
paginationPage.selectItemsPerPage(itemsPerPage.ten);
|
||||
contentServicesPage.checkAcsContainer();
|
||||
contentServicesPage.waitForTableBody();
|
||||
contentServicesPage.getElementsDisplayedName().then(function (list) {
|
||||
contentServicesPage.checkElementsSortedDesc(list);
|
||||
});
|
||||
expect(contentServicesPage.getContentList().dataTablePage().checkListIsSorted('DESC', 'Display name'));
|
||||
});
|
||||
|
||||
it('[C260107] Should not display pagination bar when a folder is empty', () => {
|
||||
|
||||
@@ -24,7 +24,7 @@ import { browser } from 'protractor';
|
||||
describe('Notifications Component', () => {
|
||||
|
||||
const loginPage = new LoginPage();
|
||||
const notificationPage = new NotificationPage();
|
||||
const notificationHistoryPage = new NotificationPage();
|
||||
|
||||
const acsUser = new AcsUserModel();
|
||||
|
||||
@@ -43,74 +43,74 @@ describe('Notifications Component', () => {
|
||||
|
||||
await loginPage.loginToContentServicesUsingUserModel(acsUser);
|
||||
|
||||
notificationPage.goToNotificationsPage();
|
||||
notificationHistoryPage.goToNotificationsPage();
|
||||
|
||||
notificationPage.enterDurationField(3000);
|
||||
notificationHistoryPage.enterDurationField(3000);
|
||||
|
||||
done();
|
||||
});
|
||||
|
||||
afterEach( () => {
|
||||
browser.executeScript(`document.querySelector('button[data-automation-id="notification-custom-dismiss-button"]').click();`);
|
||||
notificationPage.enterDurationField(3000);
|
||||
notificationHistoryPage.enterDurationField(3000);
|
||||
});
|
||||
|
||||
it('[C279977] Should show notification when the message is not empty and button is clicked', () => {
|
||||
notificationPage.enterMessageField('Notification test');
|
||||
notificationPage.clickNotificationButton();
|
||||
notificationPage.checkNotificationSnackBarIsDisplayedWithMessage('Notification test');
|
||||
notificationHistoryPage.enterMessageField('Notification test');
|
||||
notificationHistoryPage.clickNotificationButton();
|
||||
notificationHistoryPage.checkNotificationSnackBarIsDisplayedWithMessage('Notification test');
|
||||
});
|
||||
|
||||
it('[C279979] Should not show notification when the message is empty and button is clicked', () => {
|
||||
notificationPage.clearMessage();
|
||||
notificationPage.clickNotificationButton();
|
||||
notificationPage.checkNotificationSnackBarIsNotDisplayed();
|
||||
notificationHistoryPage.clearMessage();
|
||||
notificationHistoryPage.clickNotificationButton();
|
||||
notificationHistoryPage.checkNotificationSnackBarIsNotDisplayed();
|
||||
});
|
||||
|
||||
it('[C279978] Should show notification with action when the message is not empty and button is clicked', () => {
|
||||
notificationPage.enterMessageField('Notification test');
|
||||
notificationPage.clickActionToggle();
|
||||
notificationPage.clickNotificationButton();
|
||||
notificationPage.checkNotificationSnackBarIsDisplayedWithMessage('Notification test');
|
||||
notificationPage.clickActionButton();
|
||||
notificationPage.checkActionEvent();
|
||||
notificationPage.clickActionToggle();
|
||||
notificationHistoryPage.enterMessageField('Notification test');
|
||||
notificationHistoryPage.clickActionToggle();
|
||||
notificationHistoryPage.clickNotificationButton();
|
||||
notificationHistoryPage.checkNotificationSnackBarIsDisplayedWithMessage('Notification test');
|
||||
notificationHistoryPage.clickActionButton();
|
||||
notificationHistoryPage.checkActionEvent();
|
||||
notificationHistoryPage.clickActionToggle();
|
||||
});
|
||||
|
||||
it('[C279981] Should show notification with action when the message is not empty and custom configuration button is clicked', () => {
|
||||
notificationPage.enterMessageField('Notification test');
|
||||
notificationPage.clickNotificationButton();
|
||||
notificationPage.checkNotificationSnackBarIsDisplayed();
|
||||
notificationHistoryPage.enterMessageField('Notification test');
|
||||
notificationHistoryPage.clickNotificationButton();
|
||||
notificationHistoryPage.checkNotificationSnackBarIsDisplayed();
|
||||
});
|
||||
|
||||
it('[C279987] Should show custom notification during a limited time when a duration is added', () => {
|
||||
notificationPage.enterMessageField('Notification test');
|
||||
notificationPage.enterDurationField(1000);
|
||||
notificationPage.clickNotificationButton();
|
||||
notificationPage.checkNotificationSnackBarIsDisplayed();
|
||||
notificationHistoryPage.enterMessageField('Notification test');
|
||||
notificationHistoryPage.enterDurationField(1000);
|
||||
notificationHistoryPage.clickNotificationButton();
|
||||
notificationHistoryPage.checkNotificationSnackBarIsDisplayed();
|
||||
browser.sleep(1500);
|
||||
notificationPage.checkNotificationSnackBarIsNotDisplayed();
|
||||
notificationHistoryPage.checkNotificationSnackBarIsNotDisplayed();
|
||||
});
|
||||
|
||||
it('[C280000] Should show notification with action when the message is not empty and custom button is clicked', () => {
|
||||
notificationPage.enterMessageField('Notification test');
|
||||
notificationPage.clickActionToggle();
|
||||
notificationPage.clickNotificationButton();
|
||||
notificationPage.checkNotificationSnackBarIsDisplayedWithMessage('Notification test');
|
||||
notificationPage.checkNotificationSnackBarIsNotDisplayed();
|
||||
notificationPage.clickNotificationButton();
|
||||
notificationPage.clickActionButton();
|
||||
notificationPage.checkActionEvent();
|
||||
notificationPage.clickActionToggle();
|
||||
notificationHistoryPage.enterMessageField('Notification test');
|
||||
notificationHistoryPage.clickActionToggle();
|
||||
notificationHistoryPage.clickNotificationButton();
|
||||
notificationHistoryPage.checkNotificationSnackBarIsDisplayedWithMessage('Notification test');
|
||||
notificationHistoryPage.checkNotificationSnackBarIsNotDisplayed();
|
||||
notificationHistoryPage.clickNotificationButton();
|
||||
notificationHistoryPage.clickActionButton();
|
||||
notificationHistoryPage.checkActionEvent();
|
||||
notificationHistoryPage.clickActionToggle();
|
||||
});
|
||||
|
||||
it('[C280001] Should meet configuration when a custom notification is set', () => {
|
||||
notificationPage.enterMessageField('Notification test');
|
||||
notificationPage.enterDurationField(1000);
|
||||
notificationPage.selectHorizontalPosition('Right');
|
||||
notificationPage.selectVerticalPosition('Top');
|
||||
notificationPage.selectDirection('Left to right');
|
||||
notificationPage.clickNotificationButton();
|
||||
expect(notificationPage.getConfigObject()).toBe('{"direction": "ltr", "duration": "1000", "horizontalPosition": "right", "verticalPosition": "top"}');
|
||||
notificationHistoryPage.enterMessageField('Notification test');
|
||||
notificationHistoryPage.enterDurationField(1000);
|
||||
notificationHistoryPage.selectHorizontalPosition('Right');
|
||||
notificationHistoryPage.selectVerticalPosition('Top');
|
||||
notificationHistoryPage.selectDirection('Left to right');
|
||||
notificationHistoryPage.clickNotificationButton();
|
||||
expect(notificationHistoryPage.getConfigObject()).toBe('{"direction": "ltr", "duration": "1000", "horizontalPosition": "right", "verticalPosition": "top"}');
|
||||
});
|
||||
});
|
||||
|
||||
@@ -16,18 +16,16 @@
|
||||
*/
|
||||
|
||||
import { PermissionsPage } from '../../pages/adf/permissionsPage';
|
||||
import { LoginPage } from '@alfresco/adf-testing';
|
||||
import { ContentServicesPage } from '../../pages/adf/contentServicesPage';
|
||||
import { AcsUserModel } from '../../models/ACS/acsUserModel';
|
||||
import resources = require('../../util/resources');
|
||||
import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api';
|
||||
import { FileModel } from '../../models/ACS/fileModel';
|
||||
import { UploadActions } from '../../actions/ACS/upload.actions';
|
||||
import { StringUtil, BrowserActions } from '@alfresco/adf-testing';
|
||||
import { StringUtil, BrowserActions, LoginPage, NotificationHistoryPage } from '@alfresco/adf-testing';
|
||||
import { browser } from 'protractor';
|
||||
import { FolderModel } from '../../models/ACS/folderModel';
|
||||
import { ViewerPage } from '../../pages/adf/viewerPage';
|
||||
import { NotificationPage } from '../../pages/adf/notificationPage';
|
||||
import { MetadataViewPage } from '../../pages/adf/metadataViewPage';
|
||||
import { NavigationBarPage } from '../../pages/adf/navigationBarPage';
|
||||
import { UploadDialog } from '../../pages/adf/dialog/uploadDialog';
|
||||
@@ -44,7 +42,7 @@ describe('Permissions Component', function () {
|
||||
|
||||
const viewerPage = new ViewerPage();
|
||||
const metadataViewPage = new MetadataViewPage();
|
||||
const notificationPage = new NotificationPage();
|
||||
const notificationPage = new NotificationHistoryPage();
|
||||
const uploadDialog = new UploadDialog();
|
||||
let fileOwnerUser, filePermissionUser, file;
|
||||
const fileModel = new FileModel({
|
||||
@@ -300,8 +298,12 @@ describe('Permissions Component', function () {
|
||||
|
||||
afterEach(async (done) => {
|
||||
|
||||
await uploadActions.deleteFilesOrFolder(alfrescoJsApi, file.entry.id);
|
||||
try {
|
||||
await uploadActions.deleteFilesOrFolder(alfrescoJsApi, file.entry.id);
|
||||
|
||||
} catch (error) {
|
||||
|
||||
}
|
||||
done();
|
||||
|
||||
});
|
||||
@@ -587,7 +589,6 @@ describe('Permissions Component', function () {
|
||||
permissionsPage.clickPermissionInheritedButton();
|
||||
|
||||
notificationPage.checkNotifyContains('You are not allowed to change permissions');
|
||||
notificationPage.checkNotificationSnackBarIsNotDisplayed();
|
||||
|
||||
permissionsPage.clickAddPermissionButton();
|
||||
|
||||
|
||||
@@ -23,10 +23,9 @@ import resources = require('../../util/resources');
|
||||
import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api';
|
||||
import { FileModel } from '../../models/ACS/fileModel';
|
||||
import { UploadActions } from '../../actions/ACS/upload.actions';
|
||||
import { StringUtil } from '@alfresco/adf-testing';
|
||||
import { StringUtil, NotificationHistoryPage } from '@alfresco/adf-testing';
|
||||
import { browser } from 'protractor';
|
||||
import { ViewerPage } from '../../pages/adf/viewerPage';
|
||||
import { NotificationPage } from '../../pages/adf/notificationPage';
|
||||
import CONSTANTS = require('../../util/constants');
|
||||
import { MetadataViewPage } from '../../pages/adf/metadataViewPage';
|
||||
import { UploadDialog } from '../../pages/adf/dialog/uploadDialog';
|
||||
@@ -44,7 +43,7 @@ describe('Permissions Component', function () {
|
||||
const viewerPage = new ViewerPage();
|
||||
const navigationBarPage = new NavigationBarPage();
|
||||
const metadataViewPage = new MetadataViewPage();
|
||||
const notificationPage = new NotificationPage();
|
||||
const notificationHistoryPage = new NotificationHistoryPage();
|
||||
const uploadDialog = new UploadDialog();
|
||||
|
||||
let folderOwnerUser, consumerUser, siteConsumerUser, contributorUser, managerUser, collaboratorUser;
|
||||
@@ -224,11 +223,11 @@ describe('Permissions Component', function () {
|
||||
|
||||
contentServicesPage.metadataContent('Site' + fileModel.name);
|
||||
|
||||
notificationPage.checkNotifyContains('You don\'t have access to do this.');
|
||||
notificationHistoryPage.checkNotifyContains('You don\'t have access to do this.');
|
||||
|
||||
contentServicesPage.uploadFile(fileModel.location);
|
||||
|
||||
notificationPage.checkNotifyContains('You don\'t have the create permission to upload the content');
|
||||
notificationHistoryPage.checkNotifyContains('You don\'t have the create permission to upload the content');
|
||||
|
||||
});
|
||||
|
||||
@@ -254,7 +253,7 @@ describe('Permissions Component', function () {
|
||||
|
||||
contentServicesPage.metadataContent('Site' + fileModel.name);
|
||||
|
||||
notificationPage.checkNotifyContains('You don\'t have access to do this.');
|
||||
notificationHistoryPage.checkNotifyContains('You don\'t have access to do this.');
|
||||
|
||||
contentServicesPage.uploadFile(testFileModel.location).checkContentIsDisplayed(testFileModel.name);
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { LoginPage, BrowserActions } from '@alfresco/adf-testing';
|
||||
import { LoginPage, BrowserActions, LocalStorageUtil, NotificationHistoryPage } from '@alfresco/adf-testing';
|
||||
import { ContentServicesPage } from '../../pages/adf/contentServicesPage';
|
||||
import { NavigationBarPage } from '../../pages/adf/navigationBarPage';
|
||||
import { ViewerPage } from '../../pages/adf/viewerPage';
|
||||
@@ -38,6 +38,7 @@ describe('Share file', () => {
|
||||
const shareDialog = new ShareDialog();
|
||||
const navigationBarPage = new NavigationBarPage();
|
||||
const viewerPage = new ViewerPage();
|
||||
const notificationHistoryPage = new NotificationHistoryPage();
|
||||
|
||||
const acsUser = new AcsUserModel();
|
||||
const uploadActions = new UploadActions();
|
||||
@@ -101,7 +102,7 @@ describe('Share file', () => {
|
||||
contentServicesPage.clickShareButton();
|
||||
shareDialog.checkDialogIsDisplayed();
|
||||
shareDialog.clickShareLinkButton();
|
||||
shareDialog.checkNotificationWithMessage('Link copied to the clipboard');
|
||||
notificationHistoryPage.checkNotifyContains('Link copied to the clipboard');
|
||||
});
|
||||
|
||||
it('[C286543] Should be possible to close Share dialog', () => {
|
||||
@@ -140,6 +141,22 @@ describe('Share file', () => {
|
||||
shareDialog.clickDateTimePickerButton();
|
||||
shareDialog.calendarTodayDayIsDisabled();
|
||||
});
|
||||
|
||||
it('[C310329] Should be possible to set expiry date only for link', async () => {
|
||||
await LocalStorageUtil.setConfigField('sharedLinkDateTimePickerType', JSON.stringify('date'));
|
||||
contentServicesPage.clickShareButton();
|
||||
shareDialog.checkDialogIsDisplayed();
|
||||
shareDialog.clickDateTimePickerButton();
|
||||
shareDialog.setDefaultDay();
|
||||
shareDialog.dateTimePickerDialogIsClosed();
|
||||
const value = await shareDialog.getExpirationDate();
|
||||
shareDialog.clickCloseButton();
|
||||
shareDialog.dialogIsClosed();
|
||||
contentServicesPage.clickShareButton();
|
||||
shareDialog.checkDialogIsDisplayed();
|
||||
shareDialog.expirationDateInputHasValue(value);
|
||||
BrowserActions.closeMenuAndDialogs();
|
||||
});
|
||||
});
|
||||
|
||||
describe('Shared link preview', () => {
|
||||
@@ -163,7 +180,7 @@ describe('Share file', () => {
|
||||
contentServicesPage.clickShareButton();
|
||||
shareDialog.checkDialogIsDisplayed();
|
||||
shareDialog.clickShareLinkButton();
|
||||
shareDialog.checkNotificationWithMessage('Link copied to the clipboard');
|
||||
notificationHistoryPage.checkNotifyContains('Link copied to the clipboard');
|
||||
const sharedLink = await shareDialog.getShareLink();
|
||||
BrowserActions.getUrl(sharedLink);
|
||||
viewerPage.checkFileNameIsDisplayed(pngFileModel.name);
|
||||
@@ -174,13 +191,13 @@ describe('Share file', () => {
|
||||
contentServicesPage.clickShareButton();
|
||||
shareDialog.checkDialogIsDisplayed();
|
||||
shareDialog.clickShareLinkButton();
|
||||
shareDialog.checkNotificationWithMessage('Link copied to the clipboard');
|
||||
notificationHistoryPage.checkNotifyContains('Link copied to the clipboard');
|
||||
const sharedLink = await shareDialog.getShareLink();
|
||||
shareDialog.clickCloseButton();
|
||||
contentServicesPage.clickShareButton();
|
||||
shareDialog.checkDialogIsDisplayed();
|
||||
shareDialog.clickShareLinkButton();
|
||||
shareDialog.checkNotificationWithMessage('Link copied to the clipboard');
|
||||
notificationHistoryPage.checkNotifyContains('Link copied to the clipboard');
|
||||
const secondSharedLink = await shareDialog.getShareLink();
|
||||
expect(sharedLink).toEqual(secondSharedLink);
|
||||
BrowserActions.getUrl(sharedLink);
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
*/
|
||||
|
||||
import CONSTANTS = require('../../util/constants');
|
||||
import { StringUtil, BrowserActions } from '@alfresco/adf-testing';
|
||||
import { StringUtil, BrowserActions, NotificationHistoryPage } from '@alfresco/adf-testing';
|
||||
import { NavigationBarPage } from '../../pages/adf/navigationBarPage';
|
||||
import { LoginPage, ErrorPage } from '@alfresco/adf-testing';
|
||||
import { ContentServicesPage } from '../../pages/adf/contentServicesPage';
|
||||
@@ -35,6 +35,7 @@ describe('Unshare file', () => {
|
||||
const contentListPage = contentServicesPage.getDocumentList();
|
||||
const navBar = new NavigationBarPage();
|
||||
const errorPage = new ErrorPage();
|
||||
const notificationHistoryPage = new NotificationHistoryPage();
|
||||
const shareDialog = new ShareDialog();
|
||||
const siteName = `PRIVATE-TEST-SITE-${StringUtil.generateRandomString(5)}`;
|
||||
|
||||
@@ -171,9 +172,12 @@ describe('Unshare file', () => {
|
||||
contentServicesPage.clickShareButton();
|
||||
shareDialog.checkDialogIsDisplayed();
|
||||
shareDialog.shareToggleButtonIsChecked();
|
||||
shareDialog.shareToggleButtonIsDisabled();
|
||||
shareDialog.clickUnShareFile();
|
||||
shareDialog.confirmationDialogIsNotDisplayed();
|
||||
shareDialog.confirmationDialogIsDisplayed();
|
||||
shareDialog.clickConfirmationDialogRemoveButton();
|
||||
shareDialog.checkDialogIsDisplayed();
|
||||
shareDialog.shareToggleButtonIsChecked();
|
||||
notificationHistoryPage.checkNotifyContains(`You don't have permission to unshare this file`);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -0,0 +1,209 @@
|
||||
/*!
|
||||
* @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 { LoginPage, LikePage, RatePage } from '@alfresco/adf-testing';
|
||||
import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api';
|
||||
import { AcsUserModel } from '../../models/ACS/acsUserModel';
|
||||
import { FileModel } from '../../models/ACS/fileModel';
|
||||
import resources = require('../../util/resources');
|
||||
import { UploadActions } from '../../actions/ACS/upload.actions';
|
||||
import { NavigationBarPage } from '../../pages/adf/navigationBarPage';
|
||||
import { SocialPage } from '../../pages/adf/demo-shell/socialPage';
|
||||
import { browser } from 'protractor';
|
||||
|
||||
describe('Social component', () => {
|
||||
|
||||
const loginPage = new LoginPage();
|
||||
const likePage = new LikePage();
|
||||
const ratePage = new RatePage();
|
||||
const socialPage = new SocialPage();
|
||||
const navigationBarPage = new NavigationBarPage();
|
||||
const componentOwner = new AcsUserModel();
|
||||
const componentVisitor = new AcsUserModel();
|
||||
const secondComponentVisitor = new AcsUserModel();
|
||||
const uploadActions = new UploadActions();
|
||||
|
||||
const blueLikeColor = ('rgba(33, 150, 243, 1)');
|
||||
const greyLikeColor = ('rgba(128, 128, 128, 1)');
|
||||
const yellowRatedStarColor = ('rgba(255, 233, 68, 1)');
|
||||
const averageStarColor = ('rgba(128, 128, 128, 1)');
|
||||
|
||||
let emptyFile;
|
||||
|
||||
const emptyFileModel = new FileModel({
|
||||
'name': resources.Files.ADF_DOCUMENTS.TXT_0B.file_name,
|
||||
'location': resources.Files.ADF_DOCUMENTS.TXT_0B.file_location
|
||||
});
|
||||
|
||||
beforeAll(async (done) => {
|
||||
this.alfrescoJsApi = new AlfrescoApi({
|
||||
provider: 'ECM',
|
||||
hostEcm: browser.params.testConfig.adf.url
|
||||
});
|
||||
|
||||
await this.alfrescoJsApi.login(browser.params.testConfig.adf.adminEmail, browser.params.testConfig.adf.adminPassword);
|
||||
|
||||
await this.alfrescoJsApi.core.peopleApi.addPerson(componentOwner);
|
||||
|
||||
await this.alfrescoJsApi.core.peopleApi.addPerson(componentVisitor);
|
||||
|
||||
await this.alfrescoJsApi.core.peopleApi.addPerson(secondComponentVisitor);
|
||||
|
||||
await this.alfrescoJsApi.login(componentOwner.id, componentOwner.password);
|
||||
|
||||
emptyFile = await uploadActions.uploadFile(this.alfrescoJsApi, emptyFileModel.location, emptyFileModel.name, '-my-');
|
||||
|
||||
await this.alfrescoJsApi.core.nodesApi.updateNode(emptyFile.entry.id,
|
||||
|
||||
{
|
||||
permissions: {
|
||||
locallySet: [{
|
||||
authorityId: componentVisitor.getId(),
|
||||
name: 'Consumer',
|
||||
accessStatus: 'ALLOWED'
|
||||
}, {
|
||||
authorityId: secondComponentVisitor.getId(),
|
||||
name: 'Consumer',
|
||||
accessStatus: 'ALLOWED'
|
||||
}]
|
||||
}
|
||||
});
|
||||
|
||||
done();
|
||||
});
|
||||
|
||||
afterAll(async (done) => {
|
||||
await uploadActions.deleteFilesOrFolder(this.alfrescoJsApi, emptyFile.entry.id);
|
||||
done();
|
||||
});
|
||||
|
||||
describe('User interaction on their own components', () => {
|
||||
|
||||
beforeEach(async () => {
|
||||
await loginPage.loginToContentServicesUsingUserModel(componentOwner);
|
||||
await navigationBarPage.clickSocialButton();
|
||||
});
|
||||
|
||||
it('[C203006] Should be able to like and unlike their components but not rate them,', () => {
|
||||
socialPage.writeCustomNodeId(emptyFile.entry.id);
|
||||
expect(socialPage.getNodeIdFieldValue()).toEqual(emptyFile.entry.id);
|
||||
likePage.clickLike();
|
||||
expect(likePage.getLikeCounter()).toBe('1');
|
||||
likePage.removeHoverFromLikeButton();
|
||||
expect(likePage.getLikedIconColor()).toBe(blueLikeColor);
|
||||
ratePage.rateComponent(4);
|
||||
expect(ratePage.getRatingCounter()).toBe('0');
|
||||
expect(ratePage.isNotStarRated(4));
|
||||
expect(ratePage.getUnratedStarColor(4)).toBe(averageStarColor);
|
||||
likePage.clickUnlike();
|
||||
expect(likePage.getLikeCounter()).toBe('0');
|
||||
likePage.removeHoverFromLikeButton();
|
||||
expect(likePage.getUnLikedIconColor()).toBe(greyLikeColor);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
describe('User interaction on components that belong to other users', () => {
|
||||
|
||||
beforeEach(async () => {
|
||||
await loginPage.loginToContentServicesUsingUserModel(componentVisitor);
|
||||
await navigationBarPage.clickSocialButton();
|
||||
});
|
||||
|
||||
it('[C260324] Should be able to like and unlike a component', () => {
|
||||
socialPage.writeCustomNodeId(emptyFile.entry.id);
|
||||
expect(socialPage.getNodeIdFieldValue()).toEqual(emptyFile.entry.id);
|
||||
expect(likePage.getLikeCounter()).toEqual('0');
|
||||
expect(likePage.getUnLikedIconColor()).toBe(greyLikeColor);
|
||||
likePage.clickLike();
|
||||
expect(likePage.getLikeCounter()).toBe('1');
|
||||
likePage.removeHoverFromLikeButton();
|
||||
expect(likePage.getLikedIconColor()).toBe(blueLikeColor);
|
||||
likePage.clickUnlike();
|
||||
expect(likePage.getLikeCounter()).toBe('0');
|
||||
likePage.removeHoverFromLikeButton();
|
||||
expect(likePage.getUnLikedIconColor()).toBe(greyLikeColor);
|
||||
});
|
||||
|
||||
it('[C310198] Should be able to rate and unRate a component', () => {
|
||||
socialPage.writeCustomNodeId(emptyFile.entry.id);
|
||||
expect(socialPage.getNodeIdFieldValue()).toEqual(emptyFile.entry.id);
|
||||
expect(ratePage.getRatingCounter()).toBe('0');
|
||||
ratePage.rateComponent(4);
|
||||
expect(ratePage.getRatingCounter()).toBe('1');
|
||||
expect(ratePage.isStarRated(4));
|
||||
expect(ratePage.getRatedStarColor(4)).toBe(yellowRatedStarColor);
|
||||
ratePage.removeRating(4);
|
||||
expect(ratePage.getRatingCounter()).toBe('0');
|
||||
expect(ratePage.isNotStarRated(4));
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
describe('Multiple Users interaction', () => {
|
||||
|
||||
beforeEach(async () => {
|
||||
await loginPage.loginToContentServicesUsingUserModel(componentVisitor);
|
||||
await navigationBarPage.clickSocialButton();
|
||||
});
|
||||
|
||||
it('[C310197] Should be able to like, unLike, display total likes', async () => {
|
||||
socialPage.writeCustomNodeId(emptyFile.entry.id);
|
||||
expect(socialPage.getNodeIdFieldValue()).toEqual(emptyFile.entry.id);
|
||||
expect(likePage.getUnLikedIconColor()).toBe(greyLikeColor);
|
||||
likePage.clickLike();
|
||||
expect(likePage.getLikeCounter()).toBe('1');
|
||||
likePage.removeHoverFromLikeButton();
|
||||
expect(likePage.getLikedIconColor()).toBe(blueLikeColor);
|
||||
|
||||
await loginPage.loginToContentServicesUsingUserModel(secondComponentVisitor);
|
||||
navigationBarPage.clickSocialButton();
|
||||
socialPage.writeCustomNodeId(emptyFile.entry.id);
|
||||
expect(likePage.getUnLikedIconColor()).toBe(greyLikeColor);
|
||||
likePage.clickLike();
|
||||
expect(likePage.getLikeCounter()).toEqual('2');
|
||||
likePage.removeHoverFromLikeButton();
|
||||
expect(likePage.getLikedIconColor()).toBe(blueLikeColor);
|
||||
likePage.clickUnlike();
|
||||
expect(likePage.getLikeCounter()).toEqual('1');
|
||||
likePage.removeHoverFromLikeButton();
|
||||
expect(likePage.getUnLikedIconColor()).toBe(greyLikeColor);
|
||||
});
|
||||
|
||||
it('[C260327] Should be able to rate, unRate, display total ratings, display average rating', async () => {
|
||||
socialPage.writeCustomNodeId(emptyFile.entry.id);
|
||||
expect(socialPage.getNodeIdFieldValue()).toEqual(emptyFile.entry.id);
|
||||
ratePage.rateComponent(4);
|
||||
expect(ratePage.getRatingCounter()).toEqual('1');
|
||||
expect(ratePage.isStarRated(4));
|
||||
expect(ratePage.getRatedStarColor(4)).toBe(yellowRatedStarColor);
|
||||
|
||||
await loginPage.loginToContentServicesUsingUserModel(secondComponentVisitor);
|
||||
navigationBarPage.clickSocialButton();
|
||||
socialPage.writeCustomNodeId(emptyFile.entry.id);
|
||||
expect(socialPage.getNodeIdFieldValue()).toEqual(emptyFile.entry.id);
|
||||
expect(ratePage.getRatingCounter()).toEqual('1');
|
||||
expect(ratePage.getAverageStarColor(4)).toBe(averageStarColor);
|
||||
ratePage.rateComponent(0);
|
||||
expect(ratePage.getRatingCounter()).toEqual('2');
|
||||
expect(ratePage.isStarRated(2));
|
||||
ratePage.removeRating(0);
|
||||
expect(ratePage.getRatingCounter()).toEqual('1');
|
||||
expect(ratePage.getAverageStarColor(4)).toBe(averageStarColor);
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -30,7 +30,7 @@ import { UploadActions } from '../actions/ACS/upload.actions';
|
||||
import { StringUtil } from '@alfresco/adf-testing';
|
||||
import { browser } from 'protractor';
|
||||
|
||||
xdescribe('Tag component', () => {
|
||||
describe('Tag component', () => {
|
||||
|
||||
const loginPage = new LoginPage();
|
||||
const tagPage = new TagPage();
|
||||
@@ -51,10 +51,7 @@ xdescribe('Tag component', () => {
|
||||
const tags = [
|
||||
{ tag: 'test-tag-01' }, { tag: 'test-tag-02' }, { tag: 'test-tag-03' }, { tag: 'test-tag-04' }, { tag: 'test-tag-05' },
|
||||
{ tag: 'test-tag-06' }, { tag: 'test-tag-07' }, { tag: 'test-tag-08' }, { tag: 'test-tag-09' }, { tag: 'test-tag-10' },
|
||||
{ tag: 'test-tag-11' }, { tag: 'test-tag-12' }, { tag: 'test-tag-13' }, { tag: 'test-tag-14' }, { tag: 'test-tag-15' },
|
||||
{ tag: 'test-tag-16' }, { tag: 'test-tag-17' }, { tag: 'test-tag-18' }, { tag: 'test-tag-19' }, { tag: 'test-tag-20' },
|
||||
{ tag: 'test-tag-21' }, { tag: 'test-tag-22' }, { tag: 'test-tag-23' }, { tag: 'test-tag-24' }, { tag: 'test-tag-25' },
|
||||
{ tag: 'test-tag-26' }, { tag: 'test-tag-27' }, { tag: 'test-tag-28' }, { tag: 'test-tag-29' }, { tag: 'test-tag-30' }];
|
||||
{ tag: 'test-tag-11' }];
|
||||
|
||||
const uppercaseTag = StringUtil.generateRandomString().toUpperCase();
|
||||
const digitsTag = StringUtil.generateRandomStringDigits();
|
||||
@@ -129,24 +126,14 @@ xdescribe('Tag component', () => {
|
||||
it('[C91326] Should be possible to create a tag with different characters', () => {
|
||||
tagPage.insertNodeId(pdfFileModel.id);
|
||||
|
||||
tagPage.addTag(uppercaseTag);
|
||||
tagPage.addTag(uppercaseTag + digitsTag + nonLatinTag);
|
||||
|
||||
tagPage.checkTagIsDisplayedInTagList(uppercaseTag.toLowerCase());
|
||||
tagPage.checkTagIsDisplayedInTagListByNodeId(uppercaseTag.toLowerCase());
|
||||
browser.driver.sleep(5000); // wait CS return tags
|
||||
|
||||
tagPage.checkTagIsNotDisplayedInTagList(uppercaseTag);
|
||||
tagPage.checkTagIsDisplayedInTagList(uppercaseTag.toLowerCase() + digitsTag + nonLatinTag);
|
||||
tagPage.checkTagIsDisplayedInTagListByNodeId(uppercaseTag.toLowerCase() + digitsTag + nonLatinTag);
|
||||
|
||||
tagPage.insertNodeId(pdfFileModel.id);
|
||||
tagPage.addTag(digitsTag);
|
||||
|
||||
tagPage.checkTagIsDisplayedInTagList(digitsTag);
|
||||
tagPage.checkTagIsDisplayedInTagListByNodeId(digitsTag);
|
||||
|
||||
tagPage.insertNodeId(pdfFileModel.id);
|
||||
tagPage.addTag(nonLatinTag);
|
||||
|
||||
tagPage.checkTagIsDisplayedInTagList(nonLatinTag);
|
||||
tagPage.checkTagIsDisplayedInTagListByNodeId(nonLatinTag);
|
||||
tagPage.checkTagIsNotDisplayedInTagList(uppercaseTag + digitsTag + nonLatinTag);
|
||||
});
|
||||
|
||||
it('[C260375] Should be possible to delete a tag', () => {
|
||||
@@ -200,8 +187,8 @@ xdescribe('Tag component', () => {
|
||||
tagPage.clickShowMoreButton();
|
||||
tagPage.checkShowLessButtonIsDisplayed();
|
||||
|
||||
tagPage.clickShowMoreButtonUntilNotDisplayed();
|
||||
tagPage.checkShowLessButtonIsDisplayed();
|
||||
tagPage.clickShowLessButton();
|
||||
tagPage.checkShowLessButtonIsNotDisplayed();
|
||||
});
|
||||
|
||||
it('[C260378] Should be possible to add multiple tags', () => {
|
||||
|
||||