From d1766de44fe59c2f8bdf8d2b49f5866a11fb4169 Mon Sep 17 00:00:00 2001 From: Brijesh-Thakkar Date: Tue, 16 Dec 2025 05:23:01 +0530 Subject: [PATCH 1/2] Improve documentation links, accessibility, and layout --- .../api-docs/sharing_cpi.html | 816 +++++++---- .../api-docs/sharing_models.html | 1231 +++++++++++++--- .../sharing-service-docs/api-docs/style.css | 1262 +++++++++++++--- examples/sharing-service-docs/index.html | 185 +-- examples/sharing-service-docs/style.css | 1282 ++++++++++++++--- .../research-framework/simexr_mod/README.md | 4 +- 6 files changed, 3858 insertions(+), 922 deletions(-) diff --git a/examples/sharing-service-docs/api-docs/sharing_cpi.html b/examples/sharing-service-docs/api-docs/sharing_cpi.html index 29da22d1969..4478889350e 100644 --- a/examples/sharing-service-docs/api-docs/sharing_cpi.html +++ b/examples/sharing-service-docs/api-docs/sharing_cpi.html @@ -1,389 +1,681 @@ - - + + + - - -Thrift module: sharing_cpi -
-

Thrift module: sharing_cpi

- - - - - -
ModuleServicesData typesConstants
sharing_cpiSharingRegistryService
- -
SHARING_CPI_VERSION
-
-

Constants

- -
ConstantTypeValue
SHARING_CPI_VERSIONstring"0.18.0"

Services

-

Service: SharingRegistryService

- -

Function: SharingRegistryService.createDomain

-
string createDomain(sharing_models.Domain domain)
+    
+    
+    Thrift module: sharing_cpi
+
+
+
+    
+

Thrift module: sharing_cpi

+ + + + + + + + + + + + + +
ModuleServicesData typesConstants
sharing_cpiSharingRegistryService
+ +
SHARING_CPI_VERSION
+
+
+

Constants

+ + + + + + + + + + + +
ConstantTypeValue
SHARING_CPI_VERSIONstring"0.18.0"
+
+

Services

+

Service: SharingRegistryService

+
extends base_api.BaseAPI +
+
+

Function: SharingRegistryService.createDomain

+
string createDomain(sharing_models.Domain domain)
     throws sharing_models.SharingRegistryException, sharing_models.DuplicateEntryException
-

API method to create a new domain

-

Function: SharingRegistryService.updateDomain

-
bool updateDomain(sharing_models.Domain domain)
-    throws sharing_models.SharingRegistryException
-

API method to update a domain

-

Function: SharingRegistryService.isDomainExists

-
bool isDomainExists(string domainId)
-    throws sharing_models.SharingRegistryException
-

API method to check Domain Exists

-

Function: SharingRegistryService.deleteDomain

-
bool deleteDomain(string domainId)
-    throws sharing_models.SharingRegistryException
-

API method to delete domain

-

Function: SharingRegistryService.getDomain

-
sharing_models.Domain getDomain(string domainId)
-    throws sharing_models.SharingRegistryException
-

API method to retrieve a domain

-

Function: SharingRegistryService.getDomains

-
list<sharing_models.Domain> getDomains(i32 offset,
+
+

API method to create a new domain

+

+
+
+

Function: SharingRegistryService.updateDomain

+
bool updateDomain(sharing_models.Domain domain)
+    throws sharing_models.SharingRegistryException
+
+

API method to update a domain

+

+
+
+

Function: SharingRegistryService.isDomainExists

+
bool isDomainExists(string domainId)
+    throws sharing_models.SharingRegistryException
+
+

API method to check Domain Exists

+

+
+
+

Function: SharingRegistryService.deleteDomain

+
bool deleteDomain(string domainId)
+    throws sharing_models.SharingRegistryException
+
+

API method to delete domain

+

+
+
+

Function: SharingRegistryService.getDomain

+
sharing_models.Domain getDomain(string domainId)
+    throws sharing_models.SharingRegistryException
+
+

API method to retrieve a domain

+

+
+
+

Function: SharingRegistryService.getDomains

+
list<sharing_models.Domain> getDomains(i32 offset,
                                        i32 limit)
     throws sharing_models.SharingRegistryException
-

API method to get all domain.

-

Function: SharingRegistryService.createUser

-
string createUser(sharing_models.User user)
+
+

API method to get all domain.

+

+
+
+

Function: SharingRegistryService.createUser

+
string createUser(sharing_models.User user)
     throws sharing_models.SharingRegistryException, sharing_models.DuplicateEntryException
-

API method to register a user in the system

-

Function: SharingRegistryService.updatedUser

-
bool updatedUser(sharing_models.User user)
-    throws sharing_models.SharingRegistryException
-

API method to update existing user

-

Function: SharingRegistryService.isUserExists

-
bool isUserExists(string domainId,
+
+

API method to register a user in the system

+

+
+
+

Function: SharingRegistryService.updatedUser

+
bool updatedUser(sharing_models.User user)
+    throws sharing_models.SharingRegistryException
+
+

API method to update existing user

+

+
+
+

Function: SharingRegistryService.isUserExists

+
bool isUserExists(string domainId,
                   string userId)
     throws sharing_models.SharingRegistryException
-

API method to check User Exists

-

Function: SharingRegistryService.deleteUser

-
bool deleteUser(string domainId,
+
+

API method to check User Exists

+

+
+
+

Function: SharingRegistryService.deleteUser

+
bool deleteUser(string domainId,
                 string userId)
     throws sharing_models.SharingRegistryException
-

API method to delete user

-

Function: SharingRegistryService.getUser

-
sharing_models.User getUser(string domainId,
+
+

API method to delete user

+

+
+
+

Function: SharingRegistryService.getUser

+
sharing_models.User getUser(string domainId,
                             string userId)
     throws sharing_models.SharingRegistryException
-

API method to get a user

-

Function: SharingRegistryService.getUsers

-
list<sharing_models.User> getUsers(string domainId,
+
+

API method to get a user

+

+
+
+

Function: SharingRegistryService.getUsers

+
list<sharing_models.User> getUsers(string domainId,
                                    i32 offset,
                                    i32 limit)
     throws sharing_models.SharingRegistryException
-

API method to get a list of users in a specific domain.

+
+

API method to get a list of users in a specific domain.

  • domainId : Domain id
  • offset : Starting result number
  • limit : Number of max results to be sent
  • -

    Function: SharingRegistryService.createGroup

    -
    string createGroup(sharing_models.UserGroup group)
    -    throws sharing_models.SharingRegistryException
    -

    API method to create a new group

    -

    Function: SharingRegistryService.updateGroup

    -
    bool updateGroup(sharing_models.UserGroup group)
    -    throws sharing_models.SharingRegistryException
    -

    API method to update a group

    -

    Function: SharingRegistryService.isGroupExists

    -
    bool isGroupExists(string domainId,
    +

    +
    +
    +

    Function: SharingRegistryService.createGroup

    +
    string createGroup(sharing_models.UserGroup group)
    +    throws sharing_models.SharingRegistryException
    +
    +

    API method to create a new group

    +

    +
    +
    +

    Function: SharingRegistryService.updateGroup

    +
    bool updateGroup(sharing_models.UserGroup group)
    +    throws sharing_models.SharingRegistryException
    +
    +

    API method to update a group

    +

    +
    +
    +

    Function: SharingRegistryService.isGroupExists

    +
    bool isGroupExists(string domainId,
                        string groupId)
         throws sharing_models.SharingRegistryException
    -

    API method to check Group Exists

    -

    Function: SharingRegistryService.deleteGroup

    -
    bool deleteGroup(string domainId,
    +
    +

    API method to check Group Exists

    +

    +
    +
    +

    Function: SharingRegistryService.deleteGroup

    +
    bool deleteGroup(string domainId,
                      string groupId)
         throws sharing_models.SharingRegistryException
    -

    API method to delete a group

    -

    Function: SharingRegistryService.getGroup

    -
    sharing_models.UserGroup getGroup(string domainId,
    +
    +

    API method to delete a group

    +

    +
    +
    +

    Function: SharingRegistryService.getGroup

    +
    sharing_models.UserGroup getGroup(string domainId,
                                       string groupId)
         throws sharing_models.SharingRegistryException
    -

    API method to get a group

    -

    Function: SharingRegistryService.getGroups

    -
    list<sharing_models.UserGroup> getGroups(string domainId,
    +
    +

    API method to get a group

    +

    +
    +
    +

    Function: SharingRegistryService.getGroups

    +
    list<sharing_models.UserGroup> getGroups(string domainId,
                                              i32 offset,
                                              i32 limit)
    -

    API method to get groups in a domainId.

    -

    Function: SharingRegistryService.addUsersToGroup

    -
    bool addUsersToGroup(string domainId,
    +
    +

    API method to get groups in a domainId.

    +

    +
    +
    +

    Function: SharingRegistryService.addUsersToGroup

    +
    bool addUsersToGroup(string domainId,
                          list<string> userIds,
                          string groupId)
         throws sharing_models.SharingRegistryException
    -

    API method to add list of users to a group

    -

    Function: SharingRegistryService.removeUsersFromGroup

    -
    bool removeUsersFromGroup(string domainId,
    +
    +

    API method to add list of users to a group

    +

    +
    +
    +

    Function: + SharingRegistryService.removeUsersFromGroup

    +
    bool removeUsersFromGroup(string domainId,
                               list<string> userIds,
                               string groupId)
         throws sharing_models.SharingRegistryException
    -

    API method to remove users from a group

    -

    Function: SharingRegistryService.transferGroupOwnership

    -
    bool transferGroupOwnership(string domainId,
    +
    +

    API method to remove users from a group

    +

    +
    +
    +

    Function: + SharingRegistryService.transferGroupOwnership

    +
    bool transferGroupOwnership(string domainId,
                                 string groupId,
                                 string newOwnerId)
         throws sharing_models.SharingRegistryException
    -

    API method to transfer group ownership

    -

    Function: SharingRegistryService.addGroupAdmins

    -
    bool addGroupAdmins(string domainId,
    +
    +

    API method to transfer group ownership

    +

    +
    +
    +

    Function: SharingRegistryService.addGroupAdmins

    +
    bool addGroupAdmins(string domainId,
                         string groupId,
                         list<string> adminIds)
         throws sharing_models.SharingRegistryException
    -

    API method to add Admin for a group

    -

    Function: SharingRegistryService.removeGroupAdmins

    -
    bool removeGroupAdmins(string domainId,
    +
    +

    API method to add Admin for a group

    +

    +
    +
    +

    Function: SharingRegistryService.removeGroupAdmins

    +
    bool removeGroupAdmins(string domainId,
                            string groupId,
                            list<string> adminIds)
         throws sharing_models.SharingRegistryException
    -

    API method to remove Admin for a group

    -

    Function: SharingRegistryService.hasAdminAccess

    -
    bool hasAdminAccess(string domainId,
    +
    +

    API method to remove Admin for a group

    +

    +
    +
    +

    Function: SharingRegistryService.hasAdminAccess

    +
    bool hasAdminAccess(string domainId,
                         string groupId,
                         string adminId)
         throws sharing_models.SharingRegistryException
    -

    API method to check whether the user has Admin access for the group

    -

    Function: SharingRegistryService.hasOwnerAccess

    -
    bool hasOwnerAccess(string domainId,
    +
    +

    API method to check whether the user has Admin access for the group

    +

    +
    +
    +

    Function: SharingRegistryService.hasOwnerAccess

    +
    bool hasOwnerAccess(string domainId,
                         string groupId,
                         string ownerId)
         throws sharing_models.SharingRegistryException
    -

    API method to check whether the user has Admin access for the group

    -

    Function: SharingRegistryService.getGroupMembersOfTypeUser

    -
    list<sharing_models.User> getGroupMembersOfTypeUser(string domainId,
    +
    +

    API method to check whether the user has Admin access for the group

    +

    +
    +
    +

    Function: + SharingRegistryService.getGroupMembersOfTypeUser

    +
    list<sharing_models.User> getGroupMembersOfTypeUser(string domainId,
                                                         string groupId,
                                                         i32 offset,
                                                         i32 limit)
         throws sharing_models.SharingRegistryException
    -

    API method to get list of child users in a group. Only the direct members will be returned.

    -

    Function: SharingRegistryService.getGroupMembersOfTypeGroup

    -
    list<sharing_models.UserGroup> getGroupMembersOfTypeGroup(string domainId,
    +
    +

    API method to get list of child users in a group. Only the direct members will be returned.

    +

    +
    +
    +

    Function: + SharingRegistryService.getGroupMembersOfTypeGroup

    +
    list<sharing_models.UserGroup> getGroupMembersOfTypeGroup(string domainId,
                                                               string groupId,
                                                               i32 offset,
                                                               i32 limit)
         throws sharing_models.SharingRegistryException
    -

    API method to get list of child groups in a group. Only the direct members will be returned.

    -

    Function: SharingRegistryService.addChildGroupsToParentGroup

    -
    bool addChildGroupsToParentGroup(string domainId,
    +
    +

    API method to get list of child groups in a group. Only the direct members will be returned.

    +

    +
    +
    +

    Function: + SharingRegistryService.addChildGroupsToParentGroup

    +
    bool addChildGroupsToParentGroup(string domainId,
                                      list<string> childIds,
                                      string groupId)
         throws sharing_models.SharingRegistryException
    -

    API method to add a child group to a parent group.

    -

    Function: SharingRegistryService.removeChildGroupFromParentGroup

    -
    bool removeChildGroupFromParentGroup(string domainId,
    +
    +

    API method to add a child group to a parent group.

    +

    +
    +
    +

    Function: + SharingRegistryService.removeChildGroupFromParentGroup

    +
    bool removeChildGroupFromParentGroup(string domainId,
                                          string childId,
                                          string groupId)
         throws sharing_models.SharingRegistryException
    -

    API method to remove a child group from parent group.

    -

    Function: SharingRegistryService.getAllMemberGroupsForUser

    -
    list<sharing_models.UserGroup> getAllMemberGroupsForUser(string domainId,
    +
    +

    API method to remove a child group from parent group.

    +

    +
    +
    +

    Function: + SharingRegistryService.getAllMemberGroupsForUser

    +
    list<sharing_models.UserGroup> getAllMemberGroupsForUser(string domainId,
                                                              string userId)
         throws sharing_models.SharingRegistryException
    -

    Function: SharingRegistryService.createEntityType

    -
    string createEntityType(sharing_models.EntityType entityType)
    +
    +
    +
    +

    Function: SharingRegistryService.createEntityType

    +
    string createEntityType(sharing_models.EntityType entityType)
         throws sharing_models.SharingRegistryException, sharing_models.DuplicateEntryException
    -

    API method to create a new entity type

    -

    Function: SharingRegistryService.updateEntityType

    -
    bool updateEntityType(sharing_models.EntityType entityType)
    -    throws sharing_models.SharingRegistryException
    -

    API method to update entity type

    -

    Function: SharingRegistryService.isEntityTypeExists

    -
    bool isEntityTypeExists(string domainId,
    +
    +

    API method to create a new entity type

    +

    +
    +
    +

    Function: SharingRegistryService.updateEntityType

    +
    bool updateEntityType(sharing_models.EntityType entityType)
    +    throws sharing_models.SharingRegistryException
    +
    +

    API method to update entity type

    +

    +
    +
    +

    Function: SharingRegistryService.isEntityTypeExists +

    +
    bool isEntityTypeExists(string domainId,
                             string entityTypeId)
         throws sharing_models.SharingRegistryException
    -

    API method to check EntityType Exists

    -

    Function: SharingRegistryService.deleteEntityType

    -
    bool deleteEntityType(string domainId,
    +
    +

    API method to check EntityType Exists

    +

    +
    +
    +

    Function: SharingRegistryService.deleteEntityType

    +
    bool deleteEntityType(string domainId,
                           string entityTypeId)
         throws sharing_models.SharingRegistryException
    -

    API method to delete entity type

    -

    Function: SharingRegistryService.getEntityType

    -
    sharing_models.EntityType getEntityType(string domainId,
    +
    +

    API method to delete entity type

    +

    +
    +
    +

    Function: SharingRegistryService.getEntityType

    +
    sharing_models.EntityType getEntityType(string domainId,
                                             string entityTypeId)
         throws sharing_models.SharingRegistryException
    -

    API method to get an entity type

    -

    Function: SharingRegistryService.getEntityTypes

    -
    list<sharing_models.EntityType> getEntityTypes(string domainId,
    +
    +

    API method to get an entity type

    +

    +
    +
    +

    Function: SharingRegistryService.getEntityTypes

    +
    list<sharing_models.EntityType> getEntityTypes(string domainId,
                                                    i32 offset,
                                                    i32 limit)
         throws sharing_models.SharingRegistryException
    -

    API method to get entity types in a domainId.

    -

    Function: SharingRegistryService.createEntity

    -
    string createEntity(sharing_models.Entity entity)
    -    throws sharing_models.SharingRegistryException
    -

    API method to register new entity

    -

    Function: SharingRegistryService.updateEntity

    -
    bool updateEntity(sharing_models.Entity entity)
    -    throws sharing_models.SharingRegistryException
    -

    API method to update entity

    -

    Function: SharingRegistryService.isEntityExists

    -
    bool isEntityExists(string domainId,
    +
    +

    API method to get entity types in a domainId.

    +

    +
    +
    +

    Function: SharingRegistryService.createEntity

    +
    string createEntity(sharing_models.Entity entity)
    +    throws sharing_models.SharingRegistryException
    +
    +

    API method to register new entity

    +

    +
    +
    +

    Function: SharingRegistryService.updateEntity

    +
    bool updateEntity(sharing_models.Entity entity)
    +    throws sharing_models.SharingRegistryException
    +
    +

    API method to update entity

    +

    +
    +
    +

    Function: SharingRegistryService.isEntityExists

    +
    bool isEntityExists(string domainId,
                         string entityId)
         throws sharing_models.SharingRegistryException
    -

    API method to check Entity Exists

    -

    Function: SharingRegistryService.deleteEntity

    -
    bool deleteEntity(string domainId,
    +
    +

    API method to check Entity Exists

    +

    +
    +
    +

    Function: SharingRegistryService.deleteEntity

    +
    bool deleteEntity(string domainId,
                       string entityId)
         throws sharing_models.SharingRegistryException
    -

    API method to delete entity

    -

    Function: SharingRegistryService.getEntity

    -
    sharing_models.Entity getEntity(string domainId,
    +
    +

    API method to delete entity

    +

    +
    +
    +

    Function: SharingRegistryService.getEntity

    +
    sharing_models.Entity getEntity(string domainId,
                                     string entityId)
         throws sharing_models.SharingRegistryException
    -

    API method to get entity

    -

    Function: SharingRegistryService.searchEntities

    -
    list<sharing_models.Entity> searchEntities(string domainId,
    +
    +

    API method to get entity

    +

    +
    +
    +

    Function: SharingRegistryService.searchEntities

    +
    list<sharing_models.Entity> searchEntities(string domainId,
                                                string userId,
                                                list<sharing_models.SearchCriteria> filters,
                                                i32 offset,
                                                i32 limit)
         throws sharing_models.SharingRegistryException
    -

    API method to search entities

    -

    Function: SharingRegistryService.getListOfSharedUsers

    -
    list<sharing_models.User> getListOfSharedUsers(string domainId,
    +
    +

    API method to search entities

    +

    +
    +
    +

    Function: + SharingRegistryService.getListOfSharedUsers

    +
    list<sharing_models.User> getListOfSharedUsers(string domainId,
                                                    string entityId,
                                                    string permissionTypeId)
         throws sharing_models.SharingRegistryException
    -

    API method to get a list of shared users given the entity id

    -

    Function: SharingRegistryService.getListOfDirectlySharedUsers

    -
    list<sharing_models.User> getListOfDirectlySharedUsers(string domainId,
    +
    +

    API method to get a list of shared users given the entity id

    +

    +
    +
    +

    Function: + SharingRegistryService.getListOfDirectlySharedUsers

    +
    list<sharing_models.User> getListOfDirectlySharedUsers(string domainId,
                                                            string entityId,
                                                            string permissionTypeId)
         throws sharing_models.SharingRegistryException
    -

    API method to get a list of shared users given the entity id where the sharing type is directly applied

    -

    Function: SharingRegistryService.getListOfSharedGroups

    -
    list<sharing_models.UserGroup> getListOfSharedGroups(string domainId,
    +
    +

    API method to get a list of shared users given the entity id where the sharing type is directly applied

    +

    +
    +
    +

    Function: + SharingRegistryService.getListOfSharedGroups

    +
    list<sharing_models.UserGroup> getListOfSharedGroups(string domainId,
                                                          string entityId,
                                                          string permissionTypeId)
         throws sharing_models.SharingRegistryException
    -

    API method to get a list of shared groups given the entity id

    -

    Function: SharingRegistryService.getListOfDirectlySharedGroups

    -
    list<sharing_models.UserGroup> getListOfDirectlySharedGroups(string domainId,
    +
    +

    API method to get a list of shared groups given the entity id

    +

    +
    +
    +

    Function: + SharingRegistryService.getListOfDirectlySharedGroups

    +
    list<sharing_models.UserGroup> getListOfDirectlySharedGroups(string domainId,
                                                                  string entityId,
                                                                  string permissionTypeId)
         throws sharing_models.SharingRegistryException
    -

    API method to get a list of directly shared groups given the entity id where the sharing type is directly applied

    -

    Function: SharingRegistryService.createPermissionType

    -
    string createPermissionType(sharing_models.PermissionType permissionType)
    +
    +

    API method to get a list of directly shared groups given the entity id where the sharing type is directly applied

    +

    +
    +
    +

    Function: + SharingRegistryService.createPermissionType

    +
    string createPermissionType(sharing_models.PermissionType permissionType)
         throws sharing_models.SharingRegistryException, sharing_models.DuplicateEntryException
    -

    API method to create permission type

    -

    Function: SharingRegistryService.updatePermissionType

    -
    bool updatePermissionType(sharing_models.PermissionType permissionType)
    -    throws sharing_models.SharingRegistryException
    -

    API method to update permission type

    -

    Function: SharingRegistryService.isPermissionExists

    -
    bool isPermissionExists(string dimainId,
    +
    +

    API method to create permission type

    +

    +
    +
    +

    Function: + SharingRegistryService.updatePermissionType

    +
    bool updatePermissionType(sharing_models.PermissionType permissionType)
    +    throws sharing_models.SharingRegistryException
    +
    +

    API method to update permission type

    +

    +
    +
    +

    Function: SharingRegistryService.isPermissionExists +

    +
    bool isPermissionExists(string dimainId,
                             string permissionId)
         throws sharing_models.SharingRegistryException
    -

    API method to check Permission Exists

    -

    Function: SharingRegistryService.deletePermissionType

    -
    bool deletePermissionType(string domainId,
    +
    +

    API method to check Permission Exists

    +

    +
    +
    +

    Function: + SharingRegistryService.deletePermissionType

    +
    bool deletePermissionType(string domainId,
                               string permissionTypeId)
         throws sharing_models.SharingRegistryException
    -

    API method to delete permission type

    -

    Function: SharingRegistryService.getPermissionType

    -
    sharing_models.PermissionType getPermissionType(string domainId,
    +
    +

    API method to delete permission type

    +

    +
    +
    +

    Function: SharingRegistryService.getPermissionType

    +
    sharing_models.PermissionType getPermissionType(string domainId,
                                                     string permissionTypeId)
         throws sharing_models.SharingRegistryException
    -

    API method to get permission type

    -

    Function: SharingRegistryService.getPermissionTypes

    -
    list<sharing_models.PermissionType> getPermissionTypes(string domainId,
    +
    +

    API method to get permission type

    +

    +
    +
    +

    Function: SharingRegistryService.getPermissionTypes +

    +
    list<sharing_models.PermissionType> getPermissionTypes(string domainId,
                                                            i32 offset,
                                                            i32 limit)
         throws sharing_models.SharingRegistryException
    -

    API method to get list of permission types in a given domainId.

    -

    Function: SharingRegistryService.shareEntityWithUsers

    -
    bool shareEntityWithUsers(string domainId,
    +
    +

    API method to get list of permission types in a given domainId.

    +

    +
    +
    +

    Function: + SharingRegistryService.shareEntityWithUsers

    +
    bool shareEntityWithUsers(string domainId,
                               string entityId,
                               list<string> userList,
                               string permissionTypeId,
                               bool cascadePermission)
         throws sharing_models.SharingRegistryException
    -

    API method to share an entity with users

    -

    Function: SharingRegistryService.revokeEntitySharingFromUsers

    -
    bool revokeEntitySharingFromUsers(string domainId,
    +
    +

    API method to share an entity with users

    +

    +
    +
    +

    Function: + SharingRegistryService.revokeEntitySharingFromUsers

    +
    bool revokeEntitySharingFromUsers(string domainId,
                                       string entityId,
                                       list<string> userList,
                                       string permissionTypeId)
         throws sharing_models.SharingRegistryException
    -

    API method to revoke sharing from a list of users

    -

    Function: SharingRegistryService.shareEntityWithGroups

    -
    bool shareEntityWithGroups(string domainId,
    +
    +

    API method to revoke sharing from a list of users

    +

    +
    +
    +

    Function: + SharingRegistryService.shareEntityWithGroups

    +
    bool shareEntityWithGroups(string domainId,
                                string entityId,
                                list<string> groupList,
                                string permissionTypeId,
                                bool cascadePermission)
         throws sharing_models.SharingRegistryException
    -

    API method to share an entity with list of groups

    -

    Function: SharingRegistryService.revokeEntitySharingFromGroups

    -
    bool revokeEntitySharingFromGroups(string domainId,
    +
    +

    API method to share an entity with list of groups

    +

    +
    +
    +

    Function: + SharingRegistryService.revokeEntitySharingFromGroups

    +
    bool revokeEntitySharingFromGroups(string domainId,
                                        string entityId,
                                        list<string> groupList,
                                        string permissionTypeId)
         throws sharing_models.SharingRegistryException
    -

    API method to revoke sharing from list of users

    -

    Function: SharingRegistryService.userHasAccess

    -
    bool userHasAccess(string domainId,
    +
    +

    API method to revoke sharing from list of users

    +

    +
    +
    +

    Function: SharingRegistryService.userHasAccess

    +
    bool userHasAccess(string domainId,
                        string userId,
                        string entityId,
                        string permissionTypeId)
         throws sharing_models.SharingRegistryException
    -

    API method to check whether a user has access to a specific entity

    -

    +
    +

    API method to check whether a user has access to a specific entity

    +

    +
    +
    + + + \ No newline at end of file diff --git a/examples/sharing-service-docs/api-docs/sharing_models.html b/examples/sharing-service-docs/api-docs/sharing_models.html index f44eb9f937c..33d4ff2cf1f 100644 --- a/examples/sharing-service-docs/api-docs/sharing_models.html +++ b/examples/sharing-service-docs/api-docs/sharing_models.html @@ -1,70 +1,128 @@ - - + + + - - -Thrift module: sharing_models -
    -

    Thrift module: sharing_models

    - - - - - -
    ModuleServicesData typesConstants
    sharing_modelsDomain
    -DuplicateEntryException
    -Entity
    -EntitySearchField
    -EntityType
    -GroupAdmin
    -GroupCardinality
    -GroupChildType
    -GroupMembership
    -GroupType
    -PermissionType
    -SearchCondition
    -SearchCriteria
    -Sharing
    -SharingRegistryException
    -SharingType
    -User
    -UserGroup
    -
    DO_NOT_SET_AT_CLIENTS_ID
    -
    -

    Constants

    - -
    ConstantTypeValue
    DO_NOT_SET_AT_CLIENTS_IDstring"DO_NOT_SET_AT_CLIENTS_ID"

    Enumerations

    -

    Enumeration: GroupCardinality

    -

    This is an system internal enum used to define single user groups and multi users groups. Every user is also + + + Thrift module: sharing_models + + + +

    +

    Thrift module: sharing_models

    + + + + + + + + + + + + + +
    ModuleServicesData typesConstants
    sharing_modelsDomain
    + DuplicateEntryException
    + Entity
    + EntitySearchField
    + EntityType
    + GroupAdmin
    + GroupCardinality
    + GroupChildType
    + GroupMembership
    + GroupType
    + PermissionType
    + SearchCondition
    + SearchCriteria
    + Sharing
    + SharingRegistryException
    + SharingType
    + User
    + UserGroup
    +
    DO_NOT_SET_AT_CLIENTS_ID
    +
    +
    +

    Constants

    + + + + + + + + + + + +
    ConstantTypeValue
    DO_NOT_SET_AT_CLIENTS_IDstring"DO_NOT_SET_AT_CLIENTS_ID"
    +
    +

    Enumerations

    +
    +

    Enumeration: GroupCardinality

    +

    This is an system internal enum used to define single user groups and multi users groups. Every user is also considered as a group in it's own right for implementation ease

    -


    - - -
    SINGLE_USER0 -
    MULTI_USER1 -
    -

    Enumeration: GroupType

    -

    Group types can be either user level or domain level groups.

    +


    + + + + + + + + + + + +
    SINGLE_USER0 +
    MULTI_USER1 +
    +
    +
    +

    Enumeration: GroupType

    +

    Group types can be either user level or domain level groups.

    -


    - - -
    DOMAIN_LEVEL_GROUP0 -
    USER_LEVEL_GROUP1 -
    -

    Enumeration: GroupChildType

    -

    System internal data type to match group child types

    +


    + + + + + + + + + + + +
    DOMAIN_LEVEL_GROUP0 +
    USER_LEVEL_GROUP1 +
    +
    +
    +

    Enumeration: GroupChildType

    +

    System internal data type to match group child types

    -


    - - -
    USER0 -
    GROUP1 -
    -

    Enumeration: EntitySearchField

    -

    This list of fields that can be used to search entities

    +


    + + + + + + + + + + + +
    USER0 +
    GROUP1 +
    +
    +
    +

    Enumeration: EntitySearchField

    +

    This list of fields that can be used to search entities

  • NAME : Name of the entity
  • DESCRIPTION : Description of the entity
  • FULL_TEXT : Full text field of the entity
  • @@ -74,71 +132,208 @@

    Thrift module: sharing_models

  • UPDATED_TIME : Updated time of the entity
  • SHARED_COUNT : Number of directly shared users and groups
  • -


    - - - - - - - - - - -
    NAME0 -
    DESCRIPTION1 -
    FULL_TEXT2 -
    PARRENT_ENTITY_ID3 -
    OWNER_ID4 -
    PERMISSION_TYPE_ID5 -
    CREATED_TIME6 -
    UPDATED_TIME7 -
    ENTITY_TYPE_ID8 -
    SHARED_COUNT9 -
    -

    Enumeration: SearchCondition

    -

    Different search operators that can be used with the entity search fields

    +


    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NAME0 +
    DESCRIPTION1 +
    FULL_TEXT2 +
    PARRENT_ENTITY_ID3 +
    OWNER_ID4 +
    PERMISSION_TYPE_ID5 +
    CREATED_TIME6 +
    UPDATED_TIME7 +
    ENTITY_TYPE_ID8 +
    SHARED_COUNT9 +
    +
    +
    +

    Enumeration: SearchCondition

    +

    Different search operators that can be used with the entity search fields

  • EQUAL : Simply matches for equality. Applicable for name, and parent entity id
  • LIKE : Check for the condition %$FIELD% condition. Applicable for name, and description
  • FULL_TEXT : Does a full text search. Only applicable for the FULL_TEXT field.
  • GTE : Greater than or equal. Only applicable for created time, updated time and shared count.
  • LTE : Less than or equal. Only applicable for created time, updated time and shared count.
  • -


    - - - - - - -
    EQUAL0 -
    LIKE1 -
    FULL_TEXT2 -
    GTE3 -
    LTE4 -
    NOT5 -
    -

    Enumeration: SharingType

    -

    This is an internal enum type for managing sharings

    +


    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EQUAL0 +
    LIKE1 +
    FULL_TEXT2 +
    GTE3 +
    LTE4 +
    NOT5 +
    +
    +
    +

    Enumeration: SharingType

    +

    This is an internal enum type for managing sharings

    -


    - - - -
    DIRECT_NON_CASCADING0 -
    DIRECT_CASCADING1 -
    INDIRECT_CASCADING2 -
    -

    Data structures

    -

    Struct: Domain

    - - - - - - - -
    KeyFieldTypeDescriptionRequirednessDefault value
    1domainIdstringoptional"DO_NOT_SET_AT_CLIENTS_ID"
    2namestringoptional
    3descriptionstringoptional
    4createdTimei64optional
    5updatedTimei64optional
    6initialUserGroupIdstringoptional

    Domain is the entity that enables multi-tenency in this componenet. Every tenant will be +



    + + + + + + + + + + + + + + + + +
    DIRECT_NON_CASCADING0 +
    DIRECT_CASCADING1 +
    INDIRECT_CASCADING2 +
    +
    +
    +

    Data structures

    +
    +

    Struct: Domain

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    KeyFieldTypeDescriptionRequirednessDefault value
    1domainIdstringoptional"DO_NOT_SET_AT_CLIENTS_ID"
    2namestringoptional
    3descriptionstringoptional
    4createdTimei64optional
    5updatedTimei64optional
    6initialUserGroupIdstringoptional

    +

    Domain is the entity that enables multi-tenency in this componenet. Every tenant will be operating separately it's own silo which is identified by the domain id. In the current implementation domain id will be same as the domain name

  • domainId : Will be generated by the server based on the domain name
  • @@ -148,18 +343,93 @@

    Thrift module: sharing_models

  • updatedTime : Will be set by the system
  • initialUserGroupId : New users will automatically be added to this group
  • -

    Struct: User

    - - - - - - - - - - -
    KeyFieldTypeDescriptionRequirednessDefault value
    1userIdstringoptional
    2domainIdstringoptional
    3userNamestringoptional
    4firstNamestringoptional
    5lastNamestringoptional
    6emailstringoptional
    7iconbinaryoptional
    8createdTimei64optional
    9updatedTimei64optional

    User is the model used to register a user in the system. Minimal user information will be required to provide +


    +
    +
    +

    Struct: User

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    KeyFieldTypeDescriptionRequirednessDefault value
    1userIdstringoptional
    2domainIdstringoptional
    3userNamestringoptional
    4firstNamestringoptional
    5lastNamestringoptional
    6emailstringoptional
    7iconbinaryoptional
    8createdTimei64optional
    9updatedTimei64optional

    +

    User is the model used to register a user in the system. Minimal user information will be required to provide regarding the user.

  • userId : User id provided by the client
  • domainId : Domain id for that user
  • @@ -171,24 +441,138 @@

    Thrift module: sharing_models

  • createdTime : If client provides this value then the system will use it if not the current time will be set
  • updatedTime : If client provides this value then the system will use it if not the current time will be set
  • -

    Struct: GroupAdmin

    - - - - -
    KeyFieldTypeDescriptionRequirednessDefault value
    1groupIdstringoptional
    2domainIdstringoptional
    3adminIdstringoptional

    Struct: UserGroup

    - - - - - - - - - - - -
    KeyFieldTypeDescriptionRequirednessDefault value
    1groupIdstringoptional
    2domainIdstringoptional
    3namestringoptional
    4descriptionstringoptional
    5ownerIdstringoptional
    6groupTypeGroupTypeoptional
    7groupCardinalityGroupCardinalityoptional
    8createdTimei64optional
    9updatedTimei64optional
    10groupAdminslist<GroupAdmin>optional

    User group is a collection of users.

    +

    +
    +
    +

    Struct: GroupAdmin

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    KeyFieldTypeDescriptionRequirednessDefault value
    1groupIdstringoptional
    2domainIdstringoptional
    3adminIdstringoptional

    +
    +
    +

    Struct: UserGroup

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    KeyFieldTypeDescriptionRequirednessDefault value
    1groupIdstringoptional
    2domainIdstringoptional
    3namestringoptional
    4descriptionstringoptional
    5ownerIdstringoptional
    6groupTypeGroupTypeoptional
    7groupCardinalityGroupCardinalityoptional
    8createdTimei64optional
    9updatedTimei64optional
    10groupAdminslist<GroupAdmin>optional

    +

    User group is a collection of users.

  • groupId : Group id provided by the client
  • domainId : Domain id for this user group
  • name : Name for the user group. should be one word
  • @@ -200,25 +584,133 @@

    Thrift module: sharing_models

  • updatedTime : Will be set by the system
  • groupAdmins : Admins for the group
  • -

    Struct: GroupMembership

    - - - - - - - -
    KeyFieldTypeDescriptionRequirednessDefault value
    1parentIdstringoptional
    2childIdstringoptional
    3domainIdstringoptional
    4childTypeGroupChildTypeoptional
    5createdTimei64optional
    6updatedTimei64optional

    System internal data type to map group memberships

    +

    +
    +
    +

    Struct: GroupMembership

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    KeyFieldTypeDescriptionRequirednessDefault value
    1parentIdstringoptional
    2childIdstringoptional
    3domainIdstringoptional
    4childTypeGroupChildTypeoptional
    5createdTimei64optional
    6updatedTimei64optional

    +

    System internal data type to map group memberships

    -

    Struct: EntityType

    - - - - - - - -
    KeyFieldTypeDescriptionRequirednessDefault value
    1entityTypeIdstringoptional
    2domainIdstringoptional
    3namestringoptional
    4descriptionstringoptional
    5createdTimei64optional
    6updatedTimei64optional

    client defined entity types

    +

    +
    +
    +

    Struct: EntityType

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    KeyFieldTypeDescriptionRequirednessDefault value
    1entityTypeIdstringoptional
    2domainIdstringoptional
    3namestringoptional
    4descriptionstringoptional
    5createdTimei64optional
    6updatedTimei64optional

    +

    client defined entity types

  • entityTypeId : Entity type id provided by the client
  • domainId : Domain id of the domain.
  • name : Name for the entity type. Should be a single word.
  • @@ -226,32 +718,168 @@

    Thrift module: sharing_models

  • createdTime : Will be set by the system
  • updatedTime : Will be set by the system
  • -

    Struct: SearchCriteria

    - - - - -
    KeyFieldTypeDescriptionRequirednessDefault value
    1searchFieldEntitySearchFieldoptional
    2valuestringoptional
    3searchConditionSearchConditionoptional

    Container object for search criteria

    +

    +
    +
    +

    Struct: SearchCriteria

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    KeyFieldTypeDescriptionRequirednessDefault value
    1searchFieldEntitySearchFieldoptional
    2valuestringoptional
    3searchConditionSearchConditionoptional

    +

    Container object for search criteria

  • searchField : Entity search field
  • value : Search value
  • searchCondition : EQUAL, LIKE etc..
  • -

    Struct: Entity

    - - - - - - - - - - - - - - -
    KeyFieldTypeDescriptionRequirednessDefault value
    1entityIdstringoptional
    2domainIdstringoptional
    3entityTypeIdstringoptional
    4ownerIdstringoptional
    5parentEntityIdstringoptional
    6namestringoptional
    7descriptionstringoptional
    8binaryDatabinaryoptional
    9fullTextstringoptional
    10sharedCounti64optional0
    11originalEntityCreationTimei64optional
    12createdTimei64optional
    13updatedTimei64optional

    Entity object which is used to register an entity in the system.

    +

    +
    +
    +

    Struct: Entity

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    KeyFieldTypeDescriptionRequirednessDefault value
    1entityIdstringoptional
    2domainIdstringoptional
    3entityTypeIdstringoptional
    4ownerIdstringoptional
    5parentEntityIdstringoptional
    6namestringoptional
    7descriptionstringoptional
    8binaryDatabinaryoptional
    9fullTextstringoptional
    10sharedCounti64optional0
    11originalEntityCreationTimei64optional
    12createdTimei64optional
    13updatedTimei64optional

    +

    Entity object which is used to register an entity in the system.

  • entityId : Entity id provided by the client
  • domainId : Domain id
  • entityTypeId : Entity type id
  • @@ -266,15 +894,69 @@

    Thrift module: sharing_models

  • createdTime : Will be set by the system
  • updatedTime : Will be set by the system
  • -

    Struct: PermissionType

    - - - - - - - -
    KeyFieldTypeDescriptionRequirednessDefault value
    1permissionTypeIdstringoptional
    2domainIdstringoptional
    3namestringoptional
    4descriptionstringoptional
    5createdTimei64optional
    6updatedTimei64optional

    Object for creating client defined permission type

    +

    +
    +
    +

    Struct: PermissionType

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    KeyFieldTypeDescriptionRequirednessDefault value
    1permissionTypeIdstringoptional
    2domainIdstringoptional
    3namestringoptional
    4descriptionstringoptional
    5createdTimei64optional
    6updatedTimei64optional

    +

    Object for creating client defined permission type

  • permissionTypeId : Permission type id provided by the client
  • domainId : Domain id
  • name : Single word name for the permission
  • @@ -282,29 +964,140 @@

    Thrift module: sharing_models

  • createdTime : Will be set by the system
  • updatedTime : Will be set by the system
  • -

    Struct: Sharing

    - - - - - - - - - -
    KeyFieldTypeDescriptionRequirednessDefault value
    1permissionTypeIdstringoptional
    2entityIdstringoptional
    3groupIdstringoptional
    4sharingTypeSharingTypeoptional
    5domainIdstringoptional
    6inheritedParentIdstringoptional
    7createdTimei64optional
    8updatedTimei64optional

    This is an internal enum type for managing sharings

    +

    +
    +
    +

    Struct: Sharing

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    KeyFieldTypeDescriptionRequirednessDefault value
    1permissionTypeIdstringoptional
    2entityIdstringoptional
    3groupIdstringoptional
    4sharingTypeSharingTypeoptional
    5domainIdstringoptional
    6inheritedParentIdstringoptional
    7createdTimei64optional
    8updatedTimei64optional

    +

    This is an internal enum type for managing sharings

    -

    Exception: SharingRegistryException

    - - -
    KeyFieldTypeDescriptionRequirednessDefault value
    1messagestringrequired

    Exception model used in the sharing registry service

    +

    +
    +
    +

    Exception: SharingRegistryException

    + + + + + + + + + + + + + + + + + +
    KeyFieldTypeDescriptionRequirednessDefault value
    1messagestringrequired

    +

    Exception model used in the sharing registry service

    -

    Exception: DuplicateEntryException

    - - -
    KeyFieldTypeDescriptionRequirednessDefault value
    1messagestringrequired

    This exception is thrown when you try to save a duplicate entity that already exists
    +

    +
    +
    +

    Exception: DuplicateEntryException

    + + + + + + + + + + + + + + + + + +
    KeyFieldTypeDescriptionRequirednessDefault value
    1messagestringrequired

    +
    This exception is thrown when you try to save a duplicate entity that already exists
       in the database.
     
       message: contains the associated error message
     
    -

    +

    +
    +
    + + + \ No newline at end of file diff --git a/examples/sharing-service-docs/api-docs/style.css b/examples/sharing-service-docs/api-docs/style.css index 34fd9d7d248..be9d05bd0c3 100644 --- a/examples/sharing-service-docs/api-docs/style.css +++ b/examples/sharing-service-docs/api-docs/style.css @@ -3,182 +3,1094 @@ * * Copyright 2012 Twitter, Inc * Licensed under the Apache License v2.0 - * http://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Designed and built with all the love in the world @twitter by @mdo and @fat. */ -.clearfix{*zoom:1;}.clearfix:before,.clearfix:after{display:table;content:"";} -.clearfix:after{clear:both;} -.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;} -.input-block-level{display:block;width:100%;min-height:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;} -article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block;} -audio,canvas,video{display:inline-block;*display:inline;*zoom:1;} -audio:not([controls]){display:none;} -html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;} -a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;} -a:hover,a:active{outline:0;} -sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline;} -sup{top:-0.5em;} -sub{bottom:-0.25em;} -img{max-width:100%;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic;} -button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle;} -button,input{*overflow:visible;line-height:normal;} -button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0;} -button,input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button;} -input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield;} -input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none;} -textarea{overflow:auto;vertical-align:top;} -body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:18px;color:#333333;background-color:#ffffff;} -a{color:#0088cc;text-decoration:none;} -a:hover{color:#005580;text-decoration:underline;} -.row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";} -.row:after{clear:both;} -[class*="span"]{float:left;margin-left:20px;} -.container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px;} -.span12{width:940px;} -.span11{width:860px;} -.span10{width:780px;} -.span9{width:700px;} -.span8{width:620px;} -.span7{width:540px;} -.span6{width:460px;} -.span5{width:380px;} -.span4{width:300px;} -.span3{width:220px;} -.span2{width:140px;} -.span1{width:60px;} -.offset12{margin-left:980px;} -.offset11{margin-left:900px;} -.offset10{margin-left:820px;} -.offset9{margin-left:740px;} -.offset8{margin-left:660px;} -.offset7{margin-left:580px;} -.offset6{margin-left:500px;} -.offset5{margin-left:420px;} -.offset4{margin-left:340px;} -.offset3{margin-left:260px;} -.offset2{margin-left:180px;} -.offset1{margin-left:100px;} -.row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";} -.row-fluid:after{clear:both;} -.row-fluid [class*="span"]{display:block;width:100%;min-height:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.127659574%;*margin-left:2.0744680846382977%;} -.row-fluid [class*="span"]:first-child{margin-left:0;} -.row-fluid .span12{width:99.99999998999999%;*width:99.94680850063828%;} -.row-fluid .span11{width:91.489361693%;*width:91.4361702036383%;} -.row-fluid .span10{width:82.97872339599999%;*width:82.92553190663828%;} -.row-fluid .span9{width:74.468085099%;*width:74.4148936096383%;} -.row-fluid .span8{width:65.95744680199999%;*width:65.90425531263828%;} -.row-fluid .span7{width:57.446808505%;*width:57.3936170156383%;} -.row-fluid .span6{width:48.93617020799999%;*width:48.88297871863829%;} -.row-fluid .span5{width:40.425531911%;*width:40.3723404216383%;} -.row-fluid .span4{width:31.914893614%;*width:31.8617021246383%;} -.row-fluid .span3{width:23.404255317%;*width:23.3510638276383%;} -.row-fluid .span2{width:14.89361702%;*width:14.8404255306383%;} -.row-fluid .span1{width:6.382978723%;*width:6.329787233638298%;} -.container{margin-right:auto;margin-left:auto;*zoom:1;}.container:before,.container:after{display:table;content:"";} -.container:after{clear:both;} -.container-fluid{padding-right:20px;padding-left:20px;*zoom:1;}.container-fluid:before,.container-fluid:after{display:table;content:"";} -.container-fluid:after{clear:both;} -p{margin:0 0 9px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:18px;}p small{font-size:11px;color:#999999;} -.lead{margin-bottom:18px;font-size:20px;font-weight:200;line-height:27px;} -h1,h2,h3,h4,h5,h6{margin:0;font-family:inherit;font-weight:bold;color:inherit;text-rendering:optimizelegibility;}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;color:#999999;} -h1{font-size:30px;line-height:36px;}h1 small{font-size:18px;} -h2{font-size:24px;line-height:36px;}h2 small{font-size:18px;} -h3{font-size:18px;line-height:27px;}h3 small{font-size:14px;} -h4,h5,h6{line-height:18px;} -h4{font-size:14px;}h4 small{font-size:12px;} -h5{font-size:12px;} -h6{font-size:11px;color:#999999;text-transform:uppercase;} -.page-header{padding-bottom:17px;margin:18px 0;border-bottom:1px solid #eeeeee;} -.page-header h1{line-height:1;} -ul,ol{padding:0;margin:0 0 9px 25px;} -ul ul,ul ol,ol ol,ol ul{margin-bottom:0;} -ul{list-style:disc;} -ol{list-style:decimal;} -li{line-height:18px;} -ul.unstyled,ol.unstyled{margin-left:0;list-style:none;} -dl{margin-bottom:18px;} -dt,dd{line-height:18px;} -dt{font-weight:bold;line-height:17px;} -dd{margin-left:9px;} -.dl-horizontal dt{float:left;width:120px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;} -.dl-horizontal dd{margin-left:130px;} -hr{margin:18px 0;border:0;border-top:1px solid #eeeeee;border-bottom:1px solid #ffffff;} -strong{font-weight:bold;} -em{font-style:italic;} -.muted{color:#999999;} -abbr[title]{cursor:help;border-bottom:1px dotted #ddd;} -abbr.initialism{font-size:90%;text-transform:uppercase;} -blockquote{padding:0 0 0 15px;margin:0 0 18px;border-left:5px solid #eeeeee;}blockquote p{margin-bottom:0;font-size:16px;font-weight:300;line-height:22.5px;} -blockquote small{display:block;line-height:18px;color:#999999;}blockquote small:before{content:'\2014 \00A0';} -blockquote.pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #eeeeee;border-left:0;}blockquote.pull-right p,blockquote.pull-right small{text-align:right;} -q:before,q:after,blockquote:before,blockquote:after{content:"";} -address{display:block;margin-bottom:18px;font-style:normal;line-height:18px;} -small{font-size:100%;} -cite{font-style:normal;} -code,pre{padding:0 3px 2px;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;font-size:12px;color:#333333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} -code{padding:2px 4px;color:#d14;background-color:#f7f7f9;border:1px solid #e1e1e8;} -pre{display:block;padding:8.5px;margin:0 0 9px;font-size:12.025px;line-height:18px;word-break:break-all;word-wrap:break-word;white-space:pre;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}pre.prettyprint{margin-bottom:18px;} -pre code{padding:0;color:inherit;background-color:transparent;border:0;} -.pre-scrollable{max-height:340px;overflow-y:scroll;} -.label,.badge{font-size:10.998px;font-weight:bold;line-height:14px;color:#ffffff;vertical-align:baseline;white-space:nowrap;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#999999;} -.label{padding:1px 4px 2px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} -.badge{padding:1px 9px 2px;-webkit-border-radius:9px;-moz-border-radius:9px;border-radius:9px;} -a.label:hover,a.badge:hover{color:#ffffff;text-decoration:none;cursor:pointer;} -.label-important,.badge-important{background-color:#b94a48;} -.label-important[href],.badge-important[href]{background-color:#953b39;} -.label-warning,.badge-warning{background-color:#f89406;} -.label-warning[href],.badge-warning[href]{background-color:#c67605;} -.label-success,.badge-success{background-color:#468847;} -.label-success[href],.badge-success[href]{background-color:#356635;} -.label-info,.badge-info{background-color:#3a87ad;} -.label-info[href],.badge-info[href]{background-color:#2d6987;} -.label-inverse,.badge-inverse{background-color:#333333;} -.label-inverse[href],.badge-inverse[href]{background-color:#1a1a1a;} -table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0;} -.table{width:100%;margin-bottom:18px;}.table th,.table td{padding:8px;line-height:18px;text-align:left;vertical-align:top;border-top:1px solid #dddddd;} -.table th{font-weight:bold;} -.table thead th{vertical-align:bottom;} -.table caption+thead tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child th,.table thead:first-child tr:first-child td{border-top:0;} -.table tbody+tbody{border-top:2px solid #dddddd;} -.table-condensed th,.table-condensed td{padding:4px 5px;} -.table-bordered{border:1px solid #dddddd;border-collapse:separate;*border-collapse:collapsed;border-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.table-bordered th,.table-bordered td{border-left:1px solid #dddddd;} -.table-bordered caption+thead tr:first-child th,.table-bordered caption+tbody tr:first-child th,.table-bordered caption+tbody tr:first-child td,.table-bordered colgroup+thead tr:first-child th,.table-bordered colgroup+tbody tr:first-child th,.table-bordered colgroup+tbody tr:first-child td,.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0;} -.table-bordered thead:first-child tr:first-child th:first-child,.table-bordered tbody:first-child tr:first-child td:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px;} -.table-bordered thead:first-child tr:first-child th:last-child,.table-bordered tbody:first-child tr:first-child td:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px;} -.table-bordered thead:last-child tr:last-child th:first-child,.table-bordered tbody:last-child tr:last-child td:first-child{-webkit-border-radius:0 0 0 4px;-moz-border-radius:0 0 0 4px;border-radius:0 0 0 4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;} -.table-bordered thead:last-child tr:last-child th:last-child,.table-bordered tbody:last-child tr:last-child td:last-child{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;} -.table-striped tbody tr:nth-child(odd) td,.table-striped tbody tr:nth-child(odd) th{background-color:#f9f9f9;} -.table tbody tr:hover td,.table tbody tr:hover th{background-color:#f5f5f5;} -table .span1{float:none;width:44px;margin-left:0;} -table .span2{float:none;width:124px;margin-left:0;} -table .span3{float:none;width:204px;margin-left:0;} -table .span4{float:none;width:284px;margin-left:0;} -table .span5{float:none;width:364px;margin-left:0;} -table .span6{float:none;width:444px;margin-left:0;} -table .span7{float:none;width:524px;margin-left:0;} -table .span8{float:none;width:604px;margin-left:0;} -table .span9{float:none;width:684px;margin-left:0;} -table .span10{float:none;width:764px;margin-left:0;} -table .span11{float:none;width:844px;margin-left:0;} -table .span12{float:none;width:924px;margin-left:0;} -table .span13{float:none;width:1004px;margin-left:0;} -table .span14{float:none;width:1084px;margin-left:0;} -table .span15{float:none;width:1164px;margin-left:0;} -table .span16{float:none;width:1244px;margin-left:0;} -table .span17{float:none;width:1324px;margin-left:0;} -table .span18{float:none;width:1404px;margin-left:0;} -table .span19{float:none;width:1484px;margin-left:0;} -table .span20{float:none;width:1564px;margin-left:0;} -table .span21{float:none;width:1644px;margin-left:0;} -table .span22{float:none;width:1724px;margin-left:0;} -table .span23{float:none;width:1804px;margin-left:0;} -table .span24{float:none;width:1884px;margin-left:0;} +.clearfix { + *zoom: 1; +} + +.clearfix:before, +.clearfix:after { + display: table; + content: ""; +} + +.clearfix:after { + clear: both; +} + +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + +.input-block-level { + display: block; + width: 100%; + min-height: 28px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; +} + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +nav, +section { + display: block; +} + +audio, +canvas, +video { + display: inline-block; + *display: inline; + *zoom: 1; +} + +audio:not([controls]) { + display: none; +} + +html { + font-size: 100%; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} + +a:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +a:hover, +a:active { + outline: 0; +} + +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +img { + max-width: 100%; + vertical-align: middle; + border: 0; + -ms-interpolation-mode: bicubic; +} + +button, +input, +select, +textarea { + margin: 0; + font-size: 100%; + vertical-align: middle; +} + +button, +input { + *overflow: visible; + line-height: normal; +} + +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} + +button, +input[type="button"], +input[type="reset"], +input[type="submit"] { + cursor: pointer; + -webkit-appearance: button; +} + +input[type="search"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; +} + +input[type="search"]::-webkit-search-decoration, +input[type="search"]::-webkit-search-cancel-button { + -webkit-appearance: none; +} + +textarea { + overflow: auto; + vertical-align: top; +} + +body { + margin: 0; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + line-height: 18px; + color: #333333; + background-color: #ffffff; +} + +a { + color: #0088cc; + text-decoration: none; +} + +a:hover { + color: #005580; + text-decoration: underline; +} + +.row { + margin-left: -20px; + *zoom: 1; +} + +.row:before, +.row:after { + display: table; + content: ""; +} + +.row:after { + clear: both; +} + +[class*="span"] { + float: left; + margin-left: 20px; +} + +.container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + width: 940px; +} + +.span12 { + width: 940px; +} + +.span11 { + width: 860px; +} + +.span10 { + width: 780px; +} + +.span9 { + width: 700px; +} + +.span8 { + width: 620px; +} + +.span7 { + width: 540px; +} + +.span6 { + width: 460px; +} + +.span5 { + width: 380px; +} + +.span4 { + width: 300px; +} + +.span3 { + width: 220px; +} + +.span2 { + width: 140px; +} + +.span1 { + width: 60px; +} + +.offset12 { + margin-left: 980px; +} + +.offset11 { + margin-left: 900px; +} + +.offset10 { + margin-left: 820px; +} + +.offset9 { + margin-left: 740px; +} + +.offset8 { + margin-left: 660px; +} + +.offset7 { + margin-left: 580px; +} + +.offset6 { + margin-left: 500px; +} + +.offset5 { + margin-left: 420px; +} + +.offset4 { + margin-left: 340px; +} + +.offset3 { + margin-left: 260px; +} + +.offset2 { + margin-left: 180px; +} + +.offset1 { + margin-left: 100px; +} + +.row-fluid { + width: 100%; + *zoom: 1; +} + +.row-fluid:before, +.row-fluid:after { + display: table; + content: ""; +} + +.row-fluid:after { + clear: both; +} + +.row-fluid [class*="span"] { + display: block; + width: 100%; + min-height: 28px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; + float: left; + margin-left: 2.127659574%; + *margin-left: 2.0744680846382977%; +} + +.row-fluid [class*="span"]:first-child { + margin-left: 0; +} + +.row-fluid .span12 { + width: 99.99999998999999%; + *width: 99.94680850063828%; +} + +.row-fluid .span11 { + width: 91.489361693%; + *width: 91.4361702036383%; +} + +.row-fluid .span10 { + width: 82.97872339599999%; + *width: 82.92553190663828%; +} + +.row-fluid .span9 { + width: 74.468085099%; + *width: 74.4148936096383%; +} + +.row-fluid .span8 { + width: 65.95744680199999%; + *width: 65.90425531263828%; +} + +.row-fluid .span7 { + width: 57.446808505%; + *width: 57.3936170156383%; +} + +.row-fluid .span6 { + width: 48.93617020799999%; + *width: 48.88297871863829%; +} + +.row-fluid .span5 { + width: 40.425531911%; + *width: 40.3723404216383%; +} + +.row-fluid .span4 { + width: 31.914893614%; + *width: 31.8617021246383%; +} + +.row-fluid .span3 { + width: 23.404255317%; + *width: 23.3510638276383%; +} + +.row-fluid .span2 { + width: 14.89361702%; + *width: 14.8404255306383%; +} + +.row-fluid .span1 { + width: 6.382978723%; + *width: 6.329787233638298%; +} + +.container { + margin-right: auto; + margin-left: auto; + *zoom: 1; +} + +.container:before, +.container:after { + display: table; + content: ""; +} + +.container:after { + clear: both; +} + +.container-fluid { + padding-right: 20px; + padding-left: 20px; + *zoom: 1; +} + +.container-fluid:before, +.container-fluid:after { + display: table; + content: ""; +} + +.container-fluid:after { + clear: both; +} + +p { + margin: 0 0 9px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + line-height: 18px; +} + +p small { + font-size: 11px; + color: #999999; +} + +.lead { + margin-bottom: 18px; + font-size: 20px; + font-weight: 200; + line-height: 27px; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 0; + font-family: inherit; + font-weight: bold; + color: inherit; + text-rendering: optimizelegibility; +} + +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small { + font-weight: normal; + color: #999999; +} + +h1 { + font-size: 30px; + line-height: 36px; +} + +h1 small { + font-size: 18px; +} + +h2 { + font-size: 24px; + line-height: 36px; +} + +h2 small { + font-size: 18px; +} + +h3 { + font-size: 18px; + line-height: 27px; +} + +h3 small { + font-size: 14px; +} + +h4, +h5, +h6 { + line-height: 18px; +} + +h4 { + font-size: 14px; +} + +h4 small { + font-size: 12px; +} + +h5 { + font-size: 12px; +} + +h6 { + font-size: 11px; + color: #999999; + text-transform: uppercase; +} + +.page-header { + padding-bottom: 17px; + margin: 18px 0; + border-bottom: 1px solid #eeeeee; +} + +.page-header h1 { + line-height: 1; +} + +ul, +ol { + padding: 0; + margin: 0 0 9px 25px; +} + +ul ul, +ul ol, +ol ol, +ol ul { + margin-bottom: 0; +} + +ul { + list-style: disc; +} + +ol { + list-style: decimal; +} + +li { + line-height: 18px; +} + +ul.unstyled, +ol.unstyled { + margin-left: 0; + list-style: none; +} + +dl { + margin-bottom: 18px; +} + +dt, +dd { + line-height: 18px; +} + +dt { + font-weight: bold; + line-height: 17px; +} + +dd { + margin-left: 9px; +} + +.dl-horizontal dt { + float: left; + width: 120px; + clear: left; + text-align: right; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.dl-horizontal dd { + margin-left: 130px; +} + +hr { + margin: 18px 0; + border: 0; + border-top: 1px solid #eeeeee; + border-bottom: 1px solid #ffffff; +} + +strong { + font-weight: bold; +} + +em { + font-style: italic; +} + +.muted { + color: #999999; +} + +abbr[title] { + cursor: help; + border-bottom: 1px dotted #ddd; +} + +abbr.initialism { + font-size: 90%; + text-transform: uppercase; +} + +blockquote { + padding: 0 0 0 15px; + margin: 0 0 18px; + border-left: 5px solid #eeeeee; +} + +blockquote p { + margin-bottom: 0; + font-size: 16px; + font-weight: 300; + line-height: 22.5px; +} + +blockquote small { + display: block; + line-height: 18px; + color: #999999; +} + +blockquote small:before { + content: '\2014 \00A0'; +} + +blockquote.pull-right { + float: right; + padding-right: 15px; + padding-left: 0; + border-right: 5px solid #eeeeee; + border-left: 0; +} + +blockquote.pull-right p, +blockquote.pull-right small { + text-align: right; +} + +q:before, +q:after, +blockquote:before, +blockquote:after { + content: ""; +} + +address { + display: block; + margin-bottom: 18px; + font-style: normal; + line-height: 18px; +} + +small { + font-size: 100%; +} + +cite { + font-style: normal; +} + +code, +pre { + padding: 0 3px 2px; + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; + font-size: 12px; + color: #333333; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +code { + padding: 2px 4px; + color: #d14; + background-color: #f7f7f9; + border: 1px solid #e1e1e8; +} + +pre { + display: block; + padding: 8.5px; + margin: 0 0 9px; + font-size: 12.025px; + line-height: 18px; + word-break: break-all; + word-wrap: break-word; + white-space: pre; + white-space: pre-wrap; + background-color: #f5f5f5; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.15); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +pre.prettyprint { + margin-bottom: 18px; +} + +pre code { + padding: 0; + color: inherit; + background-color: transparent; + border: 0; +} + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} + +.label, +.badge { + font-size: 10.998px; + font-weight: bold; + line-height: 14px; + color: #ffffff; + vertical-align: baseline; + white-space: nowrap; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #999999; +} + +.label { + padding: 1px 4px 2px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.badge { + padding: 1px 9px 2px; + -webkit-border-radius: 9px; + -moz-border-radius: 9px; + border-radius: 9px; +} + +a.label:hover, +a.badge:hover { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} + +.label-important, +.badge-important { + background-color: #b94a48; +} + +.label-important[href], +.badge-important[href] { + background-color: #953b39; +} + +.label-warning, +.badge-warning { + background-color: #f89406; +} + +.label-warning[href], +.badge-warning[href] { + background-color: #c67605; +} + +.label-success, +.badge-success { + background-color: #468847; +} + +.label-success[href], +.badge-success[href] { + background-color: #356635; +} + +.label-info, +.badge-info { + background-color: #3a87ad; +} + +.label-info[href], +.badge-info[href] { + background-color: #2d6987; +} + +.label-inverse, +.badge-inverse { + background-color: #333333; +} + +.label-inverse[href], +.badge-inverse[href] { + background-color: #1a1a1a; +} + +table { + max-width: 100%; + background-color: transparent; + border-collapse: collapse; + border-spacing: 0; +} + +.table { + width: 100%; + margin-bottom: 18px; +} + +.table th, +.table td { + padding: 8px; + line-height: 18px; + text-align: left; + vertical-align: top; + border-top: 1px solid #dddddd; +} + +.table th { + font-weight: bold; +} + +.table thead th { + vertical-align: bottom; +} + +.table caption+thead tr:first-child th, +.table caption+thead tr:first-child td, +.table colgroup+thead tr:first-child th, +.table colgroup+thead tr:first-child td, +.table thead:first-child tr:first-child th, +.table thead:first-child tr:first-child td { + border-top: 0; +} + +.table tbody+tbody { + border-top: 2px solid #dddddd; +} + +.table-condensed th, +.table-condensed td { + padding: 4px 5px; +} + +.table-bordered { + border: 1px solid #dddddd; + border-collapse: separate; + *border-collapse: collapsed; + border-left: 0; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.table-bordered th, +.table-bordered td { + border-left: 1px solid #dddddd; +} + +.table-bordered caption+thead tr:first-child th, +.table-bordered caption+tbody tr:first-child th, +.table-bordered caption+tbody tr:first-child td, +.table-bordered colgroup+thead tr:first-child th, +.table-bordered colgroup+tbody tr:first-child th, +.table-bordered colgroup+tbody tr:first-child td, +.table-bordered thead:first-child tr:first-child th, +.table-bordered tbody:first-child tr:first-child th, +.table-bordered tbody:first-child tr:first-child td { + border-top: 0; +} + +.table-bordered thead:first-child tr:first-child th:first-child, +.table-bordered tbody:first-child tr:first-child td:first-child { + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; +} + +.table-bordered thead:first-child tr:first-child th:last-child, +.table-bordered tbody:first-child tr:first-child td:last-child { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; +} + +.table-bordered thead:last-child tr:last-child th:first-child, +.table-bordered tbody:last-child tr:last-child td:first-child { + -webkit-border-radius: 0 0 0 4px; + -moz-border-radius: 0 0 0 4px; + border-radius: 0 0 0 4px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; +} + +.table-bordered thead:last-child tr:last-child th:last-child, +.table-bordered tbody:last-child tr:last-child td:last-child { + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-bottomright: 4px; +} + +.table-striped tbody tr:nth-child(odd) td, +.table-striped tbody tr:nth-child(odd) th { + background-color: #f9f9f9; +} + +.table tbody tr:hover td, +.table tbody tr:hover th { + background-color: #f5f5f5; +} + +table .span1 { + float: none; + width: 44px; + margin-left: 0; +} + +table .span2 { + float: none; + width: 124px; + margin-left: 0; +} + +table .span3 { + float: none; + width: 204px; + margin-left: 0; +} + +table .span4 { + float: none; + width: 284px; + margin-left: 0; +} + +table .span5 { + float: none; + width: 364px; + margin-left: 0; +} + +table .span6 { + float: none; + width: 444px; + margin-left: 0; +} + +table .span7 { + float: none; + width: 524px; + margin-left: 0; +} + +table .span8 { + float: none; + width: 604px; + margin-left: 0; +} + +table .span9 { + float: none; + width: 684px; + margin-left: 0; +} + +table .span10 { + float: none; + width: 764px; + margin-left: 0; +} + +table .span11 { + float: none; + width: 844px; + margin-left: 0; +} + +table .span12 { + float: none; + width: 924px; + margin-left: 0; +} + +table .span13 { + float: none; + width: 1004px; + margin-left: 0; +} + +table .span14 { + float: none; + width: 1084px; + margin-left: 0; +} + +table .span15 { + float: none; + width: 1164px; + margin-left: 0; +} + +table .span16 { + float: none; + width: 1244px; + margin-left: 0; +} + +table .span17 { + float: none; + width: 1324px; + margin-left: 0; +} + +table .span18 { + float: none; + width: 1404px; + margin-left: 0; +} + +table .span19 { + float: none; + width: 1484px; + margin-left: 0; +} + +table .span20 { + float: none; + width: 1564px; + margin-left: 0; +} + +table .span21 { + float: none; + width: 1644px; + margin-left: 0; +} + +table .span22 { + float: none; + width: 1724px; + margin-left: 0; +} + +table .span23 { + float: none; + width: 1804px; + margin-left: 0; +} + +table .span24 { + float: none; + width: 1884px; + margin-left: 0; +} + /* Auto-generated CSS for generated Thrift docs */ -h3, h4 { margin-bottom: 6px; } -div.definition { border: 1px solid #CCC; margin-bottom: 10px; padding: 10px; } -div.extends { margin: -0.5em 0 1em 5em } -td { vertical-align: top; } -table { empty-cells: show; } -code { line-height: 20px; } -.table-bordered th, .table-bordered td { border-bottom: 1px solid #DDDDDD; } +h3, +h4 { + margin-bottom: 6px; +} + +div.definition { + border: 1px solid #CCC; + margin-bottom: 10px; + padding: 10px; +} + +div.extends { + margin: -0.5em 0 1em 5em +} + +td { + vertical-align: top; +} + +table { + empty-cells: show; +} + +code { + line-height: 20px; +} + +.table-bordered th, +.table-bordered td { + border-bottom: 1px solid #DDDDDD; +} \ No newline at end of file diff --git a/examples/sharing-service-docs/index.html b/examples/sharing-service-docs/index.html index e6a89f0b5ac..b88f8b44ff7 100644 --- a/examples/sharing-service-docs/index.html +++ b/examples/sharing-service-docs/index.html @@ -9,7 +9,7 @@ "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 + https://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an @@ -20,53 +20,59 @@ --> + Airavata Sharing Registry Service - + + -
    -

    Welcome to Airavata Sharing Registry Service Documentation

    +
    +

    Welcome to Airavata Sharing Registry Service Documentation

    -

    Airavata Data Sharing Registry Service is a general purpose Collaborative Workspace Management Component - that can solve - your Scientific Data Management requirements related to sharing and access controlling.

    +

    Airavata Data Sharing Registry Service is a general purpose Collaborative Workspace Management + Component + that can solve + your Scientific Data Management requirements related to sharing and access controlling.

    -

    N.B. This component is under active development and this document will keep on evolving. Click here - to see the API docs -

    +

    N.B. This component is under active development and this document will keep on + evolving. Click here + to see the API docs +

    -
    +

    Concepts & Terminology

    - Sharing Concepts -
    -
    - -
    -

    Getting started with the Java client

    - - -
    - -
    -

    0. Required maven dependencies

    -
    +        
    + +
    +

    Getting started with the Java client

    + + +
    + +
    +

    0. Required maven dependencies

    +
                     <dependency>
                         <groupId>org.apache.airavata</groupId>
                         <artifactId>airavata-sharing-registry-stubs</artifactId>
    @@ -79,11 +85,11 @@ 

    0. Required maven dependencies

    <version>0.9.3</version> </dependency>
    -
    +
    -
    -

    1. Creating the thrift client

    -
    +            
    +

    1. Creating the thrift client

    +
                     //should use the correct host name and port here
                     String serverHost = "gw56.iu.xsede.org";
                     int serverPort = 7878;
    @@ -93,11 +99,11 @@ 

    1. Creating the thrift client

    TProtocol protocol = new TBinaryProtocol(transport); SharingRegistryService.Client sharingServiceClient = new SharingRegistryService.Client(protocol);
    -
    +
    -
    -

    2. Create a domain

    -
    +            
    +

    2. Create a domain

    +
                     Domain domain = new Domain();
                     //has to be one word
                     domain.setName("test-domain");
    @@ -107,11 +113,11 @@ 

    2. Create a domain

    //domain id will be same as domain name String domainId = sharingServiceClient.createDomain(domain);
    -
    +
    -
    -

    2. Create Users

    -
    +            
    +

    2. Create Users

    +
                     User user1 = new User();
                     String userName = "test-user-1";
                     String userId1 =  "test-user-1";
    @@ -138,11 +144,11 @@ 

    2. Create Users

    . .
    -
    +
    -
    -

    3. Create User Groups

    -
    +            
    +

    3. Create User Groups

    +
                     UserGroup userGroup1 = new UserGroup();
                     //required
                     userGroup1.setGroupId("test-group-1");
    @@ -164,18 +170,18 @@ 

    3. Create User Groups

    . .
    -
    +
    -
    -

    4. Assign Users to a Group

    -
    +            
    +

    4. Assign Users to a Group

    +
                     sharingServiceClient.addUsersToGroup(domainId, Arrays.asList("test-user-3"), "test-group-2");
                 
    -
    +
    -
    -

    5. Assign groups to a group

    -
    +            
    +

    5. Assign groups to a group

    +
                     sharingServiceClient.addChildGroupsToParentGroup(domainId, Arrays.asList("test-group-2"), "test-group-1");
     
                     /********************************************/
    @@ -187,11 +193,11 @@ 

    5. Assign groups to a group

    /* test-user-2 test-user-3 */ /********************************************/
    -
    +
    -
    -

    6. Create Permission types for your Domain

    -
    +            
    +

    6. Create Permission types for your Domain

    +
                     PermissionType permissionType1 = new PermissionType();
                     //required
                     permissionType1.setPermissionTypeId("READ");
    @@ -217,11 +223,11 @@ 

    6. Create Permission types for your Domain

    permissionType3.setDescription("CLONE description"); sharingServiceClient.createPermissionType(permissionType3);
    -
    +
    -
    -

    7. Create Entity Types for your Domain

    -
    +            
    +

    7. Create Entity Types for your Domain

    +
                     EntityType entityType1 = new EntityType();
                     //required
                     entityType1.setEntityTypeId("PROJECT");
    @@ -247,11 +253,11 @@ 

    7. Create Entity Types for your Domain

    entityType3.setDescription("FILE entity type"); sharingServiceClient.createEntityType(entityType3);
    -
    +
    -
    -

    8. Create Entities

    -
    +            
    +

    8. Create Entities

    +
                     Entity entity1 = new Entity();
                     //required
                     entity1.setEntityId("test-project-1");
    @@ -303,11 +309,11 @@ 

    8. Create Entities

    entity4.setFullText("test input file 1 for experiment 2"); sharingServiceClient.createEntity(entity4);
    -
    +
    -
    -

    9. Share Entities with Users and Groups

    -
    +            
    +

    9. Share Entities with Users and Groups

    +
                     //shared with cascading permissions
                     sharingServiceClient.shareEntityWithUsers(domainId, "test-project-1", Arrays.asList("test-user-2"), "WRITE", true);
                     sharingServiceClient.shareEntityWithGroups(domainId, "test-experiment-2", Arrays.asList("test-group-2"), "READ", true);
    @@ -325,11 +331,11 @@ 

    9. Share Entities with Users and Groups

    /* (OWNER:test-user-1, WRITE:test-user-2, READ:test-group-2) */ /************************************************************************************************************/
    -
    +
    -
    -

    9. Checking whether a User has Permission to access an Entity with specified Permission

    -
    +            
    +

    9. Checking whether a User has Permission to access an Entity with specified Permission

    +
                     //test-project-1 is explicitly shared with test-user-2 with WRITE permission
                     System.out.println(sharingServiceClient.userHasAccess(domainId, "test-user-2", "test-project-1", "WRITE"));
     
    @@ -355,11 +361,11 @@ 

    9. Checking whether a User has Permission to access an Entity with specified //test-user-3 does not have CLONE permission to test-file-1 System.out.println((sharingServiceClient.userHasAccess(domainId, "test-user-3", "test-file-1", "CLONE")));

    -
    +
    -
    -

    10. Searching Entities

    -
    +            
    +

    10. Searching Entities

    +
                     ArrayList<SearchCriteria> filters = new ArrayList<>();
                     SearchCriteria searchCriteria = new SearchCriteria();
                     searchCriteria.setSearchCondition(SearchCondition.FULL_TEXT);
    @@ -381,9 +387,10 @@ 

    10. Searching Entities

    System.out.println(sharingServiceClient.searchEntities(domainId, "test-user-2", "EXPERIMENT", filters, 0, -1).size());
    -
    +
    +
    -
    + \ No newline at end of file diff --git a/examples/sharing-service-docs/style.css b/examples/sharing-service-docs/style.css index c53ad37e3e7..38d8265650b 100644 --- a/examples/sharing-service-docs/style.css +++ b/examples/sharing-service-docs/style.css @@ -8,7 +8,7 @@ * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an @@ -17,178 +17,1110 @@ * specific language governing permissions and limitations * under the License. */ -.clearfix{*zoom:1;}.clearfix:before,.clearfix:after{display:table;content:"";} -.clearfix:after{clear:both;} -.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;} -.input-block-level{display:block;width:100%;min-height:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;} -article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block;} -audio,canvas,video{display:inline-block;*display:inline;*zoom:1;} -audio:not([controls]){display:none;} -html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;} -a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;} -a:hover,a:active{outline:0;} -sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline;} -sup{top:-0.5em;} -sub{bottom:-0.25em;} -img{max-width:100%;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic;} -button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle;} -button,input{*overflow:visible;line-height:normal;} -button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0;} -button,input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button;} -input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield;} -input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none;} -textarea{overflow:auto;vertical-align:top;} -body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:18px;color:#333333;background-color:#ffffff;} -a{color:#0088cc;text-decoration:none;} -a:hover{color:#005580;text-decoration:underline;} -.row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";} -.row:after{clear:both;} -[class*="span"]{float:left;margin-left:20px;} -.container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px;} -.span12{width:940px;} -.span11{width:860px;} -.span10{width:780px;} -.span9{width:700px;} -.span8{width:620px;} -.span7{width:540px;} -.span6{width:460px;} -.span5{width:380px;} -.span4{width:300px;} -.span3{width:220px;} -.span2{width:140px;} -.span1{width:60px;} -.offset12{margin-left:980px;} -.offset11{margin-left:900px;} -.offset10{margin-left:820px;} -.offset9{margin-left:740px;} -.offset8{margin-left:660px;} -.offset7{margin-left:580px;} -.offset6{margin-left:500px;} -.offset5{margin-left:420px;} -.offset4{margin-left:340px;} -.offset3{margin-left:260px;} -.offset2{margin-left:180px;} -.offset1{margin-left:100px;} -.row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";} -.row-fluid:after{clear:both;} -.row-fluid [class*="span"]{display:block;width:100%;min-height:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.127659574%;*margin-left:2.0744680846382977%;} -.row-fluid [class*="span"]:first-child{margin-left:0;} -.row-fluid .span12{width:99.99999998999999%;*width:99.94680850063828%;} -.row-fluid .span11{width:91.489361693%;*width:91.4361702036383%;} -.row-fluid .span10{width:82.97872339599999%;*width:82.92553190663828%;} -.row-fluid .span9{width:74.468085099%;*width:74.4148936096383%;} -.row-fluid .span8{width:65.95744680199999%;*width:65.90425531263828%;} -.row-fluid .span7{width:57.446808505%;*width:57.3936170156383%;} -.row-fluid .span6{width:48.93617020799999%;*width:48.88297871863829%;} -.row-fluid .span5{width:40.425531911%;*width:40.3723404216383%;} -.row-fluid .span4{width:31.914893614%;*width:31.8617021246383%;} -.row-fluid .span3{width:23.404255317%;*width:23.3510638276383%;} -.row-fluid .span2{width:14.89361702%;*width:14.8404255306383%;} -.row-fluid .span1{width:6.382978723%;*width:6.329787233638298%;} -.container{margin-right:auto;margin-left:auto;*zoom:1;}.container:before,.container:after{display:table;content:"";} -.container:after{clear:both;} -.container-fluid{padding-right:20px;padding-left:20px;*zoom:1;}.container-fluid:before,.container-fluid:after{display:table;content:"";} -.container-fluid:after{clear:both;} -p{margin:0 0 9px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:18px;}p small{font-size:11px;color:#999999;} -.lead{margin-bottom:18px;font-size:20px;font-weight:200;line-height:27px;} -h1,h2,h3,h4,h5,h6{margin:0;font-family:inherit;font-weight:bold;color:inherit;text-rendering:optimizelegibility;}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;color:#999999;} -h1{font-size:30px;line-height:36px;}h1 small{font-size:18px;} -h2{font-size:24px;line-height:36px;}h2 small{font-size:18px;} -h3{font-size:18px;line-height:27px;}h3 small{font-size:14px;} -h4,h5,h6{line-height:18px;} -h4{font-size:14px;}h4 small{font-size:12px;} -h5{font-size:12px;} -h6{font-size:11px;color:#999999;text-transform:uppercase;} -.page-header{padding-bottom:17px;margin:18px 0;border-bottom:1px solid #eeeeee;} -.page-header h1{line-height:1;} -ul,ol{padding:0;margin:0 0 9px 25px;} -ul ul,ul ol,ol ol,ol ul{margin-bottom:0;} -ul{list-style:disc;} -ol{list-style:decimal;} -li{line-height:18px;} -ul.unstyled,ol.unstyled{margin-left:0;list-style:none;} -dl{margin-bottom:18px;} -dt,dd{line-height:18px;} -dt{font-weight:bold;line-height:17px;} -dd{margin-left:9px;} -.dl-horizontal dt{float:left;width:120px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;} -.dl-horizontal dd{margin-left:130px;} -hr{margin:18px 0;border:0;border-top:1px solid #eeeeee;border-bottom:1px solid #ffffff;} -strong{font-weight:bold;} -em{font-style:italic;} -.muted{color:#999999;} -abbr[title]{cursor:help;border-bottom:1px dotted #ddd;} -abbr.initialism{font-size:90%;text-transform:uppercase;} -blockquote{padding:0 0 0 15px;margin:0 0 18px;border-left:5px solid #eeeeee;}blockquote p{margin-bottom:0;font-size:16px;font-weight:300;line-height:22.5px;} -blockquote small{display:block;line-height:18px;color:#999999;}blockquote small:before{content:'\2014 \00A0';} -blockquote.pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #eeeeee;border-left:0;}blockquote.pull-right p,blockquote.pull-right small{text-align:right;} -q:before,q:after,blockquote:before,blockquote:after{content:"";} -address{display:block;margin-bottom:18px;font-style:normal;line-height:18px;} -small{font-size:100%;} -cite{font-style:normal;} -code,pre{padding:0 3px 2px;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;font-size:12px;color:#333333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} -code{padding:2px 4px;color:#d14;background-color:#f7f7f9;border:1px solid #e1e1e8;} -pre{display:block;padding:8.5px;margin:0 0 9px;font-size:12.025px;line-height:18px;word-break:break-all;word-wrap:break-word;white-space:pre;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}pre.prettyprint{margin-bottom:18px;} -pre code{padding:0;color:inherit;background-color:transparent;border:0;} -.pre-scrollable{max-height:340px;overflow-y:scroll;} -.label,.badge{font-size:10.998px;font-weight:bold;line-height:14px;color:#ffffff;vertical-align:baseline;white-space:nowrap;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#999999;} -.label{padding:1px 4px 2px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} -.badge{padding:1px 9px 2px;-webkit-border-radius:9px;-moz-border-radius:9px;border-radius:9px;} -a.label:hover,a.badge:hover{color:#ffffff;text-decoration:none;cursor:pointer;} -.label-important,.badge-important{background-color:#b94a48;} -.label-important[href],.badge-important[href]{background-color:#953b39;} -.label-warning,.badge-warning{background-color:#f89406;} -.label-warning[href],.badge-warning[href]{background-color:#c67605;} -.label-success,.badge-success{background-color:#468847;} -.label-success[href],.badge-success[href]{background-color:#356635;} -.label-info,.badge-info{background-color:#3a87ad;} -.label-info[href],.badge-info[href]{background-color:#2d6987;} -.label-inverse,.badge-inverse{background-color:#333333;} -.label-inverse[href],.badge-inverse[href]{background-color:#1a1a1a;} -table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0;} -.table{width:100%;margin-bottom:18px;}.table th,.table td{padding:8px;line-height:18px;text-align:left;vertical-align:top;border-top:1px solid #dddddd;} -.table th{font-weight:bold;} -.table thead th{vertical-align:bottom;} -.table caption+thead tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child th,.table thead:first-child tr:first-child td{border-top:0;} -.table tbody+tbody{border-top:2px solid #dddddd;} -.table-condensed th,.table-condensed td{padding:4px 5px;} -.table-bordered{border:1px solid #dddddd;border-collapse:separate;*border-collapse:collapsed;border-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.table-bordered th,.table-bordered td{border-left:1px solid #dddddd;} -.table-bordered caption+thead tr:first-child th,.table-bordered caption+tbody tr:first-child th,.table-bordered caption+tbody tr:first-child td,.table-bordered colgroup+thead tr:first-child th,.table-bordered colgroup+tbody tr:first-child th,.table-bordered colgroup+tbody tr:first-child td,.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0;} -.table-bordered thead:first-child tr:first-child th:first-child,.table-bordered tbody:first-child tr:first-child td:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px;} -.table-bordered thead:first-child tr:first-child th:last-child,.table-bordered tbody:first-child tr:first-child td:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px;} -.table-bordered thead:last-child tr:last-child th:first-child,.table-bordered tbody:last-child tr:last-child td:first-child{-webkit-border-radius:0 0 0 4px;-moz-border-radius:0 0 0 4px;border-radius:0 0 0 4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;} -.table-bordered thead:last-child tr:last-child th:last-child,.table-bordered tbody:last-child tr:last-child td:last-child{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;} -.table-striped tbody tr:nth-child(odd) td,.table-striped tbody tr:nth-child(odd) th{background-color:#f9f9f9;} -.table tbody tr:hover td,.table tbody tr:hover th{background-color:#f5f5f5;} -table .span1{float:none;width:44px;margin-left:0;} -table .span2{float:none;width:124px;margin-left:0;} -table .span3{float:none;width:204px;margin-left:0;} -table .span4{float:none;width:284px;margin-left:0;} -table .span5{float:none;width:364px;margin-left:0;} -table .span6{float:none;width:444px;margin-left:0;} -table .span7{float:none;width:524px;margin-left:0;} -table .span8{float:none;width:604px;margin-left:0;} -table .span9{float:none;width:684px;margin-left:0;} -table .span10{float:none;width:764px;margin-left:0;} -table .span11{float:none;width:844px;margin-left:0;} -table .span12{float:none;width:924px;margin-left:0;} -table .span13{float:none;width:1004px;margin-left:0;} -table .span14{float:none;width:1084px;margin-left:0;} -table .span15{float:none;width:1164px;margin-left:0;} -table .span16{float:none;width:1244px;margin-left:0;} -table .span17{float:none;width:1324px;margin-left:0;} -table .span18{float:none;width:1404px;margin-left:0;} -table .span19{float:none;width:1484px;margin-left:0;} -table .span20{float:none;width:1564px;margin-left:0;} -table .span21{float:none;width:1644px;margin-left:0;} -table .span22{float:none;width:1724px;margin-left:0;} -table .span23{float:none;width:1804px;margin-left:0;} -table .span24{float:none;width:1884px;margin-left:0;} +.clearfix { + *zoom: 1; +} + +.clearfix:before, +.clearfix:after { + display: table; + content: ""; +} + +.clearfix:after { + clear: both; +} + +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + +.input-block-level { + display: block; + width: 100%; + min-height: 28px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; +} + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +nav, +section { + display: block; +} + +audio, +canvas, +video { + display: inline-block; + *display: inline; + *zoom: 1; +} + +audio:not([controls]) { + display: none; +} + +html { + font-size: 100%; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} + +a:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +a:hover, +a:active { + outline: 0; +} + +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +img { + max-width: 100%; + vertical-align: middle; + border: 0; + -ms-interpolation-mode: bicubic; +} + +button, +input, +select, +textarea { + margin: 0; + font-size: 100%; + vertical-align: middle; +} + +button, +input { + *overflow: visible; + line-height: normal; +} + +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} + +button, +input[type="button"], +input[type="reset"], +input[type="submit"] { + cursor: pointer; + -webkit-appearance: button; +} + +input[type="search"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; +} + +input[type="search"]::-webkit-search-decoration, +input[type="search"]::-webkit-search-cancel-button { + -webkit-appearance: none; +} + +textarea { + overflow: auto; + vertical-align: top; +} + +body { + margin: 0; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + line-height: 18px; + color: #333333; + background-color: #ffffff; +} + +a { + color: #0088cc; + text-decoration: none; +} + +a:hover { + color: #005580; + text-decoration: underline; +} + +.row { + margin-left: -20px; + *zoom: 1; +} + +.row:before, +.row:after { + display: table; + content: ""; +} + +.row:after { + clear: both; +} + +[class*="span"] { + float: left; + margin-left: 20px; +} + +.container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + width: 940px; +} + +.span12 { + width: 940px; +} + +.span11 { + width: 860px; +} + +.span10 { + width: 780px; +} + +.span9 { + width: 700px; +} + +.span8 { + width: 620px; +} + +.span7 { + width: 540px; +} + +.span6 { + width: 460px; +} + +.span5 { + width: 380px; +} + +.span4 { + width: 300px; +} + +.span3 { + width: 220px; +} + +.span2 { + width: 140px; +} + +.span1 { + width: 60px; +} + +.offset12 { + margin-left: 980px; +} + +.offset11 { + margin-left: 900px; +} + +.offset10 { + margin-left: 820px; +} + +.offset9 { + margin-left: 740px; +} + +.offset8 { + margin-left: 660px; +} + +.offset7 { + margin-left: 580px; +} + +.offset6 { + margin-left: 500px; +} + +.offset5 { + margin-left: 420px; +} + +.offset4 { + margin-left: 340px; +} + +.offset3 { + margin-left: 260px; +} + +.offset2 { + margin-left: 180px; +} + +.offset1 { + margin-left: 100px; +} + +.row-fluid { + width: 100%; + *zoom: 1; +} + +.row-fluid:before, +.row-fluid:after { + display: table; + content: ""; +} + +.row-fluid:after { + clear: both; +} + +.row-fluid [class*="span"] { + display: block; + width: 100%; + min-height: 28px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; + float: left; + margin-left: 2.127659574%; + *margin-left: 2.0744680846382977%; +} + +.row-fluid [class*="span"]:first-child { + margin-left: 0; +} + +.row-fluid .span12 { + width: 99.99999998999999%; + *width: 99.94680850063828%; +} + +.row-fluid .span11 { + width: 91.489361693%; + *width: 91.4361702036383%; +} + +.row-fluid .span10 { + width: 82.97872339599999%; + *width: 82.92553190663828%; +} + +.row-fluid .span9 { + width: 74.468085099%; + *width: 74.4148936096383%; +} + +.row-fluid .span8 { + width: 65.95744680199999%; + *width: 65.90425531263828%; +} + +.row-fluid .span7 { + width: 57.446808505%; + *width: 57.3936170156383%; +} + +.row-fluid .span6 { + width: 48.93617020799999%; + *width: 48.88297871863829%; +} + +.row-fluid .span5 { + width: 40.425531911%; + *width: 40.3723404216383%; +} + +.row-fluid .span4 { + width: 31.914893614%; + *width: 31.8617021246383%; +} + +.row-fluid .span3 { + width: 23.404255317%; + *width: 23.3510638276383%; +} + +.row-fluid .span2 { + width: 14.89361702%; + *width: 14.8404255306383%; +} + +.row-fluid .span1 { + width: 6.382978723%; + *width: 6.329787233638298%; +} + +.container { + margin-right: auto; + margin-left: auto; + *zoom: 1; +} + +.container:before, +.container:after { + display: table; + content: ""; +} + +.container:after { + clear: both; +} + +.container-fluid { + padding-right: 20px; + padding-left: 20px; + *zoom: 1; +} + +.container-fluid:before, +.container-fluid:after { + display: table; + content: ""; +} + +.container-fluid:after { + clear: both; +} + +p { + margin: 0 0 9px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + line-height: 18px; +} + +p small { + font-size: 11px; + color: #999999; +} + +.lead { + margin-bottom: 18px; + font-size: 20px; + font-weight: 200; + line-height: 27px; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 0; + font-family: inherit; + font-weight: bold; + color: inherit; + text-rendering: optimizelegibility; +} + +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small { + font-weight: normal; + color: #999999; +} + +h1 { + font-size: 30px; + line-height: 36px; +} + +h1 small { + font-size: 18px; +} + +h2 { + font-size: 24px; + line-height: 36px; +} + +h2 small { + font-size: 18px; +} + +h3 { + font-size: 18px; + line-height: 27px; +} + +h3 small { + font-size: 14px; +} + +h4, +h5, +h6 { + line-height: 18px; +} + +h4 { + font-size: 14px; +} + +h4 small { + font-size: 12px; +} + +h5 { + font-size: 12px; +} + +h6 { + font-size: 11px; + color: #999999; + text-transform: uppercase; +} + +.page-header { + padding-bottom: 17px; + margin: 18px 0; + border-bottom: 1px solid #eeeeee; +} + +.page-header h1 { + line-height: 1; +} + +ul, +ol { + padding: 0; + margin: 0 0 9px 25px; +} + +ul ul, +ul ol, +ol ol, +ol ul { + margin-bottom: 0; +} + +ul { + list-style: disc; +} + +ol { + list-style: decimal; +} + +li { + line-height: 18px; +} + +ul.unstyled, +ol.unstyled { + margin-left: 0; + list-style: none; +} + +dl { + margin-bottom: 18px; +} + +dt, +dd { + line-height: 18px; +} + +dt { + font-weight: bold; + line-height: 17px; +} + +dd { + margin-left: 9px; +} + +.dl-horizontal dt { + float: left; + width: 120px; + clear: left; + text-align: right; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.dl-horizontal dd { + margin-left: 130px; +} + +hr { + margin: 18px 0; + border: 0; + border-top: 1px solid #eeeeee; + border-bottom: 1px solid #ffffff; +} + +strong { + font-weight: bold; +} + +em { + font-style: italic; +} + +.muted { + color: #999999; +} + +abbr[title] { + cursor: help; + border-bottom: 1px dotted #ddd; +} + +abbr.initialism { + font-size: 90%; + text-transform: uppercase; +} + +blockquote { + padding: 0 0 0 15px; + margin: 0 0 18px; + border-left: 5px solid #eeeeee; +} + +blockquote p { + margin-bottom: 0; + font-size: 16px; + font-weight: 300; + line-height: 22.5px; +} + +blockquote small { + display: block; + line-height: 18px; + color: #999999; +} + +blockquote small:before { + content: '\2014 \00A0'; +} + +blockquote.pull-right { + float: right; + padding-right: 15px; + padding-left: 0; + border-right: 5px solid #eeeeee; + border-left: 0; +} + +blockquote.pull-right p, +blockquote.pull-right small { + text-align: right; +} + +q:before, +q:after, +blockquote:before, +blockquote:after { + content: ""; +} + +address { + display: block; + margin-bottom: 18px; + font-style: normal; + line-height: 18px; +} + +small { + font-size: 100%; +} + +cite { + font-style: normal; +} + +code, +pre { + padding: 0 3px 2px; + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; + font-size: 12px; + color: #333333; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +code { + padding: 2px 4px; + color: #d14; + background-color: #f7f7f9; + border: 1px solid #e1e1e8; +} + +pre { + display: block; + padding: 8.5px; + margin: 0 0 9px; + font-size: 12.025px; + line-height: 18px; + word-break: break-all; + word-wrap: break-word; + white-space: pre; + white-space: pre-wrap; + background-color: #f5f5f5; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.15); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +pre.prettyprint { + margin-bottom: 18px; +} + +pre code { + padding: 0; + color: inherit; + background-color: transparent; + border: 0; +} + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} + +.label, +.badge { + font-size: 10.998px; + font-weight: bold; + line-height: 14px; + color: #ffffff; + vertical-align: baseline; + white-space: nowrap; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #999999; +} + +.label { + padding: 1px 4px 2px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.badge { + padding: 1px 9px 2px; + -webkit-border-radius: 9px; + -moz-border-radius: 9px; + border-radius: 9px; +} + +a.label:hover, +a.badge:hover { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} + +.label-important, +.badge-important { + background-color: #b94a48; +} + +.label-important[href], +.badge-important[href] { + background-color: #953b39; +} + +.label-warning, +.badge-warning { + background-color: #f89406; +} + +.label-warning[href], +.badge-warning[href] { + background-color: #c67605; +} + +.label-success, +.badge-success { + background-color: #468847; +} + +.label-success[href], +.badge-success[href] { + background-color: #356635; +} + +.label-info, +.badge-info { + background-color: #3a87ad; +} + +.label-info[href], +.badge-info[href] { + background-color: #2d6987; +} + +.label-inverse, +.badge-inverse { + background-color: #333333; +} + +.label-inverse[href], +.badge-inverse[href] { + background-color: #1a1a1a; +} + +table { + max-width: 100%; + background-color: transparent; + border-collapse: collapse; + border-spacing: 0; +} + +.table { + width: 100%; + margin-bottom: 18px; +} + +.table th, +.table td { + padding: 8px; + line-height: 18px; + text-align: left; + vertical-align: top; + border-top: 1px solid #dddddd; +} + +.table th { + font-weight: bold; +} + +.table thead th { + vertical-align: bottom; +} + +.table caption+thead tr:first-child th, +.table caption+thead tr:first-child td, +.table colgroup+thead tr:first-child th, +.table colgroup+thead tr:first-child td, +.table thead:first-child tr:first-child th, +.table thead:first-child tr:first-child td { + border-top: 0; +} + +.table tbody+tbody { + border-top: 2px solid #dddddd; +} + +.table-condensed th, +.table-condensed td { + padding: 4px 5px; +} + +.table-bordered { + border: 1px solid #dddddd; + border-collapse: separate; + *border-collapse: collapsed; + border-left: 0; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.table-bordered th, +.table-bordered td { + border-left: 1px solid #dddddd; +} + +.table-bordered caption+thead tr:first-child th, +.table-bordered caption+tbody tr:first-child th, +.table-bordered caption+tbody tr:first-child td, +.table-bordered colgroup+thead tr:first-child th, +.table-bordered colgroup+tbody tr:first-child th, +.table-bordered colgroup+tbody tr:first-child td, +.table-bordered thead:first-child tr:first-child th, +.table-bordered tbody:first-child tr:first-child th, +.table-bordered tbody:first-child tr:first-child td { + border-top: 0; +} + +.table-bordered thead:first-child tr:first-child th:first-child, +.table-bordered tbody:first-child tr:first-child td:first-child { + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; +} + +.table-bordered thead:first-child tr:first-child th:last-child, +.table-bordered tbody:first-child tr:first-child td:last-child { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; +} + +.table-bordered thead:last-child tr:last-child th:first-child, +.table-bordered tbody:last-child tr:last-child td:first-child { + -webkit-border-radius: 0 0 0 4px; + -moz-border-radius: 0 0 0 4px; + border-radius: 0 0 0 4px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; +} + +.table-bordered thead:last-child tr:last-child th:last-child, +.table-bordered tbody:last-child tr:last-child td:last-child { + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-bottomright: 4px; +} + +.table-striped tbody tr:nth-child(odd) td, +.table-striped tbody tr:nth-child(odd) th { + background-color: #f9f9f9; +} + +.table tbody tr:hover td, +.table tbody tr:hover th { + background-color: #f5f5f5; +} + +table .span1 { + float: none; + width: 44px; + margin-left: 0; +} + +table .span2 { + float: none; + width: 124px; + margin-left: 0; +} + +table .span3 { + float: none; + width: 204px; + margin-left: 0; +} + +table .span4 { + float: none; + width: 284px; + margin-left: 0; +} + +table .span5 { + float: none; + width: 364px; + margin-left: 0; +} + +table .span6 { + float: none; + width: 444px; + margin-left: 0; +} + +table .span7 { + float: none; + width: 524px; + margin-left: 0; +} + +table .span8 { + float: none; + width: 604px; + margin-left: 0; +} + +table .span9 { + float: none; + width: 684px; + margin-left: 0; +} + +table .span10 { + float: none; + width: 764px; + margin-left: 0; +} + +table .span11 { + float: none; + width: 844px; + margin-left: 0; +} + +table .span12 { + float: none; + width: 924px; + margin-left: 0; +} + +table .span13 { + float: none; + width: 1004px; + margin-left: 0; +} + +table .span14 { + float: none; + width: 1084px; + margin-left: 0; +} + +table .span15 { + float: none; + width: 1164px; + margin-left: 0; +} + +table .span16 { + float: none; + width: 1244px; + margin-left: 0; +} + +table .span17 { + float: none; + width: 1324px; + margin-left: 0; +} + +table .span18 { + float: none; + width: 1404px; + margin-left: 0; +} + +table .span19 { + float: none; + width: 1484px; + margin-left: 0; +} + +table .span20 { + float: none; + width: 1564px; + margin-left: 0; +} + +table .span21 { + float: none; + width: 1644px; + margin-left: 0; +} + +table .span22 { + float: none; + width: 1724px; + margin-left: 0; +} + +table .span23 { + float: none; + width: 1804px; + margin-left: 0; +} + +table .span24 { + float: none; + width: 1884px; + margin-left: 0; +} + /* Auto-generated CSS for generated Thrift docs */ -h3, h4 { margin-bottom: 6px; } -div.definition { border: 1px solid #CCC; margin-bottom: 10px; padding: 10px; } -div.extends { margin: -0.5em 0 1em 5em } -td { vertical-align: top; } -table { empty-cells: show; } -code { line-height: 20px; } -.table-bordered th, .table-bordered td { border-bottom: 1px solid #DDDDDD; } +h3, +h4 { + margin-bottom: 6px; +} + +div.definition { + border: 1px solid #CCC; + margin-bottom: 10px; + padding: 10px; +} + +div.extends { + margin: -0.5em 0 1em 5em +} + +td { + vertical-align: top; +} + +table { + empty-cells: show; +} + +code { + line-height: 20px; +} + +.table-bordered th, +.table-bordered td { + border-bottom: 1px solid #DDDDDD; +} + +html, +body { + height: 100%; +} + +body { + display: flex; + min-height: 100vh; + flex-direction: column; + margin: 0; +} + +.container-fluid { + flex: 1; +} + +footer { + margin-top: auto; +} \ No newline at end of file diff --git a/modules/research-framework/simexr_mod/README.md b/modules/research-framework/simexr_mod/README.md index a26d2f21435..b187cd996d4 100644 --- a/modules/research-framework/simexr_mod/README.md +++ b/modules/research-framework/simexr_mod/README.md @@ -12,7 +12,7 @@ SimExR is a FastAPI-based framework that provides a complete pipeline for: - **Managing** models, results, and conversations through REST APIs ## 🏗️ Architecture -arch +SIMEXR architecture diagram showing components and data flow ### Core Components @@ -125,7 +125,7 @@ Once the Streamlit app is running, you can: 3. **📊 View Results**: Use the "View Results" page to explore simulation data 4. **🤖 AI Analysis**: Use the "AI Analysis" page to ask questions about your results 5. **🔍 Search Models**: Use the "Model Search" page to find existing models -Screenshot 2025-09-12 at 3 23 13 PM +SIMEXR UI screenshot showing experiment configuration and results view ## 🔄 End-to-End Flow From f61e87be41b7a63885e63e4e442a7ac68b141a16 Mon Sep 17 00:00:00 2001 From: Brijesh-Thakkar Date: Tue, 16 Dec 2025 05:31:14 +0530 Subject: [PATCH 2/2] Made the changes suggested --- examples/sharing-service-docs/api-docs/style.css | 2 +- examples/sharing-service-docs/style.css | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/sharing-service-docs/api-docs/style.css b/examples/sharing-service-docs/api-docs/style.css index be9d05bd0c3..4d70a46d430 100644 --- a/examples/sharing-service-docs/api-docs/style.css +++ b/examples/sharing-service-docs/api-docs/style.css @@ -1075,7 +1075,7 @@ div.definition { } div.extends { - margin: -0.5em 0 1em 5em + margin: -0.5em 0 1em 5em; } td { diff --git a/examples/sharing-service-docs/style.css b/examples/sharing-service-docs/style.css index 38d8265650b..5a54b1aaeed 100644 --- a/examples/sharing-service-docs/style.css +++ b/examples/sharing-service-docs/style.css @@ -1085,7 +1085,7 @@ div.definition { } div.extends { - margin: -0.5em 0 1em 5em + margin: -0.5em 0 1em 5em; } td {