0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Summer '24 で認定 JavaScript デベロッパー資格を更新する

Last updated at Posted at 2025-01-14

Summer '24 で認定 JavaScript デベロッパー資格を更新する
https://trailhead.salesforce.com/ja/content/learn/modules/javascript-developer-i-certification-maintenance-summer-24/maintain-your-javascript-developer-i-certification-for-summer-24

うまくいかなかったので、メモっておく

boatPicker.js
import { LightningElement, wire } from 'lwc';
import { getRecord, getFieldValue } from 'lightning/uiRecordApi';
import BOAT_PICTURE_FIELD from "@salesforce/schema/Boat__c.Picture__c";
import BOAT_NAME_FIELD from "@salesforce/schema/Boat__c.Name";
import BOAT_OWNER_FIELD from "@salesforce/schema/Boat__c.Contact__r.Name";
import BOAT_PRICE_FIELD from "@salesforce/schema/Boat__c.Price__c";
import BOAT_TYPE_FIELD from "@salesforce/schema/Boat__c.BoatType__r.Name";
const BOAT_FIELDS = [BOAT_PICTURE_FIELD, BOAT_NAME_FIELD,BOAT_OWNER_FIELD, BOAT_PRICE_FIELD, BOAT_TYPE_FIELD];
export default class Boats extends LightningElement {   
    boatId;
    get showBoat() {
        return this.boatId != null;
    }
    @wire(getRecord, { recordId: '$boatId', fields: BOAT_FIELDS  })
    boatDetail;
    displayInfo = {
        primaryField: 'Name',
        additionalFields: ['BoatType__r.Name'],
    };
    matchingInfo = {
        primaryField: { fieldPath: 'Name' },
        additionalFields: [{ fieldPath: 'BoatType__r.Name' }],
    };
    // BEGIN GETTERS FOR BOAT FIELDS
    get boatPicture() {
        return getFieldValue(this.boatDetail.data, BOAT_PICTURE_FIELD);
    }
    get boatName() {
        return getFieldValue(this.boatDetail.data, BOAT_NAME_FIELD);
    }
    get boatOwner() {
        return getFieldValue(this.boatDetail.data, BOAT_OWNER_FIELD);
    }
    get boatPrice() {
        return getFieldValue(this.boatDetail.data, BOAT_PRICE_FIELD);
    }
    get boatType() {
        return getFieldValue(this.boatDetail.data, BOAT_TYPE_FIELD);
    }
    // END GETTERS FOR BOAT FIELDS
    get backgroundStyle() {
        if (!this.showBoat) {
            return '';
        } else {
            return `background-image:url('${this.boatPicture}')`;
        }
    }
    handleChange(event) {
        this.boatId = event.detail.recordId;
    }
}
boatPicker.html
<template>
    <lightning-card title="Boat Browser">
        <div class="slds-var-p-horizontal_medium">
            <div class="slds-var-m-bottom_medium">
                <lightning-record-picker
                    label="Browse our inventory"
                    placeholder="Search by boat name or type"
                    object-api-name="Boat__c"
                    value={boatId}
                    display-info={displayInfo}
                    matching-info={matchingInfo}
                    onchange={handleChange}>
                </lightning-record-picker>
            </div>
            <div lwc:if={showBoat}>
                <div class="tile slds-var-m-vertical_medium" >
                    <div style={backgroundStyle} class="tile"></div>
                </div>
                <div class="slds-text-heading_medium slds-border_bottom slds-var-m-bottom_medium">{boatName}</div>
                <div>Captain: {boatOwner}</div>
                <p>Price: <lightning-formatted-number maximum-fraction-digits="0" value={boatPrice} format-style="currency" currency-code="USD"></lightning-formatted-number></p>
                <div>Type: {boatType}</div>
            </div>
        </div>
    </lightning-card>
</template>
boatPicker.css
.tile {
    width: 100%;
    height: 220px;
    padding: 1px !important;
    background-position: center;
    background-size: cover;
    border-radius: 5px;
  }
boatPicker.js-meta.xml
<?xml version="1.0"?>
<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata">
    <apiVersion>61.0</apiVersion>
    <isExposed>true</isExposed>
    <targets>
        <target>lightning__HomePage</target>
    </targets>
</LightningComponentBundle>

ディプロイ後、忘れずに
ServiceアプリケーションのHomeに適当に配置しおく。

エラー対応:

最初は下記のエラーが表示されるが、
新規でPlayground作成、LWCのAPIバージョンは61にしたらエラーが無くなっった。

In the boatPicker controller, we can’t find the proper configuration of which additional fields to search.

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?