diff --git a/package-lock.json b/package-lock.json index d0b7944..5da9317 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "@ordercloud/angular-cms-components", - "version": "1.0.0-beta.13", + "version": "1.0.0-beta.15", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/projects/lib/src/admin/components/asset-list/asset-list.component.html b/projects/lib/src/admin/components/asset-list/asset-list.component.html index 5f89b3a..49c95c4 100644 --- a/projects/lib/src/admin/components/asset-list/asset-list.component.html +++ b/projects/lib/src/admin/components/asset-list/asset-list.component.html @@ -30,6 +30,8 @@

Assets

Assets { - if (this.resourceID && this.resourceType) { - this.assets = await this.listAssetsPerResource() - .catch((ex) => ex) - .finally(() => { - this.loading = false; - this.spinner.hide(); - }) - } else { - this.listAssets(this.assetTypes[0], null); + if (!this.resourceType || !this.resourceID) { + throw new Error( + 'cms-asset-list is missing required props resourceType or resourceID' + ); } + await this.listAssets(this.selectedTab, null); } - listAssets(assetType: AssetType, searchTerm: string) { + async listAssets(assetType: AssetType, searchTerm: string) { + console.log('this is hit'); this.spinner.show(); + // TODO: options are not used yet - either handle searchTerm client side or wait for Oliver's updated endpoints let options: ListArgs = { - filters: { Type: assetType }, - }; + filters: { Type: assetType } + } if (searchTerm) { options = { ...options, search: searchTerm, searchOn: ['Title'] }; } - this.loading = true; - this.spinner.show(); - return HeadStartSDK.Assets.List(options) - .then((assets) => { - this.assets = assets.Items; - }) + this.assets = await this.listAssetsPerResource() + .then((assets) => assets.filter(a => a.Type === assetType)) + .catch((ex) => ex) .finally(() => { this.loading = false; this.spinner.hide(); diff --git a/projects/lib/src/admin/components/asset-update/asset-update.component.ts b/projects/lib/src/admin/components/asset-update/asset-update.component.ts index 2be0992..747a89d 100644 --- a/projects/lib/src/admin/components/asset-update/asset-update.component.ts +++ b/projects/lib/src/admin/components/asset-update/asset-update.component.ts @@ -1,6 +1,7 @@ -import { Component, OnInit, Input, Output, EventEmitter, ViewChild, ElementRef } from '@angular/core'; -import { HeadStartSDK } from '@ordercloud/headstart-sdk'; -import { FormGroup, FormBuilder, Validators } from '@angular/forms'; +import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { AssetAssignment, HeadStartSDK } from '@ordercloud/headstart-sdk'; +import { ResourceType } from 'projects/lib/src/shared/models/resource-type.interface'; @Component({ selector: 'cms-asset-update', @@ -13,6 +14,8 @@ export class AssetUpdateComponent implements OnInit { @Input() asset?: any; @Input() assetType: any; + @Input() resourceType: ResourceType; + @Input() resourceID: string; @Input() isNew: boolean; @Output() onSubmit = new EventEmitter(); @Output() onDelete = new EventEmitter(); @@ -23,6 +26,11 @@ export class AssetUpdateComponent implements OnInit { ) { } ngOnInit(): void { + if (!this.resourceType || !this.resourceID) { + throw new Error( + 'cms-asset-update is missing required props resourceType or resourceID' + ); + } this.setForm(); } @@ -61,13 +69,20 @@ export class AssetUpdateComponent implements OnInit { saveChanges(asset) { const updatedAsset = asset.value; if (this.isNew) { - return HeadStartSDK.Upload.UploadAsset(updatedAsset).then(() => { - this.isNew = false; - this.onSubmit.emit({ - action: 'UploadAsset', - asset: updatedAsset - }); - }); + return HeadStartSDK.Upload.UploadAsset(updatedAsset).then((response) => { + const assignment: AssetAssignment = { + ResourceType: this.resourceType, + ResourceID: this.resourceID, + AssetID: response.ID + } + return HeadStartSDK.Assets.SaveAssetAssignment(assignment).then(() => { + this.isNew = false; + this.onSubmit.emit({ + action: 'UploadAsset', + asset: response + }); + }) + }) } else { return HeadStartSDK.Assets.Save(updatedAsset.ID, updatedAsset).then(() => { this.onSubmit.emit({ diff --git a/projects/lib/src/admin/components/asset-upload/asset-upload.component.html b/projects/lib/src/admin/components/asset-upload/asset-upload.component.html index b9869de..967d0dd 100644 --- a/projects/lib/src/admin/components/asset-upload/asset-upload.component.html +++ b/projects/lib/src/admin/components/asset-upload/asset-upload.component.html @@ -1,7 +1,9 @@