Power Apps Understanding


Report

  • We can use people picker fields, look up fields 
  • file attachment
  • back next save cancel
  • download the report and this report can be used in other system of powerapp.
  • Add new report button - asks add from existing report
  • Report all item view can design in the way like sharepoint list views for example.
  • we can group it Group AND or Group OR by apply filters

Canvas apps:

  • Arrange user experience and interface design
  • allow creativity and business use case guide how the way app wants to look like.
  • Sources can be around 200+ ways.
  • Majorly SharePOint, Power BI
  • From data,
  • From Sample
  • From CDS
  • From blank canvas
  • via appSource

Model driven apps:

Model driven apps uses power of CDS rapidly to configure your forms, business rules and process flows.


Create an app
create and design forms
create or edit views
create or edit system chart
create or edit dashboard
add security
add business logic

What Common data services do?

CDS allows you to store data securly and manage data with in a set of standard and custom entities, and you can add fields to those entities.

Create a custom entity,
Manage fields,
Create a custom option sets,
Create a business rule.

Overview artifacts of Power app with canvas, model driven
Model driven - Entity
Entity > view
Entity > forms
Entity > Dashboards

Canvas apps - we can use

Connection
GateWay
Custom connectors
Apps > Import

BrowseScreen -> BrowseGallery ->

Methods:

Refresh(Account);
OnSelect
+ symbol: NewForm(EditForm1); Navigate(FormScreen, ScreenTrasition.None)
Edit symbol: EditForm(EditForm1); Navigate(FormScreen,ScreenTrasition.None);
Close symbol: ResetForm(EditForm); Navigate(BrowseScreen, ScreenTrasition.None);
Submit symbol: SubmitForm(EditForm); Navigate(BrowseScreen, ScreenTrasition.None);
Remove: Remove(Accounts, BrowseGallery.Selected); Navigate(BrowseScreen, ScreenTrasition.None);

Items property: BrowseGallery1.Selected.

Canvas Apps connectors of the power apps
Connectors may provide table for data and actions
some connectors provide only tables
some connectors provide only actions
some connectors provide both tables and actions

Tables:

Lessons is the table
Items property: SortByColumns(Search(Lessons, TextSearchBox1.Text))

Actions:

Like table, we don't need entire data in some cases, Eg. Yammer, it sets the item property to the name of the data source. 
GetMessagesInGroup(5033256).messages.

Popular connectors are SharePOint, CDS, Office Outlook, Excel, SQL Server, OneDrive for business, Dynamics 365, OneDrive, Dropbox.
If we want to use costom connectors like microsoft Connector reference, we may need power app Plan 1 or 2 is required.

Environment:

When we add our data source to common data services, then we can change the environment and select one or more entities. 
Note: Common data services are more robust than dynamics 365 connectors.

By default app connects to the current environment and UI shows (Current).

Connect to Office 365 users

view the available functions are below
DirectReports - 
Manager
MyProfile
SearchUser
UserProfile

Retrive profile properties for the current user with above methods.
City, CompanyName, Country, Department, DisplayName, GivenName, Id, JobTitle, Mail, MailNickName, mobilephone, OfficeLocation, PostalCode, Surname, TelephoneNumber, UserPrincipalName, AccountEnabled, BusinessPhone

Connect to office 365 outlook, you can show send, delete, reply to the email messages and other tasks.


Items: Office365.GetMails({fetchOnlyUnread:false})
Gallery: ThisItem.Form, ThisItem.Subject, ThisItem.BodyPreview

Items: In items property we can use some sample like below
Office365.GetMails({fetchOnlyUnread, false})
Office365.GetMails({fetchOnlyUnread, false, top:2})
Office365.GetMails({folderpath:"sent items" ,fetchOnlyUnread, false, top:2})
Office365.GetMails({folderpath:"sent items" ,fetchOnlyUnread, false, top:2, searchQuery: "powerapps"})

inputTo, inputSubject, inputBody are three input fields in our forms
now we have send button.
OnSelect: office365.SendEmail(inputTo.text, inputSubject.text, inputbody.Text)

Send email with attachment.
OnSelect: 
These 3 properties are must for attachment
1. Name
2. ContentBytes
3. @odata.type : It is the property for only one attachment, and you can set it empty string when there is no attachemnt while sending email.

Office365.SendEmail(inputTo.Text, inputSubject.Text, inputBody.Text, {Attachments: Table({Name:"file1.jpg",ContentBytes:Camera1.Photo,'@odata.type':""})})

In addition, I want to send an audio file
Office365.SendEmail(inputTo.Text, inputSubject.Text, inputBody.Text, {Attachments: Table({Name:"file1.jpg",ContentBytes:Camera1.Photo,'@odata.type':""},{Name:"AudioFile",ContentBytes:microphone1.audio})})

Delete an Email:
office365.DeleteEmail(EmailID.Text)
Mark as read:
Office365.MarkAsRead(EmailID.Text)

Power apps from Excel always get data from excel table.

Insert a Gallery, and select a <b>text</b> gallery control.
Table1 is the table from the excel.
Items property:
ThisItem.Name
ThisItem.Notes
Note: Limitation of excel data table

In excel, In order to use excel we need to put data in a table.
Under Home tab -> Format as Table / Or Under insert tab -> Table -> Create table


If excel table, has lookups, then it won't work
data type are unsupported or not with in table then excel won't work with power apps.

Connect to OneDrive with excel in your app
Connect Twilio, send sms from your app
Connect to Common data source, update entity from your app
Connect SQL Server, and update table from your app

Understanding delegation in Canvas app:

Powerapps will delegate the processing of data to the data source, rathar than processing the data to the app for processing locally.
Working with large data sets requires using data sources and formulas that can be delegated.
It's the only way to keep the app performance well and ensure users can access all the information they need.
if the data is fewer (500 records), then you can use data source and formulas because app can process data locally. but when large data dealing, delagation is necessary.
Here, delgation means a warnings that identify places where the delegation is not possible.
Delegation is a warning message when power app is working with large amount of data that can make sure the data with correct results.

Delegation data source:

Only few data sources requires delegation.
For example, exel with data table of static data, it doesn't required delegation.
But again CDS, SharePoint, SQL Server data sources work with delegation concept.

Delegation warnings are worked based on the function we applied with our data.
For example filter functions like Filter, Search, Lookup can be delegated.

With in Filter and LookUp functions, you can use columns of table to  select appropriate record.
And ( &&)
Or (||)
Not (!)
In
=, <>, >=, <=, >, <
+, -
TrimEnds
IsBlank
StartsWith, EndsWith
If, *, /, Mod, Concatenate(Including &), ExactIn, 
String methods like Lower, Upper, Left, Mid, Len, 
Signals: Location, Acceleration, Compass, 
Volatiles: Rand, 
Collections
Sort Function: Sort, SortByColumns
Aggregator functions: Sum, Average, Min, Max

Can't be delegated functions:
Counting functions: CountRows, CountA, CountA
Other: StdevP, VarP

Table Shaping functions are partially delegatable functions
eg: AddColumns, DropColumns, RenameColumns, ShowColumns

Eg: AddColumns(Products, 
"Supplier Name",
LookUp(Supplier, Supplier.ID == Product.SupplierID).Name
)

Non Delegatable functions:
FirstN, LastN, Last, FirstN
Choices,
Concat,
Collect, ClearCollect
CountIf, RemoveIf, UpdateIf,
GroupBy, Ungroup
Non-delegatable data, works with default 500records.


In order to enable delegation to power app, first we need to create indexing for sharepoint list item ID, Title etc which are going to use for filtering purpose.
Secondly, In our power apps, we need to modify our gallery formula as similar below

StartsWith is delegatable function.



Comments