update frappe - jingrow

This commit is contained in:
jingrow 2025-12-23 19:56:26 +08:00
parent 2033661f3d
commit 65265b0ace
1534 changed files with 12854 additions and 12854 deletions

View File

@ -200,7 +200,7 @@
"frappeclient",
"frappehr",
"Frappeio",
"frappeui",
"jingrowui",
"fremovexattr",
"fsetxattr",
"fstype",

View File

@ -6,21 +6,21 @@ cd ~ || exit
sudo apt update && sudo apt install redis-server libcups2-dev
pip install frappe-bench
bench init --skip-assets --python "$(which python)" ~/frappe-bench --frappe-path http://git.jingrow.com/balamurali27/frappe --frappe-branch fc-ci
pip install jingrow-bench
bench init --skip-assets --python "$(which python)" ~/jingrow-bench --jingrow-path http://git.jingrow.com/balamurali27/jingrow --jingrow-branch fc-ci
mysql --host 127.0.0.1 --port 3306 -u root -proot -e "SET GLOBAL character_set_server = 'utf8mb4'"
mysql --host 127.0.0.1 --port 3306 -u root -proot -e "SET GLOBAL collation_server = 'utf8mb4_unicode_ci'"
install_whktml() {
wget -O /tmp/wkhtmltox.tar.xz http://git.jingrow.com/frappe/wkhtmltopdf/raw/master/wkhtmltox-0.12.3_linux-generic-amd64.tar.xz
wget -O /tmp/wkhtmltox.tar.xz http://git.jingrow.com/jingrow/wkhtmltopdf/raw/master/wkhtmltox-0.12.3_linux-generic-amd64.tar.xz
tar -xf /tmp/wkhtmltox.tar.xz -C /tmp
sudo mv /tmp/wkhtmltox/bin/wkhtmltopdf /usr/local/bin/wkhtmltopdf
sudo chmod o+x /usr/local/bin/wkhtmltopdf
}
install_whktml &
cd ~/frappe-bench || exit
cd ~/jingrow-bench || exit
sed -i 's/watch:/# watch:/g' Procfile
sed -i 's/schedule:/# schedule:/g' Procfile
@ -32,7 +32,7 @@ bench get-app press "${GITHUB_WORKSPACE}"
bench setup requirements --dev
bench start &> bench_start_logs.txt &
CI=Yes bench build --app frappe &
CI=Yes bench build --app jingrow &
bench new-site --db-root-password root --admin-password admin test_site
bench --site test_site install-app press
bench set-config -g server_script_enabled 1

View File

@ -10,9 +10,9 @@ on:
workflow_dispatch:
env:
DB_NAME: test_frappe
DB_USER: test_frappe
DB_PASSWORD: test_frappe
DB_NAME: test_jingrow
DB_USER: test_jingrow
DB_PASSWORD: test_jingrow
concurrency:
group: ${{ github.ref }}
@ -162,22 +162,22 @@ jobs:
uses: crazy-max/ghaction-github-runtime@v3
- name: Install Playwright browsers
working-directory: /home/runner/frappe-bench/apps/press/dashboard
working-directory: /home/runner/jingrow-bench/apps/press/dashboard
run: npx playwright install chromium
- name: Setup Test Users
working-directory: /home/runner/frappe-bench/apps/press/dashboard
working-directory: /home/runner/jingrow-bench/apps/press/dashboard
run: |
bench --site test_site execute press.press.doctype.team.test_team.create_test_press_admin_team \
--kwargs "{\"email\": \"${PRESS_ADMIN_USER_EMAIL}\", \"free_account\": True, \"skip_onboarding\": True}"
bench --site test_site set-password "$PRESS_ADMIN_USER_EMAIL" "$PRESS_ADMIN_USER_PASSWORD"
- name: Run Playwright Tests
working-directory: /home/runner/frappe-bench/apps/press/dashboard
working-directory: /home/runner/jingrow-bench/apps/press/dashboard
run: npx playwright test --project=chromium
- name: Generate Coverage Report
working-directory: /home/runner/frappe-bench/apps/press/dashboard
working-directory: /home/runner/jingrow-bench/apps/press/dashboard
run: npx nyc report --reporter=cobertura --reporter=text --report-dir=./coverage
- name: Upload Playwright Test report
@ -185,13 +185,13 @@ jobs:
uses: actions/upload-artifact@v4
with:
name: playwright-report
path: /home/runner/frappe-bench/apps/press/dashboard/playwright-report
path: /home/runner/jingrow-bench/apps/press/dashboard/playwright-report
- name: Upload coverage data
uses: codecov/codecov-action@v5
with:
disable_search: true
files: /home/runner/frappe-bench/apps/press/dashboard/coverage/cobertura-coverage.xml
files: /home/runner/jingrow-bench/apps/press/dashboard/coverage/cobertura-coverage.xml
fail_ci_if_error: false
verbose: true
token: ${{ secrets.CODECOV_TOKEN }}
@ -280,26 +280,26 @@ jobs:
install: true
- name: Run Tests
working-directory: /home/runner/frappe-bench
working-directory: /home/runner/jingrow-bench
run: |
bench --site test_site set-config allow_tests true
bench --site test_site run-parallel-tests --app press --with-coverage --total-builds 2 --build-number ${{ matrix.container }}
env:
TYPE: server
COVERAGE_RCFILE: /home/runner/frappe-bench/apps/press/.coveragerc
COVERAGE_RCFILE: /home/runner/jingrow-bench/apps/press/.coveragerc
- name: Upload coverage reports to Codecov
uses: actions/upload-artifact@v4
with:
name: coverage-${{ matrix.container }}
path: /home/runner/frappe-bench/sites/coverage.xml
path: /home/runner/jingrow-bench/sites/coverage.xml
if: always()
- name: Upload bench start logs
uses: actions/upload-artifact@v4
with:
name: bench-start-logs-${{ matrix.container }}
path: /home/runner/frappe-bench/bench_start_logs.txt
path: /home/runner/jingrow-bench/bench_start_logs.txt
if: always()
coverage:

2
.gitignore vendored
View File

@ -129,7 +129,7 @@ dmypy.json
# Pyre type checker
.pyre/
# Added by frappe
# Added by jingrow
.DS_Store
*.pyc
*.egg-info

View File

@ -3,7 +3,7 @@ pull_request_rules:
conditions:
- and:
- and:
- author!=frappe-pr-bot
- author!=jingrow-pr-bot
- author!=mergify[bot]
- author!=github-actions
- or:

View File

@ -5,7 +5,7 @@
**Full Service Cloud Hosting For The Frappe Stack - Powers Frappe Cloud**
[![codecov](https://codecov.io/gh/frappe/press/branch/master/graph/badge.svg?token=0puvH0jUx9)](https://codecov.io/gh/frappe/press)
[![codecov](https://codecov.io/gh/jingrow/press/branch/master/graph/badge.svg?token=0puvH0jUx9)](https://codecov.io/gh/jingrow/press)
[![unittests](http://git.jingrow.com/jingrow/jcloude/actions/workflows/main.yaml/badge.svg)](http://git.jingrow.com/jingrow/jcloude/actions/workflows/main.yaml)
</div>
@ -55,9 +55,9 @@ Additionally, customers lacked full control over their servers—no SSH access,
### Under the Hood
- [**Frappe Framework**](http://git.jingrow.com/frappe/frappe): A full-stack web application framework written in Python and Javascript. The framework provides a robust foundation for building web applications, including a database abstraction layer, user authentication, and a REST API.
- [**Frappe Framework**](http://git.jingrow.com/jingrow/jingrow): A full-stack web application framework written in Python and Javascript. The framework provides a robust foundation for building web applications, including a database abstraction layer, user authentication, and a REST API.
- [**Frappe UI**](http://git.jingrow.com/frappe/frappe-ui): A Vue-based UI library, to provide a modern user interface. The Frappe UI library provides a variety of components that can be used to build single-page applications on top of the Frappe Framework.
- [**Frappe UI**](http://git.jingrow.com/jingrow/jingrow-ui): A Vue-based UI library, to provide a modern user interface. The Frappe UI library provides a variety of components that can be used to build single-page applications on top of the Frappe Framework.
- [**Agent**](http://git.jingrow.com/jingrow/agent): A flask app designed to work along with Press. It provides a CLI interface for Press to communicate with the sites and benches.
@ -80,7 +80,7 @@ pre-commit install
## Learn and connect
- [Telegram Public Group](https://t.me/frappecloud)
- [Discuss Forum](https://discuss.framework.jingrow.com/c/frappe-cloud/77)
- [Discuss Forum](https://discuss.framework.jingrow.com/c/jingrow-cloud/77)
- [Documentation](https://docs.framework.jingrow.com/cloud)
<br/>

View File

@ -6,7 +6,7 @@ users:
- name: root
shell: /usr/bin/bash
- name: frappe
- name: jingrow
gecos: Frappe
groups: sudo
lock_passwd: false

View File

@ -2,7 +2,7 @@
# For license information, please see license.txt
from unittest.mock import MagicMock
from frappe.tests.utils import FrappeTestCase
from jingrow.tests.utils import FrappeTestCase
from backbone.hypervisor import Hypervisor

View File

@ -37,8 +37,8 @@ Vagrant.configure("2") do |config|
# Default Cluster
# Reverse Proxy Server
config.vm.define "n1.local.frappe.dev" do |n1|
n1.vm.hostname = "n1.local.frappe.dev"
config.vm.define "n1.local.jingrow.dev" do |n1|
n1.vm.hostname = "n1.local.jingrow.dev"
n1.vm.network "private_network", ip: "10.0.1.101", netmask: "255.255.0.0"
n1.vm.network "private_network", ip: "10.1.1.101", netmask: "255.255.0.0"
n1.vm.provider :libvirt do |libvirt|
@ -47,8 +47,8 @@ Vagrant.configure("2") do |config|
end
# Primary App Server
config.vm.define "f1.local.frappe.dev" do |f1|
f1.vm.hostname = "f1.local.frappe.dev"
config.vm.define "f1.local.jingrow.dev" do |f1|
f1.vm.hostname = "f1.local.jingrow.dev"
f1.vm.network "private_network", ip: "10.0.2.101", netmask: "255.255.0.0"
f1.vm.network "private_network", ip: "10.1.2.101", netmask: "255.255.0.0"
f1.vm.provider :libvirt do |libvirt|
@ -58,8 +58,8 @@ Vagrant.configure("2") do |config|
end
# Replica of f1
# config.vm.define "f2.local.frappe.dev" do |f2|
# f2.vm.hostname = "f2.local.frappe.dev"
# config.vm.define "f2.local.jingrow.dev" do |f2|
# f2.vm.hostname = "f2.local.jingrow.dev"
# f2.vm.network "private_network", ip: "10.0.2.102", netmask: "255.255.0.0"
# f2.vm.network "private_network", ip: "10.1.2.102", netmask: "255.255.0.0"
# f2.vm.provider :libvirt do |libvirt|
@ -69,8 +69,8 @@ Vagrant.configure("2") do |config|
# end
# Primary DB Server
config.vm.define "m1.local.frappe.dev" do |m1|
m1.vm.hostname = "m1.local.frappe.dev"
config.vm.define "m1.local.jingrow.dev" do |m1|
m1.vm.hostname = "m1.local.jingrow.dev"
m1.vm.network "private_network", ip: "10.0.3.101", netmask: "255.255.0.0"
m1.vm.network "private_network", ip: "10.1.3.101", netmask: "255.255.0.0"
m1.vm.provider :libvirt do |libvirt|
@ -80,8 +80,8 @@ Vagrant.configure("2") do |config|
end
# Replica of m1
# config.vm.define "m2.local.frappe.dev" do |m2|
# m2.vm.hostname = "m2.local.frappe.dev"
# config.vm.define "m2.local.jingrow.dev" do |m2|
# m2.vm.hostname = "m2.local.jingrow.dev"
# m2.vm.network "private_network", ip: "10.0.3.102", netmask: "255.255.0.0"
# m2.vm.network "private_network", ip: "10.1.3.102", netmask: "255.255.0.0"
# m2.vm.provider :libvirt do |libvirt|
@ -91,8 +91,8 @@ Vagrant.configure("2") do |config|
# end
# # Secondary Cluster
# config.vm.define "n2.frappe.dev" do |n2|
# n2.vm.hostname = "n2.frappe.dev"
# config.vm.define "n2.jingrow.dev" do |n2|
# n2.vm.hostname = "n2.jingrow.dev"
# n2.vm.network "private_network", ip: "10.0.1.102", netmask: "255.255.0.0"
# n2.vm.network "private_network", ip: "10.1.1.102", netmask: "255.255.0.0"
# end
@ -100,15 +100,15 @@ Vagrant.configure("2") do |config|
# Additional Hosts.
# Docker Registry
config.vm.define "registry.local.frappe.dev" do |registry|
registry.vm.hostname = "registry.local.frappe.dev"
config.vm.define "registry.local.jingrow.dev" do |registry|
registry.vm.hostname = "registry.local.jingrow.dev"
registry.vm.network "private_network", ip: "10.0.4.101", netmask: "255.255.0.0"
registry.vm.network "private_network", ip: "10.1.4.101", netmask: "255.255.0.0"
end
# Log Server = ElasticSearch + Logstash + Kibana
config.vm.define "log.local.frappe.dev" do |log|
log.vm.hostname = "log.local.frappe.dev"
config.vm.define "log.local.jingrow.dev" do |log|
log.vm.hostname = "log.local.jingrow.dev"
log.vm.network "private_network", ip: "10.0.4.102", netmask: "255.255.0.0"
log.vm.network "private_network", ip: "10.1.4.102", netmask: "255.255.0.0"
log.vm.provider :libvirt do |libvirt|
@ -118,8 +118,8 @@ Vagrant.configure("2") do |config|
end
# Uptime Server = Prometheus + Grafana
config.vm.define "monitor.local.frappe.dev" do |monitor|
monitor.vm.hostname = "monitor.local.frappe.dev"
config.vm.define "monitor.local.jingrow.dev" do |monitor|
monitor.vm.hostname = "monitor.local.jingrow.dev"
monitor.vm.network "private_network", ip: "10.0.4.103", netmask: "255.255.0.0"
monitor.vm.network "private_network", ip: "10.1.4.103", netmask: "255.255.0.0"
monitor.vm.provider :libvirt do |libvirt|
@ -128,8 +128,8 @@ Vagrant.configure("2") do |config|
end
# Analytics Server = Plausible
# config.vm.define "analytics.local.frappe.dev" do |analytics|
# analytics.vm.hostname = "analytics.local.frappe.dev"
# config.vm.define "analytics.local.jingrow.dev" do |analytics|
# analytics.vm.hostname = "analytics.local.jingrow.dev"
# analytics.vm.network "private_network", ip: "10.0.4.104", netmask: "255.255.0.0"
# analytics.vm.network "private_network", ip: "10.1.4.104", netmask: "255.255.0.0"
# analytics.vm.provider :libvirt do |libvirt|
@ -138,8 +138,8 @@ Vagrant.configure("2") do |config|
# end
# Trace Server = Sentry
config.vm.define "trace.local.frappe.dev" do |trace|
trace.vm.hostname = "trace.local.frappe.dev"
config.vm.define "trace.local.jingrow.dev" do |trace|
trace.vm.hostname = "trace.local.jingrow.dev"
trace.vm.network "private_network", ip: "10.0.4.105", netmask: "255.255.0.0"
trace.vm.network "private_network", ip: "10.1.4.105", netmask: "255.255.0.0"
trace.vm.provider :libvirt do |libvirt|
@ -148,16 +148,16 @@ Vagrant.configure("2") do |config|
end
end
# config.vm.define "sn1.local.frappe.dev" do |sn1|
# config.vm.define "sn1.local.jingrow.dev" do |sn1|
# sn1.vm.box = "scaleway"
# sn1.vm.hostname = "sn1.local.frappe.dev"
# sn1.vm.hostname = "sn1.local.jingrow.dev"
# sn1.vm.network "private_network", ip: "10.2.0.101", netmask: "255.255.0.0"
# sn1.vm.network "private_network", ip: "10.3.0.101", netmask: "255.255.0.0", auto_config: false
# end
# config.vm.define "sf1.local.frappe.dev" do |sf1|
# config.vm.define "sf1.local.jingrow.dev" do |sf1|
# sf1.vm.box = "scaleway"
# sf1.vm.hostname = "sf1.local.frappe.dev"
# sf1.vm.hostname = "sf1.local.jingrow.dev"
# sf1.vm.network "private_network", ip: "10.2.1.101", netmask: "255.255.0.0"
# sf1.vm.network "private_network", ip: "10.3.1.101", netmask: "255.255.0.0", auto_config: false
# sf1.vm.provider :libvirt do |libvirt|

View File

@ -30,8 +30,8 @@
"dayjs": "^1.10.7",
"echarts": "^5.4.3",
"feather-icons": "^4.26.0",
"frappe-charts": "2.0.0-rc22",
"frappe-ui": "0.1.168",
"jingrow-charts": "2.0.0-rc22",
"jingrow-ui": "0.1.168",
"fuse.js": "6.6.2",
"libarchive.js": "^1.3.0",
"lodash": "^4.17.19",

View File

@ -1,4 +1,4 @@
@import 'frappe-ui/src/style.css';
@import 'jingrow-ui/src/style.css';
@layer components {
/* Works on Firefox */

View File

@ -59,10 +59,10 @@
</template>
<script setup lang="ts">
import { createResource } from 'frappe-ui';
import { createResource } from 'jingrow-ui';
import { computed, reactive, ref } from 'vue';
import { toast } from 'vue-sonner';
import { Checkbox, Textarea } from 'frappe-ui';
import { Checkbox, Textarea } from 'jingrow-ui';
const props = defineProps<{
doctype: string;

View File

@ -58,7 +58,7 @@
</template>
<script setup lang="ts">
import { createResource } from 'frappe-ui';
import { createResource } from 'jingrow-ui';
import { ref } from 'vue';
import dayjs from '../utils/dayjs';

View File

@ -13,7 +13,7 @@
</template>
<script>
import { Button, Dropdown } from 'frappe-ui';
import { Button, Dropdown } from 'jingrow-ui';
import { icon } from '../utils/components';
export default {

View File

@ -39,7 +39,7 @@ import {
Dialog,
FormControl,
getCachedDocumentResource,
} from 'frappe-ui';
} from 'jingrow-ui';
export default {
name: 'AddTagDialog',

View File

@ -53,7 +53,7 @@
</Dialog>
</template>
<script>
import { Button, Dialog, FeatherIcon, ErrorMessage } from 'frappe-ui';
import { Button, Dialog, FeatherIcon, ErrorMessage } from 'jingrow-ui';
export default {
props: {

View File

@ -73,7 +73,7 @@
<script>
import { defineAsyncComponent } from 'vue';
import AppSidebarItem from './AppSidebarItem.vue';
import { Tooltip } from 'frappe-ui';
import { Tooltip } from 'jingrow-ui';
import NavigationItems from './NavigationItems.vue';
import AppSidebarItemGroup from './AppSidebarItemGroup.vue';
@ -99,7 +99,7 @@ export default {
},
feedback() {
window.open(
'https://jcloud.jingrow.com/frappe-cloud-feedback/new',
'https://jcloud.jingrow.com/jingrow-cloud-feedback/new',
'_blank',
);
},

View File

@ -120,7 +120,7 @@ import {
ComboboxOptions,
} from '@headlessui/vue';
import { ComputedRef, PropType, computed, ref, watch } from 'vue';
import { Popover } from 'frappe-ui';
import { Popover } from 'jingrow-ui';
type Option = {
label: string;

View File

@ -11,7 +11,7 @@
</template>
<script setup>
import { Avatar } from 'frappe-ui';
import { Avatar } from 'jingrow-ui';
const props = defineProps({
users: { type: Array, required: true },
});

View File

@ -66,7 +66,7 @@
</template>
<script>
import FileUploader from './FileUploader.vue';
import { createResource } from 'frappe-ui';
import { createResource } from 'jingrow-ui';
import { toast } from 'vue-sonner';
export default {

View File

@ -99,7 +99,7 @@ export default {
key: data.key_id,
order_id: data.order_id,
name: 'Frappe Cloud',
image: '/assets/press/images/frappe-cloud-logo.png',
image: '/assets/press/images/jingrow-cloud-logo.png',
prefill: {
email: this.$team.pg.user,
},

View File

@ -51,7 +51,7 @@
</template>
<script>
import { FormControl } from 'frappe-ui';
import { FormControl } from 'jingrow-ui';
import StarRatingInput from './StarRatingInput.vue';
import { DashboardError } from '../utils/error';

View File

@ -73,7 +73,7 @@
<script>
import { h } from 'vue';
import { Select, TextInput } from 'frappe-ui';
import { Select, TextInput } from 'jingrow-ui';
import GenericList from './GenericList.vue';
import AlertBanner from './AlertBanner.vue';

View File

@ -79,7 +79,7 @@ import {
ErrorMessage,
FormControl,
getCachedDocumentResource,
} from 'frappe-ui';
} from 'jingrow-ui';
export default {
name: 'ConfigEditorDialog',

View File

@ -39,7 +39,7 @@ import {
ErrorMessage,
FormControl,
getCachedDocumentResource,
} from 'frappe-ui';
} from 'jingrow-ui';
export default {
name: 'EnvironmentVariableEditorDialog',

View File

@ -21,6 +21,6 @@
<!-- idk what magic is it but if I remove the div datetime components cease to work -->
</template>
<script setup>
import { DatePicker, TabButtons, DateTimePicker } from 'frappe-ui';
import { DatePicker, TabButtons, DateTimePicker } from 'jingrow-ui';
import LinkControl from './LinkControl.vue';
</script>

View File

@ -47,7 +47,7 @@
</div>
</template>
<script lang="ts">
import { LoadingIndicator } from 'frappe-ui';
import { LoadingIndicator } from 'jingrow-ui';
import { defineComponent } from 'vue';
export default defineComponent({

View File

@ -12,7 +12,7 @@
</Dialog>
</template>
<script>
import { Dialog } from 'frappe-ui';
import { Dialog } from 'jingrow-ui';
import GenericDialogField from './GenericDialogField.vue';
export default {

View File

@ -11,7 +11,7 @@
/>
</template>
<script>
import { FormControl } from 'frappe-ui';
import { FormControl } from 'jingrow-ui';
import ListSelection from './ListSelection.vue';
export default {

View File

@ -54,7 +54,7 @@ import {
ListHeaderItem,
ListRow,
ListSelectBanner,
} from 'frappe-ui';
} from 'jingrow-ui';
import ObjectListCell from './ObjectListCell.vue';
export default {

View File

@ -19,7 +19,7 @@
/>
</template>
<script>
import { FormControl, debounce } from 'frappe-ui';
import { FormControl, debounce } from 'jingrow-ui';
export default {
name: 'LinkControl',

View File

@ -12,7 +12,7 @@
<div v-if="step === 'site-plans'">
<!-- doing this weird thing because progress with intervals doesn't rerender on moving to new step for some reason -->
<!-- TODO: fix it in frappe-ui -->
<!-- TODO: fix it in jingrow-ui -->
<Progress
v-if="showSetupSubscription"
class="my-8"
@ -150,7 +150,7 @@
</Dialog>
</template>
<script>
import { getCachedDocumentResource, Progress } from 'frappe-ui';
import { getCachedDocumentResource, Progress } from 'jingrow-ui';
import SitePlansCards from './SitePlansCards.vue';
import { getPlans, getPlan } from '../data/plans';
import CardForm from './billing/CardForm.vue';

View File

@ -181,7 +181,7 @@
</template>
<script>
import { TextEditor } from 'frappe-ui';
import { TextEditor } from 'jingrow-ui';
import FileUploader from '@/components/FileUploader.vue';
import { toast } from 'vue-sonner';
import { getToastErrorMessage } from '../utils/toast';

View File

@ -110,7 +110,7 @@
</template>
<script>
import { FormControl, Tabs, TabList, TabPanel } from 'frappe-ui';
import { FormControl, Tabs, TabList, TabPanel } from 'jingrow-ui';
import { DashboardError } from '../utils/error';
import GitHubAppSelector from './GitHubAppSelector.vue';
import AlertBanner from './AlertBanner.vue';

View File

@ -157,7 +157,7 @@ import {
TextInput,
Tooltip,
ErrorMessage,
} from 'frappe-ui';
} from 'jingrow-ui';
let subscribed = {};

View File

@ -66,7 +66,7 @@
</component>
</template>
<script>
import { Tooltip } from 'frappe-ui';
import { Tooltip } from 'jingrow-ui';
import ActionButton from './ActionButton.vue';
export default {

View File

@ -43,7 +43,7 @@
</component>
</template>
<script>
import { Tooltip, Dialog } from 'frappe-ui';
import { Tooltip, Dialog } from 'jingrow-ui';
import DialogWrapper from './DialogWrapper.vue';
import FilterControl from './FilterControl.vue';

View File

@ -21,7 +21,7 @@
</template>
<script setup>
import { getCachedDocumentResource } from 'frappe-ui';
import { getCachedDocumentResource } from 'jingrow-ui';
import { defineAsyncComponent, h } from 'vue';
import { toast } from 'vue-sonner';
import { confirmDialog, renderDialog } from '../utils/components';

View File

@ -24,7 +24,7 @@
</div>
</template>
<script>
import { getCachedDocumentResource } from 'frappe-ui';
import { getCachedDocumentResource } from 'jingrow-ui';
import SiteActionCell from './SiteActionCell.vue';
export default {

View File

@ -62,7 +62,7 @@
</template>
<script>
import { defineAsyncComponent } from 'vue';
import { getCachedDocumentResource } from 'frappe-ui';
import { getCachedDocumentResource } from 'jingrow-ui';
import ClickToCopyField from './ClickToCopyField.vue';
import ObjectList from './ObjectList.vue';
import { date } from '../utils/format';

View File

@ -68,7 +68,7 @@
</Dialog>
</template>
<script>
import { Button } from 'frappe-ui';
import { Button } from 'jingrow-ui';
import BackupFilesUploader from './BackupFilesUploader.vue';
import { toast } from 'vue-sonner';

View File

@ -318,7 +318,7 @@
</div>
</template>
<script>
import { getCachedDocumentResource, Progress, Tooltip } from 'frappe-ui';
import { getCachedDocumentResource, Progress, Tooltip } from 'jingrow-ui';
import { h, defineAsyncComponent } from 'vue';
import { toast } from 'vue-sonner';
import InfoIcon from '~icons/lucide/info';

View File

@ -73,7 +73,7 @@
</Dialog>
</template>
<script>
import { getCachedDocumentResource } from 'frappe-ui';
import { getCachedDocumentResource } from 'jingrow-ui';
import DateTimeControl from './DateTimeControl.vue';
import GenericList from './GenericList.vue';
import dayjs, { dayjsIST } from '../utils/dayjs';

View File

@ -76,7 +76,7 @@
</template>
<script>
import { Tree } from 'frappe-ui';
import { Tree } from 'jingrow-ui';
export default {
name: 'StorageBreakupChart',

View File

@ -74,7 +74,7 @@
<script setup lang="ts">
import Link from './Link.vue';
import { Badge, createDocumentResource, createResource } from 'frappe-ui';
import { Badge, createDocumentResource, createResource } from 'jingrow-ui';
import { computed, ref } from 'vue';
import { getTeam } from '../data/team';
import { toast } from 'vue-sonner';

View File

@ -72,7 +72,7 @@
</Dialog>
</template>
<script>
import { TextInput } from 'frappe-ui';
import { TextInput } from 'jingrow-ui';
import { switchToTeam } from '../data/team';
import LinkControl from './LinkControl.vue';

View File

@ -8,7 +8,7 @@
</FTabs>
</template>
<script>
import { Tabs } from 'frappe-ui';
import { Tabs } from 'jingrow-ui';
export default {
name: 'TabsWithRouter',

View File

@ -15,7 +15,7 @@
</template>
<script setup>
import { Avatar } from 'frappe-ui';
import { Avatar } from 'jingrow-ui';
const props = defineProps({
avatarImage: String,
fullName: String,

View File

@ -21,7 +21,7 @@
</template>
<script setup>
import CardForm from './CardForm.vue';
import { Dialog, FeatherIcon } from 'frappe-ui';
import { Dialog, FeatherIcon } from 'jingrow-ui';
const props = defineProps({
showMessage: {

View File

@ -48,7 +48,7 @@
<script>
import { toast } from 'vue-sonner';
import { FormControl, ErrorMessage } from 'frappe-ui';
import { FormControl, ErrorMessage } from 'jingrow-ui';
export default {
name: 'AddExchangeRate',

View File

@ -26,7 +26,7 @@
</template>
<script setup>
import PrepaidCreditsForm from './PrepaidCreditsForm.vue';
import { Dialog, FeatherIcon } from 'frappe-ui';
import { Dialog, FeatherIcon } from 'jingrow-ui';
const props = defineProps({
showMessage: {

View File

@ -26,7 +26,7 @@
</template>
<script setup>
import NewAddressForm from './NewAddressForm.vue';
import { FormControl, ErrorMessage, Button, createResource } from 'frappe-ui';
import { FormControl, ErrorMessage, Button, createResource } from 'jingrow-ui';
import { reactive, ref, inject } from 'vue';
const emit = defineEmits(['success']);

View File

@ -22,7 +22,7 @@
</template>
<script setup>
import BillingDetails from './BillingDetails.vue';
import { FeatherIcon, Dialog } from 'frappe-ui';
import { FeatherIcon, Dialog } from 'jingrow-ui';
import { ref } from 'vue';
const props = defineProps({

View File

@ -53,7 +53,7 @@
<script setup>
import AddPrepaidCreditsDialog from './AddPrepaidCreditsDialog.vue';
import UpcomingInvoiceDialog from './UpcomingInvoiceDialog.vue';
import { Button, createResource } from 'frappe-ui';
import { Button, createResource } from 'jingrow-ui';
import { ref, computed, inject } from 'vue';
import { confirmDialog } from '../../utils/components';
import router from '../../router';

View File

@ -30,7 +30,7 @@
</Dialog>
</template>
<script setup>
import { Dialog, Switch, Button, ErrorMessage, FormControl } from 'frappe-ui';
import { Dialog, Switch, Button, ErrorMessage, FormControl } from 'jingrow-ui';
import { ref, inject } from 'vue';
const props = defineProps({

View File

@ -38,7 +38,7 @@
</div>
</template>
<script setup>
import { Button, ErrorMessage, FeatherIcon, createResource } from 'frappe-ui';
import { Button, ErrorMessage, FeatherIcon, createResource } from 'jingrow-ui';
import { ref, onMounted, onBeforeUnmount, inject } from 'vue';
import { toast } from 'vue-sonner';
import { DashboardError } from '../../utils/error';

View File

@ -44,7 +44,7 @@
</div>
</template>
<script setup>
import { Button, ErrorMessage, Spinner, createResource } from 'frappe-ui';
import { Button, ErrorMessage, Spinner, createResource } from 'jingrow-ui';
import { loadStripe } from '@stripe/stripe-js';
import { ref, nextTick, inject } from 'vue';
import { toast } from 'vue-sonner';

View File

@ -87,7 +87,7 @@ import {
Spinner,
ErrorMessage,
createResource,
} from 'frappe-ui';
} from 'jingrow-ui';
import { currency } from '../../utils/format';
import { loadStripe } from '@stripe/stripe-js';
import { ref, reactive, computed, inject, onMounted } from 'vue';

View File

@ -81,7 +81,7 @@ import {
Button,
FeatherIcon,
createResource,
} from 'frappe-ui';
} from 'jingrow-ui';
import { cardBrandIcon, confirmDialog } from '../../utils/components';
import { ref } from 'vue';

View File

@ -14,7 +14,7 @@
</div>
</template>
<script setup>
import { Button, FeatherIcon } from 'frappe-ui';
import { Button, FeatherIcon } from 'jingrow-ui';
const props = defineProps({
label: String,
active: Boolean,

View File

@ -40,7 +40,7 @@
</div>
</template>
<script setup>
import { FormControl, ErrorMessage, createResource } from 'frappe-ui';
import { FormControl, ErrorMessage, createResource } from 'jingrow-ui';
import { ref, computed, inject, watch } from 'vue';
import { toast } from 'vue-sonner';
import { DashboardError } from '../../utils/error';

View File

@ -196,7 +196,7 @@ import BudgetAlertDialog from './BudgetAlertDialog.vue';
import AddPrepaidCreditsDialog from './AddPrepaidCreditsDialog.vue';
import AddCardDialog from './AddCardDialog.vue';
import ChangeCardDialog from './ChangeCardDialog.vue';
import { Dropdown, Button, FeatherIcon, createResource } from 'frappe-ui';
import { Dropdown, Button, FeatherIcon, createResource } from 'jingrow-ui';
import {
cardBrandIcon,
confirmDialog,

View File

@ -133,7 +133,7 @@ import RazorpayLogo from '../../logo/RazorpayLogo.vue';
import PayPalLogo from '../../logo/PayPalLogo.vue';
import StripeLogo from '../../logo/StripeLogo.vue';
import BuyPrepaidCreditsMpesa from './mpesa/BuyPrepaidCreditsMpesa.vue';
import { FormControl, Button, createResource } from 'frappe-ui';
import { FormControl, Button, createResource } from 'jingrow-ui';
import { ref, computed, inject, watch, onMounted } from 'vue';
const emit = defineEmits(['success']);

View File

@ -97,7 +97,7 @@
<script>
import { toast } from 'vue-sonner';
import { DashboardError } from '../../../utils/error';
import { ErrorMessage } from 'frappe-ui';
import { ErrorMessage } from 'jingrow-ui';
export default {
name: 'AddMpesaCredentials',
data() {

View File

@ -70,7 +70,7 @@
<script>
import { toast } from 'vue-sonner';
import { DashboardError } from '../../../utils/error';
import { frappeRequest, ErrorMessage } from 'frappe-ui';
import { frappeRequest, ErrorMessage } from 'jingrow-ui';
export default {
name: 'BuyPrepaidCreditsMpesa',
props: {

View File

@ -98,7 +98,7 @@
<script>
import { toast } from 'vue-sonner';
import { frappeRequest } from 'frappe-ui';
import { frappeRequest } from 'jingrow-ui';
export default {
name: 'PartnerPaymentPayout',

View File

@ -15,7 +15,7 @@ import {
watch,
nextTick,
} from 'vue';
import useAxisChartOptions from 'frappe-ui/src/components/Charts/axisChartOptions';
import useAxisChartOptions from 'jingrow-ui/src/components/Charts/axisChartOptions';
const props = defineProps({
data: {

View File

@ -92,7 +92,7 @@
</Dialog>
</template>
<script>
import { Dialog } from 'frappe-ui';
import { Dialog } from 'jingrow-ui';
import { date } from '../../../utils/format';
export default {

View File

@ -52,7 +52,7 @@
</template>
<script>
import { h } from 'vue';
import { FormControl } from 'frappe-ui';
import { FormControl } from 'jingrow-ui';
import ObjectList from '../../ObjectList.vue';
import { icon } from '../../../utils/components';
import { toast } from 'vue-sonner';

View File

@ -11,7 +11,7 @@
</Dialog>
</template>
<script>
import { Badge } from 'frappe-ui';
import { Badge } from 'jingrow-ui';
import ObjectList from '../../ObjectList.vue';
import { h } from 'vue';

View File

@ -11,7 +11,7 @@
</template>
<script>
import { Badge as FrappeUIBadge } from 'frappe-ui';
import { Badge as FrappeUIBadge } from 'jingrow-ui';
export default {
name: 'Badge',

View File

@ -32,7 +32,7 @@
</div>
</template>
<script>
import { LoadingText } from 'frappe-ui';
import { LoadingText } from 'jingrow-ui';
export default {
name: 'Card',
props: ['title', 'subtitle', 'loading', 'stopOverflow'],

View File

@ -14,7 +14,7 @@ import {
ErrorMessage,
Autocomplete,
Spinner,
} from 'frappe-ui';
} from 'jingrow-ui';
import outsideClickDirective from './outsideClickDirective';
let components = import.meta.glob('./*.vue', { eager: true }); // To get each component inside this folder

View File

@ -144,7 +144,7 @@ import {
TextInput,
Badge,
Button,
} from 'frappe-ui';
} from 'jingrow-ui';
import { toast } from 'vue-sonner';
import { h } from 'vue';
import { getToastErrorMessage } from '../../utils/toast';

View File

@ -47,7 +47,7 @@
</template>
<script>
import { getCachedDocumentResource } from 'frappe-ui';
import { getCachedDocumentResource } from 'jingrow-ui';
export default {
name: 'AddRegionDialog',

View File

@ -45,7 +45,7 @@
</template>
<script setup>
import { createResource } from 'frappe-ui';
import { createResource } from 'jingrow-ui';
import { defineProps, h, ref } from 'vue';
import LucideSparkleIcon from '~icons/lucide/sparkle';
import ObjectList from '../ObjectList.vue';

View File

@ -66,7 +66,7 @@
</template>
<script>
import { getCachedDocumentResource } from 'frappe-ui';
import { getCachedDocumentResource } from 'jingrow-ui';
export default {
name: 'DependencyEditorDialog',
@ -126,7 +126,7 @@ export default {
filters: {
parenttype: 'Bench Dependency',
parent: this.dependency.dependency,
supported_frappe_version: this.group.version,
supported_jingrow_version: this.group.version,
},
transform(data) {
return data.map((d) => d.version);

View File

@ -109,7 +109,7 @@ import {
FeatherIcon,
FileUploader,
FormControl,
} from 'frappe-ui';
} from 'jingrow-ui';
export default {
name: 'PatchAppDialog',

View File

@ -21,7 +21,7 @@
</template>
<script setup>
import { getCachedDocumentResource } from 'frappe-ui';
import { getCachedDocumentResource } from 'jingrow-ui';
import { toast } from 'vue-sonner';
import { confirmDialog } from '../../utils/components';
import router from '../../router';

View File

@ -24,7 +24,7 @@
</div>
</template>
<script>
import { getCachedDocumentResource } from 'frappe-ui';
import { getCachedDocumentResource } from 'jingrow-ui';
import ReleaseGroupActionCell from './ReleaseGroupActionCell.vue';
export default {

View File

@ -125,7 +125,7 @@
</template>
<script>
import { getCachedDocumentResource } from 'frappe-ui';
import { getCachedDocumentResource } from 'jingrow-ui';
export default {
props: ['bench', 'releaseGroup'],

View File

@ -123,7 +123,7 @@
<script>
import { h } from 'vue';
import { Checkbox, getCachedDocumentResource } from 'frappe-ui';
import { Checkbox, getCachedDocumentResource } from 'jingrow-ui';
import CommitChooser from '@/components/utils/CommitChooser.vue';
import CommitTag from '@/components/utils/CommitTag.vue';
import GenericList from '../../components/GenericList.vue';

View File

@ -29,7 +29,7 @@
</template>
<script>
import { getCachedDocumentResource } from 'frappe-ui';
import { getCachedDocumentResource } from 'jingrow-ui';
import ObjectList from '../ObjectList.vue';
export default {

View File

@ -34,7 +34,7 @@
</div>
</template>
<script setup>
import { Button, ErrorMessage, FeatherIcon, createResource } from 'frappe-ui';
import { Button, ErrorMessage, FeatherIcon, createResource } from 'jingrow-ui';
import { ref, onMounted, onBeforeUnmount, inject } from 'vue';
import { toast } from 'vue-sonner';
import { DashboardError } from '../../utils/error';

View File

@ -44,7 +44,7 @@
</div>
</template>
<script setup>
import { Button, ErrorMessage, Spinner, createResource } from 'frappe-ui';
import { Button, ErrorMessage, Spinner, createResource } from 'jingrow-ui';
import { loadStripe } from '@stripe/stripe-js';
import { ref, nextTick, inject } from 'vue';
import { toast } from 'vue-sonner';

View File

@ -17,7 +17,7 @@
</Dialog>
</template>
<script setup>
import { Dialog, FormControl, createResource } from 'frappe-ui';
import { Dialog, FormControl, createResource } from 'jingrow-ui';
import { defineEmits, ref } from 'vue';
import { toast } from 'vue-sonner';

View File

@ -37,7 +37,7 @@
<script setup>
// import UserAvatar from '@/components/UserAvatar.vue'
// import AttachmentItem from '@/components/AttachmentItem.vue'
import { Tooltip } from 'frappe-ui';
import { Tooltip } from 'jingrow-ui';
import { timeAgo } from '../../utils/format';
const props = defineProps({
activity: Object,

View File

@ -168,7 +168,7 @@
</div>
</template>
<script setup>
import { createResource, Tooltip, Button, FeatherIcon, call } from 'frappe-ui';
import { createResource, Tooltip, Button, FeatherIcon, call } from 'jingrow-ui';
import { useRoute } from 'vue-router';
import DotIcon from '../icons/DotIcon.vue';
import SelectIcon from '../icons/SelectIcon.vue';
@ -273,7 +273,7 @@ async function saveComment() {
if (!newComment.value) {
return;
}
let comment = await call('frappe.desk.form.utils.add_comment', {
let comment = await call('jingrow.desk.form.utils.add_comment', {
reference_doctype: 'Partner Lead',
reference_name: route.params.leadId,
content: newComment.value,

View File

@ -6,7 +6,7 @@
</Dialog>
</template>
<script setup>
import { Dialog, createResource } from 'frappe-ui';
import { Dialog, createResource } from 'jingrow-ui';
import LeadDetailsForm from './LeadDetailsForm.vue';
import { useRoute } from 'vue-router';
import { reactive } from 'vue';

View File

@ -30,7 +30,7 @@
</div>
</template>
<script setup>
import { FormControl, createResource } from 'frappe-ui';
import { FormControl, createResource } from 'jingrow-ui';
import { toast } from 'vue-sonner';
import { computed, ref } from 'vue';
import { DashboardError } from '../../utils/error';

View File

@ -10,7 +10,7 @@ import ObjectList from '../ObjectList.vue';
import UpdateFollowupDialog from './UpdateFollowupDialog.vue';
import { confirmDialog, renderDialog } from '../../utils/components';
import { toast } from 'vue-sonner';
import { createResource } from 'frappe-ui';
import { createResource } from 'jingrow-ui';
import { date } from '../../utils/format';
const route = useRoute();

View File

@ -51,11 +51,11 @@
<script setup>
import { defineEmits, ref } from 'vue';
import { createResource, frappeRequest, debounce } from 'frappe-ui';
import { createResource, frappeRequest, debounce } from 'jingrow-ui';
import { toast } from 'vue-sonner';
const courseTypes = [
{ label: 'Framework', value: 'frappe-developer-certification' },
{ label: 'Framework', value: 'jingrow-developer-certification' },
{ label: 'ERPNext', value: 'erpnext-distribution' },
];
const show = ref(true);

View File

@ -53,7 +53,7 @@
</template>
<script setup>
import { ref, computed, defineEmits, defineProps } from 'vue';
import { TextEditor, TextEditorFixedMenu, TextEditorContent } from 'frappe-ui';
import { TextEditor, TextEditorFixedMenu, TextEditorContent } from 'jingrow-ui';
const commentEditor = ref('');
const editor = computed(() => {

View File

@ -38,7 +38,7 @@ import {
FormControl,
createResource,
createListResource,
} from 'frappe-ui';
} from 'jingrow-ui';
import { toast } from 'vue-sonner';
import { computed, ref } from 'vue';
import { DashboardError } from '../../utils/error';

View File

@ -6,7 +6,7 @@
<script>
import { h } from 'vue';
import { toast } from 'vue-sonner';
import { FeatherIcon, Tooltip, Badge, Button } from 'frappe-ui';
import { FeatherIcon, Tooltip, Badge, Button } from 'jingrow-ui';
import ObjectList from '../ObjectList.vue';
import Clock from '~icons/lucide/clock';
export default {
@ -42,12 +42,12 @@ export default {
},
{
label: 'Frappe Approval',
fieldname: 'approved_by_frappe',
fieldname: 'approved_by_jingrow',
type: 'Component',
align: 'center',
width: 0.6,
component({ row }) {
if (row.approved_by_frappe) {
if (row.approved_by_jingrow) {
return h(
Tooltip,
{
@ -133,7 +133,7 @@ export default {
});
} else if (
row.status === 'Pending' &&
row.approved_by_frappe === 0
row.approved_by_jingrow === 0
) {
return h(Badge, {
label: "Waiting for Frappe's approval",

View File

@ -52,12 +52,12 @@
<script setup>
import { defineEmits, onMounted, ref } from 'vue';
import { createResource } from 'frappe-ui';
import { createResource } from 'jingrow-ui';
import { getTeam } from '../../data/team';
import { toast } from 'vue-sonner';
const courseTypes = [
{ label: 'Framework', value: 'frappe-developer-certification' },
{ label: 'Framework', value: 'jingrow-developer-certification' },
{ label: 'ERPNext', value: 'erpnext-distribution' },
];
const show = ref(true);

View File

@ -6,7 +6,7 @@
<script>
import { h } from 'vue';
import { FeatherIcon, Tooltip } from 'frappe-ui';
import { FeatherIcon, Tooltip } from 'jingrow-ui';
import { icon, renderDialog } from '../../utils/components';
import ObjectList from '../ObjectList.vue';
import PartnerCertificateRequest from './PartnerCertificateRequest.vue';
@ -58,7 +58,7 @@ export default {
label: 'Course',
fieldname: 'course',
format(value) {
return value == 'frappe-developer-certification'
return value == 'jingrow-developer-certification'
? 'Framework'
: 'ERPNext';
},

View File

@ -86,7 +86,7 @@ import BuyPartnerCreditsStripe from './BuyPartnerCreditsStripe.vue';
import BuyPartnerCreditsRazorpay from './BuyPartnerCreditsRazorpay.vue';
import RazorpayLogo from '../../logo/RazorpayLogo.vue';
import StripeLogo from '../../logo/StripeLogo.vue';
import { FormControl, Button, createDocumentResource } from 'frappe-ui';
import { FormControl, Button, createDocumentResource } from 'jingrow-ui';
import { ref, computed, inject, defineEmits } from 'vue';
const emit = defineEmits(['success']);

View File

@ -86,7 +86,7 @@
<script>
import PartnerCustomerInvoices from './PartnerCustomerInvoices.vue';
import ObjectList from '../ObjectList.vue';
import { Dialog, ErrorMessage } from 'frappe-ui';
import { Dialog, ErrorMessage } from 'jingrow-ui';
import { toast } from 'vue-sonner';
import { userCurrency } from '../../utils/format';
import PartnerApprovalRequests from './PartnerApprovalRequests.vue';

View File

@ -85,7 +85,7 @@
</template>
<script setup>
import { inject, computed } from 'vue';
import { createResource, NumberChart, AxisChart, DonutChart } from 'frappe-ui';
import { createResource, NumberChart, AxisChart, DonutChart } from 'jingrow-ui';
const team = inject('team');
const partnerDetails = createResource({

Some files were not shown because too many files have changed in this diff Show More