zoukankan      html  css  js  c++  java
  • Angular 项目TaskService

    增删改查嗯ProjectService差不多

    import { Task } from './../domain';
    import { HttpClient } from '@angular/common/http';
    import { Inject, Injectable } from '@angular/core';
    import { count, map, mapTo, mergeMap, switchMap } from 'rxjs/operators';
    import { from, Observable } from 'rxjs';
    
    @Injectable({
      providedIn: 'root'
    })
    export class TaskService {
      private readonly domain = 'tasks';
      private headers = new Headers({
        'Content-type': 'application/json'
      });
      constructor(private httpClient: HttpClient, @Inject('BASE_CONFIG') private config: any) { }
    
      //POST
      add(task: Task): Observable<Task> {
        task.id = undefined;
        const uri = `${this.config.uri}/${this.domain}`;
        return this.httpClient.post(uri, JSON.stringify(task)).pipe(
          map(res => res as Task)
        )
      }
    
      //PUT/patch
      update(task: Task): Observable<Task> {
        const uri = `${this.config.uri}/${this.domain}/${task.id}`;
        const toUpdate = {
          desc: task.desc,
          ownerId: task.ownerId,
          participantIds: task.participantIds,
          dueDate: task.dueDate,
          reminder: task.reminder,
          priority: task.priority,
          remark: task.remark
        };
        return this.httpClient.patch(uri, JSON.stringify(toUpdate)).pipe(
          map(res => res as Task)
        )
      }
    
      //DELETE
      delete(task: Task): Observable<Task> {
        const uri = `${this.config.uri}/${this.domain}/${task.id}`;
        return this.httpClient.delete(uri).pipe(
          mapTo(task)
        )
      }
    
      //GET
      get(taskId: string): Observable<Task[]> {
        const uri = `${this.config.uri}/${this.domain}`;
        return this.httpClient.get(uri, { params: { 'taskId': taskId } }).pipe(
          map(res => res as Task[])
        )
      }
    
    }

    把所有Project相关的列表,以及相关任务全部load出来

      getByLists(lists: TaskList[]): Observable<Task[]> {
        return from(lists)
          .pipe(
            mergeMap((list: TaskList) => this.get(<string>list.id)),
            reduce((tasks: Task[], t: Task[]) => [...tasks, ...t], [])
          )
      }

    完成任务,取消完成任务

    complete(task: Task): Observable<Task> {
        const uri = `${this.config.uri}/${this.domain}/${task.id}`;
        return this.httpClient.patch<Task>(
          uri,
          JSON.stringify({ completed: !task.completed }),
          { headers: this.headers }
        ).pipe(map(res => res as Task));
      }

    移动Task

      move(taskId: string, taskListId: string): Observable<Task> {
        const uri = `${this.config.uri}/${this.domain}/${taskId}`;
        return this.httpClient.patch<Task>(
          uri,
          JSON.stringify({ taskListId: taskListId }),
          { headers: this.headers }
        );
      }

    移动全部task: 移动srcList中所有任务到target列表

      moveAll(srcListId: string, targetListId: string): Observable<Task[]> {
        return this.get(srcListId).pipe(
          mergeMap((tasks: Task[]) => from(tasks)),
          mergeMap((task: Task) => this.move(<string>task.id, targetListId)),
          reduce((arrTasks: Task[], t: Task) => {
            return [...arrTasks, t];
          }, [])
        );
      }

    如果觉得本文对您有帮助~可以支付宝(左)或微信支持一下:


    看到小伙伴打赏时给我写一些鼓励的话,真的非常感动,谢谢你们。


    我开了个微信公众号(第三个二维码)用来分享自己的职场英语相关学习经验,感兴趣可以关注,我会不断更新~


    微信打赏微信公众号

  • 相关阅读:
    SQLServer基本函数
    XP极限编程
    中日完全相同的四字成语
    SQL Server和Oracle的常用函数对比
    HTTP请求头概述
    XP(Extreme Programming)
    查看汉字各种编码值
    XP极限编程(中英文对照)
    http 头信息详解
    ASP内置对象详解
  • 原文地址:https://www.cnblogs.com/starof/p/14439205.html
Copyright © 2011-2022 走看看