mirror of
https://github.com/fleetbase/fleetbase.git
synced 2026-01-08 23:34:14 +00:00
Compare commits
22 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a33c46ecd8 | ||
|
|
3fe1e0a439 | ||
|
|
7ae150137a | ||
|
|
fd1ee4cccc | ||
|
|
ca2bab9261 | ||
|
|
8c0d5f04c2 | ||
|
|
18f813c95b | ||
|
|
ca6004c191 | ||
|
|
cd5a7370b9 | ||
|
|
989312f3f8 | ||
|
|
9fe1af84a7 | ||
|
|
b4ff469c8b | ||
|
|
5d54ffbfda | ||
|
|
445d782fe6 | ||
|
|
4ffc721ecf | ||
|
|
4623910ebf | ||
|
|
af8e30ad7f | ||
|
|
f38d65028e | ||
|
|
eb90b77151 | ||
|
|
536f36487b | ||
|
|
93dc4afc03 | ||
|
|
9fc53de9fe |
9
.gitmodules
vendored
9
.gitmodules
vendored
@@ -33,9 +33,6 @@
|
||||
path = packages/fleetops-data
|
||||
url = git@github.com:fleetbase/fleetops-data.git
|
||||
branch = main
|
||||
[submodule "docs/guides"]
|
||||
path = docs/guides
|
||||
url = git@github.com:fleetbase/guides.git
|
||||
[submodule "docs/api-reference"]
|
||||
path = docs/api-reference
|
||||
url = git@github.com:fleetbase/api-reference.git
|
||||
[submodule "docs"]
|
||||
path = docs
|
||||
url = git@github.com:fleetbase/docs.git
|
||||
|
||||
22
README.md
22
README.md
@@ -7,7 +7,7 @@
|
||||
<p align="center" dir="auto">
|
||||
Modular logistics and supply chain operating system
|
||||
<br>
|
||||
<a href="https://fleetbase.github.io/guides" rel="nofollow">Documentation</a>
|
||||
<a href="https://docs.fleetbase.io/" rel="nofollow">Documentation</a>
|
||||
·
|
||||
<a href="https://console.fleetbase.io" rel="nofollow">Cloud Version</a>
|
||||
·
|
||||
@@ -42,6 +42,7 @@ sh deploy.sh
|
||||
|
||||
- [Features](#-features)
|
||||
- [Install](#-install)
|
||||
- [Apps](#-apps)
|
||||
- [Roadmap](#-roadmap)
|
||||
- [Bugs and Feature Requests](#-bugs-and--feature-requests)
|
||||
- [Documentation](#-documentation)
|
||||
@@ -67,7 +68,7 @@ sh deploy.sh
|
||||
- **Open Source:** Deploy it either on-premise or in the cloud according to your organization's needs and preferences.
|
||||
|
||||
## 💾 Install
|
||||
Getting up and running with Fleetbase via Docker is the quickest and most straightforward way. If you’d like to use Fleetbase without docker read the [full install guide in the Fleetbase documentation](https://docs.fleetbase.io/install).
|
||||
Getting up and running with Fleetbase via Docker is the quickest and most straightforward way. If you’d like to use Fleetbase without docker read the [full install guide in the Fleetbase documentation](https://docs.fleetbase.io/getting-started/install).
|
||||
|
||||
Make sure you have both the latest versions of docker and docker-compose installed on your system.
|
||||
|
||||
@@ -89,7 +90,7 @@ Fleetbase API: http://localhost:8000
|
||||
|
||||
**CORS:** If you’re installing directly on a server you may need to add your IP address or domain to the `api/config/cors.php` file in the `allowed_hosts` array.
|
||||
|
||||
**Routing:** Fleetbase ships with its own OSRM server hosted at `routing.fleetbase.io` but you’re able to use your own or any other OSRM compatible server. You can modify this in the `console/environments` directory by modifying the env file of the environment you’re deploying and setting the `OSRM_HOST` to the OSRM server for Fleetbase to use.
|
||||
**Routing:** Fleetbase ships with its own OSRM server hosted at `[bundle.routing.fleetbase.io](https://bundle.routing.fleetbase.io)` but you’re able to use your own or any other OSRM compatible server. You can modify this in the `console/environments` directory by modifying the env file of the environment you’re deploying and setting the `OSRM_HOST` to the OSRM server for Fleetbase to use.
|
||||
|
||||
**Services:** There are a few environment variables which need to be set for Fleetbase to function with full features. If you’re deploying with docker then it’s easiest to just create a `docker-compose.override.yml` and supply the environment variables in this file.
|
||||
|
||||
@@ -99,7 +100,7 @@ services:
|
||||
application:
|
||||
environment:
|
||||
MAIL_MAILER: (ses, smtp, mailgun, postmark, sendgrid)
|
||||
OSRM_HOST: https://routing.fleetbase.io
|
||||
OSRM_HOST: https://bundle.routing.fleetbase.io
|
||||
IPINFO_API_KEY:
|
||||
GOOGLE_MAPS_API_KEY:
|
||||
GOOGLE_MAPS_LOCALE: us
|
||||
@@ -109,7 +110,16 @@ services:
|
||||
CONSOLE_HOST: http://localhost:4200
|
||||
```
|
||||
|
||||
You can learn more about full installation, and configuration in the [official documentation](https://docs.fleetbase.io).
|
||||
You can learn more about full installation, and configuration in the [official documentation](https://docs.fleetbase.io/getting-started/install).
|
||||
|
||||
# 📱 Apps
|
||||
|
||||
Fleetbase offers a few open sourced apps which are built on Fleetbase which can be cloned and customized. Every app is built so that the Fleetbase instance can be switched out whether on-premise install or cloud hosted.
|
||||
|
||||
<ul>
|
||||
<li><a href="https://github.com/fleetbase/storefront-app">Storefront App</a>: Fleetbase based ecommerce/on-demand app for launching your very own shop or marketplace to Apple or Android playstore.</li>
|
||||
<li><a href="https://github.com/fleetbase/navigator-app">Navigator App</a>: Fleetbase based driver app which can be used for drivers to manage and update order, additionally provides real time driver location which can be viewed in the Fleetbase Console.</li>
|
||||
</ul>
|
||||
|
||||
## 🛣️ Roadmap
|
||||
1. **Extensions Registry and Marketplace** ~ Allows users to publish and sell installable extensions on Fleetbase instances.
|
||||
@@ -133,7 +143,7 @@ Please read through our <a href="https://github.com/fleetbase/fleetbase/blob/mai
|
||||
Get updates on Fleetbase's development and chat with the project maintainers and community members by joining our <a href="https://discord.gg/V7RVWRQ2Wm">Discord</a>.
|
||||
|
||||
<ul>
|
||||
<li>Follow <a href="https://twitter.com/fleetbase_io">@fleetbase_io on Twitter</a>.</li>
|
||||
<li>Follow <a href="https://x.com/fleetbase_io">@fleetbase_io on X</a>.</li>
|
||||
<li>Read and subscribe to <a href="https://www.fleetbase.io/blog-2">The Official Fleetbase Blog</a>.</li>
|
||||
<li>Ask and explore <a href="https://github.com/orgs/fleetbase/discussions">our GitHub Discussions</a>.</li>
|
||||
</ul>
|
||||
|
||||
@@ -9,9 +9,9 @@
|
||||
"license": "MIT",
|
||||
"require": {
|
||||
"php": "^8.0",
|
||||
"fleetbase/core-api": "^1.4.23",
|
||||
"fleetbase/fleetops-api": "^0.4.28",
|
||||
"fleetbase/storefront-api": "^0.3.8",
|
||||
"fleetbase/core-api": "^1.4.26",
|
||||
"fleetbase/fleetops-api": "^0.5.1",
|
||||
"fleetbase/storefront-api": "^0.3.10",
|
||||
"guzzlehttp/guzzle": "^7.0.1",
|
||||
"laravel/framework": "^10.0",
|
||||
"laravel/octane": "^2.3",
|
||||
|
||||
1295
api/composer.lock
generated
1295
api/composer.lock
generated
File diff suppressed because it is too large
Load Diff
@@ -40,6 +40,13 @@ export default class ConsoleAdminOrganizationsController extends Controller {
|
||||
*/
|
||||
@service filters;
|
||||
|
||||
/**
|
||||
* Inject the `crud` service
|
||||
*
|
||||
* @var {Service}
|
||||
*/
|
||||
@service crud;
|
||||
|
||||
/**
|
||||
* The search query param value.
|
||||
*
|
||||
@@ -166,4 +173,14 @@ export default class ConsoleAdminOrganizationsController extends Controller {
|
||||
@action goToCompany(company) {
|
||||
this.router.transitionTo('console.admin.organizations.index.users', company.public_id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Toggles dialog to export `drivers`
|
||||
*
|
||||
* @void
|
||||
*/
|
||||
@action exportOrganization() {
|
||||
const selections = this.table.selectedRows.map((_) => _.id);
|
||||
this.crud.export('companies', { params: { selections } });
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
import Model, { attr, belongsTo } from '@ember-data/model';
|
||||
import { getOwner } from '@ember/application';
|
||||
import { computed } from '@ember/object';
|
||||
import { format, formatDistanceToNow, isValid as isValidDate } from 'date-fns';
|
||||
import { format as formatDate, formatDistanceToNow, isValid as isValidDate } from 'date-fns';
|
||||
import isVideoFile from '@fleetbase/ember-core/utils/is-video-file';
|
||||
import isImageFile from '@fleetbase/ember-core/utils/is-image-file';
|
||||
import config from '@fleetbase/console/config/environment';
|
||||
|
||||
export default class ChatAttachment extends Model {
|
||||
/** @ids */
|
||||
@@ -18,9 +19,6 @@ export default class ChatAttachment extends Model {
|
||||
@belongsTo('file', { async: true }) file;
|
||||
|
||||
/** @attributes */
|
||||
@attr('string') chat_channel_uuid;
|
||||
@attr('string') sender_uuid;
|
||||
@attr('string') file_uuid;
|
||||
@attr('string') url;
|
||||
@attr('string') filename;
|
||||
@attr('string') content_type;
|
||||
@@ -72,7 +70,7 @@ export default class ChatAttachment extends Model {
|
||||
|
||||
/** @methods */
|
||||
downloadFromApi() {
|
||||
window.open(ENV.api.host + '/' + ENV.api.namespace + '/files/download?file=' + this.file_uuid, '_self');
|
||||
window.open(config.api.host + '/' + config.api.namespace + '/files/download?file=' + this.file_uuid, '_self');
|
||||
}
|
||||
|
||||
download() {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import Model, { attr, hasMany, belongsTo } from '@ember-data/model';
|
||||
import { computed } from '@ember/object';
|
||||
import { getOwner } from '@ember/application';
|
||||
import { format, formatDistanceToNow, isValid as isValidDate } from 'date-fns';
|
||||
import { format as formatDate, formatDistanceToNow, isValid as isValidDate } from 'date-fns';
|
||||
|
||||
export default class ChatChannelModel extends Model {
|
||||
/** @ids */
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import Model, { attr, belongsTo } from '@ember-data/model';
|
||||
import Model, { attr } from '@ember-data/model';
|
||||
import { computed } from '@ember/object';
|
||||
import { format, formatDistanceToNow, isValid as isValidDate } from 'date-fns';
|
||||
import { format as formatDate, formatDistanceToNow, isValid as isValidDate } from 'date-fns';
|
||||
|
||||
export default class ChatLogModel extends Model {
|
||||
/** @ids */
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import Model, { attr, belongsTo, hasMany } from '@ember-data/model';
|
||||
import { computed } from '@ember/object';
|
||||
import { format, formatDistanceToNow, isValid as isValidDate } from 'date-fns';
|
||||
import { format as formatDate, formatDistanceToNow, isValid as isValidDate } from 'date-fns';
|
||||
|
||||
export default class ChatMessage extends Model {
|
||||
/** @ids */
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import Model, { attr, belongsTo } from '@ember-data/model';
|
||||
import { computed } from '@ember/object';
|
||||
import { format, formatDistanceToNow, isValid as isValidDate } from 'date-fns';
|
||||
import { format as formatDate, formatDistanceToNow, isValid as isValidDate } from 'date-fns';
|
||||
|
||||
export default class ChatParticipant extends Model {
|
||||
/** @ids */
|
||||
|
||||
@@ -3,7 +3,7 @@ import { computed } from '@ember/object';
|
||||
import { not } from '@ember/object/computed';
|
||||
import { getOwner } from '@ember/application';
|
||||
import { format, formatDistanceToNow } from 'date-fns';
|
||||
import ENV from '@fleetbase/console/config/environment';
|
||||
import config from '@fleetbase/console/config/environment';
|
||||
import isVideoFile from '@fleetbase/ember-core/utils/is-video-file';
|
||||
import isImageFile from '@fleetbase/ember-core/utils/is-image-file';
|
||||
|
||||
@@ -64,7 +64,7 @@ export default class FileModel extends Model {
|
||||
|
||||
/** @methods */
|
||||
downloadFromApi() {
|
||||
window.open(ENV.api.host + '/' + ENV.api.namespace + '/files/download?file=' + this.id, '_self');
|
||||
window.open(config.api.host + '/' + config.api.namespace + '/files/download?file=' + this.id, '_self');
|
||||
}
|
||||
|
||||
download() {
|
||||
|
||||
@@ -100,11 +100,11 @@ export default class UserModel extends Model {
|
||||
}
|
||||
|
||||
@computed('last_login') get lastLogin() {
|
||||
if (!this.last_login || !isValid(new Date(this.last_login))) {
|
||||
if (!this.last_login || !isValid(this.last_login)) {
|
||||
return 'Never';
|
||||
}
|
||||
|
||||
return format(new Date(this.last_login), 'PP');
|
||||
return format(this.last_login, 'PP p');
|
||||
}
|
||||
|
||||
@computed('updated_at') get updatedAgo() {
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import ApplicationSerializer from '@fleetbase/ember-core/serializers/application';
|
||||
import { EmbeddedRecordsMixin } from '@ember-data/serializer/rest';
|
||||
import { getOwner } from '@ember/application';
|
||||
import { underscore } from '@ember/string';
|
||||
import { isArray } from '@ember/array';
|
||||
|
||||
export default class ChatChannelSerializer extends ApplicationSerializer.extend(EmbeddedRecordsMixin) {
|
||||
|
||||
@@ -17,10 +17,10 @@
|
||||
|
||||
<form class="mt-8" {{on "submit" this.verifyCode}}>
|
||||
<div class="flex items-center justify-between my-6">
|
||||
<OtpInput @onInputCompleted={{this.handleOtpInput}} />
|
||||
<OtpInput @onInputCompleted={{this.handleOtpInput}} @size={{6}} class="w-full" />
|
||||
</div>
|
||||
|
||||
<div id="otp-countdown-container" class="otp-countdown-container flex items-center justify-center min-h-12">
|
||||
<div id="otp-countdown-container" class="otp-countdown-container flex {{if this.isCodeExpired "flex-col" "flex-row"}} items-center justify-center min-h-12">
|
||||
{{#if this.countdownReady}}
|
||||
<Countdown @expiry={{this.twoFactorSessionExpiresAfter}} @countdownClass="text-lg" @onCountdownEnd={{this.handleCodeExpired}} />
|
||||
{{/if}}
|
||||
|
||||
@@ -1,13 +1,15 @@
|
||||
{{page-title (t "console.admin.organizations.index.title")}}
|
||||
{{!-- template-lint-disable no-unbound --}}
|
||||
<Layout::Section::Header @title={{t "console.admin.organizations.index.title"}} @searchQuery={{unbound this.query}} @onSearch={{this.search}} />
|
||||
{{! template-lint-disable no-unbound }}
|
||||
<Layout::Section::Header @title={{t "console.admin.organizations.index.title"}} @searchQuery={{unbound this.query}} @onSearch={{this.search}}>
|
||||
<Button @icon="long-arrow-up" @iconClass="rotate-icon-45" @text={{t "common.export"}} @wrapperClass="hidden md:flex" @onClick={{this.exportOrganization}} />
|
||||
</Layout::Section::Header>
|
||||
|
||||
<Layout::Section::Body>
|
||||
<Table
|
||||
@rows={{@model}}
|
||||
@columns={{this.columns}}
|
||||
@selectable={{false}}
|
||||
@canSelectAll={{false}}
|
||||
@selectable={{true}}
|
||||
@canSelectAll={{true}}
|
||||
@onSetup={{fn (mut this.table)}}
|
||||
@pagination={{true}}
|
||||
@paginationMeta={{@model.meta}}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@fleetbase/console",
|
||||
"version": "0.4.22",
|
||||
"version": "0.4.26",
|
||||
"private": true,
|
||||
"description": "Modular logistics and supply chain operating system (LSOS)",
|
||||
"repository": "https://github.com/fleetbase/fleetbase",
|
||||
@@ -29,13 +29,13 @@
|
||||
"test:ember": "ember test"
|
||||
},
|
||||
"dependencies": {
|
||||
"@fleetbase/ember-core": "^0.2.9",
|
||||
"@fleetbase/ember-ui": "^0.2.14",
|
||||
"@fleetbase/fleetops-engine": "^0.4.28",
|
||||
"@fleetbase/ember-core": "^0.2.11",
|
||||
"@fleetbase/ember-ui": "^0.2.17",
|
||||
"@fleetbase/fleetops-engine": "^0.5.1",
|
||||
"@fleetbase/storefront-engine": "^0.3.10",
|
||||
"@fleetbase/dev-engine": "^0.2.3",
|
||||
"@fleetbase/iam-engine": "^0.0.12",
|
||||
"@fleetbase/fleetops-data": "^0.1.15",
|
||||
"@fleetbase/storefront-engine": "^0.3.7",
|
||||
"@fleetbase/dev-engine": "^0.2.2",
|
||||
"@fleetbase/iam-engine": "^0.0.10",
|
||||
"@fleetbase/leaflet-routing-machine": "^3.2.16",
|
||||
"@ember/legacy-built-in-components": "^0.4.1",
|
||||
"@fortawesome/ember-fontawesome": "^0.4.1",
|
||||
@@ -142,8 +142,8 @@
|
||||
},
|
||||
"pnpm": {
|
||||
"overrides": {
|
||||
"@fleetbase/ember-core": "^0.2.9",
|
||||
"@fleetbase/ember-ui": "^0.2.14",
|
||||
"@fleetbase/ember-core": "^0.2.11",
|
||||
"@fleetbase/ember-ui": "^0.2.17",
|
||||
"@fleetbase/fleetops-data": "^0.1.15"
|
||||
}
|
||||
},
|
||||
|
||||
5670
console/pnpm-lock.yaml
generated
5670
console/pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
@@ -65,9 +65,20 @@ common:
|
||||
next: Next
|
||||
continue: Continue
|
||||
done: Done
|
||||
export: Export
|
||||
component:
|
||||
file:
|
||||
dropdown-label: File actions
|
||||
import-modal:
|
||||
loading-message: Processing import...
|
||||
drop-upload: Drop to upload
|
||||
invalid: Invalid
|
||||
ready-upload: ready for upload.
|
||||
upload-spreadsheets: Upload Spreadsheets
|
||||
drag-drop: Drag and drop spreadsheet files onto this dropzone
|
||||
button-text: or select spreadsheets to upload
|
||||
spreadsheets: spreadsheets
|
||||
upload-queue: Upload Queue
|
||||
dropzone:
|
||||
file: file
|
||||
drop-to-upload: Drop to upload
|
||||
|
||||
@@ -69,8 +69,8 @@ services:
|
||||
MAIL_FROM_NAME: Fleetbase
|
||||
APP_NAME: Fleetbase
|
||||
LOG_CHANNEL: daily
|
||||
MODEL_CACHE_ENABLED: true
|
||||
RESPONSE_CACHE_ENABLED: true
|
||||
MODEL_CACHE_ENABLED: 'true'
|
||||
RESPONSE_CACHE_ENABLED: 'true'
|
||||
RESPONSE_CACHE_DRIVER: redis
|
||||
depends_on:
|
||||
- database
|
||||
|
||||
1
docs
Submodule
1
docs
Submodule
Submodule docs added at 6e1281f528
Submodule docs/api-reference deleted from 632bf97f1f
Submodule docs/guides deleted from 479ca400c4
Submodule packages/core-api updated: 7b7693a06f...05e927265c
Submodule packages/dev-engine updated: 0c5c4daf99...7bc431c6cd
Submodule packages/ember-core updated: a068790fa5...b17d74ddb8
Submodule packages/ember-ui updated: adc5e7fd83...eb71b0fb41
Submodule packages/fleetops updated: 721b909d42...024761de3c
Submodule packages/iam-engine updated: 44dc31d91d...6b11bf94f2
Submodule packages/storefront updated: 778154b5a6...e3f532fae5
Reference in New Issue
Block a user