Skip to content

Commit 404d374

Browse files
committed
Change styling, labels, add spinner
Also change preview size
1 parent 0ee2017 commit 404d374

File tree

6 files changed

+168
-131
lines changed

6 files changed

+168
-131
lines changed

.eslintrc.json

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"env": {
3+
"browser": true,
4+
"es6": true
5+
},
6+
"extends": "eslint:recommended",
7+
"globals": {
8+
"Atomics": "readonly",
9+
"SharedArrayBuffer": "readonly"
10+
},
11+
"parserOptions": {
12+
"ecmaVersion": 2018,
13+
"sourceType": "module"
14+
},
15+
"rules": {
16+
}
17+
}

CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
## [Unreleased]
2+
3+
## 2020-6-20
4+
5+
* Move buttons to the right and apply colors consistent with Salesforce styling guidelines
6+
* Show spinner during file upload
7+
* Change label from 'Version Details' to 'Version History'
8+
* Shrink preview size for faster loading and better visibility

force-app/main/default/lwc/fileUtils/fileUtils.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ const getDownloadUrl = (fileId) => {
99
};
1010

1111
const getPreviewUrl = (fileId) => {
12-
return `${getDocBaseUrl()}/sfc/servlet.shepherd/version/renditionDownload?rendition=THUMB720BY480&versionId=${fileId}&operationContext=CHATTER&page=0`;
12+
return `${getDocBaseUrl()}/sfc/servlet.shepherd/version/renditionDownload?rendition=THUMB240BY180&versionId=${fileId}&operationContext=CHATTER&page=0`;
1313
};
1414

1515
const getContentDocUrl = (fileId) => {

force-app/main/default/lwc/filesRelatedList/filesRelatedList.html

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
<template>
2-
<lightning-button label="New File" onclick={newFileUpload}></lightning-button>
3-
<lightning-button label="Delete" onclick={deleteFiles}></lightning-button>
4-
<c-custom-datatable
5-
columns={columns}
6-
key-field="id"
7-
data={files}
8-
onrowaction={handleRowAction}
9-
data-tablename="filestable"
10-
resize-column-disabled
11-
></c-custom-datatable>
2+
<lightning-card>
3+
<lightning-button slot="actions" label="Delete" onclick={deleteFiles}></lightning-button>
4+
<lightning-button slot="actions" label="New File" onclick={newFileUpload} variant="brand"></lightning-button>
5+
<c-custom-datatable
6+
columns={columns}
7+
key-field="id"
8+
data={files}
9+
onrowaction={handleRowAction}
10+
data-tablename="filestable"
11+
resize-column-disabled
12+
></c-custom-datatable>
13+
</lightning-card>
1214
<template if:true={showModal}>
1315
<section class="slds-modal slds-fade-in-open">
1416
<div class="slds-modal__container">
@@ -18,11 +20,14 @@
1820
</div>
1921
</header>
2022
<div class="slds-modal__content">
23+
<template if:true={showSpinner}>
24+
<lightning-spinner alternative-text="Loading" size="small"></lightning-spinner>
25+
</template>
2126
<template if:false={fileUpload}>
2227
<c-custom-datatable key-field="id" data={versionDetails} columns={versionColumns} data-tablename="versiontable"></c-custom-datatable>
2328
</template>
2429
<template if:true={fileUpload}>
25-
<lightning-layout multiple-rows="true">
30+
<lightning-layout multiple-rows="true" horizontal-align="end">
2631
<lightning-layout-item size="12" padding="around-small">
2732
<input type="file" name="file" class="file" onchange={handleFileChange} />
2833
</lightning-layout-item>
@@ -40,7 +45,7 @@
4045
<lightning-input type="text" class="reason" label="Reason for Change:"></lightning-input>
4146
</lightning-layout-item>
4247
<lightning-layout-item size="12" padding="around-small">
43-
<lightning-button onclick={handleUpload} label="Submit"></lightning-button>
48+
<lightning-button onclick={handleUpload} label="Submit" variant="brand" class="slds-float_right"></lightning-button>
4449
</lightning-layout-item>
4550
</lightning-layout>
4651
</template>

force-app/main/default/lwc/filesRelatedList/filesRelatedList.js

Lines changed: 42 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@ import { LightningElement, wire, api } from "lwc";
22
import getRelatedFiles from "@salesforce/apex/GetFilesController.getFilesList";
33
import getFileVersionDetails from "@salesforce/apex/GetFilesController.getFileVersionDetails";
44
import createContentDocLink from "@salesforce/apex/GetFilesController.createContentDocLink";
5-
import { deleteRecord, getRecord, createRecord } from "lightning/uiRecordApi";
5+
import { deleteRecord, createRecord } from "lightning/uiRecordApi";
66
import { ShowToastEvent } from "lightning/platformShowToastEvent";
77
import { refreshApex } from "@salesforce/apex";
88

99
const actions = [
10-
{ label: "Version Details", name: "show_details" },
10+
{ label: "Version History", name: "show_details" },
1111
{ label: "Upload New Version", name: "upload_version" },
1212
{ label: "Delete File", name: "delete" }
1313
];
@@ -57,6 +57,7 @@ export default class FilesRelatedList extends LightningElement {
5757
_currentDocId = null;
5858
showPreview = false;
5959
currentPreviewFileId = null;
60+
showSpinner = false;
6061

6162
handleFileNameChange(event) {
6263
this.fileTitle = event.detail.value;
@@ -96,13 +97,13 @@ export default class FilesRelatedList extends LightningElement {
9697
const action = event.detail.action.name;
9798
const row = event.detail.row;
9899
this._currentDocId = row.id;
99-
if (action == "show_details") {
100+
if (action === "show_details") {
100101
this.fileUpload = false;
101102
this.showVersionDetails();
102-
} else if (action == "upload_version") {
103+
} else if (action === "upload_version") {
103104
this.fileUpload = true;
104105
this.showModal = true;
105-
} else if (action == "delete") {
106+
} else if (action === "delete") {
106107
this._deleteRecord([this._currentDocId]);
107108
}
108109
} //}}}
@@ -112,8 +113,9 @@ export default class FilesRelatedList extends LightningElement {
112113
const selectedRowIds = this.template
113114
.querySelector("c-custom-datatable[data-tablename='filestable']")
114115
.getSelectedRows()
115-
.map(row => row.id);
116+
.map((row) => row.id);
116117
if (selectedRowIds.length > 0) {
118+
//eslint-disable-next-line
117119
let decision = confirm(
118120
`Are you sure you want to delete ${selectedRowIds.length} records?`
119121
);
@@ -125,7 +127,7 @@ export default class FilesRelatedList extends LightningElement {
125127

126128
_deleteRecord(recordIds) {
127129
//{{{
128-
Promise.all(recordIds.map(id => deleteRecord(id)))
130+
Promise.all(recordIds.map((id) => deleteRecord(id)))
129131
.then(() => {
130132
refreshApex(this._filesList);
131133
this.dispatchEvent(
@@ -135,7 +137,7 @@ export default class FilesRelatedList extends LightningElement {
135137
})
136138
);
137139
})
138-
.catch(err => {
140+
.catch((err) => {
139141
this.dispatchEvent(
140142
new ShowToastEvent({
141143
variant: "error",
@@ -157,30 +159,42 @@ export default class FilesRelatedList extends LightningElement {
157159
//{{{
158160
console.log(">> file version details");
159161
getFileVersionDetails({ fileId: this._currentDocId })
160-
.then(result => {
162+
.then((result) => {
161163
console.log(">> version details " + JSON.stringify(result));
162164
this.versionDetails = result;
163165
this.showModal = true;
164166
})
165-
.catch(err => {
167+
.catch((err) => {
166168
console.error(JSON.stringify(err));
167169
});
168170
} //}}}
169171

170172
handleUpload(event) {
171173
//{{{
172174
event.preventDefault();
173-
const file = this.template.querySelector("input.file").files[0];
174-
const reasonForChange = this.template.querySelector(
175-
"lightning-input.reason"
176-
).value;
177-
const reader = new FileReader();
178-
let fileData = "";
179-
reader.onload = () => {
180-
fileData = reader.result;
181-
this._uploadFile(file, fileData, reasonForChange);
182-
};
183-
reader.readAsDataURL(file);
175+
this.showSpinner = true;
176+
try {
177+
const file = this.template.querySelector("input.file").files[0];
178+
const reasonForChange = this.template.querySelector(
179+
"lightning-input.reason"
180+
).value;
181+
const reader = new FileReader();
182+
let fileData = "";
183+
reader.onload = () => {
184+
fileData = reader.result;
185+
this._uploadFile(file, fileData, reasonForChange);
186+
};
187+
reader.readAsDataURL(file);
188+
} catch (err) {
189+
console.error(err);
190+
this.dispatchEvent(
191+
new ShowToastEvent({
192+
variant: "error",
193+
message: `File upload failed: ${err.body.message || err.body.error}`
194+
})
195+
);
196+
this.showSpinner = false;
197+
}
184198
} //}}}
185199

186200
_uploadFile(file, fileData, reasonForChange) {
@@ -195,7 +209,8 @@ export default class FilesRelatedList extends LightningElement {
195209
payload.ContentDocumentId = this._currentDocId;
196210
}
197211
createRecord({ apiName: "ContentVersion", fields: payload })
198-
.then(cVersion => {
212+
.then((cVersion) => {
213+
this.showSpinner = false;
199214
if (!this._currentDocId) {
200215
this._createContentDocLink(cVersion.id);
201216
} else {
@@ -208,13 +223,14 @@ export default class FilesRelatedList extends LightningElement {
208223
);
209224
}
210225
})
211-
.catch(err => {
226+
.catch((err) => {
212227
this.dispatchEvent(
213228
new ShowToastEvent({
214229
variant: "error",
215-
message: `An error occurred: ${err.body.message || err.body.error}`
230+
message: `File upload failed: ${err.body.message || err.body.error}`
216231
})
217232
);
233+
this.showSpinner = false;
218234
});
219235
} //}}}
220236

@@ -224,7 +240,7 @@ export default class FilesRelatedList extends LightningElement {
224240
contentVersionId: cvId,
225241
recordId: this.recordId
226242
})
227-
.then(cId => {
243+
.then((cId) => {
228244
this.closeModal();
229245
this.dispatchEvent(
230246
new ShowToastEvent({
@@ -233,7 +249,7 @@ export default class FilesRelatedList extends LightningElement {
233249
})
234250
);
235251
})
236-
.catch(err => {
252+
.catch((err) => {
237253
this.dispatchEvent(
238254
new ShowToastEvent({
239255
variant: "error",

0 commit comments

Comments
 (0)