Compare commits

...
974 Commits
Author SHA1 Message Date
Denys Vuika 618e2a7b1a allow showing viewer based on only node id (#2257) 2017-09-01 14:59:52 +01:00
Denys Vuika 51c2255b39 info drawer integration support (#2259)
provides and toggles placeholder for the info drawer within the dialog
2017-09-01 14:54:02 +01:00
Popovics András 86fb82e98d [ADF-theming-fix] Fix theming related issues (#2276)
* First steps

* Every package have separate entry points for styling mixins

* Moving to config dir, and using it in demo shell

* Remove webpack config include path magic from activiti-form package

* Fixing all the webpack common configs and using relative paths in the prebuilt themes

* Datatable header fix

* Update documentation
2017-09-01 14:53:05 +01:00
Vito 2d0832dda5 [ADF-1458] applied custom attribute name to let changes flows into input (#2273) 2017-09-01 14:40:32 +01:00
Denys Vuika bc0090ecf8 accessibility enhancements for datatable (#2266) 2017-09-01 12:25:22 +01:00
Deepak Paul aac3f4bb10 [ADF-1466] Ng2-activiti-tasklist module uses NO_ERRORS_SCHEMA schema, which hides underlying error (#2271)
* [ADF-1466] Ng2-activiti-tasklist module uses NO_ERRORS_SCHEMA schema, which hides underlying error

* Added directives for the custom tags

* Replaced empty list tags with new directives

* Removed CUSTOM_ELEMENTS_SCHEMA document-list, task-list and process-list

* Handled empty attachment list sceeenario in attachment list

* [ADF-1466] Ng2-activiti-tasklist module uses NO_ERRORS_SCHEMA schema, which hides underlying error

* Added tests for disabled and non empty attachments scenario
2017-09-01 12:23:51 +01:00
Denys Vuika cf2da6b34c update wsrv (#2268)
fixes console warning:
[DEP0022] DeprecationWarning: os.tmpDir() is deprecated. Use os.tmpdir() instead.
2017-09-01 12:23:27 +01:00
Deepak Paul 33bf8ea74c [ADF-1480] Padding is missing from Task List (#2269)
* Fixed padding
* Migrated from mdl to md
* Removed additonal styles from demo-shell
2017-09-01 12:09:54 +01:00
Andy Stark 625ef4cb83 [ADF-1453] Restructure README.md files (#2272)
* ADF-1453: Restructured Activiti Diagrams readme

* [ADF-1453] Fixed README indexing script to handle linefeeds and Windows paths

* [ADF-1453] Including changes to readme indexing script
2017-09-01 12:05:34 +01:00
Denys Vuika b04f45473b dynamic column layout support (#2260) 2017-09-01 03:51:02 -07:00
Vito a094c07c50 [ADF-1368] Delete a document onto document list update even the file upload dialog (#2267)
* [ADF-1368] adding success action event even form file deleted on document actions

* [ADF-1368] reflecting delete changes on documentlist

* [ADF-1368] added event on upload service when a file is deleted from external source

* [ADF-1368] pinned version beta8 for material

* [ADF-1368] added test cases for success event on documentlist actions delete
2017-08-31 18:16:09 +01:00
Denys Vuika d6b8f13850 Revert "Added Tabbing to datatable and keyboard functionality (#2262)"
This reverts commit c05c882330.
2017-08-31 14:51:47 +01:00
tdonovancsra c05c882330 Added Tabbing to datatable and keyboard functionality (#2262) 2017-08-31 14:47:25 +01:00
Maurizio Vitale 7cc107781a Fix demo shell pagination style (#2265)
Add missing properties about the pagination inside the tasklist readme
2017-08-31 13:32:49 +01:00
tdonovancsra dac821df6b 508 alt tag added for thumbnail preview (#2263) 2017-08-31 12:01:16 +01:00
Denys Vuika d71dfee06e border style fixes for data table rows (#2264) 2017-08-31 03:58:18 -07:00
Vito 36110464cb [ADF-1381] improving the style for form reflecting UX spec (#2256)
* [ADF-1381] improving the style for form reflecting UX spec

* [ADF-1381] fix error message icon

* [ADF-1381] added more spec details to form widgets

* [ADF-1381] fixed wrong check

* [ADF-1381] removed wrong added deep into scss

* [ADF-1381] applied changes due the peer review

* [ADF-1381] missed whitespace
2017-08-30 17:02:55 +01:00
Vito df5c3f37fc [ADF-1454] resolved login switch problem (#2258) 2017-08-30 16:20:33 +01:00
Maurizio Vitale dbbd213433 [ADF-1309] Task List Pagination (#2255)
* Basic version

* Fix pagination errors

* Fix error on complete task

* Add error

* Fix unit test

* Remove the external paginator component

* Rollback unit test about error event
2017-08-29 14:28:27 +01:00
Popovics András e40215aeb9 Fix pagination styling issues in documentlist and copy & move (#2252) 2017-08-29 12:29:56 +01:00
Cilibiu Bogdan d392ae730b remove import colors (#2254) 2017-08-29 12:04:48 +01:00
Andy Stark 341ed94c31 [ADF-1453] Restructure README.md files (#2239)
* ADF-1453: Restructured Activiti Analytics readme

* ADF-1453: Restructured Activiti Diagrams readme

* ADF-1453: Restructured Activiti Form readme

* ADF-1453: Restructured Activiti Process List readme

* ADF-1453: Restructured Activiti Task List readme

* ADF-1453: Restructured Alfresco Core readme

* [ADF-1453] Restructured DataTable readme

* [ADF-1453] Restructured Document List readme

* [ADF-1453] Restructured Login readme

* [ADF-1453] Restructured Alfresco Search readme

* [ADF-1453] Restructured Alfresco Social readme

* [ADF-1453] Restructured Alfresco Tag readme

* [ADF-1453] Restructured Alfresco User Info readme

* [ADF-1453] Restructured Alfresco Viewer readme

* [ADF-1453] Restructured Alfresco Webscript readme

* [ADF-1453] Fixed table display glitch

* [ADF-1453] Fixed Markdown lint errors in readme files

* [ADF-1453] Adding missing fileUploadDelete event to table in Upload readme

* [ADF-1453] Resolved merge conflict with Upload readme

* [ADF-1453] Changes from npm run doc
2017-08-25 09:27:09 -07:00
Deepak Paul 261149f4c5 [ADF-1432] Can not create a task (#2247)
* Changed assignee  to assigneeId to avoid script error
* Modified unit tests
2017-08-25 16:29:14 +01:00
Popovics András d71c9089d2 [ADF-1435] Info drawer (#2249)
* First version of adf-info-drawer with design make-ups for task details page

* Moving tabbing functionality into adf-info-drawer

* Update documentation
2017-08-25 16:28:41 +01:00
Cilibiu Bogdan 14bedf8659 [ADF-1457] Upload Dialog - Cancel all confirmation dialog (#2248)
* cancel all confirmation

* confirmation text
2017-08-25 16:11:41 +01:00
Cilibiu Bogdan f1158d9f70 also export NodeActionsService (#2250) 2017-08-25 16:09:17 +01:00
Enzo Rivello 86c004be7f removing the directive to remove the node_modules folder (#2246) 2017-08-24 06:27:57 -07:00
jdosti 7b2b8787bb Switching data automation id password for show/hide password. (#2245) 2017-08-24 06:12:38 -07:00
siva kumar 43fe0ee921 [ADF-1456] timeAgo Pipe - Return invalid date when the input is empty. (#2240)
* [ADF-1456]  timeAgo Pipe - Return invalid date when the input is empty.

* Return the empty string instead of an Invalid Date error when  the given date is empty.
* Added test cases.

* [ADF-1456] timeAgo Pipe - Return invalid date when the input is empty.

* Changed test case to handle modified  time zone.
2017-08-24 10:55:39 +01:00
Vito 55126c09ae [ADF-1237] removed material design lite from userinfo component (#2238)
* [ADF-1083] removing material design lite from userinfo component

* [ADF-1237] - styled userinfo component]

* [ADF-1237] removed material design lite from userinfo component

* [ADF-1237] updated readme with the two new options
2017-08-24 10:53:59 +01:00
Cilibiu Bogdan 5911caa464 [ADF-1403] Upload Dialog - Delete files event (#2234)
* remove provisional service

* Error and Delete events

* delete status

* separate upload events

* update demo

* files upload counter and errors

* pendig files icon and action

* remove multiple files error key

* handle cancel files

* fixed component theme

* remove fdescribe

* resolved comments

* throw error
2017-08-24 02:45:13 -07:00
Enzo Rivello 8ee14f99a1 removing node_modules after every publish will reduce the load on the host disk space. already tested on my travis project (#2232) 2017-08-23 03:09:07 -07:00
Maurizio Vitale b78bbf0c26 Rollback undescore change (#2237) 2017-08-22 14:26:08 +01:00
Maurizio Vitale 648bb3cbcc ADF Theme Dev/Prod mode (#2236)
* Add undescore

* Move the scss logic from webpack common to dev/prod
Rollback the change about the color.scss name
2017-08-22 14:23:46 +01:00
Maurizio Vitale e567d97415 Add undescore (#2235) 2017-08-22 09:49:56 +01:00
Maurizio Vitale 3dcfcec1b4 bug fixes (#2233) 2017-08-21 09:35:45 -07:00
Eugenio Romano 1ad0964320 Update README.md 2017-08-19 01:09:39 +01:00
Eugenio Romano f32c38c164 [ADF-1434] Theming ADF component (#2228)
* start custom theming adf

* demo shell cleaning

* login mdl cleaning

* uploader mdl cleaning

* prebuilt themes

* theme picker in demo shell

* clean custom colors and mdl

* fix rebase errors

* theming from color style guide

* dev default theme orange purple

* fix color accent inverted in picker

* fix test and add colors classes

* fix tag component theming issues

* fix datatable theming

* add theming guides
2017-08-19 01:06:35 +01:00
Popovics András 0dc886f047 [ADF-1420] - Fix for 1420, 1425, 1426 and 1428 issues (#2231)
* Fix for ADF-1420 & ADF-1428

* Fix for ADF-1425 & ADF-1426
2017-08-18 19:38:45 +01:00
Denys Vuika 731ce5fa8a support for basic mime types (#2229) 2017-08-18 13:34:15 +01:00
Vito 4aa3377641 [ADF-1096] added cursor strategy to diagram tooltip (#2227)
* [ADF-1096] - added cursor strategy to diagram tooltip

* [ADF-1096] removed wrong console log

* [ADF-1096] removed wrong console log
2017-08-17 17:21:59 +01:00
Denys Vuika 13360186f4 [ADF-1220] Extra data sources for Document List (#2224)
* initial trashcan support and demo page

* use testbed for unit tests

* support for restricting navigation for special data sources

* shared links mode, thumbnail fixes

* update unit tests

* improve Trashcan/SharedLinks columns

* Sites view for document list

* Favorites support for DL, upgrade to latest js-api (alpha)

* recent files support for document list

* support default presets

* readme updates and code fixes

* code fixes

* breadcrumb fixes

- show custom root node for certain scenarios
- fix css issues
- fix crash related to missing "path" property for certain scenarios

* toolbar style fixes

- addresses the shrinking issues with components embedded into toolbar (i.e. breadcrumb)

* i18n support for column presets

* unit tests
2017-08-17 14:31:00 +01:00
Popovics András f19bd0ba93 Multiline text fix in form (#2226) 2017-08-16 23:26:46 +01:00
Popovics András d6b15110b9 [ADF-1327] Fix group form field type to be treated as a container (#2225)
* Add group to container types

* Usage of FormFieldTypes.isReadOnlyType
2017-08-16 21:08:34 +01:00
Popovics András 5305b44096 [ADF-1188] Upload related components, unify interfaces, deprecate disableWithNoPermission (#2216)
* Deprecate enabled input property in UploadDragAreaComponent

* Refactoring about disabled property

* using adf-node-permission directive, deprecating disableWithNoPermission

* Parent component access from directive

* Upliad drag area component uses the directive also

* Usage of property instead of helper method in the NodePermissionSubjects

* Fix small issues

* Update readme files
2017-08-16 14:44:04 +01:00
Eugenio Romano 4d19aa96ee restore color awareness in breadcrumbs 2017-08-16 10:19:19 +01:00
Denys Vuika a447de1f3f [ADF-1404] Data Column enhancements for Document List (#2220)
* support 'timeAgo' format for data-column

* file size column type and bug fixes

* readme updates

* location column type

* readme fixes

* update unit tests

* file size pipe tests
2017-08-16 09:53:39 +01:00
Popovics András 0fdb995633 [ADF-1329] Fix grid style in the activiti form (#2223)
* Fix form grid style

* Tests
2017-08-16 09:46:41 +01:00
Eugenio Romano 78649a5903 [ADF-1384] fix error and amount widget style problem (#2222) 2017-08-15 18:17:48 +01:00
Eugenio Romano d1323408e8 [ADF-1240] move from mdl to Material2 from tag component (#2221) 2017-08-15 16:45:16 +01:00
siva kumar d486e4b90a [ADF-1346] Attachment list component is shown for completed tasks/processes. (#2194)
* Added ng-content to adf-empty-list compoent.
* Updated css to scss.
* Added 'CUSTOM_ELEMENTS_SCHEMA'  to allow non-angular elements.
* Updated readme.mg file
2017-08-15 14:51:06 +01:00
Eugenio Romano 843fb817ac [ADF-1384] fix placeholder overlapping with label in form (#2212)
* fix placeholder overlapping with label in form

* fix import material module
2017-08-15 13:42:21 +01:00
Eugenio Romano 5f670881a3 replace header analytics with adf-toolbar (#2218) 2017-08-15 13:39:32 +01:00
Eugenio Romano b23c5101f8 remove mdl from social component (#2219) 2017-08-15 13:39:00 +01:00
Maurizio Vitale 4ae2e42acf [ADF-1316] Add a new service assignByUserId (#2214) 2017-08-14 22:21:52 +01:00
Vito db5427d61a [ADF-662] fix readonly button for upload and added event for show file in viewer (#2215) 2017-08-14 22:15:29 +01:00
Eugenio Romano f7d7b7143c [ADF-1052] remove mdl tab (#2213) 2017-08-14 16:57:05 +01:00
Eugenio Romano 8ee8b1126a remove debug option (#2211) 2017-08-14 16:08:10 +01:00
Eugenio Romano 8bb4361645 [ADF-1095] Date Range picker remains on screen remove md-data-picker (#2190)
* [ADF-1095] Date Range picker remains on screen

* created date widget component  with md datepicker.

* [ADF-1095] Date Range picker remains on screen.

* Changed mdl date picker to md date picker.
* Updated en.josn with new fields.
* Added md libraires to  spec files .

* [ADF-1095] Date Range picker remains on screen

* Removed old id's for start and end date inputs.

* remove md-date-time-picker

* use local MaterialModule in test

* [activiti-analytics] remove encapsulation and fix test

* remove from vendor md-date-time-picker
2017-08-14 13:59:22 +01:00
Eugenio Romano 47d23f6105 [ADF-1169] validation date start task form (#2208)
* validation date start task form

* move mock test in before each of the creation component
2017-08-14 13:31:50 +01:00
Cristi Socea 2aa8855683 [ADF-1386] If pagination attribute is undefined shows inconsistent range (#2210)
* Add classes to pagination to better style the layout, improve an i18n translation

* Fix default pagination only if there’s no input on init
2017-08-14 11:45:21 +01:00
Denys Vuika 76d51b76ff remove MDL dependencies and old toolbar (#2207) 2017-08-14 11:34:50 +01:00
Denys Vuika 34b1e38175 [ADF-1021] custom tooltip formatter for data columns (#2206)
* custom tooltip formatter for data columns

* readme updates

* unit tests
2017-08-14 11:26:36 +01:00
Denys Vuika efd422692c [ADF-1372] support for tooltips (Upload button) (#2204)
* support for tooltips (Upload button)

* readme update

* update layout to fix the tests

* remove test code
2017-08-14 11:24:43 +01:00
Vito f725a39a49 [ADF-1083] Added user images profile as background to comment and involved people (#2198)
* [ADF-1083] start added image for user search

* [ADF-1083] - adding user images and style to involved people

* [ADF-1083] added loading of images after page refresh

* [ADF-1083] fixed problem related to memory leak and added scss style

* [ADF-1083] readded changes for user image

* [ADF-1083] start fixing test

* [ADF-1083] added user images to comment and profile

* [ADF-1083] Fixed processlist test

* [ADF-1083] removed mdl unused styles

* [ADF-1083] Applied design style

* [ADF-1083] fixed tests after rebase
2017-08-14 11:17:17 +01:00
Denys Vuika 224e15c8e1 [ADF-1374] Move download and create folder dialogs to ADF (#2205)
* move create folder and download zip dialogs to core

* code cleanup
2017-08-14 11:09:55 +01:00
Denys Vuika 98b4f4cef4 selection management enhancements for DT/DL (#2209) 2017-08-14 11:08:27 +01:00
Denys Vuika a536bcbbd2 quick css fix for breadcrumb 2017-08-11 21:37:00 +01:00
Denys Vuika fe6ab0b740 fix the pdf.js setup (#2203) 2017-08-11 16:17:17 +01:00
Maurizio Vitale 925cd0f7f1 [ADF-1139] People search - Provide an API to reset the search (#2196)
* People search provide a way to reset the search

* Fix readme rules
2017-08-11 16:15:58 +01:00
Denys Vuika c6f00345d0 fix the build 2017-08-11 12:05:59 +01:00
Denys Vuika 5f47450643 [ADF-1356] Single configuration of i18n service per project (#2199)
* rework i18n layer init

* fix unit tests

* fix tests

* test fixes

* remove obsolete tests
2017-08-11 10:55:52 +01:00
Denys Vuika 9da61ddba7 Viewer enhancements and Viewer Dialog prototype (#2200)
* viewer dialog scaffold

* toolbar divider component

* simple error screen

* material module and tooltips

* show file name in the title

* improved settings, simple image viewer

* flex-based image viewer, minor fixes

* ability to switch between viewers

* single viewer for images

* remove MDL from the Viewer component

* remove hardcoded demo shell layout

remove harcoded assumptions on "header" and "main" elements

* rework text viewer, remove MDL dependency

* upgrade 'unknown format' view, remove MDL

* simplify media viewer layout

* simplify image viewer

* clean pdf viewer

* migrate pdf viewer styles to scss

* rewrite pdf viewer host styles in scss

* fix unit tests and cleanup layout

* file viewer service

* viewer dialog supports downloads if url provided
2017-08-11 10:15:13 +01:00
Cilibiu Bogdan 60b41e61f7 prevent color inheritance (#2202) 2017-08-11 09:51:20 +01:00
Cilibiu Bogdan a4d12127ea [ADF-1358] Upload Dialog - Uploaded indicator should take in consideration cancelled files (#2197)
* indicate the number of files completed over cancelled ones

* changed test names
2017-08-10 15:09:15 +01:00
Denys Vuika 18b5f812bf fix pagination i18n setup (#2195) 2017-08-10 13:58:32 +01:00
Cilibiu Bogdan a277a00a96 [ADF-1348] Upload Dialog - 'Cancel All' button does not render (#2192)
* refactored isUploadCancelled and isUploadCompleted

* improved checks
2017-08-10 10:26:25 +01:00
Popovics András f372f4925d Files and search component fix with routing support (#2191) 2017-08-09 18:32:23 +01:00
Infad Kachancheri a95883db10 [ADF-1088] Task Header in TaskDetails component shows Assignee but is not editable (#2176)
* added translate keyword for assignee header

* changed people-search component to change the header according to filter type

* changed tash-header component to make assignee clickable

* imlemented people-search component to assign the task to new user

* added handler for assign task to new user

* added testcase for assign task to user

* changed mdl textbox to angular material

* changed button to md and fixed issues in testcase after changed md

* changed property for people-search component

* added ng-content selector to pass header text and action button text  and removed property from people-search component

* added no_error_schema to fix testcase issue in people component

* fixed no-task-details component test case bug

* added people-search component in read me
2017-08-09 15:12:50 +01:00
Deepak Paul 8f750c75f6 [ADF-1116] Task list without any status filter (#2189)
* Added a new service to fetch tasks without state filter

* Added services to fetch tasks with state filter

* Added processInstanceId input for tasklist to filter task for a single process

* Updated README with new processInstanceId input
2017-08-09 15:11:49 +01:00
Maurizio Vitale 005c1cf54d Add process audit directive (#2188) 2017-08-08 20:13:53 +01:00
Popovics András 90f0aafb97 [ADF-459] Copy & move further features (#2187)
* Adding current folder to list by default

* Fix documentlist component's rowFilter and imageResolver

* Adding rowfilter to not show the current node in the list

* Removing unpermitted nodes from the selectable ones (not visually)

* Restore documentlist original behaviour (rowFilter and imageResolver)

* Select event interface works with array from this point on

* Introducing the one and only, mighty Breadcrumb

* Breadcrumb position fix

* Extract hightlight transform functionality from highlight pipe

* Highlight part I.

* Showing breadcrumb with the new redesigned functionality

* Rebase fix

* Error and success callback for the new content actions

* Tests for HighlightDirective

* Update documentation

* Until proper pagination we use this temporary fix

* Fix node unselection on folder change

* Fix accessibility support in dropdown breadcrumb
2017-08-08 16:41:20 +01:00
Ole Hejlskov 91f4a22ecc Add scripts to help the i18n team extract and import stings (#2186) 2017-08-08 16:38:57 +01:00
Cristi Socea 3973303e41 [ADF-994] Integrate SFS enhancements for Pagination component (#2119)
* Add pagination module with pagination component

* Update the old pagination to have the old selector

* Add licence headers to ts files

* Update pagination files

* Rename properties for consistency reasons and remove redundant event emitters

* Add PaginationQueryParams interface to reference the query params used for paginated requests

* Add documentation of pagination (work in progress)

* Add i18n translations to pagination component

* Rename some variables used in pagination template

* Update pagination component to be backwards compatible

* Update pagination component specs

* Update pagination’s documentation

* Remove the old pagination code

* Add old alfresco-pagination tag selector

* Update document list component to include the new pagination

* Add adf-pagination in search component

* Update link to pagination component from main readme file

* Update search component specs

* Add a default pagination object in case it’s not provided

* Assign pagination to default one to default the missing properties (if any)

* Remove unused variables

* Add fail hints from expectancies of pagination tests

* Add default onInit and remove the old defaults
2017-08-08 16:37:47 +01:00
Denys Vuika 5a26bdbb0d fix moment version 2017-08-08 14:46:28 +01:00
Denys Vuika 88fb63df92 css fix for breadcrumb 2017-08-08 14:03:03 +01:00
Denys Vuika 208c37c9f0 remove mdl from "Files" page (demo shell) (#2185) 2017-08-08 09:46:44 +01:00
Denys Vuika a9a94c80a1 breadcrumb styles (#2183) 2017-08-08 09:46:37 +01:00
Denys Vuika 32aa387b61 adfTimeAgo pipe and demo (#2182) 2017-08-08 09:46:23 +01:00
Denys Vuika 05a523c24b [ADF-1312] form validation enhancements (#2180)
* validation api enhancements

- changing 'required' causes re-validation of the form
- get field by id

* allow binding field validators from html

* demo validator

* documentation updates

* fix after rebase

* markdown fixes

* markdown linter settings for workspace config (vs code)

* restore material theme
2017-08-07 18:41:17 +01:00
Denys Vuika 31db995a92 breadcrumb fixes (#2181) 2017-08-07 18:39:48 +01:00
Eugenio Romano 50a13f8cd1 [ADF-852] Form style Material 2 (#2151)
* mdl2 transition part form 1

* hyperlink

* radio buttons

* label

* people component

* [ADF-852] moved textarea to new angular material

* number widget

* change error multiline

* [ADF-852] added md desgin for dropdown

* [ADF-852] removed unused css file

* functional widget

* error dropdown

* [ADF-852] - changed to new md date

* remove md-date-time-picker dependency in ng2-alfresco-from

* [ADF-852] conversion dynamic table phase 1

* container widget

* remove test unused

* validation change

* [ADF-852] convert dynamic table phase 2

* [ADF-852] improving style and fixing bugs

* move custom style for form in form.scss

* error footer refactor

* fix models and test

* [ADF-852]- fixed minor twitch on dynamic table

* align fields and fix tests dropdown

* disabling button in readonly
clean mdl form start process form

* align dropdown

* [ADF-1048] Upload widget can manage multiple files. (#2134)

* [ADF-1048] improving upload widget

* [ADF-1048] added ability to upload multiple file on upload widget

* [ADF-1048] added multiple upload elements on upload widget

* [ADF-1048] - show all the files on the completed form

* [ADF-1048] fixed wrong selecion on displya upload

* [ADF-1048] removed fdescribe from upload widget

* date validation and custom moment data adapter

* move content widget in the widget folder

* add style fields and theming

* color primary radio and checkbox

* fix amount widget and colors

* change ViewEncapsulation and fix date style button issue

* empty form customization 1736

* focus label style

* [ADF-224] fix the rendering of custom stencils when form is opened in readonly state. (#2161)

* [ADF-224] Fixed rendering of custom stencil in readonly mode

* [ADF-224] improved variable name

* test fix

* container filter in form model creation

* show display value correctly

* fix change date and test

* fix date editor and add some test coverage for date

* style minor issue

* fix new unused local import rule

* fix test date

* strict date check

* fix analytics failing test

* restore null as default in model

* unify model diagrams and analytics
2017-08-07 13:15:29 +01:00
Denys Vuika ba654fd177 (fix) Bad method signatures on component functions (#2177)
* (aot) Viewer fixes

* (aot) Document List fixes
2017-08-05 00:17:45 +01:00
Denys Vuika 5e93bdad69 fix build 2017-08-04 17:11:31 +01:00
Denys Vuika 415dd4afd0 fix demo shell issues (lint) 2017-08-04 16:32:21 +01:00
Denys Vuika 66de20dd21 [ADF-1287] compatibility with the new noUnusedLocals rule (#2170)
* support for noUnusedLocals rule

* clean diagram components

* code cleanup

* Viewer fixes

* code fixes

* code fixes
2017-08-04 15:35:15 +01:00
Denys Vuika c5feae5de3 [ADF-1300] Download as Zip feature and dialog (#2174)
* Download API demo

- download single selected file
- download multiple selected files as ZIP
- download one or multiple selected folders as ZIP
- download all mixed content as ZIP (file + folder)

* download dialog (first cut)

* code cleanup
2017-08-04 14:55:15 +01:00
Maurizio Vitale 83fcd5d37e [ADF-1252] Create a different route for processes (#2171)
Change the current route for diagram process
2017-08-04 14:28:32 +01:00
Maurizio Vitale d3da5e7033 Hide the task audit button when there is no taskId (#2172) 2017-08-04 13:45:10 +01:00
Maurizio Vitale fc5e3ed682 Fix unit tests (#2173) 2017-08-04 12:21:02 +01:00
Maurizio Vitale 7a0f17b078 [ADF-1261] Task audit log directive (#2162)
* Create task audit directive

* Remove fit

* Add services

* Add adf-task-audit documentation
2017-08-03 10:42:43 +01:00
Denys Vuika 508548fe8b [ADF-1091] Validation layer enhancements for Form component (#2168)
* form/field validation events

* code cleanup

* unit tests

* improve validator management

- form now owns field validators
- readme updates
- unit test updates
2017-08-03 10:21:25 +01:00
siva kumar 6b3b601f7d [ADF-1265] Task Header - Datapicker is not showed in the middle. (#2155)
* Added touchUi property to md-datePicker.
2017-08-03 10:18:08 +01:00
Eugenio Romano 3e2c5d4a45 [ADF-1281] Update CONTRIBUTING.md (#2169) 2017-08-02 20:35:46 +01:00
Denys Vuika 9997e5a9cf [ASF-1227] new adf-node-permission directive (#2154)
* directive implementation

* update docs

* unit tests and api docs

* code improvements

* simplify code

* update type def and docs
2017-08-02 17:34:48 +01:00
Deepak Paul ac45c2dc9c [ADF-1143] [TaskList] - Not able to start a task when changing the assignee from the 'Start Task' form (#2164)
* [ADF-1143] [TaskList] - Not able to start a task when changing the assignee from the 'Start Task' form

* Create task has been split into three diffrent service calls to replicate the ecxact behaviour of APS

* Current API call sequence is create-task -> attach-form -> assign-user

* Added a new service assign task

* Modified tests according to the API calls

* [ADF-1143] [TaskList] - Not able to start a task when changing the assignee from the 'Start Task' form

* Added responsive behaviour for APIs

* [ADF-1143] [TaskList] - Not able to start a task when changing the assignee from the 'Start Task' form

*Code refactoring
2017-08-02 17:32:47 +01:00
Denys Vuika 7b11fc24ac replace 'template' with 'ng-template' (#2167) 2017-08-02 14:27:59 +01:00
Denys Vuika ae11297a90 remove useless date conversion (#2165)
fixes the bug for Safari whent dates get corrupted on double conversion (createdAt/modifiedAt are already dates)
2017-08-02 11:46:08 +01:00
Denys Vuika 15bdeffeee Optional automatic translation of column headers (#2166) 2017-08-02 11:44:19 +01:00
Denys Vuika ba41f49cd7 fix local build (#2163)
fixes local builds with 'start.sh -dev'
2017-08-01 21:46:27 +01:00
Eugenio Romano eeb8ca0bbc remove duplication 2017-08-01 11:11:35 +01:00
Eugenio Romano 20d7d65a0b revert modify after rebase 2017-08-01 11:10:23 +01:00
Eugenio Romano 206a0e99cc update script modify 2017-08-01 10:26:22 +01:00
Eugenio Romano 036243ad35 update 1.7.0 versions (#2158) 2017-08-01 10:20:48 +01:00
Eugenio Romano 21205e3d45 sites dropdown select documentation change 2017-08-01 10:20:36 +01:00
Maurizio Vitale 87184c5611 [ADF-1229] Task Filter - Wrong task filter is selected when a new task is created (#2147)
* Select the correct task filter after a new task is created

* Fix currentFilter
2017-08-01 10:20:36 +01:00
Maurizio Vitale 04de7e2791 Reset the margin for the people component (#2148) 2017-08-01 10:20:36 +01:00
Denys Vuika f413e44365 fix issues with angular cli imports (#2149)
solves issues with "Cannot find name 'require'." errors when linking to Angular CLI.
2017-08-01 10:20:36 +01:00
Eugenio Romano a083c88a89 Custom Material2 Style variables and theming (#2146)
* ADF theming Material2

* login style primary buttons and input

* fix color breadcrumb based on the material color
2017-08-01 10:20:35 +01:00
mauriziovitale84 14c4af1304 Reset the margin for the people component (reverted from commit 5a37d8566a) 2017-08-01 10:20:35 +01:00
mauriziovitale84 85c920ab7c Reset the margin for the people component 2017-08-01 10:20:35 +01:00
Popovics András 2f36777598 [ADF-1097] Don't upload file if extension is not acceptable (#2143)
* FileModel's extension getter

* Filter out not supported extension from upload
2017-08-01 10:20:35 +01:00
Vito f138efbda5 Added platform logged check for about component (#2144) 2017-08-01 10:20:35 +01:00
siva kumar ddc32328d8 [ADF-1175] Start Process and Start Task Forms don't close when Cancel button is clicked (#2133)
* [ADF-1175] Start Process and Start Task Forms don't close when Cancel button is clicked.

* Added Start task/process cancel emitter handler to redirect when user clicks on cancel start/process .

* [ADF-1175] Start Process and Start Task Forms don't close when Cancel button is clicked.

* Changed activiti-start-task to adf-start-task
* Changed onSuccess to success and Updated     document.

* [ADF-1175] Start Process and Start Task Forms don't close when Cancel button is clicked

* Refactored  start task component unit testcases
2017-08-01 10:20:35 +01:00
Popovics András 32e64339ee [ADF-1200] Error handling for wrong host urls (#2140)
* Make the host errors in settings easier to understand

* Commented proxy settings for testing for the next time

* delete unnecessary proxy rule
2017-08-01 10:20:35 +01:00
siva kumar cdf75c6be5 [ADF-1168] Tasks header component and Processes header component have different margins (#2139)
* [ADF-1168]  Tasks header component and Processes header component have different margins

*  Removed padding from process header component and used md-card-content .

* [ADF-1168] Tasks header component and Processes header component have different margins

* Removed the external div.
* Added css class to task header component to override default roboto font

* Update process-instance-details.component.css

* Update process-instance-header.component.html

* Update task-header.component.html

* Update process-instance-header.component.html

* Update task-header.component.html
2017-08-01 10:20:35 +01:00
Maurizio Vitale 4d49c9176f Fix date css (#2142) 2017-08-01 10:20:35 +01:00
Vito 64f5b293d7 Added node pagination to SiteModel (#2136) 2017-08-01 10:20:35 +01:00
Maurizio Vitale 792bb3c41a Fix method name (#2135) 2017-08-01 10:20:35 +01:00
Denys Vuika 274128ad86 fix the favorites api (#2129)
- fix the crash related to remapping entities
2017-08-01 10:20:34 +01:00
tdonovancsra d54eb57573 508 Compliance Resolution for the App tiles. (#2131) 2017-08-01 10:20:34 +01:00
Cilibiu Bogdan d629c7688c [ADF-924] upload dialog unit tests (#2132) 2017-08-01 10:20:34 +01:00
Deepak Paul 834aa44e39 [ADF-1149] 'Remove' involved people of a task button is displayed behind the dialog (#2130)
* Removed mdl dialogs for comments and people
* Removed list-column CSS class from activiti-demo component to show tasks/process list and details in the same row on low resolution screens
2017-08-01 10:20:34 +01:00
Popovics András 47c229d907 Fix styling of card view text item ruined by global material styles :'( (#2128) 2017-08-01 10:20:34 +01:00
Popovics András 0fed22e686 Prevent settings urls to end with / (#2127)
[ADF-978] Prevent settings urls to end with /
2017-08-01 10:20:34 +01:00
Popovics András 6947861ec9 Make the rendition conversion great again (#2126) 2017-08-01 10:20:34 +01:00
Maurizio Vitale bc2825f269 [ADF-1162] Form List - Fix the getForms service response (#2125)
* Fix the getForms service response

* Fix unit test
2017-08-01 10:20:34 +01:00
Adina Parpalita 58de71dbdf [ADF-1159] Fix misspellings in .md files (#2124) 2017-08-01 10:20:34 +01:00
Popovics András 38fb5ea519 [ADF-1041] Node picker, first iteration (#2122)
* First try

* Dialog basic functionality

* Search input

* Hammering it together

* Fist working proto for copy

* Fix the tests and tslint errors for a happier world

* Add more tests (and test shells for the future)

* copyNode and moveNode methods

* Copy and move actions for content type

* Extract common parts in favor of using them in folder content type also

* Small fixes

* Copy and Move actions for folders as well

* Style fixes, ui behaviours and tests needed to be written

* Move duplicated search service from documentlist to core

* Use search service from core within the search component

* Fix dialog width

* Update docs

* Tests for node selector

* Change seletionMade event's name to select
2017-08-01 10:20:34 +01:00
Denys Vuika 0fd5646e4c (demo app) Application menu bar enhancements (#2123)
* remove MDL from app component

- new app menu bar based on angular/material

* fix app selector

* improve menu bar labels
2017-08-01 10:20:34 +01:00
Deepak Paul 46b91f86d1 [ADF-1147] Form is not rendered properly when starting a new process. (#2120)
* Removed unwanted container div
2017-08-01 10:20:33 +01:00
Denys Vuika a86dc712ba Fix upload bug (demo app) 2017-08-01 10:20:33 +01:00
Maurizio Vitale f0490f32b4 Add the show diagram button (#2121) 2017-08-01 10:20:33 +01:00
Cilibiu Bogdan 1ed56460cc [ADF-924] Upload Component enhancements (#2115)
* changed logic/design

* restored dialog component spec

* revert changes

* update upload dialog documentation

* public over private

* component close method
2017-08-01 10:20:33 +01:00
siva kumar d5bdadde0d [ADF-1138] Start Task Form Assignee dropdown show null value inside (#2118)
* [ADF-1138] Start Task Form Assignee dropdown show null value inside

* Changed Form Assignee dropdown show null value.

* [ADF-1138] Start Task Form Assignee dropdown show null value inside

* Refactored unit testcases.
2017-08-01 10:20:33 +01:00
Deepak Paul 2e3b081bc4 [ADF-1081] Scroll bar is missing in comments component (#2117)
* Minor css improvement for Comments component

* Added max-height property to show scroll in dialog
2017-08-01 10:20:33 +01:00
Maurizio Vitale 19835732a5 [ADF-1142] Process instance details - should show the comment componen (#2116)
* Add a comment button in the process details component has we have for the task details

* Update process-instance-details.component.css

* Update process-instance-details.component.html
2017-08-01 10:20:33 +01:00
dmonteiro-alfresco 5be12c1b7d updated the prepublish script with registry option (#2114) 2017-08-01 10:20:33 +01:00
Eugenio Romano 2449da995b Update README.md 2017-08-01 10:20:33 +01:00
Eugenio Romano 8a6002ab4c style permissions fix and add in hasPermission possibility to check t… (#2113)
* style permissions fix and add in hasPermission possibility to check the negate permission
* remove fdescribe in discovery test and add test for negate permissions
2017-08-01 10:20:33 +01:00
Denys Vuika 619112c0ba replace MDL sidebar with material2 menus (#2112)
* replace MDL sidebar with material2 menus

- separate language picker
- separate "more" menu

* toolbar theme picker

* fix toolbar button colors for different themes

* revert the commented out code
2017-08-01 10:20:33 +01:00
Infad Kachancheri 0767bb6b20 changed parent name key from processDefnitionId to processInstanceId (#2111) 2017-08-01 10:20:33 +01:00
Denys Vuika fdaa7bd00e update readme (#2110) 2017-08-01 10:20:32 +01:00
Denys Vuika cd8e53c2ff [ADF-1134] selection management fixes (#2109)
* selection management fixes

* remove dual behaviour
2017-08-01 10:20:32 +01:00
Denys Vuika f906b056c3 basic toolbar docs and screenshots (#2108) 2017-08-01 10:20:32 +01:00
Eugenio Romano a80398cfe3 exclude update version change in base component package if is only demo shell option 2017-08-01 10:20:32 +01:00
Eugenio Romano 0a1675811a update change version script for alpha js-api 2017-08-01 10:20:32 +01:00
Denys Vuika 855469c076 update content apis with extra params (#2107) 2017-08-01 10:20:32 +01:00
Eugenio Romano 92f2ffd878 regenerate lock documentlist 2017-08-01 10:20:32 +01:00
Eugenio Romano 0b70ba6a6a create external package on npm for adf-tslint-rules
create external package on npm for adf-tslint-rules
2017-08-01 10:20:31 +01:00
Infad Kachancheri d669f5eb69 [ADF - 1114] Process comments - Share the same comment between Task and Process (#2105)
* changed process comment template and used task comment component

* changed getTaskComment, getProcessInstanceComment, addTaskComment and addProcessInstanceComment to getComments and addComment

* removed provider from task comment component

* extended tasklist service and changed comment-list container css

* changed process service methods and associated test cases

* added error emitter and test cases for process-comments component

* fixed process header component test case
2017-08-01 10:20:31 +01:00
Maurizio Vitale 33fc2373ae [ADF-1108] Task header - Show the parent name as a clickable value (#2098)
* Add a MapItem component inside the CardVied
Add a way to define a property clickable

* Fix unit test

* Add basic documentation
Unify css class name

* Fix class name

* remove unused class
2017-08-01 10:20:31 +01:00
siva kumar 1214c2ebab [ADF-1117] Activiti Start Process - Migrate to MD (#2104)
* Removed conditional statement from HTML.
2017-08-01 10:20:31 +01:00
Vito 72926b220f [ADF-487] added discovery information to about component (#2102)
* [ADF-487] - added discovery service to core

* [ADF-487]- added activiti about call

* [ADF-487] added discovery info into about component

* [ADF-487] removed wrong console log

* [ADF-487] fixed problem on index
2017-08-01 10:20:31 +01:00
Eugenio Romano 59d9b66908 Fix pipeline (#2103)
* recreate package base
* package lock

* npm run doc command fix
2017-08-01 10:20:31 +01:00
mauriziovitale84 a2ee6adf95 Fix typo 2017-08-01 10:20:20 +01:00
Eugenio Romano ae518659c5 [ADF-537] Contribution guide start (#2101)
* Contribution guide start

* development rebase

* fix link

* fork sync
2017-08-01 10:20:20 +01:00
Denys Vuika e0d13c444f [ADF-1115] selection management for DT/DL components (#2100)
* row select/unselect dom events for DT

- new events for datatable
- improved unit tests for empty content placeholders

* improved selection management for DT

* selection management for document list

* fix tests
2017-08-01 10:20:20 +01:00
Maurizio Vitale e09b6304c9 Move the adf start task component in a different zone (#2099) 2017-08-01 10:20:20 +01:00
Vito ac49b264aa [ADF-968] Added Site Dropdown component to document list (#2093)
* [ADF-968] added demo project and new component

* [ADF-968] added default option choice

* [ADF-968] - moved site dropdown into documentlist

* [ADF-968] fixed test for new component

* [ADF-968] removed fdescribe for single cases

* [ADF-968] fixed test to check rendering

* [ADF-968] added conversion to Boolean forced by alfresco-js-api

* [ADF-968]- moved site service into core

* [ADF-968] reflected changes on js-api index

* [ADF-968] fixed wrongly merged path from rebase

* [ADF-968] fixed wrongly merged path from rebase

* [ADF-968] fixed import problem on demo shell demo

* [ADF-968] revert changes on package.json

* [ADF-968] removed wrong package-lock

* [ADF-968] applied changes from PR

* [ADF-968] reindented file html
2017-08-01 10:20:20 +01:00
siva kumar 4b647b374e [ADF-1117] Activiti Start Process - Migrate to MD (#2096)
* [ADF-1117] Activiti Start Process - Migrate to MD
2017-08-01 10:20:20 +01:00
Deepak Paul 939e90f12f [ADF-920] Process Header Component - Refactoring (#2073)
[ADF-920] Process Header Component - Refactoring
2017-08-01 10:20:20 +01:00
Maurizio Vitale 0c457d6988 Fix tslint errors (#2097) 2017-08-01 10:20:20 +01:00
Denys Vuika 9888223bec remove old MDL wrapper directives (#2095)
- remove mdl-button directive
- remove mdl-tooltip directive
2017-08-01 10:20:20 +01:00
Denys Vuika 0878d9f3ab add auto-fixed files 2017-08-01 10:20:19 +01:00
Eugenio Romano 4bc50330cf [ADF-1040] Change document list style rows based on permissions model (#2085)
* Change document list style rows based on permissions model

* fix test
2017-08-01 10:20:19 +01:00
Popovics András ac16369659 [ADF-1038] - Dropddown Breadcrumb component (#2092)
* Update material to beta8

* Install @angular/cdk

* DropdownBreadcrumb component

* Style fixes

* Fix styling issues after rebase

* Fix Material issue in processlist

* Update material again, because of rebase errors... :/

* Fix new tslint rule raised errors
2017-08-01 10:20:19 +01:00
Eugenio Romano 8c28daf2cd Services list in readme and in the doc generator (#2091)
* add services list in readme and in the autogenerator

* update tslint 5.5.0
2017-08-01 10:20:18 +01:00
Denys Vuika e944b92fc7 [SFSNG-724] content services (#2089)
* content services

* rebase index file
2017-08-01 10:20:18 +01:00
Denys Vuika 025ecd5647 [ADF-993] toolbar improvements (#2090)
* toolbar improvements

- simple "title" property to render toolbar title
- advanced "adf-toolbar-title" element for compound toolbars

* move to SASS and improve styling

* fix divider color
2017-08-01 10:20:18 +01:00
Denys Vuika 335dd870ad [ADF-992] improve datatable styles according to UX guidelines (#2088)
* improve datatable style

* datatable and document list enhancements

- support to toggle header in DataTable
- Document List automatically hides header for empty content
2017-08-01 10:20:18 +01:00
Eugenio Romano 45c8e9fed8 revert wrong tag name changed 2017-08-01 10:20:18 +01:00
Eugenio Romano 6998ffd96c [ADF-1103] Add custom tslint rules to avoid unwanted Class and File name prefix (#2087)
* custom tslint rules adf project name files

* filename and class prefix rule

* filename process service mock

* fix spec filename

* fix demo shell

* rename mock

* alias deprecated name class

* core rename services

* fix pacakge.json adf-rules

* add exclude in whitelist
2017-08-01 10:20:17 +01:00
Eugenio Romano 160badbbad add sass configuration in all the component common webpack configuration (#2086) 2017-08-01 10:20:17 +01:00
Denys Vuika 3ff26a8e19 fix datatable sass config (webpack) 2017-08-01 10:20:17 +01:00
Denys Vuika a02f904d03 [ADF-1092] independent styles for data-table (#2084)
* independent styles for datatable

- datatable (and all derived components) no longer depend on MDL css/js

* readme update
2017-08-01 10:20:17 +01:00
Denys Vuika b4b041260b core sass enhancements (#2083)
- simplify file names
- simpify imports
- placeholder for mixins
2017-08-01 10:20:17 +01:00
Denys Vuika 500c7daea2 documentation and example (#2081) 2017-08-01 10:20:17 +01:00
Popovics András 07b0e98b20 [ADF-112] Change task details feature (due date) (#2071)
* Add Assignee to readonly mode

* Style adoption and first steps to editable mode

* Switch between mode coverage

* Rebase fix

* Because of design and requirement changes, revert unnecessary parts

* Small refactoring before the introduction of CardViewDateItem

* Fix AdfCardView tests

* Editable Card date item

* Do not allow edit on task details after the task is completed.

* Update task details request

* Login footer switch fix

* Login customisable copyright text

* Card text item (first sketches)

* Small fix for supported card items' template

* Dynamic component loading for card view items

* Test and linting fixes

* Updating Readme.md

* Update Readme.md

* Fix Readme.md errors

* CardViewTextItemComponent tests

* Rebase fix
2017-08-01 10:20:17 +01:00
Maurizio Vitale 08766eee23 [ADF-1039] Search results highlighting (#2080)
* Provide a way to highlight the searched word

* Add unit test
2017-08-01 10:20:16 +01:00
Eugenio Romano 3d4897b4bb Search add wildcard * to match all the (#2079) 2017-08-01 10:20:16 +01:00
Denys Vuika 52be6534ae [ADF-1047] preserve login providers between page reloads (#2078)
* preserve csrf and auth type settings between reloads

* update unit tests

* fix prefs issues

* fix tests
2017-08-01 10:20:16 +01:00
Eugenio Romano 2f3c6fb4d2 readme search fix types 2017-08-01 10:20:16 +01:00
Eugenio Romano 42fc4932b6 [ADF-864] codelyzer form component (#2076) 2017-08-01 10:20:16 +01:00
Vito f5cc25bb64 [ADF-923] Added check for only involved user cannot complete a task (#2068)
* [ADF-923] Added check for only involved user cannot complete a task

* [ADF-923] fix compilation error

* [ADF-923] added review changes

* [ADF-923] corrected mispelling
2017-08-01 10:20:16 +01:00
siva kumar 792937d561 [ADF-918] Activiti Start Task - Refactoring (#2065)
* [#DW-60] Task-create Task

* Updated en.json with new form fields
* Refactored start Button(Disable/Enable)
* Migrated from mdl to md
* Added documentation

* #DW-60 Task- create task

* Changed component name ActivitiStarttaskButton to ActivitiStartTaskComponent
* activiti-start-task to adf-start-task

* [ADF-918]  Activiti Start Task - Refactoring

* Removed unwanted  activiti-start-task.png
* Renamed component name in test
* Refactored CSS

* [ADF-918] Activiti Start Task - Refactoring

* Added condtional parameter passing and added a test case

* [ADF-918] Activiti Start Task - Refactoring

* Removed trailing space.
* Refactored Spec file.

* [ADF-918] Activiti Start Task - Refactoring

* Created  startTaskModel with form feilds.
* Modified testcases  after adding startTaskModel.
* Removed @input property.

* [ADF-918] Activiti Start Task - Refactoring

* Fixed tslint issuse (Exceeds maximum line length)
* Refactored date field.

* [ADF-918] Activiti Start Task - Refactoring

* Changed property name date to dueDate.
2017-08-01 10:20:16 +01:00
Vito 3952c0f6e9 Fixed wrong referral to core in upload service tests (#2077)
* Fixed wrong referral to core in upload service tests
2017-08-01 10:20:16 +01:00
Maurizio Vitale 6aa04a519a Move the comment component inside a dialog as we did for the Involved people (#2070) 2017-08-01 10:20:16 +01:00
Denys Vuika b52888144e [ADF-1070] fix issue with user preferences and page reload (#2075)
* user preferences profile storage support

* update unit test
2017-08-01 10:20:16 +01:00
Maurizio Vitale 689eb42f72 Replace loadingFlag with isLoading (#2074) 2017-08-01 10:20:15 +01:00
Infad Kachancheri 61a81b3948 [ADF - 1030] Datatable - enable isLoading to show the spinner in all the components (#2063)
* added spinner module and  translate text for process-list component

* added spinner loader for data-table in processlist-variable component

* added spinner loader for data-table in processlist component

* added spinner loader for data-table in process-attachmentlist component

* added spinner module and translate text for tasklist component

* changed css for adf-datatable: selector changed in component

* added spinner loader for data-table in tasklist component

* added spinner loader for data-table in task-attachmentlist component

* removed no-content template from task/process attachment list

* fixed tasklist testcase issues

* changed imort order for test cases

* fixed testcase issue in processlist component
2017-08-01 10:20:15 +01:00
Eugenio Romano da87aba713 remove duplicate social from scripts 2017-08-01 10:20:15 +01:00
Eugenio Romano 26841a782d [ADF-865] codelyzer diagrams and analytics (#2072)
* fix codelyzer diagrams and analytics

* fix test
2017-08-01 10:20:15 +01:00
Maurizio Vitale 3b3adbb8ba [ADF-971] Create task/process attachment should show the new button (#2069)
* Remove the drag and drop
Change the design button
Fix the Event with the name inside the Readme

* Fix unit test

* Rollback id button
2017-08-01 10:20:15 +01:00
Maurizio Vitale 80b3445c9c [ADF-1045] Process Attachments List - Improve the component (#2067)
* Create two different ProcessUpload service on for task one for process because the API are different
Move the attachment task list and process list in different component outside the activiti demo component

* Move the create task/process attachment in the child component
2017-08-01 10:20:15 +01:00
Denys Vuika ae98b41458 [ADF-1026] i18n support for "empty" screen (#2066)
* i18n support for "empty" screen

* fix unit tests

* fix tests

* fix tests
2017-08-01 10:20:15 +01:00
Deepak Paul 7fa519d15c [ADF-497] Improvement to task comment (activiti-comments) component -1829 Github (#2054)
* [ADF-497] Improvement to task comment (activiti-comments) component - 1829 Github

* Added new design
* Removed dialog
* Migrated from mdl to md
* Created a new component to list comments by using data-table

* [ADF-497] Improvement to task comment (activiti-comments) component - 1829 Github

    * Added documentation

* [ADF-497] Improvement to task comment (activiti-comments) component -1829 Github

* Improved css class naming
* Changed component name AdfCommentList to AdfCommentListComponent
* Code refactoring

* [ADF-497] Improvement to task comment (activiti-comments) component -1829 Github

* Removed extra space at the end

* [ADF-497] Improvement to task comment (activiti-comments) component -1829 Github

* Import reordering
2017-08-01 10:20:15 +01:00
Eugenio Romano 2e975dbc29 [ADF-863] codelyzer documentlist (#2059)
* codelyzer documentlist

* tslint error after codelizer

* fix import

* fix tag test
2017-08-01 10:20:15 +01:00
Eugenio Romano fed2462586 add codelyzer in webscript tag and social (#2061) 2017-08-01 10:20:14 +01:00
Vito 4c0b29a4ae [ADF-858] added multiple attribute to upload widget (#2064) 2017-08-01 10:20:14 +01:00
Vito 079f36a8a9 Fix error on test into core component (#2062) 2017-08-01 10:20:14 +01:00
Denys Vuika eeacea784c [ADF-770] upgrade to md-menu (#2060)
* upgrade to md-menu

- upgrade to md-menu
- fix issue with missing icons
- extend demo shell to show icons for actions
- fix issue with border problems in Firefox
- remove commented out samples in demo shell (there's readme for that instead)

* fix unit tests

* fix tests
2017-08-01 10:20:14 +01:00
Maurizio Vitale f891c11e78 [ADF-1002] Move the UploadService from the upload to core component and share it with the Process service (#2055)
* use the same upload component between the content and process service

* Create a BaseUploadServe inside the core
The AlfrescoUpload should extend the BaseUpload

* Improve the code

* Move the process service from the demo shell to form component

* Merge [ADF-917] added exlcluded files into app config to prevent special files

* Remove typo

* Fix import

* Fix FileModel import

* Fix Denys comment

* Fix unit test with the new path of UploadService

* Add missing implementation
2017-08-01 10:20:13 +01:00
Denys Vuika 945dac6c49 [ADF-1015] make "loading" state two-way bindable (document list) (#2052)
* make "loading" state two-way bindable

* update documentation

- update readme
- move "loading" property up to @Input properties
2017-08-01 10:20:13 +01:00
Denys Vuika fba0614b60 [ADF-1006] fix 'isEmpty' issue and code cleanup (#2053)
* fix 'isEmpty' issue and code cleanup

* Update tsconfig.json
2017-08-01 10:20:13 +01:00
Eugenio Romano 53a614bfbf [ADF-859] add codelyzer in core and datatable (#2056)
* add codelyzer in core and datatable

* add codelyzer in the main build

* order imports

* fix import in test

* fix import test

* import reorder form

* tasklist and processlist import reorder
2017-08-01 10:20:13 +01:00
Denys Vuika 9870964c0e fix form demo template 2017-08-01 10:20:13 +01:00
Vito 4f3d1deff0 [ADF-819] added snackbar to single file drop (#2051) 2017-08-01 10:20:13 +01:00
Vito d9fca83e04 [ADF-917] added exlcluded files into app config to prevent special fi… (#2039)
* [ADF 917] added exlcluded files into app config to prevent special files upload
2017-08-01 10:20:12 +01:00
Maurizio Vitale 4bd0f04913 [ADF-970] Create a new Empty list component for the datatable (#2045)
* Create a new empty list component
Share the component between attachment list and document list
Add unit test
Add basic documentation

* Use the adf empty list also in the process attachment component

* Fix unit test

* delete wrong file
2017-08-01 10:20:12 +01:00
Popovics András 7cbefb1355 [ADF-523] Fix delete operation in the search component (#2020)
* Search delete permission notification fix

* Support content deletion inside search results

* Forgotten broken test fix.

* Update alfresco-document-list READDME.md

* Update alfresco-document-list READDME.md II

* Adding TOC to README.md

* Build fix

* Fix the build for now and ever!
2017-08-01 10:20:12 +01:00
Eugenio Romano 87c1921034 [ADF-506] Unify thumbnail service (#2014)
* move thumbnail service in core

* fix folder
2017-08-01 10:20:12 +01:00
Popovics András f0ee0a2ee2 Responsive height for login component (#2049) 2017-08-01 10:20:12 +01:00
Eugenio Romano 232375bf82 add markdown linter (#2048) 2017-08-01 10:20:12 +01:00
Popovics András 2307b49d44 [ADF-1001] Fix styling issues with tooltip and increase code coverage (#2047)
* Adding tests for diagram tooltips

* Style fixes
2017-08-01 10:20:12 +01:00
Vito 985595467c [ADF-957] removed double call to load form (#2046) 2017-08-01 10:20:12 +01:00
Eugenio Romano d1d147e696 fix diagram webpack common file 2017-08-01 10:20:12 +01:00
Eugenio Romano 73967518d8 revert tsconfig change 2017-08-01 10:20:12 +01:00
Vito 568ae1f32d [ADF-966] added the ability to reflect data change on datatable (#2042)
* [ADF - 966] added a setTimeout to test the async loading of datatable

* [ADF-966] added the ability to reflect changes on data change

* [ADF-917] changed due PR
2017-08-01 10:20:11 +01:00
Popovics András 16b8f9a5d7 [ADF-402] Diagram tooltips bug (#2043)
* Getting rid of MDL from dialog tooltips

* Tooltip message body fix and stylings

* Add adf prefix and sass compilation

* build fix
2017-08-01 10:20:11 +01:00
Eugenio Romano 3a7fe45ca4 update script publish and change version 2017-08-01 10:20:11 +01:00
Denys Vuika 0d1354ebbc [ADF-983] User Preferences Service (#2044)
* user preferences service

* unit tests and code improvements

* fix tests

* fix tests

* fix tests

* add missing production settings

* readme updates

* integrate with the core module
2017-08-01 10:20:11 +01:00
Denys Vuika d7bc86239f [ADF-850] example on using in-memory form data (#2037)
* stub for custom form service

* demo polishing

- use in-memory formService only for the corresponding demo page 'Form'
- support for mocking rest field values
- demo of the typeahead data mocked

* load data from app config

* fix lint errors

* separate Form and Form List demos
2017-08-01 10:20:11 +01:00
Eugenio Romano 3524b76793 update move and add script 2017-08-01 10:20:11 +01:00
Denys Vuika 40fe3ce361 [ADF-967] evaluate "hostname" and "port" for string settings (#2040)
* evaluate 'hostname' and 'port' in app config strings

* update unit tests

* fix unit tests

* fix unit tests

* update readme
2017-08-01 10:19:33 +01:00
Eugenio Romano ff2c566c90 [ADF-868] Use new ADF prefix in all tags (#2035)
* use new ADF prefix in all thr tag

* fix failing test

* fix datatable test
2017-08-01 10:19:33 +01:00
Eugenio Romano ba580ad11d [ADF-973] Remove demo folder moved in https://github.com/Alfresco/adf-examples … (#2036)
* remove demo folder moved in https://github.com/Alfresco/adf-examples 1.6.1

* remove analytics demo
2017-08-01 10:19:33 +01:00
Maurizio Vitale a3ebebd926 Fix appId not mandatory (#2038) 2017-08-01 10:19:33 +01:00
Maurizio Vitale 92a3f9f677 [ADF-914] Form List Component (#2023)
Form List Component
2017-08-01 10:19:33 +01:00
Vito ca6de58598 [ADF - 778] Fixed error on wrong change detection strategy (#2021) 2017-08-01 10:19:33 +01:00
Popovics András 01a73d34c2 MDL tooltip not displayed bugfix (#2025) 2017-08-01 10:19:33 +01:00
Vito 4ae3907d2a [ADF - 334] Added prefix to amount widget (#2031)
[ADF - 334] added material design prefix to amount widget
2017-08-01 10:19:32 +01:00
Vito ab4a548ead [ADF - 950] - disabling date button on readonly form (#2032) 2017-08-01 10:19:32 +01:00
Denys Vuika 70948c3533 AOT compatibility enhancements (#2015)
* aot compatibility updates

- remove index files where needed
- move material dependencies to a separete module
- use aot compatible lambda functions for module export

* remove unused imports

* re-export Material module

* core module enhancements

- fix AOT issue with providers (use lambda instead of variable)
- move context menu to a separate module

* core module enhancements

* feature modules
2017-08-01 10:19:32 +01:00
Eugenio Romano 182efb15b8 no save development js-api (#2033) 2017-08-01 10:19:32 +01:00
Jean-Pierre Huynh 3cc37bf86e Fix markdown syntax and wording on README.md (#2030) 2017-08-01 10:19:32 +01:00
Eugenio Romano 137e816661 regenerate lock 2017-08-01 10:19:31 +01:00
Eugenio Romano e73e518bfb NgZone type passed parameter 2017-08-01 10:19:31 +01:00
Eugenio Romano 2624d1bc0d fix type definition variables 2017-08-01 10:19:31 +01:00
Eugenio Romano 480482d575 update typescript (#2026) 2017-08-01 10:19:30 +01:00
Maurizio Vitale b0a168aa39 Fix upload related content (#2019) 2017-08-01 10:19:30 +01:00
Eugenio Romano 255a0f3260 SASS version update (#2013)
* sass update

* update sass loader
2017-08-01 10:19:29 +01:00
Popovics András ff73456379 [ADF-922] Regenerate package-lock.json files for every package and create script for doing that in the future (#2012)
* Updated package-lock.json files

* npm-relock-pkgs.sh

* Update README.md

* Fix ng2-alfresco-search sass problem
2017-08-01 10:19:29 +01:00
Eugenio Romano 391a19e94b [ADF-845] breadcrumb root option added and style review (#1999)
* breadcrumb root option added and style review

* new breadcrumbs

* split onchange in a method

* update readme with a note for old pefix tag
2017-08-01 10:19:28 +01:00
Eugenio Romano ddba8268b7 [ADF-843] Form events bus (#1990)
* form events bus

* event test bus fix

* fix test after code review

* fix types errors

* change to public formservice

* make optional formservice
2017-08-01 10:19:28 +01:00
Eugenio Romano 5a85c6ab57 fix type definition (#2002) 2017-08-01 10:19:27 +01:00
Maurizio Vitale 7fefa2f631 Create task/process attachment Compilation error (#2004) 2017-08-01 10:19:27 +01:00
Maurizio Vitale c778104b37 [ADF-897] - ActivitiPeopleList - use the adf prefix (#2001)
* Use the adf as prexif instead of activiti

* Fix typo

* Fix wrong import
2017-08-01 10:19:27 +01:00
Eugenio Romano 404589e302 introduce check type definition 2017-08-01 10:19:27 +01:00
mauriziovitale84 43c5fc7d63 Fix typo error 2017-08-01 10:19:27 +01:00
Infad Kachancheri d6fc36a8d6 [ADF-794] Add people assignment component (#1977)
* Add people component

* exported people service

* added people-list component to show the involved user list

* changed people-search component layout

* changed people-list usage in people component

* changed people-list data table from custom template to data adapter

* changes people-search component related to people-list

* changes in activiti-people related to people-list and people-search component

* changed data adapter to direct data column setting to data-table

* removed ngChanges and added User and UserEvent models

* added User and UserEvent model in emitter and other emitter handler

* added user event model

* changed activiti-people component with latest UX changes

* addedand changed translate keys to the components

* added hasUser method to check the condition in html

* fixed tslint issue and test case issue in activiti-people component

* added test case for actviti-people-list component

* test case added for activiti-people-search component

* changed activiti-people test cases according to latest UX changes

* added description for activiti-people component

* changed test case to fix component.upgradeElement issue

* changes requested by Vito Albano #1

* splitted getDisplayUser into getDisplayUser and getInitialUsername
2017-08-01 10:19:27 +01:00
Denys Vuika 743e6cb105 remove flags lib from demo shell (#1983)
* remove flags lib from demo shell

greatly reduce demo shell webpack resources by switching off flags (only 3 icons were displayed in the past)

* merge package.json

* add icons
2017-08-01 10:19:26 +01:00
Denys Vuika f79a34d7aa app settings page (#1997)
- custom app setttings service to use isolated storage (demo shell)
- restore settings UI
- redirect angular and rxjs to the same version as components use.
2017-08-01 10:19:26 +01:00
Popovics András fe13a34077 [ADF-793] Ability to create PDF renditions in case of non supported formats (#1994)
* Style changes and button

* Convert to PDF button

* Convert to PDF button part II.

* Convert within the Not Supported Format component

* Rendition loading skeleton

* Conversion is working.

* Convert button behaviour tests

* Rebasing fix.
2017-08-01 10:19:26 +01:00
Maurizio Vitale d57a1d6093 Fix compilation error (#1993) 2017-08-01 10:19:26 +01:00
Denys Vuika fc8c81deb3 updated package-lock file and removed duplicates in package.json 2017-08-01 10:19:26 +01:00
Denys Vuika 9251b401ed [ADF-847] upgrade to use application configuration service (#1986)
* migrate core lib to use server-side app config

* fix unit tests

* update Search tests

- update tests
- upgrade tests to use TestBed

* update UserInfo tests

* update Social tests

* update tests

* update unit tests

* cleanup old code

* update about page

* update demo shell readme

* dev and prod configurations
2017-08-01 10:19:26 +01:00
Maurizio Vitale 517ebd3a96 [ADF-833] DataTable - improve the single and double click event (#1979)
* Improve the single and double click event

* Fix unit test
2017-08-01 10:18:43 +01:00
Eugenio Romano 2f04b7ad95 Table of content automatic creation (#1982) 2017-08-01 10:18:43 +01:00
Eugenio Romano 562bc3d86c [ADF-524] Fix empty state after the loading introduction (#1980)
* fix empty state after the loading introduction

* Update document-list.component.spec.ts

remove typo
2017-08-01 10:18:43 +01:00
Denys Vuika 25df65ed60 [ADF-717] upgrade i18n and charting dependencies (#1976)
* remove app-specific polyfill dependencies

remove polyfill dependencies never used by component libraries

* upgrade i18n dependencies

* upgrade ng2-charts dependency

* fix unit tests

* update demo projects
2017-08-01 10:18:42 +01:00
Vito 7b166346b9 [ADF-510] Drag&Drop check permission to allow user to upload a file (#1948)
* [ADF-510] added permission check for drag&drop

* Improved code for drag and drop side

* Added test for drag and drop upload area changes

* Added test for document list permissions check

* [ADF-510] rebased branch after changes applied to upload

* [ADF-510] rebased branch and fixed tests
2017-08-01 10:18:42 +01:00
Maurizio Vitale a5d384890b [ADF-716] Task Header - Use a custom view inside the component (#1967)
* Use a generic custom view inside the task header

* Move the component into core component and change name

* Missing file

* Fix unit test

* fix unit test component name
2017-08-01 10:18:42 +01:00
Denys Vuika 90aa47e179 [ADF-814] application configuration service (#1969)
* app configuration service

* api improvements and readme update

* extend readme and add defaults

* unit tests for app config service
2017-08-01 10:18:42 +01:00
Vito 9eb9db6c8b [ADF-494] fixed readonly rendering for forms (#1972)
* [ADF-494] improved disabling for form

* [ADF-494] fixed readonly rendering for forms
2017-08-01 10:18:42 +01:00
Eugenio Romano 433f58061e remove brachet 2017-08-01 10:18:42 +01:00
Eugenio Romano f9693a1447 [ADF-78] Update CORS help (#1973) 2017-08-01 10:18:42 +01:00
Eugenio Romano 1947e7944a [ADF-524] Datatable loading state (#1958)
* loading state datatable

* modify readme after review
2017-08-01 10:18:41 +01:00
Eugenio Romano 5bf025bfcb karma conf all single browser 2017-08-01 10:18:41 +01:00
Popovics András 892389f5ae [ADF-578] Remember me functionality (#1962)
* Remember me functionality

* Happy pack to ng2-components' package.json

* Build fix
2017-08-01 10:18:41 +01:00
Denys Vuika c20da3b93e fix builds related to node-sass library (#1966)
* update dependencies and remove old lock files

* update sass loader

* updated lock files
2017-08-01 10:18:41 +01:00
Denys Vuika 697e0459e8 [ADF-591] documentation refinements (#1959)
* refine ng2-activiti-analytics

* refine ng2-activiti-diagrams docs

* refine ng2-activiti-form

* refine ng2-activiti-processlist

* refine ng2-activiti-tasklist

* refine ng2-alfresco-core

* refine ng2-alfresco-datatable

* refine ng2-alfresco-datatable

* refine gn2-alfresco-login

* refine ng2-alfresco-search

* refine ng2-alfresco-social

* refine ng2-alfresco-tag

* refine ng2-alfresco-upload

* refine ng2-alfresco-userinfo

* refine ng2-alfresco-viewer

* refine ng2-alfresco-webscript

* various readme cleanups
2017-08-01 10:18:41 +01:00
Eugenio Romano 0b6c9051f0 package lock update 2017-08-01 10:18:41 +01:00
Vito 081c2ce12a [ADF-802] fix error on uploading file to attachment list (#1957)
* [ADF-802] fix error on uploading file to attachment list

* [ADF-802] improved for loop
2017-08-01 10:18:40 +01:00
Vito abe99746f2 [ADF-740] Add button for process attachment list (#1955)
* [ADF-740] adding button to allow user to upload related content on process instance

* [ADF-740] add button for attachment content list for process

* changed locatin for translation

* [ADF-740] added test for add button for process attach

* [ADF-740] added PR request changes
2017-08-01 10:18:40 +01:00
Denys Vuika 78aab47094 update npm5 lock files 2017-08-01 10:18:40 +01:00
Eugenio Romano de4ea368b8 [ADF-799] add HappyPack to webpack conf (#1956) 2017-08-01 10:18:40 +01:00
Denys Vuika f26ce86aab fix issues with the require keyword (angular cli) (#1954) 2017-08-01 10:18:40 +01:00
Popovics András 0dc4b21920 [ADF-589] Login component different bug fixes (#1953)
* Basic style changes

* Further design changes

* Responsive design fixes

* Different sign in button style for the different login steps
2017-08-01 10:18:40 +01:00
Denys Vuika c48e4be7c2 [ADF-643] upload enhancements (#1949)
* rework folder uploading

- flatterns hierarchy on folder upload
- performs a single traversal for the entire folder heirarchy and ends with a comple file list
- allows now dropping folders on existing folders
- overall code improvements

* fix unit tests

* readme updates

* clean old and unused code

* code cleanup

* limit concurrent uploads

* update code as per review

* fix upload button for Safari

* fixes for Safari

- Safari compatibility
- code updates based on review

* fix code

* fix unit tests
2017-08-01 10:18:39 +01:00
Eugenio Romano 2592486e62 fix thumbnail task process list (#1951) 2017-08-01 10:18:39 +01:00
Maurizio Vitale c7dc6ccfb2 [ADF-741] Add the create task attachment component to the demo shell (#1946)
* Add the create task attachment component to the demo shell

* Add translation keys

* Add return to methods
2017-08-01 10:18:39 +01:00
Maurizio Vitale 3f29074cf6 [ADF-773] Fix datatable custom template render (#1947) 2017-08-01 10:18:30 +01:00
Eugenio Romano 4585f2681f fix translation wrong folder creation issue 2017-08-01 10:18:30 +01:00
Eugenio Romano 8cfdc6f561 fix blob input in text viewer (#1942) 2017-08-01 10:18:30 +01:00
Popovics András 145ceccdfd [ADF-763] Add Chrome default browser for karma chrome launcher for Chrome versi… (#1941)
* Add Chrome default browser for karma chrome launcher for Chrome version<59

* Fixing intermittently failing test in ng2-activiti-analytics component
2017-08-01 10:18:30 +01:00
Denys Vuika f1a1fc39a6 [ADF-754] toolbar component (#1938)
* toolbar component

- simple toolbar component (core lib)
- readme updates (core lib)
- update demo shell with toolbar component demo (document list)

* update unit tests
2017-08-01 10:18:30 +01:00
Eugenio Romano bea14aa9ca add info and link on current last git commit (#1940) 2017-08-01 10:18:18 +01:00
Denys Vuika 308b086442 support for healdess chrome (#1939) 2017-08-01 10:18:18 +01:00
Maurizio Vitale b5eef694df [ADF-744] Attachment List is not displayed within Processes. (#1937)
* Use the adf process attachment list indise demo shell

* Change documentation
2017-08-01 10:18:18 +01:00
Maurizio Vitale 922927ab03 [ADF-686] add blobFile as input (#1933) 2017-08-01 10:17:59 +01:00
Eugenio Romano a81dcb9796 rollback demo tag 2017-08-01 10:17:59 +01:00
Eugenio Romano 960bbe0bad Source Mapping is not working on test debugging (#1931)
* coverage single components run fix

* remove spec.ts from coverage

* make the coverage and the istanbul-instrumenter-loader works only over the console test because a problem on the remapping for the browser test

* move tslint on the main folder of any component

* remove build:w from readme

* stop build tslint error also in spec files

* clear karma file from unnecessary files

* add set -f for build all script in order to accept *

* fix lint problem and failing tests

* fix failing test search component

* add loader test for viewer

* fix tslint error userinfo

* --max_old_space_size=2048 remove

* fix tslint error uploader unused EventEmitter

* remove spec|index|.*mock|.*model|.*event from coverage
2017-08-01 10:17:59 +01:00
Denys Vuika ad886f608c [ADF-571] upload feature rework (#1922)
* upload feature rework

lots of improvements for upload dialog and underlying services

* readme update

- readme cleanup
- remove some old comments from code
- update readme with new events for Upload Service

* restore prerequisites section in readme
2017-08-01 10:17:37 +01:00
Infad Kachancheri 69cae2f4d4 [ADF-713] Process Attachment - Provide a way to attach a new content (#1920)
* added service to get all the related content of the process instance

* added new component to create/upload attachment for process instance

* added unit test cases for create-process-attachment component

* exported create-process-attachment component

* added documentation for create-process-attachment component
2017-08-01 10:17:36 +01:00
Eugenio Romano 9230352f77 [ADF-721] Fix translation reference for dev task (#1923)
* move translation files in the bundles folder

* fix after review
ripristinate tslint and remove override tsconfig
2017-08-01 10:17:36 +01:00
Vito 8b8828328c [ADF-707] Ability to select a row on a dynamic table (#1921) 2017-08-01 10:17:36 +01:00
Infad Kachancheri 0c13842372 [ADF-712] Task Attachment - Provide a way to attach a new content (#1898)
* create button, download, view functionality added in task attachment list component

* created sevice to attach document to task

* added new component to create/uplaod attachment to task

* added new component to create/uplaod attachment to task

* added test case for create task attachment component

* added test case for create task attachment component

* added input to block upload document  to ECM

* fixed create task attachment spec file issue

* changed alfresco-upload to alfresco-core upload directive

* removed attachCreate button and emitter from task-attachment-list

* removed uploadToEcm input and checkValidity method from alfresco-upload

* added documentation for task-attachment-list and create-task-attachment components
2017-08-01 10:17:36 +01:00
Infad Kachancheri dbf7616f8a [ADF-710] Create an Process Attachment List component (#1919)
* added new component to list the process attachments with view, download and delete functionality

* added unit test cases for activit-process-attachment-list component

* exported new process attachment list component

* added documentation for process-attachment-list component
2017-08-01 10:17:36 +01:00
Denys Vuika ba4d0b51a2 [ADF-667] selection mode and row styles (#1914)
* selection mode and row styles

- single/multiple/none selection modes for DataTable component (and Document List)
- support for custom row styles (inline and classname values)
- fix karma config (material themes)
- readme updates
- package-lock.json files for NPM5 support
- updated DataTable demo to demonstrate selection modes and row styles

* remove package lock files
2017-08-01 10:17:36 +01:00
Vito d3220c245e [ADF-680] Added previous page check when page has no more elements (#1911)
* [ADF-242] - fix for deleting - saving a report

* [ADF - 242] added test for fixed feature on reports save - delete

* [ADF-680] - Fixed behaviour when deleting all files on last page of document list

* Start adding test for documentlist check

* Added test for check double page load

* [ADF-680] - removed commented test code

* [ADF-680] Added changes from peer review

* [ADF-680] added return type
2017-08-01 10:17:35 +01:00
Denys Vuika a7ddf32ec4 [ADF-573] support for toggling enabled state (#1912) 2017-08-01 10:17:35 +01:00
Denys Vuika 38b68a8fc1 [ADF-604] Upgrade @angular/material to latest version (#1909)
* update dependencies and module imports

* fix template warnings and fix import issues

* migrate Activiti Form to MdTabsModule

* fix unit tests

* fix tests

* fix unit tests

* fix unit tests

* disable test that fails only on travis

* upgrade activiti form component to angular/material

* fix test (remove MDL class check)
2017-08-01 10:17:35 +01:00
Denys Vuika 33d4001278 [ADF-640] reload document list on folder upload (#1895)
* reload document list on folder upload

- extend UploadService with 'folderCreated' event to be able reacting on folder uploads globally
- extend Demo Shell to reload document list on UploadService events (folderCreated)

* readme updates
2017-08-01 10:17:35 +01:00
Denys Vuika aebf1238d0 [ADF-610] Upload button and DnD area should not upload hidden files and folders (#1908)
[ADF-610]  upload cleanup
- more strongly typing
- api improvements

* Upload cleanup and api improvements

- remove old unused settings (formFields variable)
- individual options for uploaded files (i.e. versioning)
- upload button and drag-and-drop area now set individual settings for file versioning

* exclude hidden files from upload
2017-08-01 10:17:35 +01:00
Eugenio Romano b7e33d6cbf Update PREREQUISITES.md 2017-07-04 19:08:56 +02:00
Eugenio Romano b30ec26213 no save development js-api (#2033) (#2034) 2017-06-30 18:13:08 +01:00
Eugenio Romano b3ae674f7a regenerate lock 2017-06-30 01:19:47 +01:00
Eugenio Romano 8ead3d8aae 1.6.1 2017-06-29 21:52:06 +01:00
Eugenio Romano b15ab3b988 1.6.0 (#2029)
* fix upload area snackbar behaviour

* SASS support for components

ability to use '.scss' files from within components

* [ADF-610] Upload button and DnD area should not upload hidden files and folders (#1908)

[ADF-610]  upload cleanup
- more strongly typing
- api improvements

* Upload cleanup and api improvements

- remove old unused settings (formFields variable)
- individual options for uploaded files (i.e. versioning)
- upload button and drag-and-drop area now set individual settings for file versioning

* exclude hidden files from upload

* [ADF-640] reload document list on folder upload (#1895)

* reload document list on folder upload

- extend UploadService with 'folderCreated' event to be able reacting on folder uploads globally
- extend Demo Shell to reload document list on UploadService events (folderCreated)

* readme updates

* [ADF-621] show drop effect on folders only (#1897)

* show drop effect on folders only

- fix `hasValue` api for data rows (avoid 'false' value to be evaluated as missing value)
- support for evaluating drop support for rows
- document list enables upload zones for folders only

* api improvements as per code review

* [ADF-242] Fixed behaviour for saving/deleting reports (#1905)

* [ADF-242] - fix for deleting - saving a report

* [ADF - 242] added test for fixed feature on reports save - delete

* Added translation key

* [ADF-604] Upgrade @angular/material to latest version (#1909)

* update dependencies and module imports

* fix template warnings and fix import issues

* migrate Activiti Form to MdTabsModule

* fix unit tests

* fix tests

* fix unit tests

* fix unit tests

* disable test that fails only on travis

* upgrade activiti form component to angular/material

* fix test (remove MDL class check)

* [ADF-613] Add plain text viewer (#1873)

* add plain text viewer

* different devices optimizations

* returns types

* [ADF-573] support for toggling enabled state (#1912)

* [ADF-602] Accordion component - Add basic documentation (#1913)

* Add basic documentation Accordion component

* Update README.md

* [ADF-680] Added previous page check when page has no more elements (#1911)

* [ADF-242] - fix for deleting - saving a report

* [ADF - 242] added test for fixed feature on reports save - delete

* [ADF-680] - Fixed behaviour when deleting all files on last page of document list

* Start adding test for documentlist check

* Added test for check double page load

* [ADF-680] - removed commented test code

* [ADF-680] Added changes from peer review

* [ADF-680] added return type

* [ADF-667] selection mode and row styles (#1914)

* selection mode and row styles

- single/multiple/none selection modes for DataTable component (and Document List)
- support for custom row styles (inline and classname values)
- fix karma config (material themes)
- readme updates
- package-lock.json files for NPM5 support
- updated DataTable demo to demonstrate selection modes and row styles

* remove package lock files

* move demo projects to webpack (#1915)

* wav and Mp3 enabling viewer (#1916)

* add option only demo shell version change for update version script

* ADF-402 add the show diagram button (#1917)

* [ADF-707] Ability to select a row on a dynamic table (#1921)

* [ADF-710] Create an Process Attachment List component (#1919)

* added new component to list the process attachments with view, download and delete functionality

* added unit test cases for activit-process-attachment-list component

* exported new process attachment list component

* added documentation for process-attachment-list component

* [ADF-712] Task Attachment - Provide a way to attach a new content (#1898)

* create button, download, view functionality added in task attachment list component

* created sevice to attach document to task

* added new component to create/uplaod attachment to task

* added new component to create/uplaod attachment to task

* added test case for create task attachment component

* added test case for create task attachment component

* added input to block upload document  to ECM

* fixed create task attachment spec file issue

* changed alfresco-upload to alfresco-core upload directive

* removed attachCreate button and emitter from task-attachment-list

* removed uploadToEcm input and checkValidity method from alfresco-upload

* added documentation for task-attachment-list and create-task-attachment components

* [ADF-696] Entire accordion group header should be clickable (#1918)

* #ADF-696 Added new input to show/hide expand icon, click event is activated for the complete heading

* #ADF-696 tslint fix

* #ADF-696 Added documentation for new input and removed unwanted div

* [ADF-721] Fix translation reference for dev task (#1923)

* move translation files in the bundles folder

* fix after review
ripristinate tslint and remove override tsconfig

* [ADF-709] add autofocus when a new row is added on dynamic table widget (#1927)

* [ADF-709] add autofocus when a new row is added on dynamic table widget

* [ADF-709] removed wrong reference for template

* [ADF-713] Process Attachment - Provide a way to attach a new content (#1920)

* added service to get all the related content of the process instance

* added new component to create/upload attachment for process instance

* added unit test cases for create-process-attachment component

* exported create-process-attachment component

* added documentation for create-process-attachment component

* Add data-automation-id to multi select checkbox (#1924)

* [ADF-571] upload feature rework (#1922)

* upload feature rework

lots of improvements for upload dialog and underlying services

* readme update

- readme cleanup
- remove some old comments from code
- update readme with new events for Upload Service

* restore prerequisites section in readme

* fix i18n issue with webpack

* exported report and chart models (#1925)

* fix file upload bug (#1928)

- proper extraction of File objects from the FileList

* lock files for npm 5 (#1930)

add lock files for npm v5; does nothing for earlier versions, so is not harmful

* Source Mapping is not working on test debugging (#1931)

* coverage single components run fix

* remove spec.ts from coverage

* make the coverage and the istanbul-instrumenter-loader works only over the console test because a problem on the remapping for the browser test

* move tslint on the main folder of any component

* remove build:w from readme

* stop build tslint error also in spec files

* clear karma file from unnecessary files

* add set -f for build all script in order to accept *

* fix lint problem and failing tests

* fix failing test search component

* add loader test for viewer

* fix tslint error userinfo

* --max_old_space_size=2048 remove

* fix tslint error uploader unused EventEmitter

* remove spec|index|.*mock|.*model|.*event from coverage

* move coverage separate file and get component to calculate coverage as input

* remove old 'banned' demo from login screen (#1929)

* add sleep time flag in publish script

* rollback demo tag

* fix pacakge.json tag

* [ADF-686] add blobFile as input (#1933)

* coverage fix (#1934)

* [ADF-702] Task/Process Filter - Provide a way to change the default filter (#1932)

* [ADF-702] Task/Process Filter - Provide a way to change the default filter

* Provide a way to select a custom menu filter

* Improve activiti process filter

* Add internal link

* Change link name

* add link

* [ADF-744] Attachment List is not displayed within Processes. (#1937)

* Use the adf process attachment list indise demo shell

* Change documentation

* support for healdess chrome (#1939)

* #ADF-696 Now accordion opens/closes on click of group header along with emitting heading click event (#1936)

* add info and link on current last git commit (#1940)

* [ADF-754] toolbar component (#1938)

* toolbar component

- simple toolbar component (core lib)
- readme updates (core lib)
- update demo shell with toolbar component demo (document list)

* update unit tests

* [ADF-763] Add Chrome default browser for karma chrome launcher for Chrome versi… (#1941)

* Add Chrome default browser for karma chrome launcher for Chrome version<59

* Fixing intermittently failing test in ng2-activiti-analytics component

* Adding new icon (sent) for Bootstrap to Material icon mapping (#1943)

* fix blob input in text viewer (#1942)

* GitHub issue & pull request template change (#1945)

* Update ISSUE_TEMPLATE.md

* Update PULL_REQUEST_TEMPLATE.md

* [ADF-689] Fix alfresco-document-menu-action styling (z-index) (#1944)

* fix translation wrong folder creation issue

* [ADF-773] Fix datatable custom template render (#1947)

* [ADF-780] centralised call for process filters api (#1950)

* [ADF-780] centralised call for process filters api

* [ADF-780] updated conversion to string

* [ADF-741] Add the create task attachment component to the demo shell (#1946)

* Add the create task attachment component to the demo shell

* Add translation keys

* Add return to methods

* fix thumbnail task process list (#1951)

* [ADF-643] upload enhancements (#1949)

* rework folder uploading

- flatterns hierarchy on folder upload
- performs a single traversal for the entire folder heirarchy and ends with a comple file list
- allows now dropping folders on existing folders
- overall code improvements

* fix unit tests

* readme updates

* clean old and unused code

* code cleanup

* limit concurrent uploads

* update code as per review

* fix upload button for Safari

* fixes for Safari

- Safari compatibility
- code updates based on review

* fix code

* fix unit tests

* [ADF-589] Login component different bug fixes (#1953)

* Basic style changes

* Further design changes

* Responsive design fixes

* Different sign in button style for the different login steps

* #ADF-780 Fixed getProcessFilterByName to get the correct filter for the given appId and name (#1952)

* fix issues with the require keyword (angular cli) (#1954)

* [ADF-799] add HappyPack to webpack conf (#1956)

* update npm5 lock files

* [ADF-740] Add button for process attachment list (#1955)

* [ADF-740] adding button to allow user to upload related content on process instance

* [ADF-740] add button for attachment content list for process

* changed locatin for translation

* [ADF-740] added test for add button for process attach

* [ADF-740] added PR request changes

* [ADF-802] fix error on uploading file to attachment list (#1957)

* [ADF-802] fix error on uploading file to attachment list

* [ADF-802] improved for loop

* [ADF-797] remove dist folder from npm distributed package , leave src and bundles (#1961)

* [ADF-804] webpack proxy setup to avoid CORS problem (#1960)

* package lock update

* update travis to node 8 (#1965)

* upload service exposes created nodes (#1964)

* [ADF-591] documentation refinements (#1959)

* refine ng2-activiti-analytics

* refine ng2-activiti-diagrams docs

* refine ng2-activiti-form

* refine ng2-activiti-processlist

* refine ng2-activiti-tasklist

* refine ng2-alfresco-core

* refine ng2-alfresco-datatable

* refine ng2-alfresco-datatable

* refine gn2-alfresco-login

* refine ng2-alfresco-search

* refine ng2-alfresco-social

* refine ng2-alfresco-tag

* refine ng2-alfresco-upload

* refine ng2-alfresco-userinfo

* refine ng2-alfresco-viewer

* refine ng2-alfresco-webscript

* various readme cleanups

* fix builds related to node-sass library (#1966)

* update dependencies and remove old lock files

* update sass loader

* updated lock files

* [ADF-578] Remember me functionality (#1962)

* Remember me functionality

* Happy pack to ng2-components' package.json

* Build fix

* Adding tabindices to viewer control elements (#1968)

* karma conf all single browser

* Fix current page number issue (#1970)

* [ADF-524] Datatable loading state (#1958)

* loading state datatable

* modify readme after review

* [ADF-78]  Update CORS help (#1973)

* Fix host configuration in demo-shell when no port is present (#1971)

* remove brachet

* [ADF-494] fixed readonly rendering for forms (#1972)

* [ADF-494] improved disabling for form

* [ADF-494] fixed readonly rendering for forms

* [ADF-814] application configuration service (#1969)

* app configuration service

* api improvements and readme update

* extend readme and add defaults

* unit tests for app config service

* [ADF-716] Task Header - Use a custom view inside the component (#1967)

* Use a generic custom view inside the task header

* Move the component into core component and change name

* Missing file

* Fix unit test

* fix unit test component name

* fix issue with shared Code settings

- remove obsolete rules for .js/.ts
- hide .happypack folder in the project tree

* [ADF-810] fix default value radio button (#1975)

* [ADF-510] Drag&Drop check permission to allow user to upload a file (#1948)

* [ADF-510] added permission check for drag&drop

* Improved code for drag and drop side

* Added test for drag and drop upload area changes

* Added test for document list permissions check

* [ADF-510] rebased branch after changes applied to upload

* [ADF-510] rebased branch and fixed tests

* [ADF-717] upgrade i18n and charting dependencies (#1976)

* remove app-specific polyfill dependencies

remove polyfill dependencies never used by component libraries

* upgrade i18n dependencies

* upgrade ng2-charts dependency

* fix unit tests

* update demo projects

* [ADF-524] Fix empty state after the loading introduction (#1980)

* fix empty state after the loading introduction

* Update document-list.component.spec.ts

remove typo

* [ADF-838] Table of content automatic creation (#1981)

* readonly value set

* Table of content automatic creation (#1982)

* add missing intl dependency for demo shell (#1984)

* [ADF-833] DataTable -  improve the single and double click event (#1979)

* Improve the single and double click event

* Fix unit test

* Task header basic documentation (#1985)

* Disable upload attachment when the task is completed (#1987)

* [ADF-847] upgrade to use application configuration service (#1986)

* migrate core lib to use server-side app config

* fix unit tests

* update Search tests

- update tests
- upgrade tests to use TestBed

* update UserInfo tests

* update Social tests

* update tests

* update unit tests

* cleanup old code

* update about page

* update demo shell readme

* dev and prod configurations

* updated package-lock file and removed duplicates in package.json

* [ADF-851] execute-outcome event for form service (#1989)

* execute-outcome event for form service

* readme updates

* fix loading state excluding other state during the loading (#1991)

* Fix compilation error (#1993)

* [ADF-883] Fix build errors (#1992)

* [ADF-793] Ability to create PDF renditions in case of non supported formats (#1994)

* Style changes and button

* Convert to PDF button

* Convert to PDF button part II.

* Convert within the Not Supported Format component

* Rendition loading skeleton

* Conversion is working.

* Convert button behaviour tests

* Rebasing fix.

* app settings page (#1997)

- custom app setttings service to use isolated storage (demo shell)
- restore settings UI
- redirect angular and rxjs to the same version as components use.

* [ADF-822] Added the npm-prepublish script (#1978)

* added the npm prepublish script

* changed permissions to prepublish script

* changed to npm run prepublish

* prepare the pr

* removed useless code to the script

* remove flags lib from demo shell (#1983)

* remove flags lib from demo shell

greatly reduce demo shell webpack resources by switching off flags (only 3 icons were displayed in the past)

* merge package.json

* add icons

* Fix typo error

* [ADF-794] Add people assignment component (#1977)

* Add people component

* exported people service

* added people-list component to show the involved user list

* changed people-search component layout

* changed people-list usage in people component

* changed people-list data table from custom template to data adapter

* changes people-search component related to people-list

* changes in activiti-people related to people-list and people-search component

* changed data adapter to direct data column setting to data-table

* removed ngChanges and added User and UserEvent models

* added User and UserEvent model in emitter and other emitter handler

* added user event model

* changed activiti-people component with latest UX changes

* addedand changed translate keys to the components

* added hasUser method to check the condition in html

* fixed tslint issue and test case issue in activiti-people component

* added test case for actviti-people-list component

* test case added for activiti-people-search component

* changed activiti-people test cases according to latest UX changes

* added description for activiti-people component

* changed test case to fix component.upgradeElement issue

* changes requested by Vito Albano #1

* splitted getDisplayUser into getDisplayUser and getInitialUsername

* introduce check type definition

* [ADF-897] - ActivitiPeopleList - use the adf prefix (#2001)

* Use the adf as prexif instead of activiti

* Fix typo

* Fix wrong import

* support binding [form] data directly (#1996)

- ability to bind [form] data directly inside `<activiti-form>` component
- ability to parse forms with FormService
- demo of the custom form in demo shell

* [ADF-778] cancel window for upload dialog shows only on complete (#2003)

* [ADF-778] Added new behaviour to upload dialog

* [ADF-778] cancel window for upload dialog shows only on complete

* [ADF-778] changed variable name to showCloseButton

* Create task/process attachment Compilation error (#2004)

* fix tslint errors

minor fix for "Unnecessary semicolon" TSLint rule

* [ADF-842] Fixed type for taskdetails (#2009)

* fix type definition (#2002)

* Use the activiti people with the new look and feel inside the demo shell (#2008)

* add rxjs and @angular in tsconfig.json

* [ADF-843] Form events bus (#1990)

* form events bus

* event test bus fix

* fix test after code review

* fix types errors

* change to public formservice

* make optional formservice

* [ADF-915] Add option to change the JS-API with different version in the update package

* Missing keys (#2011)

* [ADF-845] breadcrumb root option added and style review (#1999)

* breadcrumb root option added and style review

* new breadcrumbs

* split onchange in a method

* update readme with a note for old pefix tag

* fix tslint errors

* fix breadcrumb test

* [ADF-922] Regenerate package-lock.json files for every package and create script for doing that in the future (#2012)

* Updated package-lock.json files

* npm-relock-pkgs.sh

* Update README.md

* Fix ng2-alfresco-search sass problem

* SASS version update (#2013)

* sass update

* update sass loader

* vjsapi option prepublish

* prepublish script deprecation in favour of prepublishOnly node 8 (#2010)

* modify prePublish script with preoPublishOnly

* install rimraf globally

* fix clean scripts demo folders

* move appveyor to node 8

* Appveyor test (#1998)

* reduce memory

* remove max-old-space

* remove increase memory

* create new TaskDetailsModel in loadNextTask (#2017)

* Fix readme document list

* [ADF-907] - Form reacts to data added in input (#2016)

* [ADF-907] Enable activiti form to react on value data changes

* [ADF-907] - Form reacts to data added in input]

* [ADF - 907] added mock json for form

* [ADF-907] added new event of the form to the event list

* [ADF - 907] Added return column to README

* [ADF - 907] Added return column to README

* Script add pkg and clean update

* install globally pkg pre build

* Fix upload related content (#2019)

* regeneration TOC and add automatic list component generator (#2022)

* Fix upload process attachment (#2024)

* update typescript (#2026)

* update viewer readme

* fix type definition variables

* NgZone type passed parameter

* fix tslint error in tasklist

* Add screenshot (#2028)

* fix search miss typing

* bump version 1.6.0 (#2027)
2017-06-29 15:57:37 +01:00
Eugenio Romano c6f6227da7 update-version script 2017-05-26 15:12:08 +01:00
Eugenio Romano 9fe6f4b06c split the module runner ts-loader between dev and production in the way that the production runner will override the path during the build (#1907) 2017-05-26 15:11:35 +01:00
Eugenio Romano f835e43e45 Merge pull request #1906 from Alfresco/development
1.5.0
2017-05-25 18:10:11 +01:00
Eugenio Romano 81270d3a32 fix image in dist 2017-05-25 15:12:56 +01:00
Eugenio Romano c751c28bbd update 1.5.0 version (#1903) 2017-05-25 15:12:56 +01:00
Eugenio Romano e376b34341 update version library demo folders (#1901)
* update version library demo folders

* fix demo dependency

* fix upload demo and check permissions

* fix images webpack resolution

* fix update versions script
2017-05-25 15:12:56 +01:00
Denys Vuika 5b4aad5d91 icon type for columns (#1902)
- new 'icon' type for columns to render internal icons
- enable attachment list in the demo shell
2017-05-25 15:12:55 +01:00
Eugenio Romano 0f66ce3472 ADF-656 about component fix (#1899) 2017-05-25 15:12:55 +01:00
Vito 2b755d7ee4 [ADF-673] - text widget value is not updated when the mask is not applied (#1900) 2017-05-25 15:12:55 +01:00
Denys Vuika 10b310288a upgrade zone.js to fix stack trace errors in console 2017-05-25 15:12:55 +01:00
Eugenio Romano 9f96f7ea82 use correct -dev build options appveyor
check for invalid options start.sh and npm-clean.sh
2017-05-25 15:12:55 +01:00
Eugenio Romano 120db7e52c fix prod build demo 2017-05-25 15:12:55 +01:00
Eugenio Romano 545879f090 appveyor split 2017-05-25 15:12:55 +01:00
Eugenio Romano ba9ac5c469 gnu mode change version script for sed incompatibility 2017-05-25 15:12:54 +01:00
Eugenio Romano 95d2219332 update version script refactoring 2017-05-25 15:12:54 +01:00
Eugenio Romano 2ac6439bb4 check bundles script 2017-05-25 15:12:54 +01:00
Denys Vuika 2ea5e8d0e0 Merge branch 'development' of https://github.com/Alfresco/alfresco-ng2-components into development 2017-05-25 15:12:54 +01:00
Eugenio Romano ee77a1c53f set ex update version 2017-05-25 15:12:54 +01:00
Eugenio Romano 92ceb0b867 update version folder 2017-05-25 15:12:54 +01:00
Eugenio Romano 4a753e6aa3 update version script modify 2017-05-25 15:12:54 +01:00
Denys Vuika 6acb8e128f fix demo shell references to components
- fix an issue with demo shell not checking changed code inside the local component folders
2017-05-25 15:12:53 +01:00
Eugenio Romano f9b8e8efc8 fix tag publish 2017-05-25 15:12:53 +01:00
Eugenio Romano c5f0196e71 cahnge label permission button (#1894) 2017-05-25 15:12:53 +01:00
Eugenio Romano 84d0415171 example to not overlay mode viewer (#1893) 2017-05-25 15:12:53 +01:00
Vito 246180925e [ADF-509] - fixed settings window dimension (#1892)
* [ADF-509] - fixed settings window dimension

* [ADF-509] - Changed fixed pixel dimension with percentage values
2017-05-25 15:12:53 +01:00
Eugenio Romano 811e1b3783 invert clean and registry 2017-05-25 15:12:52 +01:00
Denys Vuika da18a21e7c [ADF-551] sorting for document list (#1891)
* table cell component

- table cell component with performance improvements

* permissions and sorting fixes

- fixed ability to set default sorting
- fixed permission evaluation
- new: context menu now also works with permissions
- disabled tags column in demo shell due to performance implications

* fix unit tests

* fix tsconfig for unit testing
2017-05-25 15:12:52 +01:00
Eugenio Romano ef5bb6333c change order publish script install and dev js api 2017-05-25 15:12:52 +01:00
Eugenio Romano 0e153c47ef group test (#1890) 2017-05-25 15:12:52 +01:00
Eugenio Romano 59021ae9d2 activiti-start-process should accept list of process variable in input (#1880) 2017-05-25 15:12:52 +01:00
Eugenio Romano 075ee8a538 relative pointing (#1879)
readme modify
start.sh and nom-build-all refactoring
change travis conf
update version of zone.js (fixes console error)
karma conf remove dist
add alias build
override tsconfig components build
2017-05-25 15:12:52 +01:00
Eugenio Romano d5f90a59f4 List all components in readme (#1889) 2017-05-25 15:12:51 +01:00
Vito 38a04d24fc [ADF-647] Fix retrieving value for dropdown (#1888)
* [ADF-647] Fix retrieving value for dropdown
2017-05-25 15:12:51 +01:00
Vito e8889a5adb [ADF-147] Add input mask to Text Widget on Form (#1885)
* ADF-147 create directive to apply input mask
* ADF-147 - created directive for calculate input mask
* ADF-147 added input mask for text element
2017-05-25 15:12:51 +01:00
Denys Vuika b79ee13d11 [ADF-641] fix upload issues with various file types (#1887)
* fix upload issues with various file types

- removes file type check as most browsers leave this field empty
- allows uploading all types of files

* remove obsolete tests
2017-05-25 15:12:51 +01:00
Denys Vuika e63802ef4f form renderer fixes (#1882)
- provide support for showing generated documents in Display Value widget
2017-05-25 15:12:51 +01:00
Maurizio Vitale a90423aa21 [ADF-491] Task Attachment List Component (#1877)
* Create a new component Task Attachment List
Improve the datatable to get the rows to show

* The component name should follow the guide style
Move the Content calls in a different service file
Show the attach file inside the viewer

* Change method name

* Datatable should get the path and show the icon

* Improve attachment component

* Improve datatable documentation

* Remove console.log
2017-05-25 15:12:51 +01:00
Denys Vuika 608b3639ea auth service enhancements (#1860) 2017-05-25 15:12:51 +01:00
Eugenio Romano af82f83669 Add config files in any components folder (#1878)
* add config files in any components folder
* all test run option ft and option to skip build and run only test
2017-05-25 15:12:50 +01:00
Denys Vuika 130c2e4428 auth service api improvements (#1865)
Rename Auth Service events:
- loginSubject -> onLogin
- logoutSubject -> onLogout
2017-05-25 15:12:50 +01:00
Eugenio Romano 4db98a1d7b Fix Readme scripts 2017-05-25 15:12:50 +01:00
Eugenio Romano 404ea5c852 token option 2017-05-25 15:12:50 +01:00
Eugenio Romano 72704cad57 [ADF-570] Script for Pushing to Registry (#1875)
* change prepublish to build only
add .npmrc in the gitignore and npmignore
clean .npmrc during the clean task
change registry during publish with npmrc file
add rimraf install in npm publish

* add option to link an alfresco-js-api from github

* npm build on develop branch will use the alfresco-js-api from develop

* modify script after review
add -gitjsapi to starts.sh to change jsapi pointing
add -vjsapi to starts.sh to change jsapi pointing

* start dist demo shell script option
2017-05-25 15:12:50 +01:00
Denys Vuika 1fadfa8166 [ADF-615] significant performance improvements for drag and drop (#1874)
* fix uploading to folders

* significant performance improvements for drag and drop

* unit test fixes
2017-05-25 15:12:50 +01:00
Denys Vuika 27ba99d11e disable ADF-551 due to conflicts with Permissions feature 2017-05-25 15:12:50 +01:00
Eugenio Romano be062917b8 start server fix 2017-05-25 15:12:49 +01:00
Mario Romano 6da0eaba37 Fix build problem (#1861)
* fix sourcemap
fix relative path and pre publish build
change travis wait
all test run build and remove unused cpx

* global test task
modify publish script to accept options

* appveyor run

* different approach single test run

* make it work the analytics test
modify start demo shell script to use a different registry

* sourcemap demo shell working

* update readme and add install after any clean
add registry option in start.sh script
add develop and normal mode in demo shell
add -d option in start.sh to point to the local components
add -c option in build script to point to the local components
2017-05-25 15:12:49 +01:00
Denys Vuika b0be88ec37 [ADF-551] allow setting sorting in html (#1857)
* allow setting sorting in html

* readme update

* update readme

* restore permissions code

* - Remove the check permission from the datatable and move inside the documentlist

* Remove commented test
2017-05-25 15:12:49 +01:00
Eugenio Romano 416d8c2a1b reintroduce start:dist task 2017-05-25 15:12:49 +01:00
Denys Vuika 07d898b2aa node-click and node-dblclick DOM events (#1863)
Extra DOM events with bubbling support for DocumentList:
- node-click
- node-dblclick
2017-05-25 15:12:49 +01:00
Denys Vuika 5c7d53230d fix upload directive for Safari (#1871) 2017-05-25 15:12:49 +01:00
Deepak Paul 3482cc57be [ADF-402] Process Diagram Widget - Show the current process state (#1867)
* Fixes for activiti process diagram

Fix to show the current process state. ADF issue no ADF-402

* #ADF-402 fix to show process state and unit tests changes

* fixed test for pipeline to match new angular4 changes on simple change (#1868)

* [DW-50]: New features for accordion-group component (#1851)

[ADF-557] -  Add a new property called showIcon as input to hide/show filter icons.

* [ADF-242] Select the first in the list when the report is deleted (#1862)

* ADF-242 Select the first in the list when the report is deleted

* Update README.md

* Fixes for activiti process diagram

Fix to show the current process state. ADF issue no ADF-402

* #ADF-402 fix to show process state and unit tests changes

* #ADF-402 Removed error logging and modified documentation
2017-05-25 15:12:49 +01:00
Infad Kachancheri bac2a45d18 [ADF- 556] Analytics Service - Add a new method to get the report details by name (#1869)
* added service to get report details by report name

* analytics service tslit fix#1

* added test cases for getReportList and getReportByName
2017-05-25 15:12:48 +01:00
Maurizio Vitale e09d317d1e [ADF-242] Select the first in the list when the report is deleted (#1862)
* ADF-242 Select the first in the list when the report is deleted

* Update README.md
2017-05-25 15:12:48 +01:00
Infad Kachancheri 22bbffdb21 [DW-50]: New features for accordion-group component (#1851)
[ADF-557] -  Add a new property called showIcon as input to hide/show filter icons.
2017-05-25 15:12:48 +01:00
Vito 664565a42a fixed test for pipeline to match new angular4 changes on simple change (#1868) 2017-05-25 15:12:48 +01:00
Denys Vuika e29741d18d [ADF-587] upgrade components to angular 4 (#1866)
[ADF-587]  upgrade components to angular 4
2017-05-25 15:12:48 +01:00
Maurizio Vitale 5ba1202292 Do not reload the tasks when the taskId and currentTask are the same (#1856) 2017-05-25 15:12:48 +01:00
Denys Vuika c07d12261f vs code config fixes 2017-05-25 15:12:48 +01:00
Eugenio Romano f6eeb8e76a fix sourcemap (#1864) 2017-05-25 15:12:47 +01:00
Eugenio Romano 9689097199 Fix table properties readme 2017-05-25 15:12:47 +01:00
Eugenio Romano a57520436c Update readme components list 2017-05-25 15:12:47 +01:00
Eugenio Romano 80d67212b7 [ADF-579] - move license check in webpack (#1859)
* move license check in webpack

* fix exclusion check header

* different headers
2017-05-25 15:12:47 +01:00
Denys Vuika 774017ac62 Merge branch 'development' of https://github.com/Alfresco/alfresco-ng2-components into development 2017-05-25 15:12:47 +01:00
Denys Vuika 0f04bcdcee update shared vs code settings 2017-05-25 15:12:47 +01:00
Eugenio Romano b5ebe5bc47 invert show default properties (#1858)
* invert show default properties

* fix test
2017-05-25 15:12:47 +01:00
Denys Vuika fc728676c0 webpack configuration fix 2017-05-25 15:12:47 +01:00
Infad Kachancheri 31bd24839e [DW-49]: Add new input to process activiti-filters component to show/hide icons (#1849)
[ADF-557]: Add new input to process activiti-filters component to show/hide icons
2017-05-25 15:12:46 +01:00
Eugenio Romano 4188a5aee9 clean rating component (#1854) 2017-05-25 15:12:46 +01:00
Infad Kachancheri 934509c7ba [DW-46] - Process Service - Add a new method to get the application details by Id (#1846)
ADF-555 - Process Service - Add a new method to get the application details by Id
2017-05-25 15:12:46 +01:00
eromano b47a5e49c0 fix pacakge json social and add force option publish script 2017-05-25 15:12:46 +01:00
Eugenio Romano 0b246b8211 Speed up build (#1852)
* single build webpack

* fix demo shell test
2017-05-25 15:12:46 +01:00
Infad Kachancheri 8959476941 [DW-45] Process Service - Fix the input type from string to number (#1845)
Process Service - Fix the input type from string to number
2017-05-25 15:12:46 +01:00
Infad Kachancheri 0fa56dff23 [DW-43] Task Service - Fix the input type from string to number (#1842)
ADF-554 Process Service - Fix the input type from string to number
2017-05-25 15:12:45 +01:00
Infad Kachancheri f89a0eafd9 [DW-44] - Task Service - Add a new method to get the application details by Id (#1843)
ADF-555 New service that returns application details for a given appId
2017-05-25 15:12:45 +01:00
Denys Vuika 25cffb1f19 add missing module exports (#1853)
- FileModel
- PermissionModel
2017-05-25 15:12:45 +01:00
Denys Vuika f33b841f9b [ADF-534] Login dialog enhancements (#1844)
* version 1.4.0 social component

* Login dialog enhancements

- ability to toggle ‘Remember me’ (switched off by default now)
- ability to toggle a footer with extra actions (switched off by
default now)
- readme updates

* fix unit tests
2017-05-25 15:12:45 +01:00
Eugenio Romano 6342c34f51 version 1.4.0 social component 2017-04-28 13:01:23 +02:00
Mario Romano bca027ddf0 Merge pull request #1850 from Alfresco/development
1.4.0
2017-04-27 14:18:33 +01:00
Mario Romano ac16f1c3dc 1.4.0 (#1848) 2017-04-27 14:05:12 +01:00
Denys Vuika fb25cd34d0 Update README.md 2017-04-27 14:05:12 +01:00
Mario Romano e065865ad4 revert change to the upgrade script 2017-04-27 14:05:12 +01:00
Maurizio Vitale 50abe09edb Fix bug related to upload button permission (#1838)
* Add the permission check on the activiti button

* Fix code after unit test

* Add basic documentation

* Improve the code and fix the missing file issue

* Fix unit test after refactoring

* remove duplicate log
2017-04-27 14:05:11 +01:00
Eugenio Romano e25b05d991 rating component #521 (#1810)
* rating component #521

* use adf prefix
2017-04-27 14:05:11 +01:00
Maurizio Vitale 1d45089125 #514 (#1840)
Follow the component guide style
The accordion should be open by default
2017-04-27 14:05:11 +01:00
Vito 93b8d3742f Added permission check on documentlist action menu (#1832)
* #ADF-166 - add permissin check on folder creation

* #ADF-166 - removed wrong pushed change

* #ADF-166 - improved permission check

* #ADF-166 - added test for menu action permission check

* #ADF-166 upgraded disabled attribute to match all the browsers

* #ADF-166 added peer review changes

* #ADF-166 added some little code improvements
2017-04-27 14:05:11 +01:00
Denys Vuika dad7a575f7 disable debug button by default (#1836)
- debug button is now disabled by default for the Form and Task Details
- debug mode now enabled by the demo shell explicitly
2017-04-27 14:05:11 +01:00
Denys Vuika 1dd283b0d8 Form renderer enhancements (#1839)
- readonly mode for “Dynamic Table”
- “Display Value” now just uses “Dynamic Table” if needed (previously
rendered the table itself)
- support for “tableEditable” settings
2017-04-27 14:05:11 +01:00
Denys Vuika 95711616ca upload button enhancements (#1835)
- add support for [disabled] attribute
- move to angular/material icons
- improve demo shell layout (files.component)
2017-04-27 14:05:11 +01:00
Denys Vuika 39ffd515d9 Viewer readme cleanup (#1837) 2017-04-27 14:05:10 +01:00
Denys Vuika 554e0d79db documentation updates (#1831)
- new walkthrough on metadata-driven UI
2017-04-27 14:05:10 +01:00
Vito 806874cdca #ADF-498 added check for valid settings addresses (#1834)
* #ADF-498 added check for valid settings addresses

* #ADF-498 added adf prefix to the new style class
2017-04-27 14:05:10 +01:00
Maurizio Vitale 1de625d960 Custom Filter Component (#1823)
* Add Accordion component

* Add property to hide icon

* Use accordion component in demo shell

* Add basic doc

* Add adf prefix

* Add element id and change unit test
2017-04-27 14:05:10 +01:00
Maurizio Vitale 0e4dab8b66 Disable upload button with no permission (#1820)
* Add the permission check on the activiti button

* Fix code after unit test

* Add basic documentation
2017-04-27 14:05:10 +01:00
Denys Vuika 721e96c01b fix checklist buttons (#1824) 2017-04-27 14:05:10 +01:00
Eugenio Romano 397c49810f Delete Jenkinsfile 2017-04-27 14:05:10 +01:00
Eugenio Romano 34439b0022 Delete fabric8.yml 2017-04-27 14:05:09 +01:00
Denys Vuika 87b479e720 datatable improvements (#1822)
- move ngSwitch outside of the ngFor directive (to avoid issues)
- improved template maintainance (without ngFor template hack)
- readme updates to reflect new features
2017-04-27 14:05:09 +01:00
Denys Vuika 6c2e56296f readme updates for Form component 2017-04-27 14:05:09 +01:00
Denys Vuika 82b32cde25 fix pagination styles (#1821) 2017-04-27 14:05:09 +01:00
Maurizio Vitale 87d889e8af Provide a way to retrieve the task filter by Id or by name (#1815)
* Provide a way to retrieve the task filter by Id or by name

* Update activiti-tasklist.service.ts

* Update activiti-tasklist.service.spec.ts

* Removed space
2017-04-27 14:05:09 +01:00
Maurizio Vitale 88edb1697a Provide a way to retrieve the process filter by id or name (#1817)
* Provide a way to retrieve the process filter by id or name

* Update activiti-process.service.ts
2017-04-27 14:05:09 +01:00
Eugenio Romano d4cc54d561 hide Pagination in empty folder #1595 (#1811)
* hide Pagination in empty folder #1595

* unify isPaginationEnabled condition in template #1595
2017-04-27 14:05:09 +01:00
Vito 09f3a6e30f fix userinfo test (#1819)
* fix userinfo test

* Added changes from review
2017-04-27 14:05:09 +01:00
Eugenio Romano 0fcd40b7f0 revert update ng2-translate-version #1397 (#1818) 2017-04-27 14:05:08 +01:00
Vito 26da797398 #ADF-452-userinfo show full name on the banner (#1814)
* #ADF-452-userinfo show full name on the banner

* #ADF-452 - added improvement from PR
2017-04-27 14:05:08 +01:00
Vito 1eea3c2983 #ADF-440 move start task and start process button on respective filters list (#1816) 2017-04-27 14:05:08 +01:00
Eugenio Romano 6af0f10fa8 demo shell remove unused import and add tslint on start dev 2017-04-27 14:05:08 +01:00
Maurizio Vitale f6102dfc07 DocumentList - Check permissions on delete folder/file (#1808)
* Add check permission on delete folder/file

* Provide a way to disable the action when if there is no permission

* Improve the code using the external permission inside the folder/document action service

* Add basic documentation.
 - How disable the button when the permission is missing
 - How to show a notification message when the permission is missing

* Resize the image

* Change the value to true for demo purpose

* Update folder-actions.service.ts

* Update document-actions.service.ts
2017-04-27 14:05:08 +01:00
Eugenio Romano ab3d18e5c1 update ng2-translate-version #1397 (#1805)
* update ng2-translate-version #1397

* change karma.conf and build for ng2-translate 4.0.0
2017-04-27 14:05:08 +01:00
Eugenio Romano dba5d5a037 reload folder after success upload event only if is the event is related to the current folder #1637 (#1813) 2017-04-27 14:05:08 +01:00
Vito 4bee113e36 #1426 - Checklist task delete action (#1812)
* #1426 - added remove checklist feature on task details
* #1426 - Improved test for tasklist service
* 426 - added component test for deleting a checklist
2017-04-27 14:05:07 +01:00
Maurizio Vitale d2f7a6858f Activiti form - Custom date format (#1806)
* Fix format date|
#1704

* Add unit tests on custom format date
#1704

* Update form-field.model.ts

* Update display-value.widget.ts
2017-04-27 14:05:07 +01:00
Vito 02052c3ea9 #1652 - Save and Export should appear on saved reports (#1807)
* #1652 - Save and Export should appear on saved reports

* #1652 - added some test and upgraded condition on html
2017-04-27 14:05:07 +01:00
Maurizio Vitale 7239b37dac Activtiti apps - Provide a way to filter the apps (#1804)
* Provide a way to filter the apps
#1389

* Add unit test
#1389

* Add documentation
#1389

* Improve docs
#1389

* Correct image

* Add parameter filtersAppId to docs
2017-04-27 14:05:07 +01:00
Vito 25a430c933 #1712 - Removed old private api call for wokflows users and groups (#1799)
* #1712 - changed workflow api call from private to enterprise

* #1712 - removed Testbed added injector
2017-04-27 14:05:07 +01:00
Eugenio Romano b3e2c28582 Merge branch 'master' into development 2017-04-27 14:05:07 +01:00
Eugenio Romano a68b80390f Update README.md 2017-04-23 22:54:54 +01:00
Eugenio Romano fc044507f8 1.3.0 (#1795) 2017-04-05 11:11:38 +01:00
Eugenio Romano 364e36f857 add test document menu component (#1802) 2017-04-05 11:11:38 +01:00
Eugenio Romano a6c83f9c64 Notification service test (#1801) 2017-04-05 11:11:38 +01:00
Maurizio Vitale e484eef348 Improve activiti content coverage (#1800) 2017-04-05 11:11:38 +01:00
Denys Vuika fb11aae2b6 unit tests (#1798) 2017-04-05 11:11:38 +01:00
Eugenio Romano a0eccd2b6c remove unused phantomjs dep (#1797) 2017-04-05 11:11:38 +01:00
Denys Vuika 8272b08f6a demo app improvements (#1796)
- fix navigation within process details
- fix ‘create task’ button name (was ‘start task’ previously)
- put ‘create task’ and ‘start process’ buttons to proper places in
layout
2017-04-05 11:11:38 +01:00
Denys Vuika d25d070229 use original error message for CORS/offline state in login (#1790)
* use original error message for CORS/offline state in login

* fix tests
2017-04-05 11:11:38 +01:00
Mario Romano 2802765fd6 #1711 fix version package.json 3rd libraries (#1768)
* #1711 fix version package.json 3rd libraries

* fix test
2017-04-05 11:11:38 +01:00
Eugenio Romano 7ac17bcc15 remove unused old travis file (#1793) 2017-04-05 11:11:38 +01:00
Vito f7764a97ee #1657 - Added filter by name when clicking on specific app (#1794) 2017-04-05 11:11:38 +01:00
Maurizio Vitale 2c21eedc69 Activiti form - Dropdown display label in complete form (#1777)
* Dropdown - retrieve the label instead of the id

* Add unit test

* Use find instead of filter
2017-04-05 11:11:38 +01:00
Maurizio Vitale 3c25266bc9 The process filter should not be created twice (#1789) 2017-04-05 11:11:38 +01:00
Maurizio Vitale 548054c05e Close the dialog when the activiti content preview is cliecked (#1792) 2017-04-05 11:11:38 +01:00
Eugenio Romano f75e2b05ea fix dropdown visibility #1593 (#1767)
* fix dropdown visibility #1593

* fix test search workaround material2 issue 1913
2017-04-05 11:11:38 +01:00
Denys Vuika c316fcac18 add custom columns support for process list (#1787) 2017-04-05 11:11:38 +01:00
Denys Vuika c3e38e87ab workaround for tooltips (#1786)
- migrate buttons to angular/material
- move buttons to the left (workaround for tooltips)
2017-04-05 11:11:38 +01:00
Denys Vuika 0a57c640ef fix datatable multi select checkboxes (#1784)
* fix datatable multi select checkboxes

* template cleanup

* fix unit tests
2017-04-05 11:11:38 +01:00
Vito 020952c174 #1517 - ADF-163 - Fixed wrong behaviour when task is created on the s… (#1785)
* #1517 - ADF-163 - Fixed wrong behaviour when task is created on the same selected filter

* 1517 - removed consecutives blank lines
2017-04-05 11:11:38 +01:00
Vito 0b099eff44 #1654 - move download management to content service from core (#1788) 2017-04-05 11:11:38 +01:00
Eugenio Romano ca36f02826 Minification fix #1693 (#1782) 2017-04-05 11:11:38 +01:00
Denys Vuika cedeba9c55 optimise some dependencies (#1781)
- remove “intl” from components (not needed)
- remove “material-design-icons” from core (not needed)
2017-04-05 11:11:38 +01:00
Denys Vuika 49dffb8784 remove hardcoded date format (#1779) 2017-04-05 11:11:38 +01:00
Eugenio Romano b5008fd7b1 add @angular/material dep on demos systemjs conf (#1780) 2017-04-05 11:11:38 +01:00
Eugenio Romano a71dc7e1c8 add hammerjs demo shell (#1778) 2017-04-05 11:11:38 +01:00
Denys Vuika 32603f52e8 bundle improvements (#1774)
- add missing alfresco-js-api to the vendors
- add missing 3D viewer related libs to the vendors (fixes issue with
app bundle having duplicates)
2017-04-05 11:11:38 +01:00
Denys Vuika c9488d32db fix checkboxes (Form) (#1773)
- migrate to angular/material checkboxes
- add required indicator
- various fixes and improvements (caused by migration)
2017-04-05 11:11:38 +01:00
Denys Vuika 99a516249d fix long names in columns (ellipsis-cell class) (#1775) 2017-04-05 11:11:38 +01:00
Maurizio Vitale a1afb728e1 Required filed should have an asterisk inside the label (#1776) 2017-04-05 11:11:38 +01:00
Eugenio Romano 602a46ea66 appveyor fix new build script (#1770) 2017-04-05 11:11:38 +01:00
Maurizio Vitale e9bd279259 Integration beetwen Viewer and Activiti Content (#1765)
* Provide a FormService event when you click on the uploaded content

* Add a formContentClick event to the Form component

* Provide a way to pass Blob to viewer

* Provide a way to use the viewer using a Blob
 - Fix the pdf viewer
 - Fix the image viewer
 - Fix the media viewer

* Update the viewer documentation

* Use the ContentService provided by the core

* Fix and improve unit test

* Add unit test blob viewer
2017-04-05 11:11:38 +01:00
Vito 016f0b3c09 #1517 - Added new behaviour when user create a new task (#1769)
* #1517 - added search task into filters by id feature

* #1517 - added test for tasklist service

* #1517 - Added test for filter component
2017-04-05 11:11:38 +01:00
Maurizio Vitale f323c4be75 Fix dynamic translate parameter (#1772) 2017-04-05 11:11:38 +01:00
Eugenio Romano 41ee867fd7 add timeout increase karma tests (#1771) 2017-04-05 11:11:38 +01:00
Denys Vuika 95b64a0b37 fix build-all script 2017-04-05 11:11:38 +01:00
Eugenio Romano a965a764e0 appveyor fix new build script (#1766) 2017-04-05 11:11:38 +01:00
Eugenio Romano f552720eb6 use mdl input for tag #1506 (#1764) 2017-04-05 11:11:38 +01:00
Denys Vuika 552cbbb273 bug fixes for thumbnails and Safari download (#1763)
- set ‘show thumbnail’ to true by default
- add support for safe downloads in Safari (upcoming 10.1 and TP)
2017-04-05 11:11:38 +01:00
Mario Romano aa87a374dd #1214 use angular 2 mdl input field (#1762) 2017-04-05 11:11:38 +01:00
Eugenio Romano ace279671f increase inactivity timeout test (#1760) 2017-04-05 11:11:38 +01:00
Eugenio Romano 9b36001510 update tag list with refresh event emitter when add or remove a tag #1507 (#1754) 2017-04-05 11:11:38 +01:00
Denys Vuika e2c879409a Form: support for embedded document view (#1748)
* Form: support for embedded document view

* unit tests and improvements

- new ContentService to deal with trusted URL and downloads
- unit tests and improvements for ActivitiContent component
2017-04-05 11:11:38 +01:00
Eugenio Romano 2586fba904 missing event coverage exclude (#1761) 2017-04-05 11:11:38 +01:00
Eugenio Romano 59272e5cfa fix clean script and build all (#1758) 2017-04-05 11:11:38 +01:00
Mario Romano 4916b99744 #1750 add ngOnchange on data input (#1751)
* #1750 add ngOnchange on data input

* Update datatable.component.ts
2017-04-05 11:11:38 +01:00
Eugenio Romano 785db5ca00 fix HammerJS warning #1617 (#1755) 2017-04-05 11:11:38 +01:00
Eugenio Romano 583e152bca remove event model from coverage (#1753) 2017-04-05 11:11:38 +01:00
Eugenio Romano 1661d58765 make the local link build fast and run the test only if asked #1588 (#1671)
* make the local link build fast and run the test only if asked #1588

* demo core doesn't exist

* link after install

* move in after success matrix build and install scripts
2017-04-05 11:11:38 +01:00
Eugenio Romano 2bedae8db5 disable add button when no valid ID is provided #1591 (#1747)
* disable add button when no valid ID is provided #1591

* fix test
2017-04-05 11:11:38 +01:00
Eugenio Romano 05635db985 remove style in html #1678 (#1743) 2017-04-05 11:11:38 +01:00
Denys Vuika 76009fcd46 fix dynamic table validation (#1741)
- dynamic table widget no longer creates a copy of field model, but
uses original one, fixes the problem with validation and state
management
- update unit tests
2017-04-05 11:11:38 +01:00
Eugenio Romano 88da9a181b add test and documentation staticTitle option #1570 (#1744) 2017-04-05 11:11:38 +01:00
Denys Vuika 4ebe1e77b9 upload dialog improvements (#1740)
Various upload dialog improvements

- fix: headers alignment
- fix: Name column alignment
- fix: rename ‘CANCEL’ button to ‘Cancel all’ (as it’s what it does)
- fix: ‘Cancel all’ button still visible after all upload complete
- new: improved layout and api for file upload components
- new: strongly typed methods for UploadService
2017-04-05 11:11:38 +01:00
Denys Vuika 4df72af86d upload: new 'click' mode with file/folder dialog support (#1738)
* new 'click' mode with file/folder dialog support

* fix uploading files to folders via drop on Safari
2017-04-05 11:11:38 +01:00
Denys Vuika 88abad743f support for setting CSS classes in the designer (#1737)
- provides support for `className` field that Angular 1 designer allows
to define for Forms and Form Fields
2017-04-05 11:11:38 +01:00
Denys Vuika 21bfd5eef9 improved uploading of files (#1730)
* improved uploading of files

- new core/UploadDirective to allow dropping files to any html element
- enhanced file dropping for DataTable rows (disabled by default)
- enhanced file dropping for DocumentList rows (disabled by default)
- upload drop area now handles file uploads for child elements (i.e.
rows in the document list)

* fix unit tests

* unit tests and code cleanup

* #1732, fix upload of folders
2017-04-05 11:11:38 +01:00
Denys Vuika f8427e61e1 extra DOM events for DataTable (#1723)
* extra DOM events for DataTable

- support for ‘row-click’ DOM event (bubbling)
- support for ‘row-dblclick’ DOM event (bubbling)
- DataRowEvent exposes ‘sender’ property to simplify access to
component from within handlers
- readme and test updates

* fix unit tests
2017-04-05 11:11:38 +01:00
Denys Vuika 4dc99ae66a form component fixes (#1726)
- fix ‘readonly highlighting when input fields loaded with values
- Start Form raises base ‘FormLoaded’ event (including FormService
emits)
2017-04-05 11:11:38 +01:00
Denys Vuika 2a14679603 migrate from PhantomJS to Chrome (#1716) 2017-04-05 11:11:38 +01:00
Denys Vuika 2fb8ae1b5d support for column definitions in html (#1705)
* support for column definitions in html

- provides generic support for html-based column definitions for
datatable-like controls

* html column definitions for Task List component

* html column definitions for Document List component

* update code and documentation
2017-04-05 11:11:38 +01:00
Denys Vuika e2ced9ff9a fix image paths for components (#1696)
* fix Login image paths

* fix TaskList image paths

* fix DocumentList image paths

* fix Search image paths
2017-04-05 11:11:38 +01:00
Denys Vuika f85d9a5934 DataTable docs and backwards compatibility (#1702)
* example: custom datatable row actions

* update docs, provide backwards compatibility
2017-04-05 11:11:38 +01:00
Maurizio Vitale 0028412451 #11625 (#1703)
Fix ObjectDataRow
Tasklist
Processlist
2017-04-05 11:11:38 +01:00
Denys Vuika b2848a5ca8 user-info component fixes (#1694)
* user-info fixes

- fix image paths to be relative rather than rooted (for user info,
refs #1606)
- fix full name rendering
- fix styling for ‘job title’

* fix unit tests
2017-04-05 11:11:38 +01:00
Mario Romano ed4351a805 #1512 fix text demo shell (#1695) 2017-04-05 11:11:38 +01:00
Mario Romano 3aed7cb37e #1638 fix Incorrect Error message 2017-04-05 11:11:38 +01:00
Denys Vuika aab828c8e9 minor Login improvements (#1685)
- replace inline SVG with the md-icon component
- own validation/error style classes for theming purposes
2017-04-05 11:11:38 +01:00
Denys Vuika 7f7cc074d1 upgrade to latest ng2-charts (#1686) 2017-04-05 11:11:38 +01:00
Denys Vuika 10b9cf70d3 more control over task details header (#1688)
- toggle task details header
- toggle visibility of involve/comments/checklist
- readme updates
2017-04-05 11:11:38 +01:00
Vito 72cd6c6ef3 1454 - fixed spacing in forms (#1687) 2017-04-05 11:11:38 +01:00
Denys Vuika a3cda4d958 support for toggling custom context menu (#1683)
* support for toggling custom context menu

* fix unit tests
2017-04-05 11:11:38 +01:00
Denys Vuika 0f718a56d7 cancellable events for DataTable and DocumentList (#1682)
* cancellable events for DataTable and DocumentList

* more typed events and code fixes

* code fixes
2017-04-05 11:11:38 +01:00
Denys Vuika 418ac90ae9 Update tsconfig.json for demo shell (#1684)
fixes issues with building for Windows
2017-04-05 11:11:38 +01:00
Denys Vuika f8022678d1 Update README.md 2017-04-05 11:11:38 +01:00
Eugenio Romano 8725a745c2 1.3.0 (#1795) 2017-04-04 12:27:58 +01:00
Eugenio Romano 6ac9d45bcf add test document menu component (#1802) 2017-04-03 06:22:34 -07:00
Eugenio Romano 53c1af445e Notification service test (#1801) 2017-04-02 13:44:12 +01:00
Maurizio Vitale 64a66e676b Improve activiti content coverage (#1800) 2017-04-02 13:44:05 +01:00
Denys Vuika afa21dcc42 unit tests (#1798) 2017-03-31 19:53:40 +01:00
Eugenio Romano 955f8759e3 remove unused phantomjs dep (#1797) 2017-03-31 18:08:40 +01:00
Denys Vuika 73b1ed6040 demo app improvements (#1796)
- fix navigation within process details
- fix ‘create task’ button name (was ‘start task’ previously)
- put ‘create task’ and ‘start process’ buttons to proper places in
layout
2017-03-31 15:44:54 +01:00
Denys Vuika 5a692f28f5 use original error message for CORS/offline state in login (#1790)
* use original error message for CORS/offline state in login

* fix tests
2017-03-30 19:26:28 +01:00
Mario Romano 2651ec46d6 #1711 fix version package.json 3rd libraries (#1768)
* #1711 fix version package.json 3rd libraries

* fix test
2017-03-30 19:06:01 +01:00
Eugenio Romano 3f007ce464 remove unused old travis file (#1793) 2017-03-30 18:54:32 +01:00
Vito 2cc124bb87 #1657 - Added filter by name when clicking on specific app (#1794) 2017-03-30 18:15:32 +01:00
Maurizio Vitale 952df8d81c Activiti form - Dropdown display label in complete form (#1777)
* Dropdown - retrieve the label instead of the id

* Add unit test

* Use find instead of filter
2017-03-30 18:14:22 +01:00
Maurizio Vitale 406d96d5bf The process filter should not be created twice (#1789) 2017-03-30 18:12:35 +01:00
Maurizio Vitale a608bc40a4 Close the dialog when the activiti content preview is cliecked (#1792) 2017-03-30 18:10:26 +01:00
Eugenio Romano 04f343b28f fix dropdown visibility #1593 (#1767)
* fix dropdown visibility #1593

* fix test search workaround material2 issue 1913
2017-03-30 10:26:18 +01:00
Denys Vuika 4814e95e30 add custom columns support for process list (#1787) 2017-03-30 02:02:08 -07:00
Denys Vuika cbadbdec35 workaround for tooltips (#1786)
- migrate buttons to angular/material
- move buttons to the left (workaround for tooltips)
2017-03-30 09:51:20 +01:00
Denys Vuika fa448374a9 fix datatable multi select checkboxes (#1784)
* fix datatable multi select checkboxes

* template cleanup

* fix unit tests
2017-03-30 01:44:34 -07:00
Vito 4ef560e7f5 #1517 - ADF-163 - Fixed wrong behaviour when task is created on the s… (#1785)
* #1517 - ADF-163 - Fixed wrong behaviour when task is created on the same selected filter

* 1517 - removed consecutives blank lines
2017-03-30 09:16:52 +01:00
Vito 0dd8878b45 #1654 - move download management to content service from core (#1788) 2017-03-30 09:15:59 +01:00
Eugenio Romano 3a300c20d4 Minification fix #1693 (#1782) 2017-03-28 20:47:57 +01:00
Denys Vuika 4c62409e8c optimise some dependencies (#1781)
- remove “intl” from components (not needed)
- remove “material-design-icons” from core (not needed)
2017-03-28 17:27:37 +01:00
Denys Vuika aa9269291a remove hardcoded date format (#1779) 2017-03-28 17:25:44 +01:00
Eugenio Romano 7657c1e633 add @angular/material dep on demos systemjs conf (#1780) 2017-03-28 16:26:19 +01:00
Eugenio Romano c65d271c9c add hammerjs demo shell (#1778) 2017-03-28 11:07:25 +01:00
Denys Vuika 8f62a28096 bundle improvements (#1774)
- add missing alfresco-js-api to the vendors
- add missing 3D viewer related libs to the vendors (fixes issue with
app bundle having duplicates)
2017-03-28 09:48:23 +01:00
Denys Vuika 88acf9d3c1 fix checkboxes (Form) (#1773)
- migrate to angular/material checkboxes
- add required indicator
- various fixes and improvements (caused by migration)
2017-03-28 09:47:41 +01:00
Denys Vuika 2f2513ced9 fix long names in columns (ellipsis-cell class) (#1775) 2017-03-28 09:47:01 +01:00
Maurizio Vitale a58dcca269 Required filed should have an asterisk inside the label (#1776) 2017-03-28 09:07:26 +01:00
Eugenio Romano 6888164f83 appveyor fix new build script (#1770) 2017-03-27 18:43:10 +01:00
Maurizio Vitale fde08bb573 Integration beetwen Viewer and Activiti Content (#1765)
* Provide a FormService event when you click on the uploaded content

* Add a formContentClick event to the Form component

* Provide a way to pass Blob to viewer

* Provide a way to use the viewer using a Blob
 - Fix the pdf viewer
 - Fix the image viewer
 - Fix the media viewer

* Update the viewer documentation

* Use the ContentService provided by the core

* Fix and improve unit test

* Add unit test blob viewer
2017-03-27 14:33:07 +01:00
Vito 8132f79e97 #1517 - Added new behaviour when user create a new task (#1769)
* #1517 - added search task into filters by id feature

* #1517 - added test for tasklist service

* #1517 - Added test for filter component
2017-03-27 14:32:22 +01:00
Maurizio Vitale cbd827ab51 Fix dynamic translate parameter (#1772) 2017-03-27 14:32:18 +01:00
Eugenio Romano 36c76bf10c add timeout increase karma tests (#1771) 2017-03-27 12:51:14 +01:00
Denys Vuika 73e2058e38 fix build-all script 2017-03-27 11:17:00 +01:00
Eugenio Romano 7a73d0ce60 appveyor fix new build script (#1766) 2017-03-24 17:53:17 +00:00
Eugenio Romano 1f536d2db8 use mdl input for tag #1506 (#1764) 2017-03-24 15:40:57 +00:00
Denys Vuika cf67a0c1b5 bug fixes for thumbnails and Safari download (#1763)
- set ‘show thumbnail’ to true by default
- add support for safe downloads in Safari (upcoming 10.1 and TP)
2017-03-24 13:27:51 +00:00
Mario Romano fab8866d0c #1214 use angular 2 mdl input field (#1762) 2017-03-24 10:32:09 +00:00
Eugenio Romano 5072cb3aa0 increase inactivity timeout test (#1760) 2017-03-23 17:55:50 +00:00
Eugenio Romano 16258a3e9e update tag list with refresh event emitter when add or remove a tag #1507 (#1754) 2017-03-23 17:51:50 +00:00
Denys Vuika 4f154f8bca Form: support for embedded document view (#1748)
* Form: support for embedded document view

* unit tests and improvements

- new ContentService to deal with trusted URL and downloads
- unit tests and improvements for ActivitiContent component
2017-03-23 17:51:20 +00:00
Eugenio Romano a06138136b missing event coverage exclude (#1761) 2017-03-23 16:46:39 +00:00
Eugenio Romano e8c524176e fix clean script and build all (#1758) 2017-03-23 15:51:28 +00:00
Mario Romano 59ed4ee65d #1750 add ngOnchange on data input (#1751)
* #1750 add ngOnchange on data input

* Update datatable.component.ts
2017-03-23 15:49:58 +00:00
Eugenio Romano 707851ce85 fix HammerJS warning #1617 (#1755) 2017-03-23 15:44:52 +00:00
Eugenio Romano 96c72eeef1 remove event model from coverage (#1753) 2017-03-23 12:00:15 +00:00
Eugenio Romano d739526517 make the local link build fast and run the test only if asked #1588 (#1671)
* make the local link build fast and run the test only if asked #1588

* demo core doesn't exist

* link after install

* move in after success matrix build and install scripts
2017-03-23 10:54:49 +00:00
Eugenio Romano 2f3aeb84a1 disable add button when no valid ID is provided #1591 (#1747)
* disable add button when no valid ID is provided #1591

* fix test
2017-03-23 09:56:10 +00:00
Eugenio Romano f3c9ffab8d remove style in html #1678 (#1743) 2017-03-22 10:50:24 +00:00
Denys Vuika 44808a31a3 fix dynamic table validation (#1741)
- dynamic table widget no longer creates a copy of field model, but
uses original one, fixes the problem with validation and state
management
- update unit tests
2017-03-22 09:58:12 +00:00
Eugenio Romano d32ed969a7 add test and documentation staticTitle option #1570 (#1744) 2017-03-22 09:57:52 +00:00
Denys Vuika 62915aff93 upload dialog improvements (#1740)
Various upload dialog improvements

- fix: headers alignment
- fix: Name column alignment
- fix: rename ‘CANCEL’ button to ‘Cancel all’ (as it’s what it does)
- fix: ‘Cancel all’ button still visible after all upload complete
- new: improved layout and api for file upload components
- new: strongly typed methods for UploadService
2017-03-21 14:45:48 +00:00
Denys Vuika c846556e28 upload: new 'click' mode with file/folder dialog support (#1738)
* new 'click' mode with file/folder dialog support

* fix uploading files to folders via drop on Safari
2017-03-21 11:26:07 +00:00
Denys Vuika 0afc6affb6 support for setting CSS classes in the designer (#1737)
- provides support for `className` field that Angular 1 designer allows
to define for Forms and Form Fields
2017-03-17 14:33:05 +00:00
Denys Vuika 3fee3b5002 improved uploading of files (#1730)
* improved uploading of files

- new core/UploadDirective to allow dropping files to any html element
- enhanced file dropping for DataTable rows (disabled by default)
- enhanced file dropping for DocumentList rows (disabled by default)
- upload drop area now handles file uploads for child elements (i.e.
rows in the document list)

* fix unit tests

* unit tests and code cleanup

* #1732, fix upload of folders
2017-03-16 16:28:18 +00:00
Denys Vuika f3de023ab3 extra DOM events for DataTable (#1723)
* extra DOM events for DataTable

- support for ‘row-click’ DOM event (bubbling)
- support for ‘row-dblclick’ DOM event (bubbling)
- DataRowEvent exposes ‘sender’ property to simplify access to
component from within handlers
- readme and test updates

* fix unit tests
2017-03-14 10:17:33 +00:00
Denys Vuika 55137917bd form component fixes (#1726)
- fix ‘readonly highlighting when input fields loaded with values
- Start Form raises base ‘FormLoaded’ event (including FormService
emits)
2017-03-14 10:14:14 +00:00
Denys Vuika 64565c44f4 migrate from PhantomJS to Chrome (#1716) 2017-03-13 11:25:47 +00:00
Denys Vuika 57557a991e support for column definitions in html (#1705)
* support for column definitions in html

- provides generic support for html-based column definitions for
datatable-like controls

* html column definitions for Task List component

* html column definitions for Document List component

* update code and documentation
2017-03-13 11:05:52 +00:00
Denys Vuika 5b5916bfb1 fix image paths for components (#1696)
* fix Login image paths

* fix TaskList image paths

* fix DocumentList image paths

* fix Search image paths
2017-03-13 10:42:18 +00:00
enzor a533bad6d9 devops-edit --pipeline=node/CanaryReleaseStageAndApprovePromote/Jenkinsfile 2017-03-12 12:45:41 +00:00
Mario Romano cf85840350 Dev denys 1704 hotfix (#1717)
* Update README.md

* #1173 fix doc documentlist

* Date widget: support for `display date format`

* unit tests update

* pin js-api version

* Fix Thumbnail preview (#1689)

* Fix Thumbnail preview

* Fix thumbnail unit test

* Remove the fix prexif

* Rollback the pin js api version

* Update package.json

* 1.2.1 tasklist,processlist,form
2017-03-10 18:46:22 +00:00
Denys Vuika c290c47229 Date widget: support for display date format (#1710)
* Date widget: support for `display date format`

* unit tests update

* pin js-api version

* Fix Thumbnail preview (#1689)

* Fix Thumbnail preview

* Fix thumbnail unit test

* Remove the fix prexif

* Rollback the pin js api version

* Update package.json

* 1.2.1 tasklist,processlist,form
2017-03-10 18:20:55 +00:00
Denys Vuika facd6e0458 DataTable docs and backwards compatibility (#1702)
* example: custom datatable row actions

* update docs, provide backwards compatibility
2017-03-10 09:50:02 +00:00
Maurizio Vitale 5e4e8c759c #11625 (#1703)
Fix ObjectDataRow
Tasklist
Processlist
2017-03-08 20:05:05 +00:00
Denys Vuika e45069be13 user-info component fixes (#1694)
* user-info fixes

- fix image paths to be relative rather than rooted (for user info,
refs #1606)
- fix full name rendering
- fix styling for ‘job title’

* fix unit tests
2017-03-08 12:04:27 +00:00
Maurizio Vitale a0b8781209 Fix Thumbnail preview (#1689)
* Fix Thumbnail preview

* Fix thumbnail unit test

* Remove the fix prexif
2017-03-06 16:50:28 +00:00
Mario Romano 122469c7fe #1512 fix text demo shell (#1695) 2017-03-06 15:36:18 +00:00
Mario Romano fdb8cb6758 #1638 fix Incorrect Error message 2017-03-06 15:09:38 +00:00
Denys Vuika 796d9b0e9d minor Login improvements (#1685)
- replace inline SVG with the md-icon component
- own validation/error style classes for theming purposes
2017-03-05 18:50:52 +00:00
Denys Vuika 9c07262657 upgrade to latest ng2-charts (#1686) 2017-03-04 17:30:22 +00:00
Denys Vuika 861393de60 more control over task details header (#1688)
- toggle task details header
- toggle visibility of involve/comments/checklist
- readme updates
2017-03-04 17:29:48 +00:00
Vito 4d8abee892 1454 - fixed spacing in forms (#1687) 2017-03-03 15:32:37 +00:00
Denys Vuika 2e44550d7f support for toggling custom context menu (#1683)
* support for toggling custom context menu

* fix unit tests
2017-03-03 09:25:08 +00:00
Denys Vuika 4ca18bc8f9 cancellable events for DataTable and DocumentList (#1682)
* cancellable events for DataTable and DocumentList

* more typed events and code fixes

* code fixes
2017-03-02 14:49:55 +00:00
Denys Vuika 3e342863fd Update tsconfig.json for demo shell (#1684)
fixes issues with building for Windows
2017-03-02 14:48:58 +00:00
Denys Vuika fd6433027a Update README.md 2017-02-28 13:56:48 +00:00
Mario Romano c13c3aaeeb Merge pull request #1672 from Alfresco/development
1.2.0
2017-02-27 15:35:21 +00:00
Mario Romano cb19ff911c 1.2.0 (#1665)
* bump to 1.2.0

* Update package.json

* Update package.json

* update demo 1.2.0
2017-02-27 12:02:01 +00:00
Mario Romano cbc4518e9c fix style rebranding 2017-02-27 10:46:58 +00:00
Eugenio Romano cd17ac1e6f fix clean placeholder tag actions #1506 (#1662) 2017-02-27 09:52:09 +00:00
Denys Vuika 08b024938b fix travis calls 2017-02-27 09:33:40 +00:00
Denys Vuika 036cce5210 make link script executable 2017-02-27 09:20:58 +00:00
Eugenio Romano 571b7f09c3 refactoring build script #1533 (#1664) 2017-02-27 09:15:52 +00:00
Eugenio Romano 45a37d61f5 copy entire public folder (#1663)
* copy entire public folder

* misspelling in readme
2017-02-27 09:08:28 +00:00
Mario Romano 85adf3c2d9 fix webpack translate dev config 2017-02-24 18:26:59 +00:00
Denys Vuika 618d9e6e0e fix display-value rendering for checkboxes (#1661) 2017-02-24 18:04:34 +00:00
Eugenio Romano 619792e004 add public files js css and images copied in the demo shell dist (#1649) 2017-02-24 14:23:29 +00:00
Denys Vuika 14c7f0409b sequential loading order (#1659) 2017-02-24 13:49:16 +00:00
Denys Vuika 3375a63680 fix compilation errors with latest TS/TSLint (#1651)
latest TS/TSLint libs detect couple of problems related to private apis
used earlier; changing to public in order to fix compilation
2017-02-23 15:46:58 +00:00
Maurizio Vitale c35f948546 #1512 Rebranding fixes (#1650) 2017-02-23 15:44:29 +00:00
Denys Vuika 4479c23de0 Update README.md 2017-02-23 11:51:23 +00:00
Eugenio Romano 20b3835f85 tag validation #1592 (#1646)
add translation
fix placeholder #1506
2017-02-22 19:11:22 +00:00
Eugenio Romano 2a257f7b62 trim username onBlur #1575 (#1644) 2017-02-21 18:25:17 +00:00
Eugenio Romano 866c3f91a1 rendering service header (#1640) 2017-02-20 14:23:28 +00:00
Eugenio Romano 12abac0339 add tslint in demo shell #1641 (#1642) 2017-02-20 14:23:01 +00:00
Eugenio Romano 59cbbcbe4d Dev eromano external viewer (#1636)
* add extensibility point to add a custom viewer

* documentation and tests

* add example in document list
2017-02-16 09:50:12 +00:00
Maurizio Vitale e3ce65880f Analytics - Add a property to hide the analytics parameters component (#1635)
* Add a property to hide the analytics parameters component
Improve the save/delete/export icons

* Add documentations
2017-02-15 14:45:05 +00:00
Mario Romano 7ee97efdca #1173 fix doc documentlist 2017-02-15 13:42:11 +00:00
Mario Romano 427dc0b7fd #1173 fix doc documentlist 2017-02-15 13:41:30 +00:00
Mario Romano f9d7889470 #1539 fix doc nodejs 2017-02-15 13:37:39 +00:00
Mario Romano b614d2d5a5 #1540 fix systemjs links 2017-02-15 13:32:41 +00:00
Mario Romano a3d3fdc0b4 Delete WINDOWS.md 2017-02-15 13:27:31 +00:00
Maurizio Vitale c1493315bf #1631 Should create an empty form when the process definitions are empty (#1633) 2017-02-15 03:42:48 -08:00
Maurizio Vitale e3cbff0e35 Viewer - Accessibility alternative text (#1632)
* #1534 No alternative text for close

* #1536 No alternative text for download

* #1537 no alternative text for options
2017-02-14 16:21:08 +00:00
Maurizio Vitale 69699c337b Fix getProcesses service call (#1629)
* Fix getprocesses service call

* Fix unit test wrong url
2017-02-14 16:18:05 +00:00
Maurizio Vitale 9b2740ff64 ADF Rebranding (#1628)
* #1512 Rebranding

* Fix peer review
2017-02-13 17:20:00 +00:00
Denys Vuika 07bad77547 i18n fixes (#1614)
* i18n fixes

- fix issue with default (fallback) language set to browser language
- fix issue with fallback language loading when browser language set to
non-English locale

* code and UI fixes

- move document list i18n strings into own scope
- replace MDL menu with @angular/material menu (fixes issue with menu
items translation, not supported by MDL)
- minor improvements

* fix unit tests

* improve i18n docs and code

- provide basic documentation for Translation service
- remove custom Login component localisation in favour of documentation
sample
- simplified i18n setup for demo shell (single path for dev/prod env)

* remove unnecessary comments
2017-02-10 11:22:25 +00:00
Ole Hejlskov 8edd2a2d23 Fix spelling in ISSUE_TEMPLATE and PULL_REQUEST_TEMPLATE (#1607) 2017-02-08 10:58:12 +00:00
Eugenio Romano b8c500682c Demo shell build problem with Node 5 #1602 (#1603) 2017-02-07 15:34:08 +00:00
Vito 8bb00fdd00 #1184 - Added option to reports : Save, Delete and Export to CSV (#1600)
* #1184 - adding save export and delete to report

* #1184 - added save button for report

* #1184 - improved export file

* 1184 - fix condition for save and export button

* #1184 - added custom validator for dropdown to avoid wrong selection

* #1184 -start fixing form model

* #1184 - added dynamic build for formBuilder

* #1184 - rebased to development

* #1184 - little test refactoring

* #1184 - added test and some fix

* #1184 - added new events

* #1184 - removed old changes to api service
2017-02-07 15:21:03 +00:00
Eugenio Romano 8cd2dfa9c1 remove double build npm-build-bundle-all.sh (#1601) 2017-02-07 11:04:20 +00:00
Maurizio Vitale d3d67c5934 Create a new activiti content component that provide the file preview (#1516)
* #1236 Add activiti content component

* fix wrong name

* Fix unit test import

* Rollback api changes

* #1236 fix preview using blob

* Fix after review
2017-02-06 19:40:49 +00:00
Maksim 112d7a2d0e Dev kodermax translate (#1580)
* add russian translate for alfresco-login
* add russian translate for documentlist
* add russian translate for alfresco-upload
2017-02-06 12:50:58 +00:00
Denys Vuika 7c54090dea ability to change position of the dropdown menu (left|right) (#1590)
* ability to change position of the dropdown menu (left|right)

* unit tests
2017-02-06 09:55:12 +00:00
Eugenio Romano 5c5911beef Dev eromano tag example (#1596)
* Update README.md

* Readme update with tag example integration document list

* add tag component in the document list demo
2017-02-06 09:54:35 +00:00
Maurizio Vitale 30b4db8161 Analytics - Improve look and feel and user experience (#1585)
* #1583 Improve look and feel and user experience

* #1583
Add layoutType property to report list
Improve unit test
Improve docs

* #1583 Review changes
2017-02-03 16:12:17 +00:00
Mario Romano 6431d7c04f Update README.md 2017-02-03 15:55:54 +00:00
John Sotiropoulos aee2d194b3 Update README.md 2017-02-02 23:33:59 +00:00
Mario Romano c18165caf1 #1576 fix npm build 2017-01-30 19:06:00 +00:00
Denys Vuika a743ad95cb Merge pull request #1573 from Alfresco/development
1.1.0
2017-01-30 16:50:08 +00:00
Mario Romano 3a08a217b8 Merge branch 'master' into development 2017-01-30 12:59:51 +00:00
Mario Romano ffb959d331 1.1.0 (#1562) 2017-01-30 12:57:27 +00:00
Will Abson 5519f9fb00 Fix typos in component properties (#1560)
* Fix typo `fallbackThubnail` -> `fallbackThumbnail`

* Fix typo `showUdoNotificationBar` -> `showNotificationBar`

Update upload mis-spelled properties to 'showNotificationBar' since
showUndoNotificationBar is already a method on the drag area component

Refs #1559

* Fix test cases
2017-01-28 14:52:23 +00:00
Will Abson 09b98e7071 Allow button label to be added via staticTitle input (#1566)
* Allow button label to be added via staticTitle input

Refs #1551

* Minor fix to JSDoc
2017-01-28 14:52:12 +00:00
Mario Romano 3fad45394a #1564 remove unused code (#1565) 2017-01-28 14:51:57 +00:00
Mario Romano e38db7a484 Update ISSUE_TEMPLATE.md 2017-01-28 13:59:14 +00:00
Eugenio Romano 662effea6c add test auth-guard (#1561) 2017-01-28 13:17:50 +00:00
Mario Romano 251f05e421 #1212 add cutom header and footer option, plus custom footer links (#1553) 2017-01-27 10:34:47 -08:00
Will Abson 0ddd245f83 Fix build errors when using latest JS-API (#1555)
Refs #1554
2017-01-27 16:20:59 +00:00
Mario Romano 9d77346aab fix type issue 2017-01-27 15:55:55 +00:00
Maurizio Vitale 537be1e058 #1175 Separate analytics generator and hide analytics parameters (#1546)
* #1175 Separate analytics generator and hide analytics parameters

* Remove unused code
fix unit test

* Rollback mandatory field (appId)

* fix the onChanges problem

* #1175 - rebased branch
2017-01-27 14:35:28 +00:00
Mario Romano b05247dade #1014 use document list to display search results (#1548)
* #1014 use document list to diplay search results

* #1014 refactor pagination

* #1014 documentation and scripts update

* fix random erros on tests executrion

* #1014 fix travis scripts and raise timeout jasmine

* #1014 fix appveyor script

* #1014 type nodeId
2017-01-27 12:22:25 +00:00
Denys Vuika 9e00b1d4f1 documentation updates (#1549)
* documentation updates

refs #1357
refs #400

* Update README.md
2017-01-27 09:50:35 +00:00
Denys Vuika 63a7585922 fix 'change detection crash' when using router multiple times (#1550) 2017-01-26 22:04:27 +00:00
Denys Vuika ab73cc66ee fix special chars in readme 2017-01-25 10:59:14 +00:00
Denys Vuika bd485c730f basic form events hooks and readme updates (#1528)
* basic form events hooks

FormService now exposes the following events:

- formLoaded (formRendered alternative)
- formFieldValueChanged
- taskCompleted
- taskCompletedError
- taskSaved
- taskSavedError

* readme updates
2017-01-25 10:44:41 +00:00
Vito dd753ba890 #1495 - Added no process definition message on start process (#1532) 2017-01-24 18:48:47 +00:00
Mario Romano 1c21875607 #537 snackbar notification system (#1527)
* #537 snackbar notification system

* #537 add test dependencies

* #537 add export material module

* #537 fix demo project
2017-01-24 17:09:13 +00:00
Maurizio Vitale d8c433c055 Filter start form outcomes (#1529)
* #1467 customs outcome

* #1467 Filter the start form outcomes
2017-01-24 14:08:52 +00:00
Maurizio Vitale 89bcdbef24 Fix dynamic value inside the min length error message (#1523) 2017-01-24 10:20:20 +00:00
Will Abson e846a15aa8 Display name and date for process instances if no name present (#1515)
* Display name and date for process instances if no name present

Refs #1461

* Re-work tests for processlist and process details to reflect changes

Refs #1461
2017-01-24 00:56:23 +00:00
Will Abson 82603bbfef Display process instance details after Start Process (#1525)
Refs #1332
2017-01-24 00:53:25 +00:00
Vito 32558da0a7 #1454 - Align element in form (#1524) 2017-01-24 00:51:25 +00:00
Denys Vuika eacdfd7f6a Support for column (cell) templates (#1513)
support for column (cell) templates readme updates and test fixes
2017-01-23 10:28:57 +00:00
Denys Vuika bf5482bf7b documentation updates for DocumentList 2017-01-20 14:06:35 +00:00
Denys Vuika be578c607b readme updates 2017-01-20 11:21:28 +00:00
Denys Vuika e3a94fc2d2 improved focus outline for datatable rows (#1503) 2017-01-19 15:29:01 +00:00
Vito dcee6abc35 #1484 - clean search result when nothing is typed in the search input (#1502) 2017-01-19 11:52:06 +00:00
Vito 4653b9ad23 #1485 - add clean input search on close (#1498) 2017-01-18 14:56:11 +00:00
Eugenio Romano a0ccd6c8b3 Update alfresco tag with the material chips #1499 (#1500)
* Update alfresco tag with the material chips #1499

* remove unused css
2017-01-18 14:42:28 +00:00
Maurizio Vitale 9c0604a6c2 #1429 fix unsupported files margin (#1497) 2017-01-18 13:20:34 +00:00
Maurizio Vitale 4b3c77799e Set default select option (#1496)
* #1479 default select option

* #1479 Fix task dropdown default value
2017-01-18 02:43:31 -08:00
Mario Romano 7ef954139c #1443 improve license error - login component (#1494) 2017-01-17 16:19:25 +00:00
Vito 0fd45a2f88 #1431 - fix tasklist on click process task detail (#1492)
* #1431 - fix tasklist on click process task detail

* Update form-viewer.component.html

#1431 - removed wrong change on form-viewer
2017-01-17 15:00:37 +00:00
Mario Romano 14d399968c #1406 improve CSRF and CORS errors reporting (#1488) 2017-01-17 05:44:39 -08:00
Maurizio Vitale 10a76cc0f6 Login - change required username characters (#1487)
* #1480 Change required username characters

* Fix unit test error
2017-01-17 13:38:51 +00:00
Maurizio Vitale 399b716d82 #1467 customs outcome (#1483) 2017-01-17 13:37:30 +00:00
Will Abson c6126b6be1 Hide the process list when starting and after started new process (#1470)
- Ensures that the newly-started process is *always* shown
- No need to reload the list any more as not shown
- Filter component shows no selected filter when starting process
- User can exit Start Process by clicking a filter again

Refs #1332, #1307
2017-01-16 03:53:18 -08:00
Maurizio Vitale 4b017bd062 #1439 Fix version inside demoshell (#1475) 2017-01-16 11:50:38 +00:00
Maurizio Vitale aba4c8ef3e Wrong grammar with single file uploaded (#1468)
#1449 Wrong grammar with single file upload
2017-01-16 11:50:23 +00:00
Maurizio Vitale f5d2269c2e #1112 Use the mdl-chip (#1466)
* #1112 Use the mdl-chip

* fix unit test
2017-01-16 11:50:14 +00:00
Mario Romano 9655e51943 #1471 rollback className change (#1472) 2017-01-16 11:49:43 +00:00
Denys Vuika 473241f792 improved network settings (#1477) 2017-01-16 11:03:59 +00:00
Vito fdb232cb40 #1455 - added new check to show-hide validation icon next form title (#1463) 2017-01-13 17:56:52 +00:00
Will Abson 0afcc29e37 Load process definitions for Tasks app (#1459)
Refs #1416
2017-01-13 16:57:35 +00:00
Will Abson 6658630eea Process filters should use own model class not task filter (#1458)
Refs #1422
2017-01-13 16:56:35 +00:00
Vito 0a725f00e2 #1441 - clean checklist input after submit or cancel action (#1460) 2017-01-13 14:37:48 +00:00
Mario Romano 6ee34a2e49 #1387 fix rename document-list file (#1462) 2017-01-13 12:54:04 +00:00
Vito f3c690e0d7 #1447 - fixed wording for home page (#1457) 2017-01-13 12:48:22 +00:00
Vito 98523a8fc1 #1431 - reload tasklist when user click on task (#1456) 2017-01-13 12:47:54 +00:00
Vito fcdc628d35 #1432 - Added new system outcome : Start Process (#1453)
* #1432 - Added system outcome for start process

* 1432 - improved condition for system outcome check

* #1432 - fix test for start process system outcome
2017-01-13 12:46:40 +00:00
Denys Vuika 0fa87bb17d selected row highlight (#1448)
* showing selected row

Support for showing selected row for the components:

- DataTable
- DocumentList
- Activiti TaskList
- Activiti ProcessList

fixes #170

* unit test fixes
2017-01-13 12:45:37 +00:00
Maurizio Vitale 01ab948666 #1440 fix version library (#1450) 2017-01-13 01:38:42 -08:00
Denys Vuika 5be659779d Update README.md 2017-01-12 14:41:19 +00:00
Denys Vuika 0ee5c9846a fix error handling and "this" context (#1445)
* fix error handling and "this" context

* fix typo
2017-01-12 06:12:52 -08:00
Eugenio Romano dd6baed74b Merge pull request #1444 from Alfresco/dev-denys-1410
hide titles for start forms
2017-01-12 13:48:58 +00:00
Denys Vuika 8ac8a74ea2 hide titles for start forms
fixes #1410
2017-01-12 12:10:59 +00:00
Eugenio Romano 0df246f7ab Wording for unsupported file could be better #1428 (#1430)
* Wording for unsupported file could be better #1428

* change text
2017-01-11 18:10:29 +00:00
Eugenio Romano 6b5a73cd76 #1297 Loading Bar doesn't appear anymore (#1437) 2017-01-11 10:00:04 -08:00
Maurizio Vitale 82615c9110 #1111 Upgrade MDL 1.3 (#1436) 2017-01-11 07:30:36 -08:00
Vito 9e0536bca9 #1259 - checklist task does not appear on tasklist after creation (#1435)
* #1259 - refresh tasklist when checklist is added

* #1259 - updated readme to reflect changes

* #1259 - fixed wrong rebase import
2017-01-11 14:32:17 +00:00
Denys Vuika 6f24ebd6d4 readme updates 2017-01-11 13:15:26 +00:00
Mario Romano 9fb085eb3a #1387 fix img for systemjs and refactoring apiservice (#1421) 2017-01-10 16:59:08 +00:00
Will Abson c5dca890b7 Better support for long file names in viewer (#1424)
- Display ellipsis
- Use full width of the title div

Refs #1325
2017-01-10 07:27:56 -08:00
Denys Vuika a97c2f4336 quick fix for auth error reporting 2017-01-10 15:18:03 +00:00
Denys Vuika dc28d5b679 #1400 component naming convention fixes (#1418) 2017-01-09 18:57:58 +00:00
Denys Vuika 26fb2374d2 #1411 support 'form refresh' for start forms (#1417) 2017-01-09 15:22:52 +00:00
Denys Vuika 885e0e85aa process details improvements (#1408)
* process details improvements

- new: redirect to task instead of opening a dialog (Activiti parity)
- fixed: task headers for nameless tasks
- fixed: cursor style for task list items
- new: stub for ng-1 directive api (Activiti stencils)
- code cleanup

* error handling fixes
2017-01-09 12:57:03 +00:00
Mario Romano 35d2109f17 Merge pull request #1401 from Alfresco/dev-denys-1152
LogService implementation
2017-01-06 14:39:55 +00:00
Mario Romano 3135c7c75c Merge pull request #1404 from Alfresco/dev-denys-1403
Add missing polyfill for Firefox (date picker)
2017-01-06 14:21:51 +00:00
Denys Vuika c2cb780dd4 Update index.html 2017-01-06 11:43:33 +00:00
Will Abson 8c0048ad7f Prevent live search from being run too soon (#1402)
Refs #1356
2017-01-06 11:00:14 +00:00
Denys Vuika d2cdaff26d fix code after merge 2017-01-06 10:10:54 +00:00
Denys Vuika 1c3e7b6843 Merge branch 'development' into dev-denys-1152 2017-01-06 10:03:40 +00:00
Mario Romano 779d456c63 Merge pull request #1396 from Alfresco/dev-wabson-1307
Fix sorting of processlist list items
2017-01-06 09:57:08 +00:00
Denys Vuika df97a2e24c fix unit tests 2017-01-06 09:55:07 +00:00
Denys Vuika e640cac74f fix AlfrescoTranslateService usage 2017-01-05 21:35:15 +00:00
Denys Vuika d42f41ec00 Migrate from window.console to LogService 2017-01-05 21:06:30 +00:00
Denys Vuika 2d98a04f87 LogService implementation 2017-01-05 16:14:33 +00:00
Vito d972393b72 #1259 - fix assignee for checklist task (#1395)
* #1259 - fix assignee for checklist task

* #1259 - added checklist to tasklist readme
2017-01-05 14:53:39 +00:00
Will Abson 086c789d4d Fix sorting of processlist to match that specified by filter
Refs #1307
2017-01-05 12:04:03 +00:00
Will Abson 560d1bcd7f Fix Start Process button for processes without a start form (#1391)
Refs #1390
2017-01-05 09:54:54 +00:00
Will Abson 099c32c667 Use correct process-related typings for processlist filters
Refs #1307
2017-01-05 09:28:11 +00:00
Mario Romano f89fe8e50a #1393 remove old redirect code (#1394) 2017-01-04 22:29:01 +00:00
Will Abson 94f11a1aae Set default sorting of processes based on started date
Refs #1307
2017-01-04 19:49:24 +00:00
Mario Romano a35c2f7c04 #1385 fix build:w task (#1386) 2017-01-04 19:48:53 +00:00
Mario Romano 9ba2033dd0 Merge pull request #1383 from Alfresco/dev-mvitale-1370
Remove use of deprecated Services
2017-01-04 19:42:41 +00:00
Mario Romano 83fa409aeb improve timeout test for travis 2017-01-04 19:41:58 +00:00
mauriziovitale84 896c57fa53 #1370 Removed deprecated AlfrescoAuthenticationService 2017-01-04 17:28:29 +00:00
mauriziovitale84 58af422d62 #1370 Remove use of AlfrescoSettingsService 2017-01-04 17:27:41 +00:00
Mario Romano 61b94488d8 Merge pull request #1376 from Alfresco/dev-denys-1366
Node ID-based navigation for document list
2017-01-04 17:20:42 +00:00
Mario Romano 6e8bb1d25f Merge pull request #1368 from Alfresco/dev-denys-1333
hide save button from start form
2017-01-04 17:20:28 +00:00
Mario Romano 226077af83 Merge pull request #1375 from Alfresco/dev-valbano-1303
#1303 - fix typeahead show for completed tasks
2017-01-04 17:20:19 +00:00
Maurizio Vitale 05ae1185f2 Detailed Task Statistics - Analytics (#1374)
* #1224 Show the details table

* Fix unit test
2017-01-04 08:15:59 -08:00
Denys Vuika f00decabc5 readme updates, fix license checker 2017-01-04 16:02:14 +00:00
Mario Romano 8a1d372318 #1378 fix test config for webpack (#1384) 2017-01-04 14:22:51 +00:00
Denys Vuika fefe4b6963 update code as per code review
- upgrade demo project
- extend readme
- remove commented out unit tests
2017-01-04 14:20:15 +00:00
Mario Romano 84e32423c5 #1372 appveyor build only master,development and a built test branch in case needed (#1381) 2017-01-04 12:38:18 +00:00
Maurizio Vitale 4c522fabb8 Show long comment (#1354)
* #1324 long comment

* #1324 use different css style

* #1324 Fix long words without space
2017-01-04 10:57:39 +00:00
Vito ccd8f64071 fix module creation for login component in forRoot (#1377) 2017-01-04 09:32:11 +00:00
Denys Vuika 7ecf9f2fc3 readme update 2017-01-03 21:20:16 +00:00
Denys Vuika 71877aa8d0 upgrade 'create folder' action 2017-01-03 21:13:17 +00:00
Denys Vuika 44906157a0 update unit tests 2017-01-03 20:35:26 +00:00
Denys Vuika 82e0a2016d cleanup demo page 2017-01-03 19:47:04 +00:00
Vito Albano dc0187aeab #1303 - fix typeahead show for completed tasks 2017-01-03 17:50:56 +00:00
Denys Vuika 512f6504f2 add missing 'forRoot' implementatitions (#1369) 2017-01-03 09:21:23 -08:00
Maurizio Vitale 4ea3187e7a #1346 fix zero values (#1353) 2017-01-03 09:18:48 -08:00
Denys Vuika 40b9baaa64 id-based navigation (initial implementation) 2017-01-03 16:44:13 +00:00
Denys Vuika 082c997c0d hide save button from start form 2017-01-03 10:55:59 +00:00
Denys Vuika facafbd55c Single naming convention for core services (#1363)
* remove temporary file from repo

* fix: alfresco-api.service

* new: auth.service.ts

- new auth.service.ts implementation
- deprecation warning for AlfrescoAuthenticationService
- fix ‘clean-build’ typo
- extra vscode settings for ‘.d.ts’ files

* use AuthService internally

* new: content.service.ts

- deprecation warning for AlfrescoContentService
- use new ContentService internally

* new: settings.service.ts

- new SettingsService
- deprecation warning for AlfrescoSettingsService
- using new SettingsService internally

* new: translate.service and translate-loader.service

- custom TranslateLoader becomes AlfrescoTranslateLoader
- custom TranslateService becomes AlfrescoTranslateService
- deprecation notices for old service and loader implementations

* fix: document list

* fix: search

* fix: tag

also fixes #1364

* fix: activiti form

* fix: activiti tasklist, improve unit tests

* fix: activiti processlist, unit tests improvements

* fix: diagram component

* fix: analytics component

* fix: upload component

- fix numerous issues with unit tests (hidden by ‘any’ type)
- test improvements

* fix: webscript

* fix: userinfo unit tests

* code fixes

* fix 'beforeAll' issue

* tasklist unit testing improvements

* fix: form unit tests

* fix: unit tests
2017-01-03 10:46:27 +00:00
Maurizio Vitale 92fc7d1df3 #1345 fix material design (#1352) 2016-12-22 10:44:41 +00:00
Mario Romano f5824cb0eb improve travis build (#1340)
* short time travis build

* optimize build

* optimize build

* optimize build
2016-12-22 09:55:27 +00:00
Eugenio Romano bd0fb46639 add dependency in package.json in order to build in node 4 (#1347) 2016-12-22 09:54:58 +00:00
Mario Romano 3915e90c36 Update README.md 2016-12-21 13:09:25 +00:00
Mario Romano 001466ffe2 Update README.md 2016-12-21 13:09:08 +00:00
Mario Romano 51eca7d24c Dev mromano appveyor (#1351)
* Update .travis.yml

* Update .travis.yml

* Update appveyor.yml

* fix windows

* fix windows

* fix windows

* fix windows

* fix windows

* fix windows

* fix windows

* fix windows

* fix windows

* fix windows

* fix windows

* fix windows

* fix windows
2016-12-20 21:16:03 +00:00
Mario Romano da7f3ba564 fix window build (#1350)
* fix windows

* fix windows

* fix windows

* fix windows

* fix windows

* fix windows

* fix windows

* fix windows

* fix windows

* fix windows

* fix windows

* fix windows

* fix windows
2016-12-20 21:14:16 +00:00
Mario Romano f859d611f6 Update appveyor.yml 2016-12-20 18:45:21 +00:00
Mario Romano 16846d507f Update appveyor.yml 2016-12-20 18:44:56 +00:00
Mario Romano e37711a47c Update .travis.yml 2016-12-20 18:33:44 +00:00
Mario Romano 43589f3668 Update .travis.yml 2016-12-20 18:33:23 +00:00
Mario Romano 25c74c283c Update .travis.yml 2016-12-20 18:25:13 +00:00
Eugenio Romano 74142a1ecb Merge pull request #1341 from Alfresco/development
1.0.0
2016-12-20 17:05:27 +00:00
Mario Romano 82fbfd27d7 update dependencies demo shell 2016-12-20 16:14:25 +00:00
Mario Romano de0ac1e805 1.0.0 (#1337) 2016-12-20 14:07:01 +00:00
Eugenio Romano ccc477619c generate JS sourcemap during the UMD build (#1339) 2016-12-20 13:58:49 +00:00
Maurizio Vitale 94781c370f #1331 Add date required validation (#1338) 2016-12-20 11:46:24 +00:00
Eugenio Romano a6e2c1532d fix angular version dependencies 2016-12-20 09:45:30 +00:00
Mario Romano 11894a9769 Dev mromano improveprocess (#1334)
* fix overload activiti

* fix reload tasklist

* fix process variables

* fix default filter

* improve process list

* fix tests process

* fix tests

* Fix test for form

* fix tests

* fix tests

* #fix activiti bug

* #fix activiti bug (reverted from commit c966395ed1087e1dedaf0af0923a89ba99d6ab9f)

* fix tests

* #fix header test bug

* fix tests

* fix process

* fix tests
2016-12-20 09:37:56 +00:00
Mario Romano 636fa770b4 Merge pull request #1330 from Alfresco/dev-mvitale-1308
Start process - custom outcome
2016-12-19 21:16:18 +00:00
Vito Albano 21d716c8a9 #1308 - fix test for PR 2016-12-19 19:16:59 +00:00
Mario Romano 9abd6cf2a0 Merge pull request #1329 from Alfresco/dev-eromano-minorFix
add header missing app.component and minor clean
2016-12-19 18:50:02 +00:00
Eugenio Romano d3b2108ac2 add header missing app.component and minor clean 2016-12-19 17:38:06 +00:00
mauriziovitale84 8e707e7d9b #fix custom outcome 2016-12-19 17:36:30 +00:00
Mario Romano ea7df8ac22 #1327 do not call server when dropdown are not rest (#1328) 2016-12-19 16:39:05 +00:00
Mario Romano 72ae760b85 improve style demo shell (#1326) 2016-12-19 16:13:07 +00:00
Mario Romano b9c7b60fb6 #1301 fix visibility process variables 2016-12-16 19:26:06 +00:00
Mario Romano cd9a333a94 fix tests async 2016-12-16 18:39:50 +00:00
Mario Romano 167e82b846 Merge pull request #1323 from Alfresco/dev-wabson-1248
Fix uploads from folders opened from search results
2016-12-16 18:01:48 +00:00
Mario Romano 5a2dbbcb67 Update ALFRESCOCORS.md 2016-12-16 18:01:30 +00:00
Mario Romano 55c21fef97 Update PREREQUISITES.md 2016-12-16 17:54:03 +00:00
Mario Romano 4aa5bdff9a Update PREREQUISITES.md 2016-12-16 17:53:48 +00:00
Will Abson fb851271e9 Fix uploads from folders opened from search results
Refs #1248
2016-12-16 17:52:57 +00:00
Mario Romano ff48caf745 Create ALFRESCOCORS.md 2016-12-16 17:52:01 +00:00
Mario Romano c712cc2c82 Merge pull request #1322 from Alfresco/dev-valbano-1301
#1301 - Improve the process variables evaluation
2016-12-16 17:42:10 +00:00
Mario Romano 52e5141612 Merge pull request #1321 from Alfresco/dev-mromano-1319
#1319 regressed external content - transclusion
2016-12-16 17:41:59 +00:00
Mario Romano baed571a4c Merge pull request #1316 from Alfresco/dev-wabson-1315
Fix file viewer from search results the second time
2016-12-16 17:41:52 +00:00
Mario Romano dd73c8d40a Merge pull request #1310 from Alfresco/dev-denys-1304
fix dialog polyfill usage
2016-12-16 17:41:46 +00:00
Mario Romano d675de3d95 Merge pull request #1302 from Alfresco/dev-mromano-1255
#1255 remove onInit, we already add comments with onChange
2016-12-16 17:41:40 +00:00
Mario Romano 4384c291dd #1319 regressed external content - transclusion 2016-12-16 17:34:20 +00:00
Vito Albano 82ab3fc7ca #1301 - fix test for visibility service 2016-12-16 17:34:15 +00:00
Mario Romano 1e4ce68963 #1233 attach form to a task (#1313) 2016-12-16 17:19:39 +00:00
Mario Romano 128d3af54a Merge pull request #1312 from Alfresco/dev-mvitale-1305
Claim a task
2016-12-16 16:37:12 +00:00
Denys Vuika 59582755f4 fixes for IE (#1318) 2016-12-16 16:26:42 +00:00
Vito Albano ad1f3e8102 #1301 - fix test for widgetvisibility service 2016-12-16 16:21:08 +00:00
Vito Albano e92abf99d9 #1301 - fixed test on activiti form 2016-12-16 16:21:08 +00:00
Vito Albano 12c4de2c1e #1031 - Check the value of old forms in process variables 2016-12-16 16:21:08 +00:00
Mario Romano c6c5a39a85 Merge pull request #1311 from Alfresco/dev-wabson-1294
Fix search control after logging out and back in
2016-12-16 16:17:14 +00:00
Will Abson af715c3dd1 Fix file viewer from search results the second time
- Currently it is necessary to destroy the viewer between views

Refs #1315
2016-12-16 15:52:44 +00:00
Mario Romano 1579ab0f46 Merge pull request #1314 from Alfresco/dev-eromano-1299
1299 Internet Explorer Header bar wrong menu button positioning
2016-12-16 15:29:14 +00:00
Eugenio Romano 1fa708ba02 1299 Internet Explorer Header bar wrong menu button positioning 2016-12-16 15:27:43 +00:00
Mario Romano f1c6e3f271 #1255 remove onInit, we already add comments with onChange 2016-12-16 15:02:37 +00:00
Denys Vuika 3297496b2b Merge branch 'development' into dev-denys-1304 2016-12-16 14:49:54 +00:00
Mario Romano 43d3a769a8 Merge pull request #1306 from Alfresco/dev-denys--webpack-performance
exclude various folders from live reload
2016-12-16 14:48:00 +00:00
Mario Romano b31d60066d Merge pull request #1309 from Alfresco/dev-eromano-ie
ie-polyfills fix
2016-12-16 14:47:15 +00:00
mauriziovitale84 778be149a5 #1305 Claim a task 2016-12-16 14:40:56 +00:00
Will Abson 8058b583dc Do not disable FAYT results after previewing file
Refs #1294
2016-12-16 14:34:02 +00:00
Will Abson 5c2145dcf8 Ensure MDL search control input gets activated
Refs #1294
2016-12-16 14:33:05 +00:00
Will Abson b60ad98b34 Prevent FAYT results from re-appearing after login
Refs #1294
2016-12-16 14:32:04 +00:00
Denys Vuika a511c0fd69 fix dialog polyfill usage 2016-12-16 14:25:06 +00:00
Eugenio Romano 1b13e6b4de ie-polyfills fix 2016-12-16 14:19:23 +00:00
Denys Vuika 8dd6dd38d5 remove duplicate entries in package.json 2016-12-16 13:27:58 +00:00
Denys Vuika 8130c29db9 exclude various folders from live reload 2016-12-16 12:59:51 +00:00
Denys Vuika 12b361acc8 fix webpack config formatting 2016-12-16 12:18:32 +00:00
Vito 882b19930e Merge pull request #1295 from Alfresco/dev-mromano-1251
#1251 #1266 fix form visibility and performance
2016-12-16 03:18:24 -08:00
Mario Romano 0760f1e2ad #1251 #1266 fix form visibility and performance 2016-12-16 10:43:41 +00:00
Mario Romano 2bed309023 Merge pull request #1291 from Alfresco/dev-wabson-1287
Fix navigation to example folders
2016-12-15 21:30:38 +00:00
Mario Romano 45b75cd341 Merge pull request #1290 from Alfresco/dev-eromano-1240
Folder search, after clicking on folder in list of suggestions,…
2016-12-15 21:29:58 +00:00
Mario Romano 381675b5ef Merge pull request #1289 from Alfresco/dev-wabson-1269
Ensure MDL upgradeElement() gets called on process name text input
2016-12-15 21:29:31 +00:00
Mario Romano d50845cf4d Merge pull request #1288 from Alfresco/dev-mvitale-1276
Dynamic diagram size
2016-12-15 19:05:24 +00:00
Vito f80a92d11d Merge pull request #1286 from Alfresco/dev-eromano-1281
Cannot login after logging out
2016-12-15 10:22:22 -08:00
Will Abson ea84396c29 Fix navigation to example folders
Refs #1287
2016-12-15 17:05:27 +00:00
Mario Romano d9a4e398dd Merge pull request #1285 from Alfresco/dev-mvitale-1174-focus
Rename report focus
2016-12-15 17:02:36 +00:00
Eugenio Romano cb714bf260 #1240 Folder search, after clicking on folder in list of suggestions, suggestions do not disappear 2016-12-15 16:59:42 +00:00
mauriziovitale84 eb28993fed #1276 dynamic diagram size 2016-12-15 16:37:34 +00:00
Will Abson 037acd9025 Ensure MDL upgradeElement() gets called on process name text input
Refs #1269
2016-12-15 16:18:21 +00:00
Mario Romano d94a31e51e Merge pull request #1278 from Alfresco/dev-valbano-1072
#1072 - reset user details when the user is not logged in
2016-12-15 15:55:09 +00:00
Eugenio Romano 03f805a804 #1281 Cannot login after logging out 2016-12-15 15:55:00 +00:00
mauriziovitale84 1e80980463 #fix focus 2016-12-15 15:45:47 +00:00
Mario Romano 48fa09c56e Merge pull request #1277 from Alfresco/dev-eromano-1265
About page webpack compatible
2016-12-15 15:33:13 +00:00
Vito Albano 5ee86c2cdb #1072 - reset user details when the user is not logged in 2016-12-15 11:53:23 +00:00
Eugenio Romano 5b1a942025 About page not working #1265 2016-12-15 11:50:01 +00:00
Mario Romano ce8b4206c8 Merge pull request #1230 from Alfresco/dev-eromano-bundle
create bundle for all components
2016-12-15 11:44:45 +00:00
Mario Romano e0e5ffb010 Merge branch 'development' into dev-eromano-bundle 2016-12-15 10:40:01 +00:00
Denys Vuika 25d95cf28d start dist command 2016-12-15 10:35:23 +00:00
Mario Romano 5baa124699 Merge pull request #1275 from Alfresco/dev-eromano-1272
Clean the login storage ticket info before to login
2016-12-15 01:08:52 +00:00
Mario Romano 04768f9798 #1026 fix bundles 2016-12-15 01:07:08 +00:00
Eugenio Romano b613f9d226 #1272 Clean the login storage ticket info before to login 2016-12-14 23:43:22 +00:00
Mario Romano c15faeee08 Merge pull request #1271 from Alfresco/dev-mvitale-1245
Create Folder - placeholder
2016-12-14 18:01:10 +00:00
mauriziovitale84 09b494da6f #1245 Use placeholder instead value 2016-12-14 17:27:03 +00:00
Mario Romano b4b008416c Merge pull request #1267 from Alfresco/dev-mvitale-1174
Report rename
2016-12-14 17:06:35 +00:00
mauriziovitale84 4f555ad777 #fix folder name 2016-12-14 16:47:38 +00:00
Eugenio Romano e133fd6408 create bundle for all components 2016-12-14 15:49:08 +00:00
Denys Vuika 394e5bec6c fix blocking issue with bpm controllers 2016-12-14 15:34:12 +00:00
mauriziovitale84 8bfa71bc48 #1174 Refresh the report list after edit report title 2016-12-14 15:14:37 +00:00
Mario Romano 94124c2537 Merge pull request #1261 from Alfresco/dev-wabson-1140
Check that the process has a start form before attempting to display it
2016-12-14 13:35:42 +00:00
Mario Romano dfc8a0814c Merge pull request #1262 from Alfresco/dev-wabson-1258
Add missing router dependency for processlist demo
2016-12-14 13:31:04 +00:00
Mario Romano 957be16bb7 Merge pull request #1256 from Alfresco/dev-mvitale-1219
Analytics default date range
2016-12-14 13:30:51 +00:00
Mario Romano 8388590e70 Merge pull request #1260 from Alfresco/dev-mvitale-1244
Create Folder Fix firefox style
2016-12-14 12:23:55 +00:00
Mario Romano e1a1d8a959 Merge pull request #1254 from Alfresco/dev-wabson-1253
Remove start process dialog
2016-12-14 12:23:40 +00:00
Will Abson 60e4f4607b Add missing router depdency for processlist demo
Refs #1258
2016-12-14 11:40:45 +00:00
Will Abson 3714ef9fb0 Check that the process has a start form before attempting to display it
Refs #1140
2016-12-14 11:36:54 +00:00
mauriziovitale84 a12c370cc7 #1174 Rename report 2016-12-14 11:12:38 +00:00
mauriziovitale84 8993223a62 #1174 Add update report endpoint 2016-12-14 11:12:38 +00:00
Mario Romano 6c7160ccf8 Merge pull request #1242 from Alfresco/dev-mvitale-1220
Analitycs heading
2016-12-14 11:08:09 +00:00
mauriziovitale84 bb9edbf764 #1244 fix firefox style 2016-12-14 11:07:58 +00:00
Will Abson 47c4c8c976 Tidy up quotes in start-process template
Refs #1140
2016-12-14 10:49:34 +00:00
Mario Romano e357e92f29 Merge pull request #1225 from Alfresco/dev-mvitale-992
Move the Report API inside the js API
2016-12-14 10:23:53 +00:00
mauriziovitale84 6714677264 #1220 Fix unit test h4 2016-12-14 09:55:49 +00:00
Will Abson 2083050a10 Remove start process dialog
Refs #1253
2016-12-14 09:55:34 +00:00
mauriziovitale84 98bc7b0f52 #992 Fix unit test 2016-12-14 09:52:52 +00:00
mauriziovitale84 3ffc1bfd91 #992 fix js api method name 2016-12-14 09:32:08 +00:00
mauriziovitale84 a4e54d3d89 #992 Use the js API and fix unit test 2016-12-14 09:32:08 +00:00
Will Abson 499a22f62e Merge pull request #1252 from Alfresco/dev-mromano-1141
#1141 fix process filter creation
2016-12-14 09:31:21 +00:00
Mario Romano d32721f363 #1141 fix process filter creation 2016-12-14 02:23:19 +00:00
Denys Vuika 5ed7add492 fix running tests demo shell(#1246) 2016-12-13 22:54:36 +00:00
Mario Romano 8d619da667 #1146 load right filter on create task (#1250) 2016-12-13 22:53:49 +00:00
mauriziovitale84 29b8b635fa #1219 Default range date 2016-12-13 18:09:57 +00:00
mauriziovitale84 c061cf86d5 #1220 fix heading 2016-12-13 16:37:37 +00:00
Mario Romano 562fa9ec7c Merge pull request #1239 from Alfresco/dev-valbano-1183
#1183 - fix text formatting in diagram tasks
2016-12-13 16:24:53 +00:00
Mario Romano 6c7e28a83f #1176 improve responsiveness task list and process list (#1235) 2016-12-13 15:32:31 +00:00
Denys Vuika 5392fa5452 remove old config setting (webpack) 2016-12-13 15:17:58 +00:00
Vito Albano 9cd2ad8757 #1183 - fix text formatting in diagram tasks 2016-12-13 14:55:25 +00:00
Mario Romano 8e9cab657a #1157 reload process list (#1238) 2016-12-13 14:36:07 +00:00
Mario Romano e1824238f9 Merge pull request #1208 from Alfresco/dev-mvitale-384-style
Document list - Create Folder Docs
2016-12-13 14:33:45 +00:00
Mario Romano 84a782af77 Merge pull request #1237 from Alfresco/dev-denys--webpack
webpack config improvements
2016-12-13 14:31:28 +00:00
Denys Vuika 7267406d33 webpack config improvements
- new ‘debug-loader’ to help debugging webpack rules
- dynamically find and resolve all alfresco libraries
2016-12-13 12:45:37 +00:00
Mario Romano 3fb041bd69 Merge pull request #1234 from Alfresco/dev-denys--home-css
UI polish for Home page
2016-12-13 11:00:19 +00:00
Denys Vuika 5b886d4e60 UI polish for Home page
- improve feature list UI (remove bullet styles, improve icon and text
positioning)
- improve card headers (icons and text positioning)
2016-12-13 10:47:00 +00:00
mauriziovitale84 9b3ab411af Overwrite images 2016-12-13 10:31:57 +00:00
mauriziovitale84 82d29d3bc2 overwrite image 2016-12-13 10:30:14 +00:00
mauriziovitale84 d950612738 #384 Rename event name and improve docs 2016-12-13 10:26:37 +00:00
Will Abson b34a38fcff Allow navigation to folders from search results (#1209)
* Allow navigation to folders from search results

- Uses router to pass ID of the folder
- Modified document list component to accept folder ID without path
- Current limitations
  - Breadcrumb cannot currently be shown when navigating via folder id
  - Clicking between folders does not update the current route

* Allow root folder ID to be changed and have documentlist reload

- e.g switching from Company home to My Files

* New tests for navigating to folders based on ID

Refs #666
2016-12-13 09:30:58 +00:00
Denys Vuika a8ef1f8e4e Merge pull request #1229 from Alfresco/dev-mromano-improvements
improve mobile login,home and settings styles
2016-12-13 09:27:47 +00:00
Denys Vuika 53b23bfd31 Merge pull request #1231 from Alfresco/dev-mromano-1215
#1215 use alfresco-js-api for upload file
2016-12-13 09:24:02 +00:00
Denys Vuika a161827bed Merge pull request #1232 from Alfresco/dev-mromano-1195
#1195 add scroll to completed dynamic table
2016-12-13 09:22:29 +00:00
Mario Romano 359ffd24d2 #1195 add scroll to completed dynamic table 2016-12-13 00:15:25 +00:00
Mario Romano b9b9808dd0 #1215 use alfresco-js-api for upload file 2016-12-12 23:58:31 +00:00
Mario Romano 8b0621f5e1 improve mobile login,home and settings styles 2016-12-12 22:02:00 +00:00
Denys Vuika ca77608fa3 fix unit testing configuration (#1227) 2016-12-12 18:36:57 +00:00
Denys Vuika 8d97b0b123 add missing library 2016-12-12 16:59:13 +00:00
Denys Vuika 9432b2aa60 webpack: production settings (#1226)
* vendor libraries

* vendor libraries settings

* additional vendor libs settings

* production settings for i18n

* fix pdfs and favicon paths

* readme update

* code cleanup
2016-12-12 14:20:12 +00:00
Mario Romano d7e6f08448 Merge pull request #1210 from Alfresco/dev-denys-webpack
Webpack integration
2016-12-09 17:07:03 +00:00
Denys Vuika 9338ebe7ab remove old link script 2016-12-09 16:00:09 +00:00
Vito bdf1ae33e5 #1165 - fixed overlay for typeahead (#1218) 2016-12-09 15:13:52 +00:00
Denys Vuika d266d49041 fix issue with symlinks 2016-12-09 14:12:38 +00:00
Denys Vuika f285aec069 enable TypeScript debug and source mapping 2016-12-09 13:23:30 +00:00
Denys Vuika 5432cf69d5 fix document list 2016-12-09 12:21:46 +00:00
Denys Vuika d36a45255d add missing clean script 2016-12-09 11:03:22 +00:00
Denys Vuika cfb4fc71c0 fix document list bundling 2016-12-09 10:41:17 +00:00
Denys Vuika b3b6193006 fix: ng2-alfresco-documentlist 2016-12-08 18:49:52 +00:00
Denys Vuika d973c39462 fix: ng2-alfresco-search 2016-12-08 18:35:29 +00:00
Denys Vuika f954930678 fix: ng2-alfresco-tag 2016-12-08 18:17:23 +00:00
Denys Vuika f0963f5de3 fix: ng2-alfresco-viewer 2016-12-08 16:58:01 +00:00
Denys Vuika 279c627bbb fix: ng2-alfresco-userinfo 2016-12-08 16:56:13 +00:00
Denys Vuika 8e69cf86d6 fix: ng2-alfresco-upload 2016-12-08 16:52:29 +00:00
Denys Vuika cda0d78a7b fix component tests 2016-12-08 16:45:56 +00:00
Denys Vuika 492f03f905 fix: ng2-activiti-form 2016-12-08 16:29:20 +00:00
Denys Vuika 967899cca8 fix: ng2-activiti-analytics 2016-12-08 16:23:40 +00:00
Denys Vuika 29114c24db fix: ng2-activiti-diagrams 2016-12-08 16:17:39 +00:00
Denys Vuika 75ddc36e0a fix: ng2-alfresco-login 2016-12-08 16:04:20 +00:00
Denys Vuika 62d7abcb72 extend system loader with moduleName support 2016-12-08 15:51:46 +00:00
Denys Vuika dd20f6fc78 custom system.js loader
- disables ‘moduleId’ usage when building with webpack
2016-12-08 15:49:19 +00:00
Denys Vuika 067def255e improve link.sh script 2016-12-08 12:33:25 +00:00
Denys Vuika ea035ca25e cleanup 2016-12-07 18:27:11 +00:00
Denys Vuika c7eea3d8f3 freeze typescript version 2016-12-07 17:34:49 +00:00
Denys Vuika 29f426f643 code fixes
- interpolate ng2 components html content
- fix: load images for Login
- fix: load images for User Info
- fix: load images for Document List
- fix: decorator inheritance issue for Form
- fix: load images for Search
2016-12-07 14:55:09 +00:00
Mario Romano 1264a70b70 Update README.md 2016-12-07 12:48:57 +00:00
mauriziovitale84 369ac0d7d6 #384 Change API name, add docs, fix demo 2016-12-07 10:46:22 +00:00
mauriziovitale84 5fa2a8d075 #384 improve style and error messagge 2016-12-07 10:29:47 +00:00
Mario Romano 93036da6a7 Merge pull request #1201 from Alfresco/dev-wabson-775
Process variables component
2016-12-07 09:53:29 +00:00
Mario Romano e334848126 Merge pull request #1207 from Alfresco/dev-mvitale-384
Create Folder in document list
2016-12-07 09:53:15 +00:00
Mario Romano 1f820ebd34 Merge pull request #1206 from Alfresco/dev-valbano-1052
#1052 - Added tooltip for diagram heat map
2016-12-07 09:51:48 +00:00
Denys Vuika 45993793f9 remove core-js dependency 2016-12-06 19:50:12 +00:00
Denys Vuika f48d0c6c00 improve link script 2016-12-06 19:17:33 +00:00
Denys Vuika 705b22d70d enable missed content 2016-12-06 17:02:48 +00:00
Denys Vuika 10423ca985 remove module.id 2016-12-06 17:01:31 +00:00
mauriziovitale84 eba89de1c2 #384 fix compilation problem 2016-12-06 16:57:18 +00:00
mauriziovitale84 8775ec7c31 #384 Provide Create Folder button 2016-12-06 16:55:58 +00:00
Denys Vuika c7167bb812 basic webpack setup 2016-12-06 15:39:22 +00:00
Vito Albano d4895b39b2 #1052 - added header to diagram-tooltip component 2016-12-06 14:27:29 +00:00
Vito Albano 0fc17fbc30 #1052 - fix tests to reflect tooltip changes 2016-12-06 12:30:38 +00:00
Vito Albano 4ed8caf490 #1052 - fixed and improved test with tooltip component 2016-12-06 12:03:43 +00:00
Mario Romano 73b6e1b846 make more general update version script 2016-12-06 11:20:51 +00:00
Mario Romano 79429f5d85 Merge pull request #1194 from Alfresco/dev-eromano-73
Move the ecm-model service methods of the form component inside the js api
2016-12-06 10:12:04 +00:00
Vito Albano 089507b131 #1052 - add tooltip to heatmap 2016-12-05 18:02:17 +00:00
Mario Romano 604d4142c2 Merge pull request #1203 from Alfresco/dev-valbano-1134
#1134 - Fix Scrolling on completed process task
2016-12-05 16:56:13 +00:00
Vito Albano ef2c03cec5 #1052 - added tooltip for diagram elements 2016-12-05 15:33:00 +00:00
Vito Albano 2deb8092c3 #1052 - added tooltip component for diagram 2016-12-05 15:33:00 +00:00
Vito Albano 91d9503b37 #1052 - start adding tooltip to diagram elements 2016-12-05 15:33:00 +00:00
Vito Albano e3f8c5448f #1134 - fixed dialog in the middle of scrolled screen 2016-12-05 15:19:16 +00:00
Vito Albano 350b0b2f75 Fixed width for dialog task detail 2016-12-05 13:09:18 +00:00
Vito Albano 2d46444f25 Added scroll for big dialog on process detail 2016-12-05 13:09:18 +00:00
Will Abson a49f7dd7f7 Add edit and delete actions for process variables
Refs #775
2016-12-05 12:32:22 +00:00
Will Abson 676180517e Style fix for tabs header height
Refs #775
2016-12-05 12:32:22 +00:00
Will Abson 9bc63c9473 Use h2 for headings in processlist demo
Refs #775
2016-12-05 12:32:22 +00:00
Will Abson 99298f7066 Change demo app processlist columns to match demo-shell
Refs #775
2016-12-05 12:32:22 +00:00
Will Abson 72fc9a0b5d Add process variables component to demo app
Refs #775
2016-12-05 12:32:22 +00:00
Will Abson 1c4f17f90d Get demo app working again with recent processlist changes
Refs #775
2016-12-05 12:27:18 +00:00
Will Abson 8dd0f0ef81 Add test for getting/adding process vars
Refs #755
2016-12-05 12:27:18 +00:00
Will Abson a0294e29c3 Remove duplicated spy objects in tests
Refs #775
2016-12-05 12:27:18 +00:00
Will Abson d193b56b41 Externalise process comments UI strings
Refs #775
2016-12-05 12:27:18 +00:00
Will Abson f42c08fe10 Initial implementation of listing and setting process vars
Refs #775
2016-12-05 12:27:18 +00:00
Denys Vuika 613384dd90 Merge pull request #1200 from Alfresco/dev-eromano-improveTest
Improve test coverage document list
2016-12-05 11:10:46 +00:00
Eugenio Romano b2cbc72342 improve test coverage document list 2016-12-05 10:09:39 +00:00
Denys Vuika 800a2a6530 Demo shell improvements (#1199)
* #1197 auth guards

* #1197 restore lost router dependency to all libs

* #1197 ecm/bpm auth guards, home page

- ECM auth guard (redirect to Login if ECM auth is missing)
- BPM auth guard (redirect to Login if BPM auth is missing)
- new Home page and route, show details on demo areas

* css improvements

make app text white as per request
2016-12-03 18:57:43 +00:00
Eugenio Romano a95c98326a #649 Move the ecm-model service methods of the form component inside the js api 2016-12-01 19:21:06 +00:00
Maurizio Vitale 3a288c6b1b #1181 Show toast message once (#1189)
* #1181 Show toast once

* #1181 fix unit test

* #1181 Fix unit test compilation problem
2016-12-01 16:28:16 +00:00
Denys Vuika 294f7c0ec1 #1190 routing improvements, bug fixes (#1193)
- split apps view and single app view to reflect Activiti UI
- dedicated route for each app tasks: /activiti/apps/:appId/tasks
- remove performance bottleneck for activiti demo (AfterViewChecked)
- load stencil controllers together with Tasks view (fixes #1190)
2016-12-01 16:27:07 +00:00
Denys Vuika 2f1cd2cc84 #986 fix horizontal scrollbar issue for Safari (#1188)
adding top margin helps solving issue with horizontal scrollbar issue
for Safari when mouse is attached or system scrollbars visibility set
to ‘always’ (macOS)
2016-12-01 12:13:30 +00:00
Denys Vuika 8db6a73cc8 #679 support for additional content (#1187)
- allow custom content within login dialog
- move demo shell login switches inside the dialog
- readme updates and fixes
- fixes #679
2016-12-01 11:51:53 +00:00
Mario Romano d768f84838 fix header options for mobile (#1186)
* #1178 show header bar on mobile and tablet

* #1178 add all options to burger icon on the right
2016-12-01 09:45:36 +00:00
Denys Vuika 7eab89c5ef #159 improved error reporting for document-list (#1180)
- expose ‘error’ event
- change path only on successful navigation
- extend demo shell with error handling and reporting
- additional unit tests for document-list
2016-11-30 14:52:06 +00:00
Denys Vuika da70a72bba Login dialog shows error for Safari with Private Window mode (#1172)
* #958 new StorageService service

abstraction around ‘Storage’ to allow switching to in-memory store
whenever ‘localStorage’ is not available (i.e. private/incognito modes,
etc.)

* fix unit tests

* update unit tests

- disable incorrect auth tests (core)
- simplify widget visibility tests (activiti-form)

* fix unit tests
2016-11-30 11:32:16 +00:00
Mario Romano 94dad585b1 #1178 show header bar on mobile and tablet (#1179) 2016-11-30 11:12:44 +00:00
Will Abson 3f0db4038f Fix failing processlist tests 2016-11-29 18:53:23 +00:00
Will Abson 743eaaef01 Fix failing processlist test 2016-11-29 18:25:51 +00:00
Denys Vuika 5c401007f2 user-info fixes and performance improvements (#1171)
* #1167 document-list improvements

- allow setting custom root path
- document-list module now re-exports datatable module (no need
importing it separately if document-list is already used)
- documentation updates and fixes

* readme updates and unit test

* user-info fixes and performance improvements

- setup live reloads for user-info (demo shell)
- optimise user-info template (single *ngIf, [mdl] directive for
‘user-profile-lists’ instead of CPU-hungry `ngAfterViewChecked`)
2016-11-29 13:26:41 +00:00
Denys Vuika 9066ce49e0 document-list improvements (#1169)
* #1167 document-list improvements

- allow setting custom root path
- document-list module now re-exports datatable module (no need
importing it separately if document-list is already used)
- documentation updates and fixes

* readme updates and unit test
2016-11-29 12:03:24 +00:00
Mario Romano 132e6eac96 update aws image 2016-11-28 14:49:07 -08:00
Mario Romano 50de7ee5ce Update aws image 2016-11-28 14:48:31 -08:00
Denys Vuika 3ca2c28a41 Performance improvements (#1166)
#1166 * Update angular libs
document-list: performance improvements
caching ‘heavy’ cell evaluations (i.e. date pipe)
code/test fixes
document-list: performance improvements
Removed ‘AfterViewChecked’ bottleneck as underlying data-table already
does it.
data-table: performance improvements
2016-11-28 21:36:00 +00:00
Vito 0f563e38bb #1134 - Added scroll for big dialog on process detail (#1168)
#1134  Added scroll for big dialog on process detail , Fixed width for dialog task detail
2016-11-28 21:34:40 +00:00
Denys Vuika 9ed3047857 Merge pull request #1164 from Alfresco/dev-eromano-1094new
Remove deprecated use of getAlfrescoApi() #1094
2016-11-28 15:08:32 +00:00
Eugenio Romano d87a768d20 Remove deprecated use of getAlfrescoApi() #1094
remove getAlfrescoApi from auth #1094
2016-11-28 14:04:58 +00:00
Eugenio Romano 546347b475 Update PULL_REQUEST_TEMPLATE.md 2016-11-28 11:08:27 +00:00
Eugenio Romano eed6902428 Merge pull request #1162 from Alfresco/dev-valbano-1143-fix
#1143 - Fix double element on start process
2016-11-28 10:46:54 +00:00
Vito Albano 9e584925f8 Fixed test due new changes 2016-11-28 10:15:30 +00:00
Vito Albano 8e94e67779 #1143 - fix multiple call to the load service 2016-11-28 10:15:04 +00:00
John Sotiropoulos 7d990472e3 Update README.md 2016-11-27 22:15:52 +00:00
1807 changed files with 131566 additions and 39976 deletions
+9 -8
View File
@@ -6,16 +6,17 @@ Please ask before on our gitter channel https://gitter.im/Alfresco/alfresco-ng2-
-->
**Type of issue:** (check with "[x]")
```
- [ ] New feature request
- [ ] Bug
- [ ] Support request
```
**Current behavior:**
<!-- Describe the current behavior. -->
> - [ ] New feature request
> - [ ] Bug
> - [ ] Support request
> - [ ] Documentation
**Current behaviour:**
<!-- Describe the current behaviour. -->
**Expected behavior:**
<!-- Describe the expected behavior. -->
<!-- Describe the expected behaviour. -->
**Steps to reproduce the issue:**
<!-- Describe the steps to reproduce the issue. -->
+20 -19
View File
@@ -1,7 +1,8 @@
**Please check if the PR fulfills these requirements**
- [ ] The commit message follows our [guidelines](https://github.com/Alfresco/alfresco-ng2-components/wiki/Commit-format)
- [ ] Tests for the changes have been added (for bug fixes / features)
- [ ] Docs have been added / updated (for bug fixes / features)
> - [ ] The commit message follows our [guidelines](https://github.com/Alfresco/alfresco-ng2-components/wiki/Commit-format)
> - [ ] Tests for the changes have been added (for bug fixes / features)
> - [ ] Docs have been added / updated (for bug fixes / features)
<!--
Before submitting your PR, please check that your code follows our contribution guidelines:
@@ -9,30 +10,30 @@
-->
**What kind of change does this PR introduce?** (check one with "x")
```
[ ] Bugfix
[ ] Feature
[ ] Code style update (formatting, local variables)
[ ] Refactoring (no functional changes, no api changes)
[ ] Build related changes
[ ] Documentation
[ ] Other... Please describe:
```
**What is the current behavior?** (You can also link to an open issue here)
> - [ ] Bugfix
> - [ ] Feature
> - [ ] Code style update (formatting, local variables)
> - [ ] Refactoring (no functional changes, no api changes)
> - [ ] Build related changes
> - [ ] Documentation
> - [ ] Other... Please describe:
**What is the current behaviour?** (You can also link to an open issue here)
**What is the new behavior?**
**What is the new behaviour?**
**Does this PR introduce a breaking change?** (check one with "x")
```
[ ] Yes
[ ] No
```
> - [ ] Yes
> - [ ] No
If this PR contains a breaking change, please describe the impact and migration path for existing applications: ...
**Other information**:
**Other information**:
+9
View File
@@ -3,8 +3,17 @@ node_modules
workspace.xml
.idea/
dist/
ng2-components/coverage/
!systemjs.config.js
demo-shell-ng2/app/components/router/
ng2-components/ng2-alfresco-userinfo-old/demo/src/app/
ng2-components/ng2-alfresco-userinfo-old/src/services/bpm-user.service.spec.ts
ng2-components/ng2-alfresco-userinfo-old/src/services/ecm-user.service.spec.ts
src/environments/
/ng2-components/ng2-example-webpack/
/ng2-components/config/coverage/
*.npmrc
/demo-shell-ng2/ng2-components/
.happypack/
.happypack/
.history
+31 -59
View File
@@ -1,12 +1,8 @@
language: node_js
dist: trusty
sudo: false
node_js:
- "5"
addons:
- "8"
before_install:
- "export DISPLAY=:99.0"
@@ -14,65 +10,41 @@ before_install:
env:
matrix:
- MODULE=ng2-alfresco-core
- MODULE=ng2-alfresco-datatable
- MODULE=ng2-alfresco-documentlist
- MODULE=ng2-alfresco-login
- MODULE=ng2-alfresco-search
- MODULE=ng2-alfresco-upload
- MODULE=ng2-alfresco-viewer
- MODULE=ng2-alfresco-webscript
- MODULE=ng2-alfresco-tag
- MODULE=ng2-activiti-form
- MODULE=ng2-activiti-tasklist
- MODULE=ng2-activiti-processlist
- MODULE=ng2-activiti-diagrams
- MODULE=ng2-activiti-analytics
- MODULE=ng2-alfresco-userinfo
- MODULE=ng2-components-alfresco
- MODULE=ng2-components-activiti
- MODULE=ng2-demo-shell
before_script:
- if ([ "$MODULE" != "ng2-alfresco-core" ]); then
(cd ng2-components/ng2-alfresco-core; if [ ! -d "dist" ]; then npm install; fi; npm link);
fi
- if ([ "$MODULE" == "ng2-alfresco-documentlist" ] || [ "$MODULE" == "ng2-alfresco-webscript" ] || [ "$MODULE" == "ng2-activiti-processlist" ] || [ "$MODULE" == "ng2-activiti-tasklist" ]); then
(cd ng2-components/ng2-alfresco-datatable; npm link ng2-alfresco-core; if [ ! -d "dist" ]; then npm install; fi; npm link);
fi
- if ([ "$MODULE" == "ng2-activiti-tasklist" ] || [ "$MODULE" == "ng2-activiti-processlist" ]); then
(cd ng2-components/ng2-activiti-form; npm link ng2-alfresco-core; if [ ! -d "dist" ]; then npm install; fi; npm link);
fi
- if ([ "$MODULE" == "ng2-activiti-processlist" ]); then
(cd ng2-components/ng2-activiti-tasklist; npm link ng2-alfresco-core; npm link ng2-alfresco-datatable; npm link ng2-activiti-form; if [ ! -d "dist" ]; then npm install; fi; npm link);
fi
- if ([ "$MODULE" == "ng2-activiti-analytics" ]); then
(cd ng2-components/ng2-activiti-diagrams; npm link ng2-alfresco-core; if [ ! -d "dist" ]; then npm install; fi; npm link);
fi
- cd ng2-components/$MODULE;
- npm run travis;
- npm install;
script: npm run test
# Send coverage data to Coveralls
install:
- if ([ "$MODULE" == "ng2-components-alfresco" -o "$MODULE" == "ng2-components-activiti" ]); then
if ([ "$TRAVIS_BRANCH" = "master" ]); then
(./scripts/npm-build-all.sh || exit 1;);
else
(./scripts/npm-build-all.sh -gitjsapi development || exit 1;);
fi
fi
script:
- if ([ "$MODULE" == "ng2-components-activiti" ]); then
(./scripts/npm-build-all.sh -si -sb -t "ng2-activiti*" || exit 1;);
fi
- if ([ "$MODULE" == "ng2-components-alfresco" ]); then
(./scripts/npm-build-all.sh -si -sb -t "ng2-alfresco*" || exit 1;);
fi
- if ([ "$MODULE" == "ng2-demo-shell" ]); then
if ([ "$TRAVIS_BRANCH" = "master" ]); then
(./scripts/start.sh -t -ss || exit 1;);
else
(./scripts/start.sh -dev -t -ss -gitjsapi development || exit 1;);
fi
fi
# Send coverage data to codecov
after_success:
- if ([ "$TRAVIS_BRANCH" == "development" ] || [ "$TRAVIS_BRANCH" == "master" ]); then
bash <(curl -s https://codecov.io/bash)
fi
bash <(curl -s https://codecov.io/bash) -X gcov
cache:
directories:
- ./node_modules/material-design-lite
- ./node_modules/material-design-icons
- demo-shell-ng2/node_modules
- ng2-components/ng2-activiti-form/node_modules
- ng2-components/ng2-activiti-processlist/node_modules
- ng2-components/ng2-activiti-tasklist/node_modules
- ng2-components/ng2-alfresco-core/node_modules
- ng2-components/ng2-alfresco-datatable/node_modules
- ng2-components/ng2-alfresco-documentlist/node_modules
- ng2-components/ng2-alfresco-login/node_modules
- ng2-components/ng2-alfresco-search/node_modules
- ng2-components/ng2-alfresco-upload/node_modules
- ng2-components/ng2-alfresco-viewer/node_modules
- ng2-components/ng2-alfresco-webscript/node_modules
- ng2-components/ng2-alfresco-tag/node_modules
- ng2-components/ng2-activiti-analytics/node_modules
- ng2-components/ng2-alfresco-userinfo/node_modules
- ng2-components/ng2-activiti-diagrams/node_modules
- ng2-components/node_modules
+14 -2
View File
@@ -5,7 +5,19 @@
"**/.svn": true,
"**/.hg": true,
"**/.DS_Store": true,
"**/*.js": { "when": "$(basename).ts"},
"**/*.js.map": { "when": "$(basename)"}
"**/coverage": true,
"**/.happypack": true
},
"editor.renderIndentGuides": true,
"tslint.configFile": "ng2-components/tslint.json",
"markdownlint.config": {
"MD032": false,
"MD004": false,
"MD024": false,
"MD009": false,
"MD013": false,
"MD036": false,
"MD033" : false,
"MD031" : false
}
}
+204
View File
@@ -0,0 +1,204 @@
### CORS solving strategies
The web client that we are building with the application development framework will be loaded from a different web server than the Alfresco Platform is running on.
So we need to tell the Alfresco server that any request that comes in from this custom web client should be allowed access
to the Content Repository. This is done by enabling CORS.
If you are experiencing this kind of problem, see **one of the following**:
1. [Configure Webpack Proxy](#configure-webpack-proxy)
2. [Configure angular-cli Proxy](#configure-angular-cli-proxy)
3. [Configure nginx proxy](#configure-nginx-proxy)
4. [Enable CORS in CS and PS](#configure-webpack-proxy)
# Configure Webpack Proxy
If you are using a project created with the [Yeoman Generator](https://github.com/Alfresco/generator-ng2-alfresco-app) or the demo shell >=1.6.0, you have already out of the box in your `config/webpack.common.js` the following configuration.
Say we have an app running on http://localhost:3000/ and we want to redirect all calls with the following strategy:
* Content Service http://localhost:8080/ redirect to -> http://localhost:3000/ecm/
* Process Service http://localhost:9999/ redirect to -> http://localhost:3000/bpm/
Open the `config/webpack.common.js` file, find the `devServer` section and add the content:
```javascript
devServer: {
contentBase: helpers.root('dist'),
compress: true,
port: 3000,
historyApiFallback: true,
host: '0.0.0.0',
inline: true,
proxy: {
'/ecm': {
target: {
host: "0.0.0.0",
protocol: 'http:',
port: 8080
},
pathRewrite: {
'^/ecm': ''
}
},
'/bpm': {
target: {
host: "0.0.0.0",
protocol: 'http:',
port: 9999
},
pathRewrite: {
'^/bpm': ''
}
}
}
},
```
Notes:
- With different configuration of webpack the `devServer` properties could be in other webpack files. Search in your configuration files
- If you are running the App, Content Service or Process Service on different ports change the ports accordingly in your local configuration.
For further details about how to configure a webpack proxy please refer to the [official documentation](https://webpack.js.org/configuration/dev-server/#devserver-proxy).
# Configure angular-cli Proxy
Say we have an app running on http://localhost:3000/ and we want to redirect all the calls with the following strategy:
* Content Service http://localhost:8080/ redirect to -> http://localhost:3000/ecm/
* Process Service http://localhost:9999/ redirect to -> http://localhost:3000/bpm/
Create a file next to project's `package.json`, call it `proxy.conf.json` and add the following content:
```javascript
{
'/ecm': {
target: {
host: "0.0.0.0",
protocol: 'http:',
port: 8080
},
pathRewrite: {
'^/ecm': ''
}
},
'/bpm': {
target: {
host: "0.0.0.0",
protocol: 'http:',
port: 9999
},
pathRewrite: {
'^/bpm': ''
}
}
}
```
Note if you are running the App, Content Service or Process Service on different ports change the ports accordingly in your local configuration.
For further details about how to configure a webpack proxy please refer to the [official documentation](https://github.com/angular/angular-cli/blob/master/docs/documentation/stories/proxy.md).
# Configure nginx proxy
## Installing nginx
Most Linux distributions will come with nginx available to install via your
package manager and on Mac OS you can use [Homebrew](http://brew.sh/).
If you want to install manually however, you can follow the instructions on the
[download page](http://nginx.org/en/download.html). See also the specific information for
[windows users](http://nginx.org/en/docs/windows.html).
### Start nginx
Start nginx using the supplied configuration in [nginx.conf](nginx.conf)
nginx -c nginx.conf
### Review nginx configuration
To correctly configure nginx use the following file [nginx.conf](/nginx.conf).
This will host Activiti, Alfresco and the app dev framework under the same origin.
* ECM : http://localhost:8888/alfresco/
* BPM : http://localhost:8888/activiti/
To make everything work, you should change the address of the ECM and BPM. In the demo app you can do that by clicking on the top right settings menu and change the bottom left options: *ECM host* and *BPM host*.
This configuration assumes a few things:
* Port mapping:
* nginx entry point: 0.0.0.0:8888
* Demo Shell: localhost:3000
* Alfresco: localhost:8080
* Activiti: localhost:9999
All those values can be modified at their respective `location` directive on the [nginx.conf](/nginx.conf) file.
If you want to know more on how to install and configure nginx to work with the Application Development Framework, information can be found [here](https://community.alfresco.com/community/application-development-framework/blog/2016/09/28/adf-development-set-up-with-nginx-proxy)
# Enable CORS in CS and PS
If you want to completely enable CORS calls on your Content Service and Process Service, please refer to the following Alfresco documents:
* [Enable Cross Origin Resource Sharing (CORS) in Alfresco Process Services](http://docs.alfresco.com/process-services1.6/topics/enabling-cors.html)
* Enable Cross Origin Resource Sharing (CORS) in Alfresco Content Services
This is the easiest way, add the [enablecors](https://artifacts.alfresco.com/nexus/service/local/repositories/releases/content/org/alfresco/enablecors/1.0/enablecors-1.0.jar)
platform module JAR to the *$ALF_INSTALL_DIR/modules/platform* directory and restart the server.
Note. by default, the CORS filter that is enabled will allow any origin.
Or - Manually update the web.xml file
Modify *$ALF_INSTALL_DIR/tomcat/webapps/alfresco/WEB-INF/web.xml* and uncomment the following section and update
`cors.allowOrigin` to `http://localhost:3000` :
```
<filter>
<filter-name>CORS</filter-name>
<filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>
<init-param>
<param-name>cors.allowGenericHttpRequests</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>cors.allowOrigin</param-name>
<param-value>http://localhost:3000</param-value>
</init-param>
<init-param>
<param-name>cors.allowSubdomains</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>cors.supportedMethods</param-name>
<param-value>GET, HEAD, POST, PUT, DELETE, OPTIONS</param-value>
</init-param>
<init-param>
<param-name>cors.supportedHeaders</param-name>
<param-value>origin, authorization, x-file-size, x-file-name, content-type, accept, x-file-type</param-value>
</init-param>
<init-param>
<param-name>cors.supportsCredentials</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>cors.maxAge</param-name>
<param-value>3600</param-value>
</init-param>
</filter>
```
When specifying the `cors.allowOrigin` URL make sure to use the URL that will be used by the web client.
Then uncomment filter mappings:
```
<filter-mapping>
<filter-name>CORS</filter-name>
<url-pattern>/api/*</url-pattern>
<url-pattern>/service/*</url-pattern>
<url-pattern>/s/*</url-pattern>
<url-pattern>/cmisbrowser/*</url-pattern>
</filter-mapping>
```
+1 -1
View File
@@ -1,7 +1,7 @@
# Browser Support
Browser support and polyfills guide.
Browser compatibility and support depends on targeted browsers and 3rd party libraries. ADF framework is based on the following libraries and components:
Browser compatibility and support depends on targeted browsers and 3rd party libraries. ADF is based on the following libraries and components:
- Angular 2 (all ADF components)
- Material Design Lite (all ADF components)
+78
View File
@@ -0,0 +1,78 @@
# Contributing to ADF
- [Library Contents](#submitting-a-pull-request-pr)
- [Code style](#code-style)
- [Test guide](#test-guide)
## Submitting a Pull Request (PR)
Before you submit please follow the steps below:
* Search in [GitHub PR](https://github.com/Alfresco/alfresco-ng2-components/pulls) for an open or closed PR
that could solve or already solves your issue.
* Search in the [GitHub release history](https://github.com/Alfresco/alfresco-ng2-components/releases) if your
issue has already been solved in a new version of ADF.
* Fork our repository - [if you don't know how to do it read this GitHub document](https://help.github.com/articles/creating-a-pull-request-from-a-fork/)
* Make your changes in a new git branch starting from development and following the [naming convention](https://github.com/Alfresco/alfresco-ng2-components/wiki/Branching-Strategy)
```shell
git checkout -b dev-{developerName}-{GitIssuedId/JiraIssueId} development
```
* Create your PR **including appropriate test cases** following the [code contribution acceptance criteria](https://github.com/Alfresco/alfresco-ng2-components/wiki/Code-contribution-acceptance-criteria)
* Run the tests and make sure they are green. Please don't comment out or exclude the already existing tests
* Commit your change using the [commit format message good practice](https://github.com/Alfresco/alfresco-ng2-components/wiki/Commit-format)
* Push your branch to GitHub:
```shell
git push origin dev-{developerName}-{GitIssuedId/JiraIssueId}
```
* In GitHub, send a pull request to `development`.
* If we suggest changes then:
* Make the required updates.
* Re-run the tests.
* Rebase your branch and force push to your GitHub repository (this will update your Pull Request):
```shell
git fetch development
git checkout dev-my-branch
git rebase development -i
git push -f
```
Note: If you need more information about how to sync your fork, see [here](https://help.github.com/articles/syncing-a-fork/)
## Code style
The code style in the ADF code follows the [Angular style guide](https://angular.io/guide/styleguide) plus some internal rules.
You dont have to worry too much about those rules because they are automatically checked by tslint/codelyzer/adf-rules.
If your code is not compliant to one of these rules you will receive an error when you build the project with some help on how to fix it.
The ADF-Rules :
* File name component/directive cannot start with Alfresco/Activiti/adf - this rule is to help developers find files easily
* Class names cannot start with Alfresco/Activiti/adf for the same reason as above
* scss is mandatory. All the classes need to have the adf- prefix
## Test guide
In ADF we are encouraging the use of behavior-driven development (BDD)
### General guidelines
* Class selector in all the tests is not suggested. Use of the element ID is preferred
* Any test case should test only one behavior
* Use of the Angular [testBed](https://angular.io/guide/testing#testbed) is highly recommended
### File name
* The file name specification as to be the same of the component/service/pipe it test plus the .spec. suffix
* The specification file has to be in the same folder of the component/service/pipe it test
### Describer Name
* The Main describer of the test should be the name of the class under test
* The sub describe is used for grouping related behavior test. Do not over use it
### Test Name
Any test should follow the naming convetion:
[Should] [ ***Expected Behavior** ] [when/after/before] [ ***State Under Test*** ].
+2 -2
View File
@@ -18,7 +18,7 @@ However, there are use-cases that Share does not fit very well, such as:
This is where this application development framework comes into play, it can be used to create exactly the user interface
(i.e. web client) that the requirements demand.
The framework consists of a number of components that can be combined together to form a customized content management application.
The framework consists of several components that can be combined to form a customized content management application.
Here is a list of some of the available web components:
- [Core library](ng2-components/ng2-alfresco-core/README.md)
@@ -36,6 +36,6 @@ An architecture overview looks like this:
<img title="alfresco-ng2-components-architecture" alt='alfresco' src='assets/alfresco-app-dev-framework-architecture.png'></img>
</p>
Here we can also see that there is an Alfresco JavaScript framework in use that wraps the Alfresco REST API. To make things easier for the client developer.
Here we can also see that there is an Alfresco JavaScript framework in use that wraps the Alfresco REST API, to make things easier for the client developer.
+4 -41
View File
@@ -2,12 +2,12 @@
The [Angular 2](https://angular.io/) based application development framework requires the following:
- An Alfresco Platform Repository (version [201609 Early Access](https://community.alfresco.com/docs/DOC-6372-alfresco-community-edition-file-list-201609-ea) or newer) to talk to, which has [CORS](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing) enabled.
- [Download and install Activiti](https://www.alfresco.com/products/bpm/alfresco-activiti/trial)
- An Alfresco Platform Repository (version [201609 Early Access](https://community.alfresco.com/docs/DOC-6372-alfresco-community-edition-file-list-201609-ea) or newer)
- [Download and install the process service](https://www.alfresco.com/products/bpm/alfresco-activiti/trial)
- [Node.js](https://nodejs.org/en/) JavaScript runtime.
- [npm](https://www.npmjs.com/) package manager for JavaScript.
- local nginx proxy to avoid cross-origin browser restrictions (see below)
- (If you use ECM and BPM together) Make sure your user has the same username and password in both system
- (If you use CS and PS together) Make sure your user has the same username and password in both system
- [If you are experiencing CORS problem read this guide](/ALFRESCOCORS.md)
*Note: Default username for activiti is "admin@app.activiti.com" and "admin" for Alfresco, and also the default password are different. Change them to be equal.*
@@ -25,40 +25,3 @@ Make sure the Node.js version is > 5:
$ node -v
v5.12.0
```
## Installing nginx
Most Linux distributions will come with nginx available to install via your
package manager and on Mac OS you can use [Homebrew](http://brew.sh/).
If you want to install manually however you can follow the instructions on the
[download page](http://nginx.org/en/download.html). See also the specific information for
[windows users](http://nginx.org/en/docs/windows.html).
### Start nginx
Start nginx using the supplied configuration in [nginx.conf](nginx.conf)
nginx -c nginx.conf
### Review nginx configuration
To correctly configure nginx use the following file [nginx.conf](/nginx.conf).
This will host Activiti, Alfresco and the app dev framework under the same origin.
* ECM : http://localhost:8888/alfresco/
* BPM : http://localhost:8888/activiti/
To make everything work, you have to change the address of the ECM and BPM. In the demo app you can do that clicking on the top right settings menu and changing the bottom left options: *ECM host* and *BPM host*.
This configuration assumes few things:
* Port mapping:
* nginx entry point: 0.0.0.0:8888
* Demo Shell: locathost:3000
* Alfresco: locathost:8080
* Activiti: locathost:9999
All those values can be modified at their respective `location` directive on the [nginx.conf](/nginx.conf) file.
If you want to know more on how to install and configure nginx to work with the Application Development Framework can be found [here](https://community.alfresco.com/community/application-development-framework/blog/2016/09/28/adf-development-set-up-with-nginx-proxy)
+10 -25
View File
@@ -1,4 +1,4 @@
# ALFRESCO ANGULAR 2 COMPONENTS
# ALFRESCO ANGULAR COMPONENTS
[![Join the chat at https://gitter.im/Alfresco/alfresco-ng2-components](https://badges.gitter.im/Alfresco/alfresco-ng2-components.svg)](https://gitter.im/Alfresco/alfresco-ng2-components?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
@@ -17,27 +17,6 @@
<a href='https://github.com/Alfresco/alfresco-ng2-components/blob/master/LICENSE'>
<img src='https://img.shields.io/hexpm/l/plug.svg' alt='license' />
</a>
<a href='https://www.alfresco.com/'>
<img src='https://img.shields.io/badge/style-component-green.svg?label=alfresco' alt='alfresco component' />
</a>
<a href='https://angular.io/'>
<img src='https://img.shields.io/badge/style-2-red.svg?label=angular' alt='angular 2' />
</a>
<a href='https://www.typescriptlang.org/docs/tutorial.html'>
<img src='https://img.shields.io/badge/style-lang-blue.svg?label=typescript' alt='typescript' />
</a>
<a href='https://www.alfresco.com/'>
<img src='https://img.shields.io/badge/style-%3E5.0.0-blue.svg?label=node%20version' alt='node version' />
</a>
</p>
<p align="center">
<img title="alfresco" alt='alfresco' src='assets/alfresco.png' width="280px" height="150px"></img>
<img title="angular2" alt='angular2' src='assets/angular2.png' width="150px" height="150px"></img>
</p>
<p align="center">
<img title="browser stack" alt='browser stack' src='assets/browserstack.png' width="350px" height="225px"></img>
</p>
## Introduction
@@ -56,6 +35,12 @@ To view the complete list of all the components that you can use to build your c
You can browse all the components at the following [page](http://devproducts.alfresco.com/).
## Demo Application
A separate application showcasing integration of components can be found [here](https://github.com/Alfresco/alfresco-ng2-components/tree/master/demo-shell-ng2).
You will find examples of basic interaction for both BPM and ECM sets of widgets.
## Yeoman generators
To speed up the development of your Alfresco Angular 2 application, or Alfresco Angular 2 component, use one of the Yeoman generators.
@@ -87,7 +72,7 @@ To generate your Alfresco Angular 2 application you can use the following Yeoman
To deploy directly on your AWS instance our demo shell click the button below:
<a title="Deploy to AWS" href="https://console.aws.amazon.com/elasticbeanstalk/home?region=us-west-2#/newApplication?applicationName=Alfresco&solutionStackName=Node.js&tierName=WebServer&sourceBundleUrl=https://s3-us-west-2.amazonaws.com/elasticbeanstalk-us-west-2-677901592050/2016210o6l-Archive-v7.zip" target="_blank"><img src="http://d0.awsstatic.com/product-marketing/Elastic%20Beanstalk/deploy-to-aws.png" height="40"></a>
<a title="Deploy to AWS" href="https://console.aws.amazon.com/elasticbeanstalk/home?region=us-west-2#/newApplication?applicationName=Alfresco&solutionStackName=Node.js&tierName=WebServer&sourceBundleUrl=https://s3-us-west-2.amazonaws.com/elasticbeanstalk-us-west-2-677901592050/ADF_1.0.zip" target="_blank"><img src="http://d0.awsstatic.com/product-marketing/Elastic%20Beanstalk/deploy-to-aws.png" height="40"></a>
## Browser Support
All components are supported in the following browsers:
@@ -100,6 +85,6 @@ All components are supported in the following browsers:
|Edge |13, 14 |
|Internet Explorer |11 |
*Concerning Alfresco Upload Component, folder upload currently not supported [firefox known issue](https://bugzilla.mozilla.org/show_bug.cgi?id=1188880 )
* Due to a [Firefox known issue](https://bugzilla.mozilla.org/show_bug.cgi?id=1188880), the Alfresco Upload Component does not currently support folder upload functionality on Firefox.
Please refer to [Browser Support](BROWSER-SUPPORT.md) article for more details.
Please refer to the [Browser Support](BROWSER-SUPPORT.md) article for more details.
+44
View File
@@ -0,0 +1,44 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const Lint = require("tslint");
const sprintf_js_1 = require("sprintf-js");
const walkerFactory_1 = require("codelyzer/walkerFactory/walkerFactory");
const walkerFn_1 = require("codelyzer/walkerFactory/walkerFn");
const function_1 = require("codelyzer/util/function");
class Rule extends Lint.Rules.AbstractRule {
static invalidName(className) {
var whiteList = ['ActivitiContentComponent', 'ActivitiForm'];
var classNameReg = /^(alfresco|activiti|adf|activity)/ig;
var classNameMatch = classNameReg.exec(className);
var isWhiteListName = whiteList.find((currentWhiteListName) => {
return currentWhiteListName === className;
});
if (classNameMatch && !isWhiteListName) {
return true;
}
return false;
}
apply(sourceFile) {
return this.applyWithWalker(Rule.walkerBuilder(sourceFile, this.getOptions()));
}
}
Rule.metadata = {
ruleName: 'adf-class-name',
type: 'maintainability',
description: `Enforce consistent name avoid prefix`,
descriptionDetails: `See more at https://angular.io/styleguide#style-05-13.`,
rationale: `Consistent conventions make it easy to quickly identify class when you search with autocomplete.`,
options: null,
optionsDescription: "Not configurable.",
typescriptOnly: true,
};
Rule.FAILURE_STRING = 'The name of the class should not start with ADF Alfresco or Activiti prefix ';
Rule.walkerBuilder = walkerFn_1.all(walkerFn_1.validateComponent((meta, suffixList) => function_1.Maybe.lift(meta.controller)
.fmap(controller => controller.name)
.fmap(name => {
const className = name.text;
if (Rule.invalidName(className)) {
return [new walkerFactory_1.Failure(name, sprintf_js_1.sprintf(Rule.FAILURE_STRING + className, className, suffixList))];
}
})));
exports.Rule = Rule;
+61
View File
@@ -0,0 +1,61 @@
import * as Lint from 'tslint';
import * as ts from 'typescript';
import {sprintf} from 'sprintf-js';
import {ComponentMetadata} from 'codelyzer/angular/metadata';
import {Failure} from 'codelyzer/walkerFactory/walkerFactory';
import {all, validateComponent} from 'codelyzer/walkerFactory/walkerFn';
import {Maybe, F2} from 'codelyzer/util/function';
import {IOptions} from 'tslint';
import {NgWalker} from 'codelyzer/angular/ngWalker';
export class Rule extends Lint.Rules.AbstractRule {
public static metadata: Lint.IRuleMetadata = {
ruleName: 'adf-class-name',
type: 'maintainability',
description: `Enforce consistent name avoid prefix`,
descriptionDetails: `See more at https://angular.io/styleguide#style-05-13.`,
rationale: `Consistent conventions make it easy to quickly identify class when you search with autocomplete.`,
options: null,
optionsDescription: "Not configurable.",
typescriptOnly: true,
};
public static FAILURE_STRING = 'The name of the class should not start with ADF Alfresco or Activiti prefix ';
static walkerBuilder: F2<ts.SourceFile, IOptions, NgWalker> =
all(
validateComponent((meta: ComponentMetadata, suffixList?: string[]) =>
Maybe.lift(meta.controller)
.fmap(controller => controller.name)
.fmap(name => {
const className = name.text;
if (Rule.invalidName(className)) {
return [new Failure(name, sprintf(Rule.FAILURE_STRING + className , className, suffixList))];
}
})
));
static invalidName(className: string): boolean {
var whiteList = ['ActivitiContentComponent', 'ActivitiForm'];
var classNameReg = /^(alfresco|activiti|adf|activity)/ig;
var classNameMatch = classNameReg.exec(className);
var isWhiteListName = whiteList.find((currentWhiteListName)=>{
return currentWhiteListName === className;
});
if (classNameMatch && !isWhiteListName) {
return true;
}
return false;
}
public apply(sourceFile: ts.SourceFile): Lint.RuleFailure[] {
return this.applyWithWalker(
Rule.walkerBuilder(sourceFile, this.getOptions())
);
}
}
+47
View File
@@ -0,0 +1,47 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const Lint = require("tslint");
class Rule extends Lint.Rules.AbstractRule {
apply(sourceFile) {
return this.applyWithWalker(new AdfFileName(sourceFile, this.getOptions()));
}
}
Rule.metadata = {
ruleName: 'adf-file-name',
type: 'maintainability',
description: `Enforce consistent name avoid prefix`,
descriptionDetails: `See more at https://angular.io/styleguide#style-05-13.`,
rationale: `Consistent conventions make it easy to quickly identify files when you search with autocomplete.`,
options: null,
optionsDescription: "Not configurable.",
typescriptOnly: true,
};
Rule.FAILURE_STRING = 'The name of the File should not start with ADF Alfresco or Activiti prefix ';
exports.Rule = Rule;
class AdfFileName extends Lint.RuleWalker {
visitSourceFile(node) {
var whiteList = ['activiti-content.component.ts', 'activiti-alfresco.service.ts', 'activiti-content-service.ts',
'alfresco-api.service.ts', 'alfresco-settings.service.ts', 'alfresco-content.service.ts',
'activiti-content.component.spec.ts', 'activiti-alfresco.service.spec.ts', 'activiti-content-service.spec.ts',
'alfresco-api.service.spec.ts', 'alfresco-settings.service.spec.ts', 'alfresco-content.service.spec.ts',
'activiti-content.service.spec.ts', 'activiti-content.service.ts'];
var fileName = this.getFilename();
var fileNameReg = /^(alfresco|activiti|adf|activity)/ig;
var filenameMatch = fileNameReg.exec(fileName);
var isWhiteListName = whiteList.find((currentWhiteListName) => {
return currentWhiteListName === fileName;
});
if (filenameMatch && !isWhiteListName) {
this.addFailure(this.createFailure(node.getStart(), node.getWidth(), Rule.FAILURE_STRING + fileName));
super.visitSourceFile(node);
}
}
getFilename() {
const filename = this.getSourceFile().fileName;
const lastSlash = filename.lastIndexOf('/');
if (lastSlash > -1) {
return filename.substring(lastSlash + 1);
}
return filename;
}
}
+56
View File
@@ -0,0 +1,56 @@
import * as ts from "typescript";
import * as Lint from "tslint";
export class Rule extends Lint.Rules.AbstractRule {
public static metadata: Lint.IRuleMetadata = {
ruleName: 'adf-file-name',
type: 'maintainability',
description: `Enforce consistent name avoid prefix`,
descriptionDetails: `See more at https://angular.io/styleguide#style-05-13.`,
rationale: `Consistent conventions make it easy to quickly identify files when you search with autocomplete.`,
options: null,
optionsDescription: "Not configurable.",
typescriptOnly: true,
};
public static FAILURE_STRING = 'The name of the File should not start with ADF Alfresco or Activiti prefix ';
public apply(sourceFile: ts.SourceFile): Lint.RuleFailure[] {
return this.applyWithWalker(new AdfFileName(sourceFile, this.getOptions()));
}
}
// The walker takes care of all the work.
class AdfFileName extends Lint.RuleWalker {
public visitSourceFile(node: ts.SourceFile) {
var whiteList = ['activiti-content.component.ts', 'activiti-alfresco.service.ts', 'activiti-content-service.ts',
'alfresco-api.service.ts', 'alfresco-settings.service.ts', 'alfresco-content.service.ts',
'activiti-content.component.spec.ts', 'activiti-alfresco.service.spec.ts', 'activiti-content-service.spec.ts',
'alfresco-api.service.spec.ts', 'alfresco-settings.service.spec.ts', 'alfresco-content.service.spec.ts',
'activiti-content.service.spec.ts', 'activiti-content.service.ts'];
var fileName = this.getFilename();
var fileNameReg = /^(alfresco|activiti|adf|activity)/ig;
var filenameMatch = fileNameReg.exec(fileName);
var isWhiteListName = whiteList.find((currentWhiteListName)=>{
return currentWhiteListName === fileName;
});
if (filenameMatch && !isWhiteListName) {
this.addFailure(this.createFailure(node.getStart(), node.getWidth(), Rule.FAILURE_STRING + fileName));
super.visitSourceFile(node);
}
}
private getFilename(): string {
const filename = this.getSourceFile().fileName;
const lastSlash = filename.lastIndexOf('/');
if (lastSlash > -1) {
return filename.substring(lastSlash + 1);
}
return filename;
}
}
+6
View File
@@ -0,0 +1,6 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var adfClassNameRule_1 = require("./adfClassNameRule");
exports.ADFClassNameRule = adfClassNameRule_1.Rule;
var adfFileNameRule_1 = require("./adfFileNameRule");
exports.ComponentSelectorRule = adfFileNameRule_1.Rule;
+2
View File
@@ -0,0 +1,2 @@
export { Rule as ADFClassNameRule } from './adfClassNameRule';
export { Rule as ComponentSelectorRule } from './adfFileNameRule';
+2141
View File
File diff suppressed because it is too large Load Diff
+56
View File
@@ -0,0 +1,56 @@
{
"name": "adf-tslint-rules",
"description": "Custom Rules for the ADF project",
"version": "0.0.3",
"author": "Alfresco Software, Ltd.",
"scripts": {
"build": "tsc",
"tscv": "tsc --version",
"tsc": "tsc",
"tsc:watch": "tsc --w"
},
"contributors": [
{
"name": "Eugenio Romano",
"email": "eugenio.romano@alfresco.com"
}
],
"devDependencies": {
"@angular/compiler": "^4.2.3",
"@angular/core": "^4.2.3",
"@types/chai": "^3.4.33",
"@types/less": "0.0.31",
"@types/mocha": "^2.2.32",
"@types/node": "^6.0.41",
"@types/node-sass": "^3.10.31",
"@types/source-map": "^0.5.0",
"@types/sprintf-js": "0.0.27",
"chai": "^3.5.0",
"chai-spies": "^0.7.1",
"minimalist": "1.0.0",
"mocha": "3.0.2",
"node-sass": "^3.13.0",
"rimraf": "^2.5.2",
"rxjs": "5.4.1",
"ts-node": "1.2.2",
"tslint": "^5.0.0",
"typescript": "2.4.0",
"zone.js": "^0.8.4",
"js-yaml": "^3.8.4",
"json-stringify-pretty-compact": "^1.0.4",
"@types/js-yaml": "^3.5.31"
},
"peerDependencies": {
"tslint": "^5.0.0"
},
"dependencies": {
"app-root-path": "^2.0.1",
"css-selector-tokenizer": "^0.7.0",
"cssauron": "^1.4.0",
"semver-dsl": "^1.0.1",
"source-map": "^0.5.6",
"sprintf-js": "^1.0.3",
"codelyzer": "3.1.2"
},
"license": "Apache-2.0"
}
+22
View File
@@ -0,0 +1,22 @@
{
"compilerOptions": {
"experimentalDecorators": true,
"target": "es6",
"module": "commonjs",
"declaration": false,
"noImplicitAny": false,
"removeComments": true,
"lib": ["es6", "es2015", "dom"],
"noLib": false,
"typeRoots": [
"./node_modules/@types",
"./node_modules"
],
"types": [
"mocha",
"chai",
"node",
"sprintf-js"
]
}
}
+5
View File
@@ -0,0 +1,5 @@
{
"rules": {
"adf-file-naming": true
}
}
+24 -59
View File
@@ -2,75 +2,40 @@
branches:
only:
- master
- development
- dev-build-test
environment:
nodejs_version: "5"
nodejs_version: "8"
matrix:
- COMPONENT_NAME: ng2-alfresco-core
- COMPONENT_NAME: ng2-alfresco-datatable
- COMPONENT_NAME: ng2-alfresco-documentlist
- COMPONENT_NAME: ng2-alfresco-login
- COMPONENT_NAME: ng2-alfresco-search
- COMPONENT_NAME: ng2-alfresco-upload
- COMPONENT_NAME: ng2-alfresco-viewer
- COMPONENT_NAME: ng2-alfresco-tag
- COMPONENT_NAME: ng2-alfresco-webscript
- COMPONENT_NAME: ng2-activiti-form
- COMPONENT_NAME: ng2-activiti-tasklist
- COMPONENT_NAME: ng2-activiti-processlist
- COMPONENT_NAME: ng2-activiti-diagrams
- COMPONENT_NAME: ng2-activiti-analytics
- COMPONENT_NAME: ng2-alfresco-userinfo
- COMPONENT_NAME: ng2-components-activiti
- COMPONENT_NAME: ng2-components-alfresco
- COMPONENT_NAME: ng2-demo-shell
# Install scripts. (runs after repo cloning)
install:
# Get the latest stable version of Node.js or io.js
- ps: Install-Product node $env:nodejs_version
# install module
- IF %COMPONENT_NAME% NEQ ng2-alfresco-core (cd ng2-components/ng2-alfresco-core && npm install && npm link && cd ../../)
- IF %COMPONENT_NAME% EQU ng2-alfresco-documentlist (cd ng2-components/ng2-alfresco-datatable && npm link ng2-alfresco-core && npm install && npm link && cd ../../)
- IF %COMPONENT_NAME% EQU ng2-activiti-processlist (cd ng2-components/ng2-alfresco-datatable && npm link ng2-alfresco-core && npm install && npm link && cd ../../)
- IF %COMPONENT_NAME% EQU ng2-activiti-processlist (cd ng2-components/ng2-activiti-form && npm link ng2-alfresco-core && npm install && npm link && cd ../../)
- IF %COMPONENT_NAME% EQU ng2-activiti-processlist (cd ng2-components/ng2-activiti-tasklist && npm link ng2-alfresco-core && npm link ng2-alfresco-datatable && npm link ng2-activiti-form && npm install && npm link && cd ../../)
- IF %COMPONENT_NAME% EQU ng2-activiti-tasklist (cd ng2-components/ng2-alfresco-datatable && npm link ng2-alfresco-core && npm install && npm link && cd ../../)
- IF %COMPONENT_NAME% EQU ng2-activiti-tasklist (cd ng2-components/ng2-activiti-form && npm link ng2-alfresco-core && npm install && npm link && cd ../../)
- IF %COMPONENT_NAME% EQU ng2-alfresco-webscript (cd ng2-components/ng2-alfresco-datatable && npm link ng2-alfresco-core && npm install && npm link && cd ../../)
- IF %COMPONENT_NAME% EQU ng2-activiti-analytics (cd ng2-components/ng2-activiti-diagrams && npm link link ng2-alfresco-core && npm install && npm link && cd ../../)
- cd ng2-components/%COMPONENT_NAME%
- IF %COMPONENT_NAME% NEQ ng2-alfresco-core (npm link ng2-alfresco-core)
- IF %COMPONENT_NAME% EQU ng2-alfresco-documentlist (npm link ng2-alfresco-datatable)
- IF %COMPONENT_NAME% EQU ng2-activiti-processlist (npm link ng2-alfresco-datatable && npm link ng2-activiti-form && npm link ng2-activiti-tasklist)
- IF %COMPONENT_NAME% EQU ng2-activiti-tasklist (npm link ng2-alfresco-datatable && npm link ng2-activiti-form)
- IF %COMPONENT_NAME% EQU ng2-alfresco-webscript (npm link ng2-alfresco-datatable)
- IF %COMPONENT_NAME% EQU ng2-activiti-analytics (npm link ng2-activiti-diagrams)
- npm install
# Post-install test scripts.
test_script:
# Output useful info for debugging.
- node --version
- npm --version
# run tests
- npm test
- if %COMPONENT_NAME% EQU ng2-components-activiti (
if %APPVEYOR_REPO_BRANCH EQU master
(cd scripts && sh npm-build-all.sh -t "ng2-activiti*" || exit 1)
else
(cd scripts && sh npm-build-all.sh -t "ng2-activiti*" -gitjsapi development|| exit 1)
)
- if %COMPONENT_NAME% EQU ng2-components-alfresco (
if %APPVEYOR_REPO_BRANCH EQU master
(cd scripts && sh npm-build-all.sh -t "ng2-alfresco*" || exit 1)
else
(cd scripts && sh npm-build-all.sh -t "ng2-alfresco*" -gitjsapi development|| exit 1)
)
- if %COMPONENT_NAME% EQU ng2-demo-shell (
if %APPVEYOR_REPO_BRANCH EQU master
(cd scripts && sh start.sh -t -ss || exit 1)
else
(cd scripts && sh start.sh -dev -t -ss -gitjsapi development|| exit 1)
)
# Don't actually build.
build: off
cache:
- node_modules
- C:\projects\alfresco-ng2-components\ng2-components\ng2-activiti-form\node_modules
- C:\projects\alfresco-ng2-components\ng2-components\ng2-activiti-processlist\node_modules
- C:\projects\alfresco-ng2-components\ng2-components\ng2-activiti-tasklist\node_modules
- C:\projects\alfresco-ng2-components\ng2-components\ng2-alfresco-core\node_modules
- C:\projects\alfresco-ng2-components\ng2-components\ng2-alfresco-datatable\node_modules
- C:\projects\alfresco-ng2-components\ng2-components\ng2-alfresco-documentlist\node_modules
- C:\projects\alfresco-ng2-components\ng2-components\ng2-alfresco-login\node_modules
- C:\projects\alfresco-ng2-components\ng2-components\ng2-alfresco-search\node_modules
- C:\projects\alfresco-ng2-components\ng2-components\ng2-alfresco-upload\node_modules
- C:\projects\alfresco-ng2-components\ng2-components\ng2-alfresco-viewer\node_modules
- C:\projects\alfresco-ng2-components\ng2-components\ng2-alfresco-webscript\node_modules
- C:\projects\alfresco-ng2-components\ng2-components\ng2-alfresco-tag\node_modules
- C:\projects\alfresco-ng2-components\ng2-components\ng2-activiti-analytics\node_modules
- C:\projects\alfresco-ng2-components\ng2-components\ng2-alfresco-userinfo\node_modules
- C:\projects\alfresco-ng2-components\ng2-components\ng2-activiti-diagrams\node_modules
+5
View File
@@ -1,11 +1,16 @@
typings/
node_modules/
bower_components/
ng2-components/
app/**/*.js
app/**/*.js.map
app/**/*.d.ts
!app/js/Polyline.js
.idea
versions.json
dist/
coverage/
# docker files
docker-compose.yml
+81 -44
View File
@@ -1,64 +1,101 @@
<h1 align="center">Alfresco Angular 2 Components</h1>
<p align="center">
<img title="alfresco" alt='alfresco' src='../assets/alfresco.png' width="280px" height="150px" ></img>
<img title="angular2" alt='angular2' src='../assets/angular2.png' width="150px" height="150px" ></img>
</p>
<p align="center">
<a href='https://github.com/mgechev/angular2-style-guide'>
<img src='https://mgechev.github.io/angular2-style-guide/images/badge.svg' alt='style' />
</a>
</p>
# ADF Demo Application
### Node
To correctly use this demo check that on your machine is running Node version 5.0.0 or higher.
Please note that this application is not an official product, but a testing and demo application to showcase complex interactions of ADF components.
#### Local build
## Installing
1 Install dependencies
To correctly use this demo check that on your machine you have [Node](https://nodejs.org/en/) version 5.x.x or higher.
```sh
git clone https://github.com/Alfresco/alfresco-ng2-components.git
cd alfresco-ng2-components/demo-shell-ng2/
npm install
```
2 Fast build and watch for dev purposes
## Proxy settings and CORS
To simplify development and reduce the time to get the application started, we have the following Proxy settings:
- **http://localhost:3000/ecm** is mapped to **http://localhost:8080**
- **http://localhost:3000/bpm** is mapped to **http://localhost:9999**
The settings above address most common scenarios for running ACS on port 8080 and APS on port 9999 and allow you to skip the CORS configuration.
If you would like to change default proxy settings, please edit the `config/webpack.common.js` file.
## Application settings (server-side)
All server-side application settings are stored in the `app.config-dev.json` and `app.config-prod.json` files.
By default the configuration files have the content similar to the following one:
```json
{
"ecmHost": "http://localhost:3000/ecm",
"bpmHost": "http://localhost:3000/bpm",
"application": {
"name": "Alfresco"
}
}
```
You can add any additional settings to the application configuration file if needed.
Configuration files are picked based on environment settings (see `app.module.ts` for more details).
```ts
let appConfigFile = 'app.config-dev.json';
if (process.env.ENV === 'production') {
appConfigFile = 'app.config-prod.json';
}
@NgModule({
imports: [
...
CoreModule.forRoot({
appConfigFile: appConfigFile
}),
...
]
})
```
## Development build
```sh
npm start
```
>`start` script also includes live reload and watchers for all the `.ts` files.
TypeScript watchers are also configured for `node_modules` folder within demo shell
and provide live reload for all the component libraries as well.
This command compiles and starts the project in watch mode.
Browser will automatically reload upon changes.
Upon start you can navigate to `http://localhost:3000` with your preferred browser.
#### Development branch build
### Important notes
If you want to run the demo shell with the latest change from the development branch, use the following command from the /script folder:
This script is recommended for development environment and not suited for headless servers and network access.
## Production build
```sh
npm run build
npm run start:dist
```
This command builds project in `production` mode.
All output is placed to `dist` folder and can be served to your preferred web server.
You should need no additional files outside the `dist` folder.
### Important notes
By default demo application is configured to use [wsrv](https://www.npmjs.com/package/wsrv) tool (lightweight web server)
to serve production build output. It will be running at `0.0.0.0` address with port `3000` and allow you to access your application
via network. However, you can use any web server of your choice in production.
## Development branch build
If you want to run the demo shell with the latest changes from the development branch, use the following command from the /script folder:
```sh
./npm-clean.sh
./start-linked.sh -install
```
###Multi-language
To support a new language you need to create your language file (.json) and add it to `i18n/` folder.
```json
{
"username" : "Username",
"input-required-message": "Required",
"input-min-message": "Your username needs to be at least 4 characters.",
"login-button": "Login"
}
```
Directory structure:
```
.
├── i18n/
│ ├── en.json
│ ├── it.json
│ └── fr.json
```
```
-3
View File
@@ -1,3 +0,0 @@
#Windows Installation of *Alfresco Angular 2 Components* project
See https://github.com/Alfresco/alfresco-ng2-components/blob/master/Prerequisites.md
+29
View File
@@ -0,0 +1,29 @@
{
"ecmHost": "http://{hostname}:{port}/ecm",
"bpmHost": "http://{hostname}:{port}/bpm",
"application": {
"name": "Alfresco"
},
"pagination": {
"size": 25
},
"files": {
"excluded": [".DS_Store", "desktop.ini", ".git"]
},
"activiti": {
"rest": {
"fields": [
{
"processId": "0",
"taskId": "7501",
"fieldId": "label10",
"values": [
{ "id": "f1", "name": "Field 1" },
{ "id": "f2", "name": "Field 2" },
{ "id": "f3", "name": "Field 3" }
]
}
]
}
}
}
+29
View File
@@ -0,0 +1,29 @@
{
"ecmHost": "http://{hostname}",
"bpmHost": "http://{hostname}",
"application": {
"name": "Alfresco"
},
"pagination": {
"size": 25
},
"files": {
"excluded": [".DS_Store", "desktop.ini", ".git"]
},
"activiti": {
"rest": {
"fields": [
{
"processId": "0",
"taskId": "7501",
"fieldId": "label10",
"values": [
{ "id": "f1", "name": "Field 1" },
{ "id": "f2", "name": "Field 2" },
{ "id": "f3", "name": "Field 3" }
]
}
]
}
}
}
-17
View File
@@ -1,17 +0,0 @@
@media only screen and (max-width: 640px) {
.mdl-layout__header.header-search-expanded .mdl-layout-title {
display: none;
}
}
.mdl-layout-title {
font-size: 17px;
}
.user-profile {
margin-right: 10px;
}
.mdl-button-padding {
padding-left: 20px;
}
+73 -79
View File
@@ -1,86 +1,80 @@
<!-- Always shows a header, even in smaller screens. -->
<div mdl class="mdl-layout mdl-js-layout mdl-layout--fixed-header">
<div *ngIf="!isLoginPage()">
<header class="mdl-layout__header">
<div class="mdl-button-padding mdl-layout__header-row">
<md-toolbar color="primary" *ngIf="!isAPageWithHeaderBar()">
<ng2-alfresco-userinfo
class="user-profile"
[menuPositionX]="'before'"
[menuPositionY]="'above'">
</ng2-alfresco-userinfo>
<span>ADF Demo Application</span>
<ng2-alfresco-userinfo class="user-profile" [menuOpenType]="left">
</ng2-alfresco-userinfo>
<div class="app-menu--spacer"></div>
<search-bar (expand)="onToggleSearch($event)"></search-bar>
<!-- Title -->
<span class="mdl-layout-title">Demo Application</span>
<!-- Add spacer, to align navigation to the right -->
<div class="mdl-layout-spacer"></div>
<a md-button data-automation-id="home" href="" routerLink="/">Home</a>
<a md-button data-automation-id="files" href="" routerLink="/files">Content Services</a>
<a md-button data-automation-id="activiti" href="" routerLink="/activiti">Process Services</a>
<a md-button data-automation-id="login" href="" routerLink="/login">Login</a>
<!-- Search bar -->
<search-bar (expand)="onToggleSearch($event)"></search-bar>
<theme-picker></theme-picker>
<button md-icon-button [mdMenuTriggerFor]="langMenu">
<md-icon>language</md-icon>
</button>
<md-menu #langMenu="mdMenu">
<button md-menu-item (click)="changeLanguage('en')">English</button>
<button md-menu-item (click)="changeLanguage('it')">Italian</button>
<button md-menu-item (click)="changeLanguage('ru')">Russian</button>
</md-menu>
<!-- Navigation. We hide it in small screens. -->
<nav class="mdl-navigation mdl-layout--large-screen-only">
<a class="mdl-navigation__link" data-automation-id="files" href=""
routerLink="/files">DocumentList</a>
<a class="mdl-navigation__link" data-automation-id="datatable" href="" routerLink="/datatable">DataTable</a>
<a class="mdl-navigation__link" data-automation-id="uploader" href="" routerLink="/uploader">Uploader</a>
<a class="mdl-navigation__link" data-automation-id="activiti" href="" routerLink="/activiti">Activiti</a>
<a class="mdl-navigation__link" data-automation-id="webscript" href="" routerLink="/webscript">Webscript</a>
<a class="mdl-navigation__link" data-automation-id="tag" href="" routerLink="/tag">Tag</a>
<a class="mdl-navigation__link" data-automation-id="login" href="" routerLink="/login">Login</a>
<a class="mdl-navigation__link" data-automation-id="settings" href="" routerLink="/settings">Settings</a>
</nav>
<button md-icon-button [mdMenuTriggerFor]="appMenu">
<md-icon>more_vert</md-icon>
</button>
<md-menu #appMenu="mdMenu">
<a md-menu-item href="" routerLink="/dl-custom-sources">
<md-icon>extension</md-icon>
<span>DL: Custom Sources</span>
</a>
<a md-menu-item href="" routerLink="/datatable">
<md-icon>view_module</md-icon>
<span>DataTable</span>
</a>
<a md-menu-item href="" routerLink="/form">
<md-icon>poll</md-icon>
<span>Form</span>
</a>
<a md-menu-item href="" routerLink="/form-list">
<md-icon>library_books</md-icon>
<span>Form List</span>
</a>
<a md-menu-item href="" routerLink="/uploader">
<md-icon>file_upload</md-icon>
<span>Uploader</span>
</a>
<a md-menu-item href="" routerLink="/webscript">
<md-icon>extension</md-icon>
<span>Webscript</span>
</a>
<a md-menu-item href="" routerLink="/tag">
<md-icon>local_offer</md-icon>
<span>Tag</span>
</a>
<a md-menu-item href="" routerLink="/social">
<md-icon>thumb_up</md-icon>
<span>Social</span>
</a>
<a md-menu-item href="" routerLink="/settings">
<md-icon>settings</md-icon>
<span>Settings</span>
</a>
<a md-menu-item href="" routerLink="/about">
<md-icon>info_outline</md-icon>
<span>About</span>
</a>
<button md-menu-item (click)="onLogout($event)">
<md-icon>exit_to_app</md-icon>
<span>Logout</span>
</button>
</md-menu>
</md-toolbar>
<!-- Right aligned menu below button -->
<button id="demo-menu-lower-right" data-automation-id="right-action-menu"
class="mdl-button mdl-js-button mdl-button--icon">
<i class="material-icons">more_vert</i>
</button>
<ul class="mdl-menu mdl-menu--bottom-right mdl-js-menu mdl-js-ripple-effect"
for="demo-menu-lower-right">
<li class="mdl-menu__item" (click)="changeLanguage('en')">
<span class="flag-icon flag-icon-gb"></span>
<label tabindex="0"> English</label>
</li>
<li class="mdl-menu__item" (click)="changeLanguage('gr')">
<span class="flag-icon flag-icon-gr"></span>
<label tabindex="0"> Greek</label>
</li>
<li class="mdl-menu__item" (click)="changeLanguage('it')">
<span class="flag-icon flag-icon-it"></span>
<label tabindex="0"> Italian</label>
</li>
<a class="mdl-menu__item" routerLink="/about">
<label tabindex="0">About</label>
</a>
<a *ngIf="!isLoggedIn()" class="mdl-menu__item" routerLink="/login">
<label tabindex="0">Login</label>
</a>
<li *ngIf="isLoggedIn()" class="mdl-menu__item" (click)="onLogout($event)">
<label tabindex="0">Logout</label>
</li>
</ul>
</div>
</header>
<div class="mdl-layout__drawer">
<span class="mdl-layout-title">Components List</span>
<nav class="mdl-navigation">
<a class="mdl-navigation__link" href="" routerLink="/files" (click)="hideDrawer()">DocumentList Demo</a>
<a class="mdl-navigation__link" href="" routerLink="/datatable" (click)="hideDrawer()">DataTable
Demo</a>
<a class="mdl-navigation__link" href="" routerLink="/uploader" (click)="hideDrawer()">Uploader Demo</a>
<a class="mdl-navigation__link" href="" routerLink="/login" (click)="hideDrawer()">Login Demo</a>
<a class="mdl-navigation__link" href="" routerLink="/activiti" (click)="hideDrawer()">Activiti
Components Demo</a>
<a class="mdl-navigation__link" href="" routerLink="/webscript" (click)="hideDrawer()">Webscript</a>
<a class="mdl-navigation__link" href="" routerLink="/tag" (click)="hideDrawer()">Tag</a>
<a class="mdl-navigation__link" href="" routerLink="/settings" (click)="hideDrawer()">Settings</a>
</nav>
</div>
</div>
<main class="mdl-layout__content">
<div class="page-content">
<router-outlet></router-outlet>
</div>
</main>
</div>
<router-outlet></router-outlet>
+25
View File
@@ -0,0 +1,25 @@
.user-profile {
margin-right: 10px;
}
.app-menu--spacer {
flex: 1 1 auto;
}
.p-10 {
padding: 10px;
}
.m-10 {
margin: 10px;
}
._dialog_overlay {
position: static !important;
}
.md-simple-snackbar-action {
border: 0px;
cursor: pointer;
}
+31 -66
View File
@@ -15,74 +15,62 @@
* limitations under the License.
*/
import { Component } from '@angular/core';
import { Component, ViewEncapsulation } from '@angular/core';
import { Router } from '@angular/router';
import {
AlfrescoTranslationService,
AlfrescoAuthenticationService,
AlfrescoSettingsService
AlfrescoSettingsService,
AlfrescoTranslationService,
LogService,
StorageService
} from 'ng2-alfresco-core';
declare var document: any;
@Component({
selector: 'alfresco-app',
templateUrl: 'app/app.component.html',
styleUrls: ['app/app.component.css']
selector: 'adf-app',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss', './theme.scss'],
encapsulation: ViewEncapsulation.None
})
export class AppComponent {
searchTerm: string = '';
ecmHost: string = 'http://' + window.location.hostname + ':8080';
bpmHost: string = 'http://' + window.location.hostname + ':9999';
constructor(public auth: AlfrescoAuthenticationService,
public router: Router,
public alfrescoSettingsService: AlfrescoSettingsService,
private translate: AlfrescoTranslationService) {
this.setEcmHost();
this.setBpmHost();
constructor(private authService: AlfrescoAuthenticationService,
private router: Router,
private settingsService: AlfrescoSettingsService,
private translateService: AlfrescoTranslationService,
private storage: StorageService,
private logService: LogService) {
this.setProvider();
if (translate) {
translate.addTranslationFolder('custom', 'custom-translation/');
translate.addTranslationFolder('ng2-alfresco-login', 'custom-translation/alfresco-login');
}
}
isLoggedIn(): boolean {
this.redirectToLoginPageIfNotLoggedIn();
return this.auth.isLoggedIn();
}
redirectToLoginPageIfNotLoggedIn(): void {
if (!this.isLoginPage() && !this.auth.isLoggedIn()) {
this.router.navigate(['/login']);
}
}
isLoginPage(): boolean {
return location.pathname === '/login' || location.pathname === '/' || location.pathname === '/settings';
isAPageWithHeaderBar(): boolean {
return location.pathname === '/login' || location.pathname === '/settings';
}
onLogout(event) {
event.preventDefault();
this.auth.logout()
this.authService.logout()
.subscribe(
() => {
this.router.navigate(['/login']);
this.navigateToLogin();
},
($event: any) => {
if ($event && $event.response && $event.response.status === 401) {
this.router.navigate(['/login']);
(error: any) => {
if (error && error.response && error.response.status === 401) {
this.navigateToLogin();
} else {
console.error('An unknown error occurred while logging out', $event);
this.logService.error('An unknown error occurred while logging out', error);
this.navigateToLogin();
}
}
);
}
navigateToLogin() {
this.router.navigate(['/login']);
}
onToggleSearch(event) {
let expandedHeaderClass = 'header-search-expanded',
header = document.querySelector('header');
@@ -94,35 +82,12 @@ export class AppComponent {
}
changeLanguage(lang: string) {
this.translate.use(lang);
}
hideDrawer() {
// todo: workaround for drawer closing
document.querySelector('.mdl-layout').MaterialLayout.toggleDrawer();
}
private setEcmHost() {
if (localStorage.getItem(`ecmHost`)) {
this.alfrescoSettingsService.ecmHost = localStorage.getItem(`ecmHost`);
this.ecmHost = localStorage.getItem(`ecmHost`);
} else {
this.alfrescoSettingsService.ecmHost = this.ecmHost;
}
}
private setBpmHost() {
if (localStorage.getItem(`bpmHost`)) {
this.alfrescoSettingsService.bpmHost = localStorage.getItem(`bpmHost`);
this.bpmHost = localStorage.getItem(`bpmHost`);
} else {
this.alfrescoSettingsService.bpmHost = this.bpmHost;
}
this.translateService.use(lang);
}
private setProvider() {
if (localStorage.getItem(`providers`)) {
this.alfrescoSettingsService.setProviders(localStorage.getItem(`providers`));
if (this.storage.hasItem(`providers`)) {
this.settingsService.setProviders(this.storage.getItem(`providers`));
}
}
}
+78 -31
View File
@@ -18,78 +18,125 @@
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { CoreModule } from 'ng2-alfresco-core';
import { SearchModule } from 'ng2-alfresco-search';
import { LoginModule } from 'ng2-alfresco-login';
import { AnalyticsModule } from 'ng2-activiti-analytics';
import { DiagramsModule } from 'ng2-activiti-diagrams';
import { ActivitiFormModule } from 'ng2-activiti-form';
import { ActivitiProcessListModule } from 'ng2-activiti-processlist';
import { ActivitiTaskListModule } from 'ng2-activiti-tasklist';
import { AppConfigService, CoreModule, TRANSLATION_PROVIDER } from 'ng2-alfresco-core';
import { DataTableModule } from 'ng2-alfresco-datatable';
import { DocumentListModule } from 'ng2-alfresco-documentlist';
import { UploadModule } from 'ng2-alfresco-upload';
import { LoginModule } from 'ng2-alfresco-login';
import { SearchModule } from 'ng2-alfresco-search';
import { SocialModule } from 'ng2-alfresco-social';
import { TagModule } from 'ng2-alfresco-tag';
import { WebScriptModule } from 'ng2-alfresco-webscript';
import { ViewerModule } from 'ng2-alfresco-viewer';
import { ActivitiFormModule } from 'ng2-activiti-form';
import { ActivitiTaskListModule } from 'ng2-activiti-tasklist';
import { ActivitiProcessListModule } from 'ng2-activiti-processlist';
import { UploadModule } from 'ng2-alfresco-upload';
import { UserInfoComponentModule } from 'ng2-alfresco-userinfo';
import { AnalyticsModule } from 'ng2-activiti-analytics';
import { ViewerModule } from 'ng2-alfresco-viewer';
import { WebScriptModule } from 'ng2-alfresco-webscript';
import { Editor3DModule } from 'ng2-3d-editor';
import { ChartsModule } from 'ng2-charts';
import { AppComponent } from './app.component';
import { routing } from './app.routes';
import { CustomEditorsModule } from './components/activiti/custom-editor/custom-editor.component';
import { FormListDemoComponent } from './components/form/form-list-demo.component';
import { ThemePickerModule } from './components/theme-picker/theme-picker';
import { MaterialModule } from './material.module';
import { DebugAppConfigService } from './services/debug-app-config.service';
import { CustomSourcesComponent } from './components/files/custom-sources.component';
import {
DataTableDemoComponent,
SearchComponent,
SearchBarComponent,
LoginDemoComponent,
ActivitiDemoComponent,
FormViewer,
WebscriptComponent,
TagComponent,
AboutComponent,
ActivitiAppsViewComponent,
ActivitiDemoComponent,
ActivitiProcessAttachmentsComponent,
ActivitiShowDiagramComponent,
ActivitiTaskAttachmentsComponent,
DataTableDemoComponent,
FilesComponent,
FormNodeViewer,
SettingComponent
FormDemoComponent,
FormNodeViewerComponent,
FormViewerComponent,
HomeComponent,
LoginDemoComponent,
SearchBarComponent,
SearchComponent,
SettingsComponent,
SocialComponent,
TagComponent,
WebscriptComponent
} from './components/index';
let appConfigFile = 'app.config-dev.json';
if (process.env.ENV === 'production') {
appConfigFile = 'app.config-prod.json';
}
@NgModule({
imports: [
BrowserModule,
routing,
CoreModule.forRoot(),
LoginModule,
CoreModule.forRoot({
appConfigFile: appConfigFile
}),
MaterialModule,
LoginModule.forRoot(),
SearchModule.forRoot(),
DataTableModule,
DataTableModule.forRoot(),
DocumentListModule.forRoot(),
UploadModule.forRoot(),
TagModule.forRoot(),
WebScriptModule,
SocialModule.forRoot(),
WebScriptModule.forRoot(),
ViewerModule.forRoot(),
ActivitiFormModule.forRoot(),
ActivitiTaskListModule.forRoot(),
ActivitiProcessListModule.forRoot(),
UserInfoComponentModule.forRoot(),
AnalyticsModule.forRoot(),
CustomEditorsModule
DiagramsModule.forRoot(),
CustomEditorsModule,
Editor3DModule.forRoot(),
ChartsModule,
ThemePickerModule
],
declarations: [
AppComponent,
SearchBarComponent,
HomeComponent,
DataTableDemoComponent,
SearchComponent,
SearchBarComponent,
LoginDemoComponent,
ActivitiDemoComponent,
FormViewer,
ActivitiTaskAttachmentsComponent,
ActivitiProcessAttachmentsComponent,
ActivitiShowDiagramComponent,
ActivitiAppsViewComponent,
FormViewerComponent,
WebscriptComponent,
TagComponent,
SocialComponent,
AboutComponent,
FilesComponent,
FormNodeViewer,
SettingComponent
FormNodeViewerComponent,
SettingsComponent,
FormDemoComponent,
FormListDemoComponent,
CustomSourcesComponent
],
providers: [
{ provide: AppConfigService, useClass: DebugAppConfigService },
{
provide: TRANSLATION_PROVIDER,
multi: true,
useValue: {
name: 'app',
source: 'resources'
}
}
],
providers: [],
bootstrap: [ AppComponent ]
})
export class AppModule { }
+121 -25
View File
@@ -15,41 +15,137 @@
* limitations under the License.
*/
import { ModuleWithProviders } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { ModuleWithProviders } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { AuthGuard, AuthGuardBpm, AuthGuardEcm } from 'ng2-alfresco-core';
import {
FilesComponent,
DataTableDemoComponent,
SearchComponent,
LoginDemoComponent,
ActivitiDemoComponent,
WebscriptComponent,
TagComponent,
AboutComponent,
FormViewer,
FormNodeViewer,
SettingComponent
ActivitiAppsViewComponent,
ActivitiDemoComponent,
ActivitiShowDiagramComponent,
DataTableDemoComponent,
FilesComponent,
FormDemoComponent,
FormNodeViewerComponent,
FormViewerComponent,
HomeComponent,
LoginDemoComponent,
SearchComponent,
SettingsComponent,
SocialComponent,
TagComponent,
WebscriptComponent
} from './components/index';
import { UploadButtonComponent } from 'ng2-alfresco-upload';
import { CustomSourcesComponent } from './components/files/custom-sources.component';
import { FormListDemoComponent } from './components/form/form-list-demo.component';
export const appRoutes: Routes = [
{ path: 'home', component: FilesComponent },
{ path: 'files', component: FilesComponent },
{ path: 'datatable', component: DataTableDemoComponent },
{ path: '', component: LoginDemoComponent },
{ path: 'uploader', component: UploadButtonComponent },
{ path: 'login', component: LoginDemoComponent },
{ path: 'search', component: SearchComponent },
{ path: 'activiti', component: ActivitiDemoComponent },
{ path: 'activiti/appId/:appId', component: ActivitiDemoComponent },
{ path: 'activiti/tasks/:id', component: FormViewer },
{ path: 'activiti/tasksnode/:id', component: FormNodeViewer },
{ path: 'webscript', component: WebscriptComponent },
{ path: 'tag', component: TagComponent },
{
path: '',
component: HomeComponent,
canActivate: [AuthGuard]
},
{
path: 'home',
component: HomeComponent,
canActivate: [AuthGuard]
},
{
path: 'files',
component: FilesComponent,
canActivate: [AuthGuardEcm]
},
{
path: 'files/:id',
component: FilesComponent,
canActivate: [AuthGuardEcm]
},
{
path: 'dl-custom-sources',
component: CustomSourcesComponent,
canActivate: [AuthGuardEcm]
},
{
path: 'datatable',
component: DataTableDemoComponent,
canActivate: [AuthGuard]
},
{
path: 'uploader',
component: UploadButtonComponent,
canActivate: [AuthGuardEcm]
},
{
path: 'search',
component: SearchComponent,
canActivate: [AuthGuardEcm]
},
{
path: 'activiti',
component: ActivitiAppsViewComponent,
canActivate: [AuthGuardBpm]
},
{
path: 'activiti/apps',
component: ActivitiAppsViewComponent,
canActivate: [AuthGuardBpm]
},
{
path: 'activiti/apps/:appId/tasks',
component: ActivitiDemoComponent,
canActivate: [AuthGuardBpm]
},
{
path: 'activiti/apps/:appId/processes',
component: ActivitiDemoComponent,
canActivate: [AuthGuardBpm]
},
{
path: 'activiti/apps/:appId/diagram/:processDefinitionId',
component: ActivitiShowDiagramComponent,
canActivate: [AuthGuardBpm]
},
// TODO: check if neeeded
{
path: 'activiti/appId/:appId',
component: ActivitiDemoComponent,
canActivate: [AuthGuardBpm]
},
// TODO: check if needed
{
path: 'activiti/tasks/:id',
component: FormViewerComponent,
canActivate: [AuthGuardBpm]
},
// TODO: check if needed
{
path: 'activiti/tasksnode/:id',
component: FormNodeViewerComponent,
canActivate: [AuthGuardBpm]
},
{
path: 'webscript',
component: WebscriptComponent,
canActivate: [AuthGuardEcm]
},
{
path: 'tag',
component: TagComponent,
canActivate: [AuthGuardEcm]
},
{
path: 'social',
component: SocialComponent,
canActivate: [AuthGuardEcm]
},
{ path: 'about', component: AboutComponent },
{ path: 'settings', component: SettingComponent }
{ path: 'settings', component: SettingsComponent },
{ path: 'form', component: FormDemoComponent },
{ path: 'form-list', component: FormListDemoComponent }
];
export const routing: ModuleWithProviders = RouterModule.forRoot(appRoutes);
@@ -0,0 +1,10 @@
.about-container {
padding: 10px;
}
.adf-table-version {
width: 60%;
border: 0;
border-spacing: 0;
text-align: center;
}
@@ -1,4 +1,112 @@
<div style="padding: 10px">
<div class="about-container">
<h3>Server settings</h3>
<md-list>
<small>The values below are taken from the AppConfigService and loaded from the '{{ configFile }}' file.</small>
<md-list-item>
<h4 md-line> Alfresco Process Services URL: {{ bpmHost }}</h4>
</md-list-item>
<md-divider></md-divider>
<md-list-item>
<h4 md-line>Alfresco Content Services URL: {{ ecmHost }}</h4>
</md-list-item>
</md-list>
<h3>Product Versions</h3>
<div *ngIf="bpmVersion">
<h3>BPM</h3>
<label> Edition </label> {{ bpmVersion.edition }}
<p></p>
<table border="2" class="adf-table-version">
<tr>
<th>Major Version</th>
<th>Revision Version</th>
<th>Minor Version</th>
<th>Type</th>
</tr>
<tr style="align-items: center">
<td>{{ bpmVersion.majorVersion }}</td>
<td>{{ bpmVersion.revisionVersion }}</td>
<td>{{ bpmVersion.minorVersion }}</td>
<td>{{ bpmVersion.type }}</td>
</tr>
</table>
</div>
<div *ngIf="ecmVersion">
<h3>ECM</h3>
<label> Edition </label> {{ ecmVersion.edition }}
<p></p>
<label> Version </label> {{ ecmVersion.version.display }}
<p></p>
<h4>License</h4>
<table border="2" class="adf-table-version">
<tr>
<th> Issued At </th>
<th> Expires At </th>
<th> Remaining Days </th>
<th> Holder </th>
<th> Mode </th>
<th> Is Cluster Enabled </th>
<th> Is Cryptodoc Enable </th>
</tr>
<tr style="align-items: center">
<td>{{ ecmVersion.license.issuedAt }}</td>
<td>{{ ecmVersion.license.expiresAt }}</td>
<td>{{ ecmVersion.license.remainingDays }}</td>
<td>{{ ecmVersion.license.holder }}</td>
<td>{{ ecmVersion.license.mode }}</td>
<td>{{ ecmVersion.license.isClusterEnabled }}</td>
<td>{{ ecmVersion.license.isCryptodocEnabled }}</td>
</tr>
</table>
<h4> Status</h4>
<table border="2" class="adf-table-version">
<tr>
<th> ReadOnly </th>
<th> Is Audit Enable </th>
<th> Is quick shared enable </th>
<th> Thumbnail Generation </th>
</tr>
<tr style="align-items: center">
<td>{{ ecmVersion.status.isReadOnly }}</td>
<td>{{ ecmVersion.status.isAuditEnabled }}</td>
<td>{{ ecmVersion.status.isQuickShareEnabled }}</td>
<td>{{ ecmVersion.status.isThumbnailGenerationEnabled }}</td>
</tr>
</table>
<h4>Modules</h4>
<table border="2" class="adf-table-version">
<tr>
<th> ID </th>
<th> Title </th>
<th> Description </th>
<th> Version </th>
<th> Install Date </th>
<th> Install State </th>
<th> Version Minor </th>
<th> Version Max </th>
</tr>
<tr *ngFor="let module of ecmVersion.modules" style="align-items: center">
<td>{{ module.id }}</td>
<td>{{ module.title }}</td>
<td>{{ module.description }}</td>
<td>{{ module.version }}</td>
<td>{{ module.installDate }}</td>
<td>{{ module.installState }}</td>
<td>{{ module.versionMin }}</td>
<td>{{ module.versionMax }}</td>
</tr>
</table>
</div>
<div *ngIf="githubUrlCommitAlpha">
<h3>Source code</h3>
<small>You are running the project based on the following commit:</small>
<div>
<a [href]="githubUrlCommitAlpha">{{githubUrlCommitAlpha}}</a>
</div>
</div>
<h3>Packages</h3>
<small>Current project is using the following ADF libraries:</small>
<alfresco-datatable [data]="data"></alfresco-datatable>
</div>
@@ -17,32 +17,91 @@
import { Component, OnInit } from '@angular/core';
import { Http } from '@angular/http';
import { AlfrescoAuthenticationService, AppConfigService, BpmProductVersionModel, DiscoveryApiService, EcmProductVersionModel, LogService } from 'ng2-alfresco-core';
import { ObjectDataTableAdapter } from 'ng2-alfresco-datatable';
declare let __moduleName: string;
@Component({
moduleId: __moduleName,
selector: 'about-page',
templateUrl: './about.component.html'
templateUrl: './about.component.html',
styleUrls: ['./about.component.css']
})
export class AboutComponent implements OnInit {
data: ObjectDataTableAdapter;
githubUrlCommitAlpha: string = 'https://github.com/Alfresco/alfresco-ng2-components/commits/';
constructor(private http: Http) {}
configFile: string = '';
ecmHost: string = '';
bpmHost: string = '';
ecmVersion: EcmProductVersionModel = null;
bpmVersion: BpmProductVersionModel = null;
constructor(private http: Http,
private appConfig: AppConfigService,
private authService: AlfrescoAuthenticationService,
private logService: LogService,
private discovery: DiscoveryApiService) {
}
ngOnInit() {
// this.data = new ObjectDataTableAdapter();
this.http.get('/versions').subscribe(response => {
let data = response.json() || {};
let packages = data.packages || [];
this.data = new ObjectDataTableAdapter(packages, [
{ type: 'text', key: 'name', title: 'Name', sortable: true },
{ type: 'text', key: 'version', title: 'Version', sortable: true }
if (this.authService.isEcmLoggedIn()) {
this.discovery.getEcmProductInfo().subscribe((ecmVers) => {
this.ecmVersion = ecmVers;
});
}
if (this.authService.isBpmLoggedIn()) {
this.discovery.getBpmProductInfo().subscribe((bpmVers) => {
this.bpmVersion = bpmVers;
});
}
this.http.get('/versions.json').subscribe(response => {
let regexp = new RegExp('^(ng2-activiti|ng2-alfresco|alfresco-)');
let alfrescoPackages = Object.keys(response.json().dependencies).filter((val) => {
this.logService.log(val);
return regexp.test(val);
});
let alfrescoPackagesTableRepresentation = [];
alfrescoPackages.forEach((val) => {
this.logService.log(response.json().dependencies[val]);
alfrescoPackagesTableRepresentation.push({
name: val,
version: response.json().dependencies[val].version
});
});
this.gitHubLinkCreation(alfrescoPackagesTableRepresentation);
this.logService.log(alfrescoPackagesTableRepresentation);
this.data = new ObjectDataTableAdapter(alfrescoPackagesTableRepresentation, [
{type: 'text', key: 'name', title: 'Name', sortable: true},
{type: 'text', key: 'version', title: 'Version', sortable: true}
]);
});
this.configFile = this.appConfig.configFile;
this.ecmHost = this.appConfig.get<string>('ecmHost');
this.bpmHost = this.appConfig.get<string>('bpmHost');
}
private gitHubLinkCreation(alfrescoPackagesTableRepresentation): void {
let corePackage = alfrescoPackagesTableRepresentation.find((packageUp) => {
return packageUp.name === 'ng2-alfresco-core';
});
if (corePackage) {
let commitIsh = corePackage.version.split('-');
if (commitIsh.length > 1) {
this.githubUrlCommitAlpha = this.githubUrlCommitAlpha + commitIsh[1];
} else {
this.githubUrlCommitAlpha = this.githubUrlCommitAlpha + corePackage.version;
}
}
}
}
@@ -10,9 +10,91 @@
.task-column {
background-color: #f5f5f5;
padding: 10px 10px 10px 10px;
border: solid 2px rgb(31,188,210);
}
.mdl-layout__header {
z-index: 1;
}
}
.list-buttons {
text-align: left;
margin-bottom: 5px;
}
.adf-no-form-container {
text-align: center;
font-weight: 600;
font-size: 18px;
font-family: Muli;
padding: 16px;
}
.action-header {
border: 1px solid rgb(224, 224, 224);
background: #fff;
text-align: left;
}
.activiti-demo-grid {
display: flex;
}
.activiti-demo-grid-item {
margin: 4px;
box-shadow: 0 2px 2px 0 rgba(0,0,0,.14), 0 3px 1px -2px rgba(0,0,0,.2), 0 1px 5px 0 rgba(0,0,0,.12);
background-color: #f5f5f5;
padding: 10px 10px 10px 10px;
}
.activiti-demo-list-buttons {
margin-bottom: 24px;
}
.activiti-demo-list-buttons-start {
width: 100%;
}
.activiti-demo-tasks-menu {
min-width: 170px;
}
.activiti-demo-tasks-list {
min-width: 510px;
padding: 0;
}
.activiti-demo-tasks-details,
.activiti-demo-tasks-start {
flex-grow: 1;
min-width: 680px;
}
.activiti-demo-tasks-list >>> .adf-data-table {
border: none;
}
.activiti-demo-tasks-list >>> .adf-data-table tr,
.activiti-demo-tasks-list >>> .adf-data-table td {
height: 36px;
font-size: 14px;
}
.activiti-demo-tasks-list >>> .adf-data-table td {
padding-top: 0;
padding-bottom: 0;
border-bottom: none;
}
.activiti-demo-tasks-list >>> .adf-data-table th {
padding-top: 0;
padding-bottom: 0;
height: 40px;
color: rgb(0,0,0);
vertical-align: middle;
font-size: 14px;
background-color: rgba(0,0,0,.05);
}
.adf-pagination {
color: black;
}
@@ -1,113 +1,230 @@
<div class="mdl-layout mdl-js-layout mdl-layout--fixed-header">
<md-tab-group>
<md-tab id="tasks-header" href="#tasks" (click)="activeTab = 'tasks'" label="{{'PS-TAB.TASKS-TAB' | translate}}">
<div class="page-content">
<div class="activiti-demo-grid">
<div class="activiti-demo-grid-item activiti-demo-tasks-menu">
<div class="activiti-demo-list-buttons">
<button color="primary" md-raised-button data-automation-id="btn-start-task" class="activiti-demo-list-buttons-start" (click)="navigateStartTask()">
<md-icon>add</md-icon>
<span>{{'PS-TAB.START-TASK' | translate}}</span>
</button>
</div>
<adf-accordion>
<adf-accordion-group [heading]="'Tasks'" [isSelected]="true" [isOpen]="true"
[headingIcon]="'assignment'">
<activiti-filters
[filterParam]="{name:'MY tasks'}"
[appId]="appId"
[hasIcon]="false"
(filterClick)="onTaskFilterClick($event)"
(onSuccess)="onSuccessTaskFilterList($event)"
#activitifilter>
</activiti-filters>
</adf-accordion-group>
</adf-accordion>
</div>
<div class="activiti-demo-grid-item activiti-demo-tasks-list"
*ngIf="taskFilter && !isStartTaskMode()">
<activiti-tasklist
[appId]="taskFilter?.appId"
[page]="taskPage"
[size]="taskPagination.maxItems"
[processDefinitionKey]="taskFilter?.filter?.processDefinitionKey"
[name]="taskFilter?.filter?.name"
[assignment]="taskFilter?.filter?.assignment"
[state]="taskFilter?.filter?.state"
[sort]="taskFilter?.filter?.sort"
[data]="dataTasks"
[landingTaskId]="currentTaskId"
(rowClick)="onTaskRowClick($event)"
(onSuccess)="onSuccessTaskList($event)"
(row-click)="onRowClick($event)"
(row-dblclick)="onRowDblClick($event)"
#activititasklist>
<!-- Custom column definition demo -->
<!--
<data-columns>
<data-column key="name" title="NAME" class="full-width name-column"></data-column>
<data-column key="created" title="Created" class="hidden"></data-column>
</data-columns>
-->
</activiti-tasklist>
<header class="mdl-layout__header">
<!-- TABS -->
<div class="mdl-layout__tab-bar mdl-js-ripple-effect" #tabheader>
<a id="apps-header" href="#apps" class="mdl-layout__tab is-active">APPS</a>
<a id="tasks-header" href="#tasks" class="mdl-layout__tab">TASK LIST</a>
<a id="processes-header" href="#processes" class="mdl-layout__tab">PROCESS LIST</a>
<a id="report-header" href="#report" class="mdl-layout__tab">ANALYTICS</a>
<adf-pagination
(changePageNumber)="onChangePageNumber($event)"
(changePageSize)="onChangePageSize($event)"
(nextPage)="onNextPage($event)"
(prevPage)="onPrevPage($event)"
[pagination]="taskPagination"
[supportedPageSizes]="[2, 4, 6, 8, 10, 12]">
</adf-pagination>
</div>
<div class="activiti-demo-grid-item activiti-demo-tasks-details" *ngIf="!isStartTaskMode()"
[class.mdl-cell--7-col]="taskFilter && !isStartTaskMode()"
[class.mdl-cell--10-col]="!taskFilter || isStartTaskMode()">
<activiti-task-details #activitidetails
[debugMode]="true"
[taskId]="currentTaskId"
[fieldValidators]="fieldValidators"
(formCompleted)="onFormCompleted($event)"
(formContentClicked)="onFormContentClick($event)"
(taskCreated)="onTaskCreated($event)"
(assignTask)="onAssignTask()"
(taskDeleted)="onTaskDeleted($event)">
</activiti-task-details>
<hr>
<div *ngIf="currentTaskId">
{{'PS-TAB.AUDIT-LOG' | translate}}
<button
adf-task-audit
[task-id]="currentTaskId"
[download]="true"
md-icon-button (clicked)="onAuditClick($event)" (error)="onAuditError($event)">
<md-icon>assignment_ind</md-icon>
</button>
<hr>
</div>
<md-card>
<md-card-content>
<activiti-task-attachments
[taskId]="currentTaskId">
</activiti-task-attachments>
</md-card-content>
</md-card>
</div>
<div class="activiti-demo-grid-item activiti-demo-tasks-start" *ngIf="isStartTaskMode()">
<adf-start-task
[appId]="appId"
(success)="onStartTaskSuccess($event)"
(cancel)="onCancelStartTask()">
</adf-start-task>
</div>
</div>
</div>
</header>
<main class="mdl-layout__content activiti" #tabmain>
<!-- APPPS COMPONENT -->
<section class="mdl-layout__tab-panel is-active" id="apps">
<div class="page-content">
<activiti-apps [layoutType]="layoutType" (appClick)="onAppClick($event)" #activitiapps></activiti-apps>
</div>
</section>
<!-- TASKS COMPONENT -->
<section class="mdl-layout__tab-panel" id="tasks">
<div class="page-content">
<div class="mdl-grid">
<div class="mdl-cell mdl-cell--2-col task-column mdl-shadow--2dp">
<span>Task Filters</span>
<activiti-start-task [appId]="appId" (onSuccess)="onStartTaskSuccess($event)"></activiti-start-task>
<activiti-filters [appId]="appId" (filterClick)="onTaskFilterClick($event)" (onSuccess)="onSuccessTaskFilterList($event)"
#activitifilter></activiti-filters>
</md-tab>
<md-tab id="processes-header" href="#processes" (click)="activeTab = 'processes'"
label="{{'PS-TAB.PROCESSES-TAB' | translate}}">
<div class="page-content">
<div class="mdl-grid">
<div class="mdl-cell mdl-cell--2-col task-column mdl-shadow--2dp">
<div class="list-buttons">
<button
md-raised-button
data-automation-id="btn-start-process"
(click)="navigateStartProcess()">
<md-icon>add</md-icon>
<span>START PROCESS</span>
</button>
</div>
<div class="mdl-cell mdl-cell--3-col task-column mdl-shadow--2dp">
<span>Task List</span>
<activiti-tasklist *ngIf="taskFilter?.hasFilter()" [appId]="taskFilter.appId"
[processDefinitionKey]="taskFilter.filter.processDefinitionKey"
[name]="taskFilter.filter.name"
[assignment]="taskFilter.filter.assignment"
[state]="taskFilter.filter.state"
[sort]="taskFilter.filter.sort"
[data]="dataTasks"
(rowClick)="onTaskRowClick($event)" (onSuccess)="onSuccessTaskList($event)"
#activititasklist></activiti-tasklist>
</div>
<div class="mdl-cell mdl-cell--7-col task-column mdl-shadow--2dp">
<span>Task Details</span>
<activiti-task-details [taskId]="currentTaskId" (formCompleted)="onFormCompleted($event)"
#activitidetails></activiti-task-details>
<adf-accordion>
<adf-accordion-group [heading]="'Processes'" [isSelected]="true" [isOpen]="true"
[headingIcon]="'assessment'">
<activiti-process-instance-filters
[filterParam]="{index: 0}"
[appId]="appId"
(filterClick)="onProcessFilterClick($event)"
(onSuccess)="onSuccessProcessFilterList($event)">
</activiti-process-instance-filters>
</adf-accordion-group>
</adf-accordion>
</div>
<div class="mdl-cell mdl-cell--3-col task-column mdl-shadow--2dp"
*ngIf="processFilter && !isStartProcessMode()">
<activiti-process-instance-list
*ngIf="processFilter?.hasFilter()" [appId]="processFilter.appId"
[processDefinitionKey]="processFilter.filter.processDefinitionKey"
[name]="processFilter.filter.name"
[state]="processFilter.filter.state"
[sort]="processFilter.filter.sort"
[data]="dataProcesses"
(rowClick)="onProcessRowClick($event)"
(onSuccess)="onSuccessProcessList($event)">
<!-- Custom column definition demo -->
<!--
<data-columns>
<data-column key="name" title="NAME" class="full-width name-column"></data-column>
<data-column key="created" title="Created" class="hidden"></data-column>
</data-columns>
-->
</activiti-process-instance-list>
</div>
<div class="mdl-cell task-column mdl-shadow--2dp" *ngIf="!isStartProcessMode()"
[class.mdl-cell--7-col]="processFilter && !isStartProcessMode()"
[class.mdl-cell--10-col]="!processFilter || isStartProcessMode()">
<activiti-process-instance-details
[processInstanceId]="currentProcessInstanceId"
(processCancelled)="processCancelled()"
(showProcessDiagram)="onShowProcessDiagram($event)"
(taskClick)="onProcessDetailsTaskClick($event)">
</activiti-process-instance-details>
<hr>
<div *ngIf="currentProcessInstanceId">
{{'PS-TAB.START-PROCESS' | translate}}
<button adf-process-audit
[process-id]="currentProcessInstanceId"
[download]="true" md-icon-button
[format]="'pdf'"
(clicked)="onAuditClick($event)"
(error)="onAuditError($event)">
<md-icon>assignment_ind</md-icon>
</button>
<hr>
</div>
<md-card>
<md-card-content>
<activiti-process-attachments
[processId]="currentProcessInstanceId">
</activiti-process-attachments>
</md-card-content>
</md-card>
</div>
<div class="mdl-cell mdl-cell--10-col task-column mdl-shadow--2dp"
*ngIf="isStartProcessMode()">
<adf-start-process
[appId]="appId"
(start)="onStartProcessInstance($event)"
(cancel)="onCancelProcessInstance()">
</adf-start-process>
</div>
</div>
</section>
<!-- PROCESS COMPONENT -->
<section class="mdl-layout__tab-panel" id="processes">
<div class="page-content">
<div class="page-content">
<div class="mdl-grid">
<div class="mdl-cell mdl-cell--2-col task-column">
<span>Process Filters</span>
<button type="button" (click)="navigateStartProcess()" class="mdl-button" data-automation-id="btn-start-process">Start Process</button>
<activiti-process-instance-filters [appId]="appId"
(filterClick)="onProcessFilterClick($event)" (onSuccess)="onSuccessProcessFilterList($event)"
#activitiprocessfilter></activiti-process-instance-filters>
</div>
<div class="mdl-cell mdl-cell--3-col task-column">
<span>Process List</span>
<activiti-process-instance-list *ngIf="processFilter?.hasFilter()" [appId]="processFilter.appId"
[processDefinitionKey]="processFilter.filter.processDefinitionKey"
[name]="processFilter.filter.name"
[state]="processFilter.filter.state"
[sort]="processFilter.filter.sort"
[data]="dataProcesses"
(rowClick)="onProcessRowClick($event)" (onSuccess)="onSuccessProcessList($event)"
#activitiprocesslist></activiti-process-instance-list>
</div>
<div class="mdl-cell mdl-cell--7-col task-column" *ngIf="!isStartProcessMode()">
<span>Process Details</span>
<activiti-process-instance-details [processInstanceId]="currentProcessInstanceId" (activitiprocesslist)="taskFormCompleted()" (processCancelled)="processCancelled()" #activitiprocessdetails></activiti-process-instance-details>
</div>
<div class="mdl-cell mdl-cell--7-col task-column" *ngIf="isStartProcessMode()">
<span>Start Process</span>
<activiti-start-process [appId]="appId" (start)="onStartProcessInstance($event)"></activiti-start-process>
</div>
</div>
</div>
</md-tab>
<md-tab id="report-header" href="#report" (click)="activeTab = 'reports'"
label="{{'PS-TAB.REPORTS-TAB' | translate}}">
<div class="mdl-grid">
<div class="mdl-cell mdl-cell--4-col task-column mdl-shadow--2dp">
<span><h5>Report List</h5></span>
<hr>
<analytics-report-list
[appId]="appId"
[selectFirst]="selectFirstReport"
(reportClick)="onReportClick($event)"
#analyticsreportlist>
</analytics-report-list>
</div>
<div class="mdl-cell mdl-cell--8-col task-column mdl-shadow--2dp">
<activiti-analytics
*ngIf="report"
[appId]="appId"
[reportId]="report.id"
[hideParameters]="false"
(editReport)="onEditReport($event)"
(reportSaved)="onReportSaved($event)"
(reportDeleted)="onReportDeleted()">
</activiti-analytics>
<div *ngIf="!report">
<span>{{'ANALYTICS_REPORT.NO_REPORT_MESSAGE' | translate}}</span>
</div>
</div>
</section>
</div>
</md-tab>
</md-tab-group>
<!-- ANALYTICS COMPONENT -->
<section class="mdl-layout__tab-panel" id="report">
<div class="page-content">
<div class="mdl-grid">
<div class="mdl-cell mdl-cell--4-col task-column mdl-shadow--2dp">
<analytics-report-list (reportClick)="onReportClick($event)"></analytics-report-list>
</div>
<div class="mdl-cell mdl-cell--8-col task-column mdl-shadow--2dp">
<activiti-analytics [appId]="appId" *ngIf="report" [reportId]="report.id"></activiti-analytics>
</div>
</div>
</div>
</section>
</main>
<div *ngIf="fileShowed">
<alfresco-viewer
[(showViewer)]="fileShowed"
[blobFile]="content"
[displayName]="contentName"
[overlayMode]="true">
</alfresco-viewer>
</div>
@@ -15,221 +15,427 @@
* limitations under the License.
*/
import { Component, AfterViewChecked, ViewChild, Input } from '@angular/core';
// tslint:disable-next-line:adf-file-name
import { AfterViewInit, Component, ElementRef, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import { Pagination } from 'alfresco-js-api';
import { AnalyticsReportListComponent } from 'ng2-activiti-analytics';
import { FORM_FIELD_VALIDATORS, FormEvent, FormFieldEvent, FormRenderingService, FormService } from 'ng2-activiti-form';
import {
AppDefinitionRepresentationModel,
FilterRepresentationModel,
ActivitiApps,
ActivitiTaskList
} from 'ng2-activiti-tasklist';
import {
ActivitiProcessInstanceListComponent,
ActivitiStartProcessInstance,
ProcessInstance
FilterProcessRepresentationModel,
ProcessFiltersComponent,
ProcessInstance,
ProcessInstanceDetailsComponent,
ProcessInstanceListComponent,
StartProcessInstanceComponent
} from 'ng2-activiti-processlist';
import { ActivatedRoute } from '@angular/router';
import { Subscription } from 'rxjs/Rx';
import {
ObjectDataTableAdapter,
DataSorting
AppsListComponent,
FilterRepresentationModel,
TaskDetailsComponent,
TaskDetailsEvent,
TaskFiltersComponent,
TaskListComponent,
TaskListService
} from 'ng2-activiti-tasklist';
import { AlfrescoApiService } from 'ng2-alfresco-core';
import {
DataSorting,
ObjectDataRow,
ObjectDataTableAdapter
} from 'ng2-alfresco-datatable';
import { FormRenderingService } from 'ng2-activiti-form';
import { Subscription } from 'rxjs/Rx';
import { /*CustomEditorComponent*/ CustomStencil01 } from './custom-editor/custom-editor.component';
import { DemoFieldValidator } from './demo-field-validator';
declare let __moduleName: string;
declare var componentHandler;
const currentProcessIdNew = '__NEW__';
const currentTaskIdNew = '__NEW__';
@Component({
moduleId: __moduleName,
selector: 'activiti-demo',
templateUrl: './activiti-demo.component.html',
styleUrls: ['./activiti-demo.component.css']
})
export class ActivitiDemoComponent implements AfterViewChecked {
export class ActivitiDemoComponent implements AfterViewInit, OnDestroy, OnInit {
@ViewChild('activitiapps')
activitiapps: ActivitiApps;
@ViewChild(TaskFiltersComponent)
activitifilter: TaskFiltersComponent;
@ViewChild('activitifilter')
activitifilter: any;
@ViewChild(TaskListComponent)
taskList: TaskListComponent;
@ViewChild('activitidetails')
activitidetails: any;
@ViewChild(ProcessFiltersComponent)
activitiprocessfilter: ProcessFiltersComponent;
@ViewChild(ActivitiTaskList)
activititasklist: ActivitiTaskList;
@ViewChild(ProcessInstanceListComponent)
processList: ProcessInstanceListComponent;
@ViewChild('activitiprocessfilter')
activitiprocessfilter: any;
@ViewChild(ProcessInstanceDetailsComponent)
activitiprocessdetails: ProcessInstanceDetailsComponent;
@ViewChild(ActivitiProcessInstanceListComponent)
activitiprocesslist: ActivitiProcessInstanceListComponent;
@ViewChild(TaskDetailsComponent)
activitidetails: TaskDetailsComponent;
@ViewChild('activitiprocessdetails')
activitiprocessdetails: any;
@ViewChild(StartProcessInstanceComponent)
activitiStartProcess: StartProcessInstanceComponent;
@ViewChild(ActivitiStartProcessInstance)
activitiStartProcess: ActivitiStartProcessInstance;
@ViewChild('tabmain')
tabMain: any;
@ViewChild('tabheader')
tabHeader: any;
@ViewChild(AnalyticsReportListComponent)
analyticsreportlist: AnalyticsReportListComponent;
@Input()
appId: number;
appId: number = null;
fileShowed: boolean = false;
selectFirstReport: boolean = false;
content: Blob;
contentName: string;
layoutType: string;
currentTaskId: string;
currentProcessInstanceId: string;
taskSchemaColumns: any [] = [];
taskPagination: Pagination = {
skipCount: 0,
maxItems: 2,
totalItems: 0
};
taskPage: number = 0;
processSchemaColumns: any [] = [];
activeTab: string = 'tasks'; // tasks|processes|reports
taskFilter: FilterRepresentationModel;
report: any;
processFilter: FilterRepresentationModel;
processFilter: FilterProcessRepresentationModel;
sub: Subscription;
blobFile: any;
flag: boolean = true;
dataTasks: ObjectDataTableAdapter;
dataProcesses: ObjectDataTableAdapter;
constructor(private route: ActivatedRoute, private formRenderingService: FormRenderingService) {
this.dataTasks = new ObjectDataTableAdapter(
[],
[
{type: 'text', key: 'name', title: 'Name', cssClass: 'full-width name-column', sortable: true},
{type: 'text', key: 'created', title: 'Created', cssClass: 'hidden', sortable: true}
]
);
fieldValidators = [
...FORM_FIELD_VALIDATORS,
new DemoFieldValidator()
];
constructor(private elementRef: ElementRef,
private route: ActivatedRoute,
private router: Router,
private taskListService: TaskListService,
private apiService: AlfrescoApiService,
formRenderingService: FormRenderingService,
formService: FormService) {
this.dataTasks = new ObjectDataTableAdapter();
this.dataTasks.setSorting(new DataSorting('created', 'desc'));
this.dataProcesses = new ObjectDataTableAdapter(
[],
[
{type: 'text', key: 'name', title: 'Name', cssClass: 'full-width name-column'},
{type: 'text', key: 'started', title: 'Started', cssClass: 'hidden'}
{ type: 'text', key: 'name', title: 'Name', cssClass: 'full-width name-column', sortable: true },
{ type: 'text', key: 'started', title: 'Started', cssClass: 'hidden', sortable: true }
]
);
this.dataProcesses.setSorting(new DataSorting('started', 'desc'));
// Uncomment this line to replace all 'text' field editors with custom component
// formRenderingService.setComponentTypeResolver('text', () => CustomEditorComponent, true);
// Uncomment this line to map 'custom_stencil_01' to local editor component
formRenderingService.setComponentTypeResolver('custom_stencil_01', () => CustomStencil01, true);
formService.formLoaded.subscribe((e: FormEvent) => {
console.log(`Form loaded: ${e.form.id}`);
});
formService.formFieldValueChanged.subscribe((e: FormFieldEvent) => {
console.log(`Field value changed. Form: ${e.form.id}, Field: ${e.field.id}, Value: ${e.field.value}`);
});
// Uncomment this block to see form event handling in action
/*
formService.formEvents.subscribe((event: Event) => {
console.log('Event fired:' + event.type);
console.log('Event Target:' + event.target);
});
*/
}
onPrevPage(pagination: Pagination): void {
this.taskPagination.skipCount = pagination.skipCount;
this.taskPage--;
}
onNextPage(pagination: Pagination): void {
this.taskPagination.skipCount = pagination.skipCount;
this.taskPage++;
}
onChangePageSize(pagination: Pagination): void {
const { skipCount, maxItems } = pagination;
this.taskPage = this.currentPage(skipCount, maxItems);
this.taskPagination.maxItems = maxItems;
this.taskPagination.skipCount = skipCount;
}
onChangePageNumber(pagination: Pagination): void {
const { maxItems, skipCount } = pagination;
this.taskPage = this.currentPage(skipCount, maxItems);
this.taskPagination.maxItems = maxItems;
this.taskPagination.skipCount = skipCount;
}
currentPage(skipCount: number, maxItems: number): number {
return (skipCount && maxItems) ? Math.floor(skipCount / maxItems) : 0;
}
ngOnInit() {
this.sub = this.route.params.subscribe(params => {
this.appId = params['appId'];
this.taskListService.tasksList$.subscribe(
(tasks) => {
this.taskPagination = {count: tasks.data.length, maxItems: this.taskPagination.maxItems, skipCount: this.taskPagination.skipCount, totalItems: tasks.total};
console.log({count: tasks.data.length, maxItems: this.taskPagination.maxItems, skipCount: this.taskPagination.skipCount, totalItems: tasks.total});
}, (err) => {
console.log('err');
});
this.layoutType = ActivitiApps.LAYOUT_GRID;
if (this.router.url.includes('processes') ) {
this.activeTab = 'processes';
}
this.sub = this.route.params.subscribe(params => {
let applicationId = params['appId'];
if (applicationId && applicationId !== '0') {
this.appId = params['appId'];
}
this.taskFilter = null;
this.currentTaskId = null;
this.processFilter = null;
this.currentProcessInstanceId = null;
});
this.layoutType = AppsListComponent.LAYOUT_GRID;
}
ngOnDestroy() {
this.sub.unsubscribe();
}
onAppClick(app: AppDefinitionRepresentationModel) {
this.appId = app.id;
this.taskFilter = null;
this.currentTaskId = null;
this.processFilter = null;
this.currentProcessInstanceId = null;
this.changeTab('apps', 'tasks');
onTaskFilterClick(filter: FilterRepresentationModel): void {
this.applyTaskFilter(filter);
}
changeTab(origin: string, destination: string) {
this.tabMain.nativeElement.children[origin].classList.remove('is-active');
this.tabMain.nativeElement.children[destination].classList.add('is-active');
this.tabHeader.nativeElement.children[`${origin}-header`].classList.remove('is-active');
this.tabHeader.nativeElement.children[`${destination}-header`].classList.add('is-active');
}
onTaskFilterClick(event: FilterRepresentationModel) {
this.taskFilter = event;
}
onReportClick(event: any) {
onReportClick(event: any): void {
this.report = event;
}
onSuccessTaskFilterList(event: any) {
this.taskFilter = this.activitifilter.getCurrentFilter();
onSuccessTaskFilterList(event: any): void {
this.applyTaskFilter(this.activitifilter.getCurrentFilter());
}
onStartTaskSuccess(event: any) {
this.activititasklist.reload();
applyTaskFilter(filter: FilterRepresentationModel) {
this.taskFilter = filter;
if (filter && this.taskList) {
this.taskList.hasCustomDataSource = false;
}
}
onStartTaskSuccess(event: any): void {
this.activitifilter.selectFilterWithTask(event.id);
this.currentTaskId = event.id;
}
onCancelStartTask() {
this.currentTaskId = null;
this.reloadTaskFilters();
}
onSuccessTaskList(event: FilterRepresentationModel) {
this.currentTaskId = this.activititasklist.getCurrentId();
this.currentTaskId = this.taskList.getCurrentId();
}
onProcessFilterClick(event: FilterRepresentationModel) {
onProcessFilterClick(event: FilterProcessRepresentationModel): void {
this.currentProcessInstanceId = null;
this.processFilter = event;
}
onSuccessProcessFilterList(event: any) {
onSuccessProcessFilterList(): void {
this.processFilter = this.activitiprocessfilter.getCurrentFilter();
}
onSuccessProcessList(event: any) {
this.currentProcessInstanceId = this.activitiprocesslist.getCurrentId();
onSuccessProcessList(event: any): void {
this.currentProcessInstanceId = this.processList.getCurrentId();
}
onTaskRowClick(taskId) {
onTaskRowClick(taskId): void {
this.currentTaskId = taskId;
}
onProcessRowClick(processInstanceId) {
onProcessRowClick(processInstanceId): void {
this.currentProcessInstanceId = processInstanceId;
}
navigateStartProcess() {
onEditReport(name: string): void {
this.analyticsreportlist.reload();
}
onReportSaved(reportId): void {
this.analyticsreportlist.reload(reportId);
}
onReportDeleted(): void {
this.analyticsreportlist.reload();
this.analyticsreportlist.selectReport(null);
}
navigateStartProcess(): void {
this.resetProcessFilters();
this.reloadProcessFilters();
this.currentProcessInstanceId = currentProcessIdNew;
}
onStartProcessInstance(instance: ProcessInstance) {
this.currentProcessInstanceId = instance.id;
this.activitiStartProcess.reset();
navigateStartTask(): void {
this.resetTaskFilters();
this.reloadTaskFilters();
this.currentTaskId = currentTaskIdNew;
}
isStartProcessMode() {
onStartProcessInstance(instance: ProcessInstance): void {
this.currentProcessInstanceId = instance.id;
this.activitiStartProcess.reset();
this.resetProcessFilters();
}
onCancelProcessInstance() {
this.currentProcessInstanceId = null;
this.reloadProcessFilters();
}
isStartProcessMode(): boolean {
return this.currentProcessInstanceId === currentProcessIdNew;
}
processCancelled(data: any) {
isStartTaskMode(): boolean {
return this.currentTaskId === currentTaskIdNew;
}
processCancelled(data: any): void {
this.currentProcessInstanceId = null;
this.activitiprocesslist.reload();
this.processList.reload();
}
onSuccessNewProcess(data: any) {
this.activitiprocesslist.reload();
onSuccessNewProcess(data: any): void {
this.processList.reload();
}
taskFormCompleted(data: any) {
this.activitiprocesslist.reload();
}
onFormCompleted(form) {
this.activititasklist.reload();
onFormCompleted(form): void {
this.currentTaskId = null;
this.taskPagination.totalItems--;
const { skipCount, maxItems, totalItems } = this.taskPagination;
if (totalItems > 0 && (skipCount >= totalItems)) {
this.taskPagination.skipCount -= maxItems;
}
this.taskPage = this.currentPage(this.taskPagination.skipCount, maxItems);
this.taskList.reload();
}
ngAfterViewChecked() {
onFormContentClick(content: any): void {
this.fileShowed = true;
this.content = content.contentBlob;
this.contentName = content.name;
}
onAuditClick(event: any) {
console.log(event);
}
onAuditError(event: any): void {
console.error('My custom error message' + event);
}
onTaskCreated(data: any): void {
this.currentTaskId = data.parentTaskId;
this.taskList.reload();
}
onTaskDeleted(data: any): void {
this.taskList.reload();
}
ngAfterViewInit() {
// workaround for MDL issues with dynamic components
if (componentHandler) {
componentHandler.upgradeAllRegistered();
}
this.loadStencilScriptsInPageFromActiviti();
}
loadStencilScriptsInPageFromActiviti() {
this.apiService.getInstance().activiti.scriptFileApi.getControllers().then(response => {
if (response) {
let s = document.createElement('script');
s.type = 'text/javascript';
s.text = response;
this.elementRef.nativeElement.appendChild(s);
}
});
}
onShowProcessDiagram(event: any): void {
this.router.navigate(['/activiti/apps/' + this.appId + '/diagram/' + event.value]);
}
onProcessDetailsTaskClick(event: TaskDetailsEvent): void {
event.preventDefault();
this.activeTab = 'tasks';
const taskId = event.value.id;
const processTaskDataRow = new ObjectDataRow({
id: taskId,
name: event.value.name || 'No name',
created: event.value.created
});
this.activitifilter.selectFilter(null);
this.taskList.setCustomDataSource([processTaskDataRow]);
this.taskList.selectTask(taskId);
this.currentTaskId = taskId;
}
private resetProcessFilters(): void {
this.processFilter = null;
}
private resetTaskFilters(): void {
this.taskFilter = null;
}
private reloadProcessFilters(): void {
this.activitiprocessfilter.selectFilter(this.activitiprocessfilter.getCurrentFilter());
}
private reloadTaskFilters(): void {
this.activitifilter.selectFilter(this.activitifilter.getCurrentFilter());
}
onRowClick(event): void {
console.log(event);
}
onRowDblClick(event): void {
console.log(event);
}
isTaskCompleted(): boolean {
return this.activitidetails.isCompletedTask();
}
onAssignTask() {
this.taskList.reload();
this.currentTaskId = null;
}
}
@@ -0,0 +1,3 @@
adf-create-process-attachment >>> button {
float: right;
}
@@ -0,0 +1,29 @@
<div id="attachment-process-list" *ngIf="processId">
<h5>Attachments</h5>
<div class="adf-no-form-container">
<adf-upload-drag-area
[parentId]="processId"
[showNotificationBar]="false">
<adf-process-attachment-list #processAttachList
*ngIf="processId"
[processInstanceId]="processId"
(attachmentClick)="onAttachmentClick($event)">
</adf-process-attachment-list>
</adf-upload-drag-area>
<adf-create-process-attachment
[processInstanceId]="processId"
(success)="onFileUploadComplete($event)">
</adf-create-process-attachment>
</div>
</div>
<div *ngIf="fileShowed">
<alfresco-viewer
[(showViewer)]="fileShowed"
[blobFile]="content"
[displayName]="contentName"
[overlayMode]="true">
</alfresco-viewer>
</div>
@@ -0,0 +1,61 @@
/*!
* @license
* Copyright 2016 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, Input, OnInit, ViewChild } from '@angular/core';
import { ProcessAttachmentListComponent, ProcessUploadService } from 'ng2-activiti-processlist';
import { UploadService } from 'ng2-alfresco-core';
@Component({
selector: 'activiti-process-attachments',
templateUrl: './activiti-process-attachments.component.html',
styleUrls: ['./activiti-process-attachments.component.css'],
providers: [
{ provide: UploadService, useClass: ProcessUploadService }
]
})
export class ActivitiProcessAttachmentsComponent implements OnInit {
@Input()
processId: string;
@ViewChild(ProcessAttachmentListComponent)
processAttachList: ProcessAttachmentListComponent;
fileShowed: boolean = false;
content: Blob;
contentName: string;
constructor(private uploadService: UploadService) {
}
ngOnInit() {
this.uploadService.fileUploadComplete.subscribe(value => this.onFileUploadComplete(value.data));
}
onFileUploadComplete(content: any) {
this.processAttachList.add(content);
}
onAttachmentClick(content: any): void {
this.fileShowed = true;
this.content = content.contentBlob;
this.contentName = content.name;
}
}
@@ -0,0 +1,4 @@
<div>
<button md-mini-fab (click)="onClickBack()" ><md-icon>keyboard_backspace</md-icon></button>
<activiti-diagram [processInstanceId]="processDefinitionId"></activiti-diagram>
</div>
@@ -0,0 +1,43 @@
/*!
* @license
* Copyright 2016 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 { ActivatedRoute, Router } from '@angular/router';
@Component({
selector: 'activiti-show-diagram',
templateUrl: './activiti-show-diagram.component.html',
styleUrls: ['./activiti-show-diagram.component.css']
})
export class ActivitiShowDiagramComponent {
processDefinitionId: string;
appId: string;
constructor(private route: ActivatedRoute,
private router: Router) {
this.route.params.subscribe(params => {
this.processDefinitionId = params['processDefinitionId'];
this.appId = params['appId'];
});
}
onClickBack() {
this.router.navigate(['/activiti/apps/' + this.appId + '/processes']);
}
}
@@ -0,0 +1,3 @@
adf-create-task-attachment >>> button {
float: right;
}
@@ -0,0 +1,29 @@
<div id="attachment-task-list" *ngIf="taskId">
<h5>Attachments</h5>
<div class="adf-no-form-container">
<adf-upload-drag-area
[parentId]="taskId"
[showNotificationBar]="false">
<adf-task-attachment-list #taskAttachList
*ngIf="taskId"
[taskId]="taskId"
(attachmentClick)="onAttachmentClick($event)">
</adf-task-attachment-list>
</adf-upload-drag-area>
<adf-create-task-attachment
[taskId]="taskId"
(success)="onFileUploadComplete($event)">
</adf-create-task-attachment>
</div>
</div>
<div *ngIf="fileShowed">
<alfresco-viewer
[(showViewer)]="fileShowed"
[blobFile]="content"
[displayName]="contentName"
[overlayMode]="true">
</alfresco-viewer>
</div>
@@ -0,0 +1,61 @@
/*!
* @license
* Copyright 2016 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, Input, OnInit, ViewChild } from '@angular/core';
import { ProcessUploadService, TaskAttachmentListComponent } from 'ng2-activiti-tasklist';
import { UploadService } from 'ng2-alfresco-core';
@Component({
selector: 'activiti-task-attachments',
templateUrl: './activiti-task-attachments.component.html',
styleUrls: ['./activiti-task-attachments.component.css'],
providers: [
{ provide: UploadService, useClass: ProcessUploadService }
]
})
export class ActivitiTaskAttachmentsComponent implements OnInit {
@Input()
taskId: string;
@ViewChild(TaskAttachmentListComponent)
taskAttachList: TaskAttachmentListComponent;
fileShowed: boolean = false;
content: Blob;
contentName: string;
constructor(private uploadService: UploadService) {
}
ngOnInit() {
this.uploadService.fileUploadComplete.subscribe(value => this.onFileUploadComplete(value.data));
}
onFileUploadComplete(content: any) {
this.taskAttachList.add(content);
}
onAttachmentClick(content: any): void {
this.fileShowed = true;
this.content = content.contentBlob;
this.contentName = content.name;
}
}
@@ -0,0 +1,37 @@
/*!
* @license
* Copyright 2016 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 { Router } from '@angular/router';
import { AppDefinitionRepresentationModel } from 'ng2-activiti-tasklist';
@Component({
selector: 'activiti-apps-view',
template: `
<activiti-apps (appClick)="onAppClicked($event)"></activiti-apps>
`
})
export class ActivitiAppsViewComponent {
constructor(private router: Router) {
}
onAppClicked(app: AppDefinitionRepresentationModel) {
this.router.navigate(['/activiti/apps', app.id || 0, 'tasks']);
}
}
@@ -1,4 +1,23 @@
import { NgModule, Component } from '@angular/core';
/*!
* @license
* Copyright 2016 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.
*/
/* tslint:disable */
import { Component, NgModule } from '@angular/core';
import { WidgetComponent } from 'ng2-activiti-form';
@Component({
@@ -7,17 +26,29 @@ import { WidgetComponent } from 'ng2-activiti-form';
<div style="color: red">Look, I'm a custom editor!</div>
`
})
export class CustomEditorComponent extends WidgetComponent {}
export class CustomEditorComponent extends WidgetComponent {
constructor() {
super();
}
}
@Component({
selector: 'custom-stencil-01',
template: `<div style="color: green">ADF version of custom Activiti stencil</div>`
})
export class CustomStencil01 extends WidgetComponent {}
export class CustomStencil01 extends WidgetComponent {
constructor() {
super();
}
}
@NgModule({
declarations: [ CustomEditorComponent, CustomStencil01 ],
exports: [ CustomEditorComponent, CustomStencil01 ],
entryComponents: [ CustomEditorComponent, CustomStencil01 ]
})
export class CustomEditorsModule {}
export class CustomEditorsModule {
}
@@ -0,0 +1,36 @@
/*!
* @license
* Copyright 2016 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 { FormFieldModel, FormFieldTypes, FormFieldValidator } from 'ng2-activiti-form';
export class DemoFieldValidator implements FormFieldValidator {
isSupported(field: FormFieldModel): boolean {
return field && field.type === FormFieldTypes.TEXT;
}
validate(field: FormFieldModel): boolean {
if (this.isSupported(field)) {
if (field.value && field.value.toLowerCase() === 'admin') {
field.validationSummary = 'Sorry, the value cannot be "admin".';
return false;
}
}
return true;
}
}
@@ -15,20 +15,16 @@
* limitations under the License.
*/
import { Component, OnInit, OnDestroy, AfterViewChecked } from '@angular/core';
import { Component, OnDestroy, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { Subscription } from 'rxjs/Rx';
declare let __moduleName: string;
declare var componentHandler;
@Component({
moduleId: __moduleName,
selector: 'form-node-viewer',
templateUrl: './form-node-viewer.component.html',
styleUrls: ['./form-node-viewer.component.css']
})
export class FormNodeViewer implements OnInit, OnDestroy, AfterViewChecked {
export class FormNodeViewerComponent implements OnInit, OnDestroy {
nodeId: string;
@@ -47,11 +43,4 @@ export class FormNodeViewer implements OnInit, OnDestroy, AfterViewChecked {
this.sub.unsubscribe();
}
ngAfterViewChecked() {
// workaround for MDL issues with dynamic components
if (componentHandler) {
componentHandler.upgradeAllRegistered();
}
}
}
@@ -15,20 +15,16 @@
* limitations under the License.
*/
import { Component, OnInit, OnDestroy, AfterViewChecked } from '@angular/core';
import { Component, OnDestroy, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { Subscription } from 'rxjs/Rx';
declare let __moduleName: string;
declare var componentHandler;
@Component({
moduleId: __moduleName,
selector: 'form-viewer',
templateUrl: './form-viewer.component.html',
styleUrls: ['./form-viewer.component.css']
})
export class FormViewer implements OnInit, OnDestroy, AfterViewChecked {
export class FormViewerComponent implements OnInit, OnDestroy {
taskId: string;
@@ -47,11 +43,4 @@ export class FormViewer implements OnInit, OnDestroy, AfterViewChecked {
this.sub.unsubscribe();
}
ngAfterViewChecked() {
// workaround for MDL issues with dynamic components
if (componentHandler) {
componentHandler.upgradeAllRegistered();
}
}
}
@@ -0,0 +1,10 @@
alfresco-datatable >>> .custom-row-style.alfresco-datatable__row:focus {
outline-offset: -1px;
outline-width: 1px;
outline-color: green;
outline-style: solid;
}
alfresco-datatable >>> .custom-row-style.alfresco-datatable__row--selected {
color: green;
}
@@ -1,31 +1,41 @@
<div class="p-10">
<alfresco-datatable [data]="data" [multiselect]="multiselect"></alfresco-datatable>
<alfresco-datatable
[data]="data"
[selectionMode]="selectionMode"
[multiselect]="multiselect"
[actions]="true"
rowStyleClass="custom-row-style"
(showRowActionsMenu)="onShowRowActionsMenu($event)"
(executeRowAction)="onExecuteRowAction($event)"
(row-click)="onRowClick($event)"
(row-dblclick)="onRowDblClick($event)">
<!-- HTML column definition demo -->
<!--
<data-columns>
<data-column type="image" key="icon" [sortable]="false"></data-column>
<data-column key="id" title="Id"></data-column>
<data-column key="createdOn" title="Created"></data-column>
<data-column key="name" title="Name" class="full-width name-column"></data-column>
<data-column key="createdBy.name" title="Created By"></data-column>
</data-columns>
-->
</alfresco-datatable>
</div>
<div class="p-10" data-automation-id="multiselect">
<md-checkbox [(ngModel)]="multiselect">Multiselect</md-checkbox>
</div>
<div class="p-10">
<label class="mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect" for="checkbox-1">
<input type="checkbox" id="checkbox-1" class="mdl-checkbox__input" [(ngModel)]="multiselect">
<span class="mdl-checkbox__label">Multiselect</span>
</label>
<p>For 'Multiple' selection mode use Cmd (macOS) or Ctrl (Win) to toggle selection of multiple items.</p>
<md-select placeholder="Selection Mode" [(ngModel)]="selectionMode" name="food">
<md-option *ngFor="let mode of selectionModes" [value]="mode.value">
{{mode.viewValue}}
</md-option>
</md-select>
</div>
<div class="p-10">
<button
class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--colored"
(click)="reset()">
Reset to default
</button>
<button
class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--colored"
(click)="addRow()">
Add row
</button>
<button
class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--colored"
(click)="replaceRows()">
Replace rows
</button>
<button
class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--colored"
(click)="replaceColumns()">
Replace columns
</button>
<button md-raised-button (click)="reset()">Reset to default</button>
<button md-raised-button (click)="addRow()">Add row</button>
<button md-raised-button (click)="replaceRows()">Replace rows</button>
<button md-raised-button (click)="replaceColumns()">Replace columns</button>
<button md-raised-button (click)="getRowForNode()">Load Node</button>
</div>
@@ -15,33 +15,37 @@
* limitations under the License.
*/
import { Component } from '@angular/core';
import {
ObjectDataTableAdapter,
DataSorting,
ObjectDataRow,
ObjectDataColumn
} from 'ng2-alfresco-datatable';
declare let __moduleName: string;
import { Component, Input } from '@angular/core';
import { AlfrescoApiService } from 'ng2-alfresco-core';
import { DataCellEvent, DataRowActionEvent, DataSorting, ObjectDataColumn, ObjectDataRow, ObjectDataTableAdapter } from 'ng2-alfresco-datatable';
import { Observable } from 'rxjs/Rx';
@Component({
moduleId: __moduleName,
selector: 'datatable-demo',
templateUrl: './datatable-demo.component.html'
templateUrl: './datatable-demo.component.html',
styleUrls: ['./datatable-demo.component.css']
})
export class DataTableDemoComponent {
multiselect: boolean = false;
data: ObjectDataTableAdapter;
@Input()
selectionMode = 'single';
selectionModes = [
{ value: 'none', viewValue: 'None' },
{ value: 'single', viewValue: 'Single' },
{ value: 'multiple', viewValue: 'Multiple' }
];
private _imageUrl: string = 'http://placehold.it/140x100';
private _createdBy: any = {
name: 'Denys Vuika',
email: 'denys.vuika@alfresco.com'
};
constructor() {
constructor(private apiService: AlfrescoApiService) {
this.reset();
}
@@ -78,11 +82,11 @@ export class DataTableDemoComponent {
}
],
[
{type: 'image', key: 'icon', title: '', srTitle: 'Thumbnail'},
{type: 'text', key: 'id', title: 'Id', sortable: true},
{type: 'text', key: 'createdOn', title: 'Created On', sortable: true},
{type: 'text', key: 'name', title: 'Name', cssClass: 'full-width name-column', sortable: true},
{type: 'text', key: 'createdBy.name', title: 'Created By', sortable: true}
{ type: 'image', key: 'icon', title: '', srTitle: 'Thumbnail' },
{ type: 'text', key: 'id', title: 'Id', sortable: true },
{ type: 'text', key: 'createdOn', title: 'Created On', sortable: true },
{ type: 'text', key: 'name', title: 'Name', cssClass: 'full-width name-column', sortable: true },
{ type: 'text', key: 'createdBy.name', title: 'Created By', sortable: true }
]
);
@@ -145,4 +149,58 @@ export class DataTableDemoComponent {
let columns = schema.map(col => new ObjectDataColumn(col));
this.data.setColumns(columns);
}
onShowRowActionsMenu(event: DataCellEvent) {
let myAction = {
title: 'Hello'
// you custom metadata needed for onExecuteRowAction
};
event.value.actions = [
myAction
];
}
onExecuteRowAction(event: DataRowActionEvent) {
let args = event.value;
console.log(args.row);
console.log(args.action);
window.alert(`My custom action: ${args.action.title}`);
}
onRowClick(event) {
console.log(event);
}
onRowDblClick(event) {
console.log(event);
}
getRowForNode() {
let opts: any = {
includeSource: true,
include: ['path', 'properties', 'allowableOperations']
};
Observable.fromPromise(this.apiService.getInstance().nodes
.getNodeInfo('-my-', opts)).subscribe((data) => {
console.log('FUnNy');
console.log(data);
let objects = new ObjectDataTableAdapter([
{
id: data.id,
name: data.name,
createdBy: data.createdByUser.displayName,
createdOn: new Date(data.createdAt),
icon: 'material-icons://face'
}],
[
{ type: 'image', key: 'icon', title: '', srTitle: 'Thumbnail' },
{ type: 'text', key: 'id', title: 'Id', sortable: true },
{ type: 'text', key: 'createdOn', title: 'Created On', sortable: true },
{ type: 'text', key: 'name', title: 'Name', cssClass: 'full-width name-column', sortable: true },
{ type: 'text', key: 'createdBy.name', title: 'Created By', sortable: true }
]);
this.data = objects;
});
}
}
@@ -0,0 +1,13 @@
<adf-toolbar>
<adf-toolbar-title>
<md-select [(ngModel)]="selectedSource">
<md-option *ngFor="let source of sources" [value]="source.value">
{{ source.title }}
</md-option>
</md-select>
</adf-toolbar-title>
</adf-toolbar>
<adf-document-list
[currentFolderId]="selectedSource"
locationFormat="/files">
</adf-document-list>
@@ -0,0 +1,39 @@
/*!
* @license
* Copyright 2016 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, Input } from '@angular/core';
@Component({
selector: 'adf-custom-sources-demo',
templateUrl: 'custom-sources.component.html'
})
export class CustomSourcesComponent {
@Input()
selectedSource = '-recent-';
sources = [
{ title: 'Favorites', value: '-favorites-' },
{ title: 'Recent', value: '-recent-' },
{ title: 'Shared Links', value: '-sharedlinks-' },
{ title: 'Sites', value: '-sites-' },
{ title: 'Trashcan', value: '-trashcan-' },
{ title: 'Root', value: '-root-' },
{ title: 'My', value: '-my-' },
{ title: 'Shared', value: '-shared-' }
];
}
@@ -7,3 +7,54 @@
margin: 0;
}
}
.error-message {
text-align: left;
}
.error-message--text {
color: #d50000;
}
.adf-not-overlay-viewer {
height:900px;
}
adf-document-list >>> adf-datatable tr.is-selected .image-table-cell {
position: relative;
}
adf-document-list >>> adf-datatable tr.document-list__create {
background: green !important;
}
adf-document-list >>> adf-datatable tr.document-list__disable {
background: red !important;
}
adf-document-list >>> adf-datatable tr.is-selected .image-table-cell::before {
content: "\E876"; /* "done" */
font-family: "Material Icons";
font-size: 24px;
line-height: 32px;
text-align: center;
color: white;
position: absolute;
width: 32px;
height: 32px;
top: 50%;
left: 50%;
margin-top: -16px;
margin-left: -28px;
border-radius: 100%;
background: #00bcd4;
}
.adf-demo-site-container-style {
margin-top: 10px;
margin-bottom: 10px;
width: 100%;
min-width: 200px;
}
@@ -1,196 +1,341 @@
<div *ngIf="!fileShowed">
<div class="container">
<alfresco-upload-drag-area
[currentFolderPath]="currentPath"
[versioning] = "versioning"
(onSuccess)="documentList.reload()">
<alfresco-document-list-breadcrumb
[currentFolderPath]="currentPath"
[target]="documentList">
</alfresco-document-list-breadcrumb>
<alfresco-document-list
#documentList
[currentFolderPath]="currentPath"
[contextMenuActions]="true"
[contentActions]="true"
(preview)="showFile($event)"
(folderChange)="onFolderChanged($event)">
<div class="container">
<div class="adf-demo-site-container-style" id="demo-container">
<adf-sites-dropdown (change)="getSiteContent($event)">
</adf-sites-dropdown>
</div>
<alfresco-upload-drag-area
[parentId]="documentList.currentFolderId"
[versioning]="versioning"
[adf-node-permission]="'create'"
[adf-nodes]="getCurrentDocumentListNode()">
<div *ngIf="errorMessage" class="error-message">
<button (click)="resetError()" md-icon-button>
<md-icon>highlight_off</md-icon>
</button>
<span class="error-message--text">{{errorMessage}}</span>
</div>
<adf-toolbar [color]="toolbarColor">
<adf-toolbar-title>
<adf-breadcrumb *ngIf="!useDropdownBreadcrumb"
class="files-breadcrumb"
root="Personal Files"
[target]="documentList"
[folderNode]="documentList.folderNode">
</adf-breadcrumb>
<adf-dropdown-breadcrumb *ngIf="useDropdownBreadcrumb"
class="files-breadcrumb"
[target]="documentList"
[folderNode]="documentList.folderNode">
</adf-dropdown-breadcrumb>
</adf-toolbar-title>
<adf-toolbar-divider></adf-toolbar-divider>
<button md-icon-button
(click)="onCreateFolderClicked($event)">
<md-icon>create_new_folder</md-icon>
</button>
<button md-icon-button
[disabled]="!hasSelection(documentList.selection)"
title="Download"
(click)="downloadNodes(documentList.selection)">
<md-icon>get_app</md-icon>
</button>
<button md-icon-button
adf-node-permission="delete"
[adf-nodes]="documentList.selection">
<md-icon>delete</md-icon>
</button>
<button md-icon-button [mdMenuTriggerFor]="themePicker">
<md-icon>format_color_fill</md-icon>
</button>
<md-menu #themePicker="mdMenu">
<button md-menu-item (click)="toolbarColor = 'default'">Default</button>
<button md-menu-item (click)="toolbarColor = 'primary'">Primary</button>
<button md-menu-item (click)="toolbarColor = 'accent'">Accent</button>
<button md-menu-item (click)="toolbarColor = 'warn'">Warn</button>
</md-menu>
<adf-toolbar-divider></adf-toolbar-divider>
<button md-icon-button [mdMenuTriggerFor]="menu">
<md-icon>more_vert</md-icon>
</button>
<md-menu #menu="mdMenu">
<button md-menu-item>
<md-icon>dialpad</md-icon>
<span>Redial</span>
</button>
<button md-menu-item disabled>
<md-icon>voicemail</md-icon>
<span>Check voicemail</span>
</button>
<button md-menu-item>
<md-icon>notifications_off</md-icon>
<span>Disable alerts</span>
</button>
</md-menu>
</adf-toolbar>
<adf-document-list
#documentList
[permissionsStyle]="permissionsStyle"
[currentFolderId]="currentFolderId"
[contextMenuActions]="true"
[contentActions]="true"
[allowDropFiles]="true"
[selectionMode]="selectionMode"
[multiselect]="multiselect"
(error)="onNavigationError($event)"
(success)="resetError()"
(preview)="showFile($event)"
(folderChange)="onFolderChange($event)"
(permissionError)="handlePermissionError($event)">
<data-columns>
<data-column
key="$thumbnail"
type="image"
[sortable]="false"
class="image-table-cell">
</data-column>
<data-column
key="name"
title="{{'DOCUMENT_LIST.COLUMNS.DISPLAY_NAME' | translate}}"
[formatTooltip]="getNodeNameTooltip"
class="full-width ellipsis-cell">
</data-column>
<!-- Location column demo -->
<!--
<empty-folder-content>
<template>
<h1>Sorry, no content here</h1>
</template>
</empty-folder-content>
<data-column
key="path"
type="location"
format="/files"
title="Location">
</data-column>
-->
<content-columns>
<content-column key="$thumbnail" type="image"></content-column>
<content-column
title="{{'DOCUMENT_LIST.COLUMNS.DISPLAY_NAME' | translate}}"
key="name"
sortable="true"
class="full-width ellipsis-cell">
</content-column>
<!--
<content-column
title="Type"
source="content.mimeType">
</content-column>
-->
<content-column
title="{{'DOCUMENT_LIST.COLUMNS.CREATED_BY' | translate}}"
key="createdByUser.displayName"
sortable="true"
class="desktop-only">
</content-column>
<content-column
title="{{'DOCUMENT_LIST.COLUMNS.CREATED_ON' | translate}}"
key="createdAt"
type="date"
format="medium"
sortable="true"
class="desktop-only">
</content-column>
</content-columns>
<data-column
key="content.sizeInBytes"
title="Size"
type="fileSize">
</data-column>
<!-- Notes: has performance overhead due to multiple files/folders causing separate HTTP calls to get tags -->
<!--
<data-column
title="{{'DOCUMENT_LIST.COLUMNS.TAG' | translate}}"
key="id"
class="full-width ellipsis-cell">
<ng-template let-entry="$implicit">
<alfresco-tag-node-list [nodeId]="entry.data.getValue(entry.row, entry.col)"></alfresco-tag-node-list>
</ng-template>
</data-column>
-->
<data-column
title="{{'DOCUMENT_LIST.COLUMNS.CREATED_BY' | translate}}"
key="createdByUser.displayName"
class="desktop-only">
</data-column>
<data-column
title="{{'DOCUMENT_LIST.COLUMNS.CREATED' | translate}}"
key="createdAt"
type="date"
format="timeAgo"
class="desktop-only">
</data-column>
</data-columns>
<content-actions>
<!-- folder actions -->
<content-action
target="folder"
title="{{'DOCUMENT_LIST.ACTIONS.FOLDER.SYSTEM_1' | translate}}"
handler="system1">
</content-action>
<content-action
target="folder"
title="{{'DOCUMENT_LIST.ACTIONS.FOLDER.CUSTOM' | translate}}"
(execute)="myFolderAction1($event)">
</content-action>
<content-action
target="folder"
title="{{'DOCUMENT_LIST.ACTIONS.FOLDER.DELETE' | translate}}"
handler="delete">
</content-action>
<!-- document actions -->
<content-action
target="document"
title="{{'DOCUMENT_LIST.ACTIONS.DOCUMENT.DOWNLOAD' | translate}}"
handler="download">
</content-action>
<content-action
target="document"
title="{{'DOCUMENT_LIST.ACTIONS.DOCUMENT.SYSTEM_2' | translate}}"
handler="system2">
</content-action>
<content-action
target="document"
title="{{'DOCUMENT_LIST.ACTIONS.DOCUMENT.CUSTOM' | translate}}"
(execute)="myCustomAction1($event)">
</content-action>
<content-action
target="document"
title="{{'DOCUMENT_LIST.ACTIONS.DOCUMENT.DELETE' | translate}}"
handler="delete">
</content-action>
<content-action
target="folder"
title="Activiti: View Form"
(execute)="viewActivitiForm($event)">
</content-action>
</content-actions>
</alfresco-document-list>
<alfresco-pagination
[provider]="documentList.data"
[supportedPageSizes]="[5, 10, 15, 20]">
</alfresco-pagination>
</alfresco-upload-drag-area>
</div>
<content-actions>
<!-- folder actions -->
<content-action
icon="content_copy"
target="folder"
title="{{'DOCUMENT_LIST.ACTIONS.FOLDER.COPY' | translate}}"
permission="update"
[disableWithNoPermission]="true"
(error)="onContentActionError($event)"
(success)="onContentActionSuccess($event)"
handler="copy">
</content-action>
<content-action
icon="redo"
target="folder"
title="{{'DOCUMENT_LIST.ACTIONS.FOLDER.MOVE' | translate}}"
permission="update"
[disableWithNoPermission]="true"
(error)="onContentActionError($event)"
(success)="onContentActionSuccess($event)"
handler="move">
</content-action>
<content-action
icon="delete"
target="folder"
permission="delete"
[disableWithNoPermission]="true"
title="{{'DOCUMENT_LIST.ACTIONS.FOLDER.DELETE' | translate}}"
(permissionEvent)="handlePermissionError($event)"
handler="delete">
</content-action>
<!-- document actions -->
<content-action
icon="content_copy"
target="document"
title="{{'DOCUMENT_LIST.ACTIONS.DOCUMENT.COPY' | translate}}"
permission="update"
[disableWithNoPermission]="true"
(error)="onContentActionError($event)"
(success)="onContentActionSuccess($event)"
handler="copy">
</content-action>
<content-action
icon="redo"
target="document"
title="{{'DOCUMENT_LIST.ACTIONS.DOCUMENT.MOVE' | translate}}"
permission="update"
[disableWithNoPermission]="true"
(error)="onContentActionError($event)"
(success)="onContentActionSuccess($event)"
handler="move">
</content-action>
<content-action
icon="delete"
target="document"
permission="delete"
[disableWithNoPermission]="true"
(permissionEvent)="handlePermissionError($event)"
title="{{'DOCUMENT_LIST.ACTIONS.DOCUMENT.DELETE' | translate}}"
(success)="onDeleteActionSuccess($event)"
handler="delete">
</content-action>
</content-actions>
</adf-document-list>
</alfresco-upload-drag-area>
</div>
<context-menu-holder></context-menu-holder>
<context-menu-holder></context-menu-holder>
<div class="p-10">
<ul>
<li>Current path: {{documentList.currentFolderPath}}</li>
<li>
<button (click)="documentList.currentFolderPath = '/Sites/swsdp/documentLibrary';">Go to Document Library</button>
</li>
<li>
<button (click)="documentList.currentFolderPath = '/Sites/swsdp/documentLibrary/Agency Files/Contracts'">Go to agency contracts</button>
</li>
<li>
<button (click)="documentList.currentFolderPath = '/'">Go to root</button>
</li>
<li>
<button (click)="fileDialog.toggleShowDialog()">Show/Hide File Dialog</button>
</li>
</ul>
</div>
<p>Current folder ID: {{ documentList.currentFolderId }}</p>
<div class="p-10">
Selected Nodes:
<ul>
<li *ngFor="let node of documentList.selection">
{{ node.entry.name }}
</li>
</ul>
</div>
<p style="width:250px;margin: 20px;">
<label for="switch-multiple-file" class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
<input type="checkbox" id="switch-multiple-file" class="mdl-switch__input" (change)="toggleMultipleFileUpload()" >
<span class="mdl-switch__label">Multiple File Upload</span>
</label>
</p>
<div class="container">
<section *ngIf="!useViewerDialog">
<md-slide-toggle [color]="'primary'" [(ngModel)]="useInlineViewer">Use inline viewer (no overlay)</md-slide-toggle>
</section>
<section>
<md-slide-toggle [color]="'primary'" [(ngModel)]="useViewerDialog">Use File Viewer dialog</md-slide-toggle>
</section>
<p style="width:250px;margin: 20px;">
<label for="switch-folder-upload" class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
<input type="checkbox" id="switch-folder-upload" class="mdl-switch__input" (change)="toggleFolder()">
<span class="mdl-switch__label">Folder Upload</span>
</label>
</p>
<section>
<md-slide-toggle [color]="'primary'" [(ngModel)]="multiselect">Multiselect (with checkboxes)</md-slide-toggle>
</section>
<p style="width:250px;margin: 20px;">
<label for="switch-accepted-file-type" class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
<input type="checkbox" id="switch-accepted-file-type" class="mdl-switch__input" (change)="toggleAcceptedFilesType()">
<span class="mdl-switch__label">Filter extension</span>
</label>
</p>
<section>
<md-slide-toggle [color]="'primary'" [(ngModel)]="useDropdownBreadcrumb">Dropdown breadcrumb</md-slide-toggle>
</section>
<p style="width:250px;margin: 20px;">
<label for="switch-versioning" class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
<input type="checkbox" id="switch-versioning" class="mdl-switch__input" (change)="toggleVersioning()">
<span class="mdl-switch__label">Versioning</span>
</label>
</p>
<section>
<md-slide-toggle [color]="'primary'" [(ngModel)]="multipleFileUpload">Multiple File Upload</md-slide-toggle>
</section>
<section>
<md-slide-toggle [color]="'primary'" [(ngModel)]="folderUpload">Folder upload</md-slide-toggle>
</section>
<section>
<md-slide-toggle [color]="'primary'" [(ngModel)]="acceptedFilesTypeShow">Custom extensions filter</md-slide-toggle>
</section>
<section>
<md-slide-toggle [color]="'primary'" [(ngModel)]="versioning">Enable versioning</md-slide-toggle>
</section>
<section>
<md-slide-toggle [color]="'primary'" [(ngModel)]="disableWithNoPermission">Disable upload button when user has no permissions</md-slide-toggle>
</section>
<h5>Upload</h5>
<br>
<div *ngIf="acceptedFilesTypeShow">
<label class="mdl-input__label">Extension accepted
<input type="text" data-automation-id="accepted-files-type" [(ngModel)]="acceptedFilesType">
</label>
<br/>
</div>
<section *ngIf="acceptedFilesTypeShow">
<md-input-container>
<input mdInput placeholder="Extension accepted" [(ngModel)]="acceptedFilesType" data-automation-id="accepted-files-type">
</md-input-container>
</section>
<div *ngIf="!acceptedFilesTypeShow">
<alfresco-upload-button data-automation-id="multiple-file-upload"
[currentFolderPath]="currentPath"
[multipleFiles]="multipleFileUpload"
[uploadFolders]="folderUpload"
[versioning] = "versioning"
(onSuccess)="documentList.reload()">
<div class="mdl-spinner mdl-js-spinner is-active"></div>
<alfresco-upload-button
#uploadButton
tooltip="Custom tooltip"
[disabled]="!enableUpload"
data-automation-id="multiple-file-upload"
[rootFolderId]="documentList.currentFolderId"
[multipleFiles]="multipleFileUpload"
[uploadFolders]="folderUpload"
[versioning]="versioning"
[adf-node-permission]="'create'"
[adf-nodes]="getCurrentDocumentListNode()"
(permissionEvent)="handlePermissionError($event)">
</alfresco-upload-button>
</div>
<div *ngIf="acceptedFilesTypeShow">
<alfresco-upload-button data-automation-id="multiple-file-upload"
[currentFolderPath]="currentPath"
acceptedFilesType="{{acceptedFilesType}}"
[multipleFiles]="multipleFileUpload"
[uploadFolders]="folderUpload"
[versioning] = "versioning"
(onSuccess)="documentList.reload()">
<div class="mdl-spinner mdl-js-spinner is-active"></div>
<alfresco-upload-button
#uploadButton
tooltip="Custom tooltip"
[disabled]="!enableUpload"
data-automation-id="multiple-file-upload"
[rootFolderId]="documentList.currentFolderId"
[acceptedFilesType]="acceptedFilesType"
[multipleFiles]="multipleFileUpload"
[uploadFolders]="folderUpload"
[versioning]="versioning"
[adf-node-permission]="'create'"
[adf-nodes]="getCurrentDocumentListNode()"
(permissionEvent)="handlePermissionError($event)">
</alfresco-upload-button>
</div>
<file-uploading-dialog #fileDialog></file-uploading-dialog>
<section>
<md-checkbox [(ngModel)]="enableUpload">Enable upload (demoing enabled/disabled state)</md-checkbox>
</section>
</div>
<div *ngIf="fileShowed">
<alfresco-viewer [(showViewer)]="fileShowed"
[fileNodeId]="fileNodeId"
[overlayMode]="true">
<div class="mdl-spinner mdl-js-spinner is-active"></div>
</alfresco-viewer>
<div class="p-10">
<p>For 'Multiple' selection mode use Cmd (macOS) or Ctrl (Win) to toggle selection of multiple items.</p>
<md-select placeholder="Selection Mode" [(ngModel)]="selectionMode" name="food">
<md-option *ngFor="let mode of selectionModes" [value]="mode.value">
{{mode.viewValue}}
</md-option>
</md-select>
</div>
<file-uploading-dialog #fileDialog></file-uploading-dialog>
<div *ngIf="showViewer">
<ng-container *ngIf="!useInlineViewer">
<alfresco-viewer
[(showViewer)]="showViewer"
[fileNodeId]="fileNodeId"
[overlayMode]="true">
<extension-viewer [supportedExtensions]="['obj','3DS']" #extension>
<ng-template let-urlFileContent="urlFileContent" let-extension="extension" >
<threed-viewer [urlFile]="urlFileContent" [extension]="extension" ></threed-viewer>
</ng-template>
</extension-viewer>
</alfresco-viewer>
</ng-container>
<ng-container *ngIf="useInlineViewer">
<div class="adf-not-overlay-viewer">
<alfresco-viewer
[(showViewer)]="showViewer"
[fileNodeId]="fileNodeId">
</alfresco-viewer>
</div>
</ng-container>
</div>
@@ -15,78 +15,109 @@
* limitations under the License.
*/
import { Component, OnInit, ViewChild } from '@angular/core';
import { Router } from '@angular/router';
import { AlfrescoAuthenticationService } from 'ng2-alfresco-core';
import { ChangeDetectorRef, Component, Input, OnInit, Optional, ViewChild } from '@angular/core';
import { MdDialog } from '@angular/material';
import { ActivatedRoute, Params, Router } from '@angular/router';
import { MinimalNodeEntity } from 'alfresco-js-api';
import {
DocumentActionsService,
DocumentList,
ContentActionHandler,
DocumentActionModel,
FolderActionModel
} from 'ng2-alfresco-documentlist';
import { FormService } from 'ng2-activiti-form';
AlfrescoApiService, AlfrescoContentService, AlfrescoTranslationService, CreateFolderDialogComponent,
DownloadZipDialogComponent, FileUploadEvent, FolderCreatedEvent, NotificationService,
SiteModel, UploadService
} from 'ng2-alfresco-core';
import { DataColumn, DataRow } from 'ng2-alfresco-datatable';
import { DocumentListComponent, PermissionStyleModel } from 'ng2-alfresco-documentlist';
declare let __moduleName: string;
import { ViewerService } from 'ng2-alfresco-viewer';
@Component({
moduleId: __moduleName,
selector: 'files-component',
selector: 'adf-files-component',
templateUrl: './files.component.html',
styleUrls: ['./files.component.css']
})
export class FilesComponent implements OnInit {
currentPath: string = '/Sites/swsdp/documentLibrary';
// The identifier of a node. You can also use one of these well-known aliases: -my- | -shared- | -root-
currentFolderId: string = '-my-';
errorMessage: string = null;
fileNodeId: any;
fileShowed: boolean = false;
showViewer: boolean = false;
toolbarColor = 'default';
useDropdownBreadcrumb = false;
useViewerDialog = true;
useInlineViewer = false;
selectionModes = [
{ value: 'none', viewValue: 'None' },
{ value: 'single', viewValue: 'Single' },
{ value: 'multiple', viewValue: 'Multiple' }
];
@Input()
selectionMode = 'multiple';
@Input()
multiselect = false;
@Input()
multipleFileUpload: boolean = false;
@Input()
disableWithNoPermission: boolean = false;
@Input()
folderUpload: boolean = false;
@Input()
acceptedFilesTypeShow: boolean = false;
@Input()
versioning: boolean = false;
@Input()
acceptedFilesType: string = '.jpg,.pdf,.js';
@ViewChild(DocumentList)
documentList: DocumentList;
@Input()
enableUpload: boolean = true;
constructor(private documentActions: DocumentActionsService,
public auth: AlfrescoAuthenticationService,
private formService: FormService,
private router: Router) {
documentActions.setHandler('my-handler', this.myDocumentActionHandler.bind(this));
}
@ViewChild(DocumentListComponent)
documentList: DocumentListComponent;
myDocumentActionHandler(obj: any) {
window.alert('my custom action handler');
}
permissionsStyle: PermissionStyleModel[] = [];
myCustomAction1(event) {
alert('Custom document action for ' + event.value.entry.name);
}
myFolderAction1(event) {
alert('Custom folder action for ' + event.value.entry.name);
constructor(private changeDetector: ChangeDetectorRef,
private apiService: AlfrescoApiService,
private notificationService: NotificationService,
private uploadService: UploadService,
private contentService: AlfrescoContentService,
private dialog: MdDialog,
private translateService: AlfrescoTranslationService,
private viewerService: ViewerService,
private router: Router,
@Optional() private route: ActivatedRoute) {
}
showFile(event) {
if (event.value.entry.isFile) {
this.fileNodeId = event.value.entry.id;
this.fileShowed = true;
if (this.useViewerDialog) {
if (event.value.entry.isFile) {
this.viewerService
.showViewerForNode(event.value.entry)
.then(result => {
console.log(result);
});
}
} else {
this.fileShowed = false;
if (event.value.entry.isFile) {
this.fileNodeId = event.value.entry.id;
this.showViewer = true;
} else {
this.showViewer = false;
}
}
}
onFolderChanged(event?: any) {
if (event) {
this.currentPath = event.path;
}
}
toggleMultipleFileUpload() {
this.multipleFileUpload = !this.multipleFileUpload;
return this.multipleFileUpload;
onFolderChange($event) {
this.router.navigate(['/files', $event.value.id]);
}
toggleFolder() {
@@ -95,48 +126,181 @@ export class FilesComponent implements OnInit {
return this.folderUpload;
}
toggleAcceptedFilesType() {
this.acceptedFilesTypeShow = !this.acceptedFilesTypeShow;
return this.acceptedFilesTypeShow;
}
toggleVersioning() {
this.versioning = !this.versioning;
return this.versioning;
}
ngOnInit() {
if ( this.auth.isBpmLoggedIn() ) {
this.formService.getProcessDefinitions().subscribe(
defs => this.setupBpmActions(defs || []),
err => console.log(err)
);
} else {
console.log('You are not logged in');
}
if (this.route) {
this.route.params.forEach((params: Params) => {
if (params['id']) {
this.currentFolderId = params['id'];
this.changeDetector.detectChanges();
}
});
}
this.uploadService.fileUploadComplete.debounceTime(300).subscribe(value => this.onFileUploadEvent(value));
this.uploadService.fileUploadDeleted.subscribe((value) => this.onFileUploadEvent(value));
this.contentService.folderCreated.subscribe(value => this.onFolderCreated(value));
// this.permissionsStyle.push(new PermissionStyleModel('document-list__create', PermissionsEnum.CREATE));
// this.permissionsStyle.push(new PermissionStyleModel('document-list__disable', PermissionsEnum.NOT_CREATE, false, true));
}
viewActivitiForm(event?: any) {
this.router.navigate(['/activiti/tasksnode', event.value.entry.id]);
getCurrentDocumentListNode(): MinimalNodeEntity[] {
if (this.documentList.folderNode) {
return [ { entry: this.documentList.folderNode } ];
} else {
return [];
}
}
private setupBpmActions(actions: any[]) {
actions.map(def => {
let documentAction = new DocumentActionModel();
documentAction.title = 'Activiti: ' + (def.name || 'Unknown process');
documentAction.handler = this.getBpmActionHandler(def);
this.documentList.actions.push(documentAction);
onNavigationError(err: any) {
if (err) {
this.errorMessage = err.message || 'Navigation error';
}
}
let folderAction = new FolderActionModel();
folderAction.title = 'Activiti: ' + (def.name || 'Unknown process');
folderAction.handler = this.getBpmActionHandler(def);
this.documentList.actions.push(folderAction);
resetError() {
this.errorMessage = null;
}
onFileUploadEvent(event: FileUploadEvent) {
if (event && event.file.options.parentId === this.documentList.currentFolderId) {
this.documentList.reload();
}
}
onFolderCreated(event: FolderCreatedEvent) {
console.log('FOLDER CREATED');
console.log(event);
if (event && event.parentId === this.documentList.currentFolderId) {
this.documentList.reload();
}
}
handlePermissionError(event: any) {
this.notificationService.openSnackMessage(
`You don't have the ${event.permission} permission to ${event.action} the ${event.type} `,
4000
);
}
onContentActionError(errors) {
const errorStatusCode = JSON.parse(errors.message).error.statusCode;
let translatedErrorMessage: any;
switch (errorStatusCode) {
case 403:
translatedErrorMessage = this.translateService.get('OPERATION.ERROR.PERMISSION');
break;
case 409:
translatedErrorMessage = this.translateService.get('OPERATION.ERROR.CONFLICT');
break;
default:
translatedErrorMessage = this.translateService.get('OPERATION.ERROR.UNKNOWN');
}
this.notificationService.openSnackMessage(translatedErrorMessage.value, 4000);
}
onContentActionSuccess(message) {
let translatedMessage: any = this.translateService.get(message);
this.notificationService.openSnackMessage(translatedMessage.value, 4000);
}
onDeleteActionSuccess(message) {
this.uploadService.fileDeleted.next(message);
}
onCreateFolderClicked(event: Event) {
let dialogRef = this.dialog.open(CreateFolderDialogComponent);
dialogRef.afterClosed().subscribe(folderName => {
if (folderName) {
this.contentService.createFolder('', folderName, this.documentList.currentFolderId).subscribe(
node => console.log(node),
err => console.log(err)
);
}
});
}
private getBpmActionHandler(processDefinition: any): ContentActionHandler {
return function (obj: any, target?: any) {
window.alert(`Starting BPM process: ${processDefinition.id}`);
}.bind(this);
getSiteContent(site: SiteModel) {
this.currentFolderId = site && site.guid ? site.guid : '-my-';
}
hasSelection(selection: Array<MinimalNodeEntity>): boolean {
return selection && selection.length > 0;
}
downloadNodes(selection: Array<MinimalNodeEntity>) {
if (!selection || selection.length === 0) {
return;
}
if (selection.length === 1) {
this.downloadNode(selection[0]);
} else {
this.downloadZip(selection);
}
}
downloadNode(node: MinimalNodeEntity) {
if (node && node.entry) {
const entry = node.entry;
if (entry.isFile) {
this.downloadFile(node);
}
if (entry.isFolder) {
this.downloadZip([node]);
}
}
}
downloadFile(node: MinimalNodeEntity) {
if (node && node.entry) {
const contentApi = this.apiService.getInstance().content;
const url = contentApi.getContentUrl(node.entry.id, true);
const fileName = node.entry.name;
this.download(url, fileName);
}
}
downloadZip(selection: Array<MinimalNodeEntity>) {
if (selection && selection.length > 0) {
const nodeIds = selection.map(node => node.entry.id);
const dialogRef = this.dialog.open(DownloadZipDialogComponent, {
width: '600px',
data: {
nodeIds: nodeIds
}
});
dialogRef.afterClosed().subscribe(result => {
console.log(result);
});
}
}
download(url: string, fileName: string) {
if (url && fileName) {
const link = document.createElement('a');
link.style.display = 'none';
link.download = fileName;
link.href = url;
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
}
getNodeNameTooltip(row: DataRow, col: DataColumn): string {
if (row) {
return row.getValue('name');
}
return null;
}
}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,3 @@
.form-container {
padding: 10px;
}
@@ -0,0 +1,4 @@
<div class="form-container">
<activiti-form [form]="form">
</activiti-form>
</div>
@@ -0,0 +1,48 @@
/*!
* @license
* Copyright 2016 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, Inject, OnInit } from '@angular/core';
import { FormModel, FormService } from 'ng2-activiti-form';
import { InMemoryFormService } from '../../services/in-memory-form.service';
import { DemoForm } from './demo-form';
@Component({
selector: 'form-demo',
templateUrl: 'form-demo.component.html',
styleUrls: [ 'form-demo.component.css' ],
providers: [
{ provide: FormService, useClass: InMemoryFormService }
]
})
export class FormDemoComponent implements OnInit {
form: FormModel;
constructor(@Inject(FormService) private formService: InMemoryFormService) {
// Prevent default outcome actions
formService.executeOutcome.subscribe(e => {
e.preventDefault();
console.log(e.outcome);
});
}
ngOnInit() {
let formDefinitionJSON: any = DemoForm.getDefinition();
this.form = this.formService.parseForm(formDefinitionJSON);
}
}
@@ -0,0 +1,103 @@
/*!
* @license
* Copyright 2016 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, ViewChild } from '@angular/core';
import { FormModel, FormService } from 'ng2-activiti-form';
import { ActivitiForm } from 'ng2-activiti-form';
@Component({
selector: 'form-list-demo',
template: `
<adf-form-list [forms]="formList" (row-dblclick)="onRowDblClick($event)">
</adf-form-list>
<div class="form-container" *ngIf="!isEmptyForm()">
<activiti-form [form]="form" [data]="restoredData">
</activiti-form>
</div>
<button md-button (click)="store()" color="primary">{{'FORM-LIST.STORE' | translate }}</button>
<button md-button (click)="restore()" color="primary">{{'FORM-LIST.RESTORE' | translate }}</button>
`,
styles: [`
.form-container {
padding: 10px;
}
.store-form-container{
width: 80%;
height: 80%;
}
`]
})
export class FormListDemoComponent {
@ViewChild(ActivitiForm)
activitiForm: ActivitiForm;
formList: any [] = [];
form: FormModel;
formId: string;
storedData: any = {};
restoredData: any = {};
constructor(private formService: FormService) {
// Prevent default outcome actions
formService.executeOutcome.subscribe(e => {
e.preventDefault();
console.log(e.outcome);
});
}
onRowDblClick(event: CustomEvent) {
let rowForm = event.detail.value.obj;
this.formService.getFormDefinitionById(rowForm.id).subscribe((definition) => {
let form = this.formService.parseForm(definition);
this.form = form;
});
console.log(rowForm);
}
isEmptyForm() {
return this.form === null || this.form === undefined;
}
store() {
this.clone(this.activitiForm.form.values, this.storedData);
console.log('DATA SAVED');
console.log(this.storedData);
console.log('DATA SAVED');
this.restoredData = null;
}
clone(objToCopyFrom, objToCopyTo) {
for (let attribute in objToCopyFrom) {
if (objToCopyFrom.hasOwnProperty(attribute)) {
objToCopyTo[attribute] = objToCopyFrom[attribute];
}
}
return objToCopyTo;
}
restore() {
this.restoredData = this.storedData;
this.storedData = {};
}
}
@@ -0,0 +1,30 @@
.adf-home-card {
float: left;
margin: 10px 10px 10px 10px;
width: 290px;
display: block;
overflow-y: auto;
height: 400px;
}
.adf-home-card-title {
padding: 24px;
cursor: pointer;
height: 55px;
margin: -63px -24px 18px -25px !important;
}
.adf-home-card__text {
font-size: 16px;
line-height: 18px;
}
.adf-home-feature-list {
list-style: none;
padding-left: 0;
}
span.home--feature-list__text:before {
content: '';
padding-left: 4px;
}
@@ -0,0 +1,187 @@
<!-- DOCUMENT LIST-->
<md-card class="adf-home-card">
<md-card-title class="adf-home-card-title adf-primary-background-color" routerLink="/files">
<h2 >
<md-icon>dvr</md-icon>
<span class="adf-home-card__text">DocumentList - Content Services</span>
</h2>
</md-card-title>
<md-card-content>
Demonstrates multiple Alfresco Content Services components used together to display the files of your Content Services instance:
<ul class="adf-home-feature-list">
<li>
<md-icon>brightness_1</md-icon>
<span class="adf-home-feature-list__text">Communication with the Rest Api and core services</span>
<a href="https://www.npmjs.com/package/ng2-alfresco-core" target="_blank">ng2-alfresco-core</a>
</li>
<li>
<md-icon>dvr</md-icon>
<span class="adf-home-feature-list__text">Document List</span>
<a href="https://www.npmjs.com/package/ng2-alfresco-documentlist" target="_blank">ng2-alfresco-documentlist</a>
</li>
<li>
<md-icon>file_upload</md-icon>
<span class="adf-home-feature-list__text">Upload</span>
<a href="https://www.npmjs.com/package/ng2-alfresco-upload" target="_blank">ng2-alfresco-upload</a>
</li>
<li>
<md-icon>view_module</md-icon>
<span class="adf-home-feature-list__text">DataTable</span>
<a href="https://www.npmjs.com/package/ng2-alfresco-datatable" target="_blank">ng2-alfresco-datatable</a>
</li>
</ul>
</md-card-content>
</md-card>
<!-- Process Services-->
<md-card class="adf-home-card">
<md-card-title class="adf-home-card-title adf-primary-background-color" routerLink="/activiti">
<h2 >
<md-icon>apps</md-icon>
<span class="adf-home-card__text">Process Services</span>
</h2>
</md-card-title>
<md-card-content>
Demonstrates multiple Alfresco Process Services components used together to show your Process Services process and tasks:
<ul class="adf-home-feature-list">
<li>
<md-icon>brightness_1</md-icon>
<span class="adf-home-feature-list__text">Communication with the Rest Api and core services</span>
<a href="https://www.npmjs.com/package/ng2-alfresco-core" target="_blank">ng2-alfresco-core</a>
</li>
<li>
<md-icon>view_module</md-icon>
<span class="adf-home-feature-list__text">App List</span>
<a href="https://www.npmjs.com/package/ng2-activiti-tasklist" target="_blank">ng2-activiti-apps</a>
</li>
<li>
<md-icon>view_headline</md-icon>
<span class="adf-home-feature-list__text">Task List</span>
<a href="https://www.npmjs.com/package/ng2-activiti-tasklist" target="_blank">ng2-activiti-tasklist</a>
</li>
<li>
<md-icon>view_headline</md-icon>
<span class="adf-home-feature-list__text">Process List</span>
<a href="https://www.npmjs.com/package/ng2-activiti-processlist" target="_blank">ng2-activiti-processlist</a>
</li>
<li>
<md-icon>view_quilt</md-icon>
<span class="adf-home-feature-list__text">Form</span>
<a href="https://www.npmjs.com/package/ng2-activiti-form" target="_blank">ng2-activiti-form</a>
</li>
<li>
<md-icon>pie_chart</md-icon>
<span class="adf-home-feature-list__text">Analytics</span>
<a href="https://www.npmjs.com/package/ng2-activiti-analytics" target="_blank">ng2-activiti-analytics</a>,
<a href="https://www.npmjs.com/package/ng2-activiti-diagrams" target="_blank">ng2-activiti-diagrams</a>
</li>
<li>
<md-icon>view_module</md-icon>
<span class="adf-home-feature-list__text">DataTable</span>
<a href="https://www.npmjs.com/package/ng2-alfresco-datatable" target="_blank">ng2-alfresco-datatable</a>
</li>
</ul>
</md-card-content>
</md-card>
<!-- DATATABLE-->
<md-card class="adf-home-card">
<md-card-title class="adf-home-card-title adf-primary-background-color" routerLink="/datatable">
<h2 >
<md-icon>view_module</md-icon>
<span class="adf-home-card__text">DataTable - Content Services & Process Services</span>
</h2>
</md-card-title>
<md-card-content>
Basic table component:
<ul class="adf-home-feature-list">
<li>
<md-icon>brightness_1</md-icon>
<span class="adf-home-feature-list__text">Communication with the Rest Api and core services</span>
<a href="https://www.npmjs.com/package/ng2-alfresco-core" target="_blank">ng2-alfresco-core</a>
</li>
</ul>
</md-card-content>
</md-card>
<!-- UPLOADER-->
<md-card class="adf-home-card">
<md-card-title class="adf-home-card-title adf-primary-background-color" routerLink="/uploader">
<h2 >
<md-icon>file_upload</md-icon>
<span class="adf-home-card__text">Uploader - Content Services</span>
</h2>
</md-card-title>
<md-card-content>
Basic table uploader component for the Content Services & Process Services:
<ul class="adf-home-feature-list">
<li>
<md-icon>brightness_1</md-icon>
<span class="adf-home-feature-list__text">Communication with the Rest Api and core services</span>
<a href="https://www.npmjs.com/package/ng2-alfresco-core" target="_blank">ng2-alfresco-core</a>
</li>
</ul>
</md-card-content>
</md-card>
<!-- LOGIN-->
<md-card class="adf-home-card">
<md-card-title class="adf-home-card-title adf-primary-background-color" routerLink="/login">
<h2 >
<md-icon>account_circle</md-icon>
<span class="adf-home-card__text">Login - Content Services & Process Services</span>
</h2>
</md-card-title>
<md-card-content>
Login component for the Content Services and Process Services:
<ul class="adf-home-feature-list">
<li>
<md-icon>brightness_1</md-icon>
<span class="adf-home-feature-list__text">Communication with the Rest Api and core services</span>
<a href="https://www.npmjs.com/package/ng2-alfresco-core" target="_blank">ng2-alfresco-core</a>
</li>
</ul>
</md-card-content>
</md-card>
<!-- WEBSCRIPT-->
<md-card class="adf-home-card">
<md-card-title class="adf-home-card-title adf-primary-background-color" routerLink="/webscript">
<h2 >
<md-icon>extension</md-icon>
<span class="adf-home-card__text">Webscript - Content Services</span>
</h2>
</md-card-title>
<md-card-content>
Displays and creates webscripts in your Content Services instance:
<ul class="adf-home-feature-list">
<li>
<md-icon>brightness_1</md-icon>
<span class="adf-home-feature-list__text">Communication with the Rest Api and core services</span>
<a href="https://www.npmjs.com/package/ng2-alfresco-core" target="_blank">ng2-alfresco-core</a>
</li>
</ul>
</md-card-content>
</md-card>
<!-- TAG-->
<md-card class="adf-home-card">
<md-card-title class="adf-home-card-title adf-primary-background-color" routerLink="/tag">
<h2 >
<md-icon>local_offer</md-icon>
<span class="adf-home-card__text">Tag - Content Services</span>
</h2>
</md-card-title>
<md-card-content>
Displays and adds tags to the node of your Content Services instance:
<ul class="adf-home-feature-list">
<li>
<md-icon>brightness_1</md-icon>
<span class="adf-home-feature-list__text">Communication with Rest</span>
<a href="https://www.npmjs.com/package/ng2-alfresco-core" target="_blank">ng2-alfresco-core</a>
</li>
</ul>
</md-card-content>
</md-card>
@@ -0,0 +1,36 @@
/*!
* @license
* Copyright 2016 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 { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { TestBed } from '@angular/core/testing';
import { HomeComponent } from './home.component';
import { CoreModule } from 'ng2-alfresco-core';
describe('HomeComponent', () => {
beforeEach(() => {
TestBed.configureTestingModule({
imports: [CoreModule],
declarations: [HomeComponent],
schemas: [CUSTOM_ELEMENTS_SCHEMA]
});
});
it ('should work', () => {
let fixture = TestBed.createComponent(HomeComponent);
expect(fixture.componentInstance instanceof HomeComponent).toBe(true, 'should create HomeComponent');
});
});
@@ -0,0 +1,25 @@
/*!
* @license
* Copyright 2016 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';
@Component({
selector: 'home-view',
templateUrl: './home.component.html',
styleUrls: ['./home.component.css']
})
export class HomeComponent {}
+10 -3
View File
@@ -15,15 +15,22 @@
* limitations under the License.
*/
export { HomeComponent } from './home/home.component';
export { DataTableDemoComponent } from './datatable/datatable-demo.component';
export { SearchComponent } from './search/search.component';
export { SearchBarComponent } from './search/search-bar.component';
export { LoginDemoComponent } from './login/login-demo.component';
export { ActivitiDemoComponent } from './activiti/activiti-demo.component';
export { FormViewer } from './activiti/form-viewer.component';
export { ActivitiTaskAttachmentsComponent } from './activiti/activiti-task-attachments.component';
export { ActivitiProcessAttachmentsComponent } from './activiti/activiti-process-attachments.component';
export { ActivitiShowDiagramComponent } from './activiti/activiti-show-diagram.component';
export { FormViewerComponent } from './activiti/form-viewer.component';
export { WebscriptComponent } from './webscript/webscript.component';
export { TagComponent } from './tag/tag.component';
export { SocialComponent } from './social/social.component';
export { AboutComponent } from './about/about.component';
export { FilesComponent } from './files/files.component';
export { FormNodeViewer } from './activiti/form-node-viewer.component';
export { SettingComponent } from './setting/setting.component';
export { FormNodeViewerComponent } from './activiti/form-node-viewer.component';
export { ActivitiAppsViewComponent } from './activiti/apps.view';
export { SettingsComponent } from './settings/settings.component';
export { FormDemoComponent } from './form/form-demo.component';
@@ -1,14 +1,40 @@
.setting {
border-radius: 8px; position: absolute; background-color: papayawhip; color: cadetblue; left: 10px; top: 10px; z-index: 1;
.setting-button {
position: absolute;
right: 10px;
top: 10px;
z-index: 1;
background-color: rgb(68,138,255);
color: rgb(255,255,255);
}
.banned{
width:130px;margin: 10px;
.settings {
border-radius: 8px;
position: absolute;
background-color: papayawhip;
color: cadetblue;
left: 10px;
top: 10px;
z-index: 1;
}
.toggle {
width:120px;margin: 20px;
width: 190px;
margin: 5px;
padding: 5px;
}
.setting-button {
position: absolute; right: 10px; top: 10px; z-index: 1;
@media (min-width: 721px) {
.mobile-settings {
display: none;
}
}
@media (max-width: 720px) {
.settings {
display: none;
}
}
.settings >>> .mat-slide-toggle-thumb-container {
cursor: pointer;
}
@@ -1,36 +1,95 @@
<div class="setting">
<!--BPM, ECN AND CSRF TOGGLE-->
<div class="settings">
<p class="toggle">
<label for="switch1" class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
<input type="checkbox" id="switch1" [checked]="isECM" class="mdl-switch__input"
(click)="toggleECM(ecm.checked)" #ecm>
<span class="mdl-switch__label">ECM</span>
</label>
<md-slide-toggle
id="switch1"
[color]="'primary'"
(change)="toggleECM()"
[checked]="isECM">
Content Services
</md-slide-toggle>
</p>
<p class="toggle">
<label for="switch2" class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
<input type="checkbox" id="switch2" [checked]="isBPM" class="mdl-switch__input"
(click)="toggleBPM(bpm.checked)" #bpm>
<span class="mdl-switch__label">BPM</span>
</label>
<md-slide-toggle
id="switch2"
[color]="'primary'"
(change)="toggleBPM()"
[checked]="isBPM">
Process Services
</md-slide-toggle>
</p>
<p class="toggle">
<label for="switch3" class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
<input type="checkbox" id="switch3" class="mdl-switch__input" checked (click)="toggleCSRF()" #csrf>
<span class="mdl-switch__label">CSRF</span>
</label>
<md-slide-toggle
id="switch3"
[color]="'primary'"
(change)="toggleCSRF()"
[checked]="!disableCsrf">
CSRF
</md-slide-toggle>
</p>
<p class="banned">
<label for="blacklistusername">Banned username</label><br>
<input id="blacklistusername" type="text" placeholder="banned username" [(ngModel)]="blackListUsername"/>
<p class="toggle">
<md-slide-toggle
id="switch4"
[color]="'primary'"
(change)="toggleFooter()"
[checked]="showFooter">
Login footer
</md-slide-toggle>
</p>
</div>
<a class="mdl-navigation__link setting-button" data-automation-id="settings" href="" routerLink="/settings">
<button class="mdl-button mdl-js-button mdl-button--fab mdl-button--colored">
<i class="material-icons">settings</i>
</button>
<!--SETTING BUTTON-->
<a md-fab class="setting-button" data-automation-id="settings" href="" routerLink="/settings" >
<md-icon>settings</md-icon>
</a>
<alfresco-login [providers]="providers" [fieldsValidation]="customValidation" [disableCsrf]="disableCsrf"
(executeSubmit)="validateForm($event)"
<alfresco-login #alfrescologin
[providers]="providers"
[fieldsValidation]="customValidation"
[disableCsrf]="disableCsrf"
[showLoginActions]="showFooter"
[showRememberMe]="showFooter"
copyrightText="© 2016 Alfresco Software, Inc. All Rights Reserved. (customised text)"
(onSuccess)="onLogin($event)"
(onError)="onError($event)" #alfrescologin></alfresco-login>
(onError)="onError($event)">
<div class="mobile-settings">
<p>
<md-slide-toggle
id="switch1-mobile"
[color]="'primary'"
(click)="toggleECM()"
[checked]="isECM">
Content Services
</md-slide-toggle>
</p>
<p>
<md-slide-toggle
id="switch2-mobile"
[color]="'primary'"
(click)="toggleBPM()"
[checked]="isBPM">
Process Services
</md-slide-toggle>
</p>
<p>
<md-slide-toggle
id="switch3-mobile"
[color]="'primary'"
(click)="toggleCSRF()"
[checked]="!disableCsrf">
CSRF
</md-slide-toggle>
</p>
<p>
<md-slide-toggle
id="switch4-mobile"
[color]="'primary'"
(click)="toggleFooter()"
[checked]="showFooter">
Login footer
</md-slide-toggle>
</p>
</div>
</alfresco-login>
@@ -15,14 +15,12 @@
* limitations under the License.
*/
import { Component, ViewChild, OnInit } from '@angular/core';
import { Router } from '@angular/router';
import { Component, OnInit, ViewChild } from '@angular/core';
import { Validators } from '@angular/forms';
declare let __moduleName: string;
import { Router } from '@angular/router';
import { LogService, StorageService } from 'ng2-alfresco-core';
@Component({
moduleId: __moduleName,
selector: 'login-demo',
templateUrl: './login-demo.component.html',
styleUrls: ['./login-demo.component.css']
@@ -33,33 +31,36 @@ export class LoginDemoComponent implements OnInit {
alfrescologin: any;
providers: string = 'ECM';
disableCsrf: boolean = false;
blackListUsername: string;
customValidation: any;
disableCsrf: boolean = false;
isECM: boolean = true;
isBPM: boolean = false;
showFooter: boolean = true;
customMinLenght: number = 2;
constructor(public router: Router) {
constructor(private router: Router,
private storage: StorageService,
private logService: LogService) {
this.customValidation = {
username: ['', Validators.compose([Validators.required, Validators.minLength(4)])],
username: ['', Validators.compose([Validators.required, Validators.minLength(this.customMinLenght)])],
password: ['', Validators.required]
};
}
ngOnInit() {
this.alfrescologin.addCustomValidationError('username', 'required', 'LOGIN.MESSAGES.USERNAME-REQUIRED');
this.alfrescologin.addCustomValidationError('username', 'minlength', 'LOGIN.MESSAGES.USERNAME-MIN');
this.alfrescologin.addCustomValidationError('username', 'minlength', 'LOGIN.MESSAGES.USERNAME-MIN', {minLenght: this.customMinLenght});
this.alfrescologin.addCustomValidationError('password', 'required', 'LOGIN.MESSAGES.PASSWORD-REQUIRED');
if (localStorage.getItem('providers')) {
this.providers = localStorage.getItem('providers');
if (this.storage.hasItem('providers')) {
this.providers = this.storage.getItem('providers');
}
this.setProviders();
this.initProviders();
}
setProviders() {
initProviders() {
if (this.providers === 'BPM') {
this.isECM = false;
this.isBPM = true;
@@ -77,47 +78,44 @@ export class LoginDemoComponent implements OnInit {
}
onError($event) {
console.log($event);
this.logService.error($event);
}
toggleECM(checked) {
if (checked && this.providers === 'BPM') {
this.providers = 'ALL';
} else if (checked) {
this.providers = 'ECM';
} else if (!checked && this.providers === 'ALL') {
this.providers = 'BPM';
} else if (!checked && this.providers === 'ECM') {
this.providers = '';
}
localStorage.setItem('providers', this.providers);
toggleECM() {
this.isECM = !this.isECM;
this.storage.setItem('providers', this.updateProvider());
}
toggleBPM(checked) {
if (checked && this.providers === 'ECM') {
this.providers = 'ALL';
} else if (checked) {
this.providers = 'BPM';
} else if (!checked && this.providers === 'ALL') {
this.providers = 'ECM';
} else if (!checked && this.providers === 'BPM') {
this.providers = '';
}
localStorage.setItem('providers', this.providers);
toggleBPM() {
this.isBPM = !this.isBPM;
this.storage.setItem('providers', this.updateProvider());
}
toggleCSRF() {
this.disableCsrf = !this.disableCsrf;
}
validateForm(event: any) {
let values = event.values;
if (values.controls['username'].value === this.blackListUsername) {
this.alfrescologin.addCustomFormError('username', 'This particular username has been blocked');
event.preventDefault();
}
toggleFooter() {
this.showFooter = !this.showFooter;
}
updateProvider() {
if (this.isBPM && this.isECM) {
this.providers = 'ALL';
return this.providers;
}
if (this.isECM) {
this.providers = 'ECM';
return this.providers;
}
if (this.isBPM) {
this.providers = 'BPM';
return this.providers;
}
this.providers = '';
return this.providers;
}
}
@@ -1,15 +1,15 @@
<alfresco-search-control *ngIf="isLoggedIn()"
[searchTerm]="searchTerm"
[autocomplete]="false"
[liveSearchResultType]="'cm:content'"
[highlight]="true"
(searchSubmit)="onSearchSubmit($event);"
(searchChange)="onSearchTermChange($event);"
(expand)="onExpandToggle($event);"
(fileSelect)="onFileClicked($event)">
(fileSelect)="onItemClicked($event)">
</alfresco-search-control>
<alfresco-viewer [(showViewer)]="fileShowed"
<alfresco-viewer *ngIf="fileShowed" [(showViewer)]="fileShowed"
[fileNodeId]="fileNodeId"
[overlayMode]="true">
<div class="mdl-spinner mdl-js-spinner is-active"></div>
<md-spinner></md-spinner>
</alfresco-viewer>
@@ -17,12 +17,10 @@
import { Component, EventEmitter, Output } from '@angular/core';
import { Router } from '@angular/router';
import { MinimalNodeEntity } from 'alfresco-js-api';
import { AlfrescoAuthenticationService } from 'ng2-alfresco-core';
declare let __moduleName: string;
@Component({
moduleId: __moduleName,
selector: 'search-bar',
templateUrl: './search-bar.component.html'
})
@@ -36,11 +34,11 @@ export class SearchBarComponent {
expand = new EventEmitter();
constructor(public router: Router,
public auth: AlfrescoAuthenticationService) {
public authService: AlfrescoAuthenticationService) {
}
isLoggedIn(): boolean {
return this.auth.isLoggedIn();
return this.authService.isLoggedIn();
}
/**
@@ -54,10 +52,12 @@ export class SearchBarComponent {
}]);
}
onFileClicked(event) {
if (event.value.entry.isFile) {
this.fileNodeId = event.value.entry.id;
onItemClicked(event: MinimalNodeEntity) {
if (event.entry.isFile) {
this.fileNodeId = event.entry.id;
this.fileShowed = true;
} else if (event.entry.isFolder) {
this.router.navigate(['/files', event.entry.id]);
}
}
@@ -1,8 +1,14 @@
<div class="search-results-container">
<h1>Search results</h1>
<alfresco-search [resultType]="'cm:content'" (preview)="onFileClicked($event)"></alfresco-search>
<alfresco-search
[navigate]="false"
(nodeDbClick)="nodeDbClick($event)"></alfresco-search>
</div>
<alfresco-viewer [(showViewer)]="fileShowed" [fileNodeId]="fileNodeId" [overlayMode]="true">
<div class="mdl-spinner mdl-js-spinner is-active"></div>
</alfresco-viewer>
<div *ngIf="fileShowed">
<alfresco-viewer [(showViewer)]="fileShowed"
[fileNodeId]="fileNodeId"
[overlayMode]="true">
<md-spinner></md-spinner>
</alfresco-viewer>
</div>
@@ -16,11 +16,9 @@
*/
import { Component } from '@angular/core';
declare let __moduleName: string;
import { Router } from '@angular/router';
@Component({
moduleId: __moduleName,
selector: 'search-component',
templateUrl: './search.component.html',
styles: [`
@@ -48,13 +46,26 @@ declare let __moduleName: string;
})
export class SearchComponent {
fileShowed: boolean = false;
fileNodeId: string;
fileShowed: boolean = false;
onFileClicked(event) {
if (event.value.entry.isFile) {
this.fileNodeId = event.value.entry.id;
constructor(public router: Router) {
}
nodeDbClick($event: any) {
if ($event.value.entry.isFolder) {
this.router.navigate(['/files', $event.value.entry.id]);
} else {
this.showFile($event);
}
}
showFile($event) {
if ($event.value.entry.isFile) {
this.fileNodeId = $event.value.entry.id;
this.fileShowed = true;
} else {
this.fileShowed = false;
}
}
}
@@ -1,26 +0,0 @@
.setting-card.mdl-card {
width: 320px;
height: 320px;
}
.setting-card > .mdl-card__title {
color: #fff;
background: bottom right 15% no-repeat #1fbcd2;
}
.setting-card-padding {
width: 50%;
display: table-cell;
vertical-align: middle;
margin: 0;
}
.setting-container {
display: table;
border-collapse: collapse;
border-spacing: 0;
width: 100%;
}
.icon-margin {
margin-right: 9px;
}
@@ -1,30 +0,0 @@
<div class="setting-container">
<div style="display: table-row">
<div class="setting-card-padding"></div>
<div class="setting-card mdl-card mdl-shadow--2dp">
<div class="mdl-card__title mdl-card--expand">
<h2 class="mdl-card__title-text">SETTINGS</h2>
</div>
<div class="mdl-card__actions mdl-card--border">
<div class="mdl-card__supporting-text">
ECM host URL configuration
</div>
<nav class="mdl-navigation">
<div class="icon material-icons icon-margin">link</div>
<input type="text" class="mdl-textfield__input" id="ecmHost" data-automation-id="ecmHost"
tabindex="1" (change)="onChangeECMHost($event)" value="{{ecmHost}}"/>
</nav>
<div class="mdl-card__supporting-text">
BPM host URL configuration
</div>
<nav class="mdl-navigation">
<div class="icon material-icons icon-margin">link</div>
<input type="text" class="mdl-textfield__input" id="bpmHost" data-automation-id="bpmHost"
tabindex="1" (change)="onChangeBPMHost($event)" value="{{bpmHost}}"/>
</nav>
</div>
</div>
<div class="setting-card-padding"></div>
</div>
</div>
@@ -1,55 +0,0 @@
/*!
* @license
* Copyright 2016 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 {
AlfrescoSettingsService
} from 'ng2-alfresco-core';
declare let __moduleName: string;
@Component({
moduleId: __moduleName,
selector: 'alfresco-setting-demo',
templateUrl: './setting.component.html',
styleUrls: ['./setting.component.css']
})
export class SettingComponent {
ecmHost: string;
bpmHost: string;
constructor(public alfrescoSettingsService: AlfrescoSettingsService) {
this.ecmHost = this.alfrescoSettingsService.ecmHost;
this.bpmHost = this.alfrescoSettingsService.bpmHost;
}
public onChangeECMHost(event: KeyboardEvent): void {
console.log((<HTMLInputElement>event.target).value);
this.ecmHost = (<HTMLInputElement>event.target).value;
this.alfrescoSettingsService.ecmHost = this.ecmHost;
localStorage.setItem(`ecmHost`, this.ecmHost);
}
public onChangeBPMHost(event: KeyboardEvent): void {
console.log((<HTMLInputElement>event.target).value);
this.bpmHost = (<HTMLInputElement>event.target).value;
this.alfrescoSettingsService.bpmHost = this.bpmHost;
localStorage.setItem(`bpmHost`, this.bpmHost);
}
}
@@ -0,0 +1,20 @@
.adf-setting-container {
display: table;
border-collapse: collapse;
border-spacing: 0;
}
.adf-setting-card {
width: 400px;
}
.full-width {
width: 100%;
}
.adf-setting-card-padding {
width: 50%;
display: table-cell;
vertical-align: middle;
margin: 0;
}
@@ -0,0 +1,61 @@
<div class="adf-setting-container">
<div class="adf-setting-card-padding"></div>
<md-toolbar color="primary" >
<h3>{{'SETTINGS.TITLE' | translate}}</h3>
</md-toolbar>
<md-card class="adf-setting-card">
<md-card-content>
<md-card-subtitle>{{'SETTINGS.CS-HOST' | translate }}</md-card-subtitle>
<md-input-container class="full-width">
<md-icon mdPrefix>link</md-icon>
<input mdInput
[formControl]="urlFormControlEcm"
data-automation-id="ecmHost"
type="text"
(change)="onChangeECMHost($event)"
tabindex="2"
id="ecmHost"
value="{{ecmHost}}"
placeholder="http(s)://host|ip:port(/path)">
<md-error *ngIf="urlFormControlEcm.hasError('pattern')">
ECM host is not valid! http(s)://host|ip:port(/path)
</md-error>
</md-input-container>
<p>
<p>
<md-card-subtitle>{{'SETTINGS.BP-HOST' | translate }}</md-card-subtitle>
<md-input-container class="full-width">
<md-icon mdPrefix>link</md-icon>
<input mdInput
[formControl]="urlFormControlBpm"
data-automation-id="bpmHost"
type="text"
(change)="onChangeBPMHost($event)"
tabindex="2"
id="bpmHost"
value="{{bpmHost}}"
placeholder="http(s)://host|ip:port(/path)">
<md-error *ngIf="urlFormControlBpm.hasError('pattern')">
BPM host is not valid! http(s)://host|ip:port(/path)
</md-error>
</md-input-container>
</md-card-content>
<md-card-actions>
<button md-button onclick="window.history.back()" color="primary">
{{'SETTINGS.BACK' | translate }}
</button>
<button md-button onclick="window.location.href = '/'" color="primary">
{{'SETTINGS.APPLY' | translate }}
</button>
</md-card-actions>
</md-card>
<div class="adf-setting-card-padding"></div>
</div>
@@ -0,0 +1,69 @@
/*!
* @license
* Copyright 2016 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 { FormControl, Validators } from '@angular/forms';
import { AlfrescoSettingsService, LogService, StorageService } from 'ng2-alfresco-core';
@Component({
selector: 'app-settings',
templateUrl: 'settings.component.html',
styleUrls: ['settings.component.css']
})
export class SettingsComponent {
HOST_REGEX: string = '^(http|https):\/\/.*[^/]$';
ecmHost: string;
bpmHost: string;
urlFormControlEcm = new FormControl('', [Validators.required, Validators.pattern(this.HOST_REGEX)]);
urlFormControlBpm = new FormControl('', [Validators.required, Validators.pattern(this.HOST_REGEX)]);
constructor(private settingsService: AlfrescoSettingsService,
private storage: StorageService,
private logService: LogService) {
this.ecmHost = storage.getItem('ecmHost') || this.settingsService.ecmHost;
this.bpmHost = storage.getItem('bpmHost') || this.settingsService.bpmHost;
}
public onChangeECMHost(event: KeyboardEvent): void {
let value = (<HTMLInputElement>event.target).value.trim();
if (value && this.isValidUrl(value)) {
this.logService.info(`ECM host: ${value}`);
this.ecmHost = value;
this.storage.setItem(`ecmHost`, value);
} else {
console.error('Ecm address does not match the pattern');
}
}
public onChangeBPMHost(event: KeyboardEvent): void {
let value = (<HTMLInputElement>event.target).value.trim();
if (value && this.isValidUrl(value)) {
this.logService.info(`BPM host: ${value}`);
this.bpmHost = value;
this.storage.setItem(`bpmHost`, value);
} else {
console.error('Bpm address does not match the pattern');
}
}
isValidUrl(url: string) {
return /^(http|https):\/\/.*/.test(url);
}
}
@@ -0,0 +1,16 @@
<label for="nodeId"><b>Insert Node Id</b></label><br>
<input id="nodeId" type="text" size="48" [(ngModel)]="nodeId"><br>
<md-grid-list cols="2" rowHeight="100px">
<md-grid-tile>
<md-list>
<md-list-item> <div class="adf-social-title" >Like component</div> </md-list-item>
<md-list-item> <adf-like [nodeId]="nodeId"></adf-like></md-list-item>
</md-list>
</md-grid-tile>
<md-grid-tile>
<md-list>
<md-list-item> <div class="adf-social-title" >Rating component</div> </md-list-item>
<md-list-item> <adf-rating [nodeId]="nodeId"></adf-rating></md-list-item>
</md-list>
</md-grid-tile>
</md-grid-list>
@@ -0,0 +1,3 @@
.adf-social-title{
}
@@ -0,0 +1,28 @@
/*!
* @license
* Copyright 2016 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';
@Component({
selector: 'alfresco-social-demo',
templateUrl: 'social.component.html',
styleUrls: ['social.component.scss']
})
export class SocialComponent {
nodeId: string = '74cd8a96-8a21-47e5-9b3b-a1b3e296787d';
}
@@ -0,0 +1,19 @@
<label for="nodeId"><b>Insert Node Id</b></label><br>
<input id="nodeId" type="text" size="48" [(ngModel)]="nodeId"><br>
<div class="adf-tag-example-area">
<md-card>
<alfresco-tag-node-actions-list [nodeId]="nodeId"></alfresco-tag-node-actions-list>
</md-card>
</div>
<div class="adf-tag-example-area">
<md-card>
<div class="adf-tag-example-title">List Tags Content Services</div>
<alfresco-tag-list></alfresco-tag-list>
</md-card>
</div>
<div class="adf-tag-example-area">
<md-card>
<div class="adf-tag-example-title">Tag list By Node ID</div>
<alfresco-tag-node-list [nodeId]="nodeId"></alfresco-tag-node-list>
</md-card>
</div>
@@ -0,0 +1,9 @@
.adf-tag-example-area {
width: calc(33.3333333333% - 16px);
margin: 8px;
float: left;
}
.adf-tag-example-title {
padding-bottom: 12px;
}
@@ -19,18 +19,8 @@ import { Component } from '@angular/core';
@Component({
selector: 'alfresco-tag-demo',
template: `
<label for="nodeId"><b>Insert Node Id</b></label><br>
<input id="nodeId" type="text" size="48" [(ngModel)]="nodeId"><br>
<div class="mdl-grid">
<div class="mdl-cell mdl-cell--4-col"><alfresco-tag-node-actions-list [nodeId]="nodeId"></alfresco-tag-node-actions-list></div>
<div class="mdl-cell mdl-cell--4-col">List Tags ECM <alfresco-tag-list></alfresco-tag-list></div>
<div class="mdl-cell mdl-cell--4-col">
Tag list By Node ID
<alfresco-tag-node-list [nodeId]="nodeId"></alfresco-tag-node-list>
</div>
</div>
`
templateUrl: 'tag.component.html',
styleUrls: ['tag.component.scss']
})
export class TagComponent {
@@ -0,0 +1,45 @@
import {Injectable} from '@angular/core';
/**
* Class for managing stylesheets. Stylesheets are loaded into named slots so that they can be
* removed or changed later.
*/
@Injectable()
export class StyleManager {
/**
* Set the stylesheet with the specified key.
*/
setStyle(key: string, href: string) {
getLinkElementForKey(key).setAttribute('href', href);
}
/**
* Remove the stylesheet with the specified key.
*/
removeStyle(key: string) {
const existingLinkElement = getExistingLinkElementByKey(key);
if (existingLinkElement) {
document.head.removeChild(existingLinkElement);
}
}
}
function getLinkElementForKey(key: string) {
return getExistingLinkElementByKey(key) || createLinkElementWithKey(key);
}
function getExistingLinkElementByKey(key: string) {
return document.head.querySelector(`link[rel="stylesheet"].${getClassNameForKey(key)}`);
}
function createLinkElementWithKey(key: string) {
const linkEl = document.createElement('link');
linkEl.setAttribute('rel', 'stylesheet');
linkEl.classList.add(getClassNameForKey(key));
document.head.appendChild(linkEl);
return linkEl;
}
function getClassNameForKey(key: string) {
return `style-manager-${key}`;
}
@@ -0,0 +1,26 @@
.docs-theme-picker-menu .md-menu-content {
padding: 8px;
}
.docs-theme-picker-menu [md-menu-item] {
flex: 0 0 auto;
padding: 0;
overflow: hidden;
}
.docs-theme-picker-menu .docs-theme-picker-primary {
width: 25px;
height: 25px;
}
.docs-theme-picker-menu .docs-theme-picker-accent {
position: absolute;
bottom: 6px;
width: 100%;
height: 6px;
}
.docs-theme-chosen-icon{
border-radius: 13px;
}
@@ -0,0 +1,17 @@
<button md-icon-button [md-menu-trigger-for]="themeMenu" mdTooltip="Select a theme!">
<md-icon>format_color_fill</md-icon>
</button>
<md-menu class="docs-theme-picker-menu" #themeMenu="mdMenu" x-position="before">
<md-list-item *ngFor="let theme of themes" md-menu-item (click)="installTheme(theme)" >
<md-icon md-list-icon [mdTooltip]="theme.name" class="docs-theme-chosen-icon" [style.color]="theme.accent"
[style.background]="theme.primary"
*ngIf="currentTheme === theme">check_circle
</md-icon>
<md-icon md-list-icon [mdTooltip]="theme.name" class="docs-theme-chosen-icon" [style.color]="theme.accent"
[style.background]="theme.primary"
*ngIf="currentTheme !== theme">invert_colors
</md-icon>
{{theme.name}}
</md-list-item>
</md-menu>
@@ -0,0 +1,131 @@
import {CommonModule} from '@angular/common';
import {ChangeDetectionStrategy, Component, NgModule} from '@angular/core';
import {
MdButtonModule, MdGridListModule, MdIconModule, MdMenuModule,
MdTooltipModule
} from '@angular/material';
import {StyleManager} from './style-manager/style-manager';
import {DocsSiteTheme, ThemeStorage} from './theme-storage/theme-storage';
@Component({
selector: 'theme-picker',
templateUrl: 'theme-picker.html',
styleUrls: ['theme-picker.css'],
changeDetection: ChangeDetectionStrategy.OnPush,
host: {'aria-hidden': 'true'}
})
export class ThemePickerComponent {
currentTheme;
themes = [
{
primary: '#ff9800',
accent: '#3f51b5',
name: 'Developer Theme',
href: '',
isDefault: true
},
{
primary: '#00bcd4',
accent: '#ff9800',
name: 'ECM Cyan Orange',
href: 'adf-cyan-orange.css',
isDark: false
},
{
primary: '#00bcd4',
accent: '#3f51b5',
name: 'ECM Cyan Purple',
href: 'adf-cyan-purple.css',
isDark: false
},
{
primary: '#8bc34a',
accent: '#ff9800',
name: 'BPM Green Orange',
href: 'adf-green-orange.css',
isDark: false
},
{
primary: '#8bc34a',
accent: '#3f51b5',
name: 'BPM Green Purple',
href: 'adf-green-purple.css',
isDark: false
},
{
primary: '#3f51b5',
accent: '#ff4081',
name: 'Indigo Pink',
href: 'adf-indigo-pink.css',
isDark: false
},
{
primary: '#c2185b',
accent: '#b0bec5',
name: 'Pink Bluegrey Dark',
href: 'adf-pink-bluegrey.css',
isDark: false
},
{
primary: '#7b1fa2',
accent: '#69f0ae',
name: 'Purple Green Dark',
href: 'adf-purple-green.css',
isDark: false
},
{
primary: '#2196f3',
accent: '#ff9800',
name: 'ECM Blue Orange',
href: 'adf-blue-orange.css',
isDark: false
},
{
primary: '#2196f3',
accent: '#3f51b5',
name: 'ECM Blue Purple',
href: 'adf-blue-purple.css',
isDark: false
}
];
constructor(public styleManager: StyleManager,
private _themeStorage: ThemeStorage) {
}
installTheme(theme: DocsSiteTheme) {
if (theme.isDefault === true) {
this.styleManager.setStyle('theme', ``);
} else {
this.currentTheme = this._getCurrentThemeFromHref(theme.href);
this.styleManager.setStyle('theme', `prebuilt-themes/${theme.href}`);
if (this.currentTheme) {
this._themeStorage.storeTheme(this.currentTheme);
}
}
}
private _getCurrentThemeFromHref(href: string): DocsSiteTheme {
return this.themes.find(theme => theme.href === href);
}
}
@NgModule({
imports: [
MdButtonModule,
MdIconModule,
MdMenuModule,
MdGridListModule,
MdTooltipModule,
CommonModule
],
exports: [ThemePickerComponent],
declarations: [ThemePickerComponent],
providers: [StyleManager, ThemeStorage]
})
export class ThemePickerModule {
}
@@ -0,0 +1,39 @@
import {EventEmitter, Injectable} from '@angular/core';
export interface DocsSiteTheme {
href: string;
name: string;
accent: string;
primary: string;
isDark?: boolean;
isDefault?: boolean;
}
@Injectable()
export class ThemeStorage {
static storageKey = 'docs-theme-storage-current';
public onThemeUpdate: EventEmitter<DocsSiteTheme> = new EventEmitter<DocsSiteTheme>();
public storeTheme(theme: DocsSiteTheme) {
try {
window.localStorage[ThemeStorage.storageKey] = JSON.stringify(theme);
} catch (e) { }
this.onThemeUpdate.emit(theme);
}
public getStoredTheme(): DocsSiteTheme {
try {
return JSON.parse(window.localStorage[ThemeStorage.storageKey] || null);
} catch (e) {
return null;
}
}
public clearStorage() {
try {
window.localStorage.removeItem(ThemeStorage.storageKey);
} catch (e) { }
}
}
@@ -16,42 +16,41 @@
*/
import { Component } from '@angular/core';
import { LogService } from 'ng2-alfresco-core';
@Component({
selector: 'alfresco-webscript-demo',
template: `
<label for="script-path"><b>Insert a scriptPath</b></label><br>
<input id="script-path" type="text" size="48" [(ngModel)]="scriptPath"><br>
<label for="context-root"><b>Insert a contextRoot</b></label><br>
<input id="context-root" type="text" size="48" [(ngModel)]="contextRoot"><br>
<label for="service-path"><b>Insert a servicePath</b></label><br>
<input id="service-path" type="text" size="48" [(ngModel)]="servicePath"><br>
<alfresco-webscript-get [scriptPath]="scriptPath"
[scriptArgs]="scriptArgs"
[contextRoot]="contextRoot"
[servicePath]="servicePath"
[contentType]="'HTML'"
(onSuccess)= "logData($event)"></alfresco-webscript-get>
<label for="script-path"><b>Insert a scriptPath</b></label><br>
<input id="script-path" type="text" size="48" [(ngModel)]="scriptPath"><br>
<label for="context-root"><b>Insert a contextRoot</b></label><br>
<input id="context-root" type="text" size="48" [(ngModel)]="contextRoot"><br>
<label for="service-path"><b>Insert a servicePath</b></label><br>
<input id="service-path" type="text" size="48" [(ngModel)]="servicePath"><br>
<alfresco-webscript-get
[scriptPath]="scriptPath"
[scriptArgs]="scriptArgs"
[contextRoot]="contextRoot"
[servicePath]="servicePath"
[contentType]="'HTML'"
(onSuccess)= "logData($event)">
</alfresco-webscript-get>
`
})
export class WebscriptComponent {
currentPath: string = '/';
authenticated: boolean;
host: string = 'http://127.0.0.1:8080';
scriptPath: string = 'sample/folder/Company%20Home';
contextRoot: string = 'alfresco';
servicePath: string = 'service';
scriptArgs: string = '';
constructor(private logService: LogService) {
}
logData(data) {
console.log(data);
this.logService.log(data);
}
}
-41
View File
@@ -1,41 +0,0 @@
/* Utils */
body, html {
height: 100%;
}
.p-10 {
padding: 10px;
}
.m-10 {
margin: 10px;
}
.loader-container {
display: -webkit-box; /* OLD - iOS 6-, Safari 3.1-6 */
display: -moz-box; /* OLD - Firefox 19- (buggy but mostly works) */
display: -webkit-flex; /* NEW - Chrome */
display: flex; /* NEW, Spec - Opera 12.1, Firefox 20+ */
-webkit-box-flex-direction: row;
-moz-box-flex-direction: row;
-webkit-flex-direction: row;
flex-direction: row;
height:100%;
}
.loader-item {
margin: auto;
max-height:100px;
max-width:300px;
}
.loader-text{
white-space: nowrap;
text-align: center;
position: relative;
}
._dialog_overlay {
position: static !important;
}
-372
View File
@@ -1,372 +0,0 @@
/**
* Class to generate polyline
*
* @author Dmitry Farafonov
*/
var ANCHOR_TYPE= {
main: "main",
middle: "middle",
first: "first",
last: "last"
};
function Anchor(uuid, type, x, y) {
this.uuid = uuid;
this.x = x;
this.y = y;
this.type = (type == ANCHOR_TYPE.middle) ? ANCHOR_TYPE.middle : ANCHOR_TYPE.main;
};
Anchor.prototype = {
uuid: null,
x: 0,
y: 0,
type: ANCHOR_TYPE.main,
isFirst: false,
isLast: false,
ndex: 0,
typeIndex: 0
};
function Polyline(uuid, points, strokeWidth, paper) {
/* Array on coordinates:
* points: [{x: 410, y: 110}, 1
* {x: 570, y: 110}, 1 2
* {x: 620, y: 240}, 2 3
* {x: 750, y: 270}, 3 4
* {x: 650, y: 370}]; 4
*/
this.points = points;
/*
* path for graph
* [["M", x1, y1], ["L", x2, y2], ["C", ax, ay, bx, by, x3, y3], ["L", x3, y3]]
*/
this.path = [];
this.anchors = [];
if (strokeWidth) this.strokeWidth = strokeWidth;
this.paper = paper;
this.closePath = false;
this.init();
};
Polyline.prototype = {
id: null,
points: [],
path: [],
anchors: [],
strokeWidth: 1,
radius: 1,
showDetails: false,
paper: null,
element: null,
isDefaultConditionAvailable: false,
closePath: false,
init: function(points){
var linesCount = this.getLinesCount();
if (linesCount < 1)
return;
this.normalizeCoordinates();
// create anchors
this.pushAnchor(ANCHOR_TYPE.first, this.getLine(0).x1, this.getLine(0).y1);
for (var i = 1; i < linesCount; i++)
{
var line1 = this.getLine(i-1);
this.pushAnchor(ANCHOR_TYPE.main, line1.x2, line1.y2);
}
this.pushAnchor(ANCHOR_TYPE.last, this.getLine(linesCount-1).x2, this.getLine(linesCount-1).y2);
this.rebuildPath();
},
normalizeCoordinates: function(){
for(var i=0; i < this.points.length; i++){
this.points[i].x = parseFloat(this.points[i].x);
this.points[i].y = parseFloat(this.points[i].y);
}
},
getLinesCount: function(){
return this.points.length-1;
},
_getLine: function(i){
if (this.points.length > i && this.points[i]) {
return {x1: this.points[i].x, y1: this.points[i].y, x2: this.points[i+1].x, y2: this.points[i+1].y};
} else {
return undefined;
}
},
getLine: function(i){
var line = this._getLine(i);
if (line != undefined) {
line.angle = this.getLineAngle(i);
}
return line;
},
getLineAngle: function(i){
var line = this._getLine(i);
return Math.atan2(line.y2 - line.y1, line.x2 - line.x1);
},
getLineLengthX: function(i){
var line = this.getLine(i);
return (line.x2 - line.x1);
},
getLineLengthY: function(i){
var line = this.getLine(i);
return (line.y2 - line.y1);
},
getLineLength: function(i){
return Math.sqrt(Math.pow(this.getLineLengthX(i), 2) + Math.pow(this.getLineLengthY(i), 2));
},
getAnchors: function(){
return this.anchors;
},
getAnchorsCount: function(type){
if (!type)
return this.anchors.length;
else {
var count = 0;
for(var i=0; i < this.getAnchorsCount(); i++){
var anchor = this.anchors[i];
if (anchor.getType() == type) {
count++;
}
}
return count;
}
},
pushAnchor: function(type, x, y, index){
if (type == ANCHOR_TYPE.first) {
index = 0;
typeIndex = 0;
} else if (type == ANCHOR_TYPE.last) {
index = this.getAnchorsCount();
typeIndex = 0;
} else if (!index) {
index = this.anchors.length;
} else {
for(var i=0; i < this.getAnchorsCount(); i++){
var anchor = this.anchors[i];
if (anchor.index > index) {
anchor.index++;
anchor.typeIndex++;
}
}
}
var anchor = new Anchor(this.id, ANCHOR_TYPE.main, x, y, index, typeIndex);
this.anchors.push(anchor);
},
getAnchor: function(position){
return this.anchors[position];
},
getAnchorByType: function(type, position){
if (type == ANCHOR_TYPE.first)
return this.anchors[0];
if (type == ANCHOR_TYPE.last)
return this.anchors[this.getAnchorsCount()-1];
for(var i=0; i < this.getAnchorsCount(); i++){
var anchor = this.anchors[i];
if (anchor.type == type) {
if( position == anchor.position)
return anchor;
}
}
return null;
},
addNewPoint: function(position, x, y){
//
for(var i = 0; i < this.getLinesCount(); i++){
var line = this.getLine(i);
if (x > line.x1 && x < line.x2 && y > line.y1 && y < line.y2) {
this.points.splice(i+1,0,{x: x, y: y});
break;
}
}
this.rebuildPath();
},
rebuildPath: function(){
var path = [];
for(var i = 0; i < this.getAnchorsCount(); i++){
var anchor = this.getAnchor(i);
var pathType = "";
if (i == 0)
pathType = "M";
else
pathType = "L";
// TODO: save previous points and calculate new path just if points are updated, and then save currents values as previous
var targetX = anchor.x, targetY = anchor.y;
if (i>0 && i < this.getAnchorsCount()-1) {
// get new x,y
var cx = anchor.x, cy = anchor.y;
// pivot point of prev line
var AO = this.getLineLength(i-1);
if (AO < this.radius) {
AO = this.radius;
}
this.isDefaultConditionAvailable = (this.isDefaultConditionAvailable || (i == 1 && AO > 10));
var ED = this.getLineLengthY(i-1) * this.radius / AO;
var OD = this.getLineLengthX(i-1) * this.radius / AO;
targetX = anchor.x - OD;
targetY = anchor.y - ED;
if (AO < 2*this.radius && i>1) {
targetX = anchor.x - this.getLineLengthX(i-1)/2;
targetY = anchor.y - this.getLineLengthY(i-1)/2;;
}
// pivot point of next line
var AO = this.getLineLength(i);
if (AO < this.radius) {
AO = this.radius;
}
var ED = this.getLineLengthY(i) * this.radius / AO;
var OD = this.getLineLengthX(i) * this.radius / AO;
var nextSrcX = anchor.x + OD;
var nextSrcY = anchor.y + ED;
if (AO < 2*this.radius && i<this.getAnchorsCount()-2) {
nextSrcX = anchor.x + this.getLineLengthX(i)/2;
nextSrcY = anchor.y + this.getLineLengthY(i)/2;;
}
var dx0 = (cx - targetX) / 3,
dy0 = (cy - targetY) / 3,
ax = cx - dx0,
ay = cy - dy0,
dx1 = (cx - nextSrcX) / 3,
dy1 = (cy - nextSrcY) / 3,
bx = cx - dx1,
by = cy - dy1,
zx=nextSrcX, zy=nextSrcY;
} else if (i==1 && this.getAnchorsCount() == 2){
var AO = this.getLineLength(i-1);
if (AO < this.radius) {
AO = this.radius;
}
this.isDefaultConditionAvailable = (this.isDefaultConditionAvailable || (i == 1 && AO > 10));
}
// anti smoothing
if (this.strokeWidth%2 == 1) {
targetX += 0.5;
targetY += 0.5;
}
path.push([pathType, targetX, targetY]);
if (i>0 && i < this.getAnchorsCount()-1) {
path.push(["C", ax, ay, bx, by, zx, zy]);
}
}
if (this.closePath)
{
path.push(["Z"]);
}
this.path = path;
},
transform: function(transformation)
{
this.element.transform(transformation);
},
attr: function(attrs)
{
// TODO: foreach and set each
this.element.attr(attrs);
}
};
function Polygone(points, strokeWidth) {
/* Array on coordinates:
* points: [{x: 410, y: 110}, 1
* {x: 570, y: 110}, 1 2
* {x: 620, y: 240}, 2 3
* {x: 750, y: 270}, 3 4
* {x: 650, y: 370}]; 4
*/
this.points = points;
/*
* path for graph
* [["M", x1, y1], ["L", x2, y2], ["C", ax, ay, bx, by, x3, y3], ["L", x3, y3]]
*/
this.path = [];
this.anchors = [];
if (strokeWidth) this.strokeWidth = strokeWidth;
this.closePath = true;
this.init();
};
/*
* Poligone is inherited from Poliline: draws closedPath of polyline
*/
var Foo = function () { };
Foo.prototype = Polyline.prototype;
Polygone.prototype = new Foo();
Polygone.prototype.rebuildPath = function(){
var path = [];
for(var i = 0; i < this.getAnchorsCount(); i++){
var anchor = this.getAnchor(i);
var pathType = "";
if (i == 0)
pathType = "M";
else
pathType = "L";
var targetX = anchor.x, targetY = anchor.y;
// anti smoothing
if (this.strokeWidth%2 == 1) {
targetX += 0.5;
targetY += 0.5;
}
path.push([pathType, targetX, targetY]);
}
if (this.closePath)
path.push(["Z"]);
this.path = path;
};
+5
View File
@@ -15,8 +15,13 @@
* limitations under the License.
*/
import { enableProdMode } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from './app.module';
if (process.env.ENV === 'production') {
enableProdMode();
}
const platform = platformBrowserDynamic();
platform.bootstrapModule(AppModule);
+39
View File
@@ -0,0 +1,39 @@
/*!
* @license
* Copyright 2016 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 {
MdDialogModule,
MdInputModule,
MdProgressBarModule,
MdSelectModule,
MdSlideToggleModule
} from '@angular/material';
const MATERIAL_MODULES = [
MdSlideToggleModule,
MdInputModule,
MdSelectModule,
MdDialogModule,
MdProgressBarModule
];
@NgModule({
imports: MATERIAL_MODULES,
exports: MATERIAL_MODULES
})
export class MaterialModule {}

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