pageDecorators.recentAssetsOfActivatedTypes = function(ctx, page) {
     var app = require('rxt').app;
     var asset = require('rxt').asset;
     var permissions = require('rxt').permissions;
     var assetAPI = require('/modules/asset-api.js').api;
     var assets = {};
     var items = [];
     var pcItems = [];
     var pcTypeDetails = [];
     var pcAssets = [];
     var assetsByType = [];
     var am;
     var type;
     var rxtDetails;
     var assetMap = {};
     var bookmarkable;
     var tenantAppResources = tenantApi.createTenantAwareAppResources(ctx.session);
     var tenantAssetResources;
     // Supporting cross tenant views
     ctx = tenantAppResources.context;
     types = app.getUIActivatedAssets(ctx.tenantId);
     var typeDetails;
     var ratingApi = require('/modules/rating-api.js').api;
     var q = page.assetMeta.q;
     var query = buildRecentAssetQuery(q);
     var username = ctx.username || null;
     var tenantId = ctx.tenantId;
     var canBookmark = function(type) {
         return permissions.hasAssetPermission(permissions.ASSET_BOOKMARK, type, tenantId, username);
     };
     var bookmarkPerms = {};
     if (query) {
         items = asset.advanceSearch(query, null, session, ctx.tenantId)||[];
         ratingApi.addRatings(items, am, ctx.tenantId, ctx.username);
         assetMap = {};
         var template;
         //Sort the results by type
         items.forEach(function(item){
             var type = item.type;
             if(!assetMap[type]){
                 assetMap[type] = [];
             }
             bookmarkable = bookmarkPerms[type];
             if (bookmarkable === undefined) {
                 bookmarkable = (bookmarkPerms[type] = canBookmark(type));
             }
             item.bookmarkable = bookmarkable;
             assetMap[type].push(item);
         });
         //Collect the asset result set along with the rxt definition
         for(var key in assetMap){
             template = ctx.rxtManager.getRxtTypeDetails(key);
             assetsByType.push({
                 assets:assetMap[key],
                 rxt:template
             });
         }
     } else {
         for (var index in types) {
             typeDetails = ctx.rxtManager.getRxtTypeDetails(types[index]);
             type = typeDetails.shortName;
             tenantAssetResources = tenantApi.createTenantAwareAssetResources(ctx.session, {
                 type: type
             });
             bookmarkable = bookmarkPerms[type];
             if(bookmarkable === undefined) {
                 bookmarkable = (bookmarkPerms[type] = canBookmark(type));
             }
             am = tenantAssetResources.am;
             if (permissionsAPI.hasAssetPermission(permissionsAPI.ASSET_LIST, type, ctx.tenantId, ctx.username)) {
                 assets = am.recentAssets();
                 if (assets.length > 0) {
                     //Add subscription details if this is not an anon context
                     if (!ctx.isAnonContext) {
                         addSubscriptionDetails(assets, am, ctx.session, bookmarkable);
                     }
                     ratingApi.addRatings(assets, am, ctx.tenantId, ctx.username);
                     items = items.concat(assets);
                     assetsByType.push({
                         assets: assets,
                         rxt: typeDetails
                     });
                 }
             }
         }
     }
     // Display only process type assets for recent assets
     for(var i = 0; i <items.length; i++){
          if(items[i].type == "process"){
             log.debug("Found Process type assets"+ i); 
            var pcCurrentType =ctx.rxtManager.getRxtTypeDetails(items[i].type);
            pcTypeDetails = pcCurrentType ;
            pcItems.push(items[i]);
          }
     }
     
     pcAssets.push({
      assets:pcItems,
      rxt:pcTypeDetails
     });
     
     page.recentAssets = pcItems;
     page.recentAssetsByType = pcAssets;
 };
Exemple #2
0
 api.genericAdvanceSearch = function(options,req,res,session){
     var asset = require('rxt').asset;
     var server = require('store').server;
     var userDetails = server.current(session);
     var assetManager = null;
     var domain = options.domain || carbon.server.superTenant.domain;
     var ratingApi = require('/modules/rating-api.js').api;
     var tenantId = carbon.server.tenantId({
         domain: domain
     });
     var rxtModule = require('rxt');
     var rxtManager = rxtModule.core.rxtManager(tenantId);
     var sort = (request.getParameter("sort") || '');
     var sortOrder = DEFAULT_PAGIN.sortOrder;
     if (sort) {
         var order = sort.charAt(0);
         if (order == '+' || order == ' ') {
             sortOrder = 'ASC';
             sort = sort.slice(1);
         } else if (order == '-') {
             sortOrder = 'DESC';
             sort = sort.slice(1);
         } else {
             sortOrder = DEFAULT_PAGIN.sortOrder;
         }
     }
     var sortBy = (sort || DEFAULT_PAGIN.sortBy);
     var count = (request.getParameter("count") || DEFAULT_PAGIN.count);
     var start = (request.getParameter("start") || DEFAULT_PAGIN.start);
     var paginationLimit = (request.getParameter("paginationLimit") || DEFAULT_PAGIN.paginationLimit);
     var paging = {
         'start': start,
         'count': count,
         'sortOrder': sortOrder,
         'sortBy': sortBy,
         'paginationLimit': paginationLimit
     };
     var q = (request.getParameter("q") || '');
     try {
         if (q) {
             var qString = '{' + q + '}';
             var query = validateQuery(qString);
             //query = replaceCategoryQuery(query, rxtManager, options.type);
             //query = replaceNameQuery(query, rxtManager, options.type);
             if (log.isDebugEnabled) {
                 //Need to log this as we perform some processing on the name and
                 //category values
                 log.debug('processed query used for searching: ' + stringify(query));
             }
             //Note: Advance generic searches will not support grouping as it can 
             //be enabled/disabled per asset type
             var assets = asset.advanceSearch(query,paging,session,tenantId); 
         } else {
             log.error('Unable to perform a bulk asset retrieval without a type been specified');
             throw 'Unable to perform a bulk asset retrieval without a type been specified';
         }
         var expansionFields = (request.getParameter('fields') || '');
         if (expansionFields) {
             options.fields = expansionFields.split(',');
             options.assets = assets;
             result = fieldExpansion(options, req, res, session);
             //return;                    
         } else {
             result = assets;
         }
         //res = responseProcessor.buildSuccessResponse(res,200,result);
     } catch (e) {
         //res = responseProcessor.buildErrorResponse(400, "Your request is malformed");
         //print();
         result = null;
         log.error(e);
     }
     ratingApi.addRatings(result);
     return result;  
 };