diff --git a/.all-contributorsrc b/.all-contributorsrc index 2976cae69d..53705907c2 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -152,6 +152,35 @@ "contributions": [ "code" ] + }, + { + "login": "seoulaja", + "name": "seoulaja", + "avatar_url": "https://avatars.githubusercontent.com/u/15101654?v=4", + "profile": "https://github.com/seoulaja", + "contributions": [ + "translation" + ] + }, + "login": "mslourens", + "name": "Maurits Lourens", + "avatar_url": "https://avatars.githubusercontent.com/u/1907152?v=4", + "profile": "https://github.com/mslourens", + "contributions": [ + "test", + "code" + ] + }, + { + "login": "Rory-Powell", + "name": "Rory Powell", + "avatar_url": "https://avatars.githubusercontent.com/u/8755148?v=4", + "profile": "https://github.com/Rory-Powell", + "contributions": [ + "infra", + "test", + "code" + ] } ], "contributorsPerLine": 7, diff --git a/README.md b/README.md index 866320ca27..c57b319ec5 100644 --- a/README.md +++ b/README.md @@ -221,6 +221,11 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
victoriasloan

πŸ’»
yashank09

πŸ’»
SOVLOOKUP

πŸ’» +
seoulaja

🌍 +
Maurits Lourens

⚠️ πŸ’» + + +
Rory Powell

πŸš‡ ⚠️ πŸ’» diff --git a/i18n/README.id.md b/i18n/README.id.md new file mode 100644 index 0000000000..d4a25f569c --- /dev/null +++ b/i18n/README.id.md @@ -0,0 +1,230 @@ +

+ + Budibase + +

+

+ Budibase +

+ +

+ Membangun, mengotomatisasi dan hosting sendiri aplikasi internal dalam hitungan menit +

+

+ Budibase adalah sebuah platform low-code dengan sumber terbuka, bertujuan untuk membantu para developer dan professional IT, untuk membangun, mengotomatisasi, dan mengirimkan aplikasi internal di infrastruktur sendiri dalam waktu hitungan menit. +

+ +

+ πŸ€– 🎨 πŸš€ +

+ +

+ Budibase design ui +

+ +

+ + GitHub all releases + + + GitHub release (latest by date) + + + Follow @budibase + + Code of conduct + + + +

+ +

+ Memulai + Β· + Dokumentasi + Β· + Permintaan Fitur + Β· + Laporkan bug + Β· + Bantuan: Diskusi +

+ +

+## ✨ Fitur-fitur + +- **Membangun dan mengirimkan perangkat lunak sebenarnya .** Tidak seperti platform lain, dengan Budibase Anda membuat dan mengirimkan aplikasi-aplikasi satu halaman. Aplikasi-aplikasi Budibase memiliki kinerja yang matang dan dapat dirancang secara responsif, memberikan pengalaman yang menyenangkan bagi pengguna. + +- **Sumber terbuka dan dapat dikembangkan.** Budibase adalah platform dengan sumber terbuka - dilisensikan sebagai GPL v3. Ini akan membuat Anda yakin bahwa Budibase akan selalu ada. Anda juga dapat berkontribusi terhadap kode Budibase atau melakukan fork dan membuat perubahan sesuka Anda, memberikan pengalaman yang ramah developer. + +- **Memuat data atau mulai dari awal.** Budibase menarik data dari berbagai sumber, termasuk MongoDB, CouchDB, PostgreSQL, mySQL, Airtable, S3, DyanmoDB, atau REST API. Dan tidak seperti platform lain, dengan Budibase Anda dapat memulai dari awal dan membuat aplikasi bisnis tanpa sumber data sekalipun. [Permintaan untuk sumber data baru](https://github.com/Budibase/budibase/discussions?discussions_q=category%3AIdeas). + +- **Rancang dan bangun aplikasi dengan komponen siap pakai yang kuat.** Budibase tersedia dengan siap pakai dan dirancang dengan indah, komponen-komponen kuat yang dapat anda gunakan layaknya blok penyusun untuk merancang antar muka Anda. Kami juga menyediakan banyak sekali pilihan-pilihan CSS favorit yang dapat digunakan sesuai dengan kreatifitas yang Anda inginkan. [Permintaan komponen baru [Permintaan untuk komponen baru](https://github.com/Budibase/budibase/discussions?discussions_q=category%3AIdeas). + +- **Otomatiskan proses, integrasikan dengan aplikasi lain, dan sambungkan ke webhook.** Menghemat waktu dengan mengotomatisasikan proses dan alur kerja yang masih dikerjakan secara manual. Dari menghubungkan ke webhooks, hingga mengotomatiasi surel, cukup beritahu Budibase apa yang harus dilakukan dan biarkan dia berkerja untuk Anda. Anda bisa dengan mudah [membuat otomatisasi baru untuk Budibase disini ](https://github.com/Budibase/automations) atau [minta otomatisasi baru](https://github.com/Budibase/budibase/discussions?discussions_q=category%3AIdeas). + +- **Surga bagi Admin.** Budibase dibuat untuk berkembang. Dengan Budibase, Anda dapat menghosting sendiri di infrastruktrur Anda punya dan secara global mengelola para pengguna, orientasi, SMTP, aplikasi-aplikasi, grup-grup, tema, dan masih masih banyak lagi. Anda juga dapat menyediakan para pengguna/grup dengan sebuah aplikasi portal dan menyebarkan pengelolaan pengguna kepada manaajer grup. + +
+ +--- + +
+ +## 🏁 Memulai +Saat ini ada 2 cara untuk memulai Budibase, yaitu: Digital Ocean dan Docker. +

+ +### Memulai Dengan Digital Ocean +Cara paling mudah dan cepat untuk memulai adalah dengan menggunakan Digital Ocean: +1-klik Digital Ocean deploy + + + digital ocean badge + +

+ +### Memulai dengan Docker +Untuk memulai, Anda harus memiliki docker dan docker compose terinstall di mesin anda. +Setelah Anda docker terinstall, prosesnya akan memakan waktu 5 menit, dengan empat langkah ini: + +1. Install CLI Budibase. + +``` +$ npm i -g @budibase/cli +``` + + +2. Mempersiapkan Budibase (pilih tempat menyimpan Budibase dan port untuk menjalankannya) + +``` +budi hosting --init +``` + + +3. Jalankan Budibase + +``` +budi hosting --start +``` + + +4. Buat pengguna admin Anda + +Masukkan surel dan sandi untuk admin baru. + +Selesai! Anda sekarang siap untuk membangun aplikasi internal yang mumpuni dalam hitungan menit. Untuk informasi tambahan tentang cara memulai dan mempelajari Budibase, kunjungi [dokumentasi](https://docs.budibase.com/getting-started) kami. + +
+ +--- + +
+ +## πŸŽ“ Belajar Budibase + +Dokumentasi Budibase [dapat dilihat disini](https://docs.budibase.com). +
+ +--- + +

+ +## πŸ’¬ Komunitas + +Jika Anda memiliki pertanyaan atau ingin berbicara dengan pengguna Budibase lainnya dan bergabung dengan komunitas kami, silakan kunjungi [Diskusi Github](https://github.com/Budibase/budibase/discussions) + + + +

+ +--- + +
+ +## ❗ Kode etik + +Budibase berdedikasi untuk memberikan pengalaman yang ramah, beragam, dan bebas pelecehan bagi semua orang. Kami mengharapkan semua orang di komunitas Budibase untuk mematuhi [**Kode etik**](https://github.com/Budibase/budibase/blob/HEAD/.github/CODE_OF_CONDUCT.md). Mohon dibaca. +
+ +--- + +
+ +## πŸ™Œ Berkontribusi untuk Budibase + +Dari membuka laporan bug hingga membuat pull request: setiap kontribusi dihargai dan disambut. Jika Anda berencana untuk menerapkan fitur baru atau mengubah API, harap buat issue terlebih dahulu. Dengan cara ini kami dapat memastikan pekerjaan Anda tidak sia-sia. + +### Tidak yakin memulai dari mana? +Sebuat tempat yang baik untuk mulai berkontribusi, adalah [masalah pertama di proyek](https://github.com/Budibase/budibase/projects/22). + +### Bagaimana repositori diatur +Budibase adalah monorepo yang dikelola oleh lerna. Lerna mengelola pembangunan dan penerbitan paket Budibase. Pada level tinggi, inilah paket-paket yang membentuk Budibase. + +- [packages/builder](https://github.com/Budibase/budibase/tree/HEAD/packages/builder) - berisi kode untuk aplikasi svelte sisi klien pembangun Budibase. + +- [packages/client](https://github.com/Budibase/budibase/tree/HEAD/packages/client) - Modul yang berjalan di browser yang bertanggung jawab untuk membaca definisi JSON dan membuat aplikasi web yang hidup dan bernafas darinya. + +- [packages/server](https://github.com/Budibase/budibase/tree/HEAD/packages/server) - Server Budibase. Aplikasi Koa ini bertanggung jawab untuk melayani JS untuk aplikasi builder dan budibase, serta menyediakan API untuk interaksi dengan database dan sistem file. + +Untuk informasi lebih lanjut, lihat [CONTRIBUTING.md](https://github.com/Budibase/budibase/blob/HEAD/.github/CONTRIBUTING.md) +

+ +--- + +

+ +## πŸ“ Lisensi + +Budibase adalah sumber terbuka, dilisensikan sebagai [GPL v3](https://www.gnu.org/licenses/gpl-3.0.en.html). Pustaka klien dan komponen dilisensikan sebagai [MPL](https://directory.fsf.org/wiki/License:MPL-2.0) - sehingga aplikasi yang Anda buat dapat dilisensikan sesuka Anda. +

+ +--- + + +
+ +## ⭐ Stargazers over time + +[![Stargazers over time](https://starchart.cc/Budibase/budibase.svg)](https://starchart.cc/Budibase/budibase) + +Jika Anda mengalami masalah di antara pembaruan, silakan gunakan panduan [disini](https://github.com/Budibase/budibase/blob/HEAD/.github/CONTRIBUTING.md#troubleshooting) untuk membersihkan environment Anda. + +
+ +--- + +

+ +## Kontributor ✨ + +Terima kasih untuk orang-orang hebat ini ([emoji key](https://allcontributors.org/docs/en/emoji-key)): + + + + + + + + + + + + + + + + + + + + + +

Martin McKeaveney

πŸ’» πŸ“– ⚠️ πŸš‡

Michael Drury

πŸ“– πŸ’» ⚠️ πŸš‡

Andrew Kingston

πŸ“– πŸ’» ⚠️ 🎨

Michael Shanks

πŸ“– πŸ’» ⚠️

Kevin Γ…berg Kultalahti

πŸ“– πŸ’» ⚠️

Joe

πŸ“– πŸ’» πŸ–‹ 🎨

Conor_Mack

πŸ’» ⚠️

pngwn

πŸ’» ⚠️

HugoLd

πŸ’»

victoriasloan

πŸ’»

yashank09

πŸ’»

SOVLOOKUP

πŸ’»
+ + + + + + +Proyek ini mengikuti spesifikasi [all-contributors](https://github.com/all-contributors/all-contributors). Kontribusi dalam bentuk apa pun dipersilakan! diff --git a/lerna.json b/lerna.json index 702efb014d..5544fba007 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "0.9.80-alpha.9", + "version": "0.9.87-alpha.7", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index 2bcf581c41..e81927bea5 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "0.9.80-alpha.9", + "version": "0.9.87-alpha.7", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/auth/src/middleware/passport/third-party-common.js b/packages/auth/src/middleware/passport/third-party-common.js index 7490cc4031..7c03944232 100644 --- a/packages/auth/src/middleware/passport/third-party-common.js +++ b/packages/auth/src/middleware/passport/third-party-common.js @@ -6,6 +6,7 @@ const { newid } = require("../../hashing") const { createASession } = require("../../security/sessions") const { getGlobalUserByEmail } = require("../../utils") const { getGlobalDB, getTenantId } = require("../../tenancy") +const fetch = require("node-fetch") /** * Common authentication logic for third parties. e.g. OAuth, OIDC. @@ -67,7 +68,7 @@ exports.authenticateThirdParty = async function ( } } - dbUser = syncUser(dbUser, thirdPartyUser) + dbUser = await syncUser(dbUser, thirdPartyUser) // create or sync the user const response = await db.post(dbUser) @@ -89,10 +90,26 @@ exports.authenticateThirdParty = async function ( return done(null, dbUser) } +async function syncProfilePicture(user, thirdPartyUser) { + const pictureUrl = thirdPartyUser.profile._json.picture + if (pictureUrl) { + const response = await fetch(pictureUrl) + + if (response.status === 200) { + const type = response.headers.get("content-type") + if (type.startsWith("image/")) { + user.pictureUrl = pictureUrl + } + } + } + + return user +} + /** * @returns a user that has been sync'd with third party information */ -function syncUser(user, thirdPartyUser) { +async function syncUser(user, thirdPartyUser) { // provider user.provider = thirdPartyUser.provider user.providerType = thirdPartyUser.providerType @@ -115,6 +132,8 @@ function syncUser(user, thirdPartyUser) { } } + user = await syncProfilePicture(user, thirdPartyUser) + // profile user.thirdPartyProfile = { ...profile._json, diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 9be242d877..ba0d1950aa 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "0.9.80-alpha.9", + "version": "0.9.87-alpha.7", "license": "AGPL-3.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/bbui/src/Form/Core/Switch.svelte b/packages/bbui/src/Form/Core/Switch.svelte index 0d40e67007..667b2ab871 100644 --- a/packages/bbui/src/Form/Core/Switch.svelte +++ b/packages/bbui/src/Form/Core/Switch.svelte @@ -6,6 +6,7 @@ export let id = null export let text = null export let disabled = false + export let dataCy = null const dispatch = createEventDispatcher() const onChange = event => { @@ -15,6 +16,7 @@
{ @@ -18,5 +19,5 @@ - + diff --git a/packages/builder/cypress/integration/createAutomation.spec.js b/packages/builder/cypress/integration/createAutomation.spec.js index 75611eff06..e82eeff670 100644 --- a/packages/builder/cypress/integration/createAutomation.spec.js +++ b/packages/builder/cypress/integration/createAutomation.spec.js @@ -29,10 +29,10 @@ context("Create a automation", () => { cy.get(".setup").within(() => { cy.get(".spectrum-Picker-label").click() cy.contains("dog").click() - cy.get("input") + cy.get(".spectrum-Textfield-input") .first() .type("goodboy") - cy.get("input") + cy.get(".spectrum-Textfield-input") .eq(1) .type("11") }) @@ -41,7 +41,7 @@ context("Create a automation", () => { cy.contains("Save Automation").click() // Activate Automation - cy.get("[aria-label=PlayCircle]").click() + cy.get("[data-cy=activate-automation]").click() }) it("should add row when a new row is added", () => { diff --git a/packages/builder/package.json b/packages/builder/package.json index b223f3a82a..b5d93beb9d 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "0.9.80-alpha.9", + "version": "0.9.87-alpha.7", "license": "AGPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^0.9.80-alpha.9", - "@budibase/client": "^0.9.80-alpha.9", + "@budibase/bbui": "^0.9.87-alpha.7", + "@budibase/client": "^0.9.87-alpha.7", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^0.9.80-alpha.9", + "@budibase/string-templates": "^0.9.87-alpha.7", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/builder/src/components/automation/SetupPanel/SetupPanel.svelte b/packages/builder/src/components/automation/SetupPanel/SetupPanel.svelte index ff3874a919..3ba59f36a6 100644 --- a/packages/builder/src/components/automation/SetupPanel/SetupPanel.svelte +++ b/packages/builder/src/components/automation/SetupPanel/SetupPanel.svelte @@ -1,7 +1,7 @@ + +
+ + populateExtraQuery(extraQueryFields)} + bind:value={extraQueryFields[key]} + /> + {/if} + + {#if type === "list"} + queryConfig[verb]?.displayName || capitalise(verb)} />
+ {#if integrationInfo?.extra && query.queryVerb} + + {/if} {/if}
diff --git a/packages/builder/src/components/start/AppCard.svelte b/packages/builder/src/components/start/AppCard.svelte index e41ffc4469..3e19bfa022 100644 --- a/packages/builder/src/components/start/AppCard.svelte +++ b/packages/builder/src/components/start/AppCard.svelte @@ -15,6 +15,7 @@ export let exportApp export let viewApp export let editApp + export let updateApp export let deleteApp export let unpublishApp export let releaseLock @@ -53,6 +54,9 @@ {/if} {#if !app.deployed} + updateApp(app)} icon="Edit"> + Update + deleteApp(app)} icon="Delete"> Delete diff --git a/packages/builder/src/components/start/AppRow.svelte b/packages/builder/src/components/start/AppRow.svelte index 85bad84376..f8ecbf3320 100644 --- a/packages/builder/src/components/start/AppRow.svelte +++ b/packages/builder/src/components/start/AppRow.svelte @@ -14,6 +14,7 @@ export let exportApp export let viewApp export let editApp + export let updateApp export let deleteApp export let unpublishApp export let releaseLock @@ -82,6 +83,7 @@ {/if} {#if !app.deployed} + updateApp(app)} icon="Edit">Update deleteApp(app)} icon="Delete">Delete {/if} diff --git a/packages/builder/src/components/start/UpdateAppModal.svelte b/packages/builder/src/components/start/UpdateAppModal.svelte new file mode 100644 index 0000000000..dbbc000d1f --- /dev/null +++ b/packages/builder/src/components/start/UpdateAppModal.svelte @@ -0,0 +1,111 @@ + + + + + + Give your new app a name, and choose which groups have access (paid plans + only). + + ($touched.name = true)} + on:change={() => (dirty = true)} + label="Name" + /> + + diff --git a/packages/builder/src/pages/builder/apps/index.svelte b/packages/builder/src/pages/builder/apps/index.svelte index 69b6e770f6..c1bdc31cd4 100644 --- a/packages/builder/src/pages/builder/apps/index.svelte +++ b/packages/builder/src/pages/builder/apps/index.svelte @@ -54,7 +54,11 @@
- +
userInfoModal.show()}> diff --git a/packages/builder/src/pages/builder/portal/_layout.svelte b/packages/builder/src/pages/builder/portal/_layout.svelte index 4bc0b46167..20bdc9cb54 100644 --- a/packages/builder/src/pages/builder/portal/_layout.svelte +++ b/packages/builder/src/pages/builder/portal/_layout.svelte @@ -100,7 +100,11 @@
- +
userInfoModal.show()}> diff --git a/packages/builder/src/pages/builder/portal/apps/index.svelte b/packages/builder/src/pages/builder/portal/apps/index.svelte index 6c229c1980..aafe9b60c3 100644 --- a/packages/builder/src/pages/builder/portal/apps/index.svelte +++ b/packages/builder/src/pages/builder/portal/apps/index.svelte @@ -14,6 +14,7 @@ Body, } from "@budibase/bbui" import CreateAppModal from "components/start/CreateAppModal.svelte" + import UpdateAppModal from "components/start/UpdateAppModal.svelte" import api, { del } from "builderStore/api" import analytics from "analytics" import { onMount } from "svelte" @@ -30,6 +31,7 @@ let template let selectedApp let creationModal + let updatingModal let deletionModal let unpublishModal let creatingApp = false @@ -164,6 +166,11 @@ selectedApp = null } + const updateApp = async app => { + selectedApp = app + updatingModal.show() + } + const releaseLock = async app => { try { const response = await del(`/api/dev/${app.devId}/lock`) @@ -236,6 +243,7 @@ {editApp} {exportApp} {deleteApp} + {updateApp} /> {/each}
@@ -289,6 +297,8 @@ Are you sure you want to unpublish the app {selectedApp?.name}? + +