mirror of
				https://gitlab.ub.uni-bielefeld.de/sfb1288inf/nopaque.git
				synced 2025-11-04 12:22:47 +00:00 
			
		
		
		
	Start redesign of RessourceLists
This commit is contained in:
		
							
								
								
									
										68
									
								
								web/app/static/js/nopaque.lists.new.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								web/app/static/js/nopaque.lists.new.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,68 @@
 | 
			
		||||
class RessourceList extends List {
 | 
			
		||||
  constructor(idOrElement, options) {
 | 
			
		||||
    super(idOrElement, {...RessourceList.options['default'], ...(options ? options : {})});
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  _init(ressources) {
 | 
			
		||||
    this.clear();
 | 
			
		||||
    this._add(Object.values(ressources));
 | 
			
		||||
    this.sort("id", {order: "desc"});
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  _update(patch) {
 | 
			
		||||
    let item, pathArray;
 | 
			
		||||
 | 
			
		||||
    for (let operation of patch) {
 | 
			
		||||
      /*
 | 
			
		||||
       * '/{ressourceName}/{ressourceId}/...' -> ['{ressourceId}', ...]
 | 
			
		||||
       * Example: '/jobs/1/status' -> ['1', 'status']
 | 
			
		||||
      */
 | 
			
		||||
      pathArray = operation.path.split("/").slice(2);
 | 
			
		||||
      switch(operation.op) {
 | 
			
		||||
        case "add":
 | 
			
		||||
          this.add_handler([operation.value]);
 | 
			
		||||
          break;
 | 
			
		||||
        case "remove":
 | 
			
		||||
          this.remove_handler(pathArray[0]);
 | 
			
		||||
          break;
 | 
			
		||||
        case "replace":
 | 
			
		||||
          this.replace_handler(pathArray[0], pathArray[1], operation.value);
 | 
			
		||||
          break;
 | 
			
		||||
        default:
 | 
			
		||||
          break;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  add_handler(values, callback) {
 | 
			
		||||
    if (this.hasOwnProperty('add_')) {
 | 
			
		||||
      this.add_(values, callback);
 | 
			
		||||
    } else {
 | 
			
		||||
      this.add(values, callback);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  remove_handler(id) {
 | 
			
		||||
    if (this.hasOwnProperty('remove_')) {
 | 
			
		||||
      this.remove_(id);
 | 
			
		||||
    } else {
 | 
			
		||||
      this.remove(id);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  replace_handler(id, valueName, newValue) {
 | 
			
		||||
    let item = this.get('id', id);
 | 
			
		||||
    if (this.hasOwnProperty('add_'))
 | 
			
		||||
    item.values({valueName: operation.value});
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
RessourceList.options = {
 | 
			
		||||
  // default RessourceList options
 | 
			
		||||
  default: {page: 5, pagination: [{innerWindow: 4, outerWindow: 1}]},
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
export { RessourceList, };
 | 
			
		||||
		Reference in New Issue
	
	Block a user