### Skedulo CLI: Tenant Login Source: https://github.com/skedulodevelopers/mobileextensionexamples/blob/main/README.md Commands to log in to a Skedulo tenant using either a web interface or an access token. This is a prerequisite for deploying or managing extensions. ```bash sked tenant login web ``` ```bash sked tenant login token ``` -------------------------------- ### Skedulo CLI: Deploy Mobile Extension Source: https://github.com/skedulodevelopers/mobileextensionexamples/blob/main/README.md Command to create and deploy a mobile extension to your Skedulo tenant. Requires specifying the extension's JSON definition file. This is the initial deployment step. ```bash sked artifacts mobile-extension create -f HelloWorld.MobileExtension.json ``` -------------------------------- ### CLI: Create a New Mobile Extension Source: https://context7.com/skedulodevelopers/mobileextensionexamples/llms.txt Command to create a new mobile extension by logging into the Skedo tenant and then using the artifacts command to create the extension from a JSON definition file. ```bash sked tenant login web sked artifacts mobile-extension create -f HelloWorld.MobileExtension.json ``` -------------------------------- ### Skedulo CLI: Retrieve Mobile Extension Source: https://github.com/skedulodevelopers/mobileextensionexamples/blob/main/README.md Command to retrieve an existing mobile extension from your Skedulo tenant and save it locally. You need to specify the output directory and the definition ID of the extension. ```bash sked artifacts mobile-extension get -o . --defId HelloWorld ``` -------------------------------- ### Configure Dependent Picklists with Filtering Source: https://context7.com/skedulodevelopers/mobileextensionexamples/llms.txt Filters picklist options dynamically based on the selection in a parent field. This example demonstrates a dependent picklist for 'ProductSubType' that is filtered based on the selected 'ProductType'. ```json { "type": "selectEditor", "title": "form.UpsertProductPage.ProductSubType", "displayExpression": "pageData.ProductSubType", "valueExpression": "pageData.ProductSubType", "sourceExpression": "sharedData.__predefined.PredefinedPicklist", "filterExpression": "pageData.ProductType === item.For", "selectPage": { "itemTitle": "form.UpsertProductPage.ItemTitle", "emptyText": "form.UpsertProductPage.ItemEmpty", "title": "form.UpsertProductPage.ProductSubTypeHint" } } ``` -------------------------------- ### Skedulo CLI: Update Mobile Extension Source: https://github.com/skedulodevelopers/mobileextensionexamples/blob/main/README.md Command to update a mobile extension in your Skedulo tenant with local changes. Requires the definition ID of the extension and the path to its JSON file. ```bash sked artifacts mobile-extension update --defId HelloWorld -f HelloWorld.MobileExtension.json ``` -------------------------------- ### Extension Summary Configuration Source: https://context7.com/skedulodevelopers/mobileextensionexamples/llms.txt Provides a summary and display configuration for a Skedulo mobile extension. It includes a display order, the context object it operates on, and a revision count, aiding in its organization and management within the platform. ```json { "summary": "An example Skedulo Plus Mobile Extension", "displayOrder": 0, "contextObject": "Resources", "revisionCount": 1 } ``` -------------------------------- ### Add Visual Header with Status Tags (JSON) Source: https://context7.com/skedulodevelopers/mobileextensionexamples/llms.txt Defines a page structure with a visual header, including a title, description, and status tags. The tags can be dynamically themed using expressions. ```json { "pages": { "FlatPage": { "type": "flat", "header": { "title": "form.ShowCasePage.HeaderTitle", "description": "form.ShowCasePage.HeaderDescription", "tags": { "items": [ { "text": "ui.success", "themeValueExpression": "success" }, { "text": "ui.warning", "themeValueExpression": "warning" }, { "text": "ui.danger", "themeValueExpression": "danger" } ] } } } } } ``` -------------------------------- ### Implement Conditional Rendering for Sections Source: https://context7.com/skedulodevelopers/mobileextensionexamples/llms.txt Controls the visibility of UI sections based on specific field values. This example shows a 'Camera Information' section that is only displayed when the 'ProductSubType' is 'DigitalStillCamera'. ```json { "items": [ { "type": "selectEditor", "title": "form.UpsertProductPage.ProductSubType", "valueExpression": "pageData.ProductSubType" }, { "body": "form.UpsertProductPage.CameraInformation", "type": "section", "showIfExpression": "pageData.ProductSubType === 'DigitalStillCamera'", "items": [ { "type": "selectEditor", "title": "form.UpsertProductPage.CameraType", "valueExpression": "pageData.CameraType" } ] } ] } ``` -------------------------------- ### Implement Menu List Navigation Source: https://context7.com/skedulodevelopers/mobileextensionexamples/llms.txt Creates a landing page with a menu list that allows users to navigate to different sections or pages within the mobile extension. Each menu item has an icon, text, destination, and an optional badge. ```json { "pages": { "LandingPage": { "type": "flat", "items": [ { "type": "menuList", "items": [ { "icon": "calendar", "text": "form.LandingPage.FlatPage", "itemClickDestination": "FlatPage", "badgeText": "ui.one" }, { "icon": "search", "text": "form.LandingPage.ListPage", "itemClickDestination": "ListPage", "badgeText": "ui.two" } ] } ] } } } ``` -------------------------------- ### Extension Metadata Configuration Source: https://context7.com/skedulodevelopers/mobileextensionexamples/llms.txt Defines essential metadata for a Skedulo mobile extension, including its type and source. This configuration is crucial for the Skedulo platform to identify and process the extension correctly. ```json { "metadata": { "type": "MobileExtension" }, "defId": "HelloWorld", "source": "HelloWorld" } ``` -------------------------------- ### Define Localization Resources for Internationalization Source: https://context7.com/skedulodevelopers/mobileextensionexamples/llms.txt Specifies internationalization support by defining locale-specific strings. This JSON snippet includes a title and description intended for use in multi-language applications. ```json { "title": "Hello World", "description": "A simple example mobile extension" } ``` -------------------------------- ### Skedulo CLI: Delete Mobile Extension Source: https://github.com/skedulodevelopers/mobileextensionexamples/blob/main/README.md Command to delete a mobile extension from your Skedulo tenant. You only need to provide the definition ID of the extension to be removed. ```bash sked artifacts mobile-extension delete --defId HelloWorld ``` -------------------------------- ### Set Dynamic Default Data with Expressions (JSON) Source: https://context7.com/skedulodevelopers/mobileextensionexamples/llms.txt Configures default data for new records using expressions. It demonstrates setting string, datetime, object IDs, and boolean values dynamically. ```json { "defaultPageData": { "data": { "SingleLineText": "Default string", "FromDateTime": "${now('datetime')}", "ToDateTime": "${now('datetime')}", "JobId": "${metadata.contextObjectId}", "Disabled": false }, "objectName": "ShowCaseObject" } } ``` -------------------------------- ### List Page with Search and Navigation Source: https://context7.com/skedulodevelopers/mobileextensionexamples/llms.txt Configures a Skedulo mobile extension for a product list page. It includes a title, add new functionality, search capabilities, and defines how list items are displayed and navigated, supporting CRUD operations on 'Products'. ```json { "pages": { "ProductListPage": { "title": "form.ProductListPages.ProductTitle", "type": "list", "addNew": { "text": "form.ProductListPages.Add", "destinationPage": "UpsertProductPage", "defaultData": { "data": { "CreatedDate": "${now()}" }, "objectName": "Products" } }, "sourceExpression": "formData.Products", "emptyText": "form.ProductListPages.Empty", "search": { "placeholder": "form.ProductListPages.SearchPlaceholder", "filterOnProperties": ["Name", "Description"] }, "itemLayout": { "type": "titleAndCaption", "title": "form.ProductListPages.ItemTitle", "caption": "form.ProductListPages.ItemCaption" }, "itemClickDestination": "UpsertProductPage" } }, "firstPage": "ProductListPage" } ``` -------------------------------- ### Simple UI Definition for Text Display Source: https://context7.com/skedulodevelopers/mobileextensionexamples/llms.txt A basic Skedulo mobile extension UI definition for displaying text. It uses a 'flat' page type with a 'textView' item to show a title and description, demonstrating minimal UI configuration. ```json { "pages": { "HelloWorld": { "type": "flat", "items": [ { "type": "textView", "title": "title", "text": "description" } ] }, "title": "HelloWorld" }, "firstPage": "HelloWorld" } ``` -------------------------------- ### Configure Related Record Creation for Lists Source: https://context7.com/skedulodevelopers/mobileextensionexamples/llms.txt Enables the creation of new records from a list page that are related to the context object. It defines the text for the 'Add New' button, the destination page, and the default data and object name for the new record. ```json { "pages": { "ContactsListPage": { "type": "list", "addNew": { "text": "form.ContactsListPage.Add", "destinationPage": "UpsertContactPage", "defaultData": { "data": { "AccountId": "${metadata.job.accountId}" }, "objectName": "Contacts" } } } } } ``` -------------------------------- ### Configure Attachment Editor with Validation Source: https://context7.com/skedulodevelopers/mobileextensionexamples/llms.txt Sets up an attachment editor with validation to ensure at least one attachment is present. It defines the editor type, data source, and validation rules including an error message. ```json { "type": "attachmentsEditor", "sourceExpression": "pageData", "title": "form.UpsertProductPage.AddAttachment", "validator": [ { "type": "expression", "expression": "attachments.length > 0", "errorMessage": "form.UpsertProductPage.AttachmentRequired" } ] } ``` -------------------------------- ### Configure Read-Only Extension Display Source: https://context7.com/skedulodevelopers/mobileextensionexamples/llms.txt Defines a mobile extension that displays data but does not allow any modifications. It sets the extension to read-only mode and configures a landing page with a text view to inform the user. ```json { "firstPage": "LandingPage", "readonly": true, "pages": { "LandingPage": { "type": "flat", "title": "form.ShowCasePage.Title", "items": [ { "type": "textView", "title": "Display Only", "text": "This extension does not allow edits" } ] } } } ``` -------------------------------- ### Implement List Item Actions for Email, SMS, and Phone Source: https://context7.com/skedulodevelopers/mobileextensionexamples/llms.txt Adds extra actions to list items, enabling users to send emails, SMS messages, or initiate phone calls directly from a list. It specifies the list page, action titles, and the corresponding behavior with data expressions. ```json { "pages": { "ContactsListPage": { "type": "list", "extraActions": [ { "title": "form.ContactsListPage.SendEmail", "behavior": { "type": "email", "emailExpression": "item.Email" } }, { "title": "form.ContactsListPage.SendSMS", "behavior": { "type": "sms", "phoneNumberExpression": "item.MobilePhone" } }, { "title": "form.ContactsListPage.Phone", "behavior": { "type": "phone", "phoneNumberExpression": "item.MobilePhone" } } ] } } } ``` -------------------------------- ### Text Editor with Barcode Scanner Integration Source: https://context7.com/skedulodevelopers/mobileextensionexamples/llms.txt Configures a text editor item in a Skedulo mobile extension to support barcode and QR code scanning. It specifies the value binding, title, placeholder, validation, and enables the 'useBarcodeAndQRScanner' feature. ```json { "type": "textEditor", "valueExpression": "pageData.ProductCode", "title": "form.UpsertProductPage.ProductCode", "placeholder": "form.UpsertProductPage.ProductCodeHint", "validator": [ { "type": "expression", "errorMessage": "form.UpsertProductPage.ProductCodeMustBeEntered", "expression": "pageData.ProductCode != null" } ], "features": { "useBarcodeAndQRScanner": true } } ``` -------------------------------- ### Form Page with Validation and CRUD Operations Source: https://context7.com/skedulodevelopers/mobileextensionexamples/llms.txt Defines a Skedulo mobile extension form page for upserting product data. It includes titles for adding and editing, button text, default data for new objects, validation rules, and delete functionality with confirmation prompts. ```json { "pages": { "UpsertProductPage": { "type": "flat", "upsert": { "insertTitle": "form.UpsertProductPage.AddProduct", "updateTitle": "form.UpsertProductPage.EditProduct", "insertButtonText": "form.UpsertProductPage.Add", "updateButtonText": "form.UpsertProductPage.Update", "defaultDataForNewObject": { "CreatedDate": "${now()}" }, "validator": [], "saveDraft": { "askWhenBack": true } }, "delete": { "canDeleteExpression": "converters.data.isTempUID(pageData) == false", "text": "form.UpsertProductPage.DeleteProduct", "confirm": { "title": "form.UpsertProductPage.ConfirmDeleteTitle", "description": "form.UpsertProductPage.ConfirmDeleteDescription", "yesBtn": "form.UpsertProductPage.ConfirmDeleteYesButton", "noBtn": "form.UpsertProductPage.ConfirmDeleteNoButton" } }, "items": [ { "type": "textEditor", "valueExpression": "pageData.Name", "title": "form.UpsertProductPage.Name", "placeholder": "form.UpsertProductPage.NameHint", "validator": [ { "type": "expression", "errorMessage": "form.UpsertProductPage.NameMustBeEntered", "expression": "pageData.Name != null" } ] } ] } } } ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.