This commit is contained in:
Christophe Coenraets 2018-04-03 15:20:36 -04:00
Родитель f5b84a6b0a
Коммит d64515ee16
86 изменённых файлов: 1595 добавлений и 188 удалений

Просмотреть файл

@ -0,0 +1,52 @@
<aura:component implements="flexipage:availableForAllPageTypes" controller="PropertyController" access="global">
<aura:attribute name="fullScreen" type="Boolean" default="false" />
<aura:attribute name="atRiskProperties" type="Property__c[]" />
<aura:handler name="init" value="{! this }" action="{! c.onInit }"/>
<article class="slds-card">
<div class="slds-grid slds-einstein-header slds-card__header">
<header class="slds-media slds-media_center slds-has-flexi-truncate">
<div class="slds-grid slds-grid_vertical-align-center slds-size_3-of-4 slds-medium-size_2-of-3">
<div class="slds-media__body">
<h2 class="slds-truncate" title="Einstein (10+)">
<a href="javascript:void(0);" class="slds-card__header-link" title="Einstein (10+)">
<span class="slds-text-heading_small">Action List</span>
</a>
</h2>
</div>
</div>
<div class="slds-einstein-header__figure slds-size_1-of-4 slds-medium-size_1-of-3"></div>
</header>
</div>
<div class="slds-card__body slds-card__body_inner">
Einstein predicts the following properties are at risk and will stay on the market for too long. Click Optimize to fix the issues.
<aura:iteration items="{!v.atRiskProperties}" var="property" indexVar="i">
<lightning:layout verticalAlign="center" class="row">
<lightning:layoutItem flexibility="grow">
{!property.Address__c}, {!property.City__c}
<p><lightning:formattedNumber value="{!property.Price__c}" style="currency" currencyCode="USD" minimumFractionDigits="0" maximumFractionDigits="0"/></p>
{!property.Predicted_Days_On_Market__c}
</lightning:layoutItem>
<lightning:layoutItem>
<lightning:button label="Optimize" onclick="{!c.optimize}" name="{!property.Id}"/>
</lightning:layoutItem>
</lightning:layout>
</aura:iteration>
</div>
</article>
<aura:if isTrue="{!v.fullScreen==true}">
<div role="dialog" tabindex="-1" aria-labelledby="header43" class="slds-modal slds-fade-in-open">
<div class="slds-modal__container slds-card">
<lightning:flow aura:id="flow" onstatuschange="{!c.flowStatusChange}"/>
</div>
<!-- <div class="btn slds-modal__close close x-large">
<lightning:buttonIcon variant="bare" onclick="{!c.closeDialog}" size="large" iconName="utility:close" />
</div> -->
</div>
<div class="slds-backdrop slds-backdrop--open"></div>
</aura:if>
</aura:component>

Просмотреть файл

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<AuraDefinitionBundle xmlns="urn:metadata.tooling.soap.sforce.com" fqn="ActivityList">
<AuraDefinitionBundle xmlns="urn:metadata.tooling.soap.sforce.com" fqn="ActionList">
<apiVersion>42.0</apiVersion>
<description>A Lightning Component Bundle</description>
</AuraDefinitionBundle>

Просмотреть файл

@ -0,0 +1,27 @@
.THIS {
}
.THIS .slds-modal__container {
height: 500px;
width: 90%;
max-width: initial;
margin: auto;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
.THIS .slds-modal {
}
.THIS .slds-modal__close {
position: absolute;
top: 100px;
right: 5%;
}
.THIS .slds-card__body_inner .slds-grid {
margin-top: 12px;
}

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 661 B

После

Ширина:  |  Высота:  |  Размер: 661 B

Просмотреть файл

@ -0,0 +1,24 @@
({
onInit : function(component, event, helper) {
var property = component.get("v.property");
var action = component.get("c.getAtRiskProperties");
action.setCallback(this, function(response){
component.set("v.atRiskProperties", response.getReturnValue());
});
$A.enqueueAction(action);
},
optimize : function(component, event, helper) {
var propertyId = event.getSource().get("v.name");
component.set("v.fullScreen", true);
var flow = component.find("flow");
flow.startFlow("Optimize_Listing", [{name: 'recordId', type: 'String', value: propertyId}]);
},
flowStatusChange : function(component, event, helper) {
if (event.getParam("status") === "FINISHED") {
component.set("v.fullScreen", false);
}
}
})

Просмотреть файл

@ -0,0 +1,4 @@
({
helperMethod : function(component) {
},
})

Просмотреть файл

@ -1,23 +0,0 @@
<aura:component implements="flexipage:availableForAllPageTypes" access="global">
<article class="slds-card">
<div class="slds-grid slds-einstein-header slds-card__header">
<header class="slds-media slds-media_center slds-has-flexi-truncate">
<div class="slds-grid slds-grid_vertical-align-center slds-size_3-of-4 slds-medium-size_2-of-3">
<div class="slds-media__body">
<h2 class="slds-truncate" title="Einstein (10+)">
<a href="javascript:void(0);" class="slds-card__header-link" title="Einstein (10+)">
<span class="slds-text-heading_small">Activity List</span>
</a>
</h2>
</div>
</div>
<div class="slds-einstein-header__figure slds-size_1-of-4 slds-medium-size_1-of-3"></div>
</header>
</div>
<div class="slds-card__body slds-card__body_inner">
<a href="https://connect-ruby-661-dev-ed.lightning.force.com/one/one.app#/n/Optimize_Property">Optimize Listing</a>
</div>
</article>
</aura:component>

Просмотреть файл

@ -1,2 +0,0 @@
.THIS {
}

Просмотреть файл

@ -1,10 +1,10 @@
<aura:component implements="lightning:availableForFlowScreens" access="global">
<aura:component implements="lightning:availableForFlowScreens" controller="PropertyController" access="global">
<ltng:require scripts="{!$Resource.cache}" afterScriptsLoaded="{!c.onJSLoaded}" />
<aura:attribute name="recordId" type="Id" access="global" />
<aura:attribute name="recordId" type="String" access="global" />
<aura:attribute name="columns" type="List" />
<aura:attribute name="properties" type="List" />
<aura:attribute name="comparableProperties" type="List" />
<aura:handler name="init" value="{! this }" action="{! c.onInit }"/>
<div>
@ -23,9 +23,8 @@
<c:PropertyView recordId="{!v.recordId}"/>
</lightning:layoutItem>
<lightning:layoutItem class="content">
<header>This listing doesn't compare favorably with similar properties in the same neighborhood. Take a look at
the most competitive properties below:</header>
<lightning:datatable data="{!v.properties}" columns="{!v.columns}" keyField="Id" hideCheckboxColumn="true" />
<header>First, examine how your listing stacks up against comprable properties nearby. Here is a list of competitive listings:</header>
<lightning:datatable data="{!v.comparableProperties}" columns="{!v.columns}" keyField="Id" hideCheckboxColumn="true" />
</lightning:layoutItem>
</lightning:layout>

Просмотреть файл

@ -1,5 +1,5 @@
.THIS {
height: 380px;
height: 400px;
}
.THIS header {

Просмотреть файл

@ -1,3 +1,3 @@
<design:component >
<design:attribute name="recordId" label="Record Id" />
</design:component>

Просмотреть файл

@ -1,19 +1,24 @@
({
onJSLoaded: function(component, event, helper) {
component.set("v.recordId", window.recordId);
onInit: function(component, event, helper) {
component.set('v.columns', [
{label: 'Address', fieldName: 'Address__c', type: 'text', initialWidth: 150},
{label: 'City', fieldName: 'City__c', type: 'text'},
{label: 'Price', fieldName: 'Price__c', type: 'currency'},
{label: 'Beds', fieldName: 'Beds__c', type: 'number'},
{label: 'Baths', fieldName: 'Baths__c', type: 'number'},
{label: 'SQFT', fieldName: 'Sqft__c', type: 'number'},
{label: 'Predicted Days', fieldName: 'Days_Prediction__c', type: 'number', initialWidth: 160}
{label: 'Price', fieldName: 'Price__c', type: 'currency'},
{label: 'Predicted Days', fieldName: 'Predicted_Days_On_Market__c', type: 'number', initialWidth: 160}
]);
helper.loadComparableRentals(component);
var action = component.get("c.getComparableProperties");
action.setStorable();
action.setParams({
propertyId: component.get("v.recordId")
});
action.setCallback(this, function(response){
component.set("v.comparableProperties", response.getReturnValue());
});
$A.enqueueAction(action);
},

Просмотреть файл

@ -1,8 +1,6 @@
<aura:component implements="lightning:availableForFlowScreens" access="global">
<ltng:require scripts="{!$Resource.cache}" afterScriptsLoaded="{!c.onJSLoaded}" />
<aura:attribute name="recordId" type="Id" access="global" />
<aura:attribute name="recordId" type="String" default="" access="global" />
<aura:attribute name="property" type="Property__c" />
<force:recordData aura:id="propertyService" recordId="{!v.recordId}"
@ -32,9 +30,9 @@
<div class="slds-align_absolute-center">
<ul class="slds-list_dotted">
<li>You compared this listing to comparable rentals in the neighborhood.</li>
<li>You reduced the price to <lightning:formattedNumber value="{!v.property.Price__c}" style="currency" currencyCode="USD" minimumFractionDigits="0" maximumFractionDigits="0"/></li>
<li>You set the price to <lightning:formattedNumber value="{!v.property.Price__c}" style="currency" currencyCode="USD" minimumFractionDigits="0" maximumFractionDigits="0"/></li>
<li>Interested renters have been notified of the new price.</li>
<li>You have added 2 pictures to the listing.</li>
<li>You have added pictures to the listing.</li>
</ul>
</div>
<div class="footer slds-align_absolute-center">This listing now compares favorably with similar properties in the neighborhood.</div>

Просмотреть файл

@ -1,5 +1,5 @@
.THIS {
height: 380px;
height: 400px;
}
.THIS header {

Просмотреть файл

@ -1,3 +1,3 @@
<design:component >
<design:attribute name="recordId" label="Property Id" />
</design:component>

Просмотреть файл

@ -1,7 +1,4 @@
({
onJSLoaded : function(component, event, helper) {
component.set("v.recordId", window.recordId);
var propertyService = component.find("propertyService");
propertyService.reloadRecord();
myMethod : function(component, event, helper) {
},
})

Просмотреть файл

@ -1,10 +1,10 @@
<aura:component implements="lightning:availableForFlowScreens" controller="PropertyController" access="global">
<ltng:require scripts="{!$Resource.cache}" afterScriptsLoaded="{!c.onJSLoaded}" />
<aura:attribute name="recordId" type="Id" access="global" />
<aura:attribute name="recordId" type="String" default="" access="global" />
<aura:attribute name="files" type="Object[]" />
<aura:handler name="init" value="{! this }" action="{! c.onInit }"/>
<div>
<div class="slds-text-heading_medium slds-align_absolute-center title">Let's get this property moving!</div>
@ -22,7 +22,7 @@
<c:PropertyView recordId="{!v.recordId}"/>
</lightning:layoutItem>
<lightning:layoutItem flexibility="grow" class="content">
<header>This property has only one picture. Properties that have three pictures or more sell faster. Use this screen to add pictures.</header>
<header>This property has {!v.files.length} pictures. Properties that have more pictures sell faster. Use this screen to add pictures.</header>
<aura:if isTrue="{!v.files.length > 0}">
<lightning:carousel disableAutoRefresh="false" disableAutoScroll="true" class="slds-align_absolute-center">
@ -31,10 +31,10 @@
</aura:iteration>
</lightning:carousel>
<aura:set attribute="else">
<div class="slds-align_absolute-center">
<lightning:icon iconName="utility:photo" size="large" />
<p>There are currently no pictures for this property.</p>
</div>
<div class="no-pic-msg">
<div class="slds-align_absolute-center"><lightning:icon iconName="utility:photo" size="large" /></div>
<div class="slds-align_absolute-center">There are currently no pictures for this property.</div>
</div>
</aura:set>
</aura:if>

Просмотреть файл

@ -1,5 +1,5 @@
.THIS {
height: 380px;
height: 400px;
}
.THIS .slds-carousel {
@ -31,4 +31,8 @@
.THIS .title {
padding-top: 4px;
}
.THIS .no-pic-msg {
margin: 12px 0 24px 0;
}

Просмотреть файл

@ -1,3 +1,3 @@
<design:component >
<design:attribute name="recordId" label="Property Id" />
</design:component>

Просмотреть файл

@ -1,6 +1,5 @@
({
onJSLoaded: function (component, event, helper) {
component.set("v.recordId", window.recordId);
onInit: function (component, event, helper) {
helper.loadPictures(component);
},

Просмотреть файл

@ -1,8 +1,6 @@
<aura:component implements="lightning:availableForFlowScreens" access="global">
<ltng:require scripts="{!$Resource.cache}" afterScriptsLoaded="{!c.onJSLoaded}" />
<aura:attribute name="recordId" type="Id" access="global" />
<aura:attribute name="recordId" type="String" access="global" />
<aura:attribute name="property" type="Property__c" />
<force:recordData aura:id="propertyService" recordId="{!v.recordId}" targetFields="{!v.property}" fields="['Id','Price__c']" mode="EDIT"/>
@ -24,7 +22,7 @@
<c:PropertyView recordId="{!v.recordId}"/>
</lightning:layoutItem>
<lightning:layoutItem flexibility="grow" class="content">
<header>This property doesn't compare favorably with similar properties in the neighborhood. We recommend you adjust the price to increase the appeal of the listing.</header>
<header>Use the tool below to adjust the price of your property based on comparable listings nearby.</header>
<div class="slds-align_absolute-center">
<c:PriceOptimizationWidget price="{!v.property.Price__c}" />
</div>

Просмотреть файл

@ -1,5 +1,5 @@
.THIS {
height: 380px;
height: 400px;
}
.THIS header {

Просмотреть файл

@ -1,3 +1,3 @@
<design:component >
<design:attribute name="recordId" label="Property Id" />
</design:component>

Просмотреть файл

@ -1,9 +1,4 @@
({
onJSLoaded : function(component, event, helper) {
component.set("v.recordId", window.recordId);
var propertyService = component.find("propertyService");
propertyService.reloadRecord();
},
onPriceChange : function(component, event, helper) {
var property = component.get("v.property");

Просмотреть файл

@ -0,0 +1,6 @@
<aura:documentation>
<aura:description>Documentation</aura:description>
<aura:example name="ExampleName" ref="exampleComponentName" label="Label">
Example Description
</aura:example>
</aura:documentation>

Просмотреть файл

@ -0,0 +1,50 @@
<aura:component implements="flexipage:availableForAllPageTypes,force:hasRecordId" access="global">
<aura:attribute name="recordId" type="Id" />
<aura:attribute name="property" type="Property__c" />
<force:recordData recordId="{!v.recordId}" targetFields="{!v.property}" fields="['Id', 'Predicted_Days_on_Market__c']" />
<article class="slds-card">
<div class="slds-grid slds-einstein-header slds-card__header">
<header class="slds-media slds-media_center slds-has-flexi-truncate">
<div class="slds-grid slds-grid_vertical-align-center slds-size_3-of-4 slds-medium-size_2-of-3">
<div class="slds-media__body">
<h2 class="slds-truncate" title="Einstein (10+)">
<a href="javascript:void(0);" class="slds-card__header-link" title="Einstein (10+)">
<span class="slds-text-heading_small">Predicted Days on Market</span>
</a>
</h2>
</div>
</div>
<div class="slds-einstein-header__figure slds-size_1-of-4 slds-medium-size_1-of-3"></div>
</header>
</div>
<div class="slds-card__body slds-card__body_inner">
<div class="prediction slds-align_absolute-center">{!v.property.Predicted_Days_on_Market__c}</div>
<lightning:layout>
<lightning:layoutItem size="6">
<div class="factors">
<h2>Top positive factors</h2>
<ul>
<li><span class="ring-green"></span>Location</li>
<li><span class="ring-green"></span>Amenities</li>
<li><span class="ring-green"></span>School district</li>
</ul>
</div>
</lightning:layoutItem>
<lightning:layoutItem size="6">
<div class="factors">
<h2>Top negative factors</h2>
<ul>
<li><span class="ring-red"></span>Number of pictures</li>
<li><span class="ring-red"></span>Price</li>
<li><span class="ring-red"></span>Number of open houses</li>
</ul>
</div>
</lightning:layoutItem>
</lightning:layout>
</div>
</article>
</aura:component>

Просмотреть файл

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<AuraDefinitionBundle xmlns="urn:metadata.tooling.soap.sforce.com" fqn="PredictedDaysOnMarket">
<apiVersion>42.0</apiVersion>
<description>A Lightning Component Bundle</description>
</AuraDefinitionBundle>

Просмотреть файл

@ -0,0 +1,48 @@
.THIS {
padding-bottom: 8px;
}
.THIS .prediction {
width: 60px;
height: 60px;
text-align: center;
/* padding: 12px; */
border: solid 3px #c23934;
border-radius: 50%;
color: #c23934;
margin-bottom: 8px;
/* margin: 8px auto; */
font-size: 24px;
/* font-weight: 300; */
}
.THIS .factors {
border: solid 1px #EEE;
border-radius: 4px;
text-align: left;
margin: 0 4px;
padding: 8px;
height: 96px;
}
.THIS .ring-red {
width: 10px;
height: 10px;
border: solid 2px #c23934;
border-radius: 50%;
display: inline-block;
margin-right: 4px;
}
.THIS .ring-green {
width: 10px;
height: 10px;
border: solid 2px #04844b;
border-radius: 50%;
display: inline-block;
margin-right: 4px;
}
.THIS .slds-card__body_inner {
padding: 0 0.2rem;
margin-bottom: .3rem;
}

Просмотреть файл

@ -0,0 +1,3 @@
<design:component label="Predicted Days On Market">
</design:component>

Просмотреть файл

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="120px" height="120px" viewBox="0 0 120 120" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<path d="M120,108 C120,114.6 114.6,120 108,120 L12,120 C5.4,120 0,114.6 0,108 L0,12 C0,5.4 5.4,0 12,0 L108,0 C114.6,0 120,5.4 120,12 L120,108 L120,108 Z" id="Shape" fill="#2A739E"/>
<path d="M77.7383308,20 L61.1640113,20 L44.7300055,63.2000173 L56.0543288,63.2000173 L40,99.623291 L72.7458388,54.5871812 L60.907727,54.5871812 L77.7383308,20 Z" id="Path-1" fill="#FFFFFF"/>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 661 B

Просмотреть файл

@ -0,0 +1,5 @@
({
// Your renderer method overrides go here
})

Просмотреть файл

@ -1,3 +1,3 @@
<design:component >
<design:component label="Property Carousel">
</design:component>

Просмотреть файл

@ -7,10 +7,6 @@
helper.loadPictures(component);
},
/*
When a new Property is selected (in another component), load the corresponding
property record.
*/
recordChangeHandler: function (component, event, helper) {
component.set("v.recordId", event.getParam("recordId"));
helper.loadPictures(component);

Просмотреть файл

@ -1,4 +1,4 @@
<design:component >
<design:component label="Property Filters">
<design:attribute name="einsteinVisionModelId"
label="Einstein Vision Model Id"
description="Einstein Vision Model Id" />

Просмотреть файл

@ -29,4 +29,4 @@
helper.fireFilterChangeEvent(component);
},
})
})

Просмотреть файл

@ -1,3 +1,3 @@
<design:component >
<design:component label="Property List Map">
</design:component>

Просмотреть файл

@ -11,7 +11,7 @@
<div>
<!-- <img src="{!v.property.Picture__c}" class="pic" /> -->
<img src="https://s3-us-west-1.amazonaws.com/sfdc-demo/apt/121chestnut.jpg" class="pic" />
<img src="{!v.property.Picture__c}" class="pic" />
<lightning:formattedAddress street="{!v.property.Address__c}" city="{!v.property.City__c}" province="{!v.property.State__c}"
postalCode="{!v.property.Zip__c}" />
<p>Bedrooms: {!v.property.Beds__c} Bathrooms: {!v.property.Baths__c}</p>

Просмотреть файл

@ -1,4 +1,8 @@
.THIS img {
.THIS {
width: 210px;
}
.THIS .pic {
width: 210px;
max-width: inherit;
margin-bottom: 8px;

Просмотреть файл

@ -1,3 +1,3 @@
<design:component >
<design:component label="360 Viewer">
</design:component>

Просмотреть файл

@ -2,7 +2,7 @@
<aura:attribute name="modelId" type="String" />
<aura:attribute name="files" type="Object[]" />
<aura:attribute name="predictions" type="Object[]" />
<aura:attribute name="predictions" type="List" />
<aura:attribute name="waiting" type="Boolean" default="false" />
<aura:attribute name="pictureSrc" type="String" />

Просмотреть файл

@ -1,30 +1,29 @@
({
readFile: function(component, helper, file) {
console.log('readfile: ' + new Date());
if (!file.type.match(/(image.*)/)) {
return alert('Image file not supported');
}
var reader = new FileReader();
reader.onloadend = function() {
console.log('readfile onloadend: ' + new Date());
var dataURL = reader.result;
component.set("v.pictureSrc", dataURL);
helper.upload(component, file, dataURL.match(/,(.*)$/)[1]);
};
reader.readAsDataURL(file);
},
readFile: function (component, helper, file) {
if (!file.type.match(/(image.*)/)) {
return alert('Image file not supported');
}
var reader = new FileReader();
reader.onloadend = function () {
console.log('readfile onloadend: ' + new Date());
var dataURL = reader.result;
component.set("v.pictureSrc", dataURL);
//helper.upload(component, file, dataURL.match(/,(.*)$/)[1]);
helper.simulateUpload(component, file, dataURL.match(/,(.*)$/)[1]);
};
reader.readAsDataURL(file);
},
upload: function(component, file, base64Data) {
upload: function (component, file, base64Data) {
console.log('upload: ' + new Date());
var action = component.get("c.predict");
var modelId = component.get("v.modelId");
var action = component.get("c.predict");
var modelId = component.get("v.modelId");
action.setParams({
fileName: file.name,
content: base64Data,
content: base64Data,
modelId: modelId
});
action.setCallback(this, function(a) {
action.setCallback(this, function (a) {
console.log('upload callback: ' + new Date());
component.set("v.waiting", false);
var state = a.getState();
@ -35,7 +34,7 @@
var result = a.getReturnValue();
var predictions = [];
if (result && result.length) {
for (var i=0; i<result.length; i++) {
for (var i = 0; i < result.length; i++) {
predictions.push({
label: result[i].label,
formattedProbability: '' + Math.round(result[i].probability * 100) + '%'
@ -51,7 +50,48 @@
});
component.set("v.predictions", null);
component.set("v.waiting", true);
$A.enqueueAction(action);
//$A.enqueueAction(action);
},
simulateUpload: function (component, file, base64Data) {
component.set("v.waiting", true);
window.setTimeout(
$A.getCallback(function () {
component.set("v.waiting", false);
var predictions;
if (file.name == 'house1.jpg') {
predictions = [
{ label: "victorian", formattedProbability: "88.3%" },
{ label: "colonial", formattedProbability: "11.7%" },
{ label: "contemporary", formattedProbability: "0%" },
];
} else if (file.name == 'house2.jpg') {
predictions = [
{ label: "contemporary", formattedProbability: "96.7%" },
{ label: "colonial", formattedProbability: "3.1%" },
{ label: "victorian", formattedProbability: "0.2%" },
];
} else {
predictions = [
{ label: "colonial", formattedProbability: "66.2%" },
{ label: "victorian", formattedProbability: "31.7%" },
{ label: "victorian", formattedProbability: "2.1%" },
];
}
console.log(predictions);
component.set("v.predictions", predictions);
var predictionEvent = component.getEvent("onPrediction");
predictionEvent.setParams({
"predictions": predictions
});
predictionEvent.fire();
}), 1500
);
}
})

Просмотреть файл

@ -1,3 +1,3 @@
<design:component >
<design:component label="Voice Search">
</design:component>

Просмотреть файл

@ -0,0 +1,30 @@
public with sharing class HandlerDashboard implements BotHandler {
public BotResponse handle(String utterance, String[] params, Map<String, String> session, String fileName, String fileContent) {
System.debug('**** HandlerDashboard');
String key = '%' + params[0] + '%';
List<Dashboard> dashboards =
[SELECT Id, Title, FolderName FROM Dashboard
WHERE Title LIKE :key
ORDER BY Title
LIMIT 5];
System.debug(dashboards);
List<BotRecord> records = new List<BotRecord>();
for (Dashboard d : dashboards) {
List<BotField> fields = new List<BotField>();
fields.add(new BotField('Title', d.Title, '#/sObject/' + d.Id + '/view' ));
fields.add(new BotField('Folder', d.FolderName));
records.add(new BotRecord(fields));
}
System.debug(records);
return new BotResponse(new BotMessage('Astro', 'Here is a list of dashboards matching "' + params[0] + '":', records));
}
}

Просмотреть файл

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="urn:metadata.tooling.soap.sforce.com" fqn="HandlerDashboard">
<apiVersion>42.0</apiVersion>
<status>Active</status>
</ApexClass>

Просмотреть файл

@ -8,6 +8,12 @@ public with sharing class HandlerFindPropertiesByBedrooms implements BotHandler
}
public BotResponse handle(String utterance, String[] params, Map<String, String> session, String fileName, String fileContent) {
if (params[0] == 'one') params[0] = '1';
if (params[0] == 'two') params[0] = '2';
if (params[0] == 'three') params[0] = '3';
if (params[0] == 'four') params[0] = '4';
if (params[0] == 'five') params[0] = '5';
if (params[0] == 'six') params[0] = '6';
List<Property__c> properties =
[SELECT Id, Name, Beds__c, Baths__c, Price__c FROM Property__c
WHERE City__c = :params[1] AND

Просмотреть файл

@ -0,0 +1,25 @@
public with sharing class HandlerReport implements BotHandler {
public BotResponse handle(String utterance, String[] params, Map<String, String> session, String fileName, String fileContent) {
String key = '%' + params[0] + '%';
List<Report> reports =
[SELECT Id, Name, FolderName FROM Report
WHERE Name LIKE :key
ORDER BY Name
LIMIT 5];
List<BotRecord> records = new List<BotRecord>();
for (Report r : reports) {
List<BotField> fields = new List<BotField>();
fields.add(new BotField('Name', r.Name, '#/sObject/' + r.Id + '/view' ));
fields.add(new BotField('Folder', r.FolderName));
records.add(new BotRecord(fields));
}
return new BotResponse(new BotMessage('Astro', 'Here is a list of reports matching "' + params[0] + '":', records));
}
}

Просмотреть файл

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="urn:metadata.tooling.soap.sforce.com" fqn="HandlerReport">
<apiVersion>42.0</apiVersion>
<status>Active</status>
</ApexClass>

Просмотреть файл

@ -55,6 +55,22 @@ global with sharing class PropertyController {
WHERE Date_Listed__c != NULL AND (Date_Agreement__c = NULL OR Date_Agreement__c = LAST_N_DAYS:90)];
}
@AuraEnabled
public static Property__c[] getAtRiskProperties() {
return [SELECT id, name, address__c, city__c, price__c, Predicted_Days_On_Market__c
FROM Property__c
WHERE Predicted_Days_On_Market__c > 30];
}
@AuraEnabled
public static List<Property__c> getComparableProperties(Id propertyId) {
Property__c property = [SELECT Id, Price__c FROM Property__c WHERE Id = :propertyId];
return [
SELECT Id, Name, Address__c, City__c, State__c, Zip__c, Beds__c, Baths__c, Price__c, Predicted_Days_On_Market__c
FROM Property__c WHERE Id != :propertyId AND Price__c > :property.Price__c - 100000 AND Price__c < :property.Price__c + 100000 LIMIT 8
];
}
@AuraEnabled
public static List<Property__c> getSimilarProperties (Id propertyId, Decimal bedrooms, Decimal price, String searchCriteria) {
if (searchCriteria == 'Bedrooms') {

Просмотреть файл

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<DashboardFolder xmlns="http://soap.sforce.com/2006/04/metadata">
<name>DreamHouse Dashboards</name>
</DashboardFolder>

Просмотреть файл

@ -0,0 +1,123 @@
<?xml version="1.0" encoding="UTF-8"?>
<Dashboard xmlns="http://soap.sforce.com/2006/04/metadata">
<backgroundEndColor>#FFFFFF</backgroundEndColor>
<backgroundFadeDirection>Diagonal</backgroundFadeDirection>
<backgroundStartColor>#FFFFFF</backgroundStartColor>
<dashboardGridLayout>
<dashboardGridComponents>
<colSpan>2</colSpan>
<columnIndex>0</columnIndex>
<dashboardComponent>
<autoselectColumnsFromReport>false</autoselectColumnsFromReport>
<chartSummary>
<aggregate>Sum</aggregate>
<column>Property__c.Price__c</column>
</chartSummary>
<componentType>Metric</componentType>
<header>Total Portfolio</header>
<indicatorBreakpoint1>5000000.0</indicatorBreakpoint1>
<indicatorBreakpoint2>1.0E7</indicatorBreakpoint2>
<indicatorHighColor>#00716B</indicatorHighColor>
<indicatorLowColor>#C23934</indicatorLowColor>
<indicatorMiddleColor>#FFB75D</indicatorMiddleColor>
<report>DreamHouse_Reports/Properties_by_Broker</report>
</dashboardComponent>
<rowIndex>0</rowIndex>
<rowSpan>3</rowSpan>
</dashboardGridComponents>
<dashboardGridComponents>
<colSpan>2</colSpan>
<columnIndex>2</columnIndex>
<dashboardComponent>
<autoselectColumnsFromReport>false</autoselectColumnsFromReport>
<chartAxisRange>Auto</chartAxisRange>
<chartSummary>
<axisBinding>y</axisBinding>
<column>RowCount</column>
</chartSummary>
<componentType>Donut</componentType>
<drillEnabled>false</drillEnabled>
<drillToDetailEnabled>false</drillToDetailEnabled>
<enableHover>false</enableHover>
<expandOthers>true</expandOthers>
<groupingColumn>BucketField_33803839</groupingColumn>
<header>Portfolio Health</header>
<legendPosition>Right</legendPosition>
<report>DreamHouse_Reports/Portfolio_Health</report>
<showPercentage>false</showPercentage>
<showTotal>false</showTotal>
<showValues>false</showValues>
<sortBy>RowValueDescending</sortBy>
<useReportChart>false</useReportChart>
</dashboardComponent>
<rowIndex>0</rowIndex>
<rowSpan>3</rowSpan>
</dashboardGridComponents>
<dashboardGridComponents>
<colSpan>5</colSpan>
<columnIndex>4</columnIndex>
<dashboardComponent>
<autoselectColumnsFromReport>false</autoselectColumnsFromReport>
<chartAxisRange>Auto</chartAxisRange>
<chartSummary>
<aggregate>Sum</aggregate>
<axisBinding>y</axisBinding>
<column>Property__c.Days_On_Market__c</column>
</chartSummary>
<componentType>Bar</componentType>
<drillEnabled>false</drillEnabled>
<drillToDetailEnabled>false</drillToDetailEnabled>
<enableHover>false</enableHover>
<expandOthers>false</expandOthers>
<groupingColumn>CUST_NAME</groupingColumn>
<header>Days on Market</header>
<legendPosition>Bottom</legendPosition>
<report>DreamHouse_Reports/Days_on_Market</report>
<showPercentage>false</showPercentage>
<showPicturesOnCharts>false</showPicturesOnCharts>
<showValues>true</showValues>
<sortBy>RowValueDescending</sortBy>
<useReportChart>false</useReportChart>
</dashboardComponent>
<rowIndex>0</rowIndex>
<rowSpan>7</rowSpan>
</dashboardGridComponents>
<dashboardGridComponents>
<colSpan>4</colSpan>
<columnIndex>0</columnIndex>
<dashboardComponent>
<autoselectColumnsFromReport>false</autoselectColumnsFromReport>
<chartAxisRange>Auto</chartAxisRange>
<chartSummary>
<aggregate>Sum</aggregate>
<axisBinding>y</axisBinding>
<column>Property__c.Price__c</column>
</chartSummary>
<componentType>Column</componentType>
<drillEnabled>false</drillEnabled>
<drillToDetailEnabled>false</drillToDetailEnabled>
<enableHover>false</enableHover>
<expandOthers>false</expandOthers>
<groupingColumn>FK_NAME</groupingColumn>
<header>Properties by Broker</header>
<legendPosition>Bottom</legendPosition>
<report>DreamHouse_Reports/Properties_by_Broker</report>
<showPercentage>false</showPercentage>
<showValues>true</showValues>
<sortBy>RowValueDescending</sortBy>
<useReportChart>false</useReportChart>
</dashboardComponent>
<rowIndex>3</rowIndex>
<rowSpan>4</rowSpan>
</dashboardGridComponents>
<numberOfColumns>9</numberOfColumns>
<rowHeight>80</rowHeight>
</dashboardGridLayout>
<dashboardType>SpecifiedUser</dashboardType>
<isGridLayout>true</isGridLayout>
<runningUser>cc@spring18.org</runningUser>
<textColor>#000000</textColor>
<title>My Dashboard</title>
<titleColor>#000000</titleColor>
<titleSize>12</titleSize>
</Dashboard>

Просмотреть файл

@ -0,0 +1,101 @@
<?xml version="1.0" encoding="UTF-8"?>
<FlexiPage xmlns="http://soap.sforce.com/2006/04/metadata">
<flexiPageRegions>
<componentInstances>
<componentInstanceProperties>
<name>collapsed</name>
<value>false</value>
</componentInstanceProperties>
<componentName>force:highlightsPanel</componentName>
</componentInstances>
<mode>Replace</mode>
<name>header</name>
<type>Region</type>
</flexiPageRegions>
<flexiPageRegions>
<componentInstances>
<componentName>force:relatedListContainer</componentName>
</componentInstances>
<mode>Replace</mode>
<name>relatedTabContent</name>
<type>Facet</type>
</flexiPageRegions>
<flexiPageRegions>
<componentInstances>
<componentName>force:detailPanel</componentName>
</componentInstances>
<mode>Replace</mode>
<name>detailTabContent</name>
<type>Facet</type>
</flexiPageRegions>
<flexiPageRegions>
<componentInstances>
<componentInstanceProperties>
<name>body</name>
<value>relatedTabContent</value>
</componentInstanceProperties>
<componentInstanceProperties>
<name>title</name>
<value>Standard.Tab.relatedLists</value>
</componentInstanceProperties>
<componentName>flexipage:tab</componentName>
</componentInstances>
<componentInstances>
<componentInstanceProperties>
<name>active</name>
<value>true</value>
</componentInstanceProperties>
<componentInstanceProperties>
<name>body</name>
<value>detailTabContent</value>
</componentInstanceProperties>
<componentInstanceProperties>
<name>title</name>
<value>Standard.Tab.detail</value>
</componentInstanceProperties>
<componentName>flexipage:tab</componentName>
</componentInstances>
<mode>Replace</mode>
<name>maintabs</name>
<type>Facet</type>
</flexiPageRegions>
<flexiPageRegions>
<componentInstances>
<componentInstanceProperties>
<name>tabs</name>
<value>maintabs</value>
</componentInstanceProperties>
<componentName>flexipage:tabset</componentName>
</componentInstances>
<mode>Replace</mode>
<name>main</name>
<type>Region</type>
</flexiPageRegions>
<flexiPageRegions>
<componentInstances>
<componentInstanceProperties>
<name>parentFieldApiName</name>
<value>Broker__c.Id</value>
</componentInstanceProperties>
<componentInstanceProperties>
<name>relatedListApiName</name>
<value>Properties__r</value>
</componentInstanceProperties>
<componentInstanceProperties>
<name>relatedListComponentOverride</name>
<value>NONE</value>
</componentInstanceProperties>
<componentName>force:relatedListSingleContainer</componentName>
</componentInstances>
<mode>Replace</mode>
<name>sidebar</name>
<type>Region</type>
</flexiPageRegions>
<masterLabel>Broker Record Page</masterLabel>
<parentFlexiPage>flexipage__default_rec_L</parentFlexiPage>
<sobjectType>Broker__c</sobjectType>
<template>
<name>flexipage:recordHomeTemplateDesktop</name>
</template>
<type>RecordPage</type>
</FlexiPage>

Просмотреть файл

@ -29,7 +29,7 @@
</flexiPageRegions>
<flexiPageRegions>
<componentInstances>
<componentName>ActivityList</componentName>
<componentName>ActionList</componentName>
</componentInstances>
<componentInstances>
<componentName>home:recentRecordContainer</componentName>

Просмотреть файл

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8"?>
<FlexiPage xmlns="http://soap.sforce.com/2006/04/metadata">
<flexiPageRegions>
<componentInstances>
<componentName>home:heroChart</componentName>
</componentInstances>
<mode>Replace</mode>
<name>top</name>
<type>Region</type>
</flexiPageRegions>
<flexiPageRegions>
<componentInstances>
<componentName>home:eventContainer</componentName>
</componentInstances>
<componentInstances>
<componentName>home:recentRecordContainer</componentName>
</componentInstances>
<mode>Replace</mode>
<name>bottomLeft</name>
<type>Region</type>
</flexiPageRegions>
<flexiPageRegions>
<componentInstances>
<componentName>runtime_sales_activities:todayTaskContainer</componentName>
</componentInstances>
<componentInstances>
<componentName>home:topDealsContainer</componentName>
</componentInstances>
<mode>Replace</mode>
<name>bottomRight</name>
<type>Region</type>
</flexiPageRegions>
<flexiPageRegions>
<componentInstances>
<componentName>ActionList</componentName>
</componentInstances>
<componentInstances>
<componentName>home:assistant</componentName>
</componentInstances>
<mode>Replace</mode>
<name>sidebar</name>
<type>Region</type>
</flexiPageRegions>
<masterLabel>Home Page Default</masterLabel>
<parentFlexiPage>home__desktopDefault</parentFlexiPage>
<template>
<name>home:desktopTemplate</name>
</template>
<type>HomePage</type>
</FlexiPage>

Просмотреть файл

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<FlexiPage xmlns="http://soap.sforce.com/2006/04/metadata">
<flexiPageRegions>
<componentInstances>
<componentInstanceProperties>
<name>flowArguments</name>
<value>[{"label":"recordId","dataType":"String","supportsRecordId":true,"value":"{!Record.Id}"}]</value>
</componentInstanceProperties>
<componentInstanceProperties>
<name>flowLayout</name>
<value>oneColumn</value>
</componentInstanceProperties>
<componentInstanceProperties>
<name>flowName</name>
<value>Optimize_Listing</value>
</componentInstanceProperties>
<componentName>flowruntime:interview</componentName>
</componentInstances>
<name>main</name>
<type>Region</type>
</flexiPageRegions>
<masterLabel>Optimize Listing</masterLabel>
<sobjectType>Property__c</sobjectType>
<template>
<name>flexipage:recordHomeSingleColNoHeaderTemplateDesktop</name>
</template>
<type>RecordPage</type>
</FlexiPage>

Просмотреть файл

@ -2,13 +2,17 @@
<FlexiPage xmlns="http://soap.sforce.com/2006/04/metadata">
<flexiPageRegions>
<componentInstances>
<componentInstanceProperties>
<name>flowArguments</name>
<value>[{"label":"recordId","dataType":"String","supportsRecordId":false,"value":"{!recordId}"}]</value>
</componentInstanceProperties>
<componentInstanceProperties>
<name>flowLayout</name>
<value>oneColumn</value>
</componentInstanceProperties>
<componentInstanceProperties>
<name>flowName</name>
<value>Optimize_Property</value>
<value>Optimize_Listing</value>
</componentInstanceProperties>
<componentName>flowruntime:interview</componentName>
</componentInstances>

Просмотреть файл

@ -13,33 +13,20 @@
</flexiPageRegions>
<flexiPageRegions>
<componentInstances>
<componentInstanceProperties>
<name>pageSize</name>
<value>8</value>
</componentInstanceProperties>
<componentName>PropertyTileList</componentName>
<componentName>VoiceInputCard</componentName>
</componentInstances>
<componentInstances>
<componentName>PropertyListMap</componentName>
</componentInstances>
<name>center</name>
<type>Region</type>
</flexiPageRegions>
<flexiPageRegions>
<componentInstances>
<componentName>PropertyDaysOnMarketChart</componentName>
<componentName>PropertySummary</componentName>
</componentInstances>
<componentInstances>
<componentInstanceProperties>
<name>latField</name>
<value>Location__Latitude__s</value>
</componentInstanceProperties>
<componentInstanceProperties>
<name>longField</name>
<value>Location__Longitude__s</value>
</componentInstanceProperties>
<componentInstanceProperties>
<name>titleField</name>
<value>Name</value>
</componentInstanceProperties>
<componentName>MapCard</componentName>
<componentName>PropertyDaysOnMarketChart</componentName>
</componentInstances>
<componentInstances>
<componentInstanceProperties>

Просмотреть файл

@ -13,10 +13,11 @@
</flexiPageRegions>
<flexiPageRegions>
<componentInstances>
<componentName>VoiceInputCard</componentName>
</componentInstances>
<componentInstances>
<componentName>PropertyListMap</componentName>
<componentInstanceProperties>
<name>pageSize</name>
<value>8</value>
</componentInstanceProperties>
<componentName>PropertyTileList</componentName>
</componentInstances>
<name>center</name>
<type>Region</type>

Просмотреть файл

@ -126,6 +126,9 @@
<type>Region</type>
</flexiPageRegions>
<flexiPageRegions>
<componentInstances>
<componentName>PredictedDaysOnMarket</componentName>
</componentInstances>
<componentInstances>
<componentInstanceProperties>
<name>latField</name>
@ -147,9 +150,6 @@
<componentInstances>
<componentName>PropertyCarousel</componentName>
</componentInstances>
<componentInstances>
<componentName>PropertyDaysOnMarketChart</componentName>
</componentInstances>
<componentInstances>
<componentInstanceProperties>
<name>searchCriteria</name>

Просмотреть файл

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<FlowDefinition xmlns="http://soap.sforce.com/2006/04/metadata">
<activeVersionNumber>2</activeVersionNumber>
<activeVersionNumber>3</activeVersionNumber>
</FlowDefinition>

Просмотреть файл

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<FlowDefinition xmlns="http://soap.sforce.com/2006/04/metadata">
<activeVersionNumber>1</activeVersionNumber>
</FlowDefinition>

Просмотреть файл

@ -1,13 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<Flow xmlns="http://soap.sforce.com/2006/04/metadata">
<interviewLabel>Optimize Property {!$Flow.CurrentDateTime}</interviewLabel>
<label>Optimize Property</label>
<interviewLabel>Optimize Listing {!$Flow.CurrentDateTime}</interviewLabel>
<label>Optimize Listing</label>
<processType>Flow</processType>
<screens>
<name>Comp_List</name>
<label>Comp List</label>
<locationX>329</locationX>
<locationY>83</locationY>
<locationX>378</locationX>
<locationY>98</locationY>
<allowBack>true</allowBack>
<allowFinish>true</allowFinish>
<allowPause>true</allowPause>
@ -26,13 +26,13 @@
<screens>
<name>Complete</name>
<label>Complete</label>
<locationX>323</locationX>
<locationY>449</locationY>
<locationX>363</locationX>
<locationY>602</locationY>
<allowBack>true</allowBack>
<allowFinish>true</allowFinish>
<allowPause>true</allowPause>
<fields>
<name>processComplete</name>
<name>compl</name>
<extensionName>c:FlowScreenComplete</extensionName>
<fieldType>ComponentInstance</fieldType>
<isRequired>true</isRequired>
@ -43,13 +43,13 @@
<screens>
<name>Price_Change</name>
<label>Price Change</label>
<locationX>353</locationX>
<locationY>197</locationY>
<locationX>376</locationX>
<locationY>236</locationY>
<allowBack>true</allowBack>
<allowFinish>true</allowFinish>
<allowPause>true</allowPause>
<connector>
<targetReference>Upload_Pictures</targetReference>
<targetReference>Upload_Pics</targetReference>
</connector>
<fields>
<name>priceChange</name>
@ -61,10 +61,10 @@
<showHeader>false</showHeader>
</screens>
<screens>
<name>Upload_Pictures</name>
<label>Upload Pictures</label>
<locationX>380</locationX>
<locationY>351</locationY>
<name>Upload_Pics</name>
<label>Upload Pics</label>
<locationX>377</locationX>
<locationY>430</locationY>
<allowBack>true</allowBack>
<allowFinish>true</allowFinish>
<allowPause>true</allowPause>

Просмотреть файл

@ -1,13 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<Flow xmlns="http://soap.sforce.com/2006/04/metadata">
<interviewLabel>Optimize Property {!$Flow.CurrentDateTime}</interviewLabel>
<label>Optimize Property</label>
<interviewLabel>Optimize Listing {!$Flow.CurrentDateTime}</interviewLabel>
<label>Optimize Listing</label>
<processType>Flow</processType>
<screens>
<name>Comp_List</name>
<label>Comp List</label>
<locationX>329</locationX>
<locationY>83</locationY>
<locationX>378</locationX>
<locationY>98</locationY>
<allowBack>true</allowBack>
<allowFinish>true</allowFinish>
<allowPause>true</allowPause>
@ -18,6 +18,12 @@
<name>compList</name>
<extensionName>c:FlowScreenCompList</extensionName>
<fieldType>ComponentInstance</fieldType>
<inputParameters>
<name>recordId</name>
<value>
<elementReference>recordId</elementReference>
</value>
</inputParameters>
<isRequired>true</isRequired>
</fields>
<showFooter>true</showFooter>
@ -26,13 +32,13 @@
<screens>
<name>Complete</name>
<label>Complete</label>
<locationX>323</locationX>
<locationY>449</locationY>
<locationX>363</locationX>
<locationY>602</locationY>
<allowBack>true</allowBack>
<allowFinish>true</allowFinish>
<allowPause>true</allowPause>
<fields>
<name>processComplete</name>
<name>compl</name>
<extensionName>c:FlowScreenComplete</extensionName>
<fieldType>ComponentInstance</fieldType>
<isRequired>true</isRequired>
@ -43,13 +49,13 @@
<screens>
<name>Price_Change</name>
<label>Price Change</label>
<locationX>353</locationX>
<locationY>197</locationY>
<locationX>376</locationX>
<locationY>236</locationY>
<allowBack>true</allowBack>
<allowFinish>true</allowFinish>
<allowPause>true</allowPause>
<connector>
<targetReference>Upload_Pictures</targetReference>
<targetReference>Upload_Pics</targetReference>
</connector>
<fields>
<name>priceChange</name>
@ -61,10 +67,10 @@
<showHeader>false</showHeader>
</screens>
<screens>
<name>Upload_Pictures</name>
<label>Upload Pictures</label>
<locationX>380</locationX>
<locationY>351</locationY>
<name>Upload_Pics</name>
<label>Upload Pics</label>
<locationX>377</locationX>
<locationY>430</locationY>
<allowBack>true</allowBack>
<allowFinish>true</allowFinish>
<allowPause>true</allowPause>
@ -78,7 +84,14 @@
<isRequired>true</isRequired>
</fields>
<showFooter>true</showFooter>
<showHeader>true</showHeader>
<showHeader>false</showHeader>
</screens>
<startElementReference>Comp_List</startElementReference>
<variables>
<name>recordId</name>
<dataType>String</dataType>
<isCollection>false</isCollection>
<isInput>true</isInput>
<isOutput>false</isOutput>
</variables>
</Flow>

Просмотреть файл

@ -0,0 +1,115 @@
<?xml version="1.0" encoding="UTF-8"?>
<Flow xmlns="http://soap.sforce.com/2006/04/metadata">
<interviewLabel>Optimize Listing {!$Flow.CurrentDateTime}</interviewLabel>
<label>Optimize Listing</label>
<processType>Flow</processType>
<screens>
<name>Comp_List</name>
<label>Comp List</label>
<locationX>378</locationX>
<locationY>98</locationY>
<allowBack>true</allowBack>
<allowFinish>true</allowFinish>
<allowPause>true</allowPause>
<connector>
<targetReference>Price_Change</targetReference>
</connector>
<fields>
<name>compList</name>
<extensionName>c:FlowScreenCompList</extensionName>
<fieldType>ComponentInstance</fieldType>
<inputParameters>
<name>recordId</name>
<value>
<elementReference>recordId</elementReference>
</value>
</inputParameters>
<isRequired>true</isRequired>
</fields>
<showFooter>true</showFooter>
<showHeader>false</showHeader>
</screens>
<screens>
<name>Complete</name>
<label>Complete</label>
<locationX>363</locationX>
<locationY>602</locationY>
<allowBack>true</allowBack>
<allowFinish>true</allowFinish>
<allowPause>true</allowPause>
<fields>
<name>compl</name>
<extensionName>c:FlowScreenComplete</extensionName>
<fieldType>ComponentInstance</fieldType>
<inputParameters>
<name>recordId</name>
<value>
<elementReference>recordId</elementReference>
</value>
</inputParameters>
<isRequired>true</isRequired>
</fields>
<showFooter>true</showFooter>
<showHeader>false</showHeader>
</screens>
<screens>
<name>Price_Change</name>
<label>Price Change</label>
<locationX>376</locationX>
<locationY>236</locationY>
<allowBack>true</allowBack>
<allowFinish>true</allowFinish>
<allowPause>true</allowPause>
<connector>
<targetReference>Upload_Pics</targetReference>
</connector>
<fields>
<name>priceChange</name>
<extensionName>c:FlowScreenPriceChange</extensionName>
<fieldType>ComponentInstance</fieldType>
<inputParameters>
<name>recordId</name>
<value>
<elementReference>recordId</elementReference>
</value>
</inputParameters>
<isRequired>true</isRequired>
</fields>
<showFooter>true</showFooter>
<showHeader>false</showHeader>
</screens>
<screens>
<name>Upload_Pics</name>
<label>Upload Pics</label>
<locationX>377</locationX>
<locationY>430</locationY>
<allowBack>true</allowBack>
<allowFinish>true</allowFinish>
<allowPause>true</allowPause>
<connector>
<targetReference>Complete</targetReference>
</connector>
<fields>
<name>imageUpload</name>
<extensionName>c:FlowScreenImageUpload</extensionName>
<fieldType>ComponentInstance</fieldType>
<inputParameters>
<name>recordId</name>
<value>
<elementReference>recordId</elementReference>
</value>
</inputParameters>
<isRequired>true</isRequired>
</fields>
<showFooter>true</showFooter>
<showHeader>false</showHeader>
</screens>
<startElementReference>Comp_List</startElementReference>
<variables>
<name>recordId</name>
<dataType>String</dataType>
<isCollection>false</isCollection>
<isInput>true</isInput>
<isOutput>false</isOutput>
</variables>
</Flow>

Просмотреть файл

@ -0,0 +1,236 @@
<?xml version="1.0" encoding="UTF-8"?>
<Flow xmlns="http://soap.sforce.com/2006/04/metadata">
<assignments>
<name>myVariable_waitStartTimeAssignment</name>
<label>myVariable_waitStartTimeAssignment</label>
<locationX>0</locationX>
<locationY>0</locationY>
<assignmentItems>
<assignToReference>myVariable_waitStartTimeVariable</assignToReference>
<operator>Assign</operator>
<value>
<elementReference>$Flow.CurrentDateTime</elementReference>
</value>
</assignmentItems>
<connector>
<targetReference>isChangedDecision2_myRule_1_Asking_Price_c</targetReference>
</connector>
</assignments>
<decisions>
<name>isChangedDecision2_myRule_1_Asking_Price_c</name>
<label>isChangedDecision2_myRule_1_Asking_Price_c</label>
<locationX>0</locationX>
<locationY>0</locationY>
<defaultConnector>
<targetReference>myDecision</targetReference>
</defaultConnector>
<defaultConnectorLabel>default</defaultConnectorLabel>
<rules>
<name>isChangedRule_2_myRule_1_Asking_Price_c</name>
<conditionLogic>and</conditionLogic>
<conditions>
<leftValueReference>myVariable_old</leftValueReference>
<operator>IsNull</operator>
<rightValue>
<booleanValue>false</booleanValue>
</rightValue>
</conditions>
<conditions>
<leftValueReference>myVariable_old.Asking_Price__c</leftValueReference>
<operator>NotEqualTo</operator>
<rightValue>
<elementReference>myVariable_current.Asking_Price__c</elementReference>
</rightValue>
</conditions>
<connector>
<targetReference>myDecision</targetReference>
</connector>
<label>isChangedRule_2_myRule_1_Asking_Price_c</label>
</rules>
</decisions>
<decisions>
<processMetadataValues>
<name>index</name>
<value>
<numberValue>0.0</numberValue>
</value>
</processMetadataValues>
<name>myDecision</name>
<label>myDecision</label>
<locationX>50</locationX>
<locationY>0</locationY>
<defaultConnectorLabel>default</defaultConnectorLabel>
<rules>
<name>myRule_1</name>
<conditionLogic>and</conditionLogic>
<conditions>
<processMetadataValues>
<name>inputDataType</name>
<value>
<stringValue>Boolean</stringValue>
</value>
</processMetadataValues>
<processMetadataValues>
<name>leftHandSideType</name>
<value>
<stringValue>Number</stringValue>
</value>
</processMetadataValues>
<processMetadataValues>
<name>operatorDataType</name>
<value>
<stringValue>Number</stringValue>
</value>
</processMetadataValues>
<processMetadataValues>
<name>rightHandSideType</name>
<value>
<stringValue>Boolean</stringValue>
</value>
</processMetadataValues>
<leftValueReference>isChangedRule_2_myRule_1_Asking_Price_c</leftValueReference>
<operator>EqualTo</operator>
<rightValue>
<booleanValue>true</booleanValue>
</rightValue>
</conditions>
<connector>
<targetReference>myRule_1_A1</targetReference>
</connector>
<label>Price Change?</label>
</rules>
</decisions>
<interviewLabel>Push_Price_Change-1_InterviewLabel</interviewLabel>
<label>Publish Price Change</label>
<processMetadataValues>
<name>ObjectType</name>
<value>
<stringValue>Property__c</stringValue>
</value>
</processMetadataValues>
<processMetadataValues>
<name>ObjectVariable</name>
<value>
<elementReference>myVariable_current</elementReference>
</value>
</processMetadataValues>
<processMetadataValues>
<name>OldObjectVariable</name>
<value>
<elementReference>myVariable_old</elementReference>
</value>
</processMetadataValues>
<processMetadataValues>
<name>TriggerType</name>
<value>
<stringValue>onAllChanges</stringValue>
</value>
</processMetadataValues>
<processType>Workflow</processType>
<recordCreates>
<name>myRule_1_A1</name>
<label>Publish Price Change Event</label>
<locationX>100</locationX>
<locationY>200</locationY>
<inputAssignments>
<processMetadataValues>
<name>dataType</name>
<value>
<stringValue>Number</stringValue>
</value>
</processMetadataValues>
<processMetadataValues>
<name>isRequired</name>
<value>
<booleanValue>false</booleanValue>
</value>
</processMetadataValues>
<processMetadataValues>
<name>leftHandSideLabel</name>
<value>
<stringValue>Price</stringValue>
</value>
</processMetadataValues>
<processMetadataValues>
<name>leftHandSideReferenceTo</name>
<value>
<stringValue/>
</value>
</processMetadataValues>
<processMetadataValues>
<name>rightHandSideType</name>
<value>
<stringValue>Reference</stringValue>
</value>
</processMetadataValues>
<field>Price__c</field>
<value>
<elementReference>myVariable_current.Asking_Price__c</elementReference>
</value>
</inputAssignments>
<inputAssignments>
<processMetadataValues>
<name>dataType</name>
<value>
<stringValue>String</stringValue>
</value>
</processMetadataValues>
<processMetadataValues>
<name>isRequired</name>
<value>
<booleanValue>false</booleanValue>
</value>
</processMetadataValues>
<processMetadataValues>
<name>leftHandSideLabel</name>
<value>
<stringValue>Property Id</stringValue>
</value>
</processMetadataValues>
<processMetadataValues>
<name>leftHandSideReferenceTo</name>
<value>
<stringValue/>
</value>
</processMetadataValues>
<processMetadataValues>
<name>rightHandSideType</name>
<value>
<stringValue>Reference</stringValue>
</value>
</processMetadataValues>
<field>Property_Id__c</field>
<value>
<elementReference>myVariable_current.Id</elementReference>
</value>
</inputAssignments>
<object>Price_Change__e</object>
</recordCreates>
<startElementReference>myVariable_waitStartTimeAssignment</startElementReference>
<variables>
<name>myVariable_current</name>
<dataType>SObject</dataType>
<isCollection>false</isCollection>
<isInput>true</isInput>
<isOutput>true</isOutput>
<objectType>Property__c</objectType>
</variables>
<variables>
<name>myVariable_old</name>
<dataType>SObject</dataType>
<isCollection>false</isCollection>
<isInput>true</isInput>
<isOutput>false</isOutput>
<objectType>Property__c</objectType>
</variables>
<variables>
<name>myVariable_waitStartTimeVariable</name>
<dataType>DateTime</dataType>
<isCollection>false</isCollection>
<isInput>false</isInput>
<isOutput>false</isOutput>
<value>
<elementReference>$Flow.CurrentDateTime</elementReference>
</value>
</variables>
</Flow>

Просмотреть файл

@ -39,6 +39,14 @@
<behavior>Edit</behavior>
<field>Price_Sold__c</field>
</layoutItems>
<layoutItems>
<behavior>Edit</behavior>
<field>Predicted_Days_on_Market__c</field>
</layoutItems>
<layoutItems>
<behavior>Edit</behavior>
<field>Asking_Price__c</field>
</layoutItems>
</layoutColumns>
<layoutColumns>
<layoutItems>

Просмотреть файл

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<CustomObject xmlns="http://soap.sforce.com/2006/04/metadata">
<deploymentStatus>Deployed</deploymentStatus>
<eventType>StandardVolume</eventType>
<label>Price Change</label>
<pluralLabel>Price Changes</pluralLabel>
</CustomObject>

Просмотреть файл

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<CustomField xmlns="http://soap.sforce.com/2006/04/metadata">
<fullName>Price__c</fullName>
<externalId>false</externalId>
<isFilteringDisabled>false</isFilteringDisabled>
<isNameField>false</isNameField>
<isSortingDisabled>false</isSortingDisabled>
<label>Price</label>
<precision>8</precision>
<required>false</required>
<scale>0</scale>
<type>Number</type>
<unique>false</unique>
</CustomField>

Просмотреть файл

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<CustomField xmlns="http://soap.sforce.com/2006/04/metadata">
<fullName>Property_Id__c</fullName>
<externalId>false</externalId>
<isFilteringDisabled>false</isFilteringDisabled>
<isNameField>false</isNameField>
<isSortingDisabled>false</isSortingDisabled>
<label>Property Id</label>
<length>18</length>
<required>false</required>
<type>Text</type>
<unique>false</unique>
</CustomField>

Просмотреть файл

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<CustomField xmlns="http://soap.sforce.com/2006/04/metadata">
<fullName>Asking_Price__c</fullName>
<externalId>false</externalId>
<label>Asking Price</label>
<precision>8</precision>
<required>false</required>
<scale>0</scale>
<trackFeedHistory>false</trackFeedHistory>
<trackHistory>false</trackHistory>
<trackTrending>false</trackTrending>
<type>Number</type>
<unique>false</unique>
</CustomField>

Просмотреть файл

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<CustomField xmlns="http://soap.sforce.com/2006/04/metadata">
<fullName>Predicted_Days_on_Market__c</fullName>
<externalId>false</externalId>
<label>Predicted Days on Market</label>
<precision>4</precision>
<required>false</required>
<scale>0</scale>
<trackFeedHistory>false</trackFeedHistory>
<trackHistory>false</trackHistory>
<trackTrending>false</trackTrending>
<type>Number</type>
<unique>false</unique>
</CustomField>

Просмотреть файл

@ -2,7 +2,7 @@
<CustomField xmlns="http://soap.sforce.com/2006/04/metadata">
<fullName>Price__c</fullName>
<externalId>false</externalId>
<label>Asking Price</label>
<label>Price</label>
<precision>8</precision>
<required>false</required>
<scale>0</scale>

Просмотреть файл

@ -469,6 +469,18 @@
pattern: "(?i).*account ([A-Za-z0-9]*)",
sampleUtterance: "Account United"
},
{
name: "Report",
apexClass: "HandlerReport",
pattern: "(?i).*([A-Za-z0-9]*) report",
sampleUtterance: "open market report"
},
{
name: "Dashboard",
apexClass: "HandlerDashboard",
pattern: "(?i).*([A-Za-z0-9]*) dashboard",
sampleUtterance: "open portfolio dashboard"
},
{
name: "Find Contact",
apexClass: "HandlerFindContact",
@ -484,7 +496,7 @@
{
name: "Find Properties by Bedrooms",
apexClass: "HandlerFindPropertiesByBedrooms",
pattern: "(?i)([0-9]*) bedrooms in ([A-Za-z]*)",
pattern: "(?i)([A-Za-z0-9]*) bedrooms in ([A-Za-z]*)",
sampleUtterance: "3 bedrooms in Boston"
},
{

Просмотреть файл

@ -61,6 +61,10 @@
<apexClass>HandlerCostCenter</apexClass>
<enabled>true</enabled>
</classAccesses>
<classAccesses>
<apexClass>HandlerDashboard</apexClass>
<enabled>true</enabled>
</classAccesses>
<classAccesses>
<apexClass>HandlerEmployeeId</apexClass>
<enabled>true</enabled>
@ -117,6 +121,10 @@
<apexClass>HandlerQuarter</apexClass>
<enabled>true</enabled>
</classAccesses>
<classAccesses>
<apexClass>HandlerReport</apexClass>
<enabled>true</enabled>
</classAccesses>
<classAccesses>
<apexClass>HandlerSOQL</apexClass>
<enabled>true</enabled>
@ -240,6 +248,16 @@
<field>Broker__c.Title__c</field>
<readable>false</readable>
</fieldPermissions>
<fieldPermissions>
<editable>false</editable>
<field>Price_Change__e.Price__c</field>
<readable>false</readable>
</fieldPermissions>
<fieldPermissions>
<editable>false</editable>
<field>Price_Change__e.Property_Id__c</field>
<readable>false</readable>
</fieldPermissions>
<fieldPermissions>
<editable>false</editable>
<field>Property_Favorite__c.Property__c</field>
@ -255,6 +273,11 @@
<field>Property__c.Address__c</field>
<readable>false</readable>
</fieldPermissions>
<fieldPermissions>
<editable>true</editable>
<field>Property__c.Asking_Price__c</field>
<readable>true</readable>
</fieldPermissions>
<fieldPermissions>
<editable>false</editable>
<field>Property__c.Assessed_Value__c</field>
@ -330,6 +353,11 @@
<field>Property__c.Picture__c</field>
<readable>false</readable>
</fieldPermissions>
<fieldPermissions>
<editable>true</editable>
<field>Property__c.Predicted_Days_on_Market__c</field>
<readable>true</readable>
</fieldPermissions>
<fieldPermissions>
<editable>false</editable>
<field>Property__c.Price_Sold__c</field>
@ -392,6 +420,10 @@
<layoutAssignments>
<layout>Property__c-Property Layout</layout>
</layoutAssignments>
<loginIpRanges>
<endAddress>255.255.255.255</endAddress>
<startAddress>0.0.0.0</startAddress>
</loginIpRanges>
<objectPermissions>
<allowCreate>true</allowCreate>
<allowDelete>true</allowDelete>
@ -410,6 +442,15 @@
<object>Broker__c</object>
<viewAllRecords>true</viewAllRecords>
</objectPermissions>
<objectPermissions>
<allowCreate>true</allowCreate>
<allowDelete>true</allowDelete>
<allowEdit>true</allowEdit>
<allowRead>true</allowRead>
<modifyAllRecords>true</modifyAllRecords>
<object>Price_Change__e</object>
<viewAllRecords>true</viewAllRecords>
</objectPermissions>
<objectPermissions>
<allowCreate>true</allowCreate>
<allowDelete>true</allowDelete>
@ -432,10 +473,6 @@
<apexPage>DreamHouseSampleData</apexPage>
<enabled>true</enabled>
</pageAccesses>
<tabVisibilities>
<tab>Optimize_Property</tab>
<visibility>DefaultOn</visibility>
</tabVisibilities>
<userLicense>Salesforce</userLicense>
<userPermissions>
<enabled>true</enabled>

Просмотреть файл

@ -61,6 +61,10 @@
<apexClass>HandlerCostCenter</apexClass>
<enabled>false</enabled>
</classAccesses>
<classAccesses>
<apexClass>HandlerDashboard</apexClass>
<enabled>false</enabled>
</classAccesses>
<classAccesses>
<apexClass>HandlerEmployeeId</apexClass>
<enabled>false</enabled>
@ -117,6 +121,10 @@
<apexClass>HandlerQuarter</apexClass>
<enabled>false</enabled>
</classAccesses>
<classAccesses>
<apexClass>HandlerReport</apexClass>
<enabled>false</enabled>
</classAccesses>
<classAccesses>
<apexClass>HandlerSOQL</apexClass>
<enabled>false</enabled>
@ -240,6 +248,16 @@
<field>Broker__c.Title__c</field>
<readable>false</readable>
</fieldPermissions>
<fieldPermissions>
<editable>false</editable>
<field>Price_Change__e.Price__c</field>
<readable>false</readable>
</fieldPermissions>
<fieldPermissions>
<editable>false</editable>
<field>Price_Change__e.Property_Id__c</field>
<readable>false</readable>
</fieldPermissions>
<fieldPermissions>
<editable>false</editable>
<field>Property_Favorite__c.Property__c</field>
@ -255,6 +273,11 @@
<field>Property__c.Address__c</field>
<readable>false</readable>
</fieldPermissions>
<fieldPermissions>
<editable>true</editable>
<field>Property__c.Asking_Price__c</field>
<readable>true</readable>
</fieldPermissions>
<fieldPermissions>
<editable>false</editable>
<field>Property__c.Assessed_Value__c</field>
@ -330,6 +353,11 @@
<field>Property__c.Picture__c</field>
<readable>false</readable>
</fieldPermissions>
<fieldPermissions>
<editable>true</editable>
<field>Property__c.Predicted_Days_on_Market__c</field>
<readable>true</readable>
</fieldPermissions>
<fieldPermissions>
<editable>false</editable>
<field>Property__c.Price_Sold__c</field>
@ -396,10 +424,6 @@
<apexPage>DreamHouseSampleData</apexPage>
<enabled>false</enabled>
</pageAccesses>
<tabVisibilities>
<tab>Optimize_Property</tab>
<visibility>DefaultOn</visibility>
</tabVisibilities>
<userLicense>Salesforce</userLicense>
<userPermissions>
<enabled>true</enabled>

Просмотреть файл

@ -61,6 +61,10 @@
<apexClass>HandlerCostCenter</apexClass>
<enabled>false</enabled>
</classAccesses>
<classAccesses>
<apexClass>HandlerDashboard</apexClass>
<enabled>false</enabled>
</classAccesses>
<classAccesses>
<apexClass>HandlerEmployeeId</apexClass>
<enabled>false</enabled>
@ -117,6 +121,10 @@
<apexClass>HandlerQuarter</apexClass>
<enabled>false</enabled>
</classAccesses>
<classAccesses>
<apexClass>HandlerReport</apexClass>
<enabled>false</enabled>
</classAccesses>
<classAccesses>
<apexClass>HandlerSOQL</apexClass>
<enabled>false</enabled>
@ -240,6 +248,16 @@
<field>Broker__c.Title__c</field>
<readable>false</readable>
</fieldPermissions>
<fieldPermissions>
<editable>false</editable>
<field>Price_Change__e.Price__c</field>
<readable>false</readable>
</fieldPermissions>
<fieldPermissions>
<editable>false</editable>
<field>Price_Change__e.Property_Id__c</field>
<readable>false</readable>
</fieldPermissions>
<fieldPermissions>
<editable>false</editable>
<field>Property_Favorite__c.Property__c</field>
@ -255,6 +273,11 @@
<field>Property__c.Address__c</field>
<readable>false</readable>
</fieldPermissions>
<fieldPermissions>
<editable>true</editable>
<field>Property__c.Asking_Price__c</field>
<readable>true</readable>
</fieldPermissions>
<fieldPermissions>
<editable>false</editable>
<field>Property__c.Assessed_Value__c</field>
@ -330,6 +353,11 @@
<field>Property__c.Picture__c</field>
<readable>false</readable>
</fieldPermissions>
<fieldPermissions>
<editable>true</editable>
<field>Property__c.Predicted_Days_on_Market__c</field>
<readable>true</readable>
</fieldPermissions>
<fieldPermissions>
<editable>false</editable>
<field>Property__c.Price_Sold__c</field>
@ -396,10 +424,6 @@
<apexPage>DreamHouseSampleData</apexPage>
<enabled>false</enabled>
</pageAccesses>
<tabVisibilities>
<tab>Optimize_Property</tab>
<visibility>DefaultOn</visibility>
</tabVisibilities>
<userLicense>Salesforce</userLicense>
<userPermissions>
<enabled>true</enabled>

Просмотреть файл

@ -61,6 +61,10 @@
<apexClass>HandlerCostCenter</apexClass>
<enabled>false</enabled>
</classAccesses>
<classAccesses>
<apexClass>HandlerDashboard</apexClass>
<enabled>false</enabled>
</classAccesses>
<classAccesses>
<apexClass>HandlerEmployeeId</apexClass>
<enabled>false</enabled>
@ -117,6 +121,10 @@
<apexClass>HandlerQuarter</apexClass>
<enabled>false</enabled>
</classAccesses>
<classAccesses>
<apexClass>HandlerReport</apexClass>
<enabled>false</enabled>
</classAccesses>
<classAccesses>
<apexClass>HandlerSOQL</apexClass>
<enabled>false</enabled>
@ -240,6 +248,16 @@
<field>Broker__c.Title__c</field>
<readable>false</readable>
</fieldPermissions>
<fieldPermissions>
<editable>false</editable>
<field>Price_Change__e.Price__c</field>
<readable>false</readable>
</fieldPermissions>
<fieldPermissions>
<editable>false</editable>
<field>Price_Change__e.Property_Id__c</field>
<readable>false</readable>
</fieldPermissions>
<fieldPermissions>
<editable>false</editable>
<field>Property_Favorite__c.Property__c</field>
@ -255,6 +273,11 @@
<field>Property__c.Address__c</field>
<readable>false</readable>
</fieldPermissions>
<fieldPermissions>
<editable>true</editable>
<field>Property__c.Asking_Price__c</field>
<readable>true</readable>
</fieldPermissions>
<fieldPermissions>
<editable>false</editable>
<field>Property__c.Assessed_Value__c</field>
@ -330,6 +353,11 @@
<field>Property__c.Picture__c</field>
<readable>false</readable>
</fieldPermissions>
<fieldPermissions>
<editable>true</editable>
<field>Property__c.Predicted_Days_on_Market__c</field>
<readable>true</readable>
</fieldPermissions>
<fieldPermissions>
<editable>false</editable>
<field>Property__c.Price_Sold__c</field>
@ -396,10 +424,6 @@
<apexPage>DreamHouseSampleData</apexPage>
<enabled>false</enabled>
</pageAccesses>
<tabVisibilities>
<tab>Optimize_Property</tab>
<visibility>DefaultOn</visibility>
</tabVisibilities>
<userLicense>Salesforce</userLicense>
<userPermissions>
<enabled>true</enabled>

Просмотреть файл

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<ReportFolder xmlns="http://soap.sforce.com/2006/04/metadata">
<name>DreamHouse Reports</name>
</ReportFolder>

Просмотреть файл

@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8"?>
<Report xmlns="http://soap.sforce.com/2006/04/metadata" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<chart>
<backgroundColor1>#FFFFFF</backgroundColor1>
<backgroundColor2>#FFFFFF</backgroundColor2>
<backgroundFadeDir>Diagonal</backgroundFadeDir>
<chartSummaries>
<aggregate>Sum</aggregate>
<axisBinding>y</axisBinding>
<column>Property__c.Days_On_Market__c</column>
</chartSummaries>
<chartType>HorizontalBar</chartType>
<enableHoverLabels>false</enableHoverLabels>
<expandOthers>true</expandOthers>
<groupingColumn>CUST_NAME</groupingColumn>
<location>CHART_BOTTOM</location>
<showAxisLabels>true</showAxisLabels>
<showPercentage>false</showPercentage>
<showTotal>false</showTotal>
<showValues>false</showValues>
<size>Medium</size>
<summaryAxisRange>Auto</summaryAxisRange>
<textColor>#000000</textColor>
<textSize>12</textSize>
<title>Days on Market</title>
<titleColor>#000000</titleColor>
<titleSize>18</titleSize>
</chart>
<columns>
<field>Property__c.Date_Listed__c</field>
</columns>
<columns>
<aggregateTypes>Sum</aggregateTypes>
<field>Property__c.Days_On_Market__c</field>
</columns>
<format>Summary</format>
<groupingsDown>
<dateGranularity>Day</dateGranularity>
<field>CUST_NAME</field>
<sortOrder>Asc</sortOrder>
</groupingsDown>
<name>Days on Market</name>
<params>
<name>co</name>
<value>1</value>
</params>
<reportType>CustomEntity$Property__c</reportType>
<scope>user</scope>
<showDetails>true</showDetails>
<sortColumn>Property__c.Days_On_Market__c</sortColumn>
<sortOrder>Asc</sortOrder>
<timeFrameFilter>
<dateColumn>Property__c.Date_Agreement__c</dateColumn>
<interval>INTERVAL_CUSTOM</interval>
</timeFrameFilter>
</Report>

Просмотреть файл

@ -0,0 +1,93 @@
<?xml version="1.0" encoding="UTF-8"?>
<Report xmlns="http://soap.sforce.com/2006/04/metadata" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<buckets>
<bucketType>number</bucketType>
<developerName>BucketField_33803839</developerName>
<masterLabel>Days on Market</masterLabel>
<nullTreatment>z</nullTreatment>
<sourceColumnName>Property__c.Days_On_Market__c</sourceColumnName>
<useOther>false</useOther>
<values>
<sourceValues>
<to>30</to>
</sourceValues>
<value>&lt;30 days</value>
</values>
<values>
<sourceValues>
<from>30</from>
<to>60</to>
</sourceValues>
<value>30-60 days</value>
</values>
<values>
<sourceValues>
<from>60</from>
</sourceValues>
<value>>60 days</value>
</values>
</buckets>
<chart>
<backgroundColor1>#FFFFFF</backgroundColor1>
<backgroundColor2>#FFFFFF</backgroundColor2>
<backgroundFadeDir>Diagonal</backgroundFadeDir>
<chartSummaries>
<axisBinding>y</axisBinding>
<column>RowCount</column>
</chartSummaries>
<chartType>Donut</chartType>
<enableHoverLabels>false</enableHoverLabels>
<expandOthers>false</expandOthers>
<groupingColumn>BucketField_33803839</groupingColumn>
<legendPosition>Right</legendPosition>
<location>CHART_BOTTOM</location>
<showAxisLabels>true</showAxisLabels>
<showPercentage>false</showPercentage>
<showTotal>false</showTotal>
<showValues>false</showValues>
<size>Medium</size>
<summaryAxisRange>Auto</summaryAxisRange>
<textColor>#000000</textColor>
<textSize>12</textSize>
<titleColor>#000000</titleColor>
<titleSize>18</titleSize>
</chart>
<columns>
<field>CUST_NAME</field>
</columns>
<columns>
<field>Property__c.Date_Listed__c</field>
</columns>
<columns>
<field>Property__c.Beds__c</field>
</columns>
<columns>
<field>Property__c.Baths__c</field>
</columns>
<columns>
<field>Property__c.Price__c</field>
</columns>
<columns>
<field>Property__c.Days_On_Market__c</field>
</columns>
<format>Summary</format>
<groupingsDown>
<dateGranularity>Day</dateGranularity>
<field>BucketField_33803839</field>
<sortOrder>Asc</sortOrder>
</groupingsDown>
<name>Portfolio Health</name>
<params>
<name>co</name>
<value>1</value>
</params>
<reportType>CustomEntity$Property__c</reportType>
<scope>user</scope>
<showDetails>true</showDetails>
<sortColumn>Property__c.Days_On_Market__c</sortColumn>
<sortOrder>Asc</sortOrder>
<timeFrameFilter>
<dateColumn>Property__c.Date_Agreement__c</dateColumn>
<interval>INTERVAL_CUSTOM</interval>
</timeFrameFilter>
</Report>

Просмотреть файл

@ -0,0 +1,67 @@
<?xml version="1.0" encoding="UTF-8"?>
<Report xmlns="http://soap.sforce.com/2006/04/metadata" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<chart>
<backgroundColor1>#FFFFFF</backgroundColor1>
<backgroundColor2>#FFFFFF</backgroundColor2>
<backgroundFadeDir>Diagonal</backgroundFadeDir>
<chartSummaries>
<aggregate>Sum</aggregate>
<axisBinding>y</axisBinding>
<column>Property__c.Price__c</column>
</chartSummaries>
<chartType>VerticalColumn</chartType>
<enableHoverLabels>false</enableHoverLabels>
<expandOthers>true</expandOthers>
<groupingColumn>FK_NAME</groupingColumn>
<location>CHART_BOTTOM</location>
<showAxisLabels>true</showAxisLabels>
<showPercentage>false</showPercentage>
<showTotal>false</showTotal>
<showValues>true</showValues>
<size>Medium</size>
<summaryAxisRange>Auto</summaryAxisRange>
<textColor>#000000</textColor>
<textSize>12</textSize>
<titleColor>#000000</titleColor>
<titleSize>18</titleSize>
</chart>
<columns>
<field>CUST_NAME</field>
</columns>
<columns>
<field>Property__c.Beds__c</field>
</columns>
<columns>
<field>Property__c.Baths__c</field>
</columns>
<columns>
<field>Property__c.Date_Listed__c</field>
</columns>
<columns>
<field>Property__c.Days_On_Market__c</field>
</columns>
<columns>
<aggregateTypes>Sum</aggregateTypes>
<field>Property__c.Price__c</field>
</columns>
<format>Summary</format>
<groupingsDown>
<dateGranularity>Day</dateGranularity>
<field>FK_NAME</field>
<sortOrder>Asc</sortOrder>
</groupingsDown>
<name>Properties by Broker</name>
<params>
<name>co</name>
<value>1</value>
</params>
<reportType>CustomEntity$Property__c@Property__c.Broker__c</reportType>
<scope>user</scope>
<showDetails>true</showDetails>
<sortColumn>Property__c.Days_On_Market__c</sortColumn>
<sortOrder>Desc</sortOrder>
<timeFrameFilter>
<dateColumn>Property__c.Date_Agreement__c</dateColumn>
<interval>INTERVAL_CUSTOM</interval>
</timeFrameFilter>
</Report>

Просмотреть файл

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workflow xmlns="http://soap.sforce.com/2006/04/metadata"/>