[{"data":1,"prerenderedAt":1534},["ShallowReactive",2],{"navigation":3,"\u002Fdashboards\u002Fwidgets\u002Fediting-a-widget":773,"\u002Fdashboards\u002Fwidgets\u002Fediting-a-widget-surround":1529},[4,28,63,85,103,112,269,355,453,485,506,542,576,594,647,669,693,721,747],{"title":5,"path":6,"stem":7,"children":8,"icon":27},"Getting Started","\u002Fgetting-started","01.getting-started\u002F01.index",[9,11,15,19,23],{"title":10,"path":6,"stem":7},"Introduction",{"title":12,"path":13,"stem":14},"Installation","\u002Fgetting-started\u002Finstallation","01.getting-started\u002F02.installation",{"title":16,"path":17,"stem":18},"Quickstart with AI","\u002Fgetting-started\u002Fquickstart-with-ai","01.getting-started\u002F03.quickstart-with-ai",{"title":20,"path":21,"stem":22},"Quickstart by Hand","\u002Fgetting-started\u002Fquickstart-by-hand","01.getting-started\u002F04.quickstart-by-hand",{"title":24,"path":25,"stem":26},"The Admin","\u002Fgetting-started\u002Fadmin-tour","01.getting-started\u002F05.admin-tour","i-lucide-rocket",{"title":29,"icon":30,"path":31,"stem":32,"children":33,"page":62},"Concepts","i-lucide-lightbulb","\u002Fconcepts","02.concepts",[34,38,42,46,50,54,58],{"title":35,"path":36,"stem":37},"PostgreSQL First","\u002Fconcepts\u002Fpostgresql-first","02.concepts\u002F01.postgresql-first",{"title":39,"path":40,"stem":41},"Resources","\u002Fconcepts\u002Fresources","02.concepts\u002F02.resources",{"title":43,"path":44,"stem":45},"Users and Roles","\u002Fconcepts\u002Fusers-and-roles","02.concepts\u002F03.users-and-roles",{"title":47,"path":48,"stem":49},"Permissions","\u002Fconcepts\u002Fpermissions","02.concepts\u002F04.permissions",{"title":51,"path":52,"stem":53},"Drafts and Publishing","\u002Fconcepts\u002Fdrafts-and-publishing","02.concepts\u002F05.drafts-and-publishing",{"title":55,"path":56,"stem":57},"Audit and Events","\u002Fconcepts\u002Faudit-and-events","02.concepts\u002F06.audit-and-events",{"title":59,"path":60,"stem":61},"Object Access","\u002Fconcepts\u002Fobject-access","02.concepts\u002F07.object-access",false,{"title":64,"icon":65,"path":66,"stem":67,"children":68,"page":62},"App","i-lucide-app-window","\u002Fapp","03.app",[69,73,77,81],{"title":70,"path":71,"stem":72},"The App","\u002Fapp\u002Foverview","03.app\u002F01.overview",{"title":74,"path":75,"stem":76},"DataViews","\u002Fapp\u002Fdataviews","03.app\u002F02.dataviews",{"title":78,"path":79,"stem":80},"Dashboards","\u002Fapp\u002Fdashboards","03.app\u002F03.dashboards",{"title":82,"path":83,"stem":84},"Arrange menu","\u002Fapp\u002Farrange-menu","03.app\u002F04.arrange-menu",{"title":86,"icon":87,"path":88,"stem":89,"children":90,"page":62},"Database","i-lucide-database","\u002Fdatabase","04.database",[91,95,99],{"title":92,"path":93,"stem":94},"Tables","\u002Fdatabase\u002Ftables","04.database\u002F01.tables",{"title":96,"path":97,"stem":98},"Views","\u002Fdatabase\u002Fviews","04.database\u002F02.views",{"title":100,"path":101,"stem":102},"Functions","\u002Fdatabase\u002Ffunctions","04.database\u002F03.functions",{"title":104,"icon":105,"path":106,"stem":107,"children":108,"page":62},"SQL Console","i-lucide-square-terminal","\u002Fsql-console","05.sql-console",[109],{"title":104,"path":110,"stem":111},"\u002Fsql-console\u002Foverview","05.sql-console\u002F01.overview",{"title":74,"icon":113,"path":114,"stem":115,"children":116,"page":62},"i-lucide-layout-list","\u002Fdataviews","06.dataviews",[117,121,125,129,183,214],{"title":118,"path":119,"stem":120},"Overview","\u002Fdataviews\u002Foverview","06.dataviews\u002F01.overview",{"title":122,"path":123,"stem":124},"Creating a DataView","\u002Fdataviews\u002Fcreating","06.dataviews\u002F02.creating",{"title":126,"path":127,"stem":128},"Publishing","\u002Fdataviews\u002Fpublishing","06.dataviews\u002F03.publishing",{"title":130,"icon":131,"path":132,"stem":133,"children":134,"page":62},"Types","i-lucide-shapes","\u002Fdataviews\u002Ftypes","06.dataviews\u002F04.types",[135,139,143,147,151,155,159,163,167,171,175,179],{"title":136,"path":137,"stem":138},"Table","\u002Fdataviews\u002Ftypes\u002Ftable","06.dataviews\u002F04.types\u002F01.table",{"title":140,"path":141,"stem":142},"Cards","\u002Fdataviews\u002Ftypes\u002Fcards","06.dataviews\u002F04.types\u002F02.cards",{"title":144,"path":145,"stem":146},"Kanban","\u002Fdataviews\u002Ftypes\u002Fkanban","06.dataviews\u002F04.types\u002F03.kanban",{"title":148,"path":149,"stem":150},"Calendar","\u002Fdataviews\u002Ftypes\u002Fcalendar","06.dataviews\u002F04.types\u002F04.calendar",{"title":152,"path":153,"stem":154},"Gantt","\u002Fdataviews\u002Ftypes\u002Fgantt","06.dataviews\u002F04.types\u002F05.gantt",{"title":156,"path":157,"stem":158},"Map","\u002Fdataviews\u002Ftypes\u002Fmap","06.dataviews\u002F04.types\u002F06.map",{"title":160,"path":161,"stem":162},"Tree","\u002Fdataviews\u002Ftypes\u002Ftree","06.dataviews\u002F04.types\u002F07.tree",{"title":164,"path":165,"stem":166},"Form","\u002Fdataviews\u002Ftypes\u002Fform","06.dataviews\u002F04.types\u002F08.form",{"title":168,"path":169,"stem":170},"Master-detail","\u002Fdataviews\u002Ftypes\u002Fmaster-detail","06.dataviews\u002F04.types\u002F09.master-detail",{"title":172,"path":173,"stem":174},"Settings","\u002Fdataviews\u002Ftypes\u002Fsettings","06.dataviews\u002F04.types\u002F10.settings",{"title":176,"path":177,"stem":178},"Custom","\u002Fdataviews\u002Ftypes\u002Fcustom","06.dataviews\u002F04.types\u002F11.custom",{"title":180,"path":181,"stem":182},"External Frame","\u002Fdataviews\u002Ftypes\u002Fexternal-frame","06.dataviews\u002F04.types\u002F12.external-frame",{"title":172,"icon":184,"path":185,"stem":186,"children":187,"page":62},"i-lucide-settings-2","\u002Fdataviews\u002Fsettings","06.dataviews\u002F05.settings",[188,192,196,199,202,206,210],{"title":189,"path":190,"stem":191},"General","\u002Fdataviews\u002Fsettings\u002Fgeneral","06.dataviews\u002F05.settings\u002F01.general",{"title":193,"path":194,"stem":195},"Data","\u002Fdataviews\u002Fsettings\u002Fdata","06.dataviews\u002F05.settings\u002F02.data",{"title":96,"path":197,"stem":198},"\u002Fdataviews\u002Fsettings\u002Fviews","06.dataviews\u002F05.settings\u002F03.views",{"title":164,"path":200,"stem":201},"\u002Fdataviews\u002Fsettings\u002Fform","06.dataviews\u002F05.settings\u002F04.form",{"title":203,"path":204,"stem":205},"Actions","\u002Fdataviews\u002Fsettings\u002Factions","06.dataviews\u002F05.settings\u002F05.actions",{"title":207,"path":208,"stem":209},"Security","\u002Fdataviews\u002Fsettings\u002Fsecurity","06.dataviews\u002F05.settings\u002F06.security",{"title":211,"path":212,"stem":213},"Versions","\u002Fdataviews\u002Fsettings\u002Fversions","06.dataviews\u002F05.settings\u002F07.versions",{"title":215,"icon":216,"path":217,"stem":218,"children":219,"page":62},"Design Form","i-lucide-pencil-ruler","\u002Fdataviews\u002Fdesign-form","06.dataviews\u002F06.design-form",[220,223,257,261,265],{"title":118,"path":221,"stem":222},"\u002Fdataviews\u002Fdesign-form\u002Foverview","06.dataviews\u002F06.design-form\u002F01.overview",{"title":224,"icon":131,"path":225,"stem":226,"children":227,"page":62},"Widgets","\u002Fdataviews\u002Fdesign-form\u002Fwidgets","06.dataviews\u002F06.design-form\u002F02.widgets",[228,231,234,238,242,246,250,254],{"title":224,"path":229,"stem":230},"\u002Fdataviews\u002Fdesign-form\u002Fwidgets\u002Foverview","06.dataviews\u002F06.design-form\u002F02.widgets\u002F01.overview",{"title":164,"path":232,"stem":233},"\u002Fdataviews\u002Fdesign-form\u002Fwidgets\u002Fform","06.dataviews\u002F06.design-form\u002F02.widgets\u002F02.form",{"title":235,"path":236,"stem":237},"Inputs","\u002Fdataviews\u002Fdesign-form\u002Fwidgets\u002Finputs","06.dataviews\u002F06.design-form\u002F02.widgets\u002F03.inputs",{"title":239,"path":240,"stem":241},"Display","\u002Fdataviews\u002Fdesign-form\u002Fwidgets\u002Fdisplay","06.dataviews\u002F06.design-form\u002F02.widgets\u002F04.display",{"title":243,"path":244,"stem":245},"Embeds","\u002Fdataviews\u002Fdesign-form\u002Fwidgets\u002Fembeds","06.dataviews\u002F06.design-form\u002F02.widgets\u002F05.embeds",{"title":247,"path":248,"stem":249},"Layout","\u002Fdataviews\u002Fdesign-form\u002Fwidgets\u002Flayout","06.dataviews\u002F06.design-form\u002F02.widgets\u002F06.layout",{"title":251,"path":252,"stem":253},"Overlays","\u002Fdataviews\u002Fdesign-form\u002Fwidgets\u002Foverlays","06.dataviews\u002F06.design-form\u002F02.widgets\u002F07.overlays",{"title":203,"path":255,"stem":256},"\u002Fdataviews\u002Fdesign-form\u002Fwidgets\u002Factions","06.dataviews\u002F06.design-form\u002F02.widgets\u002F08.actions",{"title":258,"path":259,"stem":260},"Variables","\u002Fdataviews\u002Fdesign-form\u002Fvariables","06.dataviews\u002F06.design-form\u002F03.variables",{"title":262,"path":263,"stem":264},"Code","\u002Fdataviews\u002Fdesign-form\u002Fcode","06.dataviews\u002F06.design-form\u002F04.code",{"title":266,"path":267,"stem":268},"Formulas","\u002Fdataviews\u002Fdesign-form\u002Fformulas","06.dataviews\u002F06.design-form\u002F05.formulas",{"title":78,"icon":270,"path":271,"stem":272,"children":273,"page":62},"i-lucide-layout-dashboard","\u002Fdashboards","07.dashboards",[274,277,281,285,332],{"title":118,"path":275,"stem":276},"\u002Fdashboards\u002Foverview","07.dashboards\u002F01.overview",{"title":278,"path":279,"stem":280},"Creating a Dashboard","\u002Fdashboards\u002Fcreating","07.dashboards\u002F02.creating",{"title":282,"path":283,"stem":284},"Editor","\u002Fdashboards\u002Feditor","07.dashboards\u002F03.editor",{"title":224,"icon":286,"path":287,"stem":288,"children":289,"page":62},"i-lucide-chart-bar","\u002Fdashboards\u002Fwidgets","07.dashboards\u002F04.widgets",[290,293,297,301,305,309,313,317,321,324,328],{"title":224,"path":291,"stem":292},"\u002Fdashboards\u002Fwidgets\u002Foverview","07.dashboards\u002F04.widgets\u002F01.overview",{"title":294,"path":295,"stem":296},"Editing a Widget","\u002Fdashboards\u002Fwidgets\u002Fediting-a-widget","07.dashboards\u002F04.widgets\u002F02.editing-a-widget",{"title":298,"path":299,"stem":300},"Indicators","\u002Fdashboards\u002Fwidgets\u002Findicators","07.dashboards\u002F04.widgets\u002F03.indicators",{"title":302,"path":303,"stem":304},"Comparison","\u002Fdashboards\u002Fwidgets\u002Fcomparison","07.dashboards\u002F04.widgets\u002F04.comparison",{"title":306,"path":307,"stem":308},"Trend","\u002Fdashboards\u002Fwidgets\u002Ftrend","07.dashboards\u002F04.widgets\u002F05.trend",{"title":310,"path":311,"stem":312},"Proportion","\u002Fdashboards\u002Fwidgets\u002Fproportion","07.dashboards\u002F04.widgets\u002F06.proportion",{"title":314,"path":315,"stem":316},"Distribution and Relation","\u002Fdashboards\u002Fwidgets\u002Fdistribution-and-relation","07.dashboards\u002F04.widgets\u002F07.distribution-and-relation",{"title":318,"path":319,"stem":320},"Maps","\u002Fdashboards\u002Fwidgets\u002Fmaps","07.dashboards\u002F04.widgets\u002F08.maps",{"title":92,"path":322,"stem":323},"\u002Fdashboards\u002Fwidgets\u002Ftables","07.dashboards\u002F04.widgets\u002F09.tables",{"title":325,"path":326,"stem":327},"Visualization and Insertion","\u002Fdashboards\u002Fwidgets\u002Fvisualization-and-insertion","07.dashboards\u002F04.widgets\u002F10.visualization-and-insertion",{"title":329,"path":330,"stem":331},"SQL Conventions","\u002Fdashboards\u002Fwidgets\u002Fsql-conventions","07.dashboards\u002F04.widgets\u002F11.sql-conventions",{"title":172,"icon":184,"path":333,"stem":334,"children":335,"page":62},"\u002Fdashboards\u002Fsettings","07.dashboards\u002F05.settings",[336,339,342,345,349,352],{"title":189,"path":337,"stem":338},"\u002Fdashboards\u002Fsettings\u002Fgeneral","07.dashboards\u002F05.settings\u002F01.general",{"title":258,"path":340,"stem":341},"\u002Fdashboards\u002Fsettings\u002Fvariables","07.dashboards\u002F05.settings\u002F02.variables",{"title":193,"path":343,"stem":344},"\u002Fdashboards\u002Fsettings\u002Fdata","07.dashboards\u002F05.settings\u002F03.data",{"title":346,"path":347,"stem":348},"Share","\u002Fdashboards\u002Fsettings\u002Fshare","07.dashboards\u002F05.settings\u002F04.share",{"title":207,"path":350,"stem":351},"\u002Fdashboards\u002Fsettings\u002Fsecurity","07.dashboards\u002F05.settings\u002F05.security",{"title":211,"path":353,"stem":354},"\u002Fdashboards\u002Fsettings\u002Fversions","07.dashboards\u002F05.settings\u002F06.versions",{"title":356,"icon":357,"path":358,"stem":359,"children":360,"page":62},"Workflows","i-lucide-workflow","\u002Fworkflows","08.workflows",[361,364,368,371,393,432],{"title":118,"path":362,"stem":363},"\u002Fworkflows\u002Foverview","08.workflows\u002F01.overview",{"title":365,"path":366,"stem":367},"Creating a Workflow","\u002Fworkflows\u002Fcreating","08.workflows\u002F02.creating",{"title":282,"path":369,"stem":370},"\u002Fworkflows\u002Feditor","08.workflows\u002F03.editor",{"title":372,"icon":373,"path":374,"stem":375,"children":376,"page":62},"Triggers","i-lucide-zap","\u002Fworkflows\u002Ftriggers","08.workflows\u002F04.triggers",[377,381,385,389],{"title":378,"path":379,"stem":380},"Manual","\u002Fworkflows\u002Ftriggers\u002Fmanual","08.workflows\u002F04.triggers\u002F01.manual",{"title":382,"path":383,"stem":384},"Database Event","\u002Fworkflows\u002Ftriggers\u002Fdatabase-event","08.workflows\u002F04.triggers\u002F02.database-event",{"title":386,"path":387,"stem":388},"Schedule","\u002Fworkflows\u002Ftriggers\u002Fschedule","08.workflows\u002F04.triggers\u002F03.schedule",{"title":390,"path":391,"stem":392},"Webhook","\u002Fworkflows\u002Ftriggers\u002Fwebhook","08.workflows\u002F04.triggers\u002F04.webhook",{"title":394,"icon":357,"path":395,"stem":396,"children":397,"page":62},"Steps","\u002Fworkflows\u002Fsteps","08.workflows\u002F05.steps",[398,401,405,408,412,416,420,424,428],{"title":193,"path":399,"stem":400},"\u002Fworkflows\u002Fsteps\u002Fdata","08.workflows\u002F05.steps\u002F01.data",{"title":402,"path":403,"stem":404},"Control","\u002Fworkflows\u002Fsteps\u002Fcontrol","08.workflows\u002F05.steps\u002F02.control",{"title":262,"path":406,"stem":407},"\u002Fworkflows\u002Fsteps\u002Fcode","08.workflows\u002F05.steps\u002F03.code",{"title":409,"path":410,"stem":411},"Integration","\u002Fworkflows\u002Fsteps\u002Fintegration","08.workflows\u002F05.steps\u002F04.integration",{"title":413,"path":414,"stem":415},"Communication","\u002Fworkflows\u002Fsteps\u002Fcommunication","08.workflows\u002F05.steps\u002F05.communication",{"title":417,"path":418,"stem":419},"Files","\u002Fworkflows\u002Fsteps\u002Ffiles","08.workflows\u002F05.steps\u002F06.files",{"title":421,"path":422,"stem":423},"Documents","\u002Fworkflows\u002Fsteps\u002Fdocuments","08.workflows\u002F05.steps\u002F07.documents",{"title":425,"path":426,"stem":427},"Composition","\u002Fworkflows\u002Fsteps\u002Fcomposition","08.workflows\u002F05.steps\u002F08.composition",{"title":429,"path":430,"stem":431},"Values","\u002Fworkflows\u002Fsteps\u002Fvalues","08.workflows\u002F05.steps\u002F09.values",{"title":172,"icon":184,"path":433,"stem":434,"children":435,"page":62},"\u002Fworkflows\u002Fsettings","08.workflows\u002F06.settings",[436,439,443,446,449],{"title":189,"path":437,"stem":438},"\u002Fworkflows\u002Fsettings\u002Fgeneral","08.workflows\u002F06.settings\u002F01.general",{"title":440,"path":441,"stem":442},"Trigger","\u002Fworkflows\u002Fsettings\u002Ftrigger","08.workflows\u002F06.settings\u002F02.trigger",{"title":207,"path":444,"stem":445},"\u002Fworkflows\u002Fsettings\u002Fsecurity","08.workflows\u002F06.settings\u002F03.security",{"title":211,"path":447,"stem":448},"\u002Fworkflows\u002Fsettings\u002Fversions","08.workflows\u002F06.settings\u002F04.versions",{"title":450,"path":451,"stem":452},"Runs","\u002Fworkflows\u002Fsettings\u002Fruns","08.workflows\u002F06.settings\u002F05.runs",{"title":417,"icon":454,"path":455,"stem":456,"children":457,"page":62},"i-lucide-files","\u002Ffiles","09.files",[458,461,465,469,473,477,481],{"title":118,"path":459,"stem":460},"\u002Ffiles\u002Foverview","09.files\u002F01.overview",{"title":462,"path":463,"stem":464},"Uploading","\u002Ffiles\u002Fuploading","09.files\u002F02.uploading",{"title":466,"path":467,"stem":468},"File Details","\u002Ffiles\u002Ffile-details","09.files\u002F03.file-details",{"title":470,"path":471,"stem":472},"Editing Files","\u002Ffiles\u002Fediting-files","09.files\u002F04.editing-files",{"title":474,"path":475,"stem":476},"Using Files in Tables","\u002Ffiles\u002Fusing-files-in-tables","09.files\u002F05.using-files-in-tables",{"title":478,"path":479,"stem":480},"Image Transformations","\u002Ffiles\u002Fimage-transformations","09.files\u002F06.image-transformations",{"title":482,"path":483,"stem":484},"Who Can See a File","\u002Ffiles\u002Fwho-can-see-a-file","09.files\u002F07.who-can-see-a-file",{"title":486,"icon":487,"path":488,"stem":489,"children":490,"page":62},"Templates","i-lucide-file-text","\u002Ftemplates","10.templates",[491,494,498,502],{"title":118,"path":492,"stem":493},"\u002Ftemplates\u002Foverview","10.templates\u002F01.overview",{"title":495,"path":496,"stem":497},"Emails","\u002Ftemplates\u002Femails","10.templates\u002F02.emails",{"title":499,"path":500,"stem":501},"PDF","\u002Ftemplates\u002Fpdf","10.templates\u002F03.pdf",{"title":503,"path":504,"stem":505},"System Emails","\u002Ftemplates\u002Fsystem-emails","10.templates\u002F04.system-emails",{"title":507,"icon":508,"path":509,"stem":510,"children":511,"page":62},"Users","i-lucide-users","\u002Fusers","11.users",[512,516,520,524,528],{"title":513,"path":514,"stem":515},"Managing Users","\u002Fusers\u002Fmanaging-users","11.users\u002F01.managing-users",{"title":517,"path":518,"stem":519},"A User's Page","\u002Fusers\u002Fa-users-page","11.users\u002F02.a-users-page",{"title":521,"path":522,"stem":523},"API Tokens","\u002Fusers\u002Fapi-tokens","11.users\u002F03.api-tokens",{"title":525,"path":526,"stem":527},"Sessions","\u002Fusers\u002Fsessions","11.users\u002F04.sessions",{"title":529,"icon":530,"path":531,"stem":532,"children":533,"page":62},"Insights","i-lucide-chart-line","\u002Fusers\u002Finsights","11.users\u002F05.insights",[534,538],{"title":535,"path":536,"stem":537},"Sign-ins","\u002Fusers\u002Finsights\u002Fsign-ins","11.users\u002F05.insights\u002F01.sign-ins",{"title":539,"path":540,"stem":541},"Activity","\u002Fusers\u002Finsights\u002Factivity","11.users\u002F05.insights\u002F02.activity",{"title":543,"icon":544,"path":545,"stem":546,"children":547,"page":62},"Roles","i-lucide-shield-check","\u002Froles","12.roles",[548,552,556,560,564,568,572],{"title":549,"path":550,"stem":551},"Creating a Role","\u002Froles\u002Fcreating-a-role","12.roles\u002F01.creating-a-role",{"title":553,"path":554,"stem":555},"Granting Permissions","\u002Froles\u002Fgranting-permissions","12.roles\u002F02.granting-permissions",{"title":557,"path":558,"stem":559},"Row Filters","\u002Froles\u002Frow-filters","12.roles\u002F03.row-filters",{"title":561,"path":562,"stem":563},"Payload Checks","\u002Froles\u002Fpayload-checks","12.roles\u002F04.payload-checks",{"title":565,"path":566,"stem":567},"Members","\u002Froles\u002Fmembers","12.roles\u002F05.members",{"title":569,"path":570,"stem":571},"Access Reviews","\u002Froles\u002Faccess-reviews","12.roles\u002F06.access-reviews",{"title":573,"path":574,"stem":575},"Delegated Administration","\u002Froles\u002Fdelegated-administration","12.roles\u002F07.delegated-administration",{"title":577,"icon":578,"path":579,"stem":580,"children":581,"page":62},"Logs","i-lucide-scroll-text","\u002Flogs","13.logs",[582,586,590],{"title":583,"path":584,"stem":585},"Audit Log","\u002Flogs\u002Faudit-log","13.logs\u002F01.audit-log",{"title":587,"path":588,"stem":589},"An Entry","\u002Flogs\u002Fan-entry","13.logs\u002F02.an-entry",{"title":591,"path":592,"stem":593},"Where Else It Shows","\u002Flogs\u002Fwhere-else-it-shows","13.logs\u002F03.where-else-it-shows",{"title":595,"icon":596,"path":597,"stem":598,"children":599,"page":62},"Data API","i-lucide-braces","\u002Fdata-api","14.data-api",[600,603,607,611,615,619,623,627,631,635,639,643],{"title":118,"path":601,"stem":602},"\u002Fdata-api\u002Foverview","14.data-api\u002F01.overview",{"title":604,"path":605,"stem":606},"Authentication","\u002Fdata-api\u002Fauthentication","14.data-api\u002F02.authentication",{"title":608,"path":609,"stem":610},"Reading","\u002Fdata-api\u002Freading","14.data-api\u002F03.reading",{"title":612,"path":613,"stem":614},"Filtering","\u002Fdata-api\u002Ffiltering","14.data-api\u002F04.filtering",{"title":616,"path":617,"stem":618},"Aggregating","\u002Fdata-api\u002Faggregating","14.data-api\u002F05.aggregating",{"title":620,"path":621,"stem":622},"Writing","\u002Fdata-api\u002Fwriting","14.data-api\u002F06.writing",{"title":624,"path":625,"stem":626},"Nested Writes","\u002Fdata-api\u002Fnested-writes","14.data-api\u002F07.nested-writes",{"title":628,"path":629,"stem":630},"Transactions","\u002Fdata-api\u002Ftransactions","14.data-api\u002F08.transactions",{"title":632,"path":633,"stem":634},"Calling Functions","\u002Fdata-api\u002Fcalling-functions","14.data-api\u002F09.calling-functions",{"title":636,"path":637,"stem":638},"OpenAPI","\u002Fdata-api\u002Fopenapi","14.data-api\u002F10.openapi",{"title":640,"path":641,"stem":642},"Routes","\u002Fdata-api\u002Froutes","14.data-api\u002F11.routes",{"title":644,"path":645,"stem":646},"A client, end to end","\u002Fdata-api\u002Fa-client","14.data-api\u002F12.a-client",{"title":172,"icon":648,"path":649,"stem":650,"children":651,"page":62},"i-lucide-settings","\u002Fsettings","15.settings",[652,655,659,662,665],{"title":189,"path":653,"stem":654},"\u002Fsettings\u002Fgeneral","15.settings\u002F01.general",{"title":656,"path":657,"stem":658},"Access","\u002Fsettings\u002Faccess","15.settings\u002F02.access",{"title":207,"path":660,"stem":661},"\u002Fsettings\u002Fsecurity","15.settings\u002F03.security",{"title":595,"path":663,"stem":664},"\u002Fsettings\u002Fdata-api","15.settings\u002F04.data-api",{"title":666,"path":667,"stem":668},"Features","\u002Fsettings\u002Ffeatures","15.settings\u002F05.features",{"title":670,"icon":671,"path":672,"stem":673,"children":674,"page":62},"User Profile","i-lucide-circle-user","\u002Fuser-profile","16.user-profile",[675,679,682,686,690],{"title":676,"path":677,"stem":678},"My Account","\u002Fuser-profile\u002Fmy-account","16.user-profile\u002F01.my-account",{"title":525,"path":680,"stem":681},"\u002Fuser-profile\u002Fsessions","16.user-profile\u002F02.sessions",{"title":683,"path":684,"stem":685},"Tokens","\u002Fuser-profile\u002Ftokens","16.user-profile\u002F03.tokens",{"title":687,"path":688,"stem":689},"Preferences","\u002Fuser-profile\u002Fpreferences","16.user-profile\u002F04.preferences",{"title":539,"path":691,"stem":692},"\u002Fuser-profile\u002Factivity","16.user-profile\u002F05.activity",{"title":694,"icon":695,"path":696,"stem":697,"children":698,"page":62},"AI Agents","i-lucide-bot","\u002Fai-agents","17.ai-agents",[699,702,705,709,713,717],{"title":118,"path":700,"stem":701},"\u002Fai-agents\u002Foverview","17.ai-agents\u002F01.overview",{"title":683,"path":703,"stem":704},"\u002Fai-agents\u002Ftokens","17.ai-agents\u002F02.tokens",{"title":706,"path":707,"stem":708},"MCP Server","\u002Fai-agents\u002Fmcp-server","17.ai-agents\u002F03.mcp-server",{"title":710,"path":711,"stem":712},"Recipes","\u002Fai-agents\u002Frecipes","17.ai-agents\u002F04.recipes",{"title":714,"path":715,"stem":716},"Tools","\u002Fai-agents\u002Ftools","17.ai-agents\u002F05.tools",{"title":718,"path":719,"stem":720},"llms.txt","\u002Fai-agents\u002Fllms-txt","17.ai-agents\u002F06.llms-txt",{"title":722,"icon":723,"path":724,"stem":725,"children":726,"page":62},"Operations","i-lucide-server","\u002Foperations","18.operations",[727,731,735,739,743],{"title":728,"path":729,"stem":730},"Deployment","\u002Foperations\u002Fdeployment","18.operations\u002F01.deployment",{"title":732,"path":733,"stem":734},"PostgreSQL","\u002Foperations\u002Fpostgresql","18.operations\u002F02.postgresql",{"title":736,"path":737,"stem":738},"Public URL, Proxy and CORS","\u002Foperations\u002Fpublic-url-proxy-cors","18.operations\u002F03.public-url-proxy-cors",{"title":740,"path":741,"stem":742},"Backup and Restore","\u002Foperations\u002Fbackup-restore","18.operations\u002F04.backup-restore",{"title":744,"path":745,"stem":746},"Upgrading","\u002Foperations\u002Fupgrading","18.operations\u002F05.upgrading",{"title":748,"icon":749,"path":750,"stem":751,"children":752,"page":62},"Reference","i-lucide-library","\u002Freference","19.reference",[753,757,761,765,769],{"title":754,"path":755,"stem":756},"Query Language","\u002Freference\u002Fquery-language","19.reference\u002F01.query-language",{"title":758,"path":759,"stem":760},"Errors","\u002Freference\u002Ferrors","19.reference\u002F02.errors",{"title":762,"path":763,"stem":764},"Admin API","\u002Freference\u002Fadmin-api","19.reference\u002F03.admin-api",{"title":766,"path":767,"stem":768},"Authentication API","\u002Freference\u002Fauth-api","19.reference\u002F04.auth-api",{"title":770,"path":771,"stem":772},"Environment Variables","\u002Freference\u002Fenvironment","19.reference\u002F05.environment",{"id":774,"title":294,"admin":775,"body":776,"description":1522,"extension":1523,"links":1524,"meta":1525,"navigation":1526,"path":295,"seo":1527,"stem":296,"__hash__":1528},"docs\u002F07.dashboards\u002F04.widgets\u002F02.editing-a-widget.md","a Dashboard › a widget › Edit",{"type":777,"value":778,"toc":1500},"minimark",[779,815,827,832,837,845,940,944,963,1020,1023,1040,1044,1047,1123,1131,1135,1166,1169,1173,1180,1184,1199,1202,1222,1232,1236,1261,1295,1298,1304,1380,1403,1407,1463,1473,1476,1479,1483],[780,781,782,786,787,790,791,794,795,798,799,802,803,806,807,810,811,814],"p",{},[783,784,785],"strong",{},"Edit"," on a card's ",[783,788,789],{},"⋮",", ",[783,792,793],{},"Configure"," on a new one, or a double-click on its header opens the ",[783,796,797],{},"widget drawer",". On the left, the preview and the SQL editor; on the right, the inspector with ",[783,800,801],{},"Properties"," and ",[783,804,805],{},"Styles",". Nothing is saved until ",[783,808,809],{},"Save","; ",[783,812,813],{},"Cancel"," leaves the widget as it was.",[780,816,817,818,790,821,802,824,826],{},"On a phone, three tabs replace the two sides: ",[783,819,820],{},"Query",[783,822,823],{},"Preview",[783,825,172],{},".",[828,829],"screenshot",{"caption":830,"id":831},"The widget drawer for Open orders by status: the donut preview, its query and the inspector.","dashboard-widget-drawer",[833,834,836],"h2",{"id":835},"the-query","The query",[780,838,839,840,844],{},"Write a ",[841,842,843],"code",{},"SELECT"," in the editor. Opening a widget that has a query runs it at once. The toolbar:",[846,847,848,859],"table",{},[849,850,851],"thead",{},[852,853,854,857],"tr",{},[855,856],"th",{},[855,858],{},[860,861,862,881,897,907,920,930],"tbody",{},[852,863,864,870],{},[865,866,867],"td",{},[783,868,869],{},"Run",[865,871,872,873,876,877,880],{},"runs the query as typed, with the variables bar's current values. ",[841,874,875],{},"Ctrl","+",[841,878,879],{},"Enter"," does the same. The preview redraws from the result",[852,882,883,886],{},[865,884,885],{},"row count",[865,887,888,892,893,896],{},[889,890,891],"em",{},"24 rows · 85 ms",", marked ",[889,894,895],{},"(cut off at dashboards.query_max_rows)"," when the result reached the row cap",[852,898,899,904],{},[865,900,901],{},[783,902,903],{},"Wrap",[865,905,906],{},"wraps long lines. On by default on a touch device or a narrow screen",[852,908,909,914],{},[865,910,911],{},[783,912,913],{},"Example",[865,915,916,917],{},"what this type expects and a query that runs anywhere, with ",[783,918,919],{},"Use this query",[852,921,922,927],{},[865,923,924],{},[783,925,926],{},"Optional filter",[865,928,929],{},"writes the standard filter for a variable at the cursor (below). Only when the dashboard has variables",[852,931,932,937],{},[865,933,934],{},[783,935,936],{},"Results",[865,938,939],{},"shows the raw rows in a grid, to check columns and values",[941,942,926],"h3",{"id":943},"optional-filter",[780,945,946,947,950,951,954,955,958,959,962],{},"Pick a ",[783,948,949],{},"Variable"," and a ",[783,952,953],{},"Column"," (or an expression such as ",[841,956,957],{},"wo.reported_at","), and ",[783,960,961],{},"Insert"," writes the condition for its type:",[846,964,965,974],{},[849,966,967],{},[852,968,969,971],{},[855,970,949],{},[855,972,973],{},"Inserted",[860,975,976,986,1000,1010],{},[852,977,978,981],{},[865,979,980],{},"Date range",[865,982,983],{},[841,984,985],{},"($VAR.period.from IS NULL OR wo.reported_at >= $VAR.period.from) AND ($VAR.period.to IS NULL OR wo.reported_at \u003C $VAR.period.to)",[852,987,988,991],{},[865,989,990],{},"Select",[865,992,993,996,997],{},[841,994,995],{},"($VAR.status IS NULL OR wo.status = $VAR.status)","; with several values, ",[841,998,999],{},"= ANY($VAR.status)",[852,1001,1002,1005],{},[865,1003,1004],{},"Text",[865,1006,1007],{},[841,1008,1009],{},"($VAR.search IS NULL OR c.name ILIKE '%' || $VAR.search || '%')",[852,1011,1012,1015],{},[865,1013,1014],{},"Number",[865,1016,1017],{},[841,1018,1019],{},"($VAR.year IS NULL OR extract(year FROM i.issued_on) = $VAR.year)",[780,1021,1022],{},"While the variable has no value, the condition lets every row through. It's plain SQL: TotalBase never rewrites it.",[1024,1025,1026],"tip",{},[780,1027,1028,1029,1032,1033,1036,1037,826],{},"A Select variable is ",[841,1030,1031],{},"text",". To compare it with a ",[841,1034,1035],{},"uuid"," column, cast it: ",[841,1038,1039],{},"($VAR.branch IS NULL OR wo.branch = $VAR.branch::uuid)",[833,1041,1043],{"id":1042},"how-a-query-runs","How a query runs",[780,1045,1046],{},"The guarantees come from PostgreSQL, not from inspecting the SQL:",[1048,1049,1050,1078,1084,1098,1104,1110],"ul",{},[1051,1052,1053,1056,1057,1060,1061,790,1064,790,1067,1070,1071,1074,1075,826],"li",{},[783,1054,1055],{},"Read-only."," Each run is its own ",[841,1058,1059],{},"READ ONLY"," transaction. An ",[841,1062,1063],{},"INSERT",[841,1065,1066],{},"UPDATE",[841,1068,1069],{},"DELETE",", a data-modifying ",[841,1072,1073],{},"WITH"," or a write inside a called function fails with SQLSTATE ",[841,1076,1077],{},"25006",[1051,1079,1080,1083],{},[783,1081,1082],{},"Always rolled back."," The transaction never commits, so even a changed session setting doesn't outlive it.",[1051,1085,1086,1089,1090,1093,1094,1097],{},[783,1087,1088],{},"One statement."," Stacked statements (",[841,1091,1092],{},"SELECT 1; DELETE ...",") are refused before anything runs. A trailing ",[841,1095,1096],{},";"," is fine.",[1051,1099,1100,1103],{},[783,1101,1102],{},"A time limit."," PostgreSQL cancels a query that runs longer than the instance's timeout (10 seconds by default).",[1051,1105,1106,1109],{},[783,1107,1108],{},"A row cap."," At most the instance's row cap (1000 rows by default); the rest are cut, never paged, and the card says so.",[1051,1111,1112,1115,1116,790,1119,1122],{},[783,1113,1114],{},"The viewer's time zone."," ",[841,1117,1118],{},"now()",[841,1120,1121],{},"date_trunc"," and the date range presets cut days and months where the viewer lives.",[780,1124,1125,1126,826],{},"The timeout and the row cap are instance settings: see ",[1127,1128,1130],"a",{"href":1129},"\u002Fsettings\u002Ffeatures#dashboards","Settings › Dashboards",[941,1132,1134],{"id":1133},"variables-are-bound","Variables are bound",[780,1136,1137,802,1140,1143,1144,1146,1147,1150,1151,1154,1155,802,1158,1161,1162,1165],{},[841,1138,1139],{},"$VAR.\u003Cname>",[841,1141,1142],{},"$USER.\u003Ccolumn>"," become typed parameters: a text a viewer types is compared as a value, never run as SQL. ",[841,1145,1142],{}," takes the column's real type and is read from the viewer's current row on every run; in the editor it's you. ",[841,1148,1149],{},"$USER.password_hash"," is refused, as is a variable the dashboard doesn't define or a hand-written ",[841,1152,1153],{},"$1",". ",[841,1156,1157],{},"$INTERVAL",[841,1159,1160],{},"$PERIOD"," don't exist here: use PostgreSQL's ",[841,1163,1164],{},"now() - interval '7 days'"," and a Date range variable.",[833,1167,801],{"id":1168},"properties",[941,1170,1172],{"id":1171},"type","Type",[780,1174,1175,1176,1179],{},"The widget's type, by group. Once the query has run, a type that doesn't fit what it returns is greyed, with why: ",[889,1177,1178],{},"Bar chart needs at least one column of a number for Values",". Switching keeps the query, the settings both types share and the equivalent columns (a chart's Category becomes a pie's Category, its Values the Value).",[941,1181,1183],{"id":1182},"title","Title",[780,1185,1186,1187,1190,1191,1194,1195,1198],{},"The card's title. Empty, a data widget shows its type's name. The link button (",[783,1188,1189],{},"Bind",") beside it turns the title into a ",[1127,1192,1193],{"href":267},"formula"," over the variables, the viewer and the query's first row: ",[841,1196,1197],{},"\"Orders of \" + {{vars.branch.label}}",". When the formula gives a text, it wins over the literal title.",[941,1200,193],{"id":1201},"data",[780,1203,1204,1205,1208,1209,802,1212,1214,1215,1218,1219,826],{},"A field per ",[783,1206,1207],{},"role",": what each result column does in the widget, such as a chart's ",[889,1210,1211],{},"Category",[889,1213,429],{},". Each field offers only the columns of a kind it takes, each shown with its type and the table column it comes from. Unset, it says what it takes on its own: ",[889,1216,1217],{},"Automatic: total - the first matching column",". Roles never pick a column by its name, and never a column starting with ",[841,1220,1221],{},"_",[780,1223,1224,1227,1228,1231],{},[783,1225,1226],{},"Back to automatic"," (⊘) clears a choice. A role with several columns lists them in order: drag to reorder, ",[783,1229,1230],{},"Add a column…"," to add one. A column the query no longer returns is marked in error.",[941,1233,1235],{"id":1234},"the-types-own-settings","The type's own settings",[780,1237,1238,1239,790,1242,790,1245,790,1248,790,1251,790,1254,790,1257,1260],{},"Then the type's settings, in sections, only those the type has: ",[783,1240,1241],{},"Number format",[783,1243,1244],{},"Appearance",[783,1246,1247],{},"Series",[783,1249,1250],{},"Axes",[783,1252,1253],{},"Thresholds",[783,1255,1256],{},"Events",[783,1258,1259],{},"Zoom & export",". A setting shows its default while unset; ⊘ returns it to the default. Each group's page lists them.",[780,1262,1263,1265,1266,1269,1270,1273,1274,790,1277,790,1280,1283,1284,1287,1288,1154,1291,1294],{},[783,1264,1241],{}," shows the value column's own format greyed when it has one (",[889,1267,1268],{},"Inherited from the column (total)…","), with ",[783,1271,1272],{},"Edit in the table"," to change it for every screen. A format is a pattern: ",[841,1275,1276],{},"$ #,##0",[841,1278,1279],{},"#,##0.00",[841,1281,1282],{},"0.0 %"," (the ",[841,1285,1286],{},"%"," doesn't multiply: 85 reads 85.0 %), ",[841,1289,1290],{},"CURRENCY:ARS",[783,1292,1293],{},"Compact number"," abbreviates large numbers (11.6M) and is on unless a format applies.",[941,1296,1256],{"id":1297},"events",[780,1299,1300,1303],{},[783,1301,1302],{},"On click"," sets what a click on a mark, a row or the card does:",[846,1305,1306,1316],{},[849,1307,1308],{},[852,1309,1310,1313],{},[855,1311,1312],{},"Action",[855,1314,1315],{},"Does",[860,1317,1318,1332,1346,1356,1366],{},[852,1319,1320,1325],{},[865,1321,1322],{},[783,1323,1324],{},"Filter this dashboard",[865,1326,1327,1328,1331],{},"sets one of its Select, Text or Number variables. In the App, ",[783,1329,1330],{},"Back"," takes it off",[852,1333,1334,1339],{},[865,1335,1336],{},[783,1337,1338],{},"Open a DataView",[865,1340,1341,1342,1345],{},"opens it filtered, with a filter in the Data API's ",[841,1343,1344],{},"where"," grammar",[852,1347,1348,1353],{},[865,1349,1350],{},[783,1351,1352],{},"Open a dashboard",[865,1354,1355],{},"opens another dashboard with its variables set, on a tab",[852,1357,1358,1363],{},[865,1359,1360],{},[783,1361,1362],{},"Open a record",[865,1364,1365],{},"opens a DataView's record form by its key",[852,1367,1368,1373],{},[865,1369,1370],{},[783,1371,1372],{},"Open a URL",[865,1374,1375,1376,1379],{},"opens an https address, in a new tab if you choose. ",[783,1377,1378],{},"Also in embeds"," lets it run in a public link or signed embed",[780,1381,1382,1383,1386,1387,1389,1390,1154,1393,1396,1397,1399,1400,826],{},"Values are formulas over the clicked row, ",[841,1384,1385],{},"{{row.\u003Ccolumn>}}"," (its ",[841,1388,1221],{}," columns included), and the variables, ",[841,1391,1392],{},"{{vars.\u003Cname>}}",[783,1394,1395],{},"Tooltip line"," is the hint viewers see on hover. Only Filter and a URL marked ",[889,1398,1378],{}," run in an ",[1127,1401,1402],{"href":347},"embed",[941,1404,1406],{"id":1405},"card","Card",[846,1408,1409,1418],{},[849,1410,1411],{},[852,1412,1413,1416],{},[855,1414,1415],{},"Setting",[855,1417],{},[860,1419,1420,1428,1443],{},[852,1421,1422,1425],{},[865,1423,1424],{},"Description",[865,1426,1427],{},"shown behind an ⓘ next to the title: what the widget measures",[852,1429,1430,1433],{},[865,1431,1432],{},"Text with no data",[865,1434,1435,1436,1439,1440],{},"what it says with no rows. Default: ",[889,1437,1438],{},"No data for this period"," when the query reads a date range, else ",[889,1441,1442],{},"No data",[852,1444,1445,1448],{},[865,1446,1447],{},"On a phone",[865,1449,1450,1453,1454,790,1457,790,1460],{},[783,1451,1452],{},"Automatic"," (half for a widget a quarter of the desktop wide or less, else the whole width), ",[783,1455,1456],{},"Whole width",[783,1458,1459],{},"Half",[783,1461,1462],{},"Hidden",[780,1464,1465,1466,1468,1469,1472],{},"The inspector's ",[783,1467,789],{}," has ",[783,1470,1471],{},"Restore defaults",": it clears the type's settings and keeps the card settings, the styles and the title's formula.",[833,1474,805],{"id":1475},"styles",[780,1477,1478],{},"The common style block of every widget: margin, padding, border, radius, background, shadow and alignment, applied to the widget's body.",[833,1480,1482],{"id":1481},"next-steps","Next steps",[1048,1484,1485,1490,1495],{},[1051,1486,1487,1489],{},[1127,1488,298],{"href":299},": the first group of widgets.",[1051,1491,1492,1494],{},[1127,1493,329],{"href":330},": colors and helpers from the query.",[1051,1496,1497,1499],{},[1127,1498,224],{"href":291},": every widget's data roles and properties.",{"title":1501,"searchDepth":1502,"depth":1503,"links":1504},"",1,2,[1505,1509,1512,1520,1521],{"id":835,"depth":1503,"text":836,"children":1506},[1507],{"id":943,"depth":1508,"text":926},3,{"id":1042,"depth":1503,"text":1043,"children":1510},[1511],{"id":1133,"depth":1508,"text":1134},{"id":1168,"depth":1503,"text":801,"children":1513},[1514,1515,1516,1517,1518,1519],{"id":1171,"depth":1508,"text":1172},{"id":1182,"depth":1508,"text":1183},{"id":1201,"depth":1508,"text":193},{"id":1234,"depth":1508,"text":1235},{"id":1297,"depth":1508,"text":1256},{"id":1405,"depth":1508,"text":1406},{"id":1475,"depth":1503,"text":805},{"id":1481,"depth":1503,"text":1482},"The widget drawer: its query, the preview, Properties and Styles.","md",null,{},true,{"title":294,"description":1522},"_9MT3GDbP1KSUPxbxwWxIY3eZw3njBggpCywlCE0KdI",[1530,1532],{"title":224,"path":291,"stem":292,"description":1531,"children":-1},"The widgets a dashboard is built from, by group, and every one of them.",{"title":298,"path":299,"stem":300,"description":1533,"children":-1},"KPI, Gauge and Progress.",1792339963604]