├── .bowerrc
├── .dockerignore
├── .editorconfig
├── .gitattributes
├── .gitignore
├── .jshintrc
├── .jshintrc.default
├── .yo-rc.json
├── Gruntfile.js
├── NOTICE.txt
├── README.md
├── app
├── account-management
│ ├── index.html
│ ├── js
│ │ ├── app.js
│ │ ├── router.js
│ │ ├── templates
│ │ │ ├── content.html
│ │ │ ├── edit-account-auth.html
│ │ │ └── edit-account.html
│ │ └── views
│ │ │ └── edit-account.js
│ └── main.js
├── callback.html
├── change-management
│ ├── index.html
│ ├── js
│ │ ├── app.js
│ │ ├── collections
│ │ │ ├── change_issue_collection.js
│ │ │ ├── change_order_collection.js
│ │ │ ├── change_request_collection.js
│ │ │ ├── milestone_collection.js
│ │ │ ├── roles.js
│ │ │ └── roles_in_use.js
│ │ ├── models
│ │ │ ├── change_issue.js
│ │ │ ├── change_item.js
│ │ │ ├── change_order.js
│ │ │ ├── change_request.js
│ │ │ └── milestone.js
│ │ ├── router.js
│ │ ├── templates
│ │ │ ├── change-issues
│ │ │ │ ├── change_issue_content.html
│ │ │ │ ├── change_issue_creation.html
│ │ │ │ ├── change_issue_edition.html
│ │ │ │ └── change_issue_list_item.html
│ │ │ ├── change-orders
│ │ │ │ ├── change_order_content.html
│ │ │ │ ├── change_order_creation.html
│ │ │ │ ├── change_order_edition.html
│ │ │ │ └── change_order_list_item.html
│ │ │ ├── change-requests
│ │ │ │ ├── change_request_content.html
│ │ │ │ ├── change_request_creation.html
│ │ │ │ ├── change_request_edition.html
│ │ │ │ └── change_request_list_item.html
│ │ │ ├── change_item_list.html
│ │ │ ├── content.html
│ │ │ ├── milestones
│ │ │ │ ├── milestone_content.html
│ │ │ │ ├── milestone_creation.html
│ │ │ │ ├── milestone_edition.html
│ │ │ │ ├── milestone_list.html
│ │ │ │ └── milestone_list_item.html
│ │ │ ├── nav
│ │ │ │ ├── change_issue_nav.html
│ │ │ │ ├── change_order_nav.html
│ │ │ │ ├── change_request_nav.html
│ │ │ │ ├── milestone_nav.html
│ │ │ │ └── workflow_nav.html
│ │ │ ├── tasks
│ │ │ │ ├── task.html
│ │ │ │ └── task_list.html
│ │ │ └── workflows
│ │ │ │ ├── activity_model_editor.html
│ │ │ │ ├── roles_modal.html
│ │ │ │ ├── task_model_editor.html
│ │ │ │ ├── workflow_content_list.html
│ │ │ │ ├── workflow_list.html
│ │ │ │ ├── workflow_list_item.html
│ │ │ │ ├── workflow_model_copy.html
│ │ │ │ └── workflow_model_editor.html
│ │ └── views
│ │ │ ├── change-issues
│ │ │ ├── change_issue_content.js
│ │ │ ├── change_issue_creation.js
│ │ │ ├── change_issue_edition.js
│ │ │ ├── change_issue_list.js
│ │ │ └── change_issue_list_item.js
│ │ │ ├── change-orders
│ │ │ ├── change_order_content.js
│ │ │ ├── change_order_creation.js
│ │ │ ├── change_order_edition.js
│ │ │ ├── change_order_list.js
│ │ │ └── change_order_list_item.js
│ │ │ ├── change-requests
│ │ │ ├── change_request_content.js
│ │ │ ├── change_request_creation.js
│ │ │ ├── change_request_edition.js
│ │ │ ├── change_request_list.js
│ │ │ └── change_request_list_item.js
│ │ │ ├── milestones
│ │ │ ├── milestone_content.js
│ │ │ ├── milestone_creation.js
│ │ │ ├── milestone_edition.js
│ │ │ ├── milestone_list.js
│ │ │ └── milestone_list_item.js
│ │ │ ├── nav
│ │ │ ├── change_issue_nav.js
│ │ │ ├── change_order_nav.js
│ │ │ ├── change_request_nav.js
│ │ │ ├── milestone_nav.js
│ │ │ ├── task_nav.js
│ │ │ └── workflow_nav.js
│ │ │ ├── tasks
│ │ │ ├── task.js
│ │ │ └── task_content_list.js
│ │ │ └── workflows
│ │ │ ├── activity_model_editor.js
│ │ │ ├── roles_modal_view.js
│ │ │ ├── task_model_editor.js
│ │ │ ├── workflow_content_list.js
│ │ │ ├── workflow_list.js
│ │ │ ├── workflow_list_item.js
│ │ │ ├── workflow_model_copy.js
│ │ │ └── workflow_model_editor.js
│ └── main.js
├── document-management
│ ├── index.html
│ ├── js
│ │ ├── app.js
│ │ ├── collections
│ │ │ ├── checked_out_document.js
│ │ │ ├── checkedout_document.js
│ │ │ ├── folder_document.js
│ │ │ ├── folders.js
│ │ │ ├── search_document.js
│ │ │ ├── tag_document.js
│ │ │ ├── task_document.js
│ │ │ └── template.js
│ │ ├── models
│ │ │ ├── baselined_document.js
│ │ │ ├── folder.js
│ │ │ └── template.js
│ │ ├── router.js
│ │ ├── templates
│ │ │ ├── baselines
│ │ │ │ ├── baseline_content.html
│ │ │ │ ├── baseline_creation_view.html
│ │ │ │ ├── baseline_detail.html
│ │ │ │ ├── baseline_list.html
│ │ │ │ ├── baseline_list_item.html
│ │ │ │ ├── baseline_nav.html
│ │ │ │ ├── document_revision_list.html
│ │ │ │ └── document_revision_list_item.html
│ │ │ ├── checked_out_document_list.html
│ │ │ ├── checkedout_nav.html
│ │ │ ├── content.html
│ │ │ ├── document
│ │ │ │ ├── document_new.html
│ │ │ │ ├── document_new_version.html
│ │ │ │ └── document_template_select.html
│ │ │ ├── document_list.html
│ │ │ ├── document_list_item.html
│ │ │ ├── folder_document_list.html
│ │ │ ├── folder_edit.html
│ │ │ ├── folder_list_item.html
│ │ │ ├── folder_nav.html
│ │ │ ├── folder_new.html
│ │ │ ├── search_document_advanced_form.html
│ │ │ ├── search_document_form.html
│ │ │ ├── search_document_list.html
│ │ │ ├── search_nav.html
│ │ │ ├── tag_document_list.html
│ │ │ ├── tag_list_item.html
│ │ │ ├── tag_nav.html
│ │ │ ├── task_document_list.html
│ │ │ ├── task_nav.html
│ │ │ ├── template_content_list.html
│ │ │ ├── template_list.html
│ │ │ ├── template_list_item.html
│ │ │ ├── template_nav.html
│ │ │ └── template_new.html
│ │ └── views
│ │ │ ├── advanced_search.js
│ │ │ ├── baselines
│ │ │ ├── baseline_content.js
│ │ │ ├── baseline_creation_view.js
│ │ │ ├── baseline_detail_view.js
│ │ │ ├── baseline_list.js
│ │ │ ├── baseline_list_item.js
│ │ │ ├── baseline_nav.js
│ │ │ ├── document_revision_list.js
│ │ │ └── document_revision_list_item.js
│ │ │ ├── checked_out_document_list.js
│ │ │ ├── checkedout_nav.js
│ │ │ ├── content.js
│ │ │ ├── content_document_list.js
│ │ │ ├── document
│ │ │ ├── document_new.js
│ │ │ ├── document_new_version.js
│ │ │ └── document_template_list.js
│ │ │ ├── document_list.js
│ │ │ ├── document_list_item.js
│ │ │ ├── folder_document_list.js
│ │ │ ├── folder_edit.js
│ │ │ ├── folder_list.js
│ │ │ ├── folder_list_item.js
│ │ │ ├── folder_nav.js
│ │ │ ├── folder_new.js
│ │ │ ├── search_document_list.js
│ │ │ ├── search_nav.js
│ │ │ ├── tag_document_list.js
│ │ │ ├── tag_list.js
│ │ │ ├── tag_list_item.js
│ │ │ ├── tag_nav.js
│ │ │ ├── task_document_list.js
│ │ │ ├── task_nav.js
│ │ │ ├── template_content_list.js
│ │ │ ├── template_edit.js
│ │ │ ├── template_list.js
│ │ │ ├── template_list_item.js
│ │ │ ├── template_nav.js
│ │ │ └── template_new.js
│ └── main.js
├── documents
│ ├── index.html
│ ├── js
│ │ ├── app.js
│ │ ├── router.js
│ │ ├── templates
│ │ │ ├── document-permalink.html
│ │ │ └── document-revision.html
│ │ └── views
│ │ │ └── document-revision.js
│ └── main.js
├── download
│ ├── dplm
│ │ └── .gitkeep
│ ├── index.html
│ ├── js
│ │ ├── app.js
│ │ └── templates
│ │ │ └── content.html
│ └── main.js
├── images
│ ├── apple.gif
│ ├── docdokuplm_logo.png
│ ├── favicon.ico
│ ├── floor.jpg
│ ├── help_image.png
│ ├── icon-nav-bullet-down.png
│ ├── icon-nav-bullet-right.png
│ ├── linux.gif
│ ├── loader.gif
│ ├── pba.bin
│ ├── pba.json
│ ├── product-loader.gif
│ ├── sidebar_bg.png
│ ├── sort_asc.png
│ ├── sort_both.png
│ ├── sort_desc.png
│ ├── treeview-default-line.gif
│ ├── treeview-default.gif
│ ├── user_avatar.png
│ ├── view.png
│ ├── windows.gif
│ └── workflow
│ │ ├── parallel.png
│ │ ├── parallel.svg
│ │ ├── sequential.png
│ │ └── sequential.svg
├── img
│ ├── glyphicons-halflings-white.png
│ └── glyphicons-halflings.png
├── index.html
├── js
│ ├── common-objects
│ │ ├── collections
│ │ │ ├── activity_models.js
│ │ │ ├── attribute_collection.js
│ │ │ ├── document_baselines.js
│ │ │ ├── document_iteration.js
│ │ │ ├── file
│ │ │ │ └── attached_file_collection.js
│ │ │ ├── linked
│ │ │ │ ├── linked_change_item_collection.js
│ │ │ │ ├── linked_document_collection.js
│ │ │ │ ├── linked_document_iteration_collection.js
│ │ │ │ └── linked_part_collection.js
│ │ │ ├── lovs.js
│ │ │ ├── modification_notification_collection.js
│ │ │ ├── part_collection.js
│ │ │ ├── part_iteration_collection.js
│ │ │ ├── part_search_collection.js
│ │ │ ├── path_data_iterations.js
│ │ │ ├── product_baselines.js
│ │ │ ├── product_instance_iterations.js
│ │ │ ├── product_instances.js
│ │ │ ├── reachable_users.js
│ │ │ ├── security
│ │ │ │ ├── workspace_user_group_memberships.js
│ │ │ │ └── workspace_user_memberships.js
│ │ │ ├── substitute_part_collection.js
│ │ │ ├── tag.js
│ │ │ ├── task_models.js
│ │ │ ├── used_by
│ │ │ │ └── used_by_document.js
│ │ │ ├── user_groups.js
│ │ │ ├── users.js
│ │ │ └── workflow_models.js
│ │ ├── common
│ │ │ └── singleton_decorator.js
│ │ ├── contextResolver.js
│ │ ├── customizations
│ │ │ └── part-table-columns.js
│ │ ├── log.js
│ │ ├── models
│ │ │ ├── admin.js
│ │ │ ├── attribute.js
│ │ │ ├── baseline.js
│ │ │ ├── document
│ │ │ │ ├── document_iteration.js
│ │ │ │ └── document_revision.js
│ │ │ ├── document_baseline.js
│ │ │ ├── effectivity.js
│ │ │ ├── file
│ │ │ │ └── attached_file.js
│ │ │ ├── language.js
│ │ │ ├── linked
│ │ │ │ ├── linked_change_item.js
│ │ │ │ ├── linked_document.js
│ │ │ │ ├── linked_document_iteration.js
│ │ │ │ └── linked_part.js
│ │ │ ├── lov
│ │ │ │ └── lov.js
│ │ │ ├── modification_notification.js
│ │ │ ├── organization.js
│ │ │ ├── part.js
│ │ │ ├── part_iteration.js
│ │ │ ├── path_data_iteration.js
│ │ │ ├── product_baseline.js
│ │ │ ├── product_instance.js
│ │ │ ├── product_instance_iteration.js
│ │ │ ├── role.js
│ │ │ ├── security
│ │ │ │ ├── acl_user_entry.js
│ │ │ │ ├── acl_user_group_entry.js
│ │ │ │ ├── admin.js
│ │ │ │ ├── workspace_user_group_membership.js
│ │ │ │ └── workspace_user_membership.js
│ │ │ ├── tag.js
│ │ │ ├── tag_subscription.js
│ │ │ ├── task_model.js
│ │ │ ├── timezone.js
│ │ │ ├── user.js
│ │ │ ├── user_group.js
│ │ │ ├── workflow
│ │ │ │ ├── activity_model.js
│ │ │ │ └── workflow_model.js
│ │ │ └── workspace.js
│ │ ├── oidc.js
│ │ ├── templates
│ │ │ ├── alert.html
│ │ │ ├── attributes
│ │ │ │ ├── attribute_list_item.html
│ │ │ │ ├── attribute_list_item_boolean.html
│ │ │ │ ├── attribute_list_item_date.html
│ │ │ │ ├── attribute_list_item_long_text.html
│ │ │ │ ├── attribute_list_item_lov.html
│ │ │ │ ├── attribute_list_item_number.html
│ │ │ │ ├── attribute_list_item_part_number.html
│ │ │ │ ├── attribute_list_item_text.html
│ │ │ │ ├── attribute_list_item_url.html
│ │ │ │ ├── attributes.html
│ │ │ │ ├── template_new_attribute_list_item.html
│ │ │ │ └── template_new_attributes.html
│ │ │ ├── buttons
│ │ │ │ ├── ACL_button.html
│ │ │ │ ├── checkout_button_group.html
│ │ │ │ ├── delete_baseline_button.html
│ │ │ │ ├── delete_button.html
│ │ │ │ ├── duplicate_button.html
│ │ │ │ ├── import_button.html
│ │ │ │ ├── new_configuration_button.html
│ │ │ │ ├── new_effectivity_button.html
│ │ │ │ ├── new_product_button.html
│ │ │ │ ├── new_product_instance_button.html
│ │ │ │ ├── new_version_button.html
│ │ │ │ ├── obsolete_button.html
│ │ │ │ ├── release_button.html
│ │ │ │ ├── snap_button.html
│ │ │ │ ├── snap_in_progress_button.html
│ │ │ │ ├── snap_latest_button.html
│ │ │ │ ├── snap_released_button.html
│ │ │ │ ├── tags_button.html
│ │ │ │ └── udf_button.html
│ │ │ ├── document
│ │ │ │ ├── document_iteration.html
│ │ │ │ ├── used_by_list.html
│ │ │ │ └── used_by_list_item.html
│ │ │ ├── error.html
│ │ │ ├── file
│ │ │ │ ├── file.html
│ │ │ │ └── file_list.html
│ │ │ ├── forbidden.html
│ │ │ ├── header.html
│ │ │ ├── linked
│ │ │ │ ├── linked_change_item.html
│ │ │ │ ├── linked_change_items.html
│ │ │ │ ├── linked_document.html
│ │ │ │ ├── linked_items.html
│ │ │ │ └── linked_part.html
│ │ │ ├── lov
│ │ │ │ ├── lov_item.html
│ │ │ │ ├── lov_modal.html
│ │ │ │ └── lov_possible_value.html
│ │ │ ├── not-found.html
│ │ │ ├── part
│ │ │ │ ├── cad_instance.html
│ │ │ │ ├── conversion_status.html
│ │ │ │ ├── import_status.html
│ │ │ │ ├── modification_notification_group_list.html
│ │ │ │ ├── modification_notification_list.html
│ │ │ │ ├── modification_notification_list_item.html
│ │ │ │ ├── part_assembly.html
│ │ │ │ ├── part_creation_effectivity_view.html
│ │ │ │ ├── part_effectivities.html
│ │ │ │ ├── part_effectivity.html
│ │ │ │ ├── part_effectivity_date.html
│ │ │ │ ├── part_effectivity_lot.html
│ │ │ │ ├── part_effectivity_serial_number.html
│ │ │ │ ├── part_link.html
│ │ │ │ ├── part_modal.html
│ │ │ │ ├── used_by_list.html
│ │ │ │ ├── used_by_list_item.html
│ │ │ │ ├── used_by_list_item_part.html
│ │ │ │ ├── used_by_path_data_item.html
│ │ │ │ ├── used_by_pd_instance_list.html
│ │ │ │ └── used_by_view.html
│ │ │ ├── path
│ │ │ │ └── path.html
│ │ │ ├── pathToPathLink
│ │ │ │ └── path_to_path_link_item.html
│ │ │ ├── prompt.html
│ │ │ ├── security
│ │ │ │ ├── acl_edit.html
│ │ │ │ ├── acl_entries.html
│ │ │ │ ├── acl_entry_item.html
│ │ │ │ └── membership_item.html
│ │ │ ├── share
│ │ │ │ ├── share_entity.html
│ │ │ │ └── shared_entity.html
│ │ │ ├── tags
│ │ │ │ ├── tag.html
│ │ │ │ └── tags_management.html
│ │ │ ├── task
│ │ │ │ └── status_filter.html
│ │ │ ├── time_zone.html
│ │ │ ├── udf
│ │ │ │ ├── calculation.html
│ │ │ │ └── user_defined_function.html
│ │ │ ├── viewers
│ │ │ │ ├── default.html
│ │ │ │ ├── image.html
│ │ │ │ ├── office.html
│ │ │ │ ├── video.html
│ │ │ │ └── wrapper.html
│ │ │ └── workflow
│ │ │ │ ├── lifecycle.html
│ │ │ │ ├── lifecycle_activity.html
│ │ │ │ ├── lifecycle_task.html
│ │ │ │ ├── lifecycle_task_signing.html
│ │ │ │ ├── role_item.html
│ │ │ │ ├── workflow_mapping.html
│ │ │ │ └── workflow_select.html
│ │ ├── utils
│ │ │ ├── acl-checker.js
│ │ │ ├── attribute_accessibility.js
│ │ │ ├── date.js
│ │ │ └── query.js
│ │ ├── views
│ │ │ ├── alert.js
│ │ │ ├── attributes
│ │ │ │ ├── attribute_list.js
│ │ │ │ ├── attribute_list_item.js
│ │ │ │ ├── attribute_list_item_boolean.js
│ │ │ │ ├── attribute_list_item_date.js
│ │ │ │ ├── attribute_list_item_long_text.js
│ │ │ │ ├── attribute_list_item_lov.js
│ │ │ │ ├── attribute_list_item_number.js
│ │ │ │ ├── attribute_list_item_part_number.js
│ │ │ │ ├── attribute_list_item_text.js
│ │ │ │ ├── attribute_list_item_url.js
│ │ │ │ ├── attributes.js
│ │ │ │ ├── template_new_attribute_list.js
│ │ │ │ ├── template_new_attribute_list_item.js
│ │ │ │ └── template_new_attributes.js
│ │ │ ├── base.js
│ │ │ ├── components
│ │ │ │ ├── collapsible_list.js
│ │ │ │ ├── list.js
│ │ │ │ ├── list_item.js
│ │ │ │ └── modal.js
│ │ │ ├── document
│ │ │ │ └── document_iteration.js
│ │ │ ├── documents
│ │ │ │ ├── checkbox_list.js
│ │ │ │ └── checkbox_list_item.js
│ │ │ ├── error.js
│ │ │ ├── file
│ │ │ │ ├── file.js
│ │ │ │ └── file_list.js
│ │ │ ├── forbidden.js
│ │ │ ├── header.js
│ │ │ ├── linked
│ │ │ │ ├── linked_change_item.js
│ │ │ │ ├── linked_change_items.js
│ │ │ │ ├── linked_document.js
│ │ │ │ ├── linked_documents.js
│ │ │ │ ├── linked_issues.js
│ │ │ │ ├── linked_orders.js
│ │ │ │ ├── linked_part.js
│ │ │ │ ├── linked_parts.js
│ │ │ │ └── linked_requests.js
│ │ │ ├── lov
│ │ │ │ ├── lov_item.js
│ │ │ │ ├── lov_modal.js
│ │ │ │ └── lov_possible_value.js
│ │ │ ├── not-found.js
│ │ │ ├── part
│ │ │ │ ├── cad_instance_view.js
│ │ │ │ ├── conversion_status_view.js
│ │ │ │ ├── import_status_view.js
│ │ │ │ ├── modification_notification_group_list_view.js
│ │ │ │ ├── modification_notification_list_item_view.js
│ │ │ │ ├── modification_notification_list_view.js
│ │ │ │ ├── part_assembly_view.js
│ │ │ │ ├── part_creation_effectivity_view.js
│ │ │ │ ├── part_effectivities_view.js
│ │ │ │ ├── part_effectivity_view.js
│ │ │ │ ├── part_link_view.js
│ │ │ │ ├── part_modal_view.js
│ │ │ │ ├── part_substitute_link_view.js
│ │ │ │ ├── part_update_effectivity_view.js
│ │ │ │ ├── part_usage_link_view.js
│ │ │ │ ├── used_by_group_list_view.js
│ │ │ │ ├── used_by_list_item_part_view.js
│ │ │ │ ├── used_by_list_item_view.js
│ │ │ │ ├── used_by_list_view.js
│ │ │ │ ├── used_by_path_data_item_view.js
│ │ │ │ ├── used_by_pd_instance_group_list_view.js
│ │ │ │ ├── used_by_pd_instance_list_view.js
│ │ │ │ └── used_by_view.js
│ │ │ ├── pathToPathLink
│ │ │ │ └── path_to_path_link_item.js
│ │ │ ├── prompt.js
│ │ │ ├── security
│ │ │ │ ├── acl.js
│ │ │ │ ├── acl_clone_edit.js
│ │ │ │ ├── acl_edit.js
│ │ │ │ ├── acl_item.js
│ │ │ │ └── membership_item.js
│ │ │ ├── share
│ │ │ │ └── share_entity.js
│ │ │ ├── tags
│ │ │ │ ├── tag.js
│ │ │ │ └── tags_management.js
│ │ │ ├── time_zone.js
│ │ │ ├── udf
│ │ │ │ ├── calculation.js
│ │ │ │ └── user_defined_function.js
│ │ │ ├── used_by
│ │ │ │ ├── used_by_list_item_view.js
│ │ │ │ └── used_by_list_view.js
│ │ │ ├── viewers
│ │ │ │ ├── default.js
│ │ │ │ ├── image.js
│ │ │ │ ├── office.js
│ │ │ │ ├── video.js
│ │ │ │ ├── viewers-factory.js
│ │ │ │ └── viewers-utils.js
│ │ │ └── workflow
│ │ │ │ ├── lifecycle.js
│ │ │ │ ├── lifecycle_activity.js
│ │ │ │ ├── lifecycle_task.js
│ │ │ │ ├── lifecycle_task_signing.js
│ │ │ │ ├── role_item_view.js
│ │ │ │ ├── workflow_list.js
│ │ │ │ └── workflow_mapping.js
│ │ └── websocket
│ │ │ ├── callState.js
│ │ │ ├── channel.js
│ │ │ ├── channelListener.js
│ │ │ ├── channelMessagesType.js
│ │ │ ├── channelStatus.js
│ │ │ └── rejectCallReason.js
│ ├── dmu
│ │ ├── controls
│ │ │ ├── OrbitControls.js
│ │ │ ├── PointerLockControls.js
│ │ │ ├── TrackballControls.js
│ │ │ └── TransformControls.js
│ │ ├── loaders
│ │ │ ├── BinaryLoader.js
│ │ │ ├── MTLLoader.js
│ │ │ └── OBJLoader.js
│ │ └── utils
│ │ │ ├── BufferGeometryUtils.js
│ │ │ ├── Reflector.js
│ │ │ └── Stats.js
│ ├── lib
│ │ ├── empty.pdf
│ │ ├── helvetiker_regular.typeface.json
│ │ └── plugin-detect.js
│ ├── localization
│ │ └── nls
│ │ │ ├── account-management.js
│ │ │ ├── change-management.js
│ │ │ ├── common.js
│ │ │ ├── document-management.js
│ │ │ ├── download.js
│ │ │ ├── es
│ │ │ └── common.js
│ │ │ ├── fr
│ │ │ ├── account-management.js
│ │ │ ├── change-management.js
│ │ │ ├── common.js
│ │ │ ├── document-management.js
│ │ │ ├── download.js
│ │ │ ├── index.js
│ │ │ ├── organization-management.js
│ │ │ ├── product-management.js
│ │ │ ├── product-structure.js
│ │ │ └── workspace-management.js
│ │ │ ├── index.js
│ │ │ ├── organization-management.js
│ │ │ ├── product-management.js
│ │ │ ├── product-structure.js
│ │ │ ├── ru
│ │ │ ├── account-management.js
│ │ │ ├── change-management.js
│ │ │ ├── common.js
│ │ │ ├── document-management.js
│ │ │ ├── download.js
│ │ │ ├── index.js
│ │ │ ├── organization-management.js
│ │ │ ├── product-management.js
│ │ │ ├── product-structure.js
│ │ │ └── workspace-management.js
│ │ │ └── workspace-management.js
│ ├── modules
│ │ ├── all.js
│ │ ├── chat-module
│ │ │ ├── app.js
│ │ │ ├── collections
│ │ │ │ └── chat_message_collection.js
│ │ │ ├── models
│ │ │ │ └── chat_message_model.js
│ │ │ ├── templates
│ │ │ │ └── chat_message_view.html
│ │ │ └── views
│ │ │ │ ├── chat_message_view.js
│ │ │ │ ├── chat_module_view.js
│ │ │ │ └── chat_session_view.js
│ │ ├── coworkers-access-module
│ │ │ ├── app.js
│ │ │ ├── templates
│ │ │ │ └── coworker_item_template.html
│ │ │ └── views
│ │ │ │ ├── coworkers_access_module_view.js
│ │ │ │ └── coworkers_item_view.js
│ │ ├── user-popover-module
│ │ │ └── app.js
│ │ └── webrtc-module
│ │ │ ├── adapters
│ │ │ └── webRTCAdapter.js
│ │ │ ├── app.js
│ │ │ ├── templates
│ │ │ └── webrtc_module_template.html
│ │ │ └── views
│ │ │ └── webrtc_module_view.js
│ └── utils
│ │ ├── charts-helpers.js
│ │ ├── datatables.oSort.ext.js
│ │ ├── effects.js
│ │ ├── file-download.js
│ │ ├── input-validity.js
│ │ ├── jquery.maskedinput-config.js
│ │ ├── popover.utils.js
│ │ ├── query-builder-options.js
│ │ ├── url-utils.js
│ │ └── utils.prototype.js
├── less
│ ├── account-management
│ │ ├── content.less
│ │ ├── menu.less
│ │ └── style.less
│ ├── change-management
│ │ ├── content.less
│ │ ├── link.less
│ │ ├── menu.less
│ │ ├── style.less
│ │ └── workflow_models.less
│ ├── common
│ │ ├── acl.less
│ │ ├── action_buttons.less
│ │ ├── actions.less
│ │ ├── alert.less
│ │ ├── attributes.less
│ │ ├── bootstrap_combobox.less
│ │ ├── bootstrap_switch.less
│ │ ├── button.less
│ │ ├── content.less
│ │ ├── conversion.less
│ │ ├── dropdowns.less
│ │ ├── elements.less
│ │ ├── error.less
│ │ ├── files.less
│ │ ├── footer.less
│ │ ├── form.less
│ │ ├── general.less
│ │ ├── header.less
│ │ ├── icons.less
│ │ ├── import.less
│ │ ├── iteration.less
│ │ ├── lifecycle.less
│ │ ├── linked_documents.less
│ │ ├── lov.less
│ │ ├── menu.less
│ │ ├── mixins.less
│ │ ├── modal.less
│ │ ├── modal_base.less
│ │ ├── modification_notifications.less
│ │ ├── not_found.less
│ │ ├── part_assembly.less
│ │ ├── part_modal.less
│ │ ├── popover.less
│ │ ├── product_creation.less
│ │ ├── prompt.less
│ │ ├── registration.less
│ │ ├── responsive.less
│ │ ├── responsive_1200px_min.less
│ │ ├── responsive_767px_max.less
│ │ ├── responsive_768px_979px.less
│ │ ├── responsive_modal.less
│ │ ├── responsive_navbar.less
│ │ ├── responsive_utilities.less
│ │ ├── roles.less
│ │ ├── scrollbar.less
│ │ ├── style.less
│ │ ├── table.less
│ │ ├── tags.less
│ │ ├── task.less
│ │ ├── treeview.less
│ │ ├── udf.less
│ │ ├── used_by.less
│ │ ├── user_defined_function.less
│ │ └── variables.less
│ ├── document-management
│ │ ├── baselines.less
│ │ ├── content.less
│ │ ├── documents.less
│ │ ├── menu.less
│ │ ├── search.less
│ │ ├── style.less
│ │ └── templates.less
│ ├── documents
│ │ ├── document-revision.less
│ │ └── style.less
│ ├── download
│ │ ├── content.less
│ │ └── style.less
│ ├── main
│ │ ├── login.less
│ │ └── style.less
│ ├── modules
│ │ ├── chat_module.less
│ │ ├── coworkers_access_module.less
│ │ ├── style.less
│ │ └── webrtc_module.less
│ ├── organization-management
│ │ ├── content.less
│ │ ├── menu.less
│ │ └── style.less
│ ├── parts
│ │ ├── part-revision.less
│ │ └── style.less
│ ├── product-management
│ │ ├── baselines.less
│ │ ├── content.less
│ │ ├── menu.less
│ │ ├── page_controls.less
│ │ ├── part_list_item.less
│ │ ├── product_instances.less
│ │ ├── query_builder.less
│ │ ├── search.less
│ │ └── style.less
│ ├── product-structure
│ │ ├── actions_bar.less
│ │ ├── app.less
│ │ ├── bom_table.less
│ │ ├── collaborative.less
│ │ ├── content.less
│ │ ├── dat.less
│ │ ├── export_modal.less
│ │ ├── frame.less
│ │ ├── layers.less
│ │ ├── menu.less
│ │ ├── part_metadata.less
│ │ ├── path_to_path_link.less
│ │ ├── product_instance_data.less
│ │ ├── product_nav_list.less
│ │ ├── progress_bar.less
│ │ ├── scene.less
│ │ ├── shortcuts.less
│ │ ├── stats.less
│ │ ├── style.less
│ │ ├── style_frame.less
│ │ └── view_buttons.less
│ ├── visualization
│ │ └── style.less
│ └── workspace-management
│ │ ├── admin-accounts.less
│ │ ├── admin-oidc.less
│ │ ├── charts.less
│ │ ├── content.less
│ │ ├── customizations.less
│ │ ├── menu.less
│ │ ├── style.less
│ │ ├── webhooks.less
│ │ ├── workspace-home.less
│ │ └── workspace-users.less
├── main
│ ├── js
│ │ ├── app.js
│ │ ├── router.js
│ │ ├── templates
│ │ │ ├── account-creation-form.html
│ │ │ ├── app.html
│ │ │ ├── login-form.html
│ │ │ ├── login-with.html
│ │ │ ├── recover-form.html
│ │ │ └── recovery-form.html
│ │ └── views
│ │ │ ├── account-creation-form.js
│ │ │ ├── login-form.js
│ │ │ ├── login-scene.js
│ │ │ ├── login-with.js
│ │ │ ├── recover-form.js
│ │ │ └── recovery-form.js
│ └── main.js
├── organization-management
│ ├── index.html
│ ├── js
│ │ ├── app.js
│ │ ├── router.js
│ │ ├── templates
│ │ │ ├── content.html
│ │ │ ├── organization-create.html
│ │ │ ├── organization-edit.html
│ │ │ ├── organization-management-home.html
│ │ │ └── organization-members.html
│ │ └── views
│ │ │ ├── organization-create.js
│ │ │ ├── organization-edit.js
│ │ │ ├── organization-management-home.js
│ │ │ └── organization-members.js
│ └── main.js
├── parts
│ ├── index.html
│ ├── js
│ │ ├── app.js
│ │ ├── router.js
│ │ ├── templates
│ │ │ ├── cad-file.html
│ │ │ ├── part-permalink.html
│ │ │ └── part-revision.html
│ │ └── views
│ │ │ ├── cad-file-view.js
│ │ │ └── part-revision.js
│ └── main.js
├── product-management
│ ├── index.html
│ ├── js
│ │ ├── app.js
│ │ ├── collections
│ │ │ ├── checkedouts_part_collection.js
│ │ │ ├── configuration_items.js
│ │ │ ├── configurations.js
│ │ │ ├── part_templates.js
│ │ │ ├── tag_part_collection.js
│ │ │ └── tasks_part_collection.js
│ │ ├── models
│ │ │ ├── baselined_part.js
│ │ │ ├── configuration.js
│ │ │ ├── configuration_item.js
│ │ │ ├── part_template.js
│ │ │ └── path_choice.js
│ │ ├── router.js
│ │ ├── templates
│ │ │ ├── baselines
│ │ │ │ ├── baseline_choice_list.html
│ │ │ │ ├── baseline_choice_list_item.html
│ │ │ │ ├── baseline_configuration_list.html
│ │ │ │ ├── baseline_creation_view.html
│ │ │ │ ├── baseline_detail.html
│ │ │ │ ├── baseline_list_item.html
│ │ │ │ ├── baselined_part_list.html
│ │ │ │ ├── baselined_part_list_item.html
│ │ │ │ ├── baselines_content.html
│ │ │ │ ├── baselines_list.html
│ │ │ │ └── baselines_list_item.html
│ │ │ ├── configuration
│ │ │ │ ├── configuration_content.html
│ │ │ │ ├── configuration_creation_view.html
│ │ │ │ ├── configuration_details.html
│ │ │ │ ├── configuration_list.html
│ │ │ │ └── configuration_list_item.html
│ │ │ ├── content.html
│ │ │ ├── importer.html
│ │ │ ├── nav
│ │ │ │ ├── baselines_nav.html
│ │ │ │ ├── checkedouts_nav.html
│ │ │ │ ├── configuration_nav.html
│ │ │ │ ├── part_nav.html
│ │ │ │ ├── part_template_nav.html
│ │ │ │ ├── product_instances_nav.html
│ │ │ │ ├── product_nav.html
│ │ │ │ ├── tag_nav.html
│ │ │ │ ├── tag_nav_item.html
│ │ │ │ └── tasks_nav.html
│ │ │ ├── part-template
│ │ │ │ ├── part_template_content.html
│ │ │ │ ├── part_template_creation_view.html
│ │ │ │ ├── part_template_list.html
│ │ │ │ └── part_template_list_item.html
│ │ │ ├── part
│ │ │ │ ├── part_content.html
│ │ │ │ ├── part_creation_view.html
│ │ │ │ ├── part_grouped_by_list.html
│ │ │ │ ├── part_grouped_by_list_item.html
│ │ │ │ ├── part_import_form.html
│ │ │ │ ├── part_import_modal.html
│ │ │ │ ├── part_list.html
│ │ │ │ ├── part_list_item.html
│ │ │ │ ├── part_new_version.html
│ │ │ │ └── search_part_form.html
│ │ │ ├── product-instances
│ │ │ │ ├── product_instance_modal.html
│ │ │ │ ├── product_instances_content.html
│ │ │ │ ├── product_instances_creation.html
│ │ │ │ ├── product_instances_import_form.html
│ │ │ │ ├── product_instances_import_modal.html
│ │ │ │ ├── product_instances_list.html
│ │ │ │ └── product_instances_list_item.html
│ │ │ ├── product
│ │ │ │ ├── product_content.html
│ │ │ │ ├── product_creation_view.html
│ │ │ │ ├── product_details.html
│ │ │ │ ├── product_list.html
│ │ │ │ └── product_list_item.html
│ │ │ ├── query_builder.html
│ │ │ └── search_part_advanced_form.html
│ │ └── views
│ │ │ ├── advanced_search.js
│ │ │ ├── baselines
│ │ │ ├── baseline_choice_list.js
│ │ │ ├── baseline_choice_list_item.js
│ │ │ ├── baseline_configuration_list.js
│ │ │ ├── baseline_creation_view.js
│ │ │ ├── baseline_detail_view.js
│ │ │ ├── baseline_list.js
│ │ │ ├── baseline_list_item.js
│ │ │ ├── baselined_part_list.js
│ │ │ ├── baselined_part_list_item.js
│ │ │ ├── baselines_content.js
│ │ │ ├── baselines_list.js
│ │ │ └── baselines_list_item.js
│ │ │ ├── configuration
│ │ │ ├── configuration_content.js
│ │ │ ├── configuration_creation_view.js
│ │ │ ├── configuration_details_view.js
│ │ │ ├── configuration_list.js
│ │ │ └── configuration_list_item.js
│ │ │ ├── nav
│ │ │ ├── baselines_nav.js
│ │ │ ├── checkedouts_nav.js
│ │ │ ├── configuration_nav.js
│ │ │ ├── part_nav.js
│ │ │ ├── part_template_nav.js
│ │ │ ├── product_instances_nav.js
│ │ │ ├── product_nav.js
│ │ │ ├── tag_nav.js
│ │ │ ├── tag_nav_item.js
│ │ │ └── tasks_nav.js
│ │ │ ├── part-template
│ │ │ ├── part_template_content.js
│ │ │ ├── part_template_creation_view.js
│ │ │ ├── part_template_edit_view.js
│ │ │ ├── part_template_list.js
│ │ │ └── part_template_list_item.js
│ │ │ ├── part
│ │ │ ├── part_content.js
│ │ │ ├── part_creation_view.js
│ │ │ ├── part_grouped_by_list.js
│ │ │ ├── part_grouped_by_list_item.js
│ │ │ ├── part_importer.js
│ │ │ ├── part_list.js
│ │ │ ├── part_list_item.js
│ │ │ └── part_new_version.js
│ │ │ ├── product-instances
│ │ │ ├── product_instance_modal.js
│ │ │ ├── product_instances_content.js
│ │ │ ├── product_instances_creation.js
│ │ │ ├── product_instances_importer.js
│ │ │ ├── product_instances_list.js
│ │ │ └── product_instances_list_item.js
│ │ │ ├── product
│ │ │ ├── product_content.js
│ │ │ ├── product_creation_view.js
│ │ │ ├── product_details_view.js
│ │ │ ├── product_list.js
│ │ │ └── product_list_item.js
│ │ │ └── query_builder.js
│ └── main.js
├── product-structure
│ ├── index.html
│ ├── js
│ │ ├── app.js
│ │ ├── collections
│ │ │ ├── layer_collection.js
│ │ │ ├── marker_collection.js
│ │ │ ├── part_collection.js
│ │ │ └── result_path_collection.js
│ │ ├── dmu
│ │ │ ├── InstancesManager.js
│ │ │ ├── LayerManager.js
│ │ │ ├── LoaderManager.js
│ │ │ ├── MeasureTool.js
│ │ │ ├── SceneManager.js
│ │ │ └── collaborativeController.js
│ │ ├── frameRouter.js
│ │ ├── models
│ │ │ ├── component_module.js
│ │ │ ├── layer.js
│ │ │ ├── marker.js
│ │ │ ├── path_data_master.js
│ │ │ ├── product_instance_data.js
│ │ │ └── result_path.js
│ │ ├── router.js
│ │ ├── templates
│ │ │ ├── baselines
│ │ │ │ └── baseline_select.html
│ │ │ ├── blocker.html
│ │ │ ├── bom.html
│ │ │ ├── bom_content.html
│ │ │ ├── bom_header.html
│ │ │ ├── bom_item.html
│ │ │ ├── collaborative_view.html
│ │ │ ├── content.html
│ │ │ ├── control_clipping.html
│ │ │ ├── control_cutplan.html
│ │ │ ├── control_explode.html
│ │ │ ├── control_layers.html
│ │ │ ├── control_markers.html
│ │ │ ├── control_measure.html
│ │ │ ├── control_modes.html
│ │ │ ├── control_navigation.html
│ │ │ ├── control_options.html
│ │ │ ├── control_transform.html
│ │ │ ├── controls_infos_modal.html
│ │ │ ├── export_scene_modal.html
│ │ │ ├── layer_controls.html
│ │ │ ├── layer_item.html
│ │ │ ├── marker_create_modal.html
│ │ │ ├── marker_info_modal.html
│ │ │ ├── nav_list_search_bar.html
│ │ │ ├── part_instance.html
│ │ │ ├── part_meta_data.html
│ │ │ ├── path_to_path_link_item.html
│ │ │ ├── path_to_path_link_modal.html
│ │ │ ├── product-instance-data-modal.html
│ │ │ ├── progress_bar.html
│ │ │ └── shortcuts.html
│ │ ├── views
│ │ │ ├── baselines
│ │ │ │ └── baseline_select_view.js
│ │ │ ├── blocker_view.js
│ │ │ ├── bom_content_view.js
│ │ │ ├── bom_header_view.js
│ │ │ ├── bom_item_view.js
│ │ │ ├── bom_view.js
│ │ │ ├── collaborative_view.js
│ │ │ ├── component_views.js
│ │ │ ├── control_clipping_view.js
│ │ │ ├── control_explode_view.js
│ │ │ ├── control_layers_view.js
│ │ │ ├── control_markers_view.js
│ │ │ ├── control_measure_view.js
│ │ │ ├── control_modes_view.js
│ │ │ ├── control_navigation_view.js
│ │ │ ├── control_options_view.js
│ │ │ ├── control_transform_view.js
│ │ │ ├── controls_infos_modal_view.js
│ │ │ ├── export_scene_modal_view.js
│ │ │ ├── layer-header-view.js
│ │ │ ├── layer-item-view.js
│ │ │ ├── layers-list-view.js
│ │ │ ├── marker_create_modal_view.js
│ │ │ ├── marker_info_modal_view.js
│ │ │ ├── part_instance_view.js
│ │ │ ├── part_metadata_view.js
│ │ │ ├── parts_tree_view.js
│ │ │ ├── path_data_modal.js
│ │ │ ├── path_to_path_link_item.js
│ │ │ ├── path_to_path_link_modal.js
│ │ │ ├── progress_bar_view.js
│ │ │ ├── search_view.js
│ │ │ └── shortcuts_view.js
│ │ └── workers
│ │ │ ├── DegradationLevelBalancer.js
│ │ │ ├── InstancesSorter.js
│ │ │ └── InstancesWorker.js
│ └── main.js
├── sounds
│ ├── incoming-call.ogg
│ └── notification.ogg
├── visualization
│ ├── index.html
│ └── main.js
├── webapp.properties.json
└── workspace-management
│ ├── index.html
│ ├── js
│ ├── app.js
│ ├── hooks
│ │ └── hooks-types.js
│ ├── router.js
│ ├── templates
│ │ ├── admin-accounts.html
│ │ ├── admin-dashboard.html
│ │ ├── admin-home.html
│ │ ├── admin-oauth-edit.html
│ │ ├── admin-oauth-new.html
│ │ ├── admin-oauth-provider.html
│ │ ├── admin-oauth.html
│ │ ├── admin-options.html
│ │ ├── content.html
│ │ ├── hooks-item.html
│ │ ├── hooks-manager.html
│ │ ├── notification-edit.html
│ │ ├── notification-options.html
│ │ ├── part-table-customizations.html
│ │ ├── workspace-admin-new.html
│ │ ├── workspace-creation.html
│ │ ├── workspace-customizations.html
│ │ ├── workspace-dashboard.html
│ │ ├── workspace-edit.html
│ │ ├── workspace-item.html
│ │ ├── workspace-management-home.html
│ │ ├── workspace-notifications.html
│ │ └── workspace-users.html
│ └── views
│ │ ├── admin-accounts.js
│ │ ├── admin-dashboard.js
│ │ ├── admin-home.js
│ │ ├── admin-oauth-edit.js
│ │ ├── admin-oauth-new.js
│ │ ├── admin-oauth.js
│ │ ├── admin-options.js
│ │ ├── hooks-item.js
│ │ ├── hooks-manager.js
│ │ ├── notification-edit.js
│ │ ├── notification-options.js
│ │ ├── part-table-customizations.js
│ │ ├── workspace-admin-new.js
│ │ ├── workspace-creation.js
│ │ ├── workspace-customizations.js
│ │ ├── workspace-dashboard.js
│ │ ├── workspace-edit.js
│ │ ├── workspace-item.js
│ │ ├── workspace-management-home.js
│ │ ├── workspace-notifications.js
│ │ └── workspace-users.js
│ └── main.js
├── bower.json
├── build.sh
├── docker
├── Dockerfile
└── entrypoint.sh
├── grunt
├── dev
│ ├── jshint.js
│ ├── server-front.js
│ └── tests.js
├── modules
│ ├── account-management.js
│ ├── change-management.js
│ ├── document-management.js
│ ├── documents.js
│ ├── download.js
│ ├── main.js
│ ├── organization-management.js
│ ├── parts.js
│ ├── product-management.js
│ ├── product-structure.js
│ ├── visualization.js
│ └── workspace-management.js
└── tasks
│ ├── build.js
│ └── copy.js
├── index.html
├── package-lock.json
├── package.json
└── tests
├── .gitignore
├── README.md
├── config.js
├── js
├── auth
│ ├── login.js
│ └── logout.js
├── change-management
│ ├── issue
│ │ ├── issueCreation.js
│ │ └── issueDeletion.js
│ ├── milestone
│ │ ├── milestoneCreation.js
│ │ └── milestoneDeletion.js
│ ├── order
│ │ ├── orderCreation.js
│ │ └── orderDeletion.js
│ ├── request
│ │ ├── requestCreation.js
│ │ └── requestDeletion.js
│ ├── role
│ │ └── roleCreation.js
│ └── workflow
│ │ ├── workflowCreation.js
│ │ ├── workflowDeletion.js
│ │ └── workflowDuplication.js
├── common
│ ├── attributes.js
│ └── partFromTemplate.js
├── content-type
│ └── contentTypeCheck.js
├── document-management
│ ├── document
│ │ ├── documentAddLink.js
│ │ ├── documentCheckin.js
│ │ ├── documentCheckout.js
│ │ ├── documentClickLink.js
│ │ ├── documentCreation.js
│ │ ├── documentCreationFromTemplate.js
│ │ ├── documentCreationWithWorkflow.js
│ │ ├── documentDeletion.js
│ │ ├── documentFilesRemove.js
│ │ ├── documentMultipleCheckin.js
│ │ ├── documentMultipleCheckout.js
│ │ ├── documentMultipleDeletion.js
│ │ ├── documentMultipleRelease.js
│ │ ├── documentMultipleUndoCheckout.js
│ │ ├── documentObsolete.js
│ │ ├── documentRelease.js
│ │ ├── documentUploadFile.js
│ │ └── documentsCreation.js
│ ├── folder
│ │ ├── folderCreation.js
│ │ └── folderDeletion.js
│ ├── lifecycle
│ │ └── approveTask.js
│ ├── lov
│ │ ├── lovCreation.js
│ │ ├── lovDeletion.js
│ │ └── lovInTemplateCreation.js
│ ├── share
│ │ ├── expiredSharedDocument.js
│ │ ├── privateSharedDocument.js
│ │ ├── publicSharedDocument.js
│ │ └── sharedDocumentCreation.js
│ ├── tag
│ │ ├── tagCreation.js
│ │ ├── tagDeletion.js
│ │ └── tagList.js
│ └── template
│ │ ├── templateCreation.js
│ │ └── templateDeletion.js
├── includes
│ └── vars.js
├── pre
│ └── start.js
├── product-management
│ ├── assembly
│ │ ├── assemblyCheck.js
│ │ ├── assemblyCreation.js
│ │ └── bomInspection.js
│ ├── baseline
│ │ ├── baselineCreation.js
│ │ └── baselineDeletion.js
│ ├── part
│ │ ├── checkUsedByList.js
│ │ ├── partAddLink.js
│ │ ├── partCheckin.js
│ │ ├── partCheckout.js
│ │ ├── partClickLink.js
│ │ ├── partCreation.js
│ │ ├── partDeletion.js
│ │ ├── partMultipleDeletion.js
│ │ ├── partObsolete.js
│ │ ├── partRelease.js
│ │ ├── partUploadAttachedFiles.js
│ │ ├── partUploadNativeCadFile.js
│ │ ├── partsMultipleCheckin.js
│ │ ├── partsMultipleCheckout.js
│ │ ├── partsMultipleRelease.js
│ │ ├── partsMultipleUndoCheckout.js
│ │ └── showPartDetails.js
│ ├── pathToPathLink
│ │ ├── pathToPathLinkCheck.js
│ │ └── pathToPathLinkCreation.js
│ ├── product-instance
│ │ ├── productInstanceCreation.js
│ │ ├── productInstanceData.js
│ │ └── productInstanceDeletion.js
│ ├── product
│ │ ├── productCreation.js
│ │ └── productDeletion.js
│ ├── queryBuilder
│ │ └── queryBuilderSearch.js
│ ├── share
│ │ ├── expiredSharedPart.js
│ │ ├── privateSharedPart.js
│ │ ├── publicSharedPart.js
│ │ └── sharedPartCreation.js
│ └── template
│ │ ├── partTemplateCreation.js
│ │ ├── partTemplateDeletion.js
│ │ └── templateWithAttribute.js
├── workspace
│ └── workspaceCreation.js
└── ws
│ ├── websocket.auth.tests.js
│ ├── websocket.chat.tests.js
│ ├── websocket.status.tests.js
│ └── ws.utils.js
├── res
├── document-upload.txt
├── document-upload2.txt
└── part-upload.obj
└── run.js
/.bowerrc:
--------------------------------------------------------------------------------
1 | {
2 | "directory": "app/bower_components",
3 | "allowRoot": true
4 | }
5 |
--------------------------------------------------------------------------------
/.dockerignore:
--------------------------------------------------------------------------------
1 | *
2 | !dist
3 | !docker
4 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | # EditorConfig helps developers define and maintain consistent
2 | # coding styles between different editors and IDEs
3 | # editorconfig.org
4 |
5 | root = true
6 |
7 |
8 | [*]
9 |
10 | # Change these settings to your own preference
11 | indent_style = space
12 | indent_size = 4
13 |
14 | # We recommend you to keep these unchanged
15 | end_of_line = lf
16 | charset = utf-8
17 | trim_trailing_whitespace = true
18 | insert_final_newline = true
19 |
20 | [*.md]
21 | trim_trailing_whitespace = false
22 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | * text=auto
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules/
2 | bower_components/
3 | dist/
4 | target/
5 | test/temp
6 | .sass-cache
7 | .tmp
8 | app/**/main.css
9 | .idea/
10 | .iml
11 | docdoku-plm-front.iml
12 | app/webapp.properties.json
13 |
--------------------------------------------------------------------------------
/.jshintrc:
--------------------------------------------------------------------------------
1 | {
2 | "node": true,
3 | "browser": true,
4 | "esnext": true,
5 | "bitwise": false,
6 | "camelcase": false,
7 | "curly": true,
8 | "eqeqeq": true,
9 | "immed": true,
10 | "indent": 4,
11 | "latedef": true,
12 | "newcap": true,
13 | "noarg": true,
14 | "quotmark": "single",
15 | "regexp": true,
16 | "undef": true,
17 | "unused": true,
18 | "strict": true,
19 | "trailing": true,
20 | "smarttabs": true,
21 | "jquery": true,
22 | "globals": {
23 | "Docdokuplm": true,
24 | "docdokuplm": true,
25 | "_": false,
26 | "Backbone": false,
27 | "JST": false,
28 | "beforeEach": false,
29 | "describe": false,
30 | "it": false,
31 | "assert": true,
32 | "expect": true,
33 | "should": true,
34 | "require": false,
35 | "define": false
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/.jshintrc.default:
--------------------------------------------------------------------------------
1 | {
2 | "node": true,
3 | "browser": true,
4 | "esnext": true,
5 | "bitwise": true,
6 | "camelcase": true,
7 | "curly": true,
8 | "eqeqeq": true,
9 | "immed": true,
10 | "indent": 4,
11 | "latedef": true,
12 | "newcap": true,
13 | "noarg": true,
14 | "quotmark": "single",
15 | "regexp": true,
16 | "undef": true,
17 | "unused": true,
18 | "strict": true,
19 | "trailing": true,
20 | "smarttabs": true,
21 | "jquery": true,
22 | "globals": {
23 | "Docdokuplm": true,
24 | "docdokuplm": true,
25 | "_": false,
26 | "Backbone": false,
27 | "JST": false,
28 | "beforeEach": false,
29 | "describe": false,
30 | "it": false,
31 | "assert": true,
32 | "expect": true,
33 | "should": true,
34 | "require": false,
35 | "define": false
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/.yo-rc.json:
--------------------------------------------------------------------------------
1 | {
2 | "generator-backbone": {
3 | "appPath": "app",
4 | "appName": "Docdokuplm",
5 | "coffee": false,
6 | "testFramework": "mocha",
7 | "templateFramework": "lodash",
8 | "compassBootstrap": false,
9 | "includeRequireJS": true
10 | },
11 | "generator-mocha": {}
12 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # DocDokuPLM web client
2 |
3 | Read the development guide on [this page](https://github.com/docdoku/docdoku-plm-front/wiki/Development-Guide)
4 |
--------------------------------------------------------------------------------
/app/account-management/js/app.js:
--------------------------------------------------------------------------------
1 | /*global define,App*/
2 | define([
3 | 'backbone',
4 | 'mustache',
5 | 'text!templates/content.html',
6 | 'views/edit-account'
7 | ], function (Backbone, Mustache, template, EditAccountView) {
8 | 'use strict';
9 | var AppView = Backbone.View.extend({
10 |
11 | el: '#content',
12 |
13 | events: {
14 | },
15 |
16 | initialize: function () {
17 | },
18 |
19 | render: function () {
20 | this.$el.html(Mustache.render(template, {
21 | i18n: App.config.i18n
22 | })).show();
23 | return this;
24 | },
25 |
26 | editAccount:function(){
27 | var view = new EditAccountView();
28 | this.$('#account-management-content').html(view.renderAuthView().el);
29 | }
30 |
31 | });
32 |
33 | return AppView;
34 | });
35 |
--------------------------------------------------------------------------------
/app/account-management/js/router.js:
--------------------------------------------------------------------------------
1 | /*global define,App*/
2 | define([
3 | 'backbone',
4 | 'common-objects/common/singleton_decorator'
5 | ],
6 | function (Backbone, singletonDecorator) {
7 | 'use strict';
8 | var Router = Backbone.Router.extend({
9 | routes: {
10 | '': 'editAccount'
11 | },
12 |
13 | editAccount:function(){
14 | App.appView.render();
15 | App.headerView.render();
16 | App.appView.editAccount();
17 | }
18 | });
19 |
20 | return singletonDecorator(Router);
21 | });
22 |
--------------------------------------------------------------------------------
/app/account-management/js/templates/content.html:
--------------------------------------------------------------------------------
1 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/app/change-management/js/collections/change_issue_collection.js:
--------------------------------------------------------------------------------
1 | /*global define,App*/
2 | define([
3 | 'backbone',
4 | 'models/change_issue'
5 | ], function (Backbone,ChangeIssueModel) {
6 | 'use strict';
7 | var ChangeIssueListCollection = Backbone.Collection.extend({
8 | model: ChangeIssueModel,
9 | url: function () {
10 | return App.config.apiEndPoint + '/workspaces/' + App.config.workspaceId + '/changes/issues';
11 | }
12 | });
13 |
14 | return ChangeIssueListCollection;
15 | });
16 |
--------------------------------------------------------------------------------
/app/change-management/js/collections/change_order_collection.js:
--------------------------------------------------------------------------------
1 | /*global define,App*/
2 | define([
3 | 'backbone',
4 | 'models/change_order'
5 | ], function (Backbone, ChangeOrderModel) {
6 | 'use strict';
7 | var ChangeOrderListCollection = Backbone.Collection.extend({
8 | model: ChangeOrderModel,
9 | url: function () {
10 | return App.config.apiEndPoint + '/workspaces/' + App.config.workspaceId + '/changes/orders';
11 | }
12 | });
13 |
14 | return ChangeOrderListCollection;
15 | });
16 |
--------------------------------------------------------------------------------
/app/change-management/js/collections/change_request_collection.js:
--------------------------------------------------------------------------------
1 | /*global define,App*/
2 | define([
3 | 'backbone',
4 | 'models/change_request'
5 | ], function (Backbone, ChangeRequestModel) {
6 | 'use strict';
7 | var ChangeRequestListCollection = Backbone.Collection.extend({
8 | model: ChangeRequestModel,
9 | url: function () {
10 | return App.config.apiEndPoint + '/workspaces/' + App.config.workspaceId + '/changes/requests';
11 | }
12 | });
13 |
14 | return ChangeRequestListCollection;
15 | });
16 |
--------------------------------------------------------------------------------
/app/change-management/js/collections/milestone_collection.js:
--------------------------------------------------------------------------------
1 | /*global define,App*/
2 | define([
3 | 'backbone',
4 | 'models/milestone'
5 | ], function (Backbone, MilestoneModel) {
6 | 'use strict';
7 | var MilestoneListCollection = Backbone.Collection.extend({
8 | model: MilestoneModel,
9 | url: function () {
10 | return App.config.apiEndPoint + '/workspaces/' + App.config.workspaceId + '/changes/milestones';
11 | }
12 | });
13 |
14 | return MilestoneListCollection;
15 | });
16 |
--------------------------------------------------------------------------------
/app/change-management/js/collections/roles.js:
--------------------------------------------------------------------------------
1 | /*global define,App*/
2 | define([
3 | 'backbone',
4 | 'common-objects/models/role'
5 | ], function (Backbone, Role) {
6 | 'use strict';
7 | var RoleList = Backbone.Collection.extend({
8 | model: Role,
9 |
10 | className: 'RoleList',
11 |
12 | comparator: function (a, b) {
13 | // sort roles by name
14 | var nameA = a.get('name');
15 | var nameB = b.get('name');
16 |
17 | if (nameA === nameB) {
18 | return 0;
19 | }
20 | return (nameA < nameB) ? -1 : 1;
21 | },
22 |
23 |
24 | url: function () {
25 | return App.config.apiEndPoint + '/workspaces/' + App.config.workspaceId + '/roles/';
26 | }
27 |
28 | });
29 |
30 | return RoleList;
31 | });
32 |
--------------------------------------------------------------------------------
/app/change-management/js/collections/roles_in_use.js:
--------------------------------------------------------------------------------
1 | /*global define,App*/
2 | define([
3 | 'backbone',
4 | 'common-objects/models/role'
5 | ], function (Backbone, Role) {
6 | 'use strict';
7 | var RoleInUseList = Backbone.Collection.extend({
8 | model: Role,
9 |
10 | url: function () {
11 | return App.config.apiEndPoint + '/workspaces/' + App.config.workspaceId + '/roles/inuse';
12 | }
13 |
14 | });
15 |
16 | return RoleInUseList;
17 | });
18 |
--------------------------------------------------------------------------------
/app/change-management/js/models/change_issue.js:
--------------------------------------------------------------------------------
1 | /*global define,App*/
2 | define([
3 | 'models/change_item'
4 | ], function (ChangeItemModel) {
5 | 'use strict';
6 | var ChangeIssueModel = ChangeItemModel.extend({
7 | urlRoot: function () {
8 | return App.config.apiEndPoint + '/workspaces/' + App.config.workspaceId + '/changes/issues';
9 | },
10 | getInitiator: function () {
11 | return this.get('initiator');
12 | }
13 | });
14 |
15 | return ChangeIssueModel;
16 | });
17 |
--------------------------------------------------------------------------------
/app/change-management/js/templates/change-issues/change_issue_content.html:
--------------------------------------------------------------------------------
1 |
2 |
5 | {{> deleteButton}}
6 | {{> tagsButton}}
7 | {{> aclButton}}
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/app/change-management/js/templates/change-issues/change_issue_list_item.html:
--------------------------------------------------------------------------------
1 | |
2 | {{model.getName}} |
3 | {{model.getAssigneeName}} |
4 | {{model.getPriority}} |
5 | {{model.getCategory}} |
6 | {{model.getAuthorName}} |
7 | {{model.getFormattedCreationDate}} |
8 |
9 | {{#model.isReadOnly}}
10 |
11 | {{/model.isReadOnly}}
12 | {{#model.isFullAccess}}
13 |
14 | {{/model.isFullAccess}}
15 | |
16 |
--------------------------------------------------------------------------------
/app/change-management/js/templates/change-orders/change_order_content.html:
--------------------------------------------------------------------------------
1 |
2 |
5 | {{> deleteButton}}
6 | {{> tagsButton}}
7 | {{> aclButton}}
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/app/change-management/js/templates/change-orders/change_order_list_item.html:
--------------------------------------------------------------------------------
1 | |
2 | {{model.getName}} |
3 | {{model.getAssigneeName}} |
4 | {{model.getPriority}} |
5 | {{model.getCategory}} |
6 | {{model.getAuthorName}} |
7 | {{model.getFormattedCreationDate}} |
8 |
9 | {{#model.isReadOnly}}
10 |
11 | {{/model.isReadOnly}}
12 | {{#model.isFullAccess}}
13 |
14 | {{/model.isFullAccess}}
15 | |
16 |
--------------------------------------------------------------------------------
/app/change-management/js/templates/change-requests/change_request_content.html:
--------------------------------------------------------------------------------
1 |
2 |
5 | {{> deleteButton}}
6 | {{> tagsButton}}
7 | {{> aclButton}}
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/app/change-management/js/templates/change-requests/change_request_list_item.html:
--------------------------------------------------------------------------------
1 | |
2 | {{model.getName}} |
3 | {{model.getAssigneeName}} |
4 | {{model.getPriority}} |
5 | {{model.getCategory}} |
6 | {{model.getAuthorName}} |
7 | {{model.getFormattedCreationDate}} |
8 |
9 | {{#model.isReadOnly}}
10 |
11 | {{/model.isReadOnly}}
12 | {{#model.isFullAccess}}
13 |
14 | {{/model.isFullAccess}}
15 | |
16 |
--------------------------------------------------------------------------------
/app/change-management/js/templates/change_item_list.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | |
4 | {{i18n.NAME}} |
5 | {{i18n.CHANGE_ITEM_ASSIGNEE}} |
6 | {{i18n.CHANGE_ITEM_PRIORITY}} |
7 | {{i18n.CHANGE_ITEM_CATEGORY}} |
8 | {{i18n.AUTHOR}} |
9 | {{i18n.CREATION_DATE}} |
10 | {{i18n.ACL}} |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/app/change-management/js/templates/content.html:
--------------------------------------------------------------------------------
1 |
11 |
12 |
--------------------------------------------------------------------------------
/app/change-management/js/templates/milestones/milestone_content.html:
--------------------------------------------------------------------------------
1 |
2 |
5 | {{> deleteButton}}
6 | {{> aclButton}}
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/app/change-management/js/templates/milestones/milestone_list.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | |
4 | {{i18n.TITLE}} |
5 | {{i18n.DUE_DATE}} |
6 | {{i18n.REQUESTS_NUMBER}} |
7 | {{i18n.ORDERS_NUMBER}} |
8 | {{i18n.ACL}} |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/app/change-management/js/templates/milestones/milestone_list_item.html:
--------------------------------------------------------------------------------
1 | |
2 | {{model.getTitle}} |
3 | {{model.getDueDateToPrint}} |
4 | {{model.getNumberOfRequests}} |
5 | {{model.getNumberOfOrders}} |
6 |
7 | {{#model.isReadOnly}}
8 |
9 | {{/model.isReadOnly}}
10 | {{#model.isFullAccess}}
11 |
12 | {{/model.isFullAccess}}
13 | |
14 |
--------------------------------------------------------------------------------
/app/change-management/js/templates/nav/change_issue_nav.html:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/app/change-management/js/templates/nav/change_order_nav.html:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/app/change-management/js/templates/nav/change_request_nav.html:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/app/change-management/js/templates/nav/milestone_nav.html:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/app/change-management/js/templates/nav/workflow_nav.html:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/app/change-management/js/templates/tasks/task.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/change-management/js/templates/tasks/task_list.html:
--------------------------------------------------------------------------------
1 |
23 |
--------------------------------------------------------------------------------
/app/change-management/js/templates/workflows/workflow_content_list.html:
--------------------------------------------------------------------------------
1 |
2 |
5 | {{> deleteButton}}
6 | {{> aclButton}}
7 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/change-management/js/templates/workflows/workflow_list.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | |
4 | {{i18n.REFERENCE}} |
5 | {{i18n.FINAL_STATE_PLACEHOLDER}} |
6 | {{i18n.AUTHOR}} |
7 | {{i18n.CREATION_DATE}} |
8 | {{i18n.ACL}} |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/app/change-management/js/templates/workflows/workflow_list_item.html:
--------------------------------------------------------------------------------
1 | |
2 | {{model.id}} |
3 | {{model.finalLifeCycleState}} |
4 | {{model.author.name}} |
5 | {{model.creationDate}} |
6 |
7 | {{#model.isReadOnly}}
8 |
9 | {{/model.isReadOnly}}
10 | {{#model.isFullAccess}}
11 |
12 | {{/model.isFullAccess}}
13 | |
14 |
--------------------------------------------------------------------------------
/app/change-management/js/templates/workflows/workflow_model_copy.html:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
11 |
12 |
13 |
17 |
18 |
--------------------------------------------------------------------------------
/app/change-management/js/views/tasks/task_content_list.js:
--------------------------------------------------------------------------------
1 | /*global define,App*/
2 | define([
3 | 'backbone',
4 | 'mustache',
5 | 'text!templates/tasks/task_list.html'
6 | ], function (Backbone, Mustache, template) {
7 | 'use strict';
8 | var TaskListView = Backbone.View.extend({
9 | events: {},
10 |
11 | initialize: function () {
12 |
13 | },
14 |
15 | render: function () {
16 | var _this = this;
17 | $.getJSON(App.config.apiEndPoint + '/workspaces/' + App.config.workspaceId + '/tasks/' + App.config.login + '/assigned')
18 | .then(function (tasks) {
19 | _this.$el.html(Mustache.render(template, {tasks: tasks, i18n: App.config.i18n}));
20 | });
21 | return this;
22 | }
23 |
24 | });
25 | return TaskListView;
26 | });
27 |
--------------------------------------------------------------------------------
/app/document-management/js/collections/checked_out_document.js:
--------------------------------------------------------------------------------
1 | /*global define,App*/
2 | define([
3 | 'backbone',
4 | 'common-objects/models/document/document_revision'
5 | ], function (Backbone, DocumentRevision) {
6 | 'use strict';
7 | var TagDocumentList = Backbone.Collection.extend({
8 |
9 | model: DocumentRevision,
10 |
11 | className: 'CheckedOutDocumentList',
12 |
13 | url: function () {
14 | return App.config.apiEndPoint + '/workspaces/' + App.config.workspaceId + '/documents/checkedout';
15 | },
16 |
17 | comparator: function (documentRevision) {
18 | return documentRevision.get('id');
19 | }
20 |
21 | });
22 |
23 | return TagDocumentList;
24 | });
25 |
--------------------------------------------------------------------------------
/app/document-management/js/collections/checkedout_document.js:
--------------------------------------------------------------------------------
1 | /*global define,App*/
2 | define([
3 | 'backbone',
4 | 'common-objects/models/document/document_revision'
5 | ], function (Backbone, DocumentRevision) {
6 | 'use strict';
7 | var CheckedoutDocumentList = Backbone.Collection.extend({
8 |
9 | model: DocumentRevision,
10 |
11 | className: 'CheckedoutDocumentList',
12 |
13 | url: function () {
14 | return App.config.apiEndPoint + '/workspaces/' + App.config.workspaceId + '/documents/checkedout';
15 | }
16 |
17 | });
18 |
19 | return CheckedoutDocumentList;
20 | });
21 |
--------------------------------------------------------------------------------
/app/document-management/js/collections/tag_document.js:
--------------------------------------------------------------------------------
1 | /*global define,App*/
2 | define([
3 | 'backbone',
4 | 'common-objects/models/document/document_revision'
5 | ], function (Backbone, DocumentRevision) {
6 | 'use strict';
7 | var TagDocumentList = Backbone.Collection.extend({
8 |
9 | model: DocumentRevision,
10 |
11 | className: 'TagDocumentList',
12 |
13 | url: function () {
14 | return App.config.apiEndPoint + '/workspaces/' + App.config.workspaceId + '/tags/' + encodeURIComponent(this.parent.get('label')) + '/documents';
15 | },
16 |
17 | comparator: function (documentRevision) {
18 | return documentRevision.get('id');
19 | }
20 |
21 | });
22 |
23 | return TagDocumentList;
24 | });
25 |
--------------------------------------------------------------------------------
/app/document-management/js/collections/template.js:
--------------------------------------------------------------------------------
1 | /*global define,App*/
2 | define([
3 | 'backbone',
4 | 'models/template',
5 | 'common-objects/common/singleton_decorator'
6 | ], function (Backbone, Template, singletonDecorator) {
7 | 'use strict';
8 | var TemplateList = Backbone.Collection.extend({
9 | url: function () {
10 | return App.config.apiEndPoint + '/workspaces/' + App.config.workspaceId + '/document-templates';
11 | },
12 | model: Template
13 | });
14 |
15 | TemplateList = singletonDecorator(TemplateList);
16 | TemplateList.className = 'TemplateList';
17 |
18 | return TemplateList;
19 | });
20 |
--------------------------------------------------------------------------------
/app/document-management/js/templates/baselines/baseline_content.html:
--------------------------------------------------------------------------------
1 |
2 | {{> snapButton}}
3 | {{> deleteButton}}
4 | {{> snapInProgressButton}}
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/app/document-management/js/templates/baselines/baseline_list.html:
--------------------------------------------------------------------------------
1 |
15 |
--------------------------------------------------------------------------------
/app/document-management/js/templates/baselines/baseline_list_item.html:
--------------------------------------------------------------------------------
1 | |
2 | {{model.getName}} |
3 | {{model.getDescription}} |
4 |
5 | {{#model.isReleased}}
6 | {{i18n.HEAD_RELEASED}}
7 | {{/model.isReleased}}
8 | {{^model.isReleased}}
9 | {{i18n.HEAD_CHECKIN}}
10 | {{/model.isReleased}}
11 | |
12 | {{model.getFormattedCreationDate}} |
13 | {{model.getAuthor}} |
14 | |
15 |
16 |
--------------------------------------------------------------------------------
/app/document-management/js/templates/baselines/baseline_nav.html:
--------------------------------------------------------------------------------
1 |
7 |
8 |
--------------------------------------------------------------------------------
/app/document-management/js/templates/baselines/document_revision_list.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/document-management/js/templates/baselines/document_revision_list_item.html:
--------------------------------------------------------------------------------
1 |
12 |
13 | {{#editMode}}
14 | {{#multiple}}
15 | {{i18n.MULTIPLE_VERSIONS_FOR_DOCUMENT}}
16 | {{/multiple}}
17 | {{/editMode}}
18 |
--------------------------------------------------------------------------------
/app/document-management/js/templates/checked_out_document_list.html:
--------------------------------------------------------------------------------
1 |
2 | {{> searchForm}}
3 | {{> deleteButton}}
4 | {{> checkoutButtonGroup}}
5 | {{> tagsButton}}
6 | {{> aclButton}}
7 | {{> snapInProgressButton}}
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/app/document-management/js/templates/checkedout_nav.html:
--------------------------------------------------------------------------------
1 |
11 |
--------------------------------------------------------------------------------
/app/document-management/js/templates/content.html:
--------------------------------------------------------------------------------
1 |
14 |
15 |
--------------------------------------------------------------------------------
/app/document-management/js/templates/document/document_template_select.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/app/document-management/js/templates/document_list.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | |
4 | |
5 | {{i18n.REFERENCE}} |
6 | {{i18n.VERSION}} |
7 | {{i18n.ITERATION}} |
8 | {{i18n.TYPE}} |
9 | {{i18n.TITLE}} |
10 | {{i18n.AUTHOR}} |
11 | {{i18n.MODIFICATION_DATE}} |
12 | {{i18n.LIFECYCLE_STATE}} |
13 | {{i18n.CHECKOUT_BY}} |
14 | {{i18n.ACL}} |
15 | |
16 | |
17 | |
18 | |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/app/document-management/js/templates/folder_document_list.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 | {{> searchForm}}
8 |
9 | {{> deleteButton}}
10 | {{> checkoutButtonGroup}}
11 | {{> tagsButton}}
12 | {{> aclButton}}
13 | {{> newVersionButton}}
14 | {{> releaseButton}}
15 | {{> obsoleteButton}}
16 | {{> snapInProgressButton}}
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/app/document-management/js/templates/folder_edit.html:
--------------------------------------------------------------------------------
1 |
22 |
--------------------------------------------------------------------------------
/app/document-management/js/templates/folder_nav.html:
--------------------------------------------------------------------------------
1 |
19 |
20 |
--------------------------------------------------------------------------------
/app/document-management/js/templates/folder_new.html:
--------------------------------------------------------------------------------
1 |
22 |
--------------------------------------------------------------------------------
/app/document-management/js/templates/search_document_form.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/document-management/js/templates/search_document_list.html:
--------------------------------------------------------------------------------
1 |
2 | {{> searchForm}}
3 | {{> deleteButton}}
4 | {{> checkoutButtonGroup}}
5 | {{> tagsButton}}
6 | {{> aclButton}}
7 | {{> newVersionButton}}
8 | {{> releaseButton}}
9 | {{> obsoleteButton}}
10 | {{> snapInProgressButton}}
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/app/document-management/js/templates/search_nav.html:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/app/document-management/js/templates/tag_document_list.html:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | {{> searchForm}}
7 |
8 | {{> deleteButton}}
9 | {{> checkoutButtonGroup}}
10 | {{> tagsButton}}
11 | {{> aclButton}}
12 | {{> newVersionButton}}
13 | {{> releaseButton}}
14 | {{> obsoleteButton}}
15 | {{> snapInProgressButton}}
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/app/document-management/js/templates/tag_list_item.html:
--------------------------------------------------------------------------------
1 |
21 |
--------------------------------------------------------------------------------
/app/document-management/js/templates/tag_nav.html:
--------------------------------------------------------------------------------
1 |
7 |
8 |
--------------------------------------------------------------------------------
/app/document-management/js/templates/task_document_list.html:
--------------------------------------------------------------------------------
1 |
2 | {{> searchForm}}
3 | {{> deleteButton}}
4 | {{> checkoutButtonGroup}}
5 | {{> tagsButton}}
6 | {{> aclButton}}
7 | {{> newVersionButton}}
8 | {{> releaseButton}}
9 | {{> obsoleteButton}}
10 | {{> snapInProgressButton}}
11 |
12 |
13 | {{> statusFilter}}
14 |
15 |
--------------------------------------------------------------------------------
/app/document-management/js/templates/task_nav.html:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/app/document-management/js/templates/template_content_list.html:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 | {{> deleteButton}}
9 | {{> aclButton}}
10 |
11 |
12 |
--------------------------------------------------------------------------------
/app/document-management/js/templates/template_list.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | |
4 | {{i18n.REFERENCE}} |
5 | {{i18n.TYPE}} |
6 | {{i18n.MASK}} |
7 | {{i18n.AUTHOR}} |
8 | {{i18n.CREATION_DATE}} |
9 | {{i18n.MODIFICATION_DATE}} |
10 | {{i18n.ACL}} |
11 | |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/app/document-management/js/templates/template_nav.html:
--------------------------------------------------------------------------------
1 |
7 |
8 |
--------------------------------------------------------------------------------
/app/document-management/js/views/content.js:
--------------------------------------------------------------------------------
1 | /*global define*/
2 | define([
3 | 'common-objects/views/base'
4 | ], function (BaseView) {
5 | 'use strict';
6 | var ContentView = BaseView.extend({
7 | el: '#document-management-content',
8 | initialize: function () {
9 | BaseView.prototype.initialize.apply(this, arguments);
10 | // destroy previous content view if any
11 | if (ContentView._instance) {
12 | ContentView._instance.destroy();
13 | }
14 | // keep track of the created content view
15 | ContentView._instance = this;
16 | },
17 | destroyed: function () {
18 | this.$el.html('');
19 | }
20 | });
21 | return ContentView;
22 | });
23 |
--------------------------------------------------------------------------------
/app/document-management/js/views/folder_list.js:
--------------------------------------------------------------------------------
1 | /*global define*/
2 | define([
3 | 'require',
4 | 'common-objects/views/components/collapsible_list'
5 | ], function (require, CollapsibleListView) {
6 | 'use strict';
7 | var FolderListView = CollapsibleListView.extend({
8 | itemViewFactory: function (model) {
9 | var FolderListItemView = require('views/folder_list_item'); // Circular dependency
10 | return new FolderListItemView({
11 | model: model
12 | });
13 | }
14 | });
15 | return FolderListView;
16 | });
17 |
--------------------------------------------------------------------------------
/app/document-management/js/views/folder_nav.js:
--------------------------------------------------------------------------------
1 | /*global define*/
2 | define([
3 | 'mustache',
4 | 'common-objects/common/singleton_decorator',
5 | 'views/folder_list_item',
6 | 'text!templates/folder_nav.html'
7 | ], function (Mustache, singletonDecorator, FolderListItemView, template) {
8 | 'use strict';
9 | var FolderNavView = FolderListItemView.extend({
10 |
11 | template: template,
12 | el: '#folder-nav',
13 | initialize: function () {
14 | FolderListItemView.prototype.initialize.apply(this, arguments);
15 | this.render();
16 | },
17 | refresh:function(){
18 | this.render();
19 | }
20 | });
21 | FolderNavView = singletonDecorator(FolderNavView);
22 | return FolderNavView;
23 | });
24 |
--------------------------------------------------------------------------------
/app/documents/js/router.js:
--------------------------------------------------------------------------------
1 | /*global define,App*/
2 | define([
3 | 'backbone',
4 | 'common-objects/common/singleton_decorator'
5 | ],
6 | function (Backbone, singletonDecorator) {
7 | 'use strict';
8 | var Router = Backbone.Router.extend({
9 | routes: {
10 | ':workspaceId/:documentId/:documentVersion': 'showDocumentRevision',
11 | ':uuid': 'showSharedEntity'
12 | },
13 |
14 | showDocumentRevision:function(workspace, documentId, documentVersion){
15 | App.appView.showDocumentRevision(workspace, documentId, documentVersion);
16 | },
17 |
18 | showSharedEntity:function(uuid){
19 | App.appView.showSharedEntity(uuid);
20 | }
21 | });
22 |
23 | return singletonDecorator(Router);
24 | });
25 |
--------------------------------------------------------------------------------
/app/documents/js/templates/document-permalink.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/app/download/dplm/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docdoku/docdoku-plm-front/95bdbe3d45f2f271ea7c5c057e38229b42ec5c03/app/download/dplm/.gitkeep
--------------------------------------------------------------------------------
/app/download/js/app.js:
--------------------------------------------------------------------------------
1 | /*global define,App*/
2 | define([
3 | 'backbone',
4 | 'mustache',
5 | 'text!templates/content.html'
6 | ], function (Backbone, Mustache, template) {
7 | 'use strict';
8 | var AppView = Backbone.View.extend({
9 |
10 | el: '#content',
11 |
12 | render: function () {
13 | this.$el.html(Mustache.render(template, {
14 | i18n: App.config.i18n,
15 | contextPath: App.config.contextPath
16 | })).show();
17 | return this;
18 | }
19 | });
20 |
21 | return AppView;
22 | });
23 |
--------------------------------------------------------------------------------
/app/images/apple.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docdoku/docdoku-plm-front/95bdbe3d45f2f271ea7c5c057e38229b42ec5c03/app/images/apple.gif
--------------------------------------------------------------------------------
/app/images/docdokuplm_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docdoku/docdoku-plm-front/95bdbe3d45f2f271ea7c5c057e38229b42ec5c03/app/images/docdokuplm_logo.png
--------------------------------------------------------------------------------
/app/images/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docdoku/docdoku-plm-front/95bdbe3d45f2f271ea7c5c057e38229b42ec5c03/app/images/favicon.ico
--------------------------------------------------------------------------------
/app/images/floor.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docdoku/docdoku-plm-front/95bdbe3d45f2f271ea7c5c057e38229b42ec5c03/app/images/floor.jpg
--------------------------------------------------------------------------------
/app/images/help_image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docdoku/docdoku-plm-front/95bdbe3d45f2f271ea7c5c057e38229b42ec5c03/app/images/help_image.png
--------------------------------------------------------------------------------
/app/images/icon-nav-bullet-down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docdoku/docdoku-plm-front/95bdbe3d45f2f271ea7c5c057e38229b42ec5c03/app/images/icon-nav-bullet-down.png
--------------------------------------------------------------------------------
/app/images/icon-nav-bullet-right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docdoku/docdoku-plm-front/95bdbe3d45f2f271ea7c5c057e38229b42ec5c03/app/images/icon-nav-bullet-right.png
--------------------------------------------------------------------------------
/app/images/linux.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docdoku/docdoku-plm-front/95bdbe3d45f2f271ea7c5c057e38229b42ec5c03/app/images/linux.gif
--------------------------------------------------------------------------------
/app/images/loader.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docdoku/docdoku-plm-front/95bdbe3d45f2f271ea7c5c057e38229b42ec5c03/app/images/loader.gif
--------------------------------------------------------------------------------
/app/images/pba.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docdoku/docdoku-plm-front/95bdbe3d45f2f271ea7c5c057e38229b42ec5c03/app/images/pba.bin
--------------------------------------------------------------------------------
/app/images/pba.json:
--------------------------------------------------------------------------------
1 | {
2 |
3 | "metadata" :
4 | {
5 | "formatVersion" : 3.1,
6 | "sourceFile" : "pba.obj",
7 | "generatedBy" : "OBJConverter",
8 | "vertices" : 12886,
9 | "faces" : 25792,
10 | "normals" : 0,
11 | "uvs" : 0,
12 | "materials" : 0
13 | },
14 |
15 | "materials": [ {
16 | "DbgColor" : 5994395,
17 | "DbgIndex" : 0,
18 | "DbgName" : "default",
19 | "vertexColors" : "face"
20 | }],
21 |
22 | "buffers": "pba.bin"
23 |
24 | }
25 |
--------------------------------------------------------------------------------
/app/images/product-loader.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docdoku/docdoku-plm-front/95bdbe3d45f2f271ea7c5c057e38229b42ec5c03/app/images/product-loader.gif
--------------------------------------------------------------------------------
/app/images/sidebar_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docdoku/docdoku-plm-front/95bdbe3d45f2f271ea7c5c057e38229b42ec5c03/app/images/sidebar_bg.png
--------------------------------------------------------------------------------
/app/images/sort_asc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docdoku/docdoku-plm-front/95bdbe3d45f2f271ea7c5c057e38229b42ec5c03/app/images/sort_asc.png
--------------------------------------------------------------------------------
/app/images/sort_both.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docdoku/docdoku-plm-front/95bdbe3d45f2f271ea7c5c057e38229b42ec5c03/app/images/sort_both.png
--------------------------------------------------------------------------------
/app/images/sort_desc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docdoku/docdoku-plm-front/95bdbe3d45f2f271ea7c5c057e38229b42ec5c03/app/images/sort_desc.png
--------------------------------------------------------------------------------
/app/images/treeview-default-line.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docdoku/docdoku-plm-front/95bdbe3d45f2f271ea7c5c057e38229b42ec5c03/app/images/treeview-default-line.gif
--------------------------------------------------------------------------------
/app/images/treeview-default.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docdoku/docdoku-plm-front/95bdbe3d45f2f271ea7c5c057e38229b42ec5c03/app/images/treeview-default.gif
--------------------------------------------------------------------------------
/app/images/user_avatar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docdoku/docdoku-plm-front/95bdbe3d45f2f271ea7c5c057e38229b42ec5c03/app/images/user_avatar.png
--------------------------------------------------------------------------------
/app/images/view.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docdoku/docdoku-plm-front/95bdbe3d45f2f271ea7c5c057e38229b42ec5c03/app/images/view.png
--------------------------------------------------------------------------------
/app/images/windows.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docdoku/docdoku-plm-front/95bdbe3d45f2f271ea7c5c057e38229b42ec5c03/app/images/windows.gif
--------------------------------------------------------------------------------
/app/images/workflow/parallel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docdoku/docdoku-plm-front/95bdbe3d45f2f271ea7c5c057e38229b42ec5c03/app/images/workflow/parallel.png
--------------------------------------------------------------------------------
/app/images/workflow/sequential.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docdoku/docdoku-plm-front/95bdbe3d45f2f271ea7c5c057e38229b42ec5c03/app/images/workflow/sequential.png
--------------------------------------------------------------------------------
/app/img/glyphicons-halflings-white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docdoku/docdoku-plm-front/95bdbe3d45f2f271ea7c5c057e38229b42ec5c03/app/img/glyphicons-halflings-white.png
--------------------------------------------------------------------------------
/app/img/glyphicons-halflings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docdoku/docdoku-plm-front/95bdbe3d45f2f271ea7c5c057e38229b42ec5c03/app/img/glyphicons-halflings.png
--------------------------------------------------------------------------------
/app/js/common-objects/collections/activity_models.js:
--------------------------------------------------------------------------------
1 | /*global define*/
2 | define([
3 | 'backbone',
4 | 'common-objects/models/workflow/activity_model'
5 | ], function (Backbone, ActivityModel) {
6 | 'use strict';
7 | var ActivityModels = Backbone.Collection.extend({
8 | model: ActivityModel
9 | });
10 |
11 | return ActivityModels;
12 | });
13 |
--------------------------------------------------------------------------------
/app/js/common-objects/collections/attribute_collection.js:
--------------------------------------------------------------------------------
1 | /*global define*/
2 | define([
3 | 'backbone',
4 | 'common-objects/models/attribute'
5 | ], function (Backbone, AttributeModel) {
6 | 'use strict';
7 | var AttributeCollection = Backbone.Collection.extend({
8 | model: AttributeModel,
9 | className: 'AttributeCollection'
10 | });
11 |
12 | return AttributeCollection;
13 | });
14 |
--------------------------------------------------------------------------------
/app/js/common-objects/collections/document_baselines.js:
--------------------------------------------------------------------------------
1 | /*global define,App*/
2 | define(['backbone', 'common-objects/models/document_baseline'],
3 | function (Backbone, DocumentBaseline) {
4 | 'use strict';
5 | var Baselines = Backbone.Collection.extend({
6 |
7 | model: DocumentBaseline,
8 |
9 | url: function () {
10 | return App.config.apiEndPoint + '/workspaces/' + App.config.workspaceId + '/document-baselines/';
11 | }
12 |
13 | });
14 |
15 | return Baselines;
16 | });
17 |
--------------------------------------------------------------------------------
/app/js/common-objects/collections/file/attached_file_collection.js:
--------------------------------------------------------------------------------
1 | /*global define*/
2 | define([
3 | 'backbone',
4 | 'common-objects/models/file/attached_file'
5 | ], function (Backbone, AttachedFileModel) {
6 | 'use strict';
7 | var AttachedFileCollection = Backbone.Collection.extend({
8 | model: AttachedFileModel,
9 | className: 'AttachedFileCollection'
10 | });
11 |
12 | return AttachedFileCollection;
13 | });
14 |
--------------------------------------------------------------------------------
/app/js/common-objects/collections/linked/linked_change_item_collection.js:
--------------------------------------------------------------------------------
1 | /*global define*/
2 | define([
3 | 'backbone',
4 | 'common-objects/models/linked/linked_change_item'
5 | ], function (Backbone, LinkedChangeItem) {
6 | 'use strict';
7 | var LinkedChangeItemCollection = Backbone.Collection.extend({
8 |
9 | model: LinkedChangeItem,
10 |
11 | comparator: function (linkedChangeItem) {
12 | return linkedChangeItem.getName();
13 | }
14 |
15 | });
16 |
17 | return LinkedChangeItemCollection;
18 | });
19 |
--------------------------------------------------------------------------------
/app/js/common-objects/collections/linked/linked_document_collection.js:
--------------------------------------------------------------------------------
1 | /*global define*/
2 | define([
3 | 'backbone',
4 | 'common-objects/models/linked/linked_document'
5 | ], function (Backbone, LinkedDocument) {
6 | 'use strict';
7 | var LinkedDocumentCollection = Backbone.Collection.extend({
8 |
9 | model: LinkedDocument,
10 |
11 | comparator: function (linkedDocument) {
12 | return linkedDocument.getDocKey();
13 | }
14 |
15 | });
16 |
17 | return LinkedDocumentCollection;
18 | });
19 |
--------------------------------------------------------------------------------
/app/js/common-objects/collections/linked/linked_document_iteration_collection.js:
--------------------------------------------------------------------------------
1 | /*global define*/
2 | define([
3 | 'backbone',
4 | 'common-objects/models/linked/linked_document_iteration'
5 | ], function (Backbone, LinkedDocumentIteration) {
6 | 'use strict';
7 | var LinkedDocumentIterationCollection = Backbone.Collection.extend({
8 |
9 | model: LinkedDocumentIteration,
10 |
11 | comparator: function (linkedDocumentIteration) {
12 | return linkedDocumentIteration.getDocKey();
13 | }
14 |
15 | });
16 |
17 | return LinkedDocumentIterationCollection;
18 | });
19 |
--------------------------------------------------------------------------------
/app/js/common-objects/collections/linked/linked_part_collection.js:
--------------------------------------------------------------------------------
1 | /*global define*/
2 | define([
3 | 'backbone',
4 | 'common-objects/models/linked/linked_part'
5 | ], function (Backbone, LinkedPart) {
6 | 'use strict';
7 | var LinkedPartCollection = Backbone.Collection.extend({
8 |
9 | model: LinkedPart,
10 |
11 | comparator: function (linkedPart) {
12 | return linkedPart.getPartKey();
13 | }
14 |
15 | });
16 |
17 | return LinkedPartCollection;
18 | });
19 |
--------------------------------------------------------------------------------
/app/js/common-objects/collections/lovs.js:
--------------------------------------------------------------------------------
1 | /*global define,App*/
2 | define([
3 | 'backbone',
4 | 'common-objects/models/lov/lov'
5 | ], function (Backbone, lov) {
6 | 'use strict';
7 | var LOVCollection = Backbone.Collection.extend({
8 |
9 | model: lov,
10 |
11 | url: App.config.apiEndPoint + '/workspaces/' + App.config.workspaceId + '/lov'
12 |
13 | });
14 |
15 | return LOVCollection;
16 | });
17 |
--------------------------------------------------------------------------------
/app/js/common-objects/collections/modification_notification_collection.js:
--------------------------------------------------------------------------------
1 | /*global _,define,App*/
2 | define([
3 | 'backbone',
4 | 'common-objects/models/modification_notification'
5 | ], function (Backbone, ModificationNotification) {
6 | 'use strict';
7 | var ModificationNotificationCollection = Backbone.Collection.extend({
8 |
9 | model: ModificationNotification,
10 | className: 'ModificationNotificationCollection',
11 |
12 | url: function () {
13 | return App.config.apiEndPoint + '/workspaces/' + App.config.workspaceId + '/notifications/';
14 | },
15 |
16 | hasUnreadModificationNotifications: function () {
17 | return _.select(this.models || [], function(notif) {
18 | return !notif.isAcknowledged();
19 | }).length;
20 | }
21 |
22 | });
23 |
24 | return ModificationNotificationCollection;
25 | });
26 |
--------------------------------------------------------------------------------
/app/js/common-objects/collections/reachable_users.js:
--------------------------------------------------------------------------------
1 | /*global define,App*/
2 | define([
3 | 'backbone',
4 | 'common-objects/models/user'
5 | ], function (Backbone, User) {
6 | 'use strict';
7 | var Users = Backbone.Collection.extend({
8 | model: User,
9 | url: function () {
10 | return App.config.apiEndPoint + '/workspaces/reachable-users';
11 | }
12 | });
13 |
14 | return Users;
15 | });
16 |
--------------------------------------------------------------------------------
/app/js/common-objects/collections/security/workspace_user_group_memberships.js:
--------------------------------------------------------------------------------
1 | /*global define,App*/
2 | define([
3 | 'backbone',
4 | 'common-objects/models/security/workspace_user_group_membership'
5 | ], function (Backbone, WorkspaceUserGroupMembership) {
6 | 'use strict';
7 | var WorkspaceUserGroupMemberships = Backbone.Collection.extend({
8 |
9 | model: WorkspaceUserGroupMembership,
10 |
11 | url: function () {
12 | return App.config.apiEndPoint + '/workspaces/' + App.config.workspaceId + '/memberships/usergroups';
13 | }
14 |
15 | });
16 |
17 | return WorkspaceUserGroupMemberships;
18 | });
19 |
--------------------------------------------------------------------------------
/app/js/common-objects/collections/security/workspace_user_memberships.js:
--------------------------------------------------------------------------------
1 | /*global define,App*/
2 | define([
3 | 'backbone',
4 | 'common-objects/models/security/workspace_user_membership'
5 | ], function (Backbone, WorkspaceUserMembership) {
6 | 'use strict';
7 | var WorkspaceUserMemberships = Backbone.Collection.extend({
8 |
9 | model: WorkspaceUserMembership,
10 |
11 | url: function () {
12 | return App.config.apiEndPoint + '/workspaces/' + App.config.workspaceId + '/memberships/users';
13 | }
14 |
15 | });
16 |
17 | return WorkspaceUserMemberships;
18 | });
19 |
--------------------------------------------------------------------------------
/app/js/common-objects/collections/substitute_part_collection.js:
--------------------------------------------------------------------------------
1 | /*global define*/
2 | define([
3 | 'backbone',
4 | 'common-objects/models/part'
5 | ], function (Backbone, Part) {
6 | 'use strict';
7 | var SubstitutePartList = Backbone.Collection.extend({
8 | model: Part,
9 |
10 | className: 'SubstitutePartList',
11 |
12 | setMainPart: function (part) {
13 | this.part = part;
14 | },
15 | initialize: function () {
16 |
17 | }
18 | });
19 |
20 | return SubstitutePartList;
21 | });
22 |
--------------------------------------------------------------------------------
/app/js/common-objects/collections/task_models.js:
--------------------------------------------------------------------------------
1 | /*global define*/
2 | define([
3 | 'backbone',
4 | 'common-objects/models/task_model'
5 | ], function (Backbone, TaskModel) {
6 | 'use strict';
7 | var TaskModels = Backbone.Collection.extend({
8 | model: TaskModel
9 | });
10 |
11 | return TaskModels;
12 | });
--------------------------------------------------------------------------------
/app/js/common-objects/collections/user_groups.js:
--------------------------------------------------------------------------------
1 | /*global define,App*/
2 | define([
3 | 'backbone',
4 | 'common-objects/models/user_group'
5 | ], function (Backbone, UserGroup) {
6 | 'use strict';
7 | var UserGroups = Backbone.Collection.extend({
8 | model: UserGroup,
9 | url: function () {
10 | return App.config.apiEndPoint + '/workspaces/' + App.config.workspaceId + '/user-group';
11 | }
12 | });
13 |
14 | return UserGroups;
15 | });
16 |
--------------------------------------------------------------------------------
/app/js/common-objects/collections/users.js:
--------------------------------------------------------------------------------
1 | /*global define,App*/
2 | define([
3 | 'backbone',
4 | 'common-objects/models/user'
5 | ], function (Backbone, User) {
6 | 'use strict';
7 | var Users = Backbone.Collection.extend({
8 | model: User,
9 | url: function () {
10 | return App.config.apiEndPoint + '/workspaces/' + App.config.workspaceId + '/users';
11 | }
12 | });
13 |
14 | return Users;
15 | });
16 |
--------------------------------------------------------------------------------
/app/js/common-objects/collections/workflow_models.js:
--------------------------------------------------------------------------------
1 | /*global define,App*/
2 | define([
3 | 'backbone',
4 | 'common-objects/models/workflow/workflow_model'
5 | ], function (Backbone, WorkflowModel) {
6 | 'use strict';
7 | var WorkflowModels = Backbone.Collection.extend({
8 | model: WorkflowModel,
9 | url: function () {
10 | return App.config.apiEndPoint + '/workspaces/' + App.config.workspaceId + '/workflow-models';
11 | }
12 | });
13 |
14 | return WorkflowModels;
15 | });
16 |
--------------------------------------------------------------------------------
/app/js/common-objects/common/singleton_decorator.js:
--------------------------------------------------------------------------------
1 | /*global _,define*/
2 | define(function () {
3 | // A Singleton decorator.
4 | // requires underscrore.js
5 | // var Foo = function () {};
6 | // Foo = singletonDecorator(Foo);
7 | 'use strict';
8 | var singletonDecorator = function (constructor) {
9 | constructor.getInstance = function () {
10 | if (!constructor._instance) {
11 | constructor._instance = _.extend(constructor.prototype, {});
12 | constructor.apply(constructor._instance, arguments);
13 | }
14 | return constructor._instance;
15 | };
16 | return constructor;
17 | };
18 | return singletonDecorator;
19 | });
20 |
--------------------------------------------------------------------------------
/app/js/common-objects/models/language.js:
--------------------------------------------------------------------------------
1 | /*global $,define,App*/
2 | define(['backbone'], function (Backbone) {
3 | 'use strict';
4 | var Language = Backbone.Model.extend({
5 | initialize: function () {
6 | this.className = 'Language';
7 | }
8 | });
9 |
10 | Language.getLanguages = function () {
11 | return $.getJSON(App.config.apiEndPoint + '/languages');
12 | };
13 |
14 | return Language;
15 | });
16 |
--------------------------------------------------------------------------------
/app/js/common-objects/models/security/admin.js:
--------------------------------------------------------------------------------
1 | /*global define,App*/
2 | define(['backbone'], function (Backbone) {
3 | 'use strict';
4 | var Admin = Backbone.Model.extend({
5 | url: function () {
6 | return App.config.apiEndPoint + '/workspaces/' + App.config.workspaceId + '/users/admin';
7 | },
8 |
9 | getLogin: function () {
10 | return this.get('login');
11 | }
12 |
13 | });
14 |
15 | return Admin;
16 |
17 | });
18 |
--------------------------------------------------------------------------------
/app/js/common-objects/models/tag.js:
--------------------------------------------------------------------------------
1 | /*global define*/
2 | define(['backbone'], function (Backbone) {
3 | 'use strict';
4 | var Tag = Backbone.Model.extend({
5 | initialize: function () {
6 | this.className = 'Tag';
7 | }
8 | });
9 | return Tag;
10 | });
11 |
--------------------------------------------------------------------------------
/app/js/common-objects/models/task_model.js:
--------------------------------------------------------------------------------
1 | /*global _,define*/
2 | define([
3 | 'backbone',
4 | 'common-objects/models/role'
5 | ], function (Backbone, Role) {
6 | 'use strict';
7 | var TaskModel = Backbone.Model.extend({
8 |
9 | defaults: {
10 | duration: 25
11 | },
12 |
13 | initialize: function () {
14 | if (!_.isUndefined(this.attributes.role)) {
15 | this.attributes.role = new Role(this.attributes.role);
16 | }
17 | },
18 |
19 | toJSON: function () {
20 | var index = this.collection.indexOf(this);
21 | var clonedAttributes = _.clone(this.attributes);
22 | clonedAttributes.role = clonedAttributes.role.toJSON();
23 | _.extend(clonedAttributes, {num: index});
24 | return clonedAttributes;
25 | }
26 |
27 | });
28 |
29 | return TaskModel;
30 | });
31 |
--------------------------------------------------------------------------------
/app/js/common-objects/models/timezone.js:
--------------------------------------------------------------------------------
1 | /*global $,define,App*/
2 | define(['backbone'], function (Backbone) {
3 | 'use strict';
4 | var TimeZone = Backbone.Model.extend({
5 | initialize: function () {
6 | this.className = 'TimeZone';
7 | }
8 | });
9 |
10 | TimeZone.getTimeZones = function () {
11 | return $.getJSON(App.config.apiEndPoint + '/timezones');
12 | };
13 |
14 | return TimeZone;
15 | });
16 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/alert.html:
--------------------------------------------------------------------------------
1 |
2 |
×
3 |
{{model.title}}
4 |
5 |
{{model.message}}
6 |
7 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/attributes/attribute_list_item_boolean.html:
--------------------------------------------------------------------------------
1 | {{> attributeListItem}}
2 |
3 |
9 |
10 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/attributes/attribute_list_item_date.html:
--------------------------------------------------------------------------------
1 | {{> attributeListItem}}
2 |
3 | {{#availability.value}}
4 |
6 | {{#availability.displayRequired}}
7 | {{#model.mandatory}}*{{/model.mandatory}}
8 | {{/availability.displayRequired}}
9 | {{/availability.value}}
10 | {{^availability.value}}
11 | {{model.value}}
12 | {{/availability.value}}
13 |
14 |
15 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/attributes/attribute_list_item_long_text.html:
--------------------------------------------------------------------------------
1 | {{> attributeListItem}}
2 |
3 | {{#availability.value}}
4 |
6 | {{#availability.displayRequired}}
7 | {{#model.mandatory}}*{{/model.mandatory}}
8 | {{/availability.displayRequired}}
9 | {{/availability.value}}
10 | {{^availability.value}}
11 | {{/availability.value}}
12 |
13 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/attributes/attribute_list_item_lov.html:
--------------------------------------------------------------------------------
1 | {{> attributeListItem}}
2 |
3 |
5 |
6 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/attributes/attribute_list_item_number.html:
--------------------------------------------------------------------------------
1 | {{> attributeListItem}}
2 |
3 | {{#availability.value}}
4 |
7 | {{#availability.displayRequired}}
8 | {{#model.mandatory}}*{{/model.mandatory}}
9 | {{/availability.displayRequired}}
10 | {{/availability.value}}
11 | {{^availability.value}}
12 | {{model.value}}
13 | {{/availability.value}}
14 |
15 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/attributes/attribute_list_item_part_number.html:
--------------------------------------------------------------------------------
1 | {{> attributeListItem}}
2 |
3 | {{#availability.value}}
4 |
7 | {{#availability.displayRequired}}
8 | {{#model.mandatory}}*{{/model.mandatory}}
9 | {{/availability.displayRequired}}
10 | {{/availability.value}}
11 | {{^availability.value}}
12 | {{model.value}}
13 | {{/availability.value}}
14 |
15 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/attributes/attribute_list_item_text.html:
--------------------------------------------------------------------------------
1 | {{> attributeListItem}}
2 |
3 | {{#availability.value}}
4 |
6 | {{#availability.displayRequired}}
7 | {{#model.mandatory}}*{{/model.mandatory}}
8 | {{/availability.displayRequired}}
9 | {{/availability.value}}
10 | {{^availability.value}}{{model.value}}{{/availability.value}}
11 |
12 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/attributes/attribute_list_item_url.html:
--------------------------------------------------------------------------------
1 | {{> attributeListItem}}
2 |
3 | {{#availability.value}}
4 |
6 | {{#availability.displayRequired}}
7 | {{#model.mandatory}}*{{/model.mandatory}}
8 | {{/availability.displayRequired}}
9 | {{/availability.value}}
10 | {{^availability.value}}
11 |
{{model.value}}
12 | {{/availability.value}}
13 |
14 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/attributes/attributes.html:
--------------------------------------------------------------------------------
1 |
2 | {{^frozenMode}}
3 |
4 | {{i18n.APPEND}}
5 |
6 | {{/frozenMode}}
7 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/attributes/template_new_attributes.html:
--------------------------------------------------------------------------------
1 | {{#editMode}}
2 | {{^unfreezable}}
3 |
6 | {{/unfreezable}}
7 | {{/editMode}}
8 |
9 |
10 |
11 | {{#editMode}}
12 |
13 | {{i18n.APPEND}}
14 |
15 | {{/editMode}}
16 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/buttons/ACL_button.html:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/buttons/checkout_button_group.html:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
11 |
12 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/buttons/delete_baseline_button.html:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/buttons/delete_button.html:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/buttons/duplicate_button.html:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/buttons/import_button.html:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/buttons/new_configuration_button.html:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/buttons/new_effectivity_button.html:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/buttons/new_product_button.html:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/buttons/new_product_instance_button.html:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/buttons/new_version_button.html:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/buttons/obsolete_button.html:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/buttons/release_button.html:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/buttons/snap_button.html:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/buttons/snap_in_progress_button.html:
--------------------------------------------------------------------------------
1 |
2 |
5 |
9 |
10 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/buttons/snap_latest_button.html:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/buttons/snap_released_button.html:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/buttons/tags_button.html:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/buttons/udf_button.html:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/document/used_by_list.html:
--------------------------------------------------------------------------------
1 | {{i18n.DOCUMENTS}} :
2 |
3 | {{i18n.PARTS}} :
4 |
5 | {{i18n.PRODUCT_INSTANCES}} :
6 |
7 | {{i18n.PRODUCT_INSTANCE_DATA}} :
8 |
9 |
10 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/document/used_by_list_item.html:
--------------------------------------------------------------------------------
1 | {{model.getDisplayKey}}
2 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/file/file.html:
--------------------------------------------------------------------------------
1 | {{#editMode}}{{/editMode}}
2 | {{shortName}}
3 | {{#editMode}}
4 |
5 |
6 |
7 |
8 |
9 |
10 | {{/editMode}}
11 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/forbidden.html:
--------------------------------------------------------------------------------
1 |
15 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/linked/linked_change_item.html:
--------------------------------------------------------------------------------
1 | {{#editMode}}
2 |
3 | {{/editMode}}
4 | {{linkedItem.getName}}
5 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/linked/linked_change_items.html:
--------------------------------------------------------------------------------
1 | {{#editMode}}
2 |
3 |
5 | {{/editMode}}
6 |
7 | Low
8 | Medium
9 | High
10 | Emergency
11 |
12 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/linked/linked_document.html:
--------------------------------------------------------------------------------
1 | {{#editMode}}
2 |
3 | {{/editMode}}
4 | {{linkedDocument.getDisplayDocKey}}
5 | {{#commentEditable}}
6 | {{#editMode}}
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | {{/editMode}}
16 | {{^editMode}}
17 |
18 | {{/editMode}}
19 | {{/commentEditable}}
20 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/linked/linked_items.html:
--------------------------------------------------------------------------------
1 | {{#editMode}}
2 |
3 |
5 | {{/editMode}}
6 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/linked/linked_part.html:
--------------------------------------------------------------------------------
1 | {{#editMode}}
2 |
3 | {{/editMode}}
4 | {{linkedPart.getDisplayPartKey}}
5 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/lov/lov_item.html:
--------------------------------------------------------------------------------
1 | {{#model.isDeletable}}
2 |
5 | {{/model.isDeletable}}
6 |
7 | {{i18n.NAME}}:
8 | {{model.getLOVName}}
9 | {{^model.getLOVName}}
10 |
11 | {{/model.getLOVName}}
12 |
13 |
{{model.getNumberOfValue}} {{i18n.POSSIBLE_VALUE}}
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/lov/lov_modal.html:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
14 |
17 |
18 |
24 |
25 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/lov/lov_possible_value.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/not-found.html:
--------------------------------------------------------------------------------
1 |
2 |
404
3 |
{{i18n.ERROR_404_SORRY}}
4 |
{{i18n.ERROR_404}}
5 |
{{reason}}
6 |
{{i18n.HOME_PAGE}}
7 |
8 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/part/conversion_status.html:
--------------------------------------------------------------------------------
1 | {{#status}}
2 | {{#pending}}
3 | {{i18n.CONVERSION_PENDING}} ...
4 | {{/pending}}
5 | {{^pending}}
6 | {{#succeed}}
7 | {{i18n.CONVERSION_SUCCEEDED}}
8 | {{/succeed}}
9 | {{^succeed}}
10 | {{i18n.CONVERSION_FAILED}}
11 |
12 | {{i18n.RETRY}}
13 |
14 | {{/succeed}}
15 | {{/pending}}
16 | {{/status}}
17 | {{^status}}
18 | {{i18n.NO_CONVERSION}}
19 | {{/status}}
20 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/part/modification_notification_group_list.html:
--------------------------------------------------------------------------------
1 | {{i18n.MODIFICATION_NOTIFICATION_LIST_DESCRIPTION}}
2 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/part/modification_notification_list.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | {{#modificationNotification.getModifiedPartName}}{{modificationNotification.getModifiedPartName}}{{/modificationNotification.getModifiedPartName}}
5 | < {{modificationNotification.getModifiedPartNumber}} >
6 |
7 |
8 | {{#hasUnreadModificationNotifications}}
9 |
13 | {{/hasUnreadModificationNotifications}}
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/part/part_assembly.html:
--------------------------------------------------------------------------------
1 | {{#editMode}}
2 |
7 |
12 | {{/editMode}}
13 |
14 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/part/part_effectivities.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | {{i18n.EFFECTIVITY}} |
5 | {{i18n.PRODUCT}} |
6 | {{i18n.START}} |
7 | {{i18n.END}} |
8 | |
9 | |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/part/part_effectivity.html:
--------------------------------------------------------------------------------
1 |
2 | {{name}} {{type}} |
3 | {{product}} |
4 | {{start}} |
5 | {{end}} |
6 | |
7 | |
8 |
9 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/part/part_effectivity_date.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/part/part_effectivity_lot.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/part/part_effectivity_serial_number.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/part/used_by_list.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | {{i18n.PRODUCT}} < {{configurationItemId}} >
4 |
5 |
6 | {{i18n.PRODUCT_INSTANCES}} :
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/part/used_by_list_item.html:
--------------------------------------------------------------------------------
1 | {{model.getSerialNumber}}
2 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/part/used_by_list_item_part.html:
--------------------------------------------------------------------------------
1 | {{model.getName}} < {{model.getNumber}}-{{model.getVersion}} >
2 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/part/used_by_path_data_item.html:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/part/used_by_pd_instance_list.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | {{i18n.PRODUCT_INSTANCE}} < {{serialNumber}} >
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/part/used_by_view.html:
--------------------------------------------------------------------------------
1 | {{i18n.IS_COMPONENT_OF}}
2 |
3 |
4 | {{i18n.IS_SUBSTITUTE_IN}}
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/path/path.html:
--------------------------------------------------------------------------------
1 |
2 | {{#editMode}}
3 |
4 | {{/editMode}}
5 | {{#partLinks}}
6 | {{name}} < {{number}} > {{#referenceDescription}}({{.}}){{/referenceDescription}}
7 | {{/partLinks}}
8 |
9 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/prompt.html:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
{{question}}
7 |
8 | <{{#inputSpecified}}{{inputSpecified}}{{/inputSpecified}}{{^inputSpecified}}input{{/inputSpecified}} type="{{type}}" class="input-xlarge" id="prompt_input" value="{{defaultValue}}" />
9 |
10 |
14 |
15 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/security/acl_entries.html:
--------------------------------------------------------------------------------
1 |
2 |
{{i18n.USE_ACL}}
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
{{i18n.USERS}}
11 |
12 |
13 |
14 |
{{i18n.GROUPS}}
15 |
16 |
17 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/share/shared_entity.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
8 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/tags/tag.html:
--------------------------------------------------------------------------------
1 | {{#isRemovable}}{{/isRemovable}}{{tag.id}}
--------------------------------------------------------------------------------
/app/js/common-objects/templates/task/status_filter.html:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/time_zone.html:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 | {{#dates}}
8 | - {{name}} : {{date}}
9 | {{/dates}}
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/udf/calculation.html:
--------------------------------------------------------------------------------
1 |
5 |
10 |
11 |
12 |
13 | {{i18n.RESULT}} :
14 |
15 |
16 |
17 | {{i18n.NODE_ASSEMBLIES_VISITED}} :
18 |
19 |
20 |
21 | {{i18n.NODE_INSTANCES_VISITED}} :
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/viewers/default.html:
--------------------------------------------------------------------------------
1 | {{fileName}}
2 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/viewers/image.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/viewers/office.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/viewers/video.html:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/viewers/wrapper.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | {{ #downloadAsPDF }}
{{ /downloadAsPDF }}
5 |
{{ fileName }}
6 |
7 |
11 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/workflow/lifecycle_activity.html:
--------------------------------------------------------------------------------
1 | {{activity.lifeCycleState}} ({{activityType}})
2 | {{#activity.relaunchActivityState}} {{.}}
{{/activity.relaunchActivityState}}
3 |
4 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/workflow/lifecycle_task_signing.html:
--------------------------------------------------------------------------------
1 |
7 |
8 |
![]()
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/workflow/role_item.html:
--------------------------------------------------------------------------------
1 | {{model.getName}}
2 | {{^required}}{{i18n.ASSIGNED_ROLE_PRE_FILL}}
{{/required}}
3 |
4 |
5 | {{#required}}{{i18n.ASSIGNED_ROLE_REQUIRED}}
{{/required}}
6 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/workflow/workflow_mapping.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/js/common-objects/templates/workflow/workflow_select.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/app/js/common-objects/views/alert.js:
--------------------------------------------------------------------------------
1 | /*global define*/
2 | define([
3 | 'backbone',
4 | 'mustache',
5 | 'text!common-objects/templates/alert.html'
6 | ], function (Backbone, Mustache, template) {
7 | 'use strict';
8 | var AlertView = Backbone.View.extend({
9 | event:{
10 | 'click .close': 'onClose'
11 | },
12 |
13 | render: function(){
14 | this.$el.html(Mustache.render(template,{
15 | model : {
16 | type : this.options.type,
17 | title : this.options.title,
18 | message: this.options.message
19 | }
20 | }));
21 | return this;
22 | },
23 |
24 | onClose : function(){
25 | this.remove();
26 | }
27 |
28 | });
29 | return AlertView;
30 | });
31 |
--------------------------------------------------------------------------------
/app/js/common-objects/views/attributes/attribute_list_item_number.js:
--------------------------------------------------------------------------------
1 | /*global define*/
2 | define([
3 | 'common-objects/views/attributes/attribute_list_item',
4 | 'text!common-objects/templates/attributes/attribute_list_item.html',
5 | 'text!common-objects/templates/attributes/attribute_list_item_number.html'
6 | ], function (AttributeListItemView, attributeListItem, template) {
7 | 'use strict';
8 | var AttributeListItemNumberView = AttributeListItemView.extend({
9 |
10 | template: template,
11 |
12 | partials: {
13 | attributeListItem: attributeListItem
14 | },
15 | initialize: function () {
16 | AttributeListItemView.prototype.initialize.apply(this, arguments);
17 | }
18 | });
19 | return AttributeListItemNumberView;
20 | });
21 |
--------------------------------------------------------------------------------
/app/js/common-objects/views/attributes/attribute_list_item_text.js:
--------------------------------------------------------------------------------
1 | /*global define*/
2 | define([
3 | 'common-objects/views/attributes/attribute_list_item',
4 | 'text!common-objects/templates/attributes/attribute_list_item.html',
5 | 'text!common-objects/templates/attributes/attribute_list_item_text.html'
6 | ], function (AttributeListItemView, attributeListItem, template) {
7 | 'use strict';
8 | var AttributeListItemTextView = AttributeListItemView.extend({
9 |
10 | template: template,
11 | partials: {
12 | attributeListItem: attributeListItem
13 | },
14 | initialize: function () {
15 | AttributeListItemView.prototype.initialize.apply(this, arguments);
16 | }
17 | });
18 | return AttributeListItemTextView;
19 | });
20 |
--------------------------------------------------------------------------------
/app/js/common-objects/views/attributes/attribute_list_item_url.js:
--------------------------------------------------------------------------------
1 | /*global define*/
2 | define([
3 | 'common-objects/views/attributes/attribute_list_item',
4 | 'text!common-objects/templates/attributes/attribute_list_item.html',
5 | 'text!common-objects/templates/attributes/attribute_list_item_url.html'
6 | ], function (AttributeListItemView, attributeListItem, template) {
7 | 'use strict';
8 | var AttributeListItemUrlView = AttributeListItemView.extend({
9 |
10 | template: template,
11 | partials: {
12 | attributeListItem: attributeListItem
13 | },
14 | initialize: function () {
15 | AttributeListItemView.prototype.initialize.apply(this, arguments);
16 | }
17 | });
18 | return AttributeListItemUrlView;
19 | });
20 |
--------------------------------------------------------------------------------
/app/js/common-objects/views/components/collapsible_list.js:
--------------------------------------------------------------------------------
1 | /*global _,define*/
2 | define([
3 | 'common-objects/views/components/list'
4 | ], function (ListView) {
5 | 'use strict';
6 | var CollapsibleListView = ListView.extend({
7 | show: function () {
8 | this.$el.show();
9 | this.$el.addClass('in');
10 | var that = this;
11 | this.collection.fetch({
12 | reset: true,
13 | success: function () {
14 | if (_.isFunction(that.shown)) {
15 | that.shown();
16 | }
17 | }
18 | });
19 | },
20 | hide: function () {
21 | this.$el.hide();
22 | this.$el.removeClass('in');
23 | this.clear();
24 | }
25 | });
26 | return CollapsibleListView;
27 | });
28 |
--------------------------------------------------------------------------------
/app/js/common-objects/views/components/list.js:
--------------------------------------------------------------------------------
1 | /*global define*/
2 | define([
3 | 'common-objects/views/base'
4 | ], function (BaseView) {
5 | 'use strict';
6 | var ListView = BaseView.extend({
7 | collectionReset: function () {
8 | this.clear();
9 | this.render();
10 | this.collection.each(this.createItemView);
11 | this.trigger('_ready');
12 | },
13 | collectionAdd: function () {
14 | this.collectionReset();
15 | },
16 | collectionRemove: function () {
17 | this.collectionReset();
18 | },
19 | createItemView: function (model) {
20 | var view = this.addSubView(
21 | this.itemViewFactory(model)
22 | );
23 | this.$el.append(view.el);
24 | view.render();
25 | }
26 | });
27 | return ListView;
28 | });
29 |
--------------------------------------------------------------------------------
/app/js/common-objects/views/components/list_item.js:
--------------------------------------------------------------------------------
1 | /*global define*/
2 | define([
3 | 'common-objects/views/base'
4 | ], function (BaseView) {
5 | 'use strict';
6 | var ListItemView = BaseView.extend({
7 | className: 'list-item',
8 | modelDestroy: function () {
9 | this.destroy();
10 | },
11 | modelChange: function () {
12 | this.render();
13 | },
14 | modelSync: function () {
15 | this.render();
16 | }
17 | });
18 | return ListItemView;
19 | });
20 |
--------------------------------------------------------------------------------
/app/js/common-objects/views/not-found.js:
--------------------------------------------------------------------------------
1 | /*global define,App*/
2 | define([
3 | 'backbone',
4 | 'mustache',
5 | 'text!common-objects/templates/not-found.html'
6 | ], function (Backbone, Mustache, template) {
7 | 'use strict';
8 | var NotFoundView = Backbone.View.extend({
9 |
10 | render: function (error, url) {
11 |
12 | var tmpContainer = document.createElement('div');
13 | var text = document.createTextNode(error.responseText);
14 | tmpContainer.appendChild(text);
15 | text = tmpContainer.innerHTML;
16 |
17 | this.$el.html(Mustache.render(template, {
18 | contextPath:App.config.contextPath,
19 | i18n: App.config.i18n,
20 | url:url,
21 | reason:text
22 | }));
23 |
24 | return this;
25 | }
26 | });
27 |
28 | return NotFoundView;
29 | });
30 |
--------------------------------------------------------------------------------
/app/js/common-objects/views/part/part_substitute_link_view.js:
--------------------------------------------------------------------------------
1 | /*global define*/
2 | define([
3 | 'backbone',
4 | 'common-objects/views/part/part_link_view'
5 | ], function (Backbone, PartLinkView) {
6 |
7 | 'use strict';
8 |
9 | var PartSubstituteLinkView = PartLinkView.extend({
10 | className:'component part-substitute-link',
11 | handleSubstitutes:false,
12 | getComponent:function(){
13 | return this.model.get('substitute');
14 | }
15 | });
16 |
17 | return PartSubstituteLinkView;
18 | });
19 |
20 |
--------------------------------------------------------------------------------
/app/js/common-objects/views/part/used_by_list_item_view.js:
--------------------------------------------------------------------------------
1 | /*global _,define,App*/
2 | define([
3 | 'backbone',
4 | 'mustache',
5 | 'text!common-objects/templates/part/used_by_list_item.html'
6 | ], function (Backbone, Mustache, template) {
7 | 'use strict';
8 | var UsedByListItemView = Backbone.View.extend({
9 |
10 | tagName: 'li',
11 | className: 'used-by-item well',
12 |
13 | initialize: function () {
14 | _.bindAll(this);
15 | },
16 |
17 | render: function () {
18 | var data = {
19 | i18n: App.config.i18n,
20 | model: this.model
21 | };
22 |
23 | this.$el.html(Mustache.render(template, data));
24 | return this;
25 | }
26 |
27 | });
28 |
29 | return UsedByListItemView;
30 | });
31 |
32 |
--------------------------------------------------------------------------------
/app/js/common-objects/views/used_by/used_by_list_item_view.js:
--------------------------------------------------------------------------------
1 | /*global _,define,App*/
2 | define([
3 | 'backbone',
4 | 'mustache',
5 | 'text!common-objects/templates/document/used_by_list_item.html'
6 | ], function (Backbone, Mustache, template) {
7 | 'use strict';
8 | var UsedByListItemView = Backbone.View.extend({
9 |
10 | tagName: 'li',
11 | className: 'used-by-item well',
12 |
13 | initialize: function () {
14 | _.bindAll(this);
15 | },
16 |
17 | render: function () {
18 | var data = {
19 | i18n: App.config.i18n,
20 | model: this.model
21 | };
22 |
23 | this.$el.html(Mustache.render(template, data));
24 | return this;
25 | }
26 |
27 | });
28 |
29 | return UsedByListItemView;
30 | });
31 |
32 |
--------------------------------------------------------------------------------
/app/js/common-objects/websocket/callState.js:
--------------------------------------------------------------------------------
1 | /*global define*/
2 | define(function () {
3 | 'use strict';
4 | return {
5 | NO_CALL: 'NO_CALL',
6 | INCOMING: 'INCOMING',
7 | OUTGOING: 'OUTGOING',
8 | NEGOTIATING: 'NEGOTIATING',
9 | RUNNING: 'RUNNING',
10 | ENDED: 'ENDED'
11 | };
12 | });
13 |
--------------------------------------------------------------------------------
/app/js/common-objects/websocket/channelListener.js:
--------------------------------------------------------------------------------
1 | /*global define*/
2 | 'use strict';
3 | define(function () {
4 |
5 | function ChannelListener(handlers) {
6 | this.handlers = handlers;
7 | this.isListening = true;
8 | }
9 |
10 | ChannelListener.prototype = {
11 | startListen: function () {
12 | this.isListening = true;
13 | },
14 |
15 | stopListen: function () {
16 | this.isListening = false;
17 | }
18 | };
19 |
20 | return ChannelListener;
21 |
22 | });
--------------------------------------------------------------------------------
/app/js/common-objects/websocket/channelStatus.js:
--------------------------------------------------------------------------------
1 | /*global define*/
2 | define(function () {
3 | 'use strict';
4 | return {
5 | OPENED: 'opened',
6 | CLOSED: 'closed'
7 | };
8 | });
9 |
--------------------------------------------------------------------------------
/app/js/common-objects/websocket/rejectCallReason.js:
--------------------------------------------------------------------------------
1 | /*global define*/
2 | define(function () {
3 | 'use strict';
4 | return {
5 | REJECTED: 'REJECTED',
6 | BUSY: 'BUSY',
7 | TIMEOUT: 'TIMEOUT',
8 | OFFLINE: 'OFFLINE'
9 | };
10 | });
11 |
--------------------------------------------------------------------------------
/app/js/lib/empty.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docdoku/docdoku-plm-front/95bdbe3d45f2f271ea7c5c057e38229b42ec5c03/app/js/lib/empty.pdf
--------------------------------------------------------------------------------
/app/js/localization/nls/account-management.js:
--------------------------------------------------------------------------------
1 | /*global define*/
2 | define({
3 | root: {
4 | AUTH_REQUIRED : 'Authentication required',
5 | AUTH_REQUIRED_PASSWORD_TEXT : 'Please confirm your current password',
6 | AUTH_REQUIRED_PROVIDER_TEXT : 'Please re-authenticate',
7 | ACCOUNT_NAME: 'First name, last name',
8 | ACCOUNT_EDITION: 'Edit your account',
9 | ACCOUNT_UPDATED: 'Account updated',
10 | CHANGE_PASSWORD: 'Change password',
11 | LANG: 'Language',
12 | TIMEZONE: 'Timezone',
13 | NEED_PAGE_RELOAD_CHANGED_LANG: 'The page needs to be refreshed for the language settings to apply'
14 | },
15 | 'fr': true,
16 | 'es': true,
17 | 'ru': true
18 | });
19 |
--------------------------------------------------------------------------------
/app/js/localization/nls/document-management.js:
--------------------------------------------------------------------------------
1 | /*global define*/
2 | define({
3 | root: {
4 | CONFIRM_DELETE_DOCUMENT_COLLECTIONS:'Do you want to delete the selected document collections?',
5 | DOCUMENT_NOT_RELEASED:'This document is not released and cannot be added to the released collection',
6 | DOCUMENT_ALREADY_IN_LIST:'This document is already present in the collection',
7 | DOCUMENT_BASELINE_IS_EMPTY:'You cannot create an empty document collection'
8 | },
9 | 'fr': true,
10 | 'es': true,
11 | 'ru': true
12 | });
13 |
--------------------------------------------------------------------------------
/app/js/localization/nls/download.js:
--------------------------------------------------------------------------------
1 | /*global define*/
2 | define({
3 | root: {
4 | DOWNLOAD:'Download',
5 | DPLM_CLIENT:'DPLM Client',
6 | DPLM_CLIENT_INSTALL_MESSAGE:'DPLM Client is a software that works under Windows, MacOS and Linux.',
7 | CHOOSE_PLATFORM:'Choose your platform',
8 | DPLM_CLIENT_ABOUT_QUESTION:'What is DPLM Client?',
9 | DPLM_CLIENT_ABOUT_TEXT:'DPLM Client is a multi-platform client application which allows to exchange efficiently (upload / download) files between your local workstation and the DocDokuPLM server. File format agnostic, it provides seamless integration with all the authoring tools on the market.'
10 | },
11 | 'fr': true,
12 | 'es': true,
13 | 'ru': true
14 | });
15 |
--------------------------------------------------------------------------------
/app/js/localization/nls/es/common.js:
--------------------------------------------------------------------------------
1 | /*global define*/
2 | define({
3 | });
4 |
--------------------------------------------------------------------------------
/app/js/localization/nls/fr/account-management.js:
--------------------------------------------------------------------------------
1 | /*global define*/
2 | define({
3 | AUTH_REQUIRED : 'Authentification requise',
4 | AUTH_REQUIRED_PASSWORD_TEXT : 'Veuillez confirmer votre mot de passe actuel',
5 | AUTH_REQUIRED_PROVIDER_TEXT : 'Veuillez vous ré-authentifier',
6 | ACCOUNT_NAME : 'Prénom, nom',
7 | ACCOUNT_EDITION:'Editez votre compte',
8 | ACCOUNT_UPDATED:'Compte enregistré',
9 | CHANGE_PASSWORD:'Changer le mot de passe',
10 | LANG:'Langue',
11 | NEED_PAGE_RELOAD_CHANGED_LANG:'Un rechargement de la page est nécessaire pour prendre en compte le changement de langue',
12 | TIMEZONE:'Fuseau horaire'
13 | });
14 |
--------------------------------------------------------------------------------
/app/js/localization/nls/fr/document-management.js:
--------------------------------------------------------------------------------
1 | /*global define*/
2 | define({
3 | CONFIRM_DELETE_DOCUMENT_COLLECTIONS:'Voulez-vous supprimer les collections de documents sélectionnées ?',
4 | DOCUMENT_NOT_RELEASED:'Ce document n\'est pas finalisé et ne peut pas être ajouté à la collection finalisée',
5 | DOCUMENT_ALREADY_IN_LIST:'Ce document est déjà présent dans la collection',
6 | DOCUMENT_BASELINE_IS_EMPTY:'Vous ne pouvez pas créer de collection vide'
7 | });
8 |
--------------------------------------------------------------------------------
/app/js/localization/nls/fr/download.js:
--------------------------------------------------------------------------------
1 | /*global define*/
2 | define({
3 | DOWNLOAD:'Téléchargement',
4 | DPLM_CLIENT:'DPLM Client',
5 | DPLM_CLIENT_INSTALL_MESSAGE:'DPLM Client est un logiciel fonctionnant sous Windows, MacOS et Linux.',
6 | CHOOSE_PLATFORM:'Choisissez votre plateforme',
7 | DPLM_CLIENT_ABOUT_QUESTION:'Qu\'est ce que DPLM Client ?',
8 | DPLM_CLIENT_ABOUT_TEXT:'DPLM Client est une application multiplateforme permettant d\'échanger efficacement des fichiers (upload / download) entre votre poste de travail et le serveur DocDokuPLM. Agnostique aux formats de fichiers, il permet une intégration transparente avec tous les outils de création du marché.'
9 | });
10 |
--------------------------------------------------------------------------------
/app/js/localization/nls/fr/product-structure.js:
--------------------------------------------------------------------------------
1 | /*global define*/
2 | define({
3 | CASCADE: 'Cascade',
4 | CASCADE_RESULT: 'Résultat',
5 | DONE: 'effectué(s)',
6 | SELECTED: 'Sélection',
7 | PRODUCT_VIEW: 'Vue produit',
8 | STRUCTURE: 'Structure produit'
9 | });
10 |
--------------------------------------------------------------------------------
/app/js/localization/nls/product-structure.js:
--------------------------------------------------------------------------------
1 | /*global define*/
2 | define({
3 | root: {
4 | CASCADE: 'Cascade',
5 | CASCADE_RESULT: 'Result',
6 | DONE: 'Done',
7 | SELECTED: 'Selected',
8 | PRODUCT_VIEW: 'Product view',
9 | STRUCTURE: 'Product structure'
10 | },
11 | fr: true,
12 | es: true,
13 | ru: true
14 | });
15 |
--------------------------------------------------------------------------------
/app/js/localization/nls/ru/account-management.js:
--------------------------------------------------------------------------------
1 | /*global define*/
2 | define({
3 | ACCOUNT_NAME: 'Фамилия, имя',
4 | ACCOUNT_EDITION: 'Редактировать аккаунт',
5 | ACCOUNT_UPDATED: 'Обновить аккаунт',
6 | CHANGE_PASSWORD: 'Изменить пароль',
7 | LANG: 'Язык',
8 | TIMEZONE: 'Часовой пояс',
9 | NEED_PAGE_RELOAD_CHANGED_LANG: 'Эту страницу нужно перезагрузить чтобы применить настройки языка'
10 | });
11 |
--------------------------------------------------------------------------------
/app/js/localization/nls/ru/change-management.js:
--------------------------------------------------------------------------------
1 | /*global define*/
2 | define({
3 | ADVICE_CREATE_WORKFLOW: 'Здесь вы можете создавать потоки работ, которые определяют жизненный цикл ' +
4 | 'ваших документов и ваших изелий',
5 | CONFIRM_DELETE_ISSUE: 'Удалить выбранные ошибки?',
6 | CONFIRM_DELETE_ORDER: 'Удалить выбранные заказы?',
7 | CONFIRM_DELETE_REQUEST: 'Удалить выбранные запросы?',
8 | CONFIRM_DELETE_WORKFLOW: 'Удалить выбранные потоки работ?',
9 | ERROR_WORKFLOW_REFERENCE_MISSING: 'Вы пытаетесь создать поток работ без ссылки',
10 | NEW_ROLES_NAME: 'Введите имя для новой роли',
11 | WARNING_ANY_ROLE: 'Нехобходимо создать хотя бы одну роль перед созданием потока работ',
12 | WARNING_FINAL_STATE_MISSING: 'Необходимо указать название фильнального состояния для вашего потока работ',
13 | WARNING_ACTIVITIES_MISSING: 'Необходимо создать хотя бы одно действие и несколько задач'
14 | });
15 |
--------------------------------------------------------------------------------
/app/js/localization/nls/ru/document-management.js:
--------------------------------------------------------------------------------
1 | /*global define*/
2 | define({
3 | CONFIRM_DELETE_DOCUMENT_COLLECTIONS: 'Вы хотите удалить выбранные колекции документов?',
4 | DOCUMENT_NOT_RELEASED: 'Этот документ не опубликован и не может быть добавить в колекции опубликованных',
5 | DOCUMENT_ALREADY_IN_LIST: 'Этот документ уже есть в коллекции',
6 | DOCUMENT_BASELINE_IS_EMPTY: 'Вы не можете создать пустую коллекцию документов'
7 | });
8 |
--------------------------------------------------------------------------------
/app/js/localization/nls/ru/download.js:
--------------------------------------------------------------------------------
1 | /*global define*/
2 | define({
3 | DOWNLOAD: 'Скачать',
4 | DPLM_CLIENT: 'DPLM Клиент',
5 | DPLM_CLIENT_INSTALL_MESSAGE: 'Клиент DPLM требует наличия на вашем компьютере Java 8 или выше. Чтобы установить Java или проверить его установку, выполните следующие действия с сайта: http://www.java.com',
6 | CHOOSE_PLATFORM: 'Выберите платформу',
7 | DPLM_CLIENT_ABOUT_QUESTION: 'Что такое DPLM Клиент?',
8 | DPLM_CLIENT_ABOUT_TEXT: 'Клиент DPLM - это кроссплатформенное клиентское приложение, которое позволяет обмениваться (скачивать/загружать) 2D и 3D-файлы между локальным компьютером и сервером DocDokuPLM. Независимо от расширения файла, он обеспечивает бесшовную интеграцию со всеми инструментами разработки на рынке.'
9 | });
10 |
--------------------------------------------------------------------------------
/app/js/localization/nls/ru/product-structure.js:
--------------------------------------------------------------------------------
1 | /*global define*/
2 | define({
3 | CASCADE: 'Каскадно',
4 | CASCADE_RESULT: 'Результат',
5 | DONE: 'Завершено',
6 | SELECTED: 'Выделено',
7 | PRODUCT_VIEW: 'Просмотр изделия',
8 | STRUCTURE: 'Стуктура изделия'
9 | });
10 |
--------------------------------------------------------------------------------
/app/js/modules/chat-module/models/chat_message_model.js:
--------------------------------------------------------------------------------
1 | /*global define*/
2 | define(['backbone'], function (Backbone) {
3 | 'use strict';
4 | var ChatMessage = Backbone.Model.extend({
5 |
6 | initialize: function () {
7 | }
8 |
9 | });
10 |
11 | return ChatMessage;
12 |
13 | });
14 |
--------------------------------------------------------------------------------
/app/js/modules/chat-module/views/chat_message_view.js:
--------------------------------------------------------------------------------
1 | /*global define,_*/
2 | define(['backbone'], function (Backbone) {
3 | 'use strict';
4 | var ChatMessageView = Backbone.View.extend({
5 |
6 | tagName: 'li',
7 |
8 | template: _.template(
9 | '<%= chatMessage.sender %> : <%= chatMessage.message.replaceUrl() %>'
10 | ),
11 |
12 | render: function () {
13 | this.$el.html(this.template({chatMessage: this.model.attributes}));
14 | return this;
15 | }
16 |
17 | });
18 |
19 | return ChatMessageView;
20 |
21 | });
22 |
--------------------------------------------------------------------------------
/app/js/modules/coworkers-access-module/app.js:
--------------------------------------------------------------------------------
1 | /*global define,App*/
2 | define([
3 | 'backbone',
4 | 'modules/coworkers-access-module/views/coworkers_access_module_view',
5 | 'common-objects/websocket/channelMessagesType'
6 | ],
7 | function (Backbone, CoWorkersAccessModuleView, ChannelMessagesType) {
8 | 'use strict';
9 | function onUserStatusRequest(remoteUser) {
10 | App.mainChannel.sendJSON({
11 | type: ChannelMessagesType.USER_STATUS,
12 | remoteUser: remoteUser
13 | });
14 | }
15 |
16 | Backbone.Events.on('UserStatusRequest', onUserStatusRequest);
17 |
18 | return CoWorkersAccessModuleView;
19 | });
--------------------------------------------------------------------------------
/app/js/modules/coworkers-access-module/templates/coworker_item_template.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | {{user}}
4 |
5 |
6 |
7 | {{#displayCobrowsingButton}}{{/displayCobrowsingButton}}
8 |
9 |
--------------------------------------------------------------------------------
/app/js/modules/webrtc-module/templates/webrtc_module_template.html:
--------------------------------------------------------------------------------
1 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/app/js/utils/charts-helpers.js:
--------------------------------------------------------------------------------
1 | /*global define*/
2 | define(function(){
3 |
4 | 'use strict';
5 | return {
6 | diskUsageTooltip:function(key,value){
7 | return ''+key+'
' + ''+value+'
';
8 | }
9 | };
10 |
11 | });
12 |
--------------------------------------------------------------------------------
/app/js/utils/effects.js:
--------------------------------------------------------------------------------
1 | /*global _,jQuery*/
2 | (function ($) {
3 | 'use strict';
4 | $.fn.highlightEffect = function () {
5 | $(this).effect('highlight', {color: '#999999'}, 1000);
6 | };
7 |
8 | $.fn.customResizable = function (args) {
9 | var options = {
10 | handles: 'e',
11 | autoHide: true,
12 | stop: function (e, ui) {
13 | var parent = ui.element.parent();
14 | ui.element.css({
15 | width: ui.element.width() / parent.width() * 100 + '%',
16 | height: '100%'
17 | });
18 | }
19 | };
20 |
21 | _.extend(options, args);
22 | $(this).resizable(options);
23 | };
24 | })(jQuery);
25 |
--------------------------------------------------------------------------------
/app/js/utils/jquery.maskedinput-config.js:
--------------------------------------------------------------------------------
1 | /*global jQuery*/
2 | (function ($) {
3 | 'use strict';
4 | $.mask = {
5 | // Override to handle our mask grammar
6 | definitions: {
7 | '#': '[0-9]',
8 | '%': '[A-Za-z]',
9 | '*': '[A-Za-z0-9]'
10 | },
11 | dataName: 'rawMaskFn',
12 | placeholder: '_'
13 | };
14 | })(jQuery);
15 |
--------------------------------------------------------------------------------
/app/js/utils/popover.utils.js:
--------------------------------------------------------------------------------
1 | /*global jQuery*/
2 | (function ($) {
3 |
4 | 'use strict';
5 |
6 | function removePopovers(){
7 | $('.popover').remove();
8 | }
9 |
10 | function removePopoversIfClickOutside(e){
11 | var $elem = $(e.target);
12 | if (!$elem.parents('.popover').length && !$elem.hasClass('popover') ) {
13 | removePopovers();
14 | }
15 | }
16 |
17 | addEventListener('mousewheel',removePopovers);
18 | addEventListener('click',removePopoversIfClickOutside);
19 |
20 | })(jQuery);
21 |
--------------------------------------------------------------------------------
/app/js/utils/url-utils.js:
--------------------------------------------------------------------------------
1 | define(function(){
2 | 'use strict';
3 | return {
4 | getParameterByName:function(name) {
5 | var url = window.location.href;
6 | name = name.replace(/[\[\]]/g, '\\$&');
7 | var regex = new RegExp('[?&]' + name + '(=([^]*)|&|#|$)'),
8 | results = regex.exec(url);
9 | if (!results) {
10 | return null;
11 | }
12 | if (!results[2]){
13 | return '';
14 | }
15 | return decodeURIComponent(results[2].replace(/\+/g, ' '));
16 | }
17 | };
18 | });
19 |
--------------------------------------------------------------------------------
/app/js/utils/utils.prototype.js:
--------------------------------------------------------------------------------
1 | String.prototype.replaceUrl = function () {
2 | 'use strict';
3 | var exp = /(\b(https?|ftp|file):\/\/[\-A-Z0-9+&@#\/%?=~_|!:,.;]*[\-A-Z0-9+&@#\/%=~_|])/ig;
4 | return this.replace(exp, '$1');
5 | };
6 |
7 | String.prototype.nl2br = function () {
8 | 'use strict';
9 | return this.replace(/\n/g, '
');
10 | };
11 |
12 | String.prototype.startsWith = String.prototype.startsWith || function(search, pos) {
13 | 'use strict';
14 | return this.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;
15 | };
16 |
17 |
--------------------------------------------------------------------------------
/app/less/account-management/content.less:
--------------------------------------------------------------------------------
1 | #account-management-content {
2 | width: 85%;
3 | height: 100%;
4 | overflow: auto;
5 | position: absolute;
6 | right: 0;
7 | top: 0;
8 | z-index: 0;
9 | }
10 |
--------------------------------------------------------------------------------
/app/less/account-management/menu.less:
--------------------------------------------------------------------------------
1 | #account-management-menu {
2 | // Custom menu code
3 | }
4 |
--------------------------------------------------------------------------------
/app/less/account-management/style.less:
--------------------------------------------------------------------------------
1 | @import "../common/style";
2 | @import "../modules/style";
3 | @import "menu";
4 | @import "content";
5 |
--------------------------------------------------------------------------------
/app/less/change-management/content.less:
--------------------------------------------------------------------------------
1 | #change-management-content {
2 | width: 85%;
3 | height: 100%;
4 | overflow: auto;
5 | position: absolute;
6 | right: 0;
7 | top: 0;
8 | z-index: 0;
9 | input {
10 | height: 22px;
11 | margin: 8px;
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/app/less/change-management/link.less:
--------------------------------------------------------------------------------
1 | .affected-links {
2 | min-height: 130px;
3 | }
4 |
--------------------------------------------------------------------------------
/app/less/change-management/menu.less:
--------------------------------------------------------------------------------
1 | #change-management-menu {
2 | // Custom menu code
3 | }
4 |
--------------------------------------------------------------------------------
/app/less/common/action_buttons.less:
--------------------------------------------------------------------------------
1 | .action-checkin-checkout {
2 | text-align: center;
3 | margin: 15px 0;
4 |
5 | .action-checkin, .action-checkout, .action-undocheckout {
6 | cursor: pointer;
7 |
8 | }
9 | .fa {
10 | padding-right: 10px;
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/app/less/common/conversion.less:
--------------------------------------------------------------------------------
1 | .conversion-status {
2 |
3 | .conversion-status-actions {
4 | float: right;
5 | margin-right: 10px;
6 | }
7 | .fa {
8 | margin-right: 4px;
9 | &.success {
10 | color: @input-state-success;
11 | }
12 |
13 | &.fail {
14 | color: @input-state-danger;
15 | }
16 | }
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/app/less/common/dropdowns.less:
--------------------------------------------------------------------------------
1 | .dropdown-menu {
2 |
3 | min-width: 140px;
4 |
5 | li > a {
6 | line-height: 18px;
7 | height: 18px;
8 | padding: 3px 16px;
9 | &:hover {
10 | color: @text-invert-color;
11 | background: @plm-secondary-color;
12 | }
13 | }
14 |
15 | .divider {
16 | margin: 5px 1px;
17 | }
18 |
19 | &.large-entries {
20 | li > a {
21 | line-height: 30px;
22 | height: 30px;
23 | }
24 | }
25 |
26 | }
27 |
28 | .dropdown-menu > .disabled {
29 | cursor: not-allowed;
30 | }
31 |
32 | .dropdown-menu > .disabled > a {
33 | pointer-events: none;
34 | }
35 |
--------------------------------------------------------------------------------
/app/less/common/error.less:
--------------------------------------------------------------------------------
1 | .error-page{
2 | text-align:center;
3 | }
4 |
--------------------------------------------------------------------------------
/app/less/common/footer.less:
--------------------------------------------------------------------------------
1 | #footer {
2 | border: none;
3 | text-align: center;
4 | clear: both;
5 | margin-top: 20px;
6 | margin-bottom: 20px;
7 |
8 | p {
9 | font-size: 0.8em;
10 | }
11 |
12 | a {
13 | color: @plm-primary-color;
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/app/less/common/form.less:
--------------------------------------------------------------------------------
1 | .form-horizontal {
2 | .control-label {
3 | padding-top: 0;
4 | }
5 | }
6 | textarea:focus, input[type="text"]:focus, input[type="password"]:focus, input[type="datetime"]:focus, input[type="datetime-local"]:focus, input[type="date"]:focus, input[type="month"]:focus, input[type="time"]:focus, input[type="week"]:focus, input[type="number"]:focus, input[type="email"]:focus, input[type="url"]:focus, input[type="search"]:focus, input[type="tel"]:focus, input[type="color"]:focus, .uneditable-input:focus {
7 | box-shadow: none;
8 | }
9 | form.inline{
10 | display: inline;
11 | }
12 |
13 | form.inline.hide{
14 | display: none;
15 | }
16 |
--------------------------------------------------------------------------------
/app/less/common/icons.less:
--------------------------------------------------------------------------------
1 | .plm-icon-nav {
2 | background: no-repeat center;
3 | display: inline-block;
4 | height: 22px;
5 | width: 22px;
6 | margin: 2px 6px 0 0;
7 | }
8 |
9 | .plm-icon-menu {
10 | background: no-repeat center;
11 | display: inline-block;
12 | height: 22px;
13 | width: 22px;
14 | margin: 0 8px 0 0;
15 | }
16 |
17 | .plm-icon-action {
18 | background: no-repeat center;
19 | display: inline-block;
20 | height: 22px;
21 | margin: 0 8px;
22 | width: 22px;
23 | }
24 |
25 | // Nav
26 | .plm-icon-nav-folder-status-closed {
27 | .plm-icon-nav;
28 | width: 12px;
29 | background-image: url("../images/icon-nav-bullet-right.png");
30 | opacity: 0.6;
31 | }
32 |
33 | .plm-icon-nav-folder-status-opened {
34 | .plm-icon-nav;
35 | width: 12px;
36 | background-image: url("../images/icon-nav-bullet-down.png");
37 | opacity: 0.6;
38 | }
39 |
--------------------------------------------------------------------------------
/app/less/common/import.less:
--------------------------------------------------------------------------------
1 | .import-status {
2 | p {
3 | margin: 0;
4 | }
5 | margin: 18px 0 0 4px;
6 |
7 | .import-status-actions {
8 | float: right;
9 | margin-right: 10px;
10 | }
11 | .fa {
12 | margin-right: 4px;
13 | &.success {
14 | color: @input-state-success;
15 | }
16 |
17 | &.fail {
18 | color: @input-state-danger;
19 | }
20 | }
21 | p.error {
22 | color: @input-state-danger;
23 | }
24 | p.warning {
25 | color: @input-state-warning;
26 | }
27 | padding-top: 6px;
28 |
29 | }
30 |
--------------------------------------------------------------------------------
/app/less/common/iteration.less:
--------------------------------------------------------------------------------
1 | #switch-iteration {
2 | float: left;
3 | margin-bottom: 0px;
4 | }
5 |
--------------------------------------------------------------------------------
/app/less/common/mixins.less:
--------------------------------------------------------------------------------
1 | .display(@value) when (@value = box) {
2 | display: -moz-box;
3 | display: -webkit-box;
4 | display: box;
5 | }
6 |
7 | .display(@value) when not (@value = box) {
8 | display: @value;
9 | }
10 |
11 | .box-orient(@value) {
12 | -moz-box-orient: @value;
13 | -webkit-box-orient: @value;
14 | box-orient: @value;
15 | }
16 |
17 | .box-flex(@value) {
18 | -moz-box-flex: @value;
19 | -webkit-box-flex: @value;
20 | box-flex: @value;
21 | }
22 |
23 | .column-width(@value) {
24 | -moz-column-width: @value;
25 | -webkit-column-width: @value;
26 | column-width: @value;
27 | }
28 |
29 | .column-count(@value) {
30 | -moz-column-count: @value;
31 | -webkit-column-count: @value;
32 | column-count: @value;
33 | }
34 |
35 | .column-rule(@value) {
36 | -moz-column-rule: @value;
37 | -webkit-column-rule: @value;
38 | column-rule: @value;
39 | }
40 |
--------------------------------------------------------------------------------
/app/less/common/not_found.less:
--------------------------------------------------------------------------------
1 | #not-found-view{
2 | text-align: center;
3 | margin: 42px;
4 |
5 | h1{
6 |
7 | }
8 | h2{
9 |
10 | }
11 | h3{
12 |
13 | }
14 | p{
15 |
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/app/less/common/part_modal.less:
--------------------------------------------------------------------------------
1 | #part-modal {
2 |
3 | .checkbox.lock {
4 | display: none;
5 | }
6 |
7 | #tab-part-links {
8 | min-height: 280px;
9 | }
10 | #tab-part-files {
11 | .conversion-status {
12 | margin: 18px 0 0 4px;
13 | button.reload {
14 | float: right;
15 |
16 | }
17 | }
18 | }
19 |
20 | #tab-part-attributes {
21 | p {
22 | font-weight: bold;
23 | }
24 | }
25 |
26 | .pager {
27 | margin: 0;
28 | }
29 |
30 | .substitute-parts {
31 | margin: 18px 20px 0px 21px;
32 | }
33 | .display-substitute-part {
34 | margin-left: 6px;
35 | color: @link-color;
36 | }
37 |
38 | .subParts-CADInstance, .data-sub-part {
39 | display: none;
40 |
41 | }
42 |
43 | }
44 |
--------------------------------------------------------------------------------
/app/less/common/product_creation.less:
--------------------------------------------------------------------------------
1 | #product_creation_modal {
2 | .modal-body {
3 | overflow: inherit;
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/app/less/common/prompt.less:
--------------------------------------------------------------------------------
1 | #prompt_modal {
2 | .control-label {
3 | float: left;
4 | width: 160px;
5 | padding-top: 5px;
6 | padding-right: 10px;
7 | text-align: right;
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/app/less/common/registration.less:
--------------------------------------------------------------------------------
1 | #registration_link_container {
2 | color: @text-invert-color;
3 | margin-top: 10px;
4 | }
5 |
6 | #registration_link_container a {
7 | display: inline;
8 | }
9 |
--------------------------------------------------------------------------------
/app/less/common/responsive_1200px_min.less:
--------------------------------------------------------------------------------
1 | //
2 | // Responsive: Large desktop and up
3 | // --------------------------------------------------
4 |
5 | @media (min-width: 1200px) {
6 |
7 | .row-fluid .thumbnails {
8 | margin-left: 0;
9 | }
10 |
11 | }
12 |
--------------------------------------------------------------------------------
/app/less/common/responsive_768px_979px.less:
--------------------------------------------------------------------------------
1 | //
2 | // Responsive: Tablet to desktop
3 | // --------------------------------------------------
4 |
5 | @media (min-width: 768px) and (max-width: 979px) {
6 |
7 | // Fixed grid
8 | #grid > .core(@gridColumnWidth768, @gridGutterWidth768);
9 |
10 | // Fluid grid
11 | #grid > .fluid(@fluidGridColumnWidth768, @fluidGridGutterWidth768);
12 |
13 | // Input grid
14 | #grid > .input(@gridColumnWidth768, @gridGutterWidth768);
15 |
16 | // No need to reset .thumbnails here since it's the same @gridGutterWidth
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/app/less/common/responsive_modal.less:
--------------------------------------------------------------------------------
1 | //
2 | //Responsive : Modal
3 | //
4 |
5 | @media (max-height: 1200px) {
6 | .modal .modal-body{
7 | max-height:600px;
8 | }
9 | }
10 |
11 | @media (max-height: 768px) {
12 |
13 | .modal .modal-body{
14 | max-height:421px;
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/app/less/common/tags.less:
--------------------------------------------------------------------------------
1 | .master-tags-list li,
2 | .existing-tags-list li,
3 | .tags-to-add-list li {
4 | padding: 6px 9px 2px 6px;
5 | margin-right: 6px;
6 |
7 | a {
8 | font-size: 15px;
9 | color: @text-very-light-color;
10 | text-shadow: 0 1px 0 @text-invert-color;
11 |
12 | &:hover {
13 | text-decoration: none;
14 | color: @input-state-danger;
15 | opacity: 1;
16 | }
17 | }
18 |
19 | span {
20 | color: @link-color;
21 | margin-left: 3px;
22 | }
23 | }
24 |
25 | .existing-tags-list li:hover {
26 | cursor: pointer;
27 | }
28 |
--------------------------------------------------------------------------------
/app/less/common/task.less:
--------------------------------------------------------------------------------
1 | div.status-filter {
2 | margin: 16px 0 0 32px;
3 | }
4 |
--------------------------------------------------------------------------------
/app/less/common/udf.less:
--------------------------------------------------------------------------------
1 | #user_defined_function_modal {
2 |
3 | textarea {
4 | width: 280px;
5 | height: 100px;
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/app/less/common/used_by.less:
--------------------------------------------------------------------------------
1 | div.group-title {
2 | font-weight: bold;
3 | }
4 |
5 | div.used-by-items-view {
6 |
7 | ul.used-by-items {
8 | margin: 12px 0;
9 | list-style: none;
10 |
11 | li.used-by-item {
12 | padding: 6px 4px 2px 4px;
13 | margin: 0 12px 12px 0;
14 | display: inline-block;
15 |
16 | .reference {
17 | padding: 0 6px;
18 | font-weight: bold;
19 | margin: 0;
20 | display: inline-block;
21 | }
22 | .reference-path {
23 | padding: 0 6px;
24 | font-weight: normal;
25 | margin: 0;
26 | }
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/app/less/common/user_defined_function.less:
--------------------------------------------------------------------------------
1 | #user_defined_function_modal {
2 |
3 | .run-udf {
4 | display: none;
5 | }
6 |
7 | .calculation {
8 |
9 | select {
10 | width: 111px;
11 | display: inline;
12 | }
13 | margin-bottom: 10px;
14 | .result {
15 | margin-top: 10px;
16 | }
17 | }
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/app/less/document-management/content.less:
--------------------------------------------------------------------------------
1 | #document-management-content {
2 | width: 85%;
3 | height: 100%;
4 | overflow: auto;
5 | position: absolute;
6 | right: 0;
7 | top: 0;
8 | z-index: 0;
9 |
10 | input {
11 | height: 22px;
12 | margin: 8px;
13 | }
14 |
15 | td.reference {
16 | i.fa-pencil {
17 | color: @input-state-warning;
18 | }
19 |
20 | i.fa-lock {
21 | color: @input-state-danger;
22 | }
23 |
24 | i.fa-check {
25 | color: @input-state-success;
26 | }
27 |
28 | i.fa-exclamation {
29 | color: @input-state-danger;
30 | }
31 |
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/app/less/document-management/documents.less:
--------------------------------------------------------------------------------
1 | #document-management-content {
2 |
3 | td {
4 | a.dochandle {
5 | font-size: 14px;
6 | color: @text-very-light-color;
7 | text-shadow: 0 1px 0 @text-invert-color;
8 |
9 | &:hover {
10 | color: @text-light-color;
11 | cursor: move;
12 | text-decoration: none;
13 | }
14 | }
15 |
16 | &.doc-ref > a {
17 | color: @text-light-color;
18 | &:hover {
19 | text-decoration: none;
20 | color: @text-color;
21 | }
22 | }
23 | }
24 |
25 | tr.moving {
26 | a.dochandle {
27 | color: @text-light-color;
28 | }
29 |
30 | td.doc-ref > a {
31 | color: @text-color;
32 | }
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/app/less/document-management/templates.less:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docdoku/docdoku-plm-front/95bdbe3d45f2f271ea7c5c057e38229b42ec5c03/app/less/document-management/templates.less
--------------------------------------------------------------------------------
/app/less/documents/style.less:
--------------------------------------------------------------------------------
1 | @import "../common/style";
2 | @import "document-revision";
3 |
--------------------------------------------------------------------------------
/app/less/download/style.less:
--------------------------------------------------------------------------------
1 | @import "../common/style";
2 | @import "../modules/style";
3 | @import "content";
4 |
--------------------------------------------------------------------------------
/app/less/main/style.less:
--------------------------------------------------------------------------------
1 | @import "../common/style";
2 | @import "login";
3 |
--------------------------------------------------------------------------------
/app/less/modules/coworkers_access_module.less:
--------------------------------------------------------------------------------
1 | #coworkers_access_module_entries {
2 | min-width: 200px;
3 | }
4 |
5 | #coworkers_access_module_entries span {
6 | float: left;
7 | }
8 |
9 | #coworkers_access_module_entries .fa-user {
10 | margin: 4px 4px 0 -10px;
11 | float: left;
12 | }
13 |
14 | #coworkers_access_module_entries .corworker-action {
15 | opacity: 0.5;
16 | float: right;
17 | margin: 4px 0 0 0;
18 | padding-right: 3px;
19 | }
20 |
21 | #coworkers_access_module_entries .corworker-action-disable {
22 | opacity: 0.2;
23 | float: right;
24 | margin: 4px 0 0 0;
25 | padding-right: 3px;
26 | }
27 |
28 | #coworkers_access_module_entries > li > a > i.corworker-action:hover {
29 | opacity: 1;
30 | color: @text-invert-color;
31 | text-shadow: @text-invert-color-shadow;
32 | }
33 |
--------------------------------------------------------------------------------
/app/less/modules/style.less:
--------------------------------------------------------------------------------
1 | @import 'chat_module';
2 | @import 'coworkers_access_module';
3 | @import 'webrtc_module';
4 |
--------------------------------------------------------------------------------
/app/less/organization-management/menu.less:
--------------------------------------------------------------------------------
1 | #organization-management-menu {
2 | // Custom menu code
3 | }
4 |
--------------------------------------------------------------------------------
/app/less/organization-management/style.less:
--------------------------------------------------------------------------------
1 | @import "../common/style";
2 | @import "../modules/style";
3 | @import "menu";
4 | @import "content";
5 |
--------------------------------------------------------------------------------
/app/less/parts/style.less:
--------------------------------------------------------------------------------
1 | @import "../common/style";
2 | @import "part-revision";
3 |
--------------------------------------------------------------------------------
/app/less/product-management/menu.less:
--------------------------------------------------------------------------------
1 | #product-management-menu {
2 | // Custom menu code
3 |
4 | .nav-list-entry {
5 |
6 | &.move-part-into {
7 | border: 1px dashed @menu-drop-item;
8 | height: 25px;
9 | margin-top: -1px;
10 | padding-left: 5px;
11 | }
12 |
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/app/less/product-management/page_controls.less:
--------------------------------------------------------------------------------
1 | #product-management-content {
2 | .page-controls {
3 | display: none;
4 | z-index: 2;
5 | height: 0;
6 | position: relative;
7 | top: 12px;
8 | right: 23px;
9 | float: right;
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/app/less/product-management/style.less:
--------------------------------------------------------------------------------
1 | @import "../common/style";
2 | @import "../common/tags";
3 | @import "../modules/style";
4 | @import "menu";
5 | @import "content";
6 | @import "page_controls";
7 | @import "baselines";
8 | @import "product_instances";
9 | @import "search";
10 | @import (inline) "../../bower_components/jQuery-QueryBuilder/dist/css/query-builder.default.css";
11 | @import (inline) "../../bower_components/selectize/dist/css/selectize.default.css";
12 | @import "query_builder";
13 | @import "part_list_item";
14 | @import "../common/treeview";
15 |
--------------------------------------------------------------------------------
/app/less/product-structure/actions_bar.less:
--------------------------------------------------------------------------------
1 | #export_scene_btn {
2 | height: auto;
3 | display: none;
4 | }
5 |
6 | #fullscreen_scene_btn {
7 | height: auto;
8 | }
9 |
--------------------------------------------------------------------------------
/app/less/product-structure/bom_table.less:
--------------------------------------------------------------------------------
1 | #bom_table input {
2 | height: 22px;
3 | margin: 8px;
4 | }
--------------------------------------------------------------------------------
/app/less/product-structure/export_modal.less:
--------------------------------------------------------------------------------
1 | #exportSceneModal textarea {
2 | height: 30%;
3 | width: 97%;
4 | }
5 |
--------------------------------------------------------------------------------
/app/less/product-structure/frame.less:
--------------------------------------------------------------------------------
1 | #frameWorkspace {
2 | display: block;
3 | margin: 0px;
4 | padding: 0px;
5 | width: 100%;
6 | height: 100%;
7 | overflow: hidden;
8 | #progress_bar_container {
9 | position: absolute;
10 | left: 10px;
11 | bottom: 10px;
12 | }
13 | #container {
14 | margin: 0;
15 | padding: 0;
16 | height: 100%;
17 | width: 100%;
18 | canvas {
19 | height: 100%;
20 | width: 100%;
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/app/less/product-structure/part_metadata.less:
--------------------------------------------------------------------------------
1 | .part_metadata_container {
2 | dl {
3 | color: @text-light-color;
4 | dt {
5 | float: left;
6 | font-weight: bold;
7 | clear: both;
8 | }
9 |
10 | dd {
11 | float: right;
12 | margin-right: 5px;
13 | }
14 |
15 | }
16 | .selected-part {
17 | white-space: nowrap;
18 | }
19 | }
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/app/less/product-structure/path_to_path_link.less:
--------------------------------------------------------------------------------
1 | #path-to-path-links {
2 | .well {
3 | padding: 10px;
4 | }
5 |
6 | .path-to-path-link-content {
7 |
8 | div.control-group {
9 | margin-bottom: 0px;
10 |
11 | &.type {
12 | margin-top: 10px;
13 | margin-bottom: 10px;
14 | }
15 | }
16 |
17 | label.control-label {
18 | width: 110px;
19 | }
20 |
21 | div.controls {
22 | margin-left: 130px;
23 | padding-right: 30px;
24 | }
25 |
26 | textarea.path-to-path-description {
27 | max-width: 346px;
28 | width: 100%;
29 | margin-right: 10px;
30 | }
31 |
32 | .save-button {
33 | float: right;
34 | margin-top: 20px;
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/app/less/product-structure/product_instance_data.less:
--------------------------------------------------------------------------------
1 | .path-description {
2 | padding-bottom: 10px;
3 | }
4 |
5 | .fa-long-arrow-right {
6 | padding-right: 5px;
7 | padding-left: 5px;
8 | }
9 |
10 | .description-input {
11 | margin-left: 10px;
12 | }
13 |
14 | .new-iteration {
15 | margin-top: 5%;
16 | }
17 |
18 | .product-instance-data-modal {
19 | #tab-link {
20 | min-height: 280px;
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/app/less/product-structure/progress_bar.less:
--------------------------------------------------------------------------------
1 | #progress_bar_container {
2 | background: @menu-color;
3 | margin: 15px 0 0 0;
4 | float: right;
5 | width: 15%;
6 | height: 20px;
7 |
8 | .bar {
9 | background-color: @plm-secondary-color;
10 | width: 0;
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/app/less/product-structure/style.less:
--------------------------------------------------------------------------------
1 | //imports only
2 | @import "../common/style";
3 | @import "../common/tags";
4 | @import "../modules/style";
5 | @import (inline) "../../bower_components/selectize/dist/css/selectize.default.css";
6 | @import "app";
7 | @import "../common/treeview";
8 | @import "menu";
9 | @import "product_nav_list";
10 | @import "content";
11 | @import "actions_bar";
12 | @import "part_metadata";
13 | @import "shortcuts";
14 | @import "layers";
15 | @import "stats";
16 | @import "frame";
17 | @import "scene";
18 | @import "view_buttons";
19 | @import "bom_table";
20 | @import "export_modal";
21 | @import "progress_bar";
22 | @import "dat";
23 | @import "collaborative";
24 | @import "product_instance_data";
25 | @import "path_to_path_link";
26 |
--------------------------------------------------------------------------------
/app/less/product-structure/style_frame.less:
--------------------------------------------------------------------------------
1 | //imports only
2 | @import "../common/style";
3 | @import "menu";
4 | @import "product_nav_list";
5 | @import "content";
6 | @import "actions_bar";
7 | @import "part_metadata";
8 | @import "shortcuts";
9 | @import "layers";
10 | @import "stats";
11 | @import "frame";
12 | @import "scene";
13 | @import "view_buttons";
14 | @import "bom_table";
15 | @import "export_modal";
16 | @import "progress_bar";
--------------------------------------------------------------------------------
/app/less/product-structure/view_buttons.less:
--------------------------------------------------------------------------------
1 | #view_buttons {
2 | width: 75px;
3 | margin: 0px auto;
4 |
5 | .camera-mode-label {
6 | font-weight: bold;
7 | font-size: 12px;
8 |
9 | &:nth-child(2) {
10 | padding-left: 3px;
11 | }
12 |
13 | [class^="icon-"] {
14 | font-size: 6px;
15 | font-style: italic;
16 | }
17 |
18 | [class^="fa-"] {
19 | font-size: 6px;
20 | font-style: italic;
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/app/less/visualization/style.less:
--------------------------------------------------------------------------------
1 | //imports only
2 | @import "../common/style";
3 | @import "../product-structure/menu";
4 | @import "../product-structure/product_nav_list";
5 | @import "../product-structure/content";
6 | @import "../product-structure/actions_bar";
7 | @import "../product-structure/part_metadata";
8 | @import "../product-structure/shortcuts";
9 | @import "../product-structure/layers";
10 | @import "../product-structure/stats";
11 | @import "../product-structure/frame";
12 | @import "../product-structure/scene";
13 | @import "../product-structure/view_buttons";
14 | @import "../product-structure/bom_table";
15 | @import "../product-structure/export_modal";
16 | @import "../product-structure/progress_bar";
17 |
--------------------------------------------------------------------------------
/app/less/workspace-management/admin-accounts.less:
--------------------------------------------------------------------------------
1 | #content table.accounts-table > tbody > tr.account-item:not(.account-enabled) >td {
2 | background: #f5d1d1;
3 | text-decoration: line-through;
4 | }
5 |
6 |
7 |
--------------------------------------------------------------------------------
/app/less/workspace-management/admin-oidc.less:
--------------------------------------------------------------------------------
1 | #providers-table {
2 | .provider-name {
3 | font-weight: bold;
4 | cursor: pointer;
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/app/less/workspace-management/content.less:
--------------------------------------------------------------------------------
1 | #workspace-management-content {
2 | width: 85%;
3 | height: 100%;
4 | overflow: auto;
5 | position: absolute;
6 | right: 0;
7 | top: 0;
8 | z-index: 0;
9 | }
10 |
--------------------------------------------------------------------------------
/app/less/workspace-management/customizations.less:
--------------------------------------------------------------------------------
1 | #columns-selectize {
2 | #customize-columns {
3 | width: 100%;
4 | }
5 | .badge {
6 | cursor: pointer;
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/app/less/workspace-management/menu.less:
--------------------------------------------------------------------------------
1 | #workspace-management-menu {
2 | // Custom menu code
3 | }
4 |
--------------------------------------------------------------------------------
/app/less/workspace-management/style.less:
--------------------------------------------------------------------------------
1 | @import "../common/style";
2 | @import "../modules/style";
3 | @import "menu";
4 | @import "content";
5 | @import "workspace-home";
6 | @import "workspace-users";
7 | @import (inline) "../../bower_components/selectize/dist/css/selectize.default.css";
8 | @import (inline) "../../bower_components/nvd3/build/nv.d3.css";
9 | @import "charts";
10 | @import "admin-accounts";
11 | @import "webhooks";
12 | @import "customizations";
13 | @import "admin-oidc";
14 |
--------------------------------------------------------------------------------
/app/less/workspace-management/webhooks.less:
--------------------------------------------------------------------------------
1 | .specific-hook-configuration{
2 | select,input{
3 | margin-bottom: 2px;
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/app/less/workspace-management/workspace-home.less:
--------------------------------------------------------------------------------
1 | .home-workspace-list-container {
2 | display: flex;
3 | flex-direction: row;
4 | flex-wrap: wrap;
5 | justify-content: flex-start;
6 | align-items: stretch;
7 | align-content: flex-start;
8 |
9 | .well-large.home-workspace {
10 | margin: 3px;
11 | padding: 0 8px 4px 10px;
12 | width: 24%;
13 | border: @border-light;
14 | background-color: @background-color-light;
15 | -webkit-border-radius: 0;
16 | -moz-border-radius: 0;
17 | border-radius: 0;
18 | >div>h4{
19 | text-overflow: ellipsis;
20 | overflow: hidden;
21 | white-space: nowrap;
22 | }
23 | }
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/app/main/js/templates/login-with.html:
--------------------------------------------------------------------------------
1 | {{i18n.CONNECTION}}
2 |
3 |
4 |
12 | {{i18n.LOGIN_AN_OTHER_WAY}}
13 |
--------------------------------------------------------------------------------
/app/main/js/templates/recovery-form.html:
--------------------------------------------------------------------------------
1 | {{i18n.RECOVERY}}
2 |
3 |
4 | {{i18n.ENTER_ID}}
5 |
6 |
7 |
13 |
14 |
15 |
16 |
17 |
23 |
24 |
25 | {{i18n.BACK}}
26 |
27 |
--------------------------------------------------------------------------------
/app/organization-management/js/templates/content.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/app/parts/js/router.js:
--------------------------------------------------------------------------------
1 | /*global define,App*/
2 | define([
3 | 'backbone',
4 | 'common-objects/common/singleton_decorator'
5 | ],
6 | function (Backbone, singletonDecorator) {
7 | 'use strict';
8 | var Router = Backbone.Router.extend({
9 | routes: {
10 | ':workspaceId/:partNumber/:partVersion': 'showPartRevision',
11 | ':uuid': 'showSharedEntity',
12 | },
13 |
14 | showPartRevision:function(workspace, partNumber, partVersion){
15 | App.appView.showPartRevision(workspace, partNumber, partVersion);
16 | },
17 |
18 | showSharedEntity:function(uuid){
19 | App.appView.showSharedEntity(uuid);
20 | }
21 | });
22 |
23 | return singletonDecorator(Router);
24 | });
25 |
--------------------------------------------------------------------------------
/app/parts/js/templates/cad-file.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | {{i18n.CAD_FILE}}
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/parts/js/templates/part-permalink.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/app/product-management/js/collections/configuration_items.js:
--------------------------------------------------------------------------------
1 | /*global define,App*/
2 | define(['backbone', 'models/configuration_item' ],
3 | function (Backbone, ConfigurationItem) {
4 | 'use strict';
5 | var ConfigurationItemCollection = Backbone.Collection.extend({
6 | url: function () {
7 | return App.config.apiEndPoint + '/workspaces/' + App.config.workspaceId + '/products';
8 | },
9 | model: ConfigurationItem
10 | });
11 |
12 | return ConfigurationItemCollection;
13 |
14 | });
15 |
--------------------------------------------------------------------------------
/app/product-management/js/collections/configurations.js:
--------------------------------------------------------------------------------
1 | /*global define,App*/
2 | define(['backbone', 'models/configuration' ],
3 | function (Backbone, Configuration) {
4 | 'use strict';
5 | var ConfigurationCollection = Backbone.Collection.extend({
6 | url: function () {
7 | return App.config.apiEndPoint + '/workspaces/' + App.config.workspaceId + '/product-configurations';
8 | },
9 | model: Configuration
10 | });
11 |
12 | return ConfigurationCollection;
13 |
14 | });
15 |
--------------------------------------------------------------------------------
/app/product-management/js/collections/part_templates.js:
--------------------------------------------------------------------------------
1 | /*global define,App*/
2 | define([
3 | 'backbone',
4 | 'models/part_template'
5 | ], function (Backbone, Template) {
6 | 'use strict';
7 | var TemplateList = Backbone.Collection.extend({
8 | model: Template,
9 |
10 | url: function () {
11 | return App.config.apiEndPoint + '/workspaces/' + App.config.workspaceId + '/part-templates';
12 | }
13 |
14 | });
15 |
16 | return TemplateList;
17 | });
18 |
--------------------------------------------------------------------------------
/app/product-management/js/templates/baselines/baseline_choice_list.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/product-management/js/templates/baselines/baseline_configuration_list.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/app/product-management/js/templates/baselines/baseline_list_item.html:
--------------------------------------------------------------------------------
1 | {{model.attributes.name}}
--------------------------------------------------------------------------------
/app/product-management/js/templates/baselines/baselined_part_list.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/product-management/js/templates/baselines/baselines_content.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | {{> snapButton}}
9 | {{> newProductInstanceButton}}
10 | {{> deleteButton}}
11 | {{> udfButton}}
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/app/product-management/js/templates/baselines/baselines_list.html:
--------------------------------------------------------------------------------
1 |
18 |
--------------------------------------------------------------------------------
/app/product-management/js/templates/configuration/configuration_content.html:
--------------------------------------------------------------------------------
1 |
2 | {{> newConfigurationButton}}
3 | {{> deleteButton}}
4 | {{> aclButton}}
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/app/product-management/js/templates/configuration/configuration_list.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | |
4 | {{i18n.NAME}} |
5 | {{i18n.PRODUCT}} |
6 | {{i18n.CREATION_DATE}} |
7 | {{i18n.AUTHOR}} |
8 | {{i18n.ACL}} |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/app/product-management/js/templates/configuration/configuration_list_item.html:
--------------------------------------------------------------------------------
1 | |
2 | {{model.getName}} |
3 | {{model.getConfigurationItemId}} |
4 | {{model.getFormattedCreationDate}} |
5 | {{model.getAuthor}} |
6 |
7 | {{#model.isReadOnly}}
8 |
9 | {{/model.isReadOnly}}
10 | {{#model.isFullAccess}}
11 |
12 | {{/model.isFullAccess}}
13 | |
14 |
--------------------------------------------------------------------------------
/app/product-management/js/templates/content.html:
--------------------------------------------------------------------------------
1 |
16 |
17 |
--------------------------------------------------------------------------------
/app/product-management/js/templates/nav/baselines_nav.html:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/app/product-management/js/templates/nav/checkedouts_nav.html:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/app/product-management/js/templates/nav/configuration_nav.html:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/app/product-management/js/templates/nav/part_nav.html:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/app/product-management/js/templates/nav/part_template_nav.html:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/app/product-management/js/templates/nav/product_instances_nav.html:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/app/product-management/js/templates/nav/product_nav.html:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/app/product-management/js/templates/nav/tag_nav.html:
--------------------------------------------------------------------------------
1 |
7 |
8 |
--------------------------------------------------------------------------------
/app/product-management/js/templates/nav/tag_nav_item.html:
--------------------------------------------------------------------------------
1 |
21 |
--------------------------------------------------------------------------------
/app/product-management/js/templates/nav/tasks_nav.html:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/app/product-management/js/templates/part-template/part_template_content.html:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 | {{> deleteButton}}
9 | {{> aclButton}}
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/app/product-management/js/templates/part-template/part_template_list.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | |
4 | {{i18n.REFERENCE}} |
5 | {{i18n.TYPE}} |
6 | {{i18n.MASK}} |
7 | {{i18n.AUTHOR}} |
8 | {{i18n.CREATION_DATE}} |
9 | {{i18n.MODIFICATION_DATE}} |
10 | {{i18n.ACL}} |
11 | |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/app/product-management/js/templates/part-template/part_template_list_item.html:
--------------------------------------------------------------------------------
1 | |
2 | {{getId}} |
3 | {{getPartType}} |
4 | {{getMask}} |
5 | {{getAuthorName}} |
6 | {{getFormattedCreationDate}} |
7 | {{getFormattedModificationDate}} |
8 |
9 | {{#isReadOnly}}
10 |
11 | {{/isReadOnly}}
12 | {{#isFullAccess}}
13 |
14 | {{/isFullAccess}}
15 | |
16 |
17 | {{#hasAttachedFiles}}
18 |
19 | {{/hasAttachedFiles}}
20 | |
21 |
--------------------------------------------------------------------------------
/app/product-management/js/templates/part/part_grouped_by_list.html:
--------------------------------------------------------------------------------
1 | {{#groups}}
2 | {{#name}}
3 | {{name}}
4 | {{/name}}
5 |
6 |
7 |
8 | {{#columns}}
9 | {{name}} |
10 | {{/columns}}
11 |
12 |
13 |
14 |
15 | {{/groups}}
16 |
--------------------------------------------------------------------------------
/app/product-management/js/templates/part/part_grouped_by_list_item.html:
--------------------------------------------------------------------------------
1 | {{#columns}}
2 |
3 | {{#isDate}}
4 | {{#value}}
5 | {{.}}
6 | {{/value}}
7 | {{/isDate}}
8 |
9 | {{#isStringArray}}
10 | {{#value}}
11 | {{.}}
12 | {{/value}}
13 | {{/isStringArray}}
14 |
15 | {{#isStringValue}}
16 | {{#value}}
17 | {{.}}
18 | {{/value}}
19 | {{/isStringValue}}
20 |
21 | {{#isLinkedDocuments}}
22 | {{#value}}
23 | {{name}}
24 | {{/value}}
25 | {{/isLinkedDocuments}}
26 |
27 | {{#isPartNumber}}
28 | {{value}}
29 | {{/isPartNumber}}
30 |
31 | |
32 | {{/columns}}
33 |
--------------------------------------------------------------------------------
/app/product-management/js/templates/part/part_import_modal.html:
--------------------------------------------------------------------------------
1 |
10 |
--------------------------------------------------------------------------------
/app/product-management/js/templates/part/part_list.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | |
4 | |
5 | |
6 |
7 | |
8 | |
9 | |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/app/product-management/js/templates/part/search_part_form.html:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/app/product-management/js/templates/product-instances/product_instances_content.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | {{> newProductInstanceButton}}
10 | {{> deleteButton}}
11 | {{> aclButton}}
12 | {{> importButton}}
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/app/product-management/js/templates/product-instances/product_instances_import_modal.html:
--------------------------------------------------------------------------------
1 |
10 |
--------------------------------------------------------------------------------
/app/product-management/js/templates/product/product_content.html:
--------------------------------------------------------------------------------
1 |
2 |
5 | {{> newConfigurationButton}}
6 | {{> snapButton}}
7 | {{> deleteButton}}
8 | {{> udfButton}}
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/app/product-management/js/templates/product/product_list.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | |
4 | {{i18n.PRODUCT_ID}} |
5 | |
6 | {{i18n.ROOT_PART}} |
7 | {{i18n.AUTHOR}} |
8 | |
9 | |
10 | |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/app/product-management/js/templates/product/product_list_item.html:
--------------------------------------------------------------------------------
1 | |
2 | {{model.getId}} |
3 |
4 | {{#model.hasUnreadModificationNotifications}}
5 |
6 | {{/model.hasUnreadModificationNotifications}}
7 | |
8 | {{model.getDesignItemName}} < {{model.getDesignItemNumber}} > |
9 | {{model.getAuthorName}} |
10 | |
11 | |
12 | |
13 |
--------------------------------------------------------------------------------
/app/product-structure/js/collections/marker_collection.js:
--------------------------------------------------------------------------------
1 | /*global define*/
2 | define([
3 | 'backbone',
4 | 'models/marker'
5 | ], function (Backbone, Marker) {
6 |
7 | 'use strict';
8 |
9 | var MarkerCollection = Backbone.Collection.extend({
10 |
11 | model: Marker,
12 |
13 | url: function () {
14 | return this.urlLayer + '/markers';
15 | },
16 |
17 | onScene: function () {
18 | return this.where({onScene: true});
19 | },
20 |
21 | notOnScene: function () {
22 | return this.where({onScene: false});
23 | }
24 |
25 | });
26 |
27 | return MarkerCollection;
28 |
29 | });
30 |
--------------------------------------------------------------------------------
/app/product-structure/js/collections/part_collection.js:
--------------------------------------------------------------------------------
1 | /*global define*/
2 | define([
3 | 'backbone',
4 | 'common-objects/models/part'
5 | ], function (Backbone, Part) {
6 | 'use strict';
7 | var PartList = Backbone.Collection.extend({
8 |
9 | model: Part,
10 |
11 | className: 'PartList',
12 |
13 | initialize: function () {
14 | this.filterUrl = undefined;
15 | },
16 |
17 | setFilterUrl: function (url) {
18 | this.filterUrl = url;
19 | },
20 |
21 | url: function () {
22 | return this.filterUrl;
23 | }
24 |
25 | });
26 |
27 | return PartList;
28 | });
29 |
--------------------------------------------------------------------------------
/app/product-structure/js/models/marker.js:
--------------------------------------------------------------------------------
1 | /*global define,_*/
2 | define(['backbone'], function (Backbone) {
3 |
4 | 'use strict';
5 |
6 | var Marker = Backbone.Model.extend({
7 |
8 | toJSON: function () {
9 | return _.pick(this.attributes, 'id', 'title', 'description', 'x', 'y', 'z');
10 | },
11 |
12 | getX: function () {
13 | return this.get('x');
14 | },
15 |
16 | getY: function () {
17 | return this.get('y');
18 | },
19 |
20 | getZ: function () {
21 | return this.get('z');
22 | },
23 |
24 | getTitle: function () {
25 | return this.get('title');
26 | },
27 |
28 | getDescription: function () {
29 | return this.get('description');
30 | }
31 |
32 | });
33 |
34 | return Marker;
35 |
36 | });
37 |
--------------------------------------------------------------------------------
/app/product-structure/js/models/result_path.js:
--------------------------------------------------------------------------------
1 | /*global define,_*/
2 | 'use strict';
3 | define(['backbone'], function (Backbone) {
4 |
5 | var ResultPath = Backbone.Model.extend({
6 |
7 | contains: function (partUsageLinkId) {
8 | return _.indexOf(this.partUsageLinks, partUsageLinkId) !== -1;
9 | },
10 |
11 | parse: function (response) {
12 | if (response) {
13 | var linkIds = response.path.substr(3).split('-');
14 | linkIds.unshift('-1');
15 | this.partUsageLinks = linkIds;
16 | }
17 | },
18 |
19 | toJSON: function () {
20 | return _.pick(this.attributes, 'path');
21 | }
22 |
23 | });
24 |
25 | return ResultPath;
26 |
27 | });
28 |
--------------------------------------------------------------------------------
/app/product-structure/js/templates/baselines/baseline_select.html:
--------------------------------------------------------------------------------
1 |
6 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/app/product-structure/js/templates/blocker.html:
--------------------------------------------------------------------------------
1 |
2 | {{i18n.BLOCKER_TITLE}}
3 |
4 | {{i18n.BLOCKER_TEXT}}
5 |
6 |
--------------------------------------------------------------------------------
/app/product-structure/js/templates/bom.html:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docdoku/docdoku-plm-front/95bdbe3d45f2f271ea7c5c057e38229b42ec5c03/app/product-structure/js/templates/bom.html
--------------------------------------------------------------------------------
/app/product-structure/js/templates/bom_content.html:
--------------------------------------------------------------------------------
1 |
24 |
--------------------------------------------------------------------------------
/app/product-structure/js/templates/control_clipping.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/app/product-structure/js/templates/control_cutplan.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/app/product-structure/js/templates/control_explode.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/product-structure/js/templates/control_layers.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/app/product-structure/js/templates/control_markers.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
7 |
9 |
--------------------------------------------------------------------------------
/app/product-structure/js/templates/control_measure.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/product-structure/js/templates/control_modes.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
7 |
9 |
--------------------------------------------------------------------------------
/app/product-structure/js/templates/control_navigation.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
7 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/app/product-structure/js/templates/control_options.html:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
--------------------------------------------------------------------------------
/app/product-structure/js/templates/control_transform.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/product-structure/js/templates/export_scene_modal.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/product-structure/js/templates/layer_controls.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/product-structure/js/templates/layer_item.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | {{attributes.name}} ({{countMarkers}})
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/product-structure/js/templates/marker_info_modal.html:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
{{i18n.DESCRIPTION}}
8 |
9 |
13 |
14 |
--------------------------------------------------------------------------------
/app/product-structure/js/templates/part_meta_data.html:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 | - {{i18n.PART_NAME}} :
7 | - {{model.getName}}
8 |
9 | - {{i18n.VERSION}} :
10 | - {{model.getVersion}}
11 |
12 | - {{i18n.ITERATION}} :
13 | - {{model.getIteration}}
14 |
15 | - {{i18n.DESCRIPTION}} :
16 | - {{model.getDescription}}
17 |
18 | - {{i18n.AUTHOR}} :
19 | - {{model.getAuthor}}
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/app/product-structure/js/templates/progress_bar.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/product-structure/js/templates/shortcuts.html:
--------------------------------------------------------------------------------
1 | {{i18n.SHORTCUTS_TITLE}}
--------------------------------------------------------------------------------
/app/product-structure/js/views/blocker_view.js:
--------------------------------------------------------------------------------
1 | /*global define,App*/
2 | define(
3 | [
4 | 'backbone',
5 | 'mustache',
6 | 'text!templates/blocker.html'
7 | ], function (Backbone, Mustache, template) {
8 |
9 | 'use strict';
10 |
11 | var BlockerView = Backbone.View.extend({
12 |
13 | tagName: 'div',
14 |
15 | id: 'blocker',
16 |
17 | render: function () {
18 | this.$el.html(Mustache.render(template, {i18n: App.config.i18n}));
19 | return this;
20 | }
21 |
22 | });
23 |
24 | return BlockerView;
25 |
26 | });
27 |
--------------------------------------------------------------------------------
/app/product-structure/js/views/control_layers_view.js:
--------------------------------------------------------------------------------
1 | /*global define,App*/
2 | define(
3 | [
4 | 'backbone',
5 | 'mustache',
6 | 'text!templates/control_layers.html'
7 | ], function (Backbone, Mustache, template) {
8 |
9 | 'use strict';
10 |
11 | var ControlLayersView = Backbone.View.extend({
12 |
13 | className: 'side_control_group',
14 |
15 | initialize: function () {
16 | },
17 |
18 | render: function () {
19 | this.$el.html(Mustache.render(template, {i18n: App.config.i18n}));
20 | return this;
21 | }
22 |
23 | });
24 |
25 | return ControlLayersView;
26 |
27 | });
28 |
--------------------------------------------------------------------------------
/app/sounds/incoming-call.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docdoku/docdoku-plm-front/95bdbe3d45f2f271ea7c5c057e38229b42ec5c03/app/sounds/incoming-call.ogg
--------------------------------------------------------------------------------
/app/sounds/notification.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/docdoku/docdoku-plm-front/95bdbe3d45f2f271ea7c5c057e38229b42ec5c03/app/sounds/notification.ogg
--------------------------------------------------------------------------------
/app/webapp.properties.json:
--------------------------------------------------------------------------------
1 | {
2 | "server": {
3 | "ssl": false,
4 | "domain": "localhost",
5 | "port": 8080,
6 | "contextPath": "/docdoku-plm-server-rest",
7 | "wsDomain": "localhost"
8 | },
9 | "contextPath": "/",
10 | "preferLoginWith": false
11 | }
12 |
--------------------------------------------------------------------------------
/app/workspace-management/js/templates/admin-dashboard.html:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
{{i18n.DASHBOARD}}
8 |
9 |
10 |
{{i18n.DISK_USAGE}}
11 |
12 |
13 |
14 |
{{i18n.DISK_USAGE_TOTAL}}
15 |
16 |
17 |
18 |
{{i18n.ENTITIES}}
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/app/workspace-management/js/templates/admin-oauth-provider.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | |
5 | {{provider.name}} |
6 | {{provider.issuer}} |
7 | {{provider.clientID}} |
8 | {{provider.jwsAlgorithm}} |
9 |
10 | {{#provider.enabled}}{{i18n.ENABLED}}{{/provider.enabled}}{{^provider.enabled}}{{i18n.DISABLED}}{{/provider.enabled}}
11 | |
12 |
13 |
--------------------------------------------------------------------------------
/app/workspace-management/js/templates/hooks-manager.html:
--------------------------------------------------------------------------------
1 |
2 |
5 |
--------------------------------------------------------------------------------
/app/workspace-management/js/templates/part-table-customizations.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
{{i18n.PARTS}}
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/app/workspace-management/js/templates/workspace-customizations.html:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/app/workspace-management/js/templates/workspace-management-home.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
{{i18n.WORKSPACES_ADMINISTRATION}}
6 |
{{i18n.WORKSPACES_ADMINISTRATION_TEXT}}
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/build.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | set -e
4 |
5 | VERSION=$(sed -nE 's/^\s*"version": "(.*?)",$/\1/p' package.json)
6 |
7 | npm run build
8 | docker build -f docker/Dockerfile -t docdoku/docdoku-plm-front:$VERSION .
9 |
--------------------------------------------------------------------------------
/docker/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM nginx:1.19.1-alpine
2 |
3 | COPY dist /usr/share/nginx/html
4 | COPY docker/entrypoint.sh /entrypoint.sh
5 |
6 | RUN chmod +x /entrypoint.sh
7 |
8 | ENTRYPOINT ["/entrypoint.sh"]
9 |
--------------------------------------------------------------------------------
/docker/entrypoint.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | /usr/sbin/nginx -g "daemon off;"
4 |
5 |
--------------------------------------------------------------------------------
/grunt/dev/jshint.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | loadConf:function(config, grunt){
3 | config.jshint= {
4 | options: {
5 | jshintrc: '.jshintrc',
6 | reporter: require('jshint-stylish')
7 | },
8 | all: {
9 | src:[
10 | 'Gruntfile.js',
11 | 'app/**/*.js',
12 | 'tests/js/**/*.js',
13 | '!app/bower_components/**',
14 | '!app/js/lib/**',
15 | '!app/js/dmu/**'
16 | ]
17 | },
18 | current:{}
19 | };
20 | },
21 | loadTasks:function(grunt){
22 |
23 | }
24 | };
25 |
--------------------------------------------------------------------------------
/grunt/dev/tests.js:
--------------------------------------------------------------------------------
1 | var moduleName = 'tests';
2 |
3 | module.exports = {
4 |
5 | name:moduleName,
6 |
7 | loadConf:function(config,grunt){
8 | config.execute = {
9 | tests:{
10 | options:{
11 | cwd:'tests'
12 | },
13 | src:['tests/run.js']
14 | }
15 | };
16 | },
17 |
18 | loadTasks:function(grunt){
19 | grunt.registerTask('test',['execute:tests']);
20 | }
21 |
22 | };
23 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Mocha Spec Runner
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/tests/.gitignore:
--------------------------------------------------------------------------------
1 | *.png
2 | *.xml
3 | *.log
4 | *.wav
5 |
--------------------------------------------------------------------------------
/tests/README.md:
--------------------------------------------------------------------------------
1 | # DocdokuPLM WebFront tests
2 |
3 | These tests are functional tests. The web application and api must be running.
4 |
5 | # Requirements
6 |
7 | * node
8 | * npm
9 | * casperjs
10 |
11 | # Running tests
12 |
13 | Edit config.js according to your environment (or use command line options)
14 |
15 | ```
16 | npm install;
17 | cd tests;
18 | node run.js
19 | ```
20 |
--------------------------------------------------------------------------------