npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

angular-point-lookup-cache

v5.0.1

Published

Service used to create caches for specified lookup fields to eliminate the need to iterate over the entire list to find related items.

Downloads

2

Readme

angular-point-lookup-cache

Service used to create caches for specified lookup fields to eliminate the need to iterate over the entire list to find related items.

Register On Model

  let lookupFieldsToCache = ['project'];

  class ProjectTask{
       constructor(obj) {
           super();
           _.assign(this, obj);

           //Only cache list items saved to server so verify an id is available
           if(this.id) {

               // Store in cached object so we can reference from lookup reference
               apLookupCacheService.cacheEntityByLookupId(this, lookupFieldsToCache);
           }
       }

       //...other methods on constructor class
  }

  export class ProjectTasksModel extends ap.Model {
       constructor($injector: ng.auto.IInjectorService) {

           super({
               factory: ProjectTask,
               getChildren: getChildren,
               list: {
                   // Maps to the offline XML file in dev folder (no spaces)
                   title: 'ProjectTask',
                   /// List GUID can be found in list properties in SharePoint designer
                   environments: {
                       production: '{C72C44A2-DC40-4308-BEFF-3FF418D14022}',
                       test: '{DAD8689C-8B9E-4088-BEC5-9F273CAAE104}'
                   },
                   customFields: [
                       // Array of objects mapping each SharePoint field to a property on a list item object
                       {staticName: 'Title', objectType: 'Text', mappedName: 'title', cols: 3, readOnly: false},
                       {staticName: 'Project', objectType: 'Lookup', mappedName: 'project', readOnly: false}
                       ...
                   ]
               }
           });

           //Expose service to ProjectTask class and we know it's already loaded because it's loaded before
           //project files
           apLookupCacheService = $injector.get('apLookupCacheService');

           //Patch save and delete on class prototype to allow us to cleanup cache before each event
           apLookupCacheService.manageChangeEvents(Muster, lookupFieldsToCache);

       }
       getProjectTasks(projectId: number, asObject: boolean) {
          return lookupCacheService.retrieveLookupCacheById('project', this.list.getListId(), projectId, asObject);
       }

       //...other methods on model

  }

Using Cached Value From Project Object

  /** On the project model **/
  class Project{
       constructor(obj) {
           super();
           _.assign(this, obj);
       }
       /** Project tasks are now directly available from a given project */
       getProjectTasks(asObject = false) {
           return projectTasksModel.getProjectTasks(this.id, asObject);
       }

       //...other methods on constructor class
  }

 //Returns an array containing all project tasks
 var projectTasks = myProject.getProjectTasks();

 //Returns an indexed cache object that hasn't been converted into an array, keys=id and val=list item
 var projectTasks = myProject.getProjectTasks(true);