Monday, January 29, 2024

Add Service Principle support in Custom Connector

 

then search for "Streamlining Integration: Using Service Principal authentication on Custom connectors with Microsoft Graph Application Permissions" in https://ashiqf.com/


This is very useful as the connection which gets created is a shared connection, thus the connector can perform many tasks that usually cannot be done by that user login. Such as adding user to a group, sending email on someone behalf.

Assign Power Platform Team to MS 365 or security group

 



log in to make.powerapps.com -> select your environment -> click on "setting (gear symbol) -> advanced settings -> security -> Teams -> Click on New -> select owner type as "AAD Security Group" and provide GUID of the group and update required details. Save

Once saved, on the ribbon go to "manage roles' and provide appropriate role

Sunday, January 28, 2024

Importing SQL Server Connection

 

  • Add a connection reference for the SQL connection in the solution.
  • Create the SQL connection to use in the target environment and share it for use by your organization
  • Import the solution into the target environment and point the connection reference to the shared SQL connection

If the above doesn't work open the app in edit mode in target environment and delete sql connwctions and re add them again.

Then go the app, check solution unmanaged layer, then delete the unmanaged layer, re import the solution

Overcoming delegation limit in a gallery

 With(

    {
        x: Filter(
            SQL_Products,
            StartsWith(
                cr539_productname,
                txtSearch_3.Text
            )
        )
    },
    With(
        {
            x: SortByColumns(
                x,
                Switch(
                    var_sortColumn,
                    "Id",
                    "cr539_id",
                    "Product",
                    "cr539_productname",
                    "Package",
                    "cr539_package"
                ),
                If(
                    var_sortDir = "Ascending",
                    SortOrder.Ascending,
                    SortOrder.Descending
                )
            )
        },
        With(
            {
                x: Filter (
                    x,
                    If(
                        IsBlank(ComboBox1_9.Selected.Value),
                        true,
                        ProductName in ComboBox1_9.SelectedItems.Value
                    ),
                    If(
                        IsBlank(ComboBox1_10.Selected.Value),
                        true,
                        Package in ComboBox1_10.SelectedItems.Value
                    )
                )
            },
            x
        )
    )
)

Friday, January 26, 2024

Setting a custom theme

 Set(var_nightTheme, true);

Set(
    _appOverLay,
    RGBA(50, 42, 38, 0.7)
);
Set(
    _appOverLayLighter,
    RGBA(
        48,
        47,
        77,
        0.5
    )
);
Set(
    defaultsLight,
    {
        primaryColor: ColorValue("#F7F7FF"),
        secondaryColor: ColorValue("#fd5f06"),
        disabledColor: Color.Gray,
        topMenuColor: ColorValue("#23B5D3"),
        backgroundColor: ColorValue("#FCFCFC"),
        selectedColor : ColorFade(ColorValue("#23B5D3"), 20%),
        elementBackgroundColor: RGBA(
            0,
            39,
            43,
            1
        ),
        textColor: RGBA(
            52,
            51,
            48,
            1
        ),
        errorColor: ColorValue("#B00020"),
        font: "Segoe UI",
        fontSize: 13,
        borderRadius: 5,
        //borderColor: Color.Transparent,
        borderColor: RGBA(
            71,
            68,
            72,
            1
        ),
        //inputFill: RGBA(240, 240, 240, 1),
        inputFill: RGBA(
            241,
            240,
            234,
            1
        ),
        inputBorderThickness: 0.5
    }
);
Set(
    defaultsDark,
    {
        //primaryColor: ColorValue("#070600"),
        primaryColor: ColorValue("#322A26"),
        secondaryColor: ColorValue("#fd5f06"),
        disabledColor: Color.Gray,
        topMenuColor: ColorValue("#474448"),
        selectedColor : ColorFade(ColorValue("#474448"), 20%),
        //backgroundColor: ColorValue("#212D40"),
        backgroundColor: ColorValue("#383B53"),
        elementBackgroundColor: RGBA(
            240,
            240,
            240,
            1
        ),
        textColor: RGBA(
            255,
            255,
            255,
            1
        ),
        errorColor: ColorValue("#B00020"),
        font: "Segoe UI",
        fontSize: 13,
        borderRadius: 5,
        //borderColor: Color.Transparent,
        borderColor: RGBA(
            240,
            240,
            240,
            1
        ),
        //inputFill: RGBA(240, 240, 240, 1),
        inputFill: RGBA(
            33,
            45,
            64,
            1
        ),
        inputBorderThickness: 0.5
    }
);
Set(
    defaultsLight,
    Patch(
        defaultsLight,
        {
            primaryColorHex: Match(
                JSON(
                    defaultsLight.primaryColor,
                    JSONFormat.IgnoreUnsupportedTypes
                ),
                "#[a-fA-F0-9]{6}"
            ).FullMatch,
            primaryColorTransparentHex: Match(
                JSON(
                    defaultsLight.primaryColor,
                    JSONFormat.IgnoreUnsupportedTypes
                ),
                "#[a-fA-F0-9]{6}"
            ).FullMatch & "4d",
            topMenuColorHex: Match(
                JSON(
                    defaultsLight.topMenuColor,
                    JSONFormat.IgnoreUnsupportedTypes
                ),
                "#[a-fA-F0-9]{6}"
            ).FullMatch,
            secondaryColorHex: Match(
                JSON(
                    defaultsLight.secondaryColor,
                    JSONFormat.IgnoreUnsupportedTypes
                ),
                "#[a-fA-F0-9]{6}"
            ).FullMatch,
            disabledColorHex: Match(
                JSON(
                    defaultsLight.disabledColor,
                    JSONFormat.IgnoreUnsupportedTypes
                ),
                "#[a-fA-F0-9]{6}"
            ).FullMatch,
            backgroundColorHex: Match(
                JSON(
                    defaultsLight.backgroundColor,
                    JSONFormat.IgnoreUnsupportedTypes
                ),
                "#[a-fA-F0-9]{6}"
            ).FullMatch,
            errorColorHex: Match(
                JSON(
                    defaultsLight.errorColor,
                    JSONFormat.IgnoreUnsupportedTypes
                ),
                "#[a-fA-F0-9]{6}"
            ).FullMatch,
            elementBackgroundColorHex: Match(
                JSON(
                    defaultsLight.elementBackgroundColor,
                    JSONFormat.IgnoreUnsupportedTypes
                ),
                "#[a-fA-F0-9]{6}"
            ).FullMatch,
            textColorHex: Match(
                JSON(
                    defaultsLight.textColor,
                    JSONFormat.IgnoreUnsupportedTypes
                ),
                "#[a-fA-F0-9]{6}"
            ).FullMatch
        }
    )
);
Set(
    defaultsDark,
    Patch(
        defaultsDark,
        {
            primaryColorHex: Match(
                JSON(
                    defaultsDark.primaryColor,
                    JSONFormat.IgnoreUnsupportedTypes
                ),
                "#[a-fA-F0-9]{6}"
            ).FullMatch,
            primaryColorTransparentHex: Match(
                JSON(
                    defaultsDark.primaryColor,
                    JSONFormat.IgnoreUnsupportedTypes
                ),
                "#[a-fA-F0-9]{6}"
            ).FullMatch & "4d",
            topMenuColorHex: Match(
                JSON(
                    defaultsDark.topMenuColor,
                    JSONFormat.IgnoreUnsupportedTypes
                ),
                "#[a-fA-F0-9]{6}"
            ).FullMatch,
            secondaryColorHex: Match(
                JSON(
                    defaultsDark.secondaryColor,
                    JSONFormat.IgnoreUnsupportedTypes
                ),
                "#[a-fA-F0-9]{6}"
            ).FullMatch,
            disabledColorHex: Match(
                JSON(
                    defaultsDark.disabledColor,
                    JSONFormat.IgnoreUnsupportedTypes
                ),
                "#[a-fA-F0-9]{6}"
            ).FullMatch,
            backgroundColorHex: Match(
                JSON(
                    defaultsDark.backgroundColor,
                    JSONFormat.IgnoreUnsupportedTypes
                ),
                "#[a-fA-F0-9]{6}"
            ).FullMatch,
            errorColorHex: Match(
                JSON(
                    defaultsDark.errorColor,
                    JSONFormat.IgnoreUnsupportedTypes
                ),
                "#[a-fA-F0-9]{6}"
            ).FullMatch,
            elementBackgroundColorHex: Match(
                JSON(
                    defaultsDark.elementBackgroundColor,
                    JSONFormat.IgnoreUnsupportedTypes
                ),
                "#[a-fA-F0-9]{6}"
            ).FullMatch,
            textColorHex: Match(
                JSON(
                    defaultsDark.textColor,
                    JSONFormat.IgnoreUnsupportedTypes
                ),
                "#[a-fA-F0-9]{6}"
            ).FullMatch
        }
    )
);
Set(
    defaults,
    defaultsDark
);

and where ever you want to change the theme
Set(var_nightTheme,!var_nightTheme);
If(var_nightTheme, Set(defaults,defaultsDark), Set(defaults,defaultsLight));

Setting Control Values for a custom theme

 Label - Normal:

1. Color

defaults.textColor

2. Font

defaults.font

3. Size

defaults.fontSize

==================================================================================================================================================

Label - Header:

1. Color

defaults.textColor

2. Font

defaults.font

3. Size

defaults.fontSize + 3

4. FontWeight

FontWeight.Semibold

==================================================================================================================================================

Label - Instructions:

1. Color

defaults.textColor

2. Font

defaults.font

3. Size

defaults.fontSize

4. Italic

true

==================================================================================================================================================

Label - Sub Header:

1. Color

If(var_nightTheme, ColorFade(defaults.primaryColor, 60%), ColorFade(defaults.primaryColor, -60%))

2. Font

defaults.font

3. Size

defaults.fontSize+1

==================================================================================================================================================

Label - Error:

1. Color

defaults.errorColor

2. Font

defaults.font

3. Size

defaults.fontSize

==================================================================================================================================================

Combobox :

1. BorderStyle 

BorderStyle.None

2. BorderThickness

0

3. ChevronBackground

defaults.backgroundColor

4. ChevronFill

defaults.secondaryColor

5. ChevronHoverBackground

ColorFade(defaults.backgroundColor, -20%)

6. ChevronHoverFill

defaults.secondaryColor

7. Color

defaults.textColor

8. DisabledColor

ColorFade(defaults.textColor, 30 %)

9. DisabledFill

ColorFade(Self.Fill, 60 %)

10. Fill

defaults.backgroundColor

11. Font

defaults.font

12. HoverColor

defaults.textColor

13. HoverFill

ColorFade(Self.Fill, -20%)

14. PaddingLeft

15

15. PressedFill

Self.Fill

16. SelectionFill

defaults.secondaryColor

17. Size

defaults.fontSize

==================================================================================================================================================

DropDown :

1. BorderStyle

BorderStyle.None

2. ChevronBackground

defaults.backgroundColor

3. ChevronFill

defaults.secondaryColor

4. ChevronHoverBackground

ColorFade(defaults.backgroundColor, -20%)

5. ChevronHoverFill

defaults.secondaryColor

6. Color

defaults.textColor

7. DisabledColor

ColorFade(defaults.textColor, 30 %)

8. DisabledFill

ColorFade(Self.Fill, 60 %)

9. Fill

defaults.backgroundColor

10. Font

defaults.font

11. HoverColor

defaults.textColor

12. HoverFill

ColorFade(Self.Fill, -20%)

13. PressedFill

Self.Fill

14. SelectionFill

defaults.secondaryColor

==================================================================================================================================================

TextInput:

1. BorderThickness

0

2. Color

defaults.textColor

3. DisabledColor

ColorFade(defaults.textColor, 30 %)

4. DisabledFill

ColorFade(Self.Fill, 60 %)

5. Fill

defaults.backgroundColor

6. FocusedBorderThickness

1

7. Font

defaults.font

8. HoverBorderColor

Self.BorderColor

9. HoverFill

ColorFade(Self.Fill, -20%)

10. MaxLength

256

11. RadiusBottomLeft

0

12. RadiusBottomRight

0

13. RadiusTopLeft

0

14. RadiusTopRight

0

15. Size

defaults.fontSize

==================================================================================================================================================

DatePicker:

1. BorderStyle

BorderStyle.None

2. BorderThickness

0

3. Color

defaults.textColor

4. DisabledColor

ColorFade(defaults.textColor, 30 %)

5. DisabledFill

ColorFade(Self.Fill, 60 %)

6. Fill

defaults.backgroundColor

7. Font

defaults.font

8. IconBackground

defaults.secondaryColor

9. IconFill

defaults.elementBackgroundColor

10. Size

defaults.fontSize

==================================================================================================================================================

Checkbox:

1. BorderColor

defaults.secondaryColor

2. BorderStyle

BorderStyle.None

3. Color

defaults.textColor

4. Font

defaults.font

5. HoverColor

Self.Color

6. Size

defaults.fontSize

==================================================================================================================================================

Radio:

1. BorderStyle

BorderStyle.None

2. Color

defaults.textColor

3. Font

defaults.font

4. HoverColor

ColorFade(Self.Color, 20%)

5. Layout

Layout.Horizontal

6. Size

defaults.fontSize

===================================================================================================================================================

Toggle:

1. BorderStyle

BorderStyle.None

2. Color

defaults.textColor

3. Font

defaults.font

4. Size

defaults.fontSize

5. TrueFill

defaults.secondaryColor

==================================================================================================================================================

Slider:

1. BorderStyle

BorderStyle.None

2. RailFill

defaults.textColor

3. ValueFill

defaults.secondaryColor

==================================================================================================================================================

Button Primary:

1. BorderThickness

1

2. Color

defaults.textColor

3. Fill

defaults.secondaryColor

4. Font

defaults.font

5. HoverFill

ColorFade(Self.Fill, -20%)

6. PressedFill

ColorFade(Self.Fill, -20%)

7. Size

defaults.fontSize

==================================================================================================================================================

Button Secondary:

1. BorderThickness

1

2. Color

defaults.textColor

3. Fill

defaults.topMenuColor

4. Font

defaults.font

5. HoverFill

ColorFade(Self.Fill, -20%)

6. PressedFill

ColorFade(Self.Fill, -20%)

7. Size

defaults.fontSize

==================================================================================================================================================

PenInput

1. BorderStyle

BorderStyle.None

2. Color

defaults.textColor

3. Fill

ColorFade(defaults.primaryColor, -20%)



Tuesday, January 16, 2024

Free background music & background music to video

 https://pixabay.com/music/search/theme/background%20music/


https://clideo.com/


Add music without watermark


https://abraia.me/console/editor

Add Service Principle support in Custom Connector

  then search for "Streamlining Integration: Using Service Principal authentication on Custom connectors with Microsoft Graph Applicati...