Compare commits

..

4 Commits

Author SHA1 Message Date
Ivan
ace3d53a2e Upgrade build system base versions
Some checks failed
Frontend CI / build (22.x) (push) Waiting to run
Backend CI / build (3.12) (push) Has been cancelled
2024-07-19 22:38:14 +03:00
Ivan
5922c28fa7 Small UI fixes 2024-07-19 20:42:54 +03:00
Ivan
3996673d9f Fix build system 2024-07-19 20:27:27 +03:00
Ivan
80e0849eaf Fix FromAsCasing 2024-07-19 19:40:39 +03:00
20 changed files with 1173 additions and 235 deletions

View File

@ -54,6 +54,7 @@ db.sqlite3-journal
# React
.DS_*
*.log
*.tsbuildinfo
logs
**/*.backup.*
**/*.back.*

View File

@ -9,35 +9,35 @@ defaults:
on:
push:
branches: [ "main" ]
branches: ["main"]
paths:
- rsconcept/frontend/**
- .github/workflows/frontend.yml
pull_request:
branches: [ "main" ]
branches: ["main"]
jobs:
build:
runs-on: ubuntu-22.04
strategy:
matrix:
node-version: [18.x]
node-version: [22.x]
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
steps:
- uses: actions/checkout@v4
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache-dependency-path: rsconcept/frontend/package-lock.json
cache: 'npm'
- name: Build
run: |
npm ci
npm run build --if-present
- name: Test
run: |
npm test
- uses: actions/checkout@v4
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache-dependency-path: rsconcept/frontend/package-lock.json
cache: "npm"
- name: Build
run: |
npm install -g typescript vite jest
npm ci
npm run build --if-present
- name: Test
run: |
npm test

1
.gitignore vendored
View File

@ -47,6 +47,7 @@ db.sqlite3-journal
# React
.DS_*
*.log
*.tsbuildinfo
logs
**/*.backup.*
**/*.back.*

View File

@ -1,7 +1,7 @@
# ==========================================
# ============ Multi-stage build ===========
# ==========================================
FROM ubuntu:jammy as python-base
FROM ubuntu:jammy AS python-base
ENV DEBIAN_FRONTEND=noninteractive
@ -25,7 +25,7 @@ RUN apt-get update -qq && \
rm -rf /var/lib/apt/lists/*
# ========= Builder ==============
FROM python-base as builder
FROM python-base AS builder
# Set env variables
ENV PYTHONDONTWRITEBYTECODE 1
@ -65,9 +65,10 @@ RUN pip install --no-cache /wheels/* && \
rm -rf /wheels
# Copy application sources and setup permissions
COPY apps/ ./apps
COPY project/ ./project
COPY shared/ ./shared
COPY fixtures/ ./fixtures
COPY apps/ ./apps
COPY manage.py entrypoint.sh ./
RUN sed -i 's/\r$//g' $APP_HOME/entrypoint.sh && \
chmod +x $APP_HOME/entrypoint.sh && \

View File

@ -1,5 +1,4 @@
# Local build config
VITE_PORTAL_BACKEND=http://localhost:8000
VITE_PORTAL_FRONT_PORT=3000
VITE_PORTAL_FRONT_HTTPS=false
VITE_PORTAL_FRONT_PORT=3000

View File

@ -1,24 +1,28 @@
# ======== Multi-stage base ==========
FROM node:bullseye-slim as node-base
FROM node:22-bookworm-slim AS node-base
RUN apt-get update -qq && \
apt-get upgrade -y && \
rm -rf /var/lib/apt/lists/*
# ======= Build =======
ARG BUILD_TYPE=production
FROM node-base as builder
FROM node-base AS builder
WORKDIR /result
RUN npm install -g typescript vite
COPY ./ ./
COPY ./env/.env.$BUILD_TYPE ./
RUN rm -rf ./env
RUN npm ci
ENV NODE_ENV production
RUN npm run build
# ========= Server =======
FROM node-base as product-server
FROM node-base AS product-server
ENV NODE_ENV production

View File

@ -1,11 +1,11 @@
# ======== Multi-stage base ==========
FROM node:bullseye-slim as node-base
FROM node:bullseye-slim AS node-base
RUN apt-get update -qq && \
apt-get upgrade -y && \
rm -rf /var/lib/apt/lists/*
# ========= Server =======
FROM node-base as product-server
FROM node-base AS product-server
ARG BUILD_TYPE=production
WORKDIR /home

View File

@ -2,4 +2,3 @@
VITE_PORTAL_BACKEND=http://localhost:8002
VITE_PORTAL_FRONT_PORT=3002
VITE_PORTAL_FRONT_HTTPS=false

View File

@ -2,4 +2,3 @@
VITE_PORTAL_BACKEND=https://api.portal.acconcept.ru
VITE_PORTAL_FRONT_PORT=443
VITE_PORTAL_FRONT_HTTPS=true

View File

@ -2,5 +2,4 @@
VITE_PORTAL_BACKEND=https://localhost:8001
VITE_PORTAL_FRONT_PORT=3001
VITE_PORTAL_FRONT_HTTPS=true

File diff suppressed because it is too large Load Diff

View File

@ -15,16 +15,16 @@ interface DataLoaderProps extends CProps.AnimatedDiv {
children: React.ReactNode;
}
function DataLoader({ id, isLoading, hasNoData, error, children, ...restProps }: DataLoaderProps) {
function DataLoader({ id, isLoading, hasNoData, error, className, children, ...restProps }: DataLoaderProps) {
return (
<AnimatePresence mode='wait'>
{!isLoading && !error && !hasNoData ? (
<AnimateFade id={id} key={`${id}-data`} {...restProps}>
<AnimateFade id={id} key={`${id}-data`} className={className} {...restProps}>
{children}
</AnimateFade>
) : null}
{!isLoading && !error && hasNoData ? (
<AnimateFade key={`${id}-no-data`} {...restProps}>
<AnimateFade key={`${id}-no-data`} className='w-full text-center p-1' {...restProps}>
Данные не загружены
</AnimateFade>
) : null}

View File

@ -11,7 +11,7 @@ import { OssLoader } from '@/models/OssLoader';
function useOssDetails({ target }: { target?: string }) {
const { loading: userLoading } = useAuth();
const [schema, setInner] = useState<IOperationSchema | undefined>(undefined);
const [loading, setLoading] = useState(true);
const [loading, setLoading] = useState(target != undefined);
const [error, setError] = useState<ErrorData>(undefined);
function setSchema(data?: IOperationSchemaData) {

View File

@ -11,7 +11,7 @@ import { RSFormLoader } from '@/models/RSFormLoader';
function useRSFormDetails({ target, version }: { target?: string; version?: string }) {
const { loading: userLoading } = useAuth();
const [schema, setInnerSchema] = useState<IRSForm | undefined>(undefined);
const [loading, setLoading] = useState(true);
const [loading, setLoading] = useState(target != undefined);
const [error, setError] = useState<ErrorData>(undefined);
function setSchema(data?: IRSFormData) {

View File

@ -45,7 +45,7 @@ function ViewSideLocation({ folderTree, active, setActive: setActive, toggleFold
animate={{ ...animateSideView.animate }}
exit={{ ...animateSideView.exit }}
>
<div className='h-[2.08rem] flex justify-between items-center pr-1'>
<div className='h-[2.08rem] flex justify-between items-center pr-1 pl-[0.125rem]'>
<BadgeHelp
topic={HelpTopic.UI_LIBRARY}
className={clsx(PARAMETER.TOOLTIP_WIDTH, 'text-sm')}

View File

@ -62,6 +62,7 @@ function LoginPage() {
autoFocus
required
allowEnter
spellCheck={false}
value={username}
onChange={event => setUsername(event.target.value)}
/>

View File

@ -95,6 +95,7 @@ function FormSignup() {
autoComplete='username'
required
label='Имя пользователя (логин)'
spellCheck={false}
pattern={patterns.login}
title='Минимум 3 знака. Латинские буквы и цифры. Не может начинаться с цифры'
value={username}
@ -128,6 +129,7 @@ function FormSignup() {
id='email'
autoComplete='email'
required
spellCheck={false}
label='Электронная почта (email)'
title='электронная почта в корректном формате, например: i.petrov@mycompany.ru.com'
value={email}

View File

@ -1,9 +1,9 @@
{
"compilerOptions": {
"target": "es6",
"target": "ES2022",
"useDefineForClassFields": true,
"lib": ["ES2020", "dom", "dom.iterable"],
"module": "esnext",
"lib": ["ES2022", "dom", "dom.iterable"],
"module": "ES2022",
"skipLibCheck": true,
"esModuleInterop": true,

View File

@ -16,13 +16,11 @@ export default ({ mode }: { mode: string }) => {
...process.env,
...loadEnv(mode, process.cwd())
};
const enableHttps = process.env.VITE_PORTAL_FRONT_HTTPS === 'true';
return defineConfig({
appType: 'spa',
plugins: [react(), muteWarningsPlugin(warningsToIgnore)],
server: {
port: Number(process.env.VITE_PORTAL_FRONT_PORT),
https: enableHttps
port: Number(process.env.VITE_PORTAL_FRONT_PORT)
},
publicDir: 'public',
build: {

View File

@ -2,25 +2,14 @@
# FOR DEVELOPEMENT BUILDS ONLY!
$container= Read-Host -Prompt "Enter backend container name: "
$backend = Resolve-Path -Path "$PSScriptRoot\..\..\rsconcept\backend"
function PopulateDevData() {
ImportInitialData
CreateAdmin
}
function ImportInitialData() {
docker exec `
-it $container `
python3.12 manage.py loaddata $backend\fixtures\InitialData.json
}
function CreateAdmin() {
docker exec `
-e DJANGO_SUPERUSER_USERNAME=admin `
-e DJANGO_SUPERUSER_PASSWORD=1234 `
-e DJANGO_SUPERUSER_EMAIL=admin@admin.com `
-it $container python3.12 manage.py createsuperuser --noinput
python3.12 manage.py loaddata ./fixtures/InitialData.json
}
PopulateDevData